Esempio n. 1
0
    static void    Main()
    {
        const bool DEBUG       = false;
        CParam     Param       = new   CParam();
        int        Mode        = 0;                             // 1=today, 2=chk_via; 3=chk_misc ; 4=copy for MStat
        int        PrevDate    = 0;
        int        DayDate     = __.Today();
        int        NextDate    = __.Today() - 1;
        string     LogFileName = CAbc.EMPTY;
        //string		REQUEST_GET_BRC_CONNECTIONSTRING	=	" select 'Server='+Ltrim(Rtrim([Server]))+';Database='+Ltrim(Rtrim([Base]))+';Integrated Security=TRUE;' from dbo.sv_Branchs with (NoLock) where kind=3";
        string REQUEST_GET_BRANCH_KIND = " select BranchKind from dbo.vMega_Common_MyBankInfo with ( NoLock ) ";

        if (DEBUG)
        {
            Mode = 4;
        }
        else
        {
            switch (Param["MODE"].Trim().ToUpper())
            {
            case    "TODAY": {
                Mode = 1;
                break;
            }

            case    "CHK_VIA": {
                Mode = 2;
                break;
            }

            case    "CHK_MISC": {
                Mode = 3;
                break;
            }

            case    "COPY4MSTAT": {
                Mode = 4;
                break;
            }

            case    "CHK_ISCARD": {
                Chk_ISCard();
                return;
            }

            default: {
                Mode = 0;
                break;
            }
            }
        }
        if (Param["DAYDATE"].Trim() != CAbc.EMPTY)
        {
            if (__.CInt(Param["DAYDATE"].Trim()) > 0)
            {
                DayDate = __.CInt(Param["DAYDATE"].Trim());
            }
        }
        if (Param["NEXTDATE"].Trim() != CAbc.EMPTY)
        {
            if (__.CInt(Param["NEXTDATE"].Trim()) > 0)
            {
                NextDate = __.CInt(Param["NEXTDATE"].Trim());
            }
        }
        if (Mode == 0)
        {
            __.Print("Не задан режим работы !");
            return;
        }
        // -------------------------------------------------------
        CScrooge2Config Scrooge2Config = new   CScrooge2Config();

        if (!Scrooge2Config.IsValid)
        {
            CCommon.Print(Scrooge2Config.ErrInfo);
            return;
        }
        ScroogeDir = (string)Scrooge2Config["Root"].Trim();
        DayOutDir  = (string)Scrooge2Config["Output"].Trim();
        ScroogeOut = ScroogeDir + "\\" + DayOutDir;
        ServerName = (string)Scrooge2Config["Server"].Trim();
        DataBase   = (string)Scrooge2Config["DataBase"].Trim();
        if (ScroogeDir == null)
        {
            CCommon.Print("  Не найдена переменная `Root` в настройках `Скрудж-2` ");
            return;
        }
        if (ServerName == null)
        {
            CCommon.Print("  Не найдена переменная `Server` в настройках `Скрудж-2` ");
            return;
        }
        if (DataBase == null)
        {
            CCommon.Print("  Не найдена переменная `Database` в настройках `Скрудж-2` ");
            return;
        }
        CCommon.Print("  Беру настройки `Скрудж-2` здесь :  " + ScroogeDir);
        __.Print("  Сервер        :  " + ServerName);
        __.Print("  База данных   :  " + DataBase + CAbc.CRLF);
        ConnectionString = "Server=" + ServerName
                           + ";Database=" + DataBase
                           + ";Integrated Security=TRUE;"
        ;
        // - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        if (DayOutDir != null)
        {
            DayOutDir = ScroogeDir + "\\" + DayOutDir.Trim();
            if (!CCommon.DirExists(DayOutDir))
            {
                CCommon.MkDir(DayOutDir);
            }
            if (CCommon.DirExists(DayOutDir))
            {
                DayOutDir += "\\" + CCommon.StrD(DayDate, 8, 8).Replace("/", "").Replace(".", "");
                if (!CCommon.DirExists(DayOutDir))
                {
                    CCommon.MkDir(DayOutDir);
                }
                if (!CCommon.DirExists(DayOutDir))
                {
                    DayOutDir = ScroogeDir + "\\";
                }
            }
            LogFileName = DayOutDir + "\\" + "dayopen.log";
        }
        else
        {
            LogFileName = ScroogeDir + "\\" + "dayopen.log";
        }
        Err.LogTo(LogFileName);
        // --------------------------------------------------------------
        Connection = new   CConnection(ConnectionString);
        if (!Connection.IsOpen())
        {
            __.Print("  Ошибка подключения к серверу !");
            return;
        }
        Command = new   CCommand(Connection);
        __.Print("Определяю режим банк\\филиал.");
        int BranchKind = ( int )CCommon.IsNull(Command.GetScalar(REQUEST_GET_BRANCH_KIND), -1);

        if (BranchKind == -1)
        {
            __.Print("  Ошибка выполнения команды на сервере !");
        }
        else
        if (BranchKind != 0)
        {
            MainBank = false;
        }

        /*	Выборка адреса БД БРЦ
         * if	( MainBank ) {
         *      __.Print("Вычитываю адрес БД БРЦ.");
         *      BrcConnStr	=	( string ) CCommon.IsNull( Command.GetScalar( REQUEST_GET_BRC_CONNECTIONSTRING ) , CAbc.EMPTY );
         * }
         */
        __.Print("Определяю дату предыдущего рабочего дня.");
        PrevDate = ( int )CCommon.IsNull(Command.GetScalar(" exec dbo.Mega_Day_Close;2  " + DayDate.ToString()), (int)0);
        if (PrevDate == 0)
        {
            __.Print(" Ошибка определения даты предыдущего рабочего дня !");
            return;
        }
        else
        {
            __.Print("Предыдущий рабочий день - " + __.StrD(PrevDate, 8, 8));
        }
        switch (Mode)
        {
        case    4: {
            CopyXML4Mebius(NextDate, "");
            // CopyXML4Mebius( NextDate , "kv" ); // Это перекладывание киевских отчетов очетов отключено 18 июля 2019г.
            return;
        }
        }
        Command.Close();
        Connection.Close();
        // ------------------------------------------------------
        switch (Mode)
        {
        case    1: {
            Today(PrevDate, DayDate);
            break;
        }

        case    2: {
            Chk_VIA(PrevDate
                    , (__.Month(DayDate) != __.Month(PrevDate))
                    );
            break;
        }

        case    3: {
            Chk_Misc(PrevDate, DayDate);
            break;
        }

        default: {
            __.Print("Неверно указан режим работы !");
            break;
        }
        }
    }
Esempio n. 2
0
	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
Esempio n. 3
0
    //  - - - - - - - - - - - - - - - - - - - - - - - - - -
    static void    ProcessAFile(CCommand Command, string FileName, bool IsCheckNeeded)
    {
        string ShortFileName = null;
        string BranchCode    = null;
        string TmpFileName   = null;
        string AboutError    = null;
        bool   Result        = false;
        byte   SavedColor    = CConsole.BoxColor;

        if (FileName == null)
        {
            return;
        }
        if (FileName.Trim() == "")
        {
            return;
        }
        ShortFileName = CCommon.GetFileName(FileName);
        CCommon.AppendText(LogFileName, CCommon.Now() + "   " + CCommon.Upper(CCommon.GetUserName()) + "  загружает файл " + ShortFileName + CAbc.CRLF, CAbc.CHARSET_WINDOWS);

        if (ShortFileName.IndexOf("_") < 0)
        {
            BranchCode = "";
        }
        else
        {
            BranchCode = ShortFileName.Substring(2, 2);
        }

        TmpFileName = TodayDir + CAbc.SLASH + ShortFileName;
        if (!CCommon.FileExists(TmpFileName))
        {
            CCommon.CopyFile(FileName, TmpFileName);
        }
        if (!CCommon.FileExists(TmpFileName))
        {
            return;
        }
        TmpFileName = TmpDir + CAbc.SLASH
                      + CCommon.Right("0" + CCommon.Hour(CCommon.Clock()).ToString(), 2)
                      + CCommon.Right("0" + CCommon.Minute(CCommon.Clock()).ToString(), 2)
                      + CCommon.Right("0" + CCommon.Second(CCommon.Clock()).ToString(), 2);
        if (!CCommon.DirExists(TmpFileName))
        {
            CCommon.MkDir(TmpFileName);
        }
        TmpFileName = TmpFileName + CAbc.SLASH + ShortFileName;
        if (CCommon.FileExists(TmpFileName))
        {
            CCommon.DeleteFile(TmpFileName);
        }
        if (CCommon.FileExists(TmpFileName))
        {
            CConsole.GetBoxChoice("", "Ошибка при удалении файла ", TmpFileName, "", " Для выхода нажмите Esc.");
            return;
        }
        CCommon.CopyFile(FileName, TmpFileName);
        if (!CCommon.FileExists(TmpFileName))
        {
            CConsole.GetBoxChoice("", "Ошибка при создании файла ", TmpFileName, "", " Для выхода нажмите Esc.");
            return;
        }
        Err.LogTo(LogFileName);
        CCommon.DeleteFile(FileName);
        CConsole.BoxColor = SavedColor;
        if (IsCheckNeeded)
        {
            AboutError = ErcAFile.Check(Command, TmpFileName);
            CConsole.Clear();
            if (AboutError != null)
            {
                if (AboutError.Trim() != "")
                {
                    CCommon.AppendText(LogFileName, AboutError + CAbc.CRLF, CAbc.CHARSET_WINDOWS);
                    CCommon.Print(AboutError);
                    CConsole.BoxColor = CConsole.RED * 16 + CConsole.WHITE;
                    if (!CConsole.GetBoxChoice("Внимание ! При проверке " + ShortFileName + " обнаружены ошибки !"
                                               , "", "Для отмены загрузки нажмите Esc , для продолжения - Enter"
                                               )
                        )
                    {
                        CCommon.CopyFile(TmpFileName, FileName);
                        CCommon.Print(AboutError);
                        CConsole.BoxColor = SavedColor;
                        return;
                    }
                }
            }
        }
        CConsole.BoxColor = SavedColor;
        if (WorkMode == WorkModes.OPENGATE)
        {
            Result = ErcAFile.Load(Command, TmpFileName, BranchCode, "OpenGate");
            if (Result)
            {
                // добавление в PayRoll информации о файле
                CConsole.BoxColor = SavedColor;
                CConsole.Clear();
                CConsole.ShowBox("", " Подождите...", "");
                Command.Execute(" exec pMega_OpenGate_PayRoll;2 @FileName='" + CCommon.GetFileName(TmpFileName) + "'");
            }
        }
        else
        {
            Result = ErcAFile.Load(Command, TmpFileName, BranchCode, "ErcGate");
        }
        if (Result)
        {
            CCommon.AppendText(LogFileName, CCommon.Now() + "   загрузка закончена." + CAbc.CRLF, CAbc.CHARSET_WINDOWS);
        }
        else
        {
            CCommon.CopyFile(TmpFileName, FileName);
            CConsole.BoxColor = CConsole.RED * 16 + CConsole.WHITE;
            CConsole.GetBoxChoice("", "  При загрузке " + ShortFileName + " возникли ошибки !", "");
        }
        CConsole.BoxColor = SavedColor;
        CConsole.Clear();
        Err.LogToConsole();
    }
Esempio n. 4
0
    public static void Main()
    {
        const bool DEBUG            = false;
        int        WorkMode         = 0;                                 // 1 = выгружать B ; 2 = выгружать V
        const int  WORK_MODE_B      = 1;                                 // для WorkMode : 1 = выгружать B
        const int  WORK_MODE_V      = 2;                                 // для WorkMode : 2 = выгружать V
        int        DayStatus        = 0;                                 // &1 = стоп по B ; &2 = стоп по V
        int        ErcDate          = CCommon.Today();
        string     TmpDir           = null;
        string     StatDir          = null;
        string     TodayDir         = null;
        string     OutputDir        = null;
        string     DataBase         = null;
        string     ServerName       = null;
        string     ScroogeDir       = null;
        string     LogFileName      = null;
        string     SimpleFileName   = null;
        string     ConfigFileName   = null;
        string     ConnectionString = null;

        Err.LogToConsole();
        CCommon.Print("", " Создание файлов для ЕРЦ. Версия 3.02 от 23.05.2019г.");

        if (!DEBUG)
        {
            if (CCommon.ParamCount() < 2)
            {
                CCommon.Print(" Режим работы программы (задаются в строке запуска программы):");
                CCommon.Print("        /E      -  выполнить выгрузку файлов для ЕРЦ .");
                CCommon.Print(" Примеры запуска программы  : ");
                CCommon.Print("        ErcExport  /E");
                CCommon.Print("        ErcExport  /E  2019/05/20");
                return;
            }
            if (CCommon.Upper(CAbc.ParamStr[1]).Trim() != "/E")
            {
                CCommon.Print(" Ошибка ! Неправильный режим работы  - " + CAbc.ParamStr[1]);
                return;
            }
            if (CCommon.ParamCount() > 2)
            {
                ErcDate = CCommon.GetDate(CAbc.ParamStr[2].Trim());
                if (ErcDate < 10000)
                {
                    CCommon.Print(" Ошибка ! Неправильная дата - " + CAbc.ParamStr[2]);
                    return;
                }
            }
        }
        else
        {
            CCommon.Print("--- DEBUG ---");
        }
        CCommon.Print(" Рабочая дата " + CCommon.StrD(ErcDate, 10, 10));

        // - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        Scrooge2Config = new   CScrooge2Config();
        if (!Scrooge2Config.IsValid)
        {
            CCommon.Print(Scrooge2Config.ErrInfo);
            return;
        }

        ScroogeDir = (string)Scrooge2Config["Root"];
        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;
        }
        CCommon.Print("  Беру настройки `Скрудж-2` здесь :  " + ScroogeDir);

        // - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        ConnectionString = "Server=" + ServerName
                           + ";Database=" + DataBase
                           + ";Integrated Security=TRUE;"
        ;
        Connection1 = new CConnection(ConnectionString);
        Connection2 = new CConnection(ConnectionString);

        if (Connection1.IsOpen())
        {
            CCommon.Print("  Сервер        :  " + ServerName);
            CCommon.Print("  База данных   :  " + DataBase + CAbc.CRLF);
        }
        else
        {
            CCommon.Print(CAbc.CRLF + "  Ошибка подключения к серверу !");
            return;
        }

        // - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        CCommand Command = new   CCommand(Connection1);

        DayStatus = ( int )CCommon.IsNull(Command.GetScalar(" exec dbo.pMega_OpenGate_Days;8 @TaskCode = 'ErcGate' , @DayDate = " + ErcDate.ToString()), (int)0);

        switch ((DayStatus & 3))
        {
        case  0: {                                      // разрешена отправка и B и V
            WorkMode = WORK_MODE_B;                     // отправлять B
            break;
        }

        case  1: {                                      // запрещена отправка B ; разрешена отправка V
            WorkMode = WORK_MODE_V;                     // отправлять V
            break;
        }

        case  2: {                                      // разрешена отправка B ; запрещена отправка V
            WorkMode = WORK_MODE_B;                     // отправлять B
            break;
        }

        case  3: {
            CCommon.Print(" На " + CCommon.StrD(ErcDate, 10, 10) + " отправка пачек B и V завершена (см. признак текущего дня).");
            Connection1.Close();
            Connection2.Close();
            return;

            break;
        }
        }

        SeanceNum = ( int )CCommon.IsNull(Command.GetScalar(" exec dbo.pMega_OpenGate_Days;4  @TaskCode = 'ErcGate' , @ParamCode = 'NumSeance'  , @DayDate = " + ErcDate.ToString()), (int)0);
        if (WorkMode == WORK_MODE_B)
        {
            BFileNum = ( int )CCommon.IsNull(Command.GetScalar(" exec dbo.pMega_OpenGate_Days;4  @TaskCode = 'ErcGate' , @ParamCode = 'NumOutFile' , @DayDate = " + ErcDate.ToString()), (int)0);
            CCommon.Print(" Выполняется формирование B-файлов ");
        }
        else
        {
            CCommon.Print(" Выполняется формирование V и W -файлов ");
        }

        Command.Close();
        // - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        ConfigFileName = ScroogeDir + CAbc.SLASH + "EXE" + CAbc.SLASH + "GLOBAL.ERC";
        ErcConfig      = new CErcConfig();
        ErcConfig.Open(ErcDate);
        if (!ErcConfig.IsValid())
        {
            CCommon.Print("  Ошибка чтения настроек из файла " + ConfigFileName);
            System.Console.WriteLine(ErcConfig.ErrInfo());
            Connection1.Close();
            Connection2.Close();
            return;
        }
        TodayDir  = (string)ErcConfig.TodayDir();
        StatDir   = (string)ErcConfig.StatDir();
        TmpDir    = (string)ErcConfig.TmpDir();
        OutputDir = (string)ErcConfig["OutputDir"];
        if ((TodayDir == null) || (OutputDir == null))
        {
            CCommon.Print("  Ошибка чтения настроек из файла " + ConfigFileName);
            Connection1.Close();
            Connection2.Close();
            return;
        }
        TodayDir  = TodayDir.Trim();
        OutputDir = OutputDir.Trim();
        StatDir   = StatDir.Trim();
        if ((TodayDir == "") || (OutputDir == "") || (StatDir == ""))
        {
            CCommon.Print("  Ошибка чтения настроек из файла " + ConfigFileName);
            Connection1.Close();
            Connection2.Close();
            return;
        }
        if (!CCommon.DirExists(StatDir))
        {
            CCommon.MkDir(StatDir);
        }
        if (!CCommon.SaveText(StatDir + "\\" + "test.dat", "test.dat", CAbc.CHARSET_DOS))
        {
            CCommon.Print(" Ошибка записи в каталог " + StatDir);
            Connection1.Close();
            Connection2.Close();
            return;
        }
        CCommon.DeleteFile(StatDir + "\\" + "test.dat");
        CCommon.Print("  Беру настройки шлюза здесь :  " + ConfigFileName);

        // - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        TmpDir = TmpDir + "\\" + SeanceNum.ToString("000000");
        CCommon.MkDir(TmpDir);
        if (!CCommon.SaveText(TmpDir + "\\" + "test.dat", "test.dat", CAbc.CHARSET_DOS))
        {
            CCommon.Print("  Ошибка записи в каталог " + TmpDir);
            Connection1.Close();
            Connection2.Close();
        }
        LogFileName = ErcConfig.LogDir() + "\\SE" + SeanceNum.ToString("000000") + ".TXT";
        if (!CCommon.AppendText(LogFileName, CCommon.Now() + " , " + CCommon.Upper(CCommon.GetUserName()) + CAbc.CRLF, CAbc.CHARSET_DOS))
        {
            CCommon.Print("  Ошибка записи в файл " + LogFileName);
            Connection1.Close();
            Connection2.Close();
        }

        Err.LogTo(LogFileName);

        // - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        //	Отправка B
        if (WorkMode == WORK_MODE_B)
        {
            if (!WriteBFiles(ErcDate, TmpDir))
            {
                CCommon.Print("  Ошибка записи B-файлов!");
            }
        }

        // - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        //	Отправка V
        if (WorkMode == WORK_MODE_V)
        {
            WriteVFiles(ErcDate, TmpDir, 0);
            WriteVFiles(ErcDate, TmpDir, 1);
            Command = new   CCommand(Connection1);
            if (!Command.Execute(" exec dbo.pMega_OpenGate_Days;9  @TaskCode = 'ErcGate' , @DayDate = " + ErcDate.ToString()))
            {
                CCommon.Print("  Ошибка установки запрета на отправку V-файла!");
                CCommon.AppendText(LogFileName, "  Ошибка установки запрета на отправку V-файла!", CAbc.CHARSET_DOS);
                CCommon.AppendText(LogFileName, CAbc.CRLF, CAbc.CHARSET_DOS);
                Connection1.Close();
                Connection2.Close();
                return;
            }
            Command.Close();
        }

        // - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        foreach (string ResultFile in CCommon.GetFileList(TmpDir + "\\" + "!*.*"))
        {
            if (ResultFile != null)
            {
                SimpleFileName = CCommon.GetFileName(ResultFile);
                CCommon.CopyFile(ResultFile, TodayDir + "\\" + SimpleFileName);
                CCommon.CopyFile(ResultFile, OutputDir + "\\" + SimpleFileName);
                CCommon.AppendText(LogFileName, "Записываю файл " + SimpleFileName, CAbc.CHARSET_DOS);
                CCommon.Print("  Записываю файл " + SimpleFileName);
            }
        }
        CCommon.AppendText(LogFileName, CAbc.CRLF, CAbc.CHARSET_DOS);
        Connection1.Close();
        Connection2.Close();
    }
Esempio n. 5
0
    // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    public static void    Main()
    {
        const bool DEBUG                = false;
        CParam     Param                = new   CParam();
        int        Choice               = 0;
        bool       Result               = false;
        byte       SavedColor           = 7;
        string     OutputDir            = CAbc.EMPTY;
        string     ScroogeDir           = CAbc.EMPTY;
        string     ServerName           = CAbc.EMPTY;
        string     DataBase             = CAbc.EMPTY;
        string     LogFileName          = CAbc.EMPTY;
        string     UnsolverBillsCmdText = CAbc.EMPTY;
        int        UnsolvedBillsExists  = 0;

        string[] Titles       = { "ОТКРЫТИЕ ДНЯ", "ЗАКРЫТИЕ ДНЯ" };
        string[] LogFileNames = { "dayopen.log", "dayclose.log" };
        string   NOW_STR      = CCommon.StrD(CCommon.Today(), 10, 10).Substring(6)
                                + CCommon.StrD(CCommon.Today(), 10, 10).Substring(2, 4)
                                + CCommon.StrD(CCommon.Today(), 10, 10).Substring(0, 2);

        Err.LogToConsole();
        CConsole.Clear();
        CCommon.Print(" Оболочка открытия и закрытия дня в `Скрудже`. Версия 3.13 от 02.10.2018г.", "");
        if (DEBUG)
        {
            Mode = 1;
        }
        else
        if (CCommon.IsEmpty(Param["Mode"]))
        {
            CCommon.Print("Не указан режим работы программы !");
        }
        else
        {
            switch (Param["Mode"].ToUpper())
            {
            case    "OPEN": {
                Mode = 1;
                break;
            }

            case    "CLOSE": {
                Mode = 2;
                break;
            }

            default: {
                CCommon.Print("Неверно указан режим работы программы !");
                break;
            }
            }
        }
        if ((Mode != 1) && (Mode != 2))
        {
            return;
        }
        if ((Mode == 2) && (!CCommon.DirExists("Z:\\")))
        {
            SavedColor        = CConsole.BoxColor;
            CConsole.BoxColor = CConsole.RED * 16 + CConsole.WHITE;
            CConsole.ShowBox("", "Не подключен Z:\\", "");
            CConsole.ClearKeyboard();
            CConsole.ReadChar();
            CConsole.BoxColor = SavedColor;
            CConsole.Clear();
            CConsole.ShowCursor();
        }
        // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        //	Запрос пользователю на ввод даты дня, который открывается или закрывается
        while (DayDate == 0)
        {
            switch (Mode)
            {
            case 1: {
                CCommon.Write("Какую дату открываем ? ( " + NOW_STR.Replace("/", ".") + " ) ");
                break;
            }

            default: {
                CCommon.Write("Какую дату закрываем ? ( " + NOW_STR.Replace("/", ".") + " ) ");
                break;
            }
            }
            Answer = CCommon.Input().Trim();
            if (Answer == "")
            {
                DayDate = CCommon.Today();
            }
            else
            {
                DayDate = CCommon.GetDate(Answer);
            }
        }
        // - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        Scrooge2Config = new   CScrooge2Config();
        if (!Scrooge2Config.IsValid)
        {
            CCommon.Print(Scrooge2Config.ErrInfo);
            return;
        }
        ScroogeDir = (string)Scrooge2Config["Root"];
        OutputDir  = (string)Scrooge2Config["Output"];
        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;
        }
        CCommon.Print(" Беру настройки `Скрудж-2` здесь :  " + ScroogeDir);
        // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        ConnectionString = "Server=" + ServerName
                           + ";Database=" + DataBase
                           + ";Integrated Security=TRUE;";
        Connection = new CConnection(ConnectionString);
        if (Connection.IsOpen())
        {
            CCommon.Print(" Сервер " + ServerName);
            CCommon.Print(" База   " + DataBase + CAbc.CRLF);
        }
        else
        {
            CCommon.Print(CAbc.CRLF + "  Ошибка подключения к серверу !");
            return;
        }
        System.Console.Title = "  " + Titles[Mode - 1] + "             |   " + ServerName + "." + DataBase;
        Command = new   CCommand(Connection);
        int    IsFullAccess   = ( int )CCommon.IsNull(Command.GetScalar(" select  dbo.Fn_IsFullAccess( DEFAULT ) "), (int)0);
        string InfNBU_OutPath = ( string )CCommon.IsNull(Command.GetScalar(" exec dbo.Mega_Day_Open;5  @Mode=2 ; "), (string)CAbc.EMPTY);

        if (Mode == 2)
        {
            // Записываю в историю логин пользователя, который закрывает день
            Command.Execute(" exec  dbo.Mega_Day_Close;12  @DayDate = " + DayDate.ToString() + " , @UserCode = '" + UserCode + "' ");
            // Проверка : имеются ли непроведенные документы ?
            UnsolverBillsCmdText = " If Exists ( select 1 from dbo.Mega_SV_WaitingBills with (NoLock) where  (DayDate=" + DayDate.ToString() + " )  and ((PermitFlag & 255 )!=255) and ((ProcessFlag & 3)!=3) ) select Convert(Integer,1) else select Convert(Integer,0) ";
            UnsolvedBillsExists  = ( int )CCommon.IsNull(Command.GetScalar(UnsolverBillsCmdText), (int)0);
        }
        Command.Close();
        Connection.Close();
        if (IsFullAccess < 1)
        {
            CCommon.Print(CAbc.CRLF + "  Для работы программы пользователю необходим полный доступ в Скрудже !");
            return;
        }
        InfNBU_OutPath = InfNBU_OutPath.Trim();
        if (InfNBU_OutPath.Length == 0)
        {
            Err.Print(CCommon.Now().ToString() + "Ошибка определения выходного каталога для ОДБ." + CAbc.CRLF + CAbc.CRLF);
        }
        if (UnsolvedBillsExists == 1)
        {
            SavedColor        = CConsole.BoxColor;
            CConsole.BoxColor = CConsole.RED * 16 + CConsole.WHITE;
            CConsole.ShowBox("", "Имеются непpоведенные документы", "", "  Пpоведите их или удалите !", "");
            CConsole.ClearKeyboard();
            CConsole.ReadChar();
            CConsole.BoxColor = SavedColor;
            CConsole.Clear();
            CConsole.ShowCursor();
        }
        // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        if (OutputDir != null)
        {
            OutputDir = ScroogeDir + "\\" + OutputDir.Trim();
            if (!CCommon.DirExists(OutputDir))
            {
                CCommon.MkDir(OutputDir);
            }
            if (CCommon.DirExists(OutputDir))
            {
                OutputDir += "\\" + CCommon.StrD(DayDate, 8, 8).Replace("/", "").Replace(".", "");
                if (!CCommon.DirExists(OutputDir))
                {
                    CCommon.MkDir(OutputDir);
                }
                if (!CCommon.DirExists(OutputDir))
                {
                    OutputDir = ScroogeDir + "\\";
                }
            }
            LogFileName = OutputDir + "\\" + LogFileNames[Mode - 1];
        }
        else
        {
            LogFileName = ScroogeDir + "\\" + LogFileNames[Mode - 1];
        }
        Err.LogTo(LogFileName);
        // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        //	Основной цикл программы
        do
        {
            System.Console.Title = "  " + Titles[Mode - 1] + "  " + CCommon.StrD(DayDate, 8, 8) + "        |   " + ServerName + "." + DataBase;
            string[] FilesForMEDOC = CCommon.GetFileList(InfNBU_OutPath + "\\@*.*");
            if (FilesForMEDOC != null)
            {
                if (FilesForMEDOC.Length > 0)
                {
                    CConsole.GetBoxChoice(
                        ""
                        , "В каталоге " + InfNBU_OutPath
                        , "Найдены файлы для налоговой  @*.*"
                        , "Не забудьте их отправить!"
                        , ""
                        );
                }
            }
            if (!LoadHistory(Mode))
            {
                Err.Print(CCommon.Now().ToString() + "Ошибка получения с сервера истории работы программы !");
            }
            Choice = CConsole.GetMenuChoice(MenuNames);
            if (Choice > 0)
            {
                Err.Print(CCommon.Now().ToString() + "\t< " + MenuNames[Choice - 1] + "   ( " + UserCode + " ) " + CAbc.CRLF);
                if (!SaveHistory(Mode, Choice))
                {
                    Err.Print("Ошибка сохранения на сервере истории работы программы !");
                }
                switch (MenuKinds[Choice - 1].Trim().ToUpper())
                {
                case    "EXE.COPY": {
                    Result = StartExeCopy(
                        MacroSubstitution(MenuCommands[Choice - 1])
                        , MacroSubstitution(
                            DateSubstitution(
                                MenuParams[Choice - 1]
                                )
                            )
                        );
                    break;
                }

                case    "SQL.CMD": {
                    Result = StartSqlCmd(
                        DateSubstitution(
                            MenuCommands[Choice - 1]
                            )
                        );
                    break;
                }

                case    "SQL.RS": {
                    Result = StartSqlRS(
                        DateSubstitution(
                            MenuCommands[Choice - 1]
                            )
                        );
                    break;
                }

                case    "SQL.ROUTINE": {
                    Result = StartSqlRoutine(
                        DateSubstitution(
                            MenuCommands[Choice - 1]
                            )
                        );
                    break;
                }

                case    "EXC": {
                    Result = StartExc(ScroogeDir
                                      , MacroSubstitution(
                                          DateSubstitution(
                                              MenuCommands[Choice - 1]
                                              )
                                          )
                                      );
                    break;
                }

                case    "URL.IE": {
                    Result = StartUrl(
                        DateSubstitution(
                            MenuCommands[Choice - 1]
                            )
                        );
                    break;
                }

                default: {
                    break;
                }
                }
                Err.Print(CCommon.Now().ToString() + "\t " + MenuNames[Choice - 1] + "   ( " + Result.ToString() + " ) > " + CAbc.CRLF);
            }
        } while (Choice != 0);
    }
    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