コード例 #1
0
ファイル: pRRO_SG.cs プロジェクト: OlehR/UniCS.TM
        /// <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);
        }
コード例 #2
0
ファイル: pRRO_SG.cs プロジェクト: OlehR/UniCS.TM
        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);
        }
コード例 #3
0
ファイル: pRRO_SG.cs プロジェクト: OlehR/UniCS.TM
        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);
        }
コード例 #4
0
 public override bool InsertLogRRO(LogRRO pLog)
 {
     using (var DB = new SQLite(ReceiptFile))
     {
         return(DB.ExecuteNonQuery <LogRRO>(SqlInsertLogRRO, pLog) > 0);
     }
 }
コード例 #5
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);
        }
コード例 #6
0
ファイル: ExellioFP.cs プロジェクト: OlehR/UniCS.TM
        /// <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;
            }));
        }
コード例 #7
0
 public virtual bool InsertLogRRO(LogRRO pLog)
 {
     return(db.ExecuteNonQuery <LogRRO>(SqlInsertLogRRO, pLog) > 0);
 }
コード例 #8
0
 public bool InsertLogRRO(LogRRO pL)
 {
     return(db.InsertLogRRO(pL));
 }