public static void Main() { Err.LogToConsole(); int ErcDate = 0; bool UseErcRobot = false; // подключаться ли к серверу под логином ErcRobot string FileName = CAbc.EMPTY; const string ROBOT_LOGIN = "******"; const string ROBOT_PWD = "35162987"; const string TASK_CODE = "OpenGate"; string StatDir = null; string DataBase = null; string ServerName = null; string ScroogeDir = null; string SettingsDir = null; string ConnectionString = null; if (System.Console.BufferHeight > 50) { System.Console.WindowHeight = 25; System.Console.BufferHeight = 25; } System.Console.Title = "Загрузка в `Скрудж` платежей из А-файлов "; System.Console.BackgroundColor = 0; System.Console.Clear(); CCommon.Print("", " Загрузка в `Скрудж` платежей из А-файлов. Версия 3.03 от 29.08.2019г."); if (CCommon.ParamCount() < 2) { CCommon.Print(" В строке запуска нужно указатьть один из режимов :"); CCommon.Print(" /A диалоговый режим, для загрузки файлов для универсального шлюза ;"); CCommon.Print(" /С проверка одного файла, имя которого задано далее в строке ;"); CCommon.Print(" /D `браковка` заготовок из файла, имя которого задано далее в строке ;"); CCommon.Print(" /S пакетный режим , для загрузки файлов от САКР ( маска !A??_*.* ) ;"); CCommon.Print(" /U диалоговый режим, для загрузки файлов от ЕРЦ ( кроме !A??_*.* ) ;"); CCommon.Print(" /Z диалоговый режим, для загрузки файлов зарплаты( маска !A*.Z?? ) ."); CCommon.Print("", " /R дополнительная опция - подключаться под пользователем ErcRobot ."); return; } if (CCommon.ParamCount() == 0) { return; } for (int i = 1; i < CCommon.ParamCount(); i++) { if (CAbc.ParamStr[i].Trim().ToUpper() == "/R") { UseErcRobot = true; System.Console.Title = System.Console.Title + " * "; } else if (CAbc.ParamStr[i].Trim().Substring(0, 1) == "/") { WorkMode = CCommon.Upper(CAbc.ParamStr[i]).Trim(); } else { FileName = CAbc.ParamStr[i].Trim(); } } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Вычитываем настройки "Скрудж-2" ErcAFile = new CErcAFile(); ErcEFile = new CErcEFile(); 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 (ScroogeDir == null) { CCommon.Print(" Не найдена переменная `Root` в настройках `Скрудж-2` "); return; } if (ServerName == null) { CCommon.Print(" Не найдена переменная `Server` в настройках `Скрудж-2` "); return; } if (DataBase == null) { CCommon.Print(" Не найдена переменная `Database` в настройках `Скрудж-2` "); return; } ScroogeDir = ScroogeDir.Trim(); if (SettingsDir != null) { SettingsDir = ScroogeDir + "\\" + SettingsDir; } ServerName = ServerName.Trim(); DataBase = DataBase.Trim(); CCommon.Print(" Беру настройки `Скрудж-2` здесь : " + ScroogeDir); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Подключаемся к базе данных 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()) { /* CCommon.Print(" Сервер : " + ServerName ) */; } else { CCommon.Print(" Ошибка подключения к серверу !"); return; } Command = new CCommand(Connection); if (Command.IsOpen()) { /* CCommon.Print(" База данных : " + DataBase ) */; } else { CCommon.Print(" Ошибка подключения к базе данных !"); return; } System.Console.Title = System.Console.Title + " | " + ServerName + "." + DataBase; // - - - - - - - - - - - - - - - - - // считываем настройки шлюза в ЕРЦ AppSettings = new CAppSettings(Connection); ErcDate = ( int )CCommon.IsNull(Command.GetScalar(" exec dbo.pMega_OpenGate_Days;7 "), (int)0); if (ErcDate < 1) { CCommon.Print(" Ошибка определения даты текущего рабочего дня. "); return; } switch (WorkMode) { case WorkModes.CHECK: { SeanceNum = 1; ErcConfig = new COpenwayConfig(); ErcConfig.Open(ErcDate); InputDir = (string)ErcConfig["InputDir"]; break; } case WorkModes.DISABLE: { SeanceNum = 1; ErcConfig = new COpenwayConfig(); ErcConfig.Open(ErcDate); InputDir = (string)ErcConfig["InputDir"]; break; } case WorkModes.SALARY: { SeanceNum = ( int )CCommon.IsNull(Command.GetScalar(" exec dbo.pMega_OpenGate_Days;4 @TaskCode='ErcGate',@ParamCode='NumSeance' "), (int)0); ErcConfig = new CSalaryConfig(); ErcConfig.Open(ErcDate); InputDir = (string)ErcConfig["SalaryDir"] + "\\IN\\"; break; } case WorkModes.OPENGATE: { SeanceNum = ( int )CCommon.IsNull(Command.GetScalar(" exec dbo.pMega_OpenGate_Days;4 @TaskCode='OpenGate',@ParamCode='NumSeance' "), (int)0); ErcConfig = new COpenwayConfig(); ErcConfig.Open(ErcDate); InputDir = (string)ErcConfig["InputDir"]; break; } case WorkModes.SAKR: case WorkModes.ERC: { SeanceNum = ( int )CCommon.IsNull(Command.GetScalar(" exec dbo.pMega_OpenGate_Days;4 @TaskCode='ErcGate',@ParamCode='NumSeance' "), (int)0); ErcConfig = new CErcConfig(); ErcConfig.Open(ErcDate); InputDir = (string)ErcConfig["InputDir"]; break; } default: { CCommon.Print("", "Ошибка в строке параметров программы ! "); return; break; } } if (!ErcConfig.IsValid()) { CCommon.Print(" Ошибка чтения настроек программы из " + ErcConfig.Config_FileName()); System.Console.WriteLine(ErcConfig.ErrInfo()); return; } if (SeanceNum < 1) { CCommon.Print(" Ошибка определения номера сеанса "); return; } TodayDir = (string)ErcConfig.TodayDir(); TmpDir = (string)ErcConfig.TmpDir(); StatDir = (string)ErcConfig.StatDir(); if ((TodayDir == null) || (InputDir == null)) { CCommon.Print(" Ошибка чтения настроек программы из " + ErcConfig.Config_FileName()); return; } TodayDir = TodayDir.Trim(); InputDir = InputDir.Trim(); if ((TodayDir == "") || (InputDir == "")) { CCommon.Print(" Ошибка чтения настроек программы из " + ErcConfig.Config_FileName()); return; } if (!CCommon.DirExists(StatDir)) { CCommon.MkDir(StatDir); } if (!CCommon.SaveText(StatDir + "\\" + "test.dat", "test.dat", CAbc.CHARSET_DOS)) { CCommon.Print(" Ошибка записи в каталог " + StatDir); return; } CCommon.DeleteFile(StatDir + "\\" + "test.dat"); LogFileName = ErcConfig.LogDir() + "\\" + ((WorkMode == WorkModes.CHECK) ? "W" + CCommon.Hour(CCommon.Now()).ToString("00") + CCommon.Minute(CCommon.Now()).ToString("00") + CCommon.Second(CCommon.Now()).ToString("00") : "SEANS" + SeanceNum.ToString("000") ) + ".TXT"; CCommon.Print(" Беру настройки шлюза здесь : " + ErcConfig.Config_FileName()); // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // основной блог работы программы switch (WorkMode) { // - - - - - - - - - - - - - - - - - - - - - - - // Загружаем сторонние платежи case WorkModes.SAKR: { foreach (string FName in CCommon.GetFileList(InputDir + "!A??_*.*")) { if (FName != null) { if (FileName.Trim() != "") { ProcessAFile(Command, FileName, false); } } } // Загружаем допреквизиты foreach (string FName in CCommon.GetFileList(InputDir + "!E*.*")) { if (FName != null) { if (FName.Trim() != "") { if (ErcEFile.Load(Command, FileName)) { CCommon.MoveFile(FileName, TodayDir + CAbc.SLASH + CCommon.GetFileName(FileName)); } } } } // Завершающие действия CCommon.Print(" Пересчет промежуточных данных ..."); Command.Execute("exec dbo.pMega_OpenGate_PalvisBind "); break; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Загружаем коммунальные платежи из файла, который выбирает пользователь case WorkModes.ERC: { FileName = SelectFileName(InputDir + "!A*.*"); while (FileName != "") { if (ErcAFile.UserAccepted(FileName)) { ProcessAFile(Command, FileName, true); } FileName = SelectFileName(InputDir + "!A*.*"); } break; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Загружаем зарплатные платежи из файла, который выбирает пользователь case WorkModes.SALARY: { FileName = SelectFileName(InputDir + "!A*.Z*"); while (FileName != "") { if (ErcAFile.UserAccepted(FileName)) { ProcessAFile(Command, FileName, true); } FileName = SelectFileName(InputDir + "!A*.*"); } break; } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // Загружаем платежи по универсальному шлюзу из файла, который выбирает пользователь case WorkModes.OPENGATE: { if (FileName != "") { if (CCommon.FileExists(FileName)) { if (ErcAFile.UserAccepted(FileName)) { ProcessAFile(Command, FileName, true); } } } else { FileName = SelectFileNameGUI(SettingsDir, InputDir); if (FileName != "") { if (ErcAFile.UserAccepted(FileName)) { ProcessAFile(Command, FileName, true); if (CCommon.FileExists(FileName)) { CCommon.DeleteFile(FileName); } } } } break; } // - - - - - - - - - - - - // Только проверка файла case WorkModes.CHECK: { string AboutError = ""; if (FileName.Length > 0) { if (!CCommon.FileExists(FileName)) { CCommon.Print("", "Не найден файл " + FileName); FileName = ""; } } if (FileName != "") { Err.LogToConsole(); AboutError = ErcAFile.Check(Command, FileName); CConsole.Clear(); if (AboutError == "") { CCommon.Print("", " " + ErcAFile.String_Count.ToString() + " строк на общую суммму " + CCommon.StrN(ErcAFile.Total_Credit, 11).Replace(",", "."), "" , " Ошибок не найдено."); } else { CCommon.AppendText(LogFileName, CCommon.Now() + " " + CCommon.Upper(CCommon.GetUserName()) + " проверяет файл " + CCommon.GetFileName(FileName) + CAbc.CRLF + CAbc.CRLF + AboutError + CAbc.CRLF, CAbc.CHARSET_WINDOWS); CCommon.Print(AboutError); } } else { FileName = SelectFileNameGUI(SettingsDir, InputDir); if (FileName != "") { if (ErcAFile.UserAccepted(FileName)) { AboutError = ErcAFile.Check(Command, FileName); CConsole.Clear(); if (AboutError == "") { CCommon.Print("", " " + ErcAFile.String_Count.ToString() + " строк на общую суммму " + CCommon.StrN(ErcAFile.Total_Credit, 11).Replace(",", "."), "" , " Ошибок не найдено."); } else { CCommon.AppendText(LogFileName, CCommon.Now() + " " + CCommon.Upper(CCommon.GetUserName()) + " проверяет файл " + CCommon.GetFileName(FileName) + CAbc.CRLF + CAbc.CRLF + AboutError + CAbc.CRLF, CAbc.CHARSET_WINDOWS); CCommon.Print(AboutError); } } if (CCommon.FileExists(FileName)) { CCommon.DeleteFile(FileName); } } } break; } // - - - - - - - - - - - - - - - - - - // `запретить` заготовки из А-файла case WorkModes.DISABLE: { CConsole.Clear(); Err.LogToConsole(); if (CCommon.ParamCount() > 2) { FileName = CAbc.ParamStr[2].Trim(); } if (FileName == "") { CCommon.Print("", "Не задано имя файла !"); } else { FileName = CCommon.GetFileName(FileName); if (Command.Execute("exec dbo.pMega_OpenGate_Disable @TaskCode='OpenGate',@FileName='" + FileName + "'")) { CCommon.Print("", "заготовки из файла " + FileName + " запрещены ."); } else { CCommon.Print("", "Ошибка выполнения команды на сервере !"); } } break; } } Command.Close(); Connection.Close(); }
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