Example #1
0
 public Program()
 {
     //DriveCacher<CachType>.SetLogger(Logger);
     _driver    = new DrvFR();
     _tlvReader = new TLVReader(_driver);
     _printFull = true;
 }
Example #2
0
 public MainWindow()
 {
     InitializeComponent();
     InitialArrays();
     InitialRMK();
     Drv = new DrvFR();
 }
Example #3
0
 private static bool testResult(DrvFR driver, int Result, string OperationDescription = "")
 {
     if (Result != 0)
     {
         Console.Write(string.Format("{2} Результат: {0}, {1}", driver.ResultCode, driver.ResultCodeDescription, OperationDescription ?? ""));
     }
     return(Result == 0);
 }
Example #4
0
 public static StateType?GetStatus(DrvFR driver)
 {
     driver.Password = 30;
     driver.GetECRStatus();
     if (IsSuccess(driver, true) != 0)
     {
         return(null);
     }
     return((StateType)driver.ECRMode);
 }
Example #5
0
 public static decimal GetCash(DrvFR driver)
 {
     driver.Password       = 30;
     driver.RegisterNumber = 241;
     driver.GetCashReg();
     if (IsSuccess(driver) != 0)
     {
         return(0);
     }
     return(driver.ContentsOfCashRegister /*100*/);
 }
Example #6
0
        public static void Open(DrvFR driver)
        {
            driver.Password = 30;
            driver.OpenSession();

            if (IsSuccess(driver) == 0)
            {
                Console.WriteLine("Сессия открыта:");
                WaitUntillPrint(driver);
            }
        }
Example #7
0
        public static void PrintReport(DrvFR driver)
        {
            driver.Password = 30;
            driver.PrintReportWithoutCleaning();

            if (IsSuccess(driver) == 0)
            {
                Console.WriteLine("Печать отчета:");
                WaitUntillPrint(driver);
            }
        }
Example #8
0
        public static void SaveZReport(DrvFR driver)
        {
            driver.Password = 30;
            driver.FNCloseSession();

            if (IsSuccess(driver) == 0)
            {
                Console.WriteLine("Сохранение отчета с закрытием:");
                WaitUntillPrint(driver);
            }
        }
Example #9
0
        public static void WaitUntillPrint(DrvFR driver)
        {
            driver.Password             = 30;
            driver.ConnectionTimeout    = 10000;
            driver.WaitForPrintingDelay = 500;
            driver.WaitForPrinting();

            IsSuccess(driver);
            //else
            //    Console.WriteLine($"Ожидание печати...");
        }
Example #10
0
 public static int IsSuccess(DrvFR driver, bool print = true)
 {
     if (driver.ResultCode != 0)
     {
         if (print)
         {
             Console.WriteLine($"Ошибка: {driver.ResultCode}, {driver.ResultCodeDescription}");
         }
         return(driver.ResultCode);
     }
     return(0);
 }
Example #11
0
 /// <summary>
 /// Снимает дневной отчет с ККТ
 /// </summary>
 public static bool TakeDalyReport(DrvFR Drv) //Снять Х-Отчет
 {
     try
     {
         Drv.PrintReportWithoutCleaning(); //Отчет без гашения
     }
     catch
     {
         return(false);
     }
     return(true);
 }
Example #12
0
 /// <summary>
 /// Отмена не закрытого чека в ККТ
 /// </summary>
 public static bool CancelCashReciept(DrvFR Drv)
 {
     try
     {
         Drv.CancelCheck();
     }
     catch
     {
         return(false);
     }
     return(true);
 }
Example #13
0
        //public static void PrintCheck(DrvFR driver, string msg)
        //{
        //    IsSuccess(driver, true);

        //    var lines = msg.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);

        //    foreach (var line in lines)
        //    {
        //        driver.StringForPrinting = line;
        //        driver.PrintString();

        //        IsSuccess(driver, true);
        //    }

        //    if (IsSuccess(driver) == 0)
        //    {
        //        WaitUntillPrint(driver);
        //    }
        //    driver.CutType = true;
        //    driver.CutCheck();
        //    IsSuccess(driver);
        //}

        private static bool PrintCheck(DrvFR driver, string msg, string bar, BarcodePosition BarcodePosition)
        {
            if (driver == null)
            {
                return(false);
            }

            bool result = false;

            if (BarcodePosition == BarcodePosition.Top && !string.IsNullOrWhiteSpace(bar))
            {
                result = PrintBar(driver, bar);

                if (!result)
                {
                    return(result);
                }

                WaitUntillPrint(driver);
            }

            var lines = msg.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);

            foreach (var line in lines)
            {
                driver.StringForPrinting = line;
                result = testResult(driver, driver.PrintString());
                if (!result)
                {
                    break;
                }
            }
            if (result)
            {
                WaitUntillPrint(driver);
            }

            if (BarcodePosition == BarcodePosition.Bottom && !string.IsNullOrWhiteSpace(bar))
            {
                result = PrintBar(driver, bar);

                if (!result)
                {
                    return(result);
                }

                WaitUntillPrint(driver);
            }

            driver.CutType = true;
            driver.CutCheck();
            return(testResult(driver, driver.CutCheck(), "PrintCheck"));
        }
Example #14
0
        public static void CashOutcome(DrvFR driver, decimal cash)
        {
            driver.Password = 30;
            driver.Summ1    = cash;
            driver.CashOutcome();

            if (IsSuccess(driver) == 0)
            {
                Console.WriteLine($"Изъяты из кассы: { cash }");
                WaitUntillPrint(driver);
            }
        }
Example #15
0
        public static void OpenCheck(DrvFR driver, CheckType type)
        {
            Summ             = 0.0m;
            driver.Password  = 30;
            driver.CheckType = (int)type;
            driver.OpenCheck();

            if (IsSuccess(driver) == 0)
            {
                Console.WriteLine($"Чек открыт на оператора: {driver.OperatorNumber}");
                WaitUntillPrint(driver);
            }
        }
Example #16
0
        private static bool PrintBar(DrvFR driver, string msg)
        {
            driver.Password         = 30;
            driver.BarCode          = msg;
            driver.LineNumber       = 75;
            driver.BarcodeType      = 2;
            driver.BarWidth         = 2;
            driver.BarcodeAlignment = TBarcodeAlignment.baCenter;
            driver.PrintBarcodeText = 1;

            //driver.PrintBarCode();
            return(testResult(driver, driver.PrintBarcodeGraph(), "PrintBarcodeGraph"));;
        }
Example #17
0
 /// <summary>
 /// Закрывает смену в ККТ с ФИО и ИНН оператора
 /// </summary>
 public static bool CloseShift(DrvFR Drv, string FIO, string INN)
 {
     try
     {
         Drv.FNBeginCloseSession();
         SendFIO(Drv, FIO, INN);
         Drv.FNCloseSession();
     }
     catch
     {
         return(false);
     }
     return(true);
 }
Example #18
0
 /// <summary>
 /// Открывает смену в ККТ с ФИО и ИНН оператора
 /// </summary>
 public static bool OpenShift(DrvFR Drv, string FIO, string INN)
 {
     try
     {
         Drv.FNBeginOpenSession();
         SendFIO(Drv, FIO, INN);
         Drv.FNOpenSession();
         System.Threading.Thread.Sleep(2000);
     }
     catch
     {
         return(false);
     }
     return(true);
 }
Example #19
0
 /// <summary>
 /// Указывает данные покупателя в документах
 /// </summary>
 public static void SendCustomer(DrvFR Drv, string customerName, string customerINN)
 {
     Drv.TagNumber   = 1227;
     Drv.TagType     = 7;
     Drv.TagValueStr = customerName;
     Drv.FNSendTag();
     Drv.TagNumber   = 1228;
     Drv.TagType     = 7;
     Drv.TagValueStr = customerINN;
     if (Drv.TagValueStr.Length == 10)
     {
         Drv.TagValueStr += "00";
     }
     Drv.FNSendTag();
 }
Example #20
0
        private static int GetLastDocNumber(DrvFR driver)
        {
            if (driver == null)
            {
                return(-1);
            }

            var result = testResult(driver, driver.FNGetStatus(), "FNGetStatus");

            if (!result)
            {
                return(-1);
            }

            return(driver.DocumentNumber);
        }
Example #21
0
 /// <summary>
 /// Указывает Зарегестрированного кассира в документах
 /// </summary>
 public static void SendFIO(DrvFR Drv, string FIO, string INN)
 {
     if (FIO != "")
     {
         Drv.TagNumber   = 1021; //Отправка Должности и Фамилии кассира
         Drv.TagType     = 7;
         Drv.TagValueStr = FIO;
         Drv.FNSendTag();
         if (INN != "")
         {
             Drv.TagNumber   = 1203; //Отправка ИНН кассира
             Drv.TagType     = 7;
             Drv.TagValueStr = INN;
             Drv.FNSendTag();
         }
     }
 }
Example #22
0
        public static void SetCustomerEMail(DrvFR driver, string mail)
        {
            if (string.IsNullOrWhiteSpace(mail))
            {
                return;
            }

            driver.Password      = 30;
            driver.CustomerEmail = mail;
            driver.FNSendCustomerEmail();

            if (IsSuccess(driver) == 0)
            {
                Console.WriteLine($"Мыло установлено: {mail}!:");
                WaitUntillPrint(driver);
            }
        }
Example #23
0
 /// <summary>
 /// Вводим оплату и Закрывает чек в ККТ
 /// </summary>
 public static bool CloseChek(DrvFR Drv, Decimal cashPayment, Decimal electronicPayment, int TaxType = 2) // Формируем закрытие чека
 {
     Drv.Summ1             = cashPayment;                                                                 // Наличные
     Drv.Summ2             = electronicPayment;                                                           // Остальные типы оплаты нулевые, но их необходимо заполнить
     Drv.Summ3             = 0;
     Drv.Summ4             = 0;
     Drv.Summ5             = 0;
     Drv.Summ6             = 0;
     Drv.Summ7             = 0;
     Drv.Summ8             = 0;
     Drv.Summ9             = 0;
     Drv.Summ10            = 0;
     Drv.Summ11            = 0;
     Drv.Summ12            = 0;
     Drv.Summ13            = 0;
     Drv.Summ14            = 0;
     Drv.Summ15            = 0;
     Drv.Summ16            = 0;
     Drv.RoundingSumm      = 0; // Сумма округления
     Drv.TaxValue1         = 0; // Налоги мы не считаем
     Drv.TaxValue2         = 0;
     Drv.TaxValue3         = 0;
     Drv.TaxValue4         = 0;
     Drv.TaxValue5         = 0;
     Drv.TaxValue6         = 0;
     Drv.TaxType           = TaxType; //система налогообложения
     Drv.StringForPrinting = "";
     try
     {
         Drv.FNCloseCheckEx(); //Закрытие чека
     }
     catch
     {
         return(false);
     }
     if (Drv.ResultCode == 0)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
Example #24
0
 /// <summary>
 /// Регистрирует ВНЕСЕНИЕ или ВЫПЛАТУ в денежный ящик
 /// </summary>
 public static bool CashInOutCome(DrvFR Drv, string operation, decimal summCash)
 {
     if (operation == "Внесение")
     {
         Drv.Summ1 = summCash;
         Drv.CashIncome();
         return(true);
     }
     else if (operation == "Выплата")
     {
         Drv.Summ1 = summCash;
         Drv.CashOutcome();
         return(true);
     }
     else
     {
         return(false);
     }
 }
Example #25
0
 public static void Sale(DrvFR driver, double quantity, decimal price, int department, string name)
 {
     driver.Password          = 30;
     driver.Quantity          = quantity;
     driver.Price             = price;
     driver.Department        = department;
     driver.Tax1              = TaxType;
     driver.Tax2              = TaxType;
     driver.Tax3              = TaxType;
     driver.Tax4              = TaxType;
     driver.StringForPrinting = name;
     driver.Sale();
     if (IsSuccess(driver) == 0)
     {
         Console.WriteLine(
             $"Продажа на: {price} х {quantity} = {(double)price * quantity} кассир: {driver.OperatorNumber}");
         Summ += price * (decimal)quantity;
     }
 }
Example #26
0
 public static void Discount(DrvFR driver, decimal discount)
 {
     driver.Password = 30;
     //driver.Summ1 = discount;
     //driver.Summ2 = 0;
     //driver.Summ3 = 0;
     //driver.Summ4 = 0;
     //driver.Tax1 = TaxType;
     //driver.Tax2 = TaxType;
     //driver.Tax3 = TaxType;
     //driver.Tax4 = TaxType;
     //driver.Discount();
     driver.DiscountOnCheck = (double)discount;
     if (IsSuccess(driver) == 0)
     {
         Console.WriteLine($"Скидка в размере: { discount }");
         //Summ -= discount;
         WaitUntillPrint(driver);
     }
 }
Example #27
0
 public CashMachine()
 {
     try
     {
         LogInfo("Создание драйвера");
         Driver                 = new DrvFR();
         Driver.Timeout         = 4000;
         Driver.Password        = Config.CheckPrinterPassword;
         Driver.LogOn           = true;
         Driver.LogFileMaxSize  = 100;
         Driver.LogMaxFileCount = 10;
         Driver.LogCommands     = true;
         Driver.LogMethods      = true;
         Driver.ComLogFile      = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "ComLog.txt");
         Driver.CPLogFile       = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "CPLog.txt");
     }
     catch (Exception ex)
     {
         throw new SystemException(ex.Message);
     }
 }
Example #28
0
        public static void CloseCheck(DrvFR driver, decimal summ1, string name)
        {
            driver.Password          = 30;
            driver.Summ1             = summ1;//сколько дал клиент
            driver.Summ2             = 0;
            driver.Summ3             = 0;
            driver.Summ4             = 0;
            driver.Tax1              = TaxType;
            driver.Tax2              = TaxType;
            driver.Tax3              = TaxType;
            driver.Tax4              = TaxType;
            driver.DiscountOnCheck   = CommonDiscount;
            driver.StringForPrinting = name;
            driver.CloseCheck();

            if (IsSuccess(driver) == 0)
            {
                Console.WriteLine($"Чек закрыт, сдача: { driver.Change }");
                WaitUntillPrint(driver);
            }
        }
Example #29
0
        /// <summary>
        /// Метод выполняет подключение к фискальному регистратору.
        /// </summary>
        protected void Connect()
        {
            var driverData = ConfigurationManager.AppSettings;

            try
            {
                //подключение через сом порт
                //данные для подключения из app.config
                Driver = new DrvFR()
                {
                    ConnectionType = int.Parse(driverData["ConnectionType"]),
                    ComNumber      = int.Parse(driverData["ComNumber"]),
                    BaudRate       = int.Parse(driverData["BaudRate"]),
                    Timeout        = int.Parse(driverData["Timeout"]),
                    Password       = int.Parse(driverData["Password"])
                };
                ExecuteAndHandleError(Driver.Connect, true);
            }
            catch (Exception ex)
            {
                GetMessage(TextFormat.GetExceptionMessage(ex));
            }
        }
Example #30
0
 /// <summary>
 /// Регистрирует позицию в чеке ККТ
 /// </summary>
 public static bool RegPosition(DrvFR Drv, int CheckType, int PaymentItemSign, string NameProduct, Decimal Price,
                                Double Quantity, int Tax1, Decimal Summ1) //Регистрация позиции в чеке
 {
     Drv.CheckType         = CheckType;
     Drv.Price             = Price;
     Drv.Quantity          = Quantity;
     Drv.Summ1Enabled      = true;  //Использовать сумму операции (сами рассчитываем цену)
     Drv.Summ1             = Summ1;
     Drv.TaxValueEnabled   = false; //Налог мы не рассчитываем
     Drv.Tax1              = Tax1;
     Drv.Department        = 1;     //Отдел (0-16 режим свободной продажи)
     Drv.PaymentTypeSign   = 4;     // Признак способа расчета 1..7 (4-Полный расчет)
     Drv.PaymentItemSign   = PaymentItemSign;
     Drv.StringForPrinting = NameProduct;
     try
     {
         Drv.FNOperation(); // Пробиваем позицию
     }
     catch
     {
         return(false);
     }
     return(true);
 }
Example #31
0
        private void ExecuteCancelCheck()
        {
            DrvFR driver = null;
            try
            {
                driver = new DrvFR();

                driver.Password = 30;
                driver.ComputerName = Environment.MachineName;
                driver.UseReceiptRibbon = true;

                driver.Connect();

                driver.CancelCheck();

                driver.Disconnect();
            }
            catch (Exception)
            {

            }
            finally
            {
                if (driver != null)
                {
                    try
                    {
                        driver.Disconnect();
                    }
                    catch (Exception)
                    {

                    }
                }
                  
            }
        }