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); }
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); }