Пример #1
0
        public bool ReportRegion(string reportType)
        {
            Dictionary <uint, string> agreements = new Dictionary <uint, string>();

            atolDriver.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_LAST_DOCUMENT);
            atolDriver.fnQueryData();
            uint lastDoc = atolDriver.getParamInt(Constants.LIBFPTR_PARAM_DOCUMENT_NUMBER);

            atolDriver.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_SHIFT);
            atolDriver.fnQueryData();
            uint docsInLine = atolDriver.getParamInt(Constants.LIBFPTR_PARAM_RECEIPT_NUMBER);

            uint firstDoc = lastDoc - docsInLine + 1;

            string[] FDData = CRM.GetFDData(firstDoc, reportType);

            if (FDData.Length <= 0 || FDData[0] == "ERR")
            {
                return(false);
            }
            else
            {
                for (int i = 1; i < FDData.Length; i++)
                {
                    if (String.IsNullOrEmpty(FDData[i]))
                    {
                        continue;
                    }

                    string[] fd = FDData[i].Split(':');
                    agreements.Add(uint.Parse(fd[0]), fd[1]);
                }
            }

            PrintLine(line: true);
            PrintLine("ОТЧЁТ до ЗАКРЫТИЯ СМЕНЫ");

            for (uint i = firstDoc; i <= lastDoc; i++)
            {
                atolDriver.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_DOCUMENT_BY_NUMBER);
                atolDriver.setParam(Constants.LIBFPTR_PARAM_DOCUMENT_NUMBER, i);
                atolDriver.fnQueryData();

                uint     documentType   = atolDriver.getParamInt(Constants.LIBFPTR_PARAM_FN_DOCUMENT_TYPE);
                uint     documentNumber = atolDriver.getParamInt(Constants.LIBFPTR_PARAM_DOCUMENT_NUMBER);
                DateTime dateTime       = atolDriver.getParamDateTime(Constants.LIBFPTR_PARAM_DATE_TIME);
                String   fiscalSign     = atolDriver.getParamString(Constants.LIBFPTR_PARAM_FISCAL_SIGN);

                double sum  = atolDriver.getParamDouble(1020);
                uint   type = atolDriver.getParamInt(1054);

                PrintLine(line: true);
                PrintLine("документ ФД: " + documentNumber.ToString());
                PrintLine("договор: " + (agreements.ContainsKey(documentNumber) ? agreements[documentNumber] : "не найден"));
                PrintLine("тип: " + (type == 1 ? "приход" : (type == 2 ? "возврат" : "ИНОЕ")));
                PrintLine("дата: " + dateTime.ToString());
                PrintLine("ФП: " + fiscalSign.ToString());
                PrintLine("сумма чека: " + (type == 2 ? "-" : "") + sum.ToString());
            }

            PrintLine(line: true);

            for (int i = 0; i < 10; i++)
            {
                PrintLine(" ");
            }

            atolDriver.cut();

            return(true);
        }
Пример #2
0
        public bool ReportRegion(string reportTypeString)
        {
            int reportType = Int32.Parse(reportTypeString);

            Dictionary <uint, string> agreements = new Dictionary <uint, string>();

            atolDriver.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_LAST_DOCUMENT);
            atolDriver.fnQueryData();
            uint lastDoc = atolDriver.getParamInt(Constants.LIBFPTR_PARAM_DOCUMENT_NUMBER);

            atolDriver.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_SHIFT);
            atolDriver.fnQueryData();
            uint docsInLine = atolDriver.getParamInt(Constants.LIBFPTR_PARAM_RECEIPT_NUMBER);

            uint firstDoc = lastDoc - docsInLine + 1;

            bool verySmall = false;

            if (reportType == 5)
            {
                reportType = 3;
                verySmall  = true;
            }

            string[] FDData = CRM.GetFDData(firstDoc, (reportType <= 2 ? reportType : (reportType - 2)));

            if (FDData.Length <= 0 || FDData[0] == "ERR")
            {
                return(false);
            }
            else
            {
                for (int i = 1; i < FDData.Length; i++)
                {
                    if (String.IsNullOrEmpty(FDData[i]))
                    {
                        continue;
                    }

                    string[] fd = FDData[i].Split(':');

                    if (fd.Length < 2)
                    {
                        return(false);
                    }

                    agreements.Add(uint.Parse(fd[0]), fd[1]);
                }
            }

            PrintLine(line: true);
            PrintLine("ОТЧЁТ до ЗАКРЫТИЯ СМЕНЫ");

            if (verySmall)
            {
                PrintLine(line: true);
                PrintLine("дата | время | чек | договор | сумма");
                PrintLine(line: true);
            }
            else if (reportType > 2)
            {
                PrintLine(line: true);
                PrintLine("дата | время | чек | ФП");
                PrintLine("договор | приход/возврат | сумма");
            }

            for (uint i = firstDoc; i <= lastDoc; i++)
            {
                atolDriver.setParam(Constants.LIBFPTR_PARAM_FN_DATA_TYPE, Constants.LIBFPTR_FNDT_DOCUMENT_BY_NUMBER);
                atolDriver.setParam(Constants.LIBFPTR_PARAM_DOCUMENT_NUMBER, i);
                atolDriver.fnQueryData();

                uint     documentType   = atolDriver.getParamInt(Constants.LIBFPTR_PARAM_FN_DOCUMENT_TYPE);
                uint     documentNumber = atolDriver.getParamInt(Constants.LIBFPTR_PARAM_DOCUMENT_NUMBER);
                DateTime dateTime       = atolDriver.getParamDateTime(Constants.LIBFPTR_PARAM_DATE_TIME);
                string   fiscalSign     = atolDriver.getParamString(Constants.LIBFPTR_PARAM_FISCAL_SIGN);

                double sum      = atolDriver.getParamDouble(1020);
                uint   type     = atolDriver.getParamInt(1054);
                string doc      = (agreements.ContainsKey(documentNumber) ? agreements[documentNumber] : "[не найден]");
                string typeLine = (type == 1 ? "приход" : (type == 2 ? "возврат" : "ИНОЕ"));

                if (verySmall)
                {
                    PrintGraphicLine(String.Format(
                                         "{0}.{1}.{2}   {3}:{4}   {5}   {6}   {7}   {8} р",
                                         dateTime.Day.ToString("D2"), dateTime.Month.ToString("D2"), dateTime.Year.ToString("D4"),
                                         dateTime.Hour.ToString("D2"), dateTime.Minute.ToString("D2"),
                                         documentNumber, DocNumber(doc), typeLine, (type == 2 ? "-" : String.Empty) + sum.ToString()
                                         ));
                }
                else if (reportType > 2)
                {
                    PrintLine(line: true);

                    PrintLine(String.Format(
                                  "{0}.{1} {2}:{3} {4} {5}",
                                  dateTime.Day, dateTime.Month, dateTime.Hour, dateTime.Minute, documentNumber, fiscalSign
                                  ));

                    PrintLine(String.Format(
                                  "{0} {1} {2} р", doc, typeLine, (type == 2 ? "-" : "") + sum.ToString()
                                  ));
                }
                else
                {
                    PrintLine(line: true);
                    PrintLine("документ ФД: " + documentNumber.ToString());
                    PrintLine("договор: " + doc);
                    PrintLine("тип: " + typeLine);
                    PrintLine("дата: " + dateTime.ToString());
                    PrintLine("ФП: " + fiscalSign.ToString());
                    PrintLine("сумма чека: " + (type == 2 ? "-" : "") + sum.ToString());
                }
            }

            PrintLine(line: true);

            for (int i = 0; i < 10; i++)
            {
                PrintLine(" ");
            }

            atolDriver.cut();

            if (verySmall)
            {
                CleanOldGraphicLine();
            }

            return(true);
        }