public static void Main() {//FOLD01 const bool DEBUG = false ; bool UseErcRobot = false ; // подключаться ли к серверу под логином ErcRobot const string ROBOT_LOGIN= "******" ; const string ROBOT_PWD = "35162987" ; const string TASK_CODE = "OpenGate" ; byte SavedColor ; COpengateConfig OgConfig ; string ConnectionString= CAbc.EMPTY , CleanFileName = CAbc.EMPTY , TmpFileName = CAbc.EMPTY , LogFileName = CAbc.EMPTY , ScroogeDir = CAbc.EMPTY , SettingsDir = CAbc.EMPTY , ServerName = CAbc.EMPTY , DataBase = CAbc.EMPTY , FileName = CAbc.EMPTY , AboutError = CAbc.EMPTY , InputDir = CAbc.EMPTY , TodayDir = CAbc.EMPTY , StatDir = CAbc.EMPTY , TmpDir = CAbc.EMPTY ; int WorkDate = -1 , SeanceNum = -1 , UniqNum = 0 , i = 0 ; CConnection Connection = null ; System.Console.BackgroundColor = 0 ; System.Console.Clear() ; Err.LogToConsole() ; CCommon.Print( ""," Загрузка в `Скрудж` выплат от пенс.фонда. Версия 1.04 от 06.03.2018г." ); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - // считываем конфигурацию Скрудж-2 CScrooge2Config Scrooge2Config = new CScrooge2Config(); if (!Scrooge2Config.IsValid) { CCommon.Print( Scrooge2Config.ErrInfo ) ; return ; } ScroogeDir = (string)Scrooge2Config["Root"] ; SettingsDir = (string)Scrooge2Config["Common"] ; ServerName = (string)Scrooge2Config["Server"] ; DataBase = (string)Scrooge2Config["DataBase"] ; if ( ServerName == null ) { CCommon.Print(" Не найдена переменная `Server` в настройках `Скрудж-2` "); return; } if ( DataBase == null ) { CCommon.Print(" Не найдена переменная `Database` в настройках `Скрудж-2` "); return; } System.Console.Title="Загрузка в `Скрудж` выплат от пенс.фонда"; __.DeleteOldTempDirs("??????" , __.Today() - 1 ); if ( DEBUG ) FileName ="D:\\WorkShop\\0000105.015"; else if ( __.ParamCount() > 1 ) for ( i= 1 ; i< __.ParamCount() ; i++ ) if ( CAbc.ParamStr[ i ].Trim().ToUpper() == "/R" ) { UseErcRobot = true; System.Console.Title = System.Console.Title + " * "; } else FileName = CAbc.ParamStr[ i ].Trim(); if ( __.IsEmpty( FileName ) ) { __.Print( " Формат запуска : PfuImporter.exe [/R] <FileName> " ); __.Print( " Пример : PfuImporter.exe * " ); return; } if ( ( ! __.IsEmpty( ScroogeDir ) ) && ( ! __.IsEmpty( SettingsDir ) ) ) SettingsDir = ScroogeDir.Trim() + CAbc.SLASH + SettingsDir.Trim(); else SettingsDir = CAbc.EMPTY; if ( FileName == "*" ) FileName = SelectFileNameGUI( SettingsDir ); if ( ! __.FileExists( FileName ) ) { __.Print( " Не найден указанный файл ! " ); return; } CleanFileName = __.GetFileName( FileName ); UniqNum = GetUniqNum( FileName ); if ( __.GetExtension( CleanFileName ).Trim().ToUpper() == ".MOD" ) { if ( __.FileExists( ModelFileName ) ) __.DeleteFile( ModelFileName ) ; __.CopyFile( FileName , ModelFileName ); return; } if ( ! __.IsDigit( CleanFileName.Replace(".","") ) ) { __.Print( " Указан неправильный файл ! " ); return; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - // подключаемся к SQL-серверу ConnectionString = "Server=" + ServerName + ";Database=" + DataBase ; if ( UseErcRobot ) ConnectionString += ";UID=" + ROBOT_LOGIN + ";PWD=" + ROBOT_PWD + ";" ; else ConnectionString += ";Integrated Security=TRUE;" ; try { Connection = new CConnection( ConnectionString ); } catch ( System.Exception Excpt ) { CCommon.Print( Excpt.ToString() ); CCommon.Print( ""," Ошибка подключения к серверу !" ); } if ( ! Connection.IsOpen() ) { CCommon.Print( ""," Ошибка подключения к серверу !" ); return; } else if ( DEBUG ) CCommon.Print(" Сервер : " + ServerName ); Command = new CCommand(Connection) ; if ( ! Command.IsOpen() ) { CCommon.Print( " Ошибка подключения к базе данных !" ); return; } else if ( DEBUG ) CCommon.Print(" База данных : " + DataBase ); System.Console.Title=System.Console.Title+" | "+ServerName+"."+DataBase ; CConsole.Clear(); LoadModel( ModelFileName ) ; // - - - - - - - - - - - - - - - - - - - - - - - - - - - - // считываем настройки универсального шлюза WorkDate = ( int ) __.IsNull( Command.GetScalar( " exec dbo.pMega_OpenGate_Days;7 " ) , (int) 0 ); if ( WorkDate < 1 ) { __.Print( " Ошибка определения даты текущего рабочего дня. " ); Command.Close(); Connection.Close(); return ; } OgConfig = new COpengateConfig(); OgConfig.Open( WorkDate ); if ( ! OgConfig.IsValid() ) { __.Print( " Ошибка чтения настроек программы из " + OgConfig.Config_FileName() ); __.Print( OgConfig.ErrInfo()) ; Command.Close(); Connection.Close(); return; } SeanceNum = ( int ) __.IsNull( Command.GetScalar(" exec dbo.pMega_OpenGate_Days;4 @TaskCode='" + TASK_CODE + "',@ParamCode='NumSeance' ") , (int) 0 ); if ( SeanceNum < 1 ) { __.Print( " Ошибка определения номера сеанса " ); Command.Close(); Connection.Close(); return ; } TodayDir = (string)OgConfig.TodayDir() ; TmpDir = (string)OgConfig.TmpDir() ; StatDir = (string)OgConfig.StatDir() ; if ( (TodayDir == null) || (InputDir == null) ) { __.Print( " Ошибка чтения настроек программы из " + OgConfig.Config_FileName() ); Command.Close(); Connection.Close(); return; } TodayDir = TodayDir.Trim() ; StatDir = StatDir.Trim(); TmpDir = TmpDir.Trim(); if ( ! __.DirExists( TodayDir ) ) __.MkDir( TodayDir ); if ( ! __.DirExists( StatDir ) ) __.MkDir( StatDir ); if ( ! __.DirExists( TmpDir ) ) __.MkDir( TmpDir ); if ( ! __.SaveText( StatDir + "\\" + "test.dat" , "test.dat" , CAbc.CHARSET_DOS ) ) { __.Print( " Ошибка записи в каталог " + StatDir ); Command.Close(); Connection.Close(); return ; } __.DeleteFile(StatDir + "\\" + "test.dat"); LogFileName = OgConfig.LogDir() + "\\SEANS" + SeanceNum.ToString("000") + ".TXT"; Err.LogTo( LogFileName ); __.AppendText( LogFileName , __.Now() + " " + USER_NAME + " загружает файл " + CleanFileName + CAbc.CRLF , CAbc.CHARSET_WINDOWS ); TmpFileName = TodayDir + CAbc.SLASH + CleanFileName ; if ( ! __.FileExists( TmpFileName ) ) __.CopyFile( FileName , TmpFileName ) ; if ( ! __.FileExists( TmpFileName ) ) { __.Print( " Ошибка записи файла " + TmpFileName ); Command.Close(); Connection.Close(); return ; } TmpFileName = TmpDir + CAbc.SLASH + __.Right( "0" + __.Hour(__.Clock()).ToString() , 2 ) + __.Right( "0" + __.Minute( __.Clock()).ToString() , 2 ) + __.Right( "0" + __.Second( __.Clock()).ToString() , 2 ) ; if( ! __.DirExists( TmpFileName ) ) __.MkDir( TmpFileName ) ; TmpFileName = TmpFileName + CAbc.SLASH + CleanFileName ; if ( __.FileExists( TmpFileName ) ) __.DeleteFile( TmpFileName ) ; if ( __.FileExists( TmpFileName ) ) { __.Print("Ошибка удаления файла ",TmpFileName) ; Command.Close(); Connection.Close(); return ; } __.CopyFile( FileName , TmpFileName ) ; if ( DEBUG ) __.Print(" Беру настройки шлюза здесь : " + OgConfig.Config_FileName() ); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - // проверяем пачку AboutError = CheckPfuFile( FileName , UniqNum ) ; if ( __.IsEmpty( AboutError ) ) { if ( ! CConsole.GetBoxChoice( " Всего строк : " + TotalLines.ToString() , " Общая сумма : " + ( __.CCur( TotalCents ) / 100 ).ToString().Replace(",",".") , " Дебет.счет : " + __.Left(DebitMoniker , 26 ) , __.Left( DebitName , 42 ) , "__________________________________________" , " Для загрузки нажмите ENTER . " , " Для выхода - ESC." ) ) { __.AppendText( LogFileName , CAbc.CRLF + __.Now() + " загрузка отменена. " + CAbc.CRLF , CAbc.CHARSET_WINDOWS ); Command.Close(); Connection.Close(); return; } } else { __.Print( AboutError ); __.AppendText( LogFileName , CAbc.CRLF + AboutError + CAbc.CRLF , CAbc.CHARSET_WINDOWS ); SavedColor = CConsole.BoxColor ; CConsole.BoxColor = CConsole.RED*16 + CConsole.WHITE ; if ( ! CConsole.GetBoxChoice( " При проверке файла обнаружены ошибки !" , "__________________________________________" , " Всего строк : " + TotalLines.ToString() , " Общая сумма : " + ( __.CCur( TotalCents ) / 100 ).ToString().Replace(",",".") , " Дебет.счет : " + __.Left(DebitMoniker , 26 ) , __.Left( DebitName , 42 ) , "__________________________________________" , " Для отмены загрузки нажмите ESC . " , " Для выполнения загрузки - ENTER ." ) ) { __.AppendText( LogFileName , CAbc.CRLF + __.Now() + " загрузка отменена. " + CAbc.CRLF , CAbc.CHARSET_WINDOWS ); CConsole.BoxColor = SavedColor ; Command.Close(); Connection.Close(); return; } CConsole.BoxColor = SavedColor ; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - // загружаем пачку LoadPfuFile( FileName , UniqNum ); __.AppendText( LogFileName , CAbc.CRLF + __.Now() + " загрузка завершена. " + CAbc.CRLF , CAbc.CHARSET_WINDOWS ); CConsole.ShowBox(CAbc.EMPTY," Подождите..." ,CAbc.EMPTY) ; Command.Execute(" exec pMega_OpenGate_PayRoll;2 " + " @FileName='" + CleanFileName + "-" + UniqNum.ToString().Trim() + "'" + ", @DayDate=" + WorkDate.ToString() ) ; CConsole.Clear(); Connection.Close(); }//FOLD01
static void Main() //FOLD00 { const bool DEBUG = false; bool UseErcRobot = false; // подключаться ли к серверу под логином ErcRobot const string ROBOT_LOGIN = "******"; const string ROBOT_PWD = "35162987"; const string TASK_CODE = "OpenGate"; CPayRoll PayRoll; CCommand Command; CConnection Connection; COpengateConfig OgConfig; CScrooge2Config Scrooge2Config; byte SavedColor; int ErcDate = 0 , SeanceNum = 0; string TmpDir = CAbc.EMPTY , StatDir = CAbc.EMPTY , BankCode = "351629" , FileName = CAbc.EMPTY , TodayDir = CAbc.EMPTY , InputDir = CAbc.EMPTY , DataBase = CAbc.EMPTY , ScroogeDir = CAbc.EMPTY , SettingsDir = CAbc.EMPTY , ServerName = CAbc.EMPTY , AboutError = CAbc.EMPTY , LogFileName = CAbc.EMPTY , TmpFileName = CAbc.EMPTY , CleanFileName = CAbc.EMPTY , ConnectionString = CAbc.EMPTY; CConsole.Clear(); __.Print(CAbc.EMPTY, " Загрузка зарплатных ведомостей в `Скрудж`. Версия 2.01 от 21.08.2019г.", CAbc.EMPTY); System.Console.Title = "Загрузка в `Скрудж` зарплатных ведомостей"; __.DeleteOldTempDirs("??????", __.Today() - 1); if (DEBUG) { FileName = "D:\\WorkShop\\zkm.dif"; Err.LogTo("D:\\WorkShop\\zkm.log"); } else if (__.ParamCount() > 1) { for (int i = 1; i < __.ParamCount(); i++) { if (CAbc.ParamStr[i].Trim().ToUpper() == "/R") { UseErcRobot = true; System.Console.Title = System.Console.Title + " * "; } else { FileName = CAbc.ParamStr[i].Trim(); } } } if (__.IsEmpty(FileName)) { __.Print(" Не указано имя файла для обработки ! "); __.Print(" Формат запуска : PayrollImporter.exe <FileName> [/R]"); __.Print(" Пример : PayrollImporter.exe * "); return; } // ----------------------------------------------------- // Вычитываем настройки "Скрудж-2" Scrooge2Config = new CScrooge2Config(); if (!Scrooge2Config.IsValid) { __.Print(Scrooge2Config.ErrInfo); return; } ScroogeDir = (string)Scrooge2Config["Root"]; SettingsDir = (string)Scrooge2Config["Common"]; ServerName = (string)Scrooge2Config["Server"]; DataBase = (string)Scrooge2Config["DataBase"]; if (ScroogeDir == null) { __.Print(" Не найдена переменная `Root` в настройках `Скрудж-2` "); return; } if (ServerName == null) { __.Print(" Не найдена переменная `Server` в настройках `Скрудж-2` "); return; } if (DataBase == null) { __.Print(" Не найдена переменная `Database` в настройках `Скрудж-2` "); return; } ScroogeDir = ScroogeDir.Trim(); if (SettingsDir != null) { SettingsDir = ScroogeDir + "\\" + SettingsDir; } ServerName = ServerName.Trim(); DataBase = DataBase.Trim(); if (DEBUG) { __.Print(" Беру настройки `Скрудж-2` здесь : " + ScroogeDir); } if (FileName == "*") { FileName = SelectFileNameGUI(SettingsDir); } if (FileName == null) { return; } if (__.IsEmpty(FileName)) { return; } if (!__.FileExists(FileName)) { __.Print(" Не найден указанный файл ! ", "", "Для выхода нажмите ENTER."); CConsole.WaitForEscOrEnter(); return; } CleanFileName = __.GetFileName(FileName); PayRoll = new CPayRoll(); if (!PayRoll.Open(FileName)) { __.Print("Ошибка открытия исходного файла !", "", "Для выхода нажмите ENTER."); PayRoll.Close(); CConsole.WaitForEscOrEnter(); return; } if (!PayRoll.Preview()) { PayRoll.Close(); return; } // ----------------------------------------------------- // Подключаемся к базе данных ConnectionString = "Server=" + ServerName + ";Database=" + DataBase; if (UseErcRobot) { ConnectionString += ";UID=" + ROBOT_LOGIN + ";PWD=" + ROBOT_PWD + ";"; } else { ConnectionString += ";Integrated Security=TRUE;"; } Connection = new CConnection(ConnectionString); if (Connection.IsOpen()) { if (DEBUG) { __.Print(" Сервер : " + ServerName); } } else { __.Print("", " Ошибка подключения к серверу !"); Connection.Close(); PayRoll.Close(); __.Print("", "Для выхода нажмите ENTER."); CConsole.WaitForEscOrEnter(); return; } Command = new CCommand(Connection); if (Command.IsOpen()) { if (DEBUG) { __.Print(" База данных : " + DataBase); } } else { __.Print("", " Ошибка подключения к базе данных !"); Command.Close(); Connection.Close(); PayRoll.Close(); __.Print("", "Для выхода нажмите ENTER."); CConsole.WaitForEscOrEnter(); return; } System.Console.Title = System.Console.Title + " | " + ServerName + "." + DataBase; // ----------------------------------------------------- // Вычитываем из БД информацию про МФО и дебет-счет BankCode = ( string )__.IsNull(Command.GetScalar(" select Code from dbo.vMega_Common_MyBankInfo with ( NoLock ) "), CAbc.EMPTY); if (BankCode == null) { BankCode = "351629"; } else if (__.IsEmpty(BankCode)) { BankCode = "351629"; } if (!PayRoll.GetDebitInfo(Command)) { Command.Close(); Connection.Close(); PayRoll.Close(); return; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - // считываем настройки шлюза в ЕРЦ ErcDate = ( int )__.IsNull(Command.GetScalar(" exec dbo.pMega_OpenGate_Days;7 "), (int)0); if (ErcDate < 1) { __.Print(" Ошибка определения даты текущего рабочего дня. "); Command.Close(); Connection.Close(); PayRoll.Close(); __.Print("", "Для выхода нажмите ENTER."); CConsole.WaitForEscOrEnter(); return; } OgConfig = new COpengateConfig(); OgConfig.Open(ErcDate); if (!OgConfig.IsValid()) { __.Print(" Ошибка чтения настроек программы из " + OgConfig.Config_FileName()); __.Print(OgConfig.ErrInfo()); Command.Close(); Connection.Close(); PayRoll.Close(); __.Print("", "Для выхода нажмите ENTER."); CConsole.WaitForEscOrEnter(); return; } SeanceNum = ( int )__.IsNull(Command.GetScalar(" exec dbo.pMega_OpenGate_Days;4 @TaskCode='" + TASK_CODE + "',@ParamCode='NumSeance' "), (int)0); if (SeanceNum < 1) { __.Print(" Ошибка определения номера сеанса "); Command.Close(); Connection.Close(); PayRoll.Close(); __.Print("", "Для выхода нажмите ENTER."); CConsole.WaitForEscOrEnter(); return; } TodayDir = (string)OgConfig.TodayDir(); TmpDir = (string)OgConfig.TmpDir(); StatDir = (string)OgConfig.StatDir(); if ((TodayDir == null) || (InputDir == null)) { __.Print(" Ошибка чтения настроек программы из " + OgConfig.Config_FileName()); Command.Close(); Connection.Close(); PayRoll.Close(); __.Print("", "Для выхода нажмите ENTER."); CConsole.WaitForEscOrEnter(); return; } TodayDir = TodayDir.Trim(); StatDir = StatDir.Trim(); TmpDir = TmpDir.Trim(); if (!__.DirExists(TodayDir)) { __.MkDir(TodayDir); } if (!__.DirExists(StatDir)) { __.MkDir(StatDir); } if (!__.DirExists(TmpDir)) { __.MkDir(TmpDir); } if (!__.SaveText(StatDir + "\\" + "test.dat", "test.dat", CAbc.CHARSET_DOS)) { __.Print(" Ошибка записи в каталог " + StatDir); Command.Close(); Connection.Close(); PayRoll.Close(); __.Print("", "Для выхода нажмите ENTER."); CConsole.WaitForEscOrEnter(); return; } __.DeleteFile(StatDir + "\\" + "test.dat"); LogFileName = OgConfig.LogDir() + "\\SEANS" + SeanceNum.ToString("000") + ".TXT"; Err.LogTo(LogFileName); __.AppendText(LogFileName, __.Now() + " " + __.Upper(__.GetUserName()) + " загружает файл " + CleanFileName + CAbc.CRLF, CAbc.CHARSET_WINDOWS); TmpFileName = TodayDir + CAbc.SLASH + CleanFileName; if (!__.FileExists(TmpFileName)) { __.CopyFile(FileName, TmpFileName); } if (!__.FileExists(TmpFileName)) { __.Print(" Ошибка записи файла " + TmpFileName); Command.Close(); Connection.Close(); PayRoll.Close(); __.Print("", "Для выхода нажмите ENTER."); CConsole.WaitForEscOrEnter(); return; } TmpFileName = TmpDir + CAbc.SLASH + __.Right("0" + __.Hour(__.Clock()).ToString(), 2) + __.Right("0" + __.Minute(__.Clock()).ToString(), 2) + __.Right("0" + __.Second(__.Clock()).ToString(), 2); if (!__.DirExists(TmpFileName)) { __.MkDir(TmpFileName); } PayRoll.CopyTempFile(TmpFileName); TmpFileName = TmpFileName + CAbc.SLASH + CleanFileName; PayRoll.CopyTempFile(TmpFileName); if (__.FileExists(TmpFileName)) { __.DeleteFile(TmpFileName); } if (__.FileExists(TmpFileName)) { __.Print("Ошибка удаления файла ", TmpFileName); Command.Close(); Connection.Close(); PayRoll.Close(); __.Print("", "Для выхода нажмите ENTER."); CConsole.WaitForEscOrEnter(); return; } __.CopyFile(FileName, TmpFileName); if (DEBUG) { __.Print(" Беру настройки шлюза здесь : " + OgConfig.Config_FileName()); } // ----------------------------------------------------- // Проверяем пачку AboutError = PayRoll.CheckAll(Command, BankCode); if (AboutError != CAbc.EMPTY) { __.Print(AboutError); __.AppendText(LogFileName, CAbc.CRLF + AboutError + CAbc.CRLF, CAbc.CHARSET_WINDOWS); SavedColor = CConsole.BoxColor; CConsole.BoxColor = CConsole.RED * 16 + CConsole.WHITE; if (!CConsole.GetBoxChoice(" При проверке файла обнаружены ошибки !" , " Для отмены загрузки нажмите ESC . " , " Для продолжения - ENTER ." ) ) { __.AppendText(LogFileName, CAbc.CRLF + __.Now() + " загрузка отменена. " + CAbc.CRLF, CAbc.CHARSET_WINDOWS); CConsole.BoxColor = SavedColor; Command.Close(); Connection.Close(); PayRoll.Close(); return; } CConsole.BoxColor = SavedColor; } else { if (!CConsole.GetBoxChoice(" При проверке файла ошибок не найдено." , " Для загрузки нажмите ENTER . " , " Для выхода - ESC." ) ) { __.AppendText(LogFileName, CAbc.CRLF + __.Now() + " загрузка отменена. " + CAbc.CRLF, CAbc.CHARSET_WINDOWS); Command.Close(); Connection.Close(); PayRoll.Close(); return; } } // ----------------------------------------------------- // Загружаем пачку if (!PayRoll.InsertAll(Command, BankCode)) { SavedColor = CConsole.BoxColor; CConsole.BoxColor = CConsole.RED * 16 + CConsole.WHITE; CConsole.GetBoxChoice(CAbc.EMPTY, " При загрузке файла были ошибки !", CAbc.EMPTY); CConsole.BoxColor = SavedColor; } // ----------------------------------------------------- Command.Close(); Connection.Close(); PayRoll.Close(); __.AppendText(LogFileName, CAbc.CRLF + __.Now() + " загрузка завершена. " + CAbc.CRLF, CAbc.CHARSET_WINDOWS); } //FOLD00