/// <summary> /// Внесення/Винесення коштів коштів. pSum>0 - внесення /// </summary> /// <param name="pSum"></param> /// <returns></returns> override public async Task <LogRRO> MoveMoneyAsync(decimal pSum, IdReceipt pIdR) { ///innovate/servicein внесення /innovate/serviceout --винесення var Res = new LogRRO(pIdR); Res.CodeReceipt = 0; var Body = JsonConvert.SerializeObject(new pRroRequestBaseSG() { docSubType = (pSum > 0?eTypeDoc.MoneyIn : eTypeDoc.MoneyOut), sum = pSum, cashierName = OperatorName }); string res; HttpStatusCode Response; (res, Response) = await HttpAsync("innovate/service" + (pSum > 0? "in" :"out"), Body); if (Response == HttpStatusCode.OK) { var xx = JsonConvert.DeserializeObject <pRroAnswerSG>(res); Res.TypeOperation = pSum > 0 ? eTypeOperation.MoneyIn : eTypeOperation.MoneyOut; Res.TextReceipt = xx.text; Res.SUM = xx.sum; Res.NumberOperation = xx.receiptNumber; Res.JSON = res; SetStatus(eStatusRRO.OK); } else { Res.Error = Response.ToString(); } return(Res); }
override public async Task <LogRRO> PrintReceiptAsync(Receipt pR) { string res; var Res = new LogRRO(pR); HttpStatusCode Response; var r = new pRroRequestSG(pR); var Body = JsonConvert.SerializeObject(r); Debug.WriteLine("HttpAsync Start=>"); (res, Response) = await HttpAsync("/innovate/printreceipt", Body); Debug.WriteLine("HttpAsync=>" + res); //Thread.Sleep(2000); if (Response == HttpStatusCode.OK) { var xx = JsonConvert.DeserializeObject <pRroAnswerSG>(res); Res.TypeOperation = pR.TypeReceipt == eTypeReceipt.Sale ? eTypeOperation.Sale : eTypeOperation.Refund; Res.NumberOperation = xx.receiptNumber; Res.TextReceipt = xx.text; Res.SUM = xx.sum; Res.FiscalNumber = xx.fiscalNumber; Res.JSON = res; //JsonConvert.SerializeObject(xx, Formatting.Indented); SetStatus(eStatusRRO.OK); } else { Res.Error = Response.ToString(); Res.CodeError = -1; } return(Res); }
public async Task <LogRRO> PrintXYAsync(bool pIsX, IdReceipt pIdR) { string res; var Res = new LogRRO(pIdR); Res.CodeReceipt = 0; HttpStatusCode Response; (res, Response) = await HttpAsync($"/innovate/{(pIsX?"x":"z")}report", "{\"cashierName\": \"" + OperatorName + "\"}"); if (Response == HttpStatusCode.OK) { var xx = JsonConvert.DeserializeObject <pRroAnswerSG>(res); Res.TypeOperation = pIsX ? eTypeOperation.XReport : eTypeOperation.ZReport; Res.NumberOperation = xx.receiptNumber; Res.TextReceipt = xx.text; Res.SUM = Convert.ToDecimal(xx.sum) / 100m; Res.JSON = res; //JsonConvert.SerializeObject(xx, Formatting.Indented); SetStatus(eStatusRRO.OK); } else { Res.Error = Response.ToString(); Res.CodeError = -1; } return(Res); }
public override bool InsertLogRRO(LogRRO pLog) { using (var DB = new SQLite(ReceiptFile)) { return(DB.ExecuteNonQuery <LogRRO>(SqlInsertLogRRO, pLog) > 0); } }
override public async Task <LogRRO> PrintReceiptAsync(Receipt pR) { string xml = $"<Check Number=\"{pR.CodeReceipt}\" FN = \"{FN}\" OperationType=\"{(pR.TypeReceipt == eTypeReceipt.Sale ? 0 : 1)}\" uuid=\"{pR.ReceiptId}\">\n" + GenL(pR) + "\n" + GenGoods(pR.Wares) + $"\n<Payments> <Payment ID=\"{1}\" Sum = \"{pR.SumCreditCard}\"/></Payments>\n</Check>"; bool r = WCh.FiscalReceipt(xml); string ResXML = WCh.StatusBarXML(); var FiscalNumber = GetElement(ResXML, "CheckID", "\"", "\""); string Error = GetElement(ResXML, "ErrHelp", "\"", "\""); string CodeError = GetElement(ResXML, "Err", "\"", "\""); var Res = new LogRRO(pR) { FiscalNumber = FiscalNumber, SUM = pR.SumCreditCard, TypeRRO = "WebCheck", JSON = GetCheckByFiscalNumber(FiscalNumber), Error = Error, CodeError = int.Parse(CodeError) }; return(Res); }
/// <summary> /// Друк чека /// </summary> /// <param name="pR"></param> /// <returns></returns> override public async Task <LogRRO> PrintReceiptAsync(Receipt pR) { return(await Task.Run(() => { LogRRO Res = new LogRRO(pR) { SUM = pR.SumFiscal, TypeRRO = "ExellioFP", TypeOperation = (pR.TypeReceipt == eTypeReceipt.Sale ? eTypeOperation.Sale : eTypeOperation.Refund) }; if (FpOpenPort()) { SetStatus(eStatusRRO.StartPrintReceipt); if (FP.IsFiscalOpen) { FP.CancelReceipt(); } //потрібна перевірка фіскальний чи нефіскальний чек відкривається if (pR.TypeReceipt == eTypeReceipt.Sale) { FP.OpenFiscalReceipt(1, OperatorPass, 1); } else { FP.OpenReturnReceipt(1, OperatorPass, 1); } if (CheckResult()) { //потрібно прочитати номер фіскального чека GetLastReceiptNum() властивість s1 foreach (var el in pR.Wares) { SetStatus(eStatusRRO.AddWares, el.NameWares); var TaxGroup = Global.GetTaxGroup(el.TypeVat, el.TypeWares); int TG1 = 0, TG2 = 0; int.TryParse(TaxGroup.Substring(0, 1), out TG1); if (TaxGroup.Length > 1) { int.TryParse(TaxGroup.Substring(1, 1), out TG2); } var Name = (el.IsUseCodeUKTZED && !string.IsNullOrEmpty(el.CodeUKTZED) ? el.CodeUKTZED.Substring(0, 10) + "#" : "") + el.NameWares; if (!String.IsNullOrEmpty(el.ExciseStamp)) { FP.ExciseStamp = el.ExciseStamp; } FP.Sale(el.CodeWares, Name, Convert.ToInt32(Global.GetTaxGroup(el.TypeVat, el.TypeWares)), 1, Convert.ToDouble(el.Price), Convert.ToDouble(el.Quantity), 0, Convert.ToDouble(el.SumDiscount), true, OperatorPass); //Convert.ToInt32((el.CodeUnit == Global.WeightCodeUnit ? 1000 : 1) * el.Quantity), Convert.ToInt32(el.Price * 100), el.CodeUnit == Global.WeightCodeUnit ? 1 : 0, TG1, TG2, el.CodeWares, (el.DiscountEKKA > 0 ? 0 : -1), null, Convert.ToInt32(el.DiscountEKKA), null) != 1)) if (!CheckResult()) { break; } } if (CodeError != 0) { FP.SubTotal(0, 0); //як прочитати готівка / безготівка pR.SumFiscal = Convert.ToDecimal(FP.s2); if (pR.Payment != null && pR.Payment.Count() > 0) { foreach (var el in pR.Payment) {//!!!TMP Спитати валіка. FP.PayTerminalData = $"{el.NumberSlip},{0},{el.NumberTerminal},{el.TypePay},{el.NumberCard},{el.CodeAuthorization},{0}"; SetStatus(eStatusRRO.AddWares, FP.PayTerminalData); FP.TotalPT("", el.TypePay == eTypePay.Cash ? 1 : 4, Convert.ToDouble(el.SumPay), el.TransactionId); if (!CheckResult()) { break; } } } if (CodeError != 0) { FP.CloseFiscalReceipt(); if (CheckResult()) { pR.NumberReceipt = pR.TypeReceipt == eTypeReceipt.Sale ? FP.s2 : FP.s3; } } } } } if (CodeError != 0) { Res.CodeError = CodeError; Res.Error = StrError; FP.CancelReceipt(); } FpClosePort(); return Res; })); }
public virtual bool InsertLogRRO(LogRRO pLog) { return(db.ExecuteNonQuery <LogRRO>(SqlInsertLogRRO, pLog) > 0); }
public bool InsertLogRRO(LogRRO pL) { return(db.InsertLogRRO(pL)); }