public HttpResponseMessage PaymentByExactCash([FromBody] PaymentModel paymentModel)
        {
            var dateStart = DateTime.Now;

            _performancelog.Debug(
                $"Start,PaymentController,PaymentByExactCash,{string.Empty},{dateStart:hh.mm.ss.ffffff}");
            string userCode;
            HttpResponseMessage httpResponseMessage;

            if (GetUserCode(out userCode, out httpResponseMessage))
            {
                return(httpResponseMessage);
            }
            string          fileName = string.Empty;
            Report          receipt  = null;
            ErrorMessage    errorMessage;
            CustomerDisplay lcdMsg;
            var             sale = _paymentManager.ByCashExact(paymentModel.TillNumber,
                                                               paymentModel.SaleNumber,
                                                               userCode, ref receipt, ref fileName,
                                                               out errorMessage, out lcdMsg);


            if (!string.IsNullOrEmpty(errorMessage?.MessageStyle?.Message))
            {
                return(Request.CreateResponse(errorMessage.StatusCode, new ErrorResponse
                {
                    Error = errorMessage.MessageStyle
                }));
            }

            var recieptModel = new ReportModel
            {
                ReportName    = receipt.ReportName,
                ReportContent = receipt.ReportContent,
                Copies        = 1
            };
            var tillLimitExeceeded           = _paymentManager.CheckTillLimit(sale.TillNumber);
            var completePaymentResponseModel = new CompletePaymentResponseModel
            {
                NewSale = new NewSale
                {
                    SaleNumber = sale.Sale_Num,
                    TillNumber = sale.TillNumber,
                    Customer   = sale.Customer.Name
                },
                LimitExceedMessage = tillLimitExeceeded,
                PaymentReceipt     = recieptModel,
                CustomerDisplays   = new List <CustomerDisplay> {
                    lcdMsg, sale.CustomerDisplay
                }
            };

            _performancelog.Debug(
                $"End,PaymentController,PaymentByExactCash,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");

            return(Request.CreateResponse(HttpStatusCode.OK, completePaymentResponseModel));
        }
        public HttpResponseMessage RunAway([FromBody] TransactionCompleteModel paymentModel)
        {
            var dateStart = DateTime.Now;

            _performancelog.Debug($"Start,PaymentController,RnAway,{string.Empty},{dateStart:hh.mm.ss.ffffff}");

            ErrorMessage        errorMessage;
            string              userCode;
            HttpResponseMessage httpResponseMessage;

            if (GetUserCode(out userCode, out httpResponseMessage))
            {
                return(httpResponseMessage);
            }
            Report receipt = null;

            var newSale = _paymentManager.RunAway(paymentModel.SaleNumber,
                                                  paymentModel.TillNumber,
                                                  userCode, ref receipt,
                                                  out errorMessage);

            if (!string.IsNullOrEmpty(errorMessage.MessageStyle.Message))
            {
                return(Request.CreateResponse(errorMessage.StatusCode, new ErrorResponse
                {
                    Error = errorMessage.MessageStyle
                }));
            }
            CompletePaymentResponseModel completePaymentResponseModel = null;

            if (receipt != null)
            {
                completePaymentResponseModel = new CompletePaymentResponseModel
                {
                    NewSale = new NewSale
                    {
                        SaleNumber = newSale.Sale_Num,
                        TillNumber = newSale.TillNumber,
                        Customer   = newSale.Customer.Name
                    },
                    PaymentReceipt = new ReportModel
                    {
                        ReportName    = receipt.ReportName,
                        ReportContent = receipt.ReportContent,
                        Copies        = 1
                    },
                    CustomerDisplays = new List <CustomerDisplay> {
                        newSale.CustomerDisplay
                    }
                };
            }

            _performancelog.Debug($"End,PaymentController,RunAway,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");

            return(Request.CreateResponse(HttpStatusCode.OK, completePaymentResponseModel));
        }
        public HttpResponseMessage CompletePayout([FromBody] PayoutModel payoutModel)
        {
            var dateStart = DateTime.Now;

            _performancelog.Debug($"Start,PayoutController,CompletePayout,{string.Empty},{DateTime.Now:hh.mm.ss.ffffff}");
            string userCode;
            HttpResponseMessage httpResponseMessage;

            if (GetUserCode(out userCode, out httpResponseMessage))
            {
                return(httpResponseMessage);
            }
            if (payoutModel == null)
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse
                {
                    Error = new MessageStyle
                    {
                        Message = Resource.InvalidInformation,
                        MessageType = MessageType.OkOnly
                    }
                }));
            }
            var po = new Payout
            {
                Sale_Num      = payoutModel.SaleNumber,
                Gross         = payoutModel.Amount,
                Return_Reason = new Return_Reason {
                    Reason = payoutModel.ReasonCode
                },
                Vendor = new Vendor {
                    Code = payoutModel.VendorCode
                },
            };
            ErrorMessage error;
            bool         openDrawer;
            var          fs = _payoutManager.SaveVendorPayout(po, payoutModel.TillNumber, userCode,
                                                              payoutModel.RegisterNumber, payoutModel.Taxes, out openDrawer, out error);

            _performancelog.Debug($"End,PayoutController,CompletePayout,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");
            if (!string.IsNullOrEmpty(error.MessageStyle.Message))
            {
                return(Request.CreateResponse(HttpStatusCode.NotFound,
                                              new ErrorResponse
                {
                    Error = error.MessageStyle,
                }));
            }
            var newSale = _saleManager.InitializeSale(payoutModel.TillNumber, payoutModel.RegisterNumber, userCode, out error);
            var completePaymentResponseModel = new CompletePaymentResponseModel
            {
                NewSale = new NewSale
                {
                    SaleNumber = newSale.Sale_Num,
                    TillNumber = newSale.TillNumber,
                    Customer   = newSale.Customer.Name
                },
                OpenCashDrawer   = openDrawer,
                CustomerDisplays = new List <CustomerDisplay> {
                    newSale.CustomerDisplay
                }
            };

            try
            {
                completePaymentResponseModel.PaymentReceipt = new ReportModel
                {
                    ReportName    = fs.ReportName,
                    ReportContent = fs.ReportContent,
                    Copies        = fs.Copies
                };
                _performancelog.Debug($"End,PayoutController,CompletePayout,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");
                return(Request.CreateResponse(HttpStatusCode.OK, completePaymentResponseModel));
            }
            catch
            {
                _performancelog.Debug($"End,PayoutController,CompletePayout,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");

                return(Request.CreateResponse(HttpStatusCode.NotFound, new ErrorResponse
                {
                    Error = new MessageStyle {
                        Message = Resource.Error, MessageType = 0
                    }
                }));
            }
        }
예제 #4
0
        public HttpResponseMessage VoidSale([FromBody] VoidSaleModel model)
        {
            var dateStart = DateTime.Now;

            _performancelog.Debug($"Start,SaleController,VoidSale,{string.Empty},{dateStart:hh.mm.ss.ffffff}");

            ErrorMessage        error;
            string              userCode;
            HttpResponseMessage httpResponseMessage;

            if (GetUserCode(out userCode, out httpResponseMessage))
            {
                return(httpResponseMessage);
            }
            Report fs;
            var    sale = _suspendedSaleManger.VoidSale(userCode, model.SaleNumber, model.TillNumber,
                                                        model.VoidReason, out error, out fs);

            if (!string.IsNullOrEmpty(error.MessageStyle.Message))
            {
                return(Request.CreateResponse(error.StatusCode,
                                              new ErrorResponse
                {
                    Error = error.MessageStyle,
                }));
            }

            var completePaymentResponseModel = new CompletePaymentResponseModel
            {
                NewSale = new NewSale
                {
                    SaleNumber = sale.Sale_Num,
                    TillNumber = sale.TillNumber,
                    Customer   = sale.Customer.Name
                },
                CustomerDisplays = new List <CustomerDisplay> {
                    sale.CustomerDisplay
                }
            };

            try
            {
                if (fs != null)
                {
                    completePaymentResponseModel.PaymentReceipt = new ReportModel
                    {
                        ReportName    = fs.ReportName,
                        ReportContent = fs.ReportContent
                    };
                }
                _performancelog.Debug($"End,SaleController,VoidSale,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");
                return(Request.CreateResponse(HttpStatusCode.OK, completePaymentResponseModel));
            }
            catch
            {
                _performancelog.Debug($"End,SaleController,VoidSale,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");

                return(Request.CreateResponse(HttpStatusCode.NotFound, new ErrorResponse
                {
                    Error = new MessageStyle {
                        Message = Resource.Error, MessageType = 0
                    }
                }));
            }
        }