예제 #1
0
    public override string TodayDir()
    {
        string TmpS = CCommon.DtoC(Erc_Date);

        TmpS = TmpS.Substring(6, 2) + TmpS.Substring(4, 2) + TmpS.Substring(2, 2);
        return(CfgFile["SalaryDir"] + "\\" + TmpS + "\\");
    }
예제 #2
0
파일: cGateErc.cs 프로젝트: shkumat/MyTypes
        public virtual string TodayDir()
        {
            string TmpS = CCommon.DtoC(Erc_Date);

            TmpS = TmpS.Substring(6, 2) + TmpS.Substring(4, 2) + TmpS.Substring(2, 2);
            return(CfgFile["DaysDir"] + "\\" + TmpS + "\\");
        }
예제 #3
0
    // Kinds - типы полей:
    //	-1 = редактируемое, обязательное для заполнения;
    //	-2 = постоянное, нередактируемое;
    //	-3 = номер документа;
    //	-4 = редактируемое, необязтельное для заполнения;
    //	иначе - номер столбца из вход. данных.
    //
    public CSepAModel()
    {
        string DateStr = CCommon.DtoC(CCommon.Today()).Substring(2, 6);
        string TimeStr = CCommon.Hour(CCommon.Now()).ToString("00") + CCommon.Minute(CCommon.Now()).ToString("00") + CCommon.Second(CCommon.Now()).ToString("00");

        try {
            NumberDoc += CCommon.CLng(TimeStr) * 1000;
        } catch (System.Exception Excpt) {
            NumberDoc = 1;
        }
        Kinds[CSepAFileInfo.L_DEBITMFO]      = -1;    Values[CSepAFileInfo.L_DEBITMFO] = "351629";       Infos[CSepAFileInfo.L_DEBITMFO] = "МФО   Дб. сч.";       Aliases[CSepAFileInfo.L_DEBITMFO] = "MFOA_Text";
        Kinds[CSepAFileInfo.L_DEBITACC]      = -1;    Values[CSepAFileInfo.L_DEBITACC] = "";       Infos[CSepAFileInfo.L_DEBITACC] = "Номер Дб. сч.";       Aliases[CSepAFileInfo.L_DEBITACC] = "AccountA_Text";
        Kinds[CSepAFileInfo.L_CREDITMFO]     = -1;    Values[CSepAFileInfo.L_CREDITMFO] = "351629";       Infos[CSepAFileInfo.L_CREDITMFO] = "МФО   Кт. сч.";       Aliases[CSepAFileInfo.L_CREDITMFO] = "MFOCl3_Text";
        Kinds[CSepAFileInfo.L_CREDITACC]     = -1;    Values[CSepAFileInfo.L_CREDITACC] = "";       Infos[CSepAFileInfo.L_CREDITACC] = "Номер Кт. сч.";       Aliases[CSepAFileInfo.L_CREDITACC] = "AccCl3_Text";
        Kinds[CSepAFileInfo.L_FLAG]          = -2;    Values[CSepAFileInfo.L_FLAG] = "1";       Infos[CSepAFileInfo.L_FLAG] = null;       Aliases[CSepAFileInfo.L_FLAG] = "";
        Kinds[CSepAFileInfo.L_SUMA]          = -1;    Values[CSepAFileInfo.L_SUMA] = "";       Infos[CSepAFileInfo.L_SUMA] = "Сумма ";       Aliases[CSepAFileInfo.L_SUMA] = "";
        Kinds[CSepAFileInfo.L_DTYPE]         = -2;    Values[CSepAFileInfo.L_DTYPE] = "1";       Infos[CSepAFileInfo.L_DTYPE] = null;       Aliases[CSepAFileInfo.L_DTYPE] = "";
        Kinds[CSepAFileInfo.L_NDOC]          = -3;    Values[CSepAFileInfo.L_NDOC] = "";       Infos[CSepAFileInfo.L_NDOC] = null;       Aliases[CSepAFileInfo.L_NDOC] = "";
        Kinds[CSepAFileInfo.L_CURRENCY]      = -1;    Values[CSepAFileInfo.L_CURRENCY] = "980";       Infos[CSepAFileInfo.L_CURRENCY] = "Числовой код валюты";  Aliases[CSepAFileInfo.L_CURRENCY] = "";
        Kinds[CSepAFileInfo.L_DATE1]         = -2;    Values[CSepAFileInfo.L_DATE1] = DateStr;       Infos[CSepAFileInfo.L_DATE1] = null;       Aliases[CSepAFileInfo.L_DATE1] = "";
        Kinds[CSepAFileInfo.L_DATE2]         = -2;    Values[CSepAFileInfo.L_DATE2] = DateStr;       Infos[CSepAFileInfo.L_DATE2] = null;       Aliases[CSepAFileInfo.L_DATE2] = "";
        Kinds[CSepAFileInfo.L_DEBITNAME]     = -1;    Values[CSepAFileInfo.L_DEBITNAME] = "АТ \"МЕГАБАНК\""; Infos[CSepAFileInfo.L_DEBITNAME] = "Название Дб. сч.";     Aliases[CSepAFileInfo.L_DEBITNAME] = "AName_Text";
        Kinds[CSepAFileInfo.L_CREDITNAME]    = -1;    Values[CSepAFileInfo.L_CREDITNAME] = "";       Infos[CSepAFileInfo.L_CREDITNAME] = "Название Кт. сч.";     Aliases[CSepAFileInfo.L_CREDITNAME] = "NameCl3_Text";
        Kinds[CSepAFileInfo.L_PURPOSE]       = -1;    Values[CSepAFileInfo.L_PURPOSE] = "";       Infos[CSepAFileInfo.L_PURPOSE] = "Назначение платежа";   Aliases[CSepAFileInfo.L_PURPOSE] = "Argument_Text";
        Kinds[CSepAFileInfo.L_RESERVED1]     = -2;    Values[CSepAFileInfo.L_RESERVED1] = "";       Infos[CSepAFileInfo.L_RESERVED1] = null;       Aliases[CSepAFileInfo.L_RESERVED1] = "";
        Kinds[CSepAFileInfo.L_DEBITACC_EXT]  = -2;    Values[CSepAFileInfo.L_DEBITACC_EXT] = "";       Infos[CSepAFileInfo.L_DEBITACC_EXT] = null;       Aliases[CSepAFileInfo.L_DEBITACC_EXT] = "";
        Kinds[CSepAFileInfo.L_CREDITACC_EXT] = -2;    Values[CSepAFileInfo.L_CREDITACC_EXT] = "";       Infos[CSepAFileInfo.L_CREDITACC_EXT] = null;       Aliases[CSepAFileInfo.L_CREDITACC_EXT] = "";
        Kinds[CSepAFileInfo.L_SYMBOL]        = -4;    Values[CSepAFileInfo.L_SYMBOL] = "";       Infos[CSepAFileInfo.L_SYMBOL] = "Кассовый символ";      Aliases[CSepAFileInfo.L_SYMBOL] = "";
        Kinds[CSepAFileInfo.L_RESERVED2]     = -2;    Values[CSepAFileInfo.L_RESERVED2] = "";       Infos[CSepAFileInfo.L_RESERVED2] = null;       Aliases[CSepAFileInfo.L_RESERVED2] = "";
        Kinds[CSepAFileInfo.L_OKPO1]         = -1;    Values[CSepAFileInfo.L_OKPO1] = "09804119";     Infos[CSepAFileInfo.L_OKPO1] = "Идент код Дб. сч.";    Aliases[CSepAFileInfo.L_OKPO1] = "OKPOA_Text";
        Kinds[CSepAFileInfo.L_OKPO2]         = -1;    Values[CSepAFileInfo.L_OKPO2] = "";       Infos[CSepAFileInfo.L_OKPO2] = "Идент код Кт. сч.";    Aliases[CSepAFileInfo.L_OKPO2] = "OKPOCl3_Text";
        Kinds[CSepAFileInfo.L_ID]            = -3;    Values[CSepAFileInfo.L_ID] = "";       Infos[CSepAFileInfo.L_ID] = null;       Aliases[CSepAFileInfo.L_ID] = "";
        Kinds[CSepAFileInfo.L_RESERVED3]     = -2;    Values[CSepAFileInfo.L_RESERVED3] = "";       Infos[CSepAFileInfo.L_RESERVED3] = null;       Aliases[CSepAFileInfo.L_RESERVED3] = "";
        Kinds[CSepAFileInfo.L_DES]           = -2;    Values[CSepAFileInfo.L_DES] = "";       Infos[CSepAFileInfo.L_DES] = null;       Aliases[CSepAFileInfo.L_DES] = "";
        Kinds[CSepAFileInfo.L_DEBITIBAN]     = -4;    Values[CSepAFileInfo.L_DEBITIBAN] = "";       Infos[CSepAFileInfo.L_DEBITIBAN] = "IBAN Дб.сч.";       Aliases[CSepAFileInfo.L_DEBITIBAN] = "";
        Kinds[CSepAFileInfo.L_CREDITIBAN]    = -4;    Values[CSepAFileInfo.L_CREDITIBAN] = "";       Infos[CSepAFileInfo.L_CREDITIBAN] = "IBAN Кт.сч.";       Aliases[CSepAFileInfo.L_CREDITIBAN] = "";
        Kinds[CSepAFileInfo.L_RESERVED4]     = -2;    Values[CSepAFileInfo.L_RESERVED4] = "";       Infos[CSepAFileInfo.L_RESERVED4] = null;       Aliases[CSepAFileInfo.L_RESERVED4] = "";
        Kinds[CSepAFileInfo.L_CRLF]          = -2;    Values[CSepAFileInfo.L_CRLF] = CAbc.CRLF;      Infos[CSepAFileInfo.L_CRLF] = null;       Aliases[CSepAFileInfo.L_CRLF] = "";
    }
예제 #4
0
    //-----------------------------------------------------------------------------------------
    //	основная программа
    public static void Main()
    {
        const bool DEBUG       = false;
        const int  MAX_COLUMNS = 299;                                           // максимальное количество столбцов

        int[]       ColWidth = new   int[MAX_COLUMNS];                          // ширины столбцов
        int         ColNumber = 0;
        int         ALineNumber = 0;
        int         AFieldNumber = 0;
        string      AFileName = "";
        string      ModelFileName = CCommon.GetTempDir() + "\\" + "AMaker.mod";
        string      Now_Date_Str = CCommon.DtoC(CCommon.Today()).Substring(2, 6);
        string      Now_Time_Str = CCommon.Hour(CCommon.Now()).ToString("00") + CCommon.Minute(CCommon.Now()).ToString("00");
        CTsvWriter  TsvWriter = new   CTsvWriter();
        CTextReader TextReader = new   CTextReader();
        string      TsvFileName = "$";
        string      InpFileName = "";
        int         InpColCount = 0;
        int         I, SourceMode = -2;                                         // откуда читать данные : 0=ClipBoard , 1=CSV , 2=DIF
        string      Tmps = "";

        string[] SubTmps;
        //----------------------------------------------------------
        CCommon.Print("  Программа для cоздания А-файлов с платежами на основе форматных данных,");
        CCommon.Print("  полученных из электронной таблицы (CVS/DIF). Версия 2.03 от 17.09.2019г.");
        if (DEBUG)
        {
            InpFileName = "F:\\Trash\\Kazna1.csv";
        }
        else
        if (CCommon.ParamCount() < 2)
        {
            CCommon.Print("");
            CCommon.Print(" Формат запуска : ");
            CCommon.Print("      AMaker3    Имя_файла  ");
            CCommon.Print(" где : ");
            CCommon.Print("      Имя_файла  - имя файла данных в формате CSV или DIF ");
            CCommon.Print("");
            return;
        }
        else
        {
            InpFileName = CAbc.ParamStr[1].Trim();
        }

        if (InpFileName == "*")
        {
            SourceMode = 0;
        }
        else
        {
            switch (CCommon.GetExtension(InpFileName).ToUpper())
            {
            case    ".CSV": {
                SourceMode = 1;
                break;
            }

            case    ".DIF": {
                SourceMode = 2;
                break;
            }

            case    ".MOD": {
                SourceMode = -1;
                break;
            }

            default: {
                CCommon.Print("Неправильный тип файла !");
                SourceMode = -2;
                break;
            }
            }
        }
        //----------------------------------------------------------
        // если выбран файл с шаблоном, то выводим его на экран
        if (SourceMode == -1)
        {
            if (AModel.LoadFromFile(InpFileName))
            {
                AModel.PrintConstValues();
                if (CConsole.GetBoxChoice("Использовать теперь этот шаблон ?", " Да = Enter . Нет = Esc ."))
                {
                    if (CCommon.FileExists(ModelFileName))
                    {
                        CCommon.DeleteFile(ModelFileName);
                    }
                    if (CCommon.FileExists(ModelFileName))
                    {
                        CCommon.Print("Ошибка удаления файла " + ModelFileName);
                    }
                    else if (!CCommon.CopyFile(InpFileName, ModelFileName))
                    {
                        CCommon.Print("Ошибка записи файла  " + ModelFileName);
                    }
                    return;
                }
            }
        }
        else
        if (CCommon.FileExists(ModelFileName))
        {
            AModel.LoadFromFile(ModelFileName);
        }
        if ((SourceMode < 0) || (SourceMode > 2))
        {
            CCommon.Print("Неправильная строка параметров !");
            return;
        }
        //----------------------------------------------------------
        // скидываем информацию в промежуточный Tsv-файл
        TsvFileName = CCommon.GetTempName();
        if (TsvFileName == null)
        {
            TsvFileName = InpFileName + ".$$$";
        }
        else if (TsvFileName.Trim() == "")
        {
            TsvFileName = InpFileName + ".$$$";
        }
        if (SourceMode == 0)
        {
            TsvWriter.LoadFromClipboard();
            if (!TsvWriter.SaveToFile(TsvFileName))
            {
                CCommon.Print("Ошибка записи в файл " + TsvFileName);
                return;
            }
        }
        if (SourceMode > 0)
        {
            if (!CCommon.FileExists(InpFileName))
            {
                CCommon.Print("Не найден файл " + InpFileName);
                return;
            }
        }
        if (SourceMode == 1)
        {
            if (TsvWriter.LoadFromCsvFile(InpFileName))
            {
                if (!TsvWriter.SaveToFile(TsvFileName))
                {
                    CCommon.Print("Ошибка записи в файл " + TsvFileName);
                    return;
                }
            }
            else
            {
                CCommon.Print("Ошибка чтения файла " + InpFileName);
                return;
            }
        }
        if (SourceMode == 2)
        {
            if (TsvWriter.LoadFromDifFile(InpFileName))
            {
                if (!TsvWriter.SaveToFile(TsvFileName))
                {
                    CCommon.Print("Ошибка записи в файл " + TsvFileName);
                    return;
                }
            }
            else
            {
                CCommon.Print("Ошибка чтения файла " + InpFileName);
                return;
            }
        }
        //----------------------------------------------------------
        // подсчитываем количество столбцов во входящем файле , а также ширину этих столбцов
        for (I = 0; I < MAX_COLUMNS; I++)
        {
            ColWidth[I] = 0;
        }
        for (I = 0; I < (MAX_LINES * MAX_FILES); I++)
        {
            Cents[I] = 0;
        }
        if (!TextReader.Open(TsvFileName, CAbc.CHARSET_WINDOWS))
        {
            CCommon.Print("Ошибка чтения файла" + TsvFileName);
            TsvFile.Close();
            CCommon.DeleteFile(TsvFileName);
            return;
        }
        if (!TextReader.Read())
        {
            CCommon.Print("Ошибка чтения файла" + TsvFileName);
            TsvFile.Close();
            CCommon.DeleteFile(TsvFileName);
            return;
        }
        for (I = 0; I < 20; I++)
        {
            Tmps    = TextReader.Value;
            SubTmps = Tmps.Split(CCommon.Chr(9));
            if (SubTmps != null)
            {
                if (SubTmps.Length > InpColCount)
                {
                    InpColCount = SubTmps.Length;
                }
                for (ColNumber = 0; ColNumber < SubTmps.Length; ColNumber++)
                {
                    if (SubTmps[ColNumber].Length > ColWidth[ColNumber])
                    {
                        ColWidth[ColNumber] = SubTmps[ColNumber].Length;
                    }
                }
            }
            else
            {
                InpColCount = 0;
            }
            if (!TextReader.Read())
            {
                break;
            }
        }
        TextReader.Close();
        if (InpColCount == 0)
        {
            CCommon.Print("Не получается распознать входные данные ");
            CCommon.DeleteFile(TsvFileName);
            return;
        }
        //----------------------------------------------------------
        // выводим столбцы на экран и запрос пользователю ( помним , что в Csv - файле нумерация столбцов начинается с 1 )
        CConsole.Clear();
        if (!TsvFile.Open(TsvFileName, CAbc.CHARSET_WINDOWS))
        {
            CCommon.Print("Ошибка чтения файла " + TsvFileName);
            return;
        }
        for (I = 0; I < (System.Console.WindowHeight - 1); I++)
        {
            if (!TsvFile.Read())
            {
                break;
            }
            Tmps = "";
            for (ColNumber = 0; ColNumber < InpColCount; ColNumber++)
            {
                Tmps += CCommon.Left(TsvFile[ColNumber + 1], ColWidth[ColNumber]) + "¦";
            }
            if (Tmps.Length > 0)
            {
                if (Tmps.Length < System.Console.WindowWidth - 1)
                {
                    CCommon.Print(Tmps);
                }
                else
                {
                    CCommon.Print(Tmps.Substring(0, System.Console.WindowWidth - 2));
                }
            }
        }
        TsvFile.Close();
        if (!CConsole.GetBoxChoice("Для продолжения обработки нажмите Enter.", "", "Для выхода нажмите Esc. "))
        {
            CCommon.DeleteFile(TsvFileName);
            return;
        }
        CConsole.Clear();
        //----------------------------------------------------------
        // распознавание столбцов во входящем файле ( помним , что в Csv - файле нумерация столбцов начинается с 1 )
        for (ColNumber = 0; ColNumber < InpColCount; ColNumber++)
        {
            CConsole.Clear();
            CCommon.Print("");
            if (!TsvFile.Open(TsvFileName, CAbc.CHARSET_WINDOWS))
            {
                CCommon.Print("Ошибка чтения файла " + TsvFileName);
                TsvFile.Close();
                CCommon.DeleteFile(TsvFileName);
                return;
            }
            for (I = 0; I < (System.Console.WindowHeight - 1); I++)
            {
                if (!TsvFile.Read())
                {
                    break;
                }
                else
                {
                    CCommon.Print(" " + TsvFile[ColNumber + 1]);
                }
            }
            TsvFile.Close();
            if (!AModel.RecognizeColumn(ColNumber + 1))
            {
                CCommon.DeleteFile(TsvFileName);
                return;
            }
        }
        CConsole.Clear();
        //----------------------------------------------------------
        // запрашиваем у пользователя значения постоянных полей
        AModel.AskFixedValues();
        //----------------------------------------------------------
        // подсчитываем количество строк и общую сумму по входному файлу
        TotalLines = 0;
        TotalCents = 0;
        if (!TsvFile.Open(TsvFileName, CAbc.CHARSET_WINDOWS))
        {
            CCommon.Print("Ошибка чтения файла " + TsvFileName);
            TsvFile.Close();
            CCommon.DeleteFile(TsvFileName);
            return;
        }
        while (TsvFile.Read())
        {
            if (IsLineEmpty())
            {
                continue;
            }
            Cents[TotalLines] = CCommon.CLng(GetColValue(CSepAFileInfo.L_SUMA).Trim());
            TotalCents       += Cents[TotalLines];
            TotalLines++;
        }
        TsvFile.Close();
        //-----------------------------------------------------------
        // запрашиваем у пользователя имя файла , в который будет записан результат
        string ShortName = ConstPartOfName;

        CCommon.Write("Краткое имя результирующего файла ( " + ShortName + " ) : ");
        ShortName = CCommon.Input().Trim();
        if (ShortName.Length > 0)
        {
            ConstPartOfName = CCommon.Left(ShortName, 8);
        }
        //-----------------------------------------------------------
        // сверяем с пользователем общее количество строк и общую сумму
        if (!CConsole.GetBoxChoice(" Всего строк : " + CCommon.Right(TotalLines.ToString(), 11)
                                   , " Общая сумма : " + CCommon.StrN(TotalBucks, 11).Replace(",", ".")
                                   , "_________________________________"
                                   , "Для продолжения нажмите Enter."
                                   , "Для выхода - Esc. "
                                   )
            )
        {
            CCommon.DeleteFile(TsvFileName);
            return;
        }
        CConsole.Clear();
        //-----------------------------------------------------------
        // записываем результатов работы программы в файлы
        if (!TsvFile.Open(TsvFileName, CAbc.CHARSET_WINDOWS))
        {
            CCommon.Print("Ошибка чтения файла " + TsvFileName);
            TsvFile.Close();
            CCommon.DeleteFile(TsvFileName);
            return;
        }
        BatchNum = 0;
        //
        while (TotalLines > 0)
        {
            AFileName = GetAFileName();
            if (!AFile.Create(AFileName, CAbc.CHARSET_DOS))
            {
                CCommon.Print("Ошибка создания файла " + AFileName);
                break;
            }
            else
            {
                CCommon.Print(AFileName);
            }
            //
            AFile.Head[CSepAFileInfo.H_EMPTYSTR]      = "";
            AFile.Head[CSepAFileInfo.H_CRLF1]         = CAbc.CRLF;
            AFile.Head[CSepAFileInfo.H_FILENAME]      = CCommon.Left(AFileName, 12);
            AFile.Head[CSepAFileInfo.H_DATE]          = Now_Date_Str;
            AFile.Head[CSepAFileInfo.H_TIME]          = Now_Time_Str;
            AFile.Head[CSepAFileInfo.H_STRCOUNT]      = TotalLinesInBatch().ToString();
            AFile.Head[CSepAFileInfo.H_TOTALDEBET]    = "0";
            AFile.Head[CSepAFileInfo.H_TOTALCREDIT]   = TotalCentsInBatch().ToString();
            AFile.Head[CSepAFileInfo.H_DES]           = "0";
            AFile.Head[CSepAFileInfo.H_DES_ID]        = "UIAB00";
            AFile.Head[CSepAFileInfo.H_DES_OF_HEADER] = "";
            AFile.Head[CSepAFileInfo.H_CRLF2]         = CAbc.CRLF;
            //
            if (!AFile.WriteHeader())
            {
                CCommon.Print("Ошибка записи файла " + AFileName);
                AFile.Close();
                break;
            }
            //
            for (ALineNumber = 0; ALineNumber < TotalLinesInBatch(); ALineNumber++)
            {
                do
                {
                    if (!TsvFile.Read())
                    {
                        break;
                    }
                }while   (IsLineEmpty());
                for (AFieldNumber = 0; AFieldNumber < AModel.TotalFields; AFieldNumber++)
                {
                    AFile.Line[AFieldNumber] = GetColValue(AFieldNumber);
                }
                if (!AFile.WriteLine())
                {
                    CCommon.Print("Ошибка записи файла " + AFileName);
                    break;
                }
                AModel.IncNumber();
            }
            AFile.Close();
            BatchNum++;
            TotalLines -= TotalLinesInBatch();
        }
        TsvFile.Close();
        CCommon.DeleteFile(TsvFileName);
    }
예제 #5
0
    public override string TodayDir()
    {
        string TmpS = CCommon.DtoC(Erc_Date);

        return(CfgFile["DaysDir"] + "\\" + TmpS.Substring(2, 6) + "\\");
    }
예제 #6
0
    public static bool    WriteBFiles(int DayDate, string DestinationFolder)
    {
        if (DestinationFolder == null)
        {
            return(false);
        }

        int        FileId;
        CRecordSet Data_Line   = new CRecordSet(Connection1);
        CRecordSet Data_Header = new CRecordSet(Connection2);
        string     DebitAcc, CreditAcc
        , CmdText = "exec pMega_OpenGate_Export;2 @TaskCode = 'ErcGate' "
                    + ", @Date=" + DayDate.ToString()
                    + ", @SeansNum=" + BFileNum.ToString()
                    + ", @FileName=''";

        if (Data_Header.Open(CmdText))
        {
            while (Data_Header.Read())
            {
                FileId = CCommon.CInt32(Data_Header["FileId"]);

                if (Data_Line.Open("exec dbo.pMega_OpenGate_Export;3 @FileId=" + FileId.ToString()))
                {
                    if (BFile.Create(DestinationFolder + "\\" + Data_Header["FileName"].Trim(), CAbc.CHARSET_DOS))
                    {
                        BFile.Head[CSepAFileInfo.H_EMPTYSTR]      = "";                                                         // char[100]  // Пеpвые 100 - пpобелы
                        BFile.Head[CSepAFileInfo.H_CRLF1]         = CAbc.CRLF;                                                  // char[  2]; // Символ концец строки
                        BFile.Head[CSepAFileInfo.H_FILENAME]      = Data_Header["FileName"].Trim();                             // char[ 12]; // Наименование  файла
                        BFile.Head[CSepAFileInfo.H_DATE]          = Now_Date_Str;                                               // char[  6]; // Дата создания файла
                        BFile.Head[CSepAFileInfo.H_TIME]          = Now_Time_Str;                                               // char[  4]; // Дата создания файла
                        BFile.Head[CSepAFileInfo.H_STRCOUNT]      = Data_Header["TotalLines"].Trim();                           // char[  6]; // Количество ИС в файле
                        BFile.Head[CSepAFileInfo.H_TOTALDEBET]    = "0";                                                        // char[ 16]; // Сумма дебета по файлу
                        BFile.Head[CSepAFileInfo.H_TOTALCREDIT]   = Data_Header["TotalCents"].Trim();                           // char[ 16]; // Сумма кpедита по файлу
                        BFile.Head[CSepAFileInfo.H_DES]           = Md5.GetHash(BFile.GetHeader().Substring(102, 60));          // char[ 64]; // ЕЦП
                        BFile.Head[CSepAFileInfo.H_DES_ID]        = "UIAB00";                                                   // char[  6]; // ID ключа ЕЦП
                        BFile.Head[CSepAFileInfo.H_DES_OF_HEADER] = "";                                                         // char[ 64]; // ЕЦП заголовка
                        BFile.Head[CSepAFileInfo.H_CRLF2]         = CAbc.CRLF;                                                  // char[  2]; // Символ конец строки

                        if (!BFile.WriteHeader())
                        {
                            Data_Header.Close();
                            Data_Line.Close();
                            BFile.Close();
                            return(false);
                        }

                        while (Data_Line.Read())
                        {
                            DebitAcc  = Data_Line["DebitAcc"].Trim();
                            CreditAcc = Data_Line["CreditAcc"].Trim();
                            BFile.Line[CSepAFileInfo.L_DEBITMFO]      = Data_Line["DebitMfo"].Trim();                                                           // char[  9]; // Дебет-МФО
                            BFile.Line[CSepAFileInfo.L_DEBITACC]      = DebitAcc;                                                                               // char[ 14]; // Дебет-счет
                            BFile.Line[CSepAFileInfo.L_DEBITACC_EXT]  = (DebitAcc.Length > 14 ? DebitAcc : "");                                                 // char[ 20]; // Расширенный Дебет-счет
                            BFile.Line[CSepAFileInfo.L_DEBITIBAN]     = Data_Line["DebitIBAN"].Trim();                                                          // char[ 34]; // Дебет-IBAN
                            BFile.Line[CSepAFileInfo.L_OKPO1]         = Data_Line["DebitState"].Trim();                                                         // char[ 14]; // Идент.код клиента А
                            BFile.Line[CSepAFileInfo.L_DEBITNAME]     = Data_Line["DebitName"].Trim().Replace("?", "i");                                        // char[ 38]; // Наименование дебет-счета
                            BFile.Line[CSepAFileInfo.L_CREDITMFO]     = Data_Line["CreditMfo"].Trim();                                                          // char[  9]; // Кредит-МФО
                            BFile.Line[CSepAFileInfo.L_CREDITACC]     = CreditAcc;                                                                              // char[ 14]; // Кредит счет
                            BFile.Line[CSepAFileInfo.L_CREDITACC_EXT] = (CreditAcc.Length > 14 ? CreditAcc : "");                                               // char[ 20]; // Расширенный Кредит счет
                            BFile.Line[CSepAFileInfo.L_OKPO2]         = Data_Line["CreditState"].Trim();                                                        // char[ 14]; // Идент.код клиента Б
                            BFile.Line[CSepAFileInfo.L_CREDITIBAN]    = Data_Line["CreditIBAN"].Trim();                                                         // char[ 34]; // Кредит-IBAN
                            BFile.Line[CSepAFileInfo.L_CREDITNAME]    = Data_Line["CreditName"].Trim().Replace("?", "i");                                       // char[ 38]; // Наименование кредит-счета
                            BFile.Line[CSepAFileInfo.L_FLAG]          = "1";                                                                                    // char[  1]; // Флаг `дебет/кредит`
                            BFile.Line[CSepAFileInfo.L_SUMA]          = Data_Line["Cents"].Trim();                                                              // char[ 16]; // Сумма в копейках
                            BFile.Line[CSepAFileInfo.L_DTYPE]         = "6";                                                                                    // char[  2]; // Вид документа
                            BFile.Line[CSepAFileInfo.L_NDOC]          = Data_Line["Code"].Trim();                                                               // char[ 10]; // Номер документа
                            BFile.Line[CSepAFileInfo.L_CURRENCY]      = Data_Line["CurrencyId"].Trim();                                                         // char[  3]; // Валюта
                            BFile.Line[CSepAFileInfo.L_DATE1]         = CCommon.DtoC(CCommon.CInt32(Data_Line["DayDate"].Trim())).Substring(2, 6);              // char[  6]; Дата платежа
                            BFile.Line[CSepAFileInfo.L_DATE2]         = CCommon.DtoC(CCommon.CInt32(Data_Line["OrgDate"].Trim())).Substring(2, 6);              // char[  6]; Дата пуступления документа
                            BFile.Line[CSepAFileInfo.L_PURPOSE]       = Data_Line["Purpose"].Trim().Replace("?", "i");                                          // char[160]; // Назначение платежа
                            BFile.Line[CSepAFileInfo.L_SYMBOL]        = Data_Line["Ctrls"].Trim();                                                              // char[  3]; // Кассовый символ
                            BFile.Line[CSepAFileInfo.L_ID]            = Data_Line["TransferId"].Trim();                                                         // char[  9]; // Идентификатор документа
                            BFile.Line[CSepAFileInfo.L_DES]           = Md5.GetHash(BFile.GetFullLine().Substring(0, 444));                                     // char[ 64]; // ЕЦП
                            BFile.Line[CSepAFileInfo.L_CRLF]          = CAbc.CRLF;                                                                              // char[  2]; // Символ `конец строки`

                            if (!BFile.WriteLine())
                            {
                                Data_Header.Close();
                                Data_Line.Close();
                                BFile.Close();
                                return(false);
                            }
                        }
                    }
                    BFile.Close();
                }
            }
            Data_Line.Close();
        }
        Data_Header.Close();
        return(true);
    }
예제 #7
0
    public static bool    WriteVFiles(int DayDate, string DestinationFolder, int VMode)
    {
        CSepVWriter A         = new   CSepVWriter();
        string      File_Name = "!"
                                + (VMode == 0 ? "V" : "W")
                                + "UUIA"
                                + CCommon.StrY(CCommon.Month(DayDate), 1)
                                + CCommon.StrY(CCommon.Day(DayDate), 1)
                                + "."
                                + CCommon.Right("0" + CCommon.Hour(CCommon.Clock()), 2)
                                + CCommon.StrY(CCommon.Minute(CCommon.Clock()) >> 1, 1);

        if (!A.Create(DestinationFolder + "\\" + File_Name, CAbc.CHARSET_DOS))
        {
            return(false);
        }

        CRecordSet Data = new CRecordSet(Connection1);

        if (Data.Open("exec  dbo.pMega_OpenGate_Report;3   @TaskCode='ErcGate', @DateFrom = " + DayDate.ToString() + " , @Mode = " + VMode.ToString()))
        {
            if (!Data.Read())
            {
                A.Head[CSepVFileInfo.H_EMPTYSTR]    = "";                                                       // char[100]  // Пеpвые 100 - пpобелы
                A.Head[CSepVFileInfo.H_CRLF1]       = CAbc.CRLF;                                                // char[  2]; // Символ концец строки
                A.Head[CSepVFileInfo.H_FILENAME]    = CCommon.Left(File_Name.Trim(), 12);                       // char[ 12]; // Наименование  файла
                A.Head[CSepVFileInfo.H_DATE]        = Now_Date_Str;                                             // char[  6]; // Дата создания файла
                A.Head[CSepVFileInfo.H_TIME]        = Now_Time_Str;                                             // char[  4]; // Дата создания файла
                A.Head[CSepVFileInfo.H_STRCOUNT]    = "0";                                                      // char[  6]; // Количество ИС в файле
                A.Head[CSepVFileInfo.H_TOTALDEBET]  = "0";                                                      // char[ 16]; // Сумма дебета по файлу
                A.Head[CSepVFileInfo.H_TOTALCREDIT] = "0";                                                      // char[ 16]; // Сумма кpедита по файлу
                A.Head[CSepVFileInfo.H_EMPTYSTR2]   = "";                                                       // char[ 64]; // Пустое пространство
                A.Head[CSepVFileInfo.H_CRLF2]       = CAbc.CRLF;                                                // char[  2]; // Символ конец строки
                if (!A.WriteHeader())
                {
                    Data.Close();
                    A.Close();
                    return(false);
                }
            }
            else
            {
                A.Head[CSepVFileInfo.H_EMPTYSTR]    = "";                                                       // char[100]  // Пеpвые 100 - пpобелы
                A.Head[CSepVFileInfo.H_CRLF1]       = CAbc.CRLF;                                                // char[  2]; // Символ концец строки
                A.Head[CSepVFileInfo.H_FILENAME]    = CCommon.Left(File_Name.Trim(), 12);                       // char[ 12]; // Наименование  файла
                A.Head[CSepVFileInfo.H_DATE]        = Now_Date_Str;                                             // char[  6]; // Дата создания файла
                A.Head[CSepVFileInfo.H_TIME]        = Now_Time_Str;                                             // char[  4]; // Дата создания файла
                A.Head[CSepVFileInfo.H_STRCOUNT]    = Data["TotalLines"].Trim();                                // char[  6]; // Количество ИС в файле
                A.Head[CSepVFileInfo.H_TOTALDEBET]  = "0";                                                      // char[ 16]; // Сумма дебета по файлу
                A.Head[CSepVFileInfo.H_TOTALCREDIT] = Data["TotalCents"].Trim();                                // char[ 16]; // Сумма кpедита по файлу
                A.Head[CSepVFileInfo.H_EMPTYSTR2]   = "";                                                       // char[ 64]; // Пустое пространство
                A.Head[CSepVFileInfo.H_CRLF2]       = CAbc.CRLF;                                                // char[  2]; // Символ конец строки
                if (!A.WriteHeader())
                {
                    Data.Close();
                    A.Close();
                    return(false);
                }
                do
                {
                    A.Line[CSepVFileInfo.L_DEBITMFO]  = Data["SourceCode"].Trim();                                              // char[  9]; // Дебет-МФО
                    A.Line[CSepVFileInfo.L_DEBITACC]  = Data["DebitMoniker"].Trim();                                            // char[ 14]; // Дебет-счет
                    A.Line[CSepVFileInfo.L_CREDITMFO] = Data["TargetCode"].Trim();                                              // char[  9]; // Кредит-МФО
                    A.Line[CSepVFileInfo.L_CREDITACC] = Data["CreditMoniker"].Trim();                                           // char[ 14]; // Кредит счет
                    A.Line[CSepVFileInfo.L_FLAG]      = "1";                                                                    // char[  1]; // Флаг `дебет/кредит`
                    A.Line[CSepVFileInfo.L_SUMA]      = Data["CrncyCents"].Trim();                                              // char[ 16]; // Сумма в копейках
                    A.Line[CSepVFileInfo.L_DTYPE]     = Data["Kind"].Trim();                                                    // char[  2]; // Вид документа
                    A.Line[CSepVFileInfo.L_NDOC]      = Data["DocNum"].Trim();                                                  // char[ 10]; // Номер документа
                    A.Line[CSepVFileInfo.L_CURRENCY]  = Data["CurrencyId"].Trim();                                              // char[  3]; // Валюта
                    A.Line[CSepVFileInfo.L_DATE1]     = CCommon.DtoC(CCommon.CInt32(Data["DayDate"].Trim())).Substring(2, 6);   // char[  6]; // Дата платежа
                    A.Line[CSepVFileInfo.L_ID]        = Data["Id"].Trim();                                                      // char[  9]; // Идентификатор документа
                    A.Line[CSepVFileInfo.L_FILENAME1] = Data["FileName"].Trim();                                                // char[ 12]; // Имя файла N 1
                    A.Line[CSepVFileInfo.L_LINENUM1]  = Data["LineNum"].Trim();                                                 // char[  6]; // Номер строки в файле N 1
                    A.Line[CSepVFileInfo.L_FILENAME2] = Data["FileName"].Trim();                                                // char[ 12]; // Имя файла N 2
                    A.Line[CSepVFileInfo.L_LINENUM2]  = Data["LineNum"].Trim();                                                 // char[  6]; // Номер строки в файле N 2
                    A.Line[CSepVFileInfo.L_STATUS]    = (((CCommon.CInt32(Data["ProcessFlag"].Trim()) & 3) == 3)  ? "Y" : "N"); // char[  1]; // Флаг квитовки платежа
                    A.Line[CSepVFileInfo.L_TIME]      = Now_Time_Str;                                                           // char[  4]; // Время
                    A.Line[CSepVFileInfo.L_NOL1]      = "0";                                                                    // char[  1]; //
                    A.Line[CSepVFileInfo.L_NOL2]      = "0";                                                                    // char[  1]; //
                    A.Line[CSepVFileInfo.L_CRLF]      = CAbc.CRLF;                                                              // char[  2]; // Символы конца строки
                    if (!A.WriteLine())
                    {
                        Data.Close();
                        A.Close();
                        return(false);
                    }
                }       while   (Data.Read());
            }
        }
        Data.Close();
        A.Close();
        return(true);
    }