Esempio n. 1
0
        public void TotalEx(string text, int payMode, double sum)
        {
            char payName = MHelper.GetPayNameFromNumber(payMode);

            _datecsPort.SendCommand(Commands.PaymentAndCloseRecipt, text + '\t' + (payMode == 1 ? payName + sum : payName));
            string tmpString = MHelper.GetStringFromByteArray(_datecsPort.DataToHost);

            PropertiesUpdate(new List <string> {
                tmpString.Substring(0, 1), tmpString.Substring(1)
            });
            MHelper.WriteLog("TotalEx(string text, int payMode, double sum). Sum " + sum + ". Payment type - " + payName + ". Text - " + text);
            switch (s1)
            {
            case "F":
                ErrorPropertiesUpdate("Ошибка операции всего", 29);
                break;

            case "E":
                ErrorPropertiesUpdate("Ошибка операции всего. Вычисленная сумма орицательна", 30);
                break;

            case "D":
                ErrorPropertiesUpdate("Ошибка операции всего. Внесенной сумы недостаточно.", 31);
                break;

            case "R":
                ErrorPropertiesUpdate("Ошибка операции всего. Внесенная сумма больше чем сумма по чеку", 32);
                break;

            case "I":
                ErrorPropertiesUpdate("Ошибка операции всего. Сумма по некторым налоговым группам отрицательна", 33);
                break;
            }
        }
Esempio n. 2
0
 public void OpenPort(int portNum, int baudRate)
 {
     MHelper.WriteLog("Библиотека для РРО КБМ Групп" + "(Версия 1.0.0.3). 27 февраля 2017 года.");
     if (baudRate == 9600 || baudRate == 19200 || baudRate == 57600 || baudRate == 115200)
     {
         _datecsPort = Datecs.GetDatecsPrinterPort(portNum, baudRate);
     }
     else
     {
         ErrorPropertiesUpdate("Неверная скорость СОМ порта,  будет установлена 115200", 1);
         _datecsPort = Datecs.GetDatecsPrinterPort(portNum, 115200);
     }
     _datecsPort.EventHandlersAddRemove(UpdateDataEventHandler, ErrorPropertiesEventHandler, ErrorPropertiesEventHandler);
     _datecsPort.EventHandlersAddRemove(MHelper.DataUpdateHandler,
                                        MHelper.ErrorHandler, MHelper.StatusUpdateHandler);
     if (_datecsPort.PortOpen())
     {
         MHelper.WriteLog("Port COM" + portNum + " is opened");
         _datecsPort.SendCommand(Commands.DiagnosticInfo);
         if (s6.Length == 10)
         {
             if (!s6.StartsWith("КБ") && !s6.StartsWith("БМ"))
             {
                 ErrorPropertiesUpdate("Ошибка лицензии. Заводской номер должен начинаться с КБ или БМ.", 8);
                 ClosePort();
             }
         }
     }
 }
Esempio n. 3
0
 public void RegistrAndDisplayItemEx(int artNum, double quantity, double price, double percDisc, double sumDisc)
 {
     if (percDisc == 0.00 && sumDisc == 0.00)
     {
         _datecsPort.SendCommand(Commands.SalesRegister, "+" + artNum + "*" + quantity + "#" + price);
         MHelper.WriteLog("RegistrAndDisplayItemEx(int artNum, double quantity, double price, double percDisc, double sumDisc). PLU -  " +
                          artNum + ". Quantity - " + quantity);
     }
     else if (percDisc != 0.00 && sumDisc == 0.00)
     {
         _datecsPort.SendCommand(Commands.SalesRegister, "+" + artNum + "*" + quantity + "#" + price, percDisc.ToString());
         MHelper.WriteLog("RegistrAndDisplayItemEx(int artNum, double quantity, double price, double percDisc, double sumDisc). PLU -  " +
                          artNum + ". Quantity - " + quantity + ". Perc discount - " + percDisc);
     }
     else if (percDisc == 0.00 && sumDisc != 0.00)
     {
         _datecsPort.SendCommand(Commands.SalesRegister, "+" + artNum + "*" + quantity + "#" + price + ";" + sumDisc);
         MHelper.WriteLog("RegistrAndDisplayItemEx(int artNum, double quantity, double price, double percDisc, double sumDisc). PLU -  " +
                          artNum + ". Quantity - " + quantity + ". Sum discount - " + sumDisc);
     }
     else
     {
         ErrorPropertiesUpdate("Не правильные параметры функции", -1);
     }
 }
Esempio n. 4
0
        public void SetTaxName(int tax, string name)
        {
            string paymentType = string.Empty;

            switch (tax)
            {
            case 1:
                paymentType = "I";
                break;

            case 2:
                paymentType = "J";
                break;

            case 3:
                paymentType = "K";
                break;

            case 4:
                paymentType = "L";
                break;
            }
            _datecsPort.SendCommand(Commands.AdditionalPaymentType, paymentType, name);
            MHelper.WriteLog("SetTaxName(int tax, string name). Payment type = " + tax + ". Payment name = " + name);
        }
Esempio n. 5
0
        public void OpenNonfiscalReceipt()
        {
            _datecsPort.SendCommand(Commands.OpenNonFiscalReceipt);
            switch (s1)
            {
            case "1":
                ErrorPropertiesUpdate("Ошибка открытия нефискального чека. Фискальная память не форматирована", 25);
                break;

            case "2":
                ErrorPropertiesUpdate("Ошибка открытия нефискального чека. Открыт фискальный чек", 26);
                break;

            case "3":
                ErrorPropertiesUpdate("Ошибка открытия нефискального чека. Нефискальный чек уже открыт", 27);
                break;

            case "4":
                ErrorPropertiesUpdate("Ошибка открытия нефискального чека. Не установлены дата/время", 28);
                break;

            default:
                MHelper.WriteLog("OpenNonfiscalReceipt()");
                ErrorPropertiesUpdate(string.Empty, 0);
                break;
            }
        }
Esempio n. 6
0
 public void SetMulDecCurRF(string passwd, int dec, string enableTax, double taxA, double taxB, double taxC, double taxD)
 {
     _datecsPort.SendCommand(Commands.TaxSet, passwd, dec.ToString(), enableTax, taxA.ToString(), taxB.ToString(),
                             taxC.ToString(), taxD.ToString());
     MHelper.WriteLog("SetMulDecCurRF(string " + passwd + "," + "int " + dec + ",string" + enableTax + ", double" +
                      taxA + ", double" + taxB + ", double" + taxC + ", double" + taxD);
 }
Esempio n. 7
0
        private byte[] CommandFormation(string command, string data)
        {
            DataToPrinter = MHelper.GetByteArrayFromString(data);
            _seq++;
            if (_seq == MaxSeq)
            {
                _seq = MinSeq;
            }
            List <byte> commToPrinter = new List <byte>();
            byte        leng          = (byte)(0x04 + 0x20 + data.Length);

            commToPrinter.Add(Preamb);
            commToPrinter.Add(leng);
            commToPrinter.Add(_seq);
            commToPrinter.Add(MHelper.StringToByte(command));
            byte[] tempByte = MHelper.GetByteArrayFromString(data);
            commToPrinter.AddRange(tempByte);
            commToPrinter.Add(Enquiry);
            tempByte = CsCount(MHelper.ByteListToArray(commToPrinter));
            commToPrinter.AddRange(tempByte);
            commToPrinter.Add(Postamb);
            CommandToPrinter = MHelper.ByteListToArray(commToPrinter);

            return(CommandToPrinter);
        }
Esempio n. 8
0
        public void PerDiscTax(int taxGrp, double disc)
        {
            char taxName = MHelper.GetTaxNameFromNumber(taxGrp);

            _datecsPort.SendCommand(Commands.GroupTaxDiscount, "T" + taxName, "11", (-disc).ToString());
            MHelper.WriteLog("PerDiscTax(int group, double disc). By tax group - " + taxName + ". Value - " + disc);
        }
Esempio n. 9
0
 public void PrintNullCheck()
 {
     OpenFiscalReceipt(1, "0000", 1);
     PrintFiscalText("НУЛЕВОЙ ЧЕК");
     Total(string.Empty, 1, 0.00);
     CloseFiscalReceipt();
     MHelper.WriteLog("PrintNullCheck()");
 }
Esempio n. 10
0
        public void LastFiscalClosure(int param)
        {
            _datecsPort.SendCommand(Commands.LastFiscalClosureInfo, param > 1 || param < 0 ? "0" : param.ToString());
            List <string> tmpList = MHelper.GetStringListFromByteArray(_datecsPort.DataToHost);

            tmpList[0] = tmpList[0].Substring(1);
            PropertiesUpdate(tmpList);
            MHelper.WriteLog("LastFiscalClosure(int param). Param - " + param);
        }
Esempio n. 11
0
 private void ErrorPropertiesUpdate(string errorMes, int errorCode)
 {
     LastErrorText = errorMes;
     LastError     = errorCode;
     if (errorCode != 0)
     {
         MHelper.WriteLog(errorMes + " " + errorCode, LogType.Error);
     }
 }
Esempio n. 12
0
 public void ChangeArticlePrice(string passwd, int artNum, double price)
 {
     _datecsPort.SendCommand(Commands.ProgramArticles, "C" + artNum, price.ToString(), passwd);
     if (s1 == "F")
     {
         ErrorPropertiesUpdate("Ошибка чтения/программирования артикула", 34);
         return;
     }
     MHelper.WriteLog("ChangeArticlePrice(string passwd, int artNum, double price) is " + artNum + " . Price is " + price);
 }
Esempio n. 13
0
 public void DelArticle(string passwd, int artNum)
 {
     _datecsPort.SendCommand(Commands.ProgramArticles, "D" + (artNum == 0 ? "A," + passwd : artNum + "," + passwd));
     if (s1 == "F")
     {
         ErrorPropertiesUpdate("Ошибка чтения/программирования артикула", 34);
         return;
     }
     MHelper.WriteLog("DelArticle(string passwd, int artNum) " + artNum);
 }
Esempio n. 14
0
        // 내부 함수 ------------------------------------
        private void RenderGrid()
        {
            float step  = 10.0f;
            int   cnt   = 50;
            uint  color = 4094967295;

            MHelper.DrawGrid(new Vector3(0, 0, 0), step, step, cnt, cnt, color);
            MHelper.DrawGrid(new Vector3(0, 0, 0), -step, step, cnt, cnt, color);
            MHelper.DrawGrid(new Vector3(0, 0, 0), step, -step, cnt, cnt, color);
            MHelper.DrawGrid(new Vector3(0, 0, 0), -step, -step, cnt, cnt, color);
        }
Esempio n. 15
0
 public void SubTotal(double percDisc, double sumDisc)
 {
     if (percDisc != 0.00 && sumDisc != 0)
     {
         ErrorPropertiesUpdate("Не правильные параметры функции", -1);
         return;
     }
     _datecsPort.SendCommand(Commands.SubTotalDiscAllow,
                             "11" + (percDisc != 0 ? "," + percDisc : "") + (sumDisc != 0 ? ";" + sumDisc : ""));
     MHelper.WriteLog("SubTotal(double percDisc, double sumDisc). Percent - " + percDisc + ". Sum - " + sumDisc);
 }
Esempio n. 16
0
        public void SetArticle(int artNum, int taxGrp, int grp, double price, string passwd, string name)
        {
            char taxName = MHelper.GetTaxNameFromNumber(taxGrp);

            _datecsPort.SendCommand(Commands.ProgramArticles, "P" + taxName + artNum, grp.ToString(), price.ToString(), passwd, name);
            if (s1 == "F")
            {
                ErrorPropertiesUpdate("Ошибка чтения/программирования артикула", 34);
                return;
            }
            MHelper.WriteLog("SetArticle(int artNum, int taxGrp, int grp, double price, string passwd, string name) " + artNum);
        }
Esempio n. 17
0
 public void SetFiscalNumber(string fNumber)
 {
     _datecsPort.SendCommand(Commands.FiscalNumberSet, fNumber);
     if (s1 == "F")
     {
         ErrorPropertiesUpdate("Ошибка установки фискального номера", 23);
     }
     else
     {
         MHelper.WriteLog("SetFiscalNumber(string fNumber) is " + fNumber);
     }
 }
Esempio n. 18
0
 public void SetSerialNumber(string serial)
 {
     _datecsPort.SendCommand(Commands.SerialNumberSet, "2", serial);
     if (s1 == "F")
     {
         ErrorPropertiesUpdate("Ошибка установки заводского номера", 22);
     }
     else
     {
         MHelper.WriteLog("SetSerialNumber(string serial) is " + serial);
     }
 }
Esempio n. 19
0
 public void SetTaxNumber(string taxNum, int type)
 {
     _datecsPort.SendCommand(Commands.PersonalNumberSet, taxNum, type.ToString());
     if (s1 == "F")
     {
         ErrorPropertiesUpdate("Ошибка установки налогового номера", 24);
     }
     else
     {
         MHelper.WriteLog("SetTaxNumber(string taxNum, int type) is " + taxNum);
     }
 }
Esempio n. 20
0
 public void InOut(double sum)
 {
     _datecsPort.SendCommand(Commands.SericeInOut, sum.ToString());
     if (s1 == "F")
     {
         ErrorPropertiesUpdate("Ошибка служебного внесения/выдачи", 35);
     }
     else
     {
         MHelper.WriteLog("InOut(double sum) = " + sum);
     }
 }
Esempio n. 21
0
 private void RefreshData()
 {
     if (PortAnswer != null)
     {
         DataToHost = DataFromPrinter(PortAnswer);
         Status     = CurrentStatus(PortAnswer);
     }
     else
     {
         DataToHost = MHelper.GetByteArrayFromString("F,F,F,F,F,F");
         Status     = _emptyByteArray;
     }
 }
Esempio n. 22
0
 public void SetPrintDensity(int value)
 {
     if (value >= 1 && value <= 5)
     {
         _datecsPort.SendCommand(Commands.PrintSettings, "D" + value);
         MHelper.WriteLog("SetPrintDensity(int value) value = " + value);
     }
     else
     {
         _datecsPort.SendCommand(Commands.PrintSettings, "D3");
         MHelper.WriteLog("SetPrintDensity(int value) incorrect value. Set = 3 ", LogType.Error);
     }
 }
Esempio n. 23
0
 public void SetBarcodeHeight(int value)
 {
     if (value >= 24 && value <= 240)
     {
         _datecsPort.SendCommand(Commands.PrintSettings, "B" + value);
         MHelper.WriteLog("SetBarcodeHeight(int value) value = " + value);
     }
     else
     {
         _datecsPort.SendCommand(Commands.PrintSettings, "B240");
         MHelper.WriteLog("SetBarcodeHeight(int value) incorrect value. Set = 240", LogType.Error);
     }
 }
Esempio n. 24
0
        public void GetFirstArticle()
        {
            _datecsPort.SendCommand(Commands.ProgramArticles, "F");
            List <string> tmpList = MHelper.GetStringListFromByteArray(_datecsPort.DataToHost);

            if (tmpList[0].StartsWith("P") && tmpList[0].Length > 1)
            {
                tmpList[0] = tmpList[0].Replace("P", string.Empty);
                tmpList.Insert(0, "P");
            }
            PropertiesUpdate(tmpList);
            MHelper.WriteLog("GetFirstArticle()");
        }
Esempio n. 25
0
        public void Fiscalise(string passwd, string serial, string taxnum, int taxNumType)
        {
            _datecsPort.SendCommand(Commands.FiscalizationPersonalization, passwd, serial, taxnum, taxNumType.ToString());
            switch (s1)
            {
            case "1":
                ErrorPropertiesUpdate("Ошибка фискализации. Команда выполнена 10 раз", 13);
                break;

            case "2":
                ErrorPropertiesUpdate("Ошибка фискализации. Не задан фискальный номер", 14);
                break;

            case "3":
                ErrorPropertiesUpdate("Ошибка фискализации. Не правильный заводской номер или данные рефискализации", 15);
                break;

            case "4":
                ErrorPropertiesUpdate("Ошибка фискализации. Открыт фискальный или не фискальный чек", 16);
                break;

            case "5":
                ErrorPropertiesUpdate("Ошибка фискализации. В текущей смене осуществлялись продажи. Сделайте Z-отчет", 17);
                break;

            case "6":
                ErrorPropertiesUpdate("Ошибка фискализации. Не заданы налоговый ставки", 18);
                break;

            case "7":
                ErrorPropertiesUpdate("Ошибка фискализации. Налоговый номер состоит из нулей или имеет не правильную длину", 19);
                break;

            case "8":
                ErrorPropertiesUpdate("Ошибка фискализации. Отсутствует лента", 20);
                break;

            case "9":
                ErrorPropertiesUpdate("Ошибка фискализации. Не установлены дата/время", 21);
                break;

            default:
                MHelper.WriteLog("Fiscalise(string passwd, string serial, string taxnum, int taxNumType)." + serial + " " +
                                 taxnum + " " + taxNumType);
                ErrorPropertiesUpdate(string.Empty, 0);
                break;
            }
        }
Esempio n. 26
0
        public void GetLastFreeArticle()
        {
            _datecsPort.SendCommand(Commands.ProgramArticles, "x");
            List <string> tmpList = MHelper.GetStringListFromByteArray(_datecsPort.DataToHost);

            if (tmpList[0].StartsWith("P") && tmpList[0].Length > 1)
            {
                tmpList[0] = tmpList[0].Replace("P", "");
                tmpList.Insert(0, "P");
            }
            PropertiesUpdate(tmpList);
            if (s1 == "F")
            {
                ErrorPropertiesUpdate("Ошибка чтения/программирования артикула", 34);
                return;
            }
            MHelper.WriteLog("GetLastFreeArticle()");
        }
Esempio n. 27
0
        public void PrintRepByArt(string passwd, int type)
        {
            string reportType = string.Empty;

            switch (type)
            {
            case 1:
                reportType = "S";
                break;

            case 2:
                reportType = "P";
                break;

            case 3:
                reportType = "G";
                break;
            }
            _datecsPort.SendCommand(Commands.ArticlesReport, passwd, reportType);
            MHelper.WriteLog("PrintRepByArt(string passwd, int type)");
        }
Esempio n. 28
0
        private bool ReadPort()
        {
            string str  = string.Empty;
            char   temp = (char)Syn;

            if (!ReadAnswerFirstByte(ref temp))
            {
                return(false);
            }
            str += temp;
            str += _port.ReadExisting();
            byte[] ans = MHelper.GetByteArrayFromString(str);
            while (ans[ans.Length - 1] != Terminator)
            {
                str += _port.ReadExisting();
                ans  = MHelper.GetByteArrayFromString(str);
            }
            if (!AnswerLenghtCount(ans))
            {
                return(false);
            }
            PortAnswer = ans;
            return(true);
        }
Esempio n. 29
0
 public PQDocument UpdateExpressions(IEnumerable <NamedExpression> expressions)
 {
     return(new PQDocument(MHelper.ReplaceSharedMembers(Code, expressions.ToDictionary(exp => exp.Name, exp => exp.Expression))));
 }
Esempio n. 30
0
        internal NamedExpression TransformExpression(Func <string, string> transformer)
        {
            string identifier = MHelper.EscapeIdentifier(Guid.NewGuid().ToString());

            return(new NamedExpression(Name, $"let {identifier} =\n{Expression} in {transformer(identifier)}"));
        }