public Program() { //DriveCacher<CachType>.SetLogger(Logger); _driver = new DrvFR(); _tlvReader = new TLVReader(_driver); _printFull = true; }
public MainWindow() { InitializeComponent(); InitialArrays(); InitialRMK(); Drv = new DrvFR(); }
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); }
public static StateType?GetStatus(DrvFR driver) { driver.Password = 30; driver.GetECRStatus(); if (IsSuccess(driver, true) != 0) { return(null); } return((StateType)driver.ECRMode); }
public static decimal GetCash(DrvFR driver) { driver.Password = 30; driver.RegisterNumber = 241; driver.GetCashReg(); if (IsSuccess(driver) != 0) { return(0); } return(driver.ContentsOfCashRegister /*100*/); }
public static void Open(DrvFR driver) { driver.Password = 30; driver.OpenSession(); if (IsSuccess(driver) == 0) { Console.WriteLine("Сессия открыта:"); WaitUntillPrint(driver); } }
public static void PrintReport(DrvFR driver) { driver.Password = 30; driver.PrintReportWithoutCleaning(); if (IsSuccess(driver) == 0) { Console.WriteLine("Печать отчета:"); WaitUntillPrint(driver); } }
public static void SaveZReport(DrvFR driver) { driver.Password = 30; driver.FNCloseSession(); if (IsSuccess(driver) == 0) { Console.WriteLine("Сохранение отчета с закрытием:"); WaitUntillPrint(driver); } }
public static void WaitUntillPrint(DrvFR driver) { driver.Password = 30; driver.ConnectionTimeout = 10000; driver.WaitForPrintingDelay = 500; driver.WaitForPrinting(); IsSuccess(driver); //else // Console.WriteLine($"Ожидание печати..."); }
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); }
/// <summary> /// Снимает дневной отчет с ККТ /// </summary> public static bool TakeDalyReport(DrvFR Drv) //Снять Х-Отчет { try { Drv.PrintReportWithoutCleaning(); //Отчет без гашения } catch { return(false); } return(true); }
/// <summary> /// Отмена не закрытого чека в ККТ /// </summary> public static bool CancelCashReciept(DrvFR Drv) { try { Drv.CancelCheck(); } catch { return(false); } return(true); }
//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")); }
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); } }
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); } }
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"));; }
/// <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); }
/// <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); }
/// <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(); }
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); }
/// <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(); } } }
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); } }
/// <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); } }
/// <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); } }
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; } }
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); } }
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); } }
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); } }
/// <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)); } }
/// <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); }
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) { } } } }