602 lines
37 KiB
C#
602 lines
37 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Data;
|
|
using System.Data.SqlClient;
|
|
using System.Globalization;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using System.Text;
|
|
using DevExpress.Data.Filtering;
|
|
using DevExpress.ExpressApp;
|
|
using DevExpress.ExpressApp.Actions;
|
|
using DevExpress.ExpressApp.Editors;
|
|
using DevExpress.ExpressApp.Layout;
|
|
using DevExpress.ExpressApp.Model.NodeGenerators;
|
|
using DevExpress.ExpressApp.SystemModule;
|
|
using DevExpress.ExpressApp.Templates;
|
|
using DevExpress.ExpressApp.Utils;
|
|
using DevExpress.ExpressApp.Xpo;
|
|
using DevExpress.Persistent.Base;
|
|
using DevExpress.Persistent.BaseImpl;
|
|
using DevExpress.Persistent.Validation;
|
|
using DevExpress.PivotGrid.Criteria;
|
|
using DevExpress.Xpo;
|
|
using MySql.Data.MySqlClient;
|
|
|
|
namespace Nuvolar.Module.BusinessObjects.Migration
|
|
{
|
|
// For more typical usage scenarios, be sure to check out https://documentation.devexpress.com/eXpressAppFramework/clsDevExpressExpressAppViewControllertopic.aspx.
|
|
public partial class Migration_VC : ViewController
|
|
{
|
|
public Migration_VC()
|
|
{
|
|
InitializeComponent();
|
|
// Target required Views (via the TargetXXX properties) and create their Actions.
|
|
}
|
|
protected override void OnActivated()
|
|
{
|
|
base.OnActivated();
|
|
// Perform various tasks depending on the target View.
|
|
}
|
|
protected override void OnViewControlsCreated()
|
|
{
|
|
base.OnViewControlsCreated();
|
|
// Access and customize the target View control.
|
|
}
|
|
protected override void OnDeactivated()
|
|
{
|
|
// Unsubscribe from previously subscribed events and release other references and resources.
|
|
base.OnDeactivated();
|
|
}
|
|
|
|
private void aMigrateBaseObjects_Execute(object sender, SimpleActionExecuteEventArgs e)
|
|
{
|
|
MigrationParameters _MigrationParameters = View.SelectedObjects[0] as MigrationParameters;
|
|
XPObjectSpace _ocur = View.ObjectSpace as XPObjectSpace;
|
|
|
|
if (_MigrationParameters.SQLType == eSQLType.MSSQL)
|
|
{
|
|
//Sync_XPObjectType_MSSQL_MySQL(_ocur);
|
|
//Sync_HCategory_ChartOfAccounts_MSSQL_MySQL(_ocur);
|
|
//Sync_ChartOfAccounts_MSSQL_MySQL(_ocur);
|
|
//Sync_ChartOfAccountsYear_MSSQL_MySQL(_ocur);
|
|
|
|
Sync_HCategory_Controlling_MSSQL_MySQL(_ocur);
|
|
//Sync_Controlling_MSSQL_MySQL(_ocur);
|
|
}
|
|
|
|
}
|
|
private void Sync_XPObjectType_MSSQL_MySQL(XPObjectSpace _ocur)
|
|
{
|
|
MakeObjectType<HCategory>(_ocur);
|
|
MakeObjectType<ChartOfAccounts>(_ocur);
|
|
MakeObjectType<ChartOfAccountsYear>(_ocur);
|
|
MakeObjectType<Controlling>(_ocur);
|
|
MakeObjectType<ControllingYear>(_ocur);
|
|
}
|
|
private void MakeObjectType<T>(XPObjectSpace _ocur)
|
|
{
|
|
XPObjectType _XPObjectType = _ocur.FindObject<XPObjectType>(CriteriaOperator.Parse("TypeName = ?", typeof(T).FullName));
|
|
if (_XPObjectType == null)
|
|
{
|
|
Assembly a = typeof(T).Assembly;
|
|
|
|
_XPObjectType = _ocur.CreateObject<XPObjectType>();
|
|
_XPObjectType.TypeName = typeof(T).FullName;
|
|
_XPObjectType.AssemblyName = a.FullName.Split(',')[0];
|
|
|
|
}
|
|
_ocur.CommitChanges();
|
|
}
|
|
private int GetObjectTypeOID<T>(XPObjectSpace _ocur)
|
|
{
|
|
int _return = -1;
|
|
XPObjectType _XPObjectType = _ocur.FindObject<XPObjectType>(CriteriaOperator.Parse("TypeName = ?", typeof(T).FullName));
|
|
if (_XPObjectType != null)
|
|
{
|
|
_return = _XPObjectType.Oid;
|
|
}
|
|
return _return;
|
|
}
|
|
|
|
private void Sync_HCategory_ChartOfAccounts_MSSQL_MySQL(XPObjectSpace _ocur)
|
|
{
|
|
MigrationParameters _MigrationParameters = View.SelectedObjects[0] as MigrationParameters;
|
|
_ocur.Session.ExecuteNonQuery("SET FOREIGN_KEY_CHECKS=0");
|
|
string _ConnectionStringMSSQL = string.Format(" User ID={0}; " +
|
|
" Password={1};" +
|
|
" Pooling=false;" +
|
|
" Data Source={2};" +
|
|
" Initial Catalog={3}",
|
|
_MigrationParameters.SQLUser,
|
|
_MigrationParameters.SQLPassword,
|
|
_MigrationParameters.SQLServer,
|
|
_MigrationParameters.SQLDatabase);
|
|
|
|
|
|
|
|
SqlConnection _SqlConnection = new SqlConnection(_ConnectionStringMSSQL);
|
|
MySqlConnection _MySqlConnection = new MySqlConnection(Nuvolar.Module.GeneralFunction.GLOBAL_ConnectionString.Replace("XpoProvider=MySql;", ""));
|
|
|
|
_SqlConnection.Open();
|
|
_MySqlConnection.Open();
|
|
if (_SqlConnection.State == ConnectionState.Open)
|
|
{
|
|
int _ObjectType_OID = GetObjectTypeOID<ChartOfAccounts>(_ocur);
|
|
|
|
string _SQL = " select t1.* " +
|
|
" from HCategory t1" +
|
|
" where oid in (select Oid from ChartOfAccounts) and t1.GCRecord is null";
|
|
SqlCommand _SqlCommand = new SqlCommand(_SQL, _SqlConnection);
|
|
SqlDataReader _SqlDataReader = _SqlCommand.ExecuteReader();
|
|
|
|
if (_SqlDataReader.HasRows)
|
|
{
|
|
while (_SqlDataReader.Read())
|
|
{
|
|
string _MySQL = "SELECT count(*) FROM HCategory WHERE Oid=@Oid";
|
|
using (MySqlCommand _MySqlCommand = new MySqlCommand() { CommandText = _MySQL, Connection = _MySqlConnection })
|
|
{
|
|
_MySqlCommand.Parameters.Add(new MySqlParameter() { ParameterName = "@Oid", DbType = DbType.Guid, Value = _SqlDataReader["Oid"] });
|
|
|
|
object _Found = _MySqlCommand.ExecuteScalar();
|
|
|
|
if (_Found != null)
|
|
{
|
|
double _F;
|
|
IsNumeric(_Found, out _F);
|
|
if (_F == 0)
|
|
{
|
|
|
|
_MySQL = " SET FOREIGN_KEY_CHECKS=0;" +
|
|
" INSERT INTO HCategory (Oid,Parent,Name,ObjectType)" +
|
|
" SELECT @Oid,@Parent,@Name,@ObjectType;";
|
|
using (MySqlCommand _MySqlCommand_Insert = new MySqlCommand() { CommandText = _MySQL, Connection = _MySqlConnection })
|
|
{
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@Oid", DbType = DbType.Guid, Value = _SqlDataReader["Oid"] });
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@Parent", DbType = DbType.Guid, Value = _SqlDataReader["Parent"] });
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@Name", DbType = DbType.String, Value = _SqlDataReader["Name"] });
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@ObjectType", DbType = DbType.Int64, Value = _ObjectType_OID });
|
|
|
|
|
|
_MySqlCommand_Insert.ExecuteNonQuery();
|
|
}
|
|
}
|
|
else // Ha már VAN
|
|
{
|
|
_MySQL = " SET FOREIGN_KEY_CHECKS=0;" +
|
|
" UPDATE HCategory SET Name=@Name," +
|
|
" Parent=@Parent " +
|
|
" WHERE Oid=@Oid";
|
|
using (MySqlCommand _MySqlCommand_Update = new MySqlCommand() { CommandText = _MySQL, Connection = _MySqlConnection })
|
|
{
|
|
|
|
_MySqlCommand_Update.Parameters.Add(new MySqlParameter() { ParameterName = "@Oid", DbType = DbType.Guid, Value = _SqlDataReader["Oid"] });
|
|
_MySqlCommand_Update.Parameters.Add(new MySqlParameter() { ParameterName = "@Parent", DbType = DbType.Guid, Value = _SqlDataReader["Parent"] });
|
|
_MySqlCommand_Update.Parameters.Add(new MySqlParameter() { ParameterName = "@Name", DbType = DbType.String, Value = _SqlDataReader["Name"] });
|
|
|
|
_MySqlCommand_Update.ExecuteNonQuery();
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
_SqlConnection.Close();
|
|
_MySqlConnection.Close();
|
|
_ocur.Session.ExecuteNonQuery("SET FOREIGN_KEY_CHECKS=1");
|
|
}
|
|
private void Sync_HCategory_Controlling_MSSQL_MySQL(XPObjectSpace _ocur)
|
|
{
|
|
MigrationParameters _MigrationParameters = View.SelectedObjects[0] as MigrationParameters;
|
|
_ocur.Session.ExecuteNonQuery("SET FOREIGN_KEY_CHECKS=0");
|
|
string _ConnectionStringMSSQL = string.Format(" User ID={0}; " +
|
|
" Password={1};" +
|
|
" Pooling=false;" +
|
|
" Data Source={2};" +
|
|
" Initial Catalog={3}",
|
|
_MigrationParameters.SQLUser,
|
|
_MigrationParameters.SQLPassword,
|
|
_MigrationParameters.SQLServer,
|
|
_MigrationParameters.SQLDatabase);
|
|
|
|
|
|
|
|
SqlConnection _SqlConnection = new SqlConnection(_ConnectionStringMSSQL);
|
|
MySqlConnection _MySqlConnection = new MySqlConnection(Nuvolar.Module.GeneralFunction.GLOBAL_ConnectionString.Replace("XpoProvider=MySql;", ""));
|
|
|
|
_SqlConnection.Open();
|
|
_MySqlConnection.Open();
|
|
if (_SqlConnection.State == ConnectionState.Open)
|
|
{
|
|
int _ObjectType_OID = GetObjectTypeOID<Controlling>(_ocur);
|
|
|
|
string _SQL = " select t1.* " +
|
|
" from HCategory t1" +
|
|
" where oid in (select Oid from Controlling) and t1.GCRecord is null";
|
|
SqlCommand _SqlCommand = new SqlCommand(_SQL, _SqlConnection);
|
|
SqlDataReader _SqlDataReader = _SqlCommand.ExecuteReader();
|
|
|
|
if (_SqlDataReader.HasRows)
|
|
{
|
|
while (_SqlDataReader.Read())
|
|
{
|
|
string _MySQL = "SELECT count(*) FROM HCategory WHERE Oid=@Oid";
|
|
using (MySqlCommand _MySqlCommand = new MySqlCommand() { CommandText = _MySQL, Connection = _MySqlConnection })
|
|
{
|
|
_MySqlCommand.Parameters.Add(new MySqlParameter() { ParameterName = "@Oid", DbType = DbType.Guid, Value = _SqlDataReader["Oid"] });
|
|
|
|
object _Found = _MySqlCommand.ExecuteScalar();
|
|
|
|
if (_Found != null)
|
|
{
|
|
double _F;
|
|
IsNumeric(_Found, out _F);
|
|
if (_F == 0)
|
|
{
|
|
|
|
_MySQL = " SET FOREIGN_KEY_CHECKS=0;" +
|
|
" INSERT INTO HCategory (Oid,Parent,Name,ObjectType)" +
|
|
" SELECT @Oid,@Parent,@Name,@ObjectType;";
|
|
using (MySqlCommand _MySqlCommand_Insert = new MySqlCommand() { CommandText = _MySQL, Connection = _MySqlConnection })
|
|
{
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@Oid", DbType = DbType.Guid, Value = _SqlDataReader["Oid"] });
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@Parent", DbType = DbType.Guid, Value = _SqlDataReader["Parent"] });
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@Name", DbType = DbType.String, Value = _SqlDataReader["Name"] });
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@ObjectType", DbType = DbType.Int64, Value = _ObjectType_OID });
|
|
|
|
|
|
_MySqlCommand_Insert.ExecuteNonQuery();
|
|
}
|
|
}
|
|
else // Ha már VAN
|
|
{
|
|
_MySQL = " SET FOREIGN_KEY_CHECKS=0;" +
|
|
" UPDATE HCategory SET Name=@Name," +
|
|
" Parent=@Parent " +
|
|
" WHERE Oid=@Oid";
|
|
using (MySqlCommand _MySqlCommand_Update = new MySqlCommand() { CommandText = _MySQL, Connection = _MySqlConnection })
|
|
{
|
|
|
|
_MySqlCommand_Update.Parameters.Add(new MySqlParameter() { ParameterName = "@Oid", DbType = DbType.Guid, Value = _SqlDataReader["Oid"] });
|
|
_MySqlCommand_Update.Parameters.Add(new MySqlParameter() { ParameterName = "@Parent", DbType = DbType.Guid, Value = _SqlDataReader["Parent"] });
|
|
_MySqlCommand_Update.Parameters.Add(new MySqlParameter() { ParameterName = "@Name", DbType = DbType.String, Value = _SqlDataReader["Name"] });
|
|
|
|
_MySqlCommand_Update.ExecuteNonQuery();
|
|
}
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
_SqlConnection.Close();
|
|
_MySqlConnection.Close();
|
|
_ocur.Session.ExecuteNonQuery("SET FOREIGN_KEY_CHECKS=1");
|
|
}
|
|
private void Sync_ChartOfAccounts_MSSQL_MySQL(XPObjectSpace _ocur)
|
|
{
|
|
MigrationParameters _MigrationParameters = View.SelectedObjects[0] as MigrationParameters;
|
|
_ocur.Session.ExecuteNonQuery("SET FOREIGN_KEY_CHECKS=0");
|
|
string _ConnectionStringMSSQL = string.Format(" User ID={0}; " +
|
|
" Password={1};" +
|
|
" Pooling=false;" +
|
|
" Data Source={2};" +
|
|
" Initial Catalog={3}",
|
|
_MigrationParameters.SQLUser,
|
|
_MigrationParameters.SQLPassword,
|
|
_MigrationParameters.SQLServer,
|
|
_MigrationParameters.SQLDatabase);
|
|
|
|
|
|
|
|
SqlConnection _SqlConnection = new SqlConnection(_ConnectionStringMSSQL);
|
|
MySqlConnection _MySqlConnection = new MySqlConnection(Nuvolar.Module.GeneralFunction.GLOBAL_ConnectionString.Replace("XpoProvider=MySql;", ""));
|
|
|
|
_SqlConnection.Open();
|
|
_MySqlConnection.Open();
|
|
if (_SqlConnection.State == ConnectionState.Open)
|
|
{
|
|
|
|
|
|
string _SQL = " select t1.* " +
|
|
" from ChartOfAccounts t1 left join HCategory t2 on" +
|
|
" t1.Oid=t2.Oid" +
|
|
" WHERE t2.GCRecord is null";
|
|
SqlCommand _SqlCommand = new SqlCommand(_SQL, _SqlConnection);
|
|
SqlDataReader _SqlDataReader = _SqlCommand.ExecuteReader();
|
|
|
|
if (_SqlDataReader.HasRows)
|
|
{
|
|
while (_SqlDataReader.Read())
|
|
{
|
|
string _MySQL = "SELECT count(*) FROM ChartOfAccounts WHERE Oid=@Oid";
|
|
using (MySqlCommand _MySqlCommand = new MySqlCommand() { CommandText = _MySQL, Connection = _MySqlConnection })
|
|
{
|
|
_MySqlCommand.Parameters.Add(new MySqlParameter() { ParameterName = "@Oid", DbType = DbType.Guid, Value = _SqlDataReader["Oid"] });
|
|
|
|
object _Found = _MySqlCommand.ExecuteScalar();
|
|
|
|
if (_Found != null)
|
|
{
|
|
double _F;
|
|
IsNumeric(_Found, out _F);
|
|
if (_F == 0)
|
|
{
|
|
|
|
_MySQL = " SET FOREIGN_KEY_CHECKS=0;" +
|
|
" INSERT INTO ChartOfAccounts (Oid,AccountYear,AccountNumber,IsParent,ChartOfAccounts_Parent,ChartOfAccounts1," +
|
|
" ChartOfAccounts2,ChartOfAccounts3,ChartOfAccounts4,ChartOfAccounts5,ChartOfAccounts6,ChartOfAccounts7,ChartOfAccounts8)" +
|
|
" SELECT @Oid,@AccountYear,@AccountNumber,@IsParent,@ChartOfAccounts_Parent,@ChartOfAccounts1," +
|
|
" @ChartOfAccounts2,@ChartOfAccounts3,@ChartOfAccounts4,@ChartOfAccounts5,@ChartOfAccounts6,@ChartOfAccounts7,@ChartOfAccounts8;";
|
|
using (MySqlCommand _MySqlCommand_Insert = new MySqlCommand() { CommandText = _MySQL, Connection = _MySqlConnection })
|
|
{
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@Oid", DbType = DbType.Guid, Value = _SqlDataReader["Oid"] });
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@AccountYear", DbType = DbType.Int64, Value = _SqlDataReader["AccountYear"] });
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@AccountNumber", DbType = DbType.String, Value = _SqlDataReader["AccountNumber"] });
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@IsParent", DbType = DbType.Boolean, Value = _SqlDataReader["IsParent"] });
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@ChartOfAccounts_Parent", DbType = DbType.Guid, Value = _SqlDataReader["ChartOfAccounts_Parent"] });
|
|
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@ChartOfAccounts1", DbType = DbType.Guid, Value = _SqlDataReader["ChartOfAccounts1"] });
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@ChartOfAccounts2", DbType = DbType.Guid, Value = _SqlDataReader["ChartOfAccounts2"] });
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@ChartOfAccounts3", DbType = DbType.Guid, Value = _SqlDataReader["ChartOfAccounts3"] });
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@ChartOfAccounts4", DbType = DbType.Guid, Value = _SqlDataReader["ChartOfAccounts4"] });
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@ChartOfAccounts5", DbType = DbType.Guid, Value = _SqlDataReader["ChartOfAccounts5"] });
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@ChartOfAccounts6", DbType = DbType.Guid, Value = _SqlDataReader["ChartOfAccounts6"] });
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@ChartOfAccounts7", DbType = DbType.Guid, Value = _SqlDataReader["ChartOfAccounts7"] });
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@ChartOfAccounts8", DbType = DbType.Guid, Value = _SqlDataReader["ChartOfAccounts8"] });
|
|
|
|
|
|
|
|
_MySqlCommand_Insert.ExecuteNonQuery();
|
|
}
|
|
}
|
|
else // Ha már VAN
|
|
{
|
|
//_MySQL = " SET FOREIGN_KEY_CHECKS=0;" +
|
|
// " UPDATE HCategory SET Name=@Name," +
|
|
// " Parent=@Parent " +
|
|
// " WHERE Oid=@Oid";
|
|
//using (MySqlCommand _MySqlCommand_Update = new MySqlCommand() { CommandText = _MySQL, Connection = _MySqlConnection })
|
|
//{
|
|
|
|
// _MySqlCommand_Update.Parameters.Add(new MySqlParameter() { ParameterName = "@Oid", DbType = DbType.Guid, Value = _SqlDataReader["Oid"] });
|
|
// _MySqlCommand_Update.Parameters.Add(new MySqlParameter() { ParameterName = "@Parent", DbType = DbType.Guid, Value = _SqlDataReader["Parent"] });
|
|
// _MySqlCommand_Update.Parameters.Add(new MySqlParameter() { ParameterName = "@Name", DbType = DbType.String, Value = _SqlDataReader["Name"] });
|
|
|
|
// _MySqlCommand_Update.ExecuteNonQuery();
|
|
//}
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
_SqlConnection.Close();
|
|
_MySqlConnection.Close();
|
|
_ocur.Session.ExecuteNonQuery("SET FOREIGN_KEY_CHECKS=1");
|
|
}
|
|
private void Sync_ChartOfAccountsYear_MSSQL_MySQL(XPObjectSpace _ocur)
|
|
{
|
|
MigrationParameters _MigrationParameters = View.SelectedObjects[0] as MigrationParameters;
|
|
_ocur.Session.ExecuteNonQuery("SET FOREIGN_KEY_CHECKS=0");
|
|
string _ConnectionStringMSSQL = string.Format(" User ID={0}; " +
|
|
" Password={1};" +
|
|
" Pooling=false;" +
|
|
" Data Source={2};" +
|
|
" Initial Catalog={3}",
|
|
_MigrationParameters.SQLUser,
|
|
_MigrationParameters.SQLPassword,
|
|
_MigrationParameters.SQLServer,
|
|
_MigrationParameters.SQLDatabase);
|
|
|
|
|
|
|
|
SqlConnection _SqlConnection = new SqlConnection(_ConnectionStringMSSQL);
|
|
MySqlConnection _MySqlConnection = new MySqlConnection(Nuvolar.Module.GeneralFunction.GLOBAL_ConnectionString.Replace("XpoProvider=MySql;", ""));
|
|
|
|
_SqlConnection.Open();
|
|
_MySqlConnection.Open();
|
|
if (_SqlConnection.State == ConnectionState.Open)
|
|
{
|
|
|
|
|
|
string _SQL = " select t1.* " +
|
|
" from ChartOfAccountsYear t1 " +
|
|
" WHERE t1.GCRecord is null";
|
|
SqlCommand _SqlCommand = new SqlCommand(_SQL, _SqlConnection);
|
|
SqlDataReader _SqlDataReader = _SqlCommand.ExecuteReader();
|
|
|
|
if (_SqlDataReader.HasRows)
|
|
{
|
|
while (_SqlDataReader.Read())
|
|
{
|
|
string _MySQL = "SELECT count(*) FROM ChartOfAccountsYear WHERE Oid=@Oid";
|
|
using (MySqlCommand _MySqlCommand = new MySqlCommand() { CommandText = _MySQL, Connection = _MySqlConnection })
|
|
{
|
|
_MySqlCommand.Parameters.Add(new MySqlParameter() { ParameterName = "@Oid", DbType = DbType.Guid, Value = _SqlDataReader["Oid"] });
|
|
|
|
object _Found = _MySqlCommand.ExecuteScalar();
|
|
|
|
if (_Found != null)
|
|
{
|
|
double _F;
|
|
IsNumeric(_Found, out _F);
|
|
if (_F == 0)
|
|
{
|
|
|
|
_MySQL = " SET FOREIGN_KEY_CHECKS=0;" +
|
|
" INSERT INTO ChartOfAccountsYear (Oid,AccountYear,IsClosed)" +
|
|
" SELECT @Oid,@AccountYear,@IsClosed;";
|
|
using (MySqlCommand _MySqlCommand_Insert = new MySqlCommand() { CommandText = _MySQL, Connection = _MySqlConnection })
|
|
{
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@Oid", DbType = DbType.Guid, Value = _SqlDataReader["Oid"] });
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@AccountYear", DbType = DbType.Int64, Value = _SqlDataReader["AccountYear"] });
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@IsClosed", DbType = DbType.Boolean, Value = _SqlDataReader["IsClosed"] });
|
|
|
|
_MySqlCommand_Insert.ExecuteNonQuery();
|
|
}
|
|
}
|
|
else // Ha már VAN
|
|
{
|
|
//_MySQL = " SET FOREIGN_KEY_CHECKS=0;" +
|
|
// " UPDATE HCategory SET Name=@Name," +
|
|
// " Parent=@Parent " +
|
|
// " WHERE Oid=@Oid";
|
|
//using (MySqlCommand _MySqlCommand_Update = new MySqlCommand() { CommandText = _MySQL, Connection = _MySqlConnection })
|
|
//{
|
|
|
|
// _MySqlCommand_Update.Parameters.Add(new MySqlParameter() { ParameterName = "@Oid", DbType = DbType.Guid, Value = _SqlDataReader["Oid"] });
|
|
// _MySqlCommand_Update.Parameters.Add(new MySqlParameter() { ParameterName = "@Parent", DbType = DbType.Guid, Value = _SqlDataReader["Parent"] });
|
|
// _MySqlCommand_Update.Parameters.Add(new MySqlParameter() { ParameterName = "@Name", DbType = DbType.String, Value = _SqlDataReader["Name"] });
|
|
|
|
// _MySqlCommand_Update.ExecuteNonQuery();
|
|
//}
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
_SqlConnection.Close();
|
|
_MySqlConnection.Close();
|
|
_ocur.Session.ExecuteNonQuery("SET FOREIGN_KEY_CHECKS=1");
|
|
}
|
|
private void Sync_Controlling_MSSQL_MySQL(XPObjectSpace _ocur)
|
|
{
|
|
MigrationParameters _MigrationParameters = View.SelectedObjects[0] as MigrationParameters;
|
|
_ocur.Session.ExecuteNonQuery("SET FOREIGN_KEY_CHECKS=0");
|
|
string _ConnectionStringMSSQL = string.Format(" User ID={0}; " +
|
|
" Password={1};" +
|
|
" Pooling=false;" +
|
|
" Data Source={2};" +
|
|
" Initial Catalog={3}",
|
|
_MigrationParameters.SQLUser,
|
|
_MigrationParameters.SQLPassword,
|
|
_MigrationParameters.SQLServer,
|
|
_MigrationParameters.SQLDatabase);
|
|
|
|
|
|
|
|
SqlConnection _SqlConnection = new SqlConnection(_ConnectionStringMSSQL);
|
|
MySqlConnection _MySqlConnection = new MySqlConnection(Nuvolar.Module.GeneralFunction.GLOBAL_ConnectionString.Replace("XpoProvider=MySql;", ""));
|
|
|
|
_SqlConnection.Open();
|
|
_MySqlConnection.Open();
|
|
if (_SqlConnection.State == ConnectionState.Open)
|
|
{
|
|
|
|
|
|
string _SQL = " select t1.* " +
|
|
" from Controlling t1 left join HCategory t2 on" +
|
|
" t1.Oid=t2.Oid" +
|
|
" WHERE t2.GCRecord is null";
|
|
SqlCommand _SqlCommand = new SqlCommand(_SQL, _SqlConnection);
|
|
SqlDataReader _SqlDataReader = _SqlCommand.ExecuteReader();
|
|
|
|
if (_SqlDataReader.HasRows)
|
|
{
|
|
while (_SqlDataReader.Read())
|
|
{
|
|
string _MySQL = "SELECT count(*) FROM Controlling WHERE Oid=@Oid";
|
|
using (MySqlCommand _MySqlCommand = new MySqlCommand() { CommandText = _MySQL, Connection = _MySqlConnection })
|
|
{
|
|
_MySqlCommand.Parameters.Add(new MySqlParameter() { ParameterName = "@Oid", DbType = DbType.Guid, Value = _SqlDataReader["Oid"] });
|
|
|
|
object _Found = _MySqlCommand.ExecuteScalar();
|
|
|
|
if (_Found != null)
|
|
{
|
|
double _F;
|
|
IsNumeric(_Found, out _F);
|
|
if (_F == 0)
|
|
{
|
|
|
|
_MySQL = " SET FOREIGN_KEY_CHECKS=0;" +
|
|
" INSERT INTO Controlling (Oid,IsActive,IsCOCRequired,COCAboveAmount," +
|
|
" IsParent,Controllingdirection,IsReinvoiceReason,ReinvoiceDescription,TechnicalContractLimit," +
|
|
" Controlling1,Controlling2,Controlling3,Controlling4,Controlling5,IsAdvancePayment," +
|
|
" IsEstateStatistics,RequireCars,RequireHRPerson,RequirePhones)" +
|
|
" SELECT @Oid,@IsActive,@IsCOCRequired,@COCAboveAmount," +
|
|
" @IsParent,@Controllingdirection,@IsReinvoiceReason,@ReinvoiceDescription,@TechnicalContractLimit," +
|
|
" @Controlling1,@Controlling2,@Controlling3,@Controlling4,@Controlling5,@IsAdnavcePayment," +
|
|
" @IsEstateStatistics,@RequireCars,@RequireHRPerson,@RequirePhones;";
|
|
using (MySqlCommand _MySqlCommand_Insert = new MySqlCommand() { CommandText = _MySQL, Connection = _MySqlConnection })
|
|
{
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@Oid", DbType = DbType.Guid, Value = _SqlDataReader["Oid"] });
|
|
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@IsCOCRequired", DbType = DbType.Boolean, Value = _SqlDataReader["IsCOCRequired"] });
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@IsParent", DbType = DbType.Boolean, Value = _SqlDataReader["IsParent"] });
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@IsActive", DbType = DbType.Boolean, Value = true });
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@IsReinvoiceReason", DbType = DbType.Boolean, Value = _SqlDataReader["IsReinvoiceReason"] });
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@IsAdvancePayment", DbType = DbType.Boolean, Value = _SqlDataReader["IsAdvancePayment"] });
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@IsEstateStatistics", DbType = DbType.Boolean, Value = _SqlDataReader["IsEstateStatistics"] });
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@RequireCars", DbType = DbType.Boolean, Value = _SqlDataReader["RequireCars"] });
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@RequireHRPerson", DbType = DbType.Boolean, Value = _SqlDataReader["RequireHRPerson"] });
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@RequirePhones", DbType = DbType.Boolean, Value = _SqlDataReader["RequirePhones"] });
|
|
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@COCAboveAmount", DbType = DbType.Double, Value = _SqlDataReader["COCAboveAmount"] });
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@Controllingdirection", DbType = DbType.Int64, Value = _SqlDataReader["Controllingdirection"] });
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@ReinvoiceDescription", DbType = DbType.String, Value = _SqlDataReader["ReinvoiceDescription"] });
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@TechnicalContractLimit", DbType = DbType.Double, Value = _SqlDataReader["TechnicalContractLimit"] });
|
|
for (int i = 1; i < 6; i++)
|
|
{
|
|
_MySqlCommand_Insert.Parameters.Add(new MySqlParameter() { ParameterName = "@Controlling" + i, DbType = DbType.Guid, Value = _SqlDataReader["Controlling" + i] });
|
|
}
|
|
_MySqlCommand_Insert.ExecuteNonQuery();
|
|
}
|
|
}
|
|
else // Ha már VAN
|
|
{
|
|
//_MySQL = " SET FOREIGN_KEY_CHECKS=0;" +
|
|
// " UPDATE HCategory SET Name=@Name," +
|
|
// " Parent=@Parent " +
|
|
// " WHERE Oid=@Oid";
|
|
//using (MySqlCommand _MySqlCommand_Update = new MySqlCommand() { CommandText = _MySQL, Connection = _MySqlConnection })
|
|
//{
|
|
|
|
// _MySqlCommand_Update.Parameters.Add(new MySqlParameter() { ParameterName = "@Oid", DbType = DbType.Guid, Value = _SqlDataReader["Oid"] });
|
|
// _MySqlCommand_Update.Parameters.Add(new MySqlParameter() { ParameterName = "@Parent", DbType = DbType.Guid, Value = _SqlDataReader["Parent"] });
|
|
// _MySqlCommand_Update.Parameters.Add(new MySqlParameter() { ParameterName = "@Name", DbType = DbType.String, Value = _SqlDataReader["Name"] });
|
|
|
|
// _MySqlCommand_Update.ExecuteNonQuery();
|
|
//}
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
_SqlConnection.Close();
|
|
_MySqlConnection.Close();
|
|
_ocur.Session.ExecuteNonQuery("SET FOREIGN_KEY_CHECKS=1");
|
|
}
|
|
private bool IsNumeric(object Expression, out double retNum)
|
|
{
|
|
bool isNum = Double.TryParse(Convert.ToString(Expression), NumberStyles.Any, NumberFormatInfo.InvariantInfo, out retNum);
|
|
return isNum;
|
|
}
|
|
}
|
|
}
|