Esempio n. 1
0
        /// <summary>
        /// Tender summary mapper
        /// </summary>
        /// <param name="updatedTenders"></param>
        /// <param name="issueStoreCreditMessage"></param>
        /// <param name="selectedTenders"></param>
        /// <returns></returns>
        public static TenderSummaryModel GetTenderSummaryModel(Tenders updatedTenders, string issueStoreCreditMessage,
                                                               IEnumerable <Tender> selectedTenders)
        {
            var tenderSummary = new TenderSummaryModel
            {
                Summary1          = updatedTenders.Summary1,
                Summary2          = updatedTenders.Summary2,
                OutstandingAmount = Math.Round(Convert.ToDouble(updatedTenders.Tend_Totals.Change), 2) > 0.0D
                    ? updatedTenders.Tend_Totals.Change.ToString(Constants.ChangeFormat)
                    : 0.ToString(Constants.ChangeFormat),
                EnableCompletePayment   = updatedTenders.EnableCompletePayment,
                DisplayNoReceiptButton  = updatedTenders.DisplayNoReceiptButton,
                IssueStoreCreditMessage = issueStoreCreditMessage,
                EnableRunAway           = updatedTenders.EnableRunAway,
                EnablePumpTest          = updatedTenders.EnablePumpTest,
                Tenders = (from tender in selectedTenders
                           select new TenderResponseModel
                {
                    TenderCode = tender.Tender_Code,
                    TenderName = tender.Tender_Name,
                    TenderClass = tender.Tender_Class,
                    AmountEntered = tender.Amount_Entered == 0 ? "" : tender.Amount_Entered.ToString(Constants.CurrencyFormat),
                    AmountValue = tender.Amount_Used == 0 ? "" : tender.Amount_Used.ToString(Constants.CurrencyFormat),
                    IsEnabled = string.IsNullOrEmpty(tender.Credit_Card.Cardnumber),
                    MaximumValue = tender.MaxAmount,
                    MinimumValue = tender.MinAmount,
                    Image = tender.Image
                }).ToList(),
                CustomerDisplay = updatedTenders.CustomerDisplay
            };

            return(tenderSummary);
        }
Esempio n. 2
0
        /// <summary>
        /// method to return the WEX reciept
        /// </summary>
        /// <param name="width"></param>
        /// <param name="sale"></param>
        /// <param name="tenders"></param>
        /// <returns></returns>
        public string GetWexRecieptString(ref short width, Sale sale, ref Tenders tenders)
        {
            if (modTPS.cc != null)
            {
                return(CreateWexReciept(width, modTPS.cc.Name, (sale.Sale_Num).ToString(), modTPS.cc.TerminalID, modTPS.cc.Cardnumber, modTPS.cc.Sequence_Number, modTPS.cc.ApprovalCode, tenders));
            }

            return("");
        }
Esempio n. 3
0
        public override int GetHashCode()
        {
            int hashCode = 226628405;

            if (Id != null)
            {
                hashCode += Id.GetHashCode();
            }

            if (LocationId != null)
            {
                hashCode += LocationId.GetHashCode();
            }

            if (CreatedAt != null)
            {
                hashCode += CreatedAt.GetHashCode();
            }

            if (Tenders != null)
            {
                hashCode += Tenders.GetHashCode();
            }

            if (Refunds != null)
            {
                hashCode += Refunds.GetHashCode();
            }

            if (ReferenceId != null)
            {
                hashCode += ReferenceId.GetHashCode();
            }

            if (Product != null)
            {
                hashCode += Product.GetHashCode();
            }

            if (ClientId != null)
            {
                hashCode += ClientId.GetHashCode();
            }

            if (ShippingAddress != null)
            {
                hashCode += ShippingAddress.GetHashCode();
            }

            if (OrderId != null)
            {
                hashCode += OrderId.GetHashCode();
            }

            return(hashCode);
        }
Esempio n. 4
0
        int tendid; // сохраняет id тендера

        public ReqPage(Tenders sel)
        {
            InitializeComponent();

            if (sel != null)
            {
                tendid       = sel.Id;
                textINN.Text = AuthPage.AuthUser.INN;
            }
            this.DataContext = sel;
        }
Esempio n. 5
0
        /// <summary>
        /// Method to get cash drop tenders
        /// </summary>
        /// <param name="selectedTenders">Selected tenders</param>
        /// <param name="tenders">All Tenders</param>
        /// <param name="totals">totals</param>
        /// <param name="error">Error message</param>
        /// <returns>Tenders</returns>
        private Tenders GetCashDropTenders(List <Tender> selectedTenders, Tenders tenders, decimal
                                           totals, out ErrorMessage error)
        {
            var dateStart = DateTime.Now;

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


            error = new ErrorMessage();
            Sale    sale            = null;
            var     isInvalidTender = false;
            Tenders cashDropTenders = tenders;

            foreach (var tender in selectedTenders)
            {
                var selectedTender = tenders.FirstOrDefault(t => t.Tender_Code == tender.Tender_Code);
                if (selectedTender == null)
                {
                    isInvalidTender = true;
                    break;
                }
                tender.MinAmount = selectedTender.MinAmount;
                tender.MaxAmount = selectedTender.MaxAmount;
                decimal tenderedAmount = VerifyTenderInformation(tender, tender.Amount_Entered,
                                                                 totals, out error);
                if (string.IsNullOrEmpty(error.MessageStyle.Message))
                {
                    //selectedTender = cashDropTenders.Add(selectedTender.Tender_Name, selectedTender.Tender_Class, selectedTender.Exchange_Rate,
                    //    selectedTender.Give_Change, selectedTender.Give_As_Refund, selectedTender.System_Can_Adjust,
                    //    selectedTender.Sequence_Number, selectedTender.Tender_Code, selectedTender.Exact_Change,
                    //    selectedTender.MaxAmount, selectedTender.MinAmount, selectedTender.Smallest_Unit,
                    //    selectedTender.Open_Drawer, Convert.ToDouble(tenderedAmount), selectedTender.PrintCopies,
                    //    selectedTender.AcceptAspayment, selectedTender.SignatureLine,selectedTender.Image, selectedTender.Tender_Code);
                    _tenderManager.Set_Amount_Entered(ref cashDropTenders, ref sale, selectedTender, tenderedAmount, -1);
                }
                else
                {
                    return(null);
                }
            }

            if (isInvalidTender)
            {
                error.MessageStyle = new MessageStyle
                {
                    Message = "Invalid Tender"
                };
                error.StatusCode = System.Net.HttpStatusCode.BadRequest;
                return(null);
            }
            _performancelog.Debug($"End,CashManager,GetCashDropTenders,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");

            return(cashDropTenders);
        }
        /// <summary>
        /// Method to get tender summary
        /// </summary>
        /// <param name="updatedTenders">Updated summary</param>
        /// <returns>Tender summary model</returns>
        private TenderSummaryModel GetTenderSummary(Tenders updatedTenders)
        {
            var    selectedTenders         = updatedTenders.Where(t => t.Amount_Entered != 0);
            string issueStoreCreditMessage = string.Empty;

            if (updatedTenders.EnableCompletePayment)
            {
                issueStoreCreditMessage = _tenderManager.IssueStoreCredit(updatedTenders);
            }
            var tenderSummary = TenderMapper.GetTenderSummaryModel(updatedTenders, issueStoreCreditMessage, selectedTenders);

            return(tenderSummary);
        }
Esempio n. 7
0
 public ActionResult updateTender(Tenders t)
 {
     try
     {
         using (DbtenderEntities1 DB = new DbtenderEntities1())
         {
             var tender = DB.Tenders.Find(Convert.ToInt32(t.numTender));
             tender.status = "סגור";
             tender.winner = t.winner;
             tender.till   = t.till;
             DB.SaveChanges();
         }
     }
     catch (Exception) { }
     return(View());
 }
Esempio n. 8
0
        public JsonResult save(Tenders Tenders)
        {
            bool     status = false;
            DateTime dateOrgF;
            DateTime dateOrgT;
            var      isValidDateFrom = DateTime.TryParseExact(Tenders.from.ToString(), "mm-dd-yyyy", null, System.Globalization.DateTimeStyles.None, out dateOrgF);

            if (isValidDateFrom)
            {
                Tenders.from = dateOrgF;
            }
            var isValidDateTill = DateTime.TryParseExact(Tenders.till.ToString(), "mm-dd-yyyy", null, System.Globalization.DateTimeStyles.None, out dateOrgT);

            if (isValidDateTill)
            {
                Tenders.from = dateOrgT;
            }

            var isValidModel = TryUpdateModel(Tenders);

            if (isValidModel)
            {
                using (DbtenderEntities1 DB = new DbtenderEntities1())
                {
                    //foreach (var item in Tenders.ProducToTender)
                    //{
                    //    DB.ProducToTender.Add(item);
                    //}
                    //DB.SaveChanges();

                    DB.Tenders.Add(Tenders);
                    try
                    {
                        DB.SaveChanges();
                    }
                    catch (Exception)
                    {
                    }

                    status = true;
                }
            }
            return(new JsonResult {
                Data = new { status = status }
            });
        }
Esempio n. 9
0
        /// <summary>
        /// Method to add all drop lines
        /// </summary>
        /// <param name="till">Till</param>
        /// <param name="bt">Base currency</param>
        /// <param name="dropDate">Drop date</param>
        /// <param name="cashDropTenders">Cash drop tenders</param>
        /// <param name="cashDrop">Cash drop</param>
        private void AddDropLines(Till till, string bt, DateTime dropDate, Tenders cashDropTenders, CashDrop cashDrop)
        {
            var dateStart = DateTime.Now;

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


            foreach (Tender tempLoopVarT in cashDropTenders)
            {
                var T = tempLoopVarT;
                if (T.Amount_Entered > 0)
                {
                    var dropLine = new DropLine
                    {
                        TillNumber   = till.Number,
                        DropDate     = dropDate,
                        TenderName   = T.Tender_Name,
                        ExchangeRate = T.Exchange_Rate,
                        Amount       = T.Amount_Entered,
                        ConvAmount   = T.Amount_Used,
                        DropID       = cashDrop.DropID
                    };
                    _cashService.AddDropLine(dropLine);
                    if (T.Tender_Name.ToUpper() == bt.ToUpper())
                    {
                        till.Cash = till.Cash - T.Amount_Entered;
                        _tillService.UpdateTill(till);
                    }
                    //Cash bonus out of scope
                    //  track the cash bonus
                    //if (Policy_Renamed.Use_CashBonus)
                    //{
                    //    if (T.Tender_Name.ToUpper() == modGlobalFunctions.Get_TenderName(System.Convert.ToString(Policy_Renamed.CBonusTend)).ToUpper())
                    //    {
                    //        rs = _dbService.GetRecords("Select *  FROM   Tills  WHERE  Tills.Till_Num = " + till.Number + " ", DataSource.CSCMaster, ADODB.CursorTypeEnum.adOpenForwardOnly);
                    //        rs.Fields["CashBonus"].Value = rs.Fields["CashBonus"].Value - T.Amount_Entered;
                    //        rs.Update();
                    //        rs = null;
                    //    }
                    //}
                    //Shiny end
                }
                _performancelog.Debug($"End,CashManager,AddDropLines,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");
            }
        }
Esempio n. 10
0
        public override bool Equals(object obj)
        {
            if (obj == null)
            {
                return(false);
            }

            if (obj == this)
            {
                return(true);
            }

            return(obj is Order other &&
                   ((Id == null && other.Id == null) || (Id?.Equals(other.Id) == true)) &&
                   ((LocationId == null && other.LocationId == null) || (LocationId?.Equals(other.LocationId) == true)) &&
                   ((ReferenceId == null && other.ReferenceId == null) || (ReferenceId?.Equals(other.ReferenceId) == true)) &&
                   ((Source == null && other.Source == null) || (Source?.Equals(other.Source) == true)) &&
                   ((CustomerId == null && other.CustomerId == null) || (CustomerId?.Equals(other.CustomerId) == true)) &&
                   ((LineItems == null && other.LineItems == null) || (LineItems?.Equals(other.LineItems) == true)) &&
                   ((Taxes == null && other.Taxes == null) || (Taxes?.Equals(other.Taxes) == true)) &&
                   ((Discounts == null && other.Discounts == null) || (Discounts?.Equals(other.Discounts) == true)) &&
                   ((ServiceCharges == null && other.ServiceCharges == null) || (ServiceCharges?.Equals(other.ServiceCharges) == true)) &&
                   ((Fulfillments == null && other.Fulfillments == null) || (Fulfillments?.Equals(other.Fulfillments) == true)) &&
                   ((Returns == null && other.Returns == null) || (Returns?.Equals(other.Returns) == true)) &&
                   ((ReturnAmounts == null && other.ReturnAmounts == null) || (ReturnAmounts?.Equals(other.ReturnAmounts) == true)) &&
                   ((NetAmounts == null && other.NetAmounts == null) || (NetAmounts?.Equals(other.NetAmounts) == true)) &&
                   ((RoundingAdjustment == null && other.RoundingAdjustment == null) || (RoundingAdjustment?.Equals(other.RoundingAdjustment) == true)) &&
                   ((Tenders == null && other.Tenders == null) || (Tenders?.Equals(other.Tenders) == true)) &&
                   ((Refunds == null && other.Refunds == null) || (Refunds?.Equals(other.Refunds) == true)) &&
                   ((Metadata == null && other.Metadata == null) || (Metadata?.Equals(other.Metadata) == true)) &&
                   ((CreatedAt == null && other.CreatedAt == null) || (CreatedAt?.Equals(other.CreatedAt) == true)) &&
                   ((UpdatedAt == null && other.UpdatedAt == null) || (UpdatedAt?.Equals(other.UpdatedAt) == true)) &&
                   ((ClosedAt == null && other.ClosedAt == null) || (ClosedAt?.Equals(other.ClosedAt) == true)) &&
                   ((State == null && other.State == null) || (State?.Equals(other.State) == true)) &&
                   ((Version == null && other.Version == null) || (Version?.Equals(other.Version) == true)) &&
                   ((TotalMoney == null && other.TotalMoney == null) || (TotalMoney?.Equals(other.TotalMoney) == true)) &&
                   ((TotalTaxMoney == null && other.TotalTaxMoney == null) || (TotalTaxMoney?.Equals(other.TotalTaxMoney) == true)) &&
                   ((TotalDiscountMoney == null && other.TotalDiscountMoney == null) || (TotalDiscountMoney?.Equals(other.TotalDiscountMoney) == true)) &&
                   ((TotalTipMoney == null && other.TotalTipMoney == null) || (TotalTipMoney?.Equals(other.TotalTipMoney) == true)) &&
                   ((TotalServiceChargeMoney == null && other.TotalServiceChargeMoney == null) || (TotalServiceChargeMoney?.Equals(other.TotalServiceChargeMoney) == true)) &&
                   ((PricingOptions == null && other.PricingOptions == null) || (PricingOptions?.Equals(other.PricingOptions) == true)) &&
                   ((Rewards == null && other.Rewards == null) || (Rewards?.Equals(other.Rewards) == true)));
        }
Esempio n. 11
0
        /// <summary>
        /// Method to create update cash drop model
        /// </summary>
        /// <param name="updatedTenders">Updated tenders</param>
        /// <returns>Update cash drop model</returns>
        private UpdateCashDropResponseModel GetUpdatedTenders(Tenders updatedTenders)
        {
            var newTenders = updatedTenders.Where(u => u.Amount_Entered != 0);

            var response = new UpdateCashDropResponseModel
            {
                Tenders = newTenders.Select(tender => new TenderResponseModel
                {
                    TenderCode    = tender.Tender_Code,
                    TenderName    = tender.Tender_Name,
                    AmountEntered =
                        tender.Amount_Entered == 0 ? "" : tender.Amount_Entered.ToString(Constants.CurrencyFormat),
                    AmountValue  = tender.Amount_Used == 0 ? "" : tender.Amount_Used.ToString(Constants.CurrencyFormat),
                    MaximumValue = tender.MaxAmount,
                    MinimumValue = tender.MinAmount,
                    Image        = tender.Image
                }).ToList(),
                TenderedAmount = updatedTenders.Tend_Totals.Tend_Used.ToString(Constants.CurrencyFormat)
            };

            return(response);
        }
Esempio n. 12
0
        public override bool Equals(object obj)
        {
            if (obj == null)
            {
                return(false);
            }

            if (obj == this)
            {
                return(true);
            }

            return(obj is Transaction other &&
                   ((Id == null && other.Id == null) || (Id?.Equals(other.Id) == true)) &&
                   ((LocationId == null && other.LocationId == null) || (LocationId?.Equals(other.LocationId) == true)) &&
                   ((CreatedAt == null && other.CreatedAt == null) || (CreatedAt?.Equals(other.CreatedAt) == true)) &&
                   ((Tenders == null && other.Tenders == null) || (Tenders?.Equals(other.Tenders) == true)) &&
                   ((Refunds == null && other.Refunds == null) || (Refunds?.Equals(other.Refunds) == true)) &&
                   ((ReferenceId == null && other.ReferenceId == null) || (ReferenceId?.Equals(other.ReferenceId) == true)) &&
                   ((Product == null && other.Product == null) || (Product?.Equals(other.Product) == true)) &&
                   ((ClientId == null && other.ClientId == null) || (ClientId?.Equals(other.ClientId) == true)) &&
                   ((ShippingAddress == null && other.ShippingAddress == null) || (ShippingAddress?.Equals(other.ShippingAddress) == true)) &&
                   ((OrderId == null && other.OrderId == null) || (OrderId?.Equals(other.OrderId) == true)));
        }
Esempio n. 13
0
        public ActionResult saveUpdateTender(Tenders t)
        {
            ViewBag.Message = "";
            DbtenderEntities1 db = new DbtenderEntities1();
            List <Tenders>    t1 = db.Tenders.ToList();

            foreach (var item in t1)
            {
                if (item.numTender == t.numTender)
                {
                    Tenders t2 = item;
                    t2.name        = t.name;
                    t2.numEditor   = t.numEditor;
                    t2.numType     = t.numType;
                    t2.status      = t.status;
                    t2.typeAcquire = t.typeAcquire;
                    t2.codCategory = t.codCategory;
                    t2.from        = t.from;
                    t2.till        = t.till;
                    t2.hourStart   = t.hourStart;
                    t2.hourFinish  = t.hourFinish;

                    try
                    {
                        db.SaveChanges();
                    }
                    catch (Exception)
                    {
                    }

                    break;
                }
            }

            return(View());
        }
Esempio n. 14
0
        public static void AddTendersForPayment(int saleNumber, Tenders tenders)
        {
            MemCacher.Delete($"TENDERS_{saleNumber}");

            MemCacher.Add($"TENDERS_{saleNumber}", tenders, DateTimeOffset.UtcNow.AddHours(1));
        }
Esempio n. 15
0
        /// <summary>
        /// Save Bottle return
        /// </summary>
        /// <param name="brPayment">Br payment</param>
        /// <param name="userCode">User code</param>
        /// <param name="error">Error message</param>
        /// <param name="bottleReport">Report</param>
        /// <param name="openDrawer">Open drawer or not</param>
        public Sale SaveBottleReturn(BR_Payment brPayment,
                                     out ErrorMessage error, out Report bottleReport, out bool openDrawer)
        {
            bottleReport = null;
            openDrawer   = false;
            var dateStart = DateTime.Now;

            Performancelog.Debug($"Start,BottleManager,SaveBottleReturn,{string.Empty},{DateTime.Now:hh.mm.ss.ffffff}");
            error = new ErrorMessage();
            var offSet       = _policyManager.LoadStoreInfo().OffSet;
            var userCode     = UserCode;
            var user         = _loginManager.GetExistingUser(userCode);
            var existingSale = _saleService.GetSaleByTillNumber(brPayment.TillNumber);

            if (existingSale != null && existingSale.Sale_Lines.Count > 0)
            {
                error.MessageStyle = new MessageStyle
                {
                    Message     = "Please finish current sale before bottle return.~Bottle Return",
                    MessageType = ExclamationOkMessageType
                };
                error.StatusCode = HttpStatusCode.Conflict;
                return(null);
            }
            if (!_policyManager.GetPol("U_BOTTLERTN", user))
            {
                error.MessageStyle = _resourceManager.CreateMessage(offSet, 38, 57, null, ExclamationOkMessageType);
                error.StatusCode   = HttpStatusCode.Forbidden;
                return(null);
            }

            if (brPayment.Amount != 0)
            {
                if (string.IsNullOrEmpty(Convert.ToString(_policyManager.GetPol("BASECURR", null))))
                {
                    error.MessageStyle = _resourceManager.CreateMessage(offSet, 18, 61, null, CriticalOkMessageType);
                    error.StatusCode   = HttpStatusCode.NotFound;
                    return(null);
                }

                if (brPayment.Amount > (decimal)Math.Abs(_policyManager.GetPol("U_BR_LIMIT", user)))
                {
                    // Exceed the bottle return limit, Please get an authorized user!
                    error.MessageStyle = _resourceManager.CreateMessage(offSet, 18, 62, null, CriticalOkMessageType);
                    error.StatusCode   = HttpStatusCode.Forbidden;
                    return(null);
                }

                if (_policyManager.OPEN_DRAWER == "Every Sale")
                {
                    openDrawer = true;
                }
                var sale = new Sale
                {
                    Sale_Totals = { Net = Convert.ToDecimal(brPayment.Amount) }
                };
                var saleTotals = sale.Sale_Totals;
                _saleManager.SetGross(ref saleTotals, sale.Sale_Totals.Net);
                sale.Sale_Totals.Gross        = saleTotals.Gross;
                sale.Sale_Totals.TotalLabel   = saleTotals.TotalLabel;
                sale.Sale_Totals.SummaryLabel = saleTotals.SummaryLabel;
                sale.Register    = brPayment.RegisterNumber;
                sale.Sale_Change = 0;

                sale.TillNumber  = Convert.ToByte(brPayment.TillNumber);
                sale.Sale_Date   = DateTime.Now;
                sale.Sale_Tender = 0;
                sale.Sale_Change = 0;
                sale.Sale_Amount = 0;
                if (_policyManager.GetPol("Penny_Adj", null) && brPayment.Amount != 0)
                {
                    sale.Sale_Totals.Penny_Adj = Helper.Calculate_Penny_Adj(Convert.ToDecimal(brPayment.Amount));
                }
                else
                {
                    sale.Sale_Totals.Penny_Adj = 0;
                }

                brPayment.Penny_Adj = sale.Sale_Totals.Penny_Adj;
                if (existingSale == null)
                {
                    brPayment.Sale_Num = _saleManager.GetCurrentSaleNo(brPayment.TillNumber, userCode, out error);
                }
                var tendBr = new Tenders();
                var tender = tendBr.Add(Convert.ToString(_policyManager.GetPol("BASECURR", null)),
                                        "Cash", 1, true, true, false, (short)1,
                                        Convert.ToString(_policyManager.GetPol("BASECURR", null)),
                                        false, 0, 0, 0.01, true, Convert.ToDouble(-brPayment.Amount),
                                        (short)1, true, false, "", "");
                _tenderManager.Set_Amount_Entered(ref tendBr, ref sale, tender, -brPayment.Amount);

                sale.Sale_Num  = Convert.ToInt32(brPayment.Sale_Num);
                sale.Sale_Type = "BTL RTN";
                var shiftNumber = _tillService.GetTill(brPayment.TillNumber).Shift;
                bottleReport = _receiptManager.Print_BottleReturn(brPayment, user.Name, DateTime.Today,
                                                                  DateTime.Now, sale.Register, (short)brPayment.TillNumber, shiftNumber);
                bottleReport.Copies = _policyManager.BottleReturnReceiptCopies;
                _bottleReturnService.SaveBottleReturnsToDbTrans(brPayment);
                _saleManager.SaveSale(sale, userCode, ref tendBr, null);
                CacheManager.DeleteCurrentSaleForTill(sale.TillNumber, sale.Sale_Num);
                //_saleManager.Clear_Sale(sale.Sale_Num,sale.TillNumber, userCode, "", null, true, false, false, out msg);
                sale = _saleManager.InitializeSale(brPayment.TillNumber, brPayment.RegisterNumber, userCode, out error);
                //Update Sale object in Cache
                CacheManager.AddCurrentSaleForTill(sale.TillNumber, sale.Sale_Num, sale);
                Performancelog.Debug($"End,BottleManager,SaveBottleReturn,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");
                return(sale);
            }
            return(null);
        }
Esempio n. 16
0
        /// <summary>
        /// Void sale
        /// </summary>
        /// <param name="userCode">User code</param>
        /// <param name="saleNumber">Sale number</param>
        /// <param name="tillNumber">Till number</param>
        /// <param name="voidReason">Void reason</param>
        /// <param name="errorMessage">Error</param>
        /// <param name="fs">Report content</param>
        /// <returns>Sale</returns>
        public Sale VoidSale(string userCode, int saleNumber, int tillNumber, string voidReason,
                             out ErrorMessage errorMessage, out Report fs)
        {
            fs = null;
            var dateStart = DateTime.Now;

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

            var sale = _saleManager.GetCurrentSale(saleNumber, tillNumber, 0, userCode, out errorMessage);

            if (!string.IsNullOrEmpty(errorMessage.MessageStyle.Message))
            {
                return(null);
            }
            var offSet = _policyManager.LoadStoreInfo().OffSet;

            //Added for checking delete prepay crash recovery
            if (sale.DeletePrepay)
            {
                //Please complete delete prepay first!~Comlete current transaction.
                errorMessage = new ErrorMessage
                {
                    MessageStyle = _resourceManager.CreateMessage(offSet, 11, 50, null),
                    StatusCode   = HttpStatusCode.PreconditionFailed
                };
                return(null);
            }

            if (sale.Sale_Lines.Count == 0)
            {
                errorMessage = new ErrorMessage
                {
                    MessageStyle = _resourceManager.CreateMessage(offSet, 11, 77, null, MessageType.OkOnly),
                    StatusCode   = HttpStatusCode.BadRequest
                };
                return(null);
            }


            if (CountFuelLines(sale) > 1) // if there are more then 1 line with fuel do not allow to void this sale
            {
                errorMessage = new ErrorMessage
                {
                    MessageStyle = _resourceManager.CreateMessage(offSet, 11, 82, null, MessageType.OkOnly),
                    StatusCode   = HttpStatusCode.BadRequest
                };
                return(null);
            }

            //Added, not allow to void sale with prepay line

            if (_prepayManager.PrepayItemId(ref sale) > 0)
            {
                errorMessage = new ErrorMessage
                {
                    MessageStyle = _resourceManager.CreateMessage(offSet, 11, 82, null, MessageType.OkOnly),
                    StatusCode   = HttpStatusCode.BadRequest
                };
                return(null);
            }

            //crash recovery' if there is partial/ full payment donot allow void
            if (sale.Payment)
            {
                errorMessage = new ErrorMessage
                {
                    MessageStyle = _resourceManager.CreateMessage(offSet, 11, 14, null, MessageType.OkOnly),
                    StatusCode   = HttpStatusCode.BadRequest
                };
                return(null);
            }

            //Added to control void GiveX items
            string lineNumber = string.Empty;

            if (modGlobalFunctions.HasGivexSale(sale, ref lineNumber))
            {
                errorMessage = new ErrorMessage
                {
                    MessageStyle = _resourceManager.CreateMessage(offSet, 11, 22, null, CriticalOkMessageType),
                    StatusCode   = HttpStatusCode.BadRequest
                };
                return(null);
            }
            if (!CanUserVoidSale(userCode, out errorMessage))
            {
                return(null);
            }


            //added to print receipt for Void sales
            if (_policyManager.PRINT_VOID)
            {
                sale.Sale_Type = "VOID";
                Tenders nullTenders = null;
                var     fileName    = string.Empty;
                var     rePrint     = false;
                Stream  signature;
                fs = _receiptManager.Print_Receipt(sale.TillNumber, null, ref sale, ref nullTenders,
                                                   true, ref fileName, ref rePrint, out signature, userCode);
            }

            var newSale = new Sale
            {
                Sale_Num =
                    _saleManager.Clear_Sale(sale, sale.Sale_Num, sale.TillNumber, userCode, "VOID", null, true, true,
                                            false, out errorMessage)
            };

            CacheManager.DeleteCurrentSaleForTill(sale.TillNumber, sale.Sale_Num);
            newSale.TillNumber = sale.TillNumber;
            newSale.Customer   = _customerManager.LoadCustomer(string.Empty);
            newSale.Register   = sale.Register;
            newSale.SaleHead   = new SaleHead();
            newSale.Payment    = false;
            _saleHeadManager.SetSalePolicies(ref newSale);
            _saleManager.SaveTemp(ref newSale, newSale.TillNumber);
            Register register = null;

            _mainManager.SetRegister(ref register, newSale.Register);
            if (register.Customer_Display)
            {
                newSale.CustomerDisplay = _mainManager.DisplayMsgLcd(register,
                                                                     _mainManager.FormatLcdString(register, _resourceManager.GetResString(offSet, 414) + "#:",
                                                                                                  Conversion.Str(newSale.Sale_Num).Trim()), "");
            }
            CacheManager.AddCurrentSaleForTill(newSale.TillNumber, newSale.Sale_Num, newSale);
            Performancelog.Debug($"End,SuspendedSaleManager,VoidSale,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");
            return(newSale);
        }
        /// <summary>
        /// Return Sale
        /// </summary>
        /// <param name="user">User</param>
        /// <param name="saleNumber">Sale number</param>
        /// <param name="tillNumber">Till number</param>
        /// <param name="saleTillNumber"></param>
        /// <param name="correction">Correction sale or not</param>
        /// <param name="reasonCode">Reason code</param>
        /// <param name="message">Error</param>
        /// <param name="reasonType">Reason type</param>
        /// <param name="saleLineMessages">Sale line messages</param>
        /// <param name="report"></param>
        /// <param name="fileName"></param>
        /// <returns>Sale</returns>
        public Sale ReturnSale(User user, int saleNumber, int tillNumber, int saleTillNumber, bool correction,
                               string reasonType, string reasonCode, out ErrorMessage message, out List <ErrorMessage>
                               saleLineMessages, out Report report, out string fileName)
        {
            Sale     sale     = new Sale();
            DateTime saleDate = DateTime.Now.AddDays(-Convert.ToInt16(_policyManager.GetPol("RES_DAYS", null)));

            saleLineMessages = new List <ErrorMessage>();
            report           = null;
            fileName         = string.Empty;
            if (!IsUserAbleToReturn(user, out message))
            {
                return(sale);
            }

            Sale_Line sl;
            var       blnRecReason = false;
            bool      isReturnable;
            bool      isSaleFound;

            sale = _returnSaleService.GetSaleBySaleNumber(saleNumber, saleTillNumber, saleDate, _policyManager.TE_Type, _policyManager.TE_GETNAME, _policyManager.TAX_EXEMPT_GA, _policyManager.DefaultCust, _policyManager.DEF_CUST_CODE, out isSaleFound, out isReturnable);
            var offSet = _policyManager.LoadStoreInfo().OffSet;

            if (!isSaleFound)
            {
                message = new ErrorMessage
                {
                    MessageStyle = _resourceManager.CreateMessage(offSet, 40, 98, null)
                };
                return(sale);
            }

            if (!isReturnable)
            {
                message = new ErrorMessage
                {
                    MessageStyle = _resourceManager.CreateMessage(offSet, 40, 95, saleDate)
                };
                return(sale);
            }
            var sal = _saleService.GetSaleByTillNumber(tillNumber);// _saleService.GetSalesFromDbTemp(tillNumber);

            sale.Sale_Num   = sal?.Sale_Num ?? _saleManager.GetCurrentSaleNo(tillNumber, user.Code, out message);
            sale.TillNumber = (byte)tillNumber;
            _saleHeadManager.SetSalePolicies(ref sale);
            var saleLines = _returnSaleService.GetSaleLineBySaleNumber(saleNumber, saleTillNumber, saleDate, sale.Customer.DiscountType, _policyManager.TE_Type, _policyManager.TAX_EXEMPT);

            //_suspendedSaleService.RemovePreviousTransactionFromDbTemp(tillNumber);

            foreach (var saleLine in saleLines)
            {
                saleLine.PRICE_DEC = CommonUtility.GetShortValue(_policyManager.GetPol("PRICE_DEC", saleLine));
                saleLine.QUANT_DEC = CommonUtility.GetShortValue(_policyManager.GetPol("QUANT_DEC", saleLine));
                if (_policyManager.GetPol("ACCEPT_RET", saleLine) && saleLine.GiftType != "GiveX")
                {
                    var newSaleLine = saleLine;
                    newSaleLine.Till_Num = sale.TillNumber;
                    var          quantity     = saleLine.Quantity;
                    var          price        = saleLine.price;
                    var          amount       = saleLine.Amount;
                    var          discountRate = saleLine.Discount_Rate;
                    var          discountType = saleLine.Discount_Type;
                    ErrorMessage error;
                    _saleLineManager.SetPluCode(ref sale, ref newSaleLine, newSaleLine.PLU_Code, out error);

                    if (newSaleLine.ProductIsFuel && !newSaleLine.IsPropane)
                    {
                        newSaleLine.Regular_Price = Convert.ToDouble(newSaleLine.price);
                    }

                    if (newSaleLine.Gift_Certificate && newSaleLine.GiftType == "LocalGift")
                    {
                        newSaleLine.Description = _resourceManager.GetResString(offSet, 8124) + newSaleLine.Gift_Num;
                    }
                    _saleManager.Add_a_Line(ref sale, newSaleLine, user.Code, sale.TillNumber, out message, adjust: false, tableAdjust: false,
                                            forRefund: true);

                    newSaleLine.No_Loading = false;
                    if (newSaleLine.ScalableItem)
                    {
                        newSaleLine.Regular_Price = newSaleLine.price;
                    }

                    _saleLineManager.SetPrice(ref newSaleLine, price);
                    _saleLineManager.SetQuantity(ref newSaleLine, quantity);
                    _saleLineManager.SetAmount(ref newSaleLine, amount);
                    saleLine.Discount_Type = discountType;
                    _saleLineManager.SetDiscountRate(ref newSaleLine, discountRate);
                    newSaleLine.No_Loading = false; // It has to be set back to false, otherwise if the user changes the qty or price in the POS screen after unsuspend, the amount will not be right
                }
                else
                {
                    saleLineMessages.Add(new ErrorMessage
                    {
                        MessageStyle = _resourceManager.CreateMessage(offSet, 0, 8109, saleLine.Stock_Code + " " + saleLine.Description,
                                                                      CriticalOkMessageType)
                    });
                }
            }

            _saleManager.Sale_Discount(ref sale, Convert.ToDecimal(sale.Sale_Totals.Invoice_Discount),
                                       Convert.ToString(sale.Sale_Totals.Invoice_Discount_Type), false);
            sale.ForCorrection = correction; // 06/24/05 Nancy added ForCorrection
                                             //    CL = "" ' code
                                             //SaleMain.Default.lblCustName.Text = sale.Customer.Name;
            foreach (var tempLoopVarSl in saleLines)
            {
                sl            = tempLoopVarSl;
                sl.No_Loading = false;
            }
            sale.LoadingTemp = false;

            foreach (var tempLoopVarSl in saleLines)
            {
                sl = tempLoopVarSl;
                if (!_policyManager.GetPol("RET_REASON", sl))
                {
                    continue;
                }
                blnRecReason = true;
                break;
            }

            if (blnRecReason)
            {
                ReasonType rType;
                Enum.TryParse(reasonType, true, out rType);
                var returnReason = (char)rType != '\0' ? _reasonService.GetReturnReason(reasonCode, (char)rType) : new Return_Reason {
                    RType = "R"
                };
                foreach (var tempLoopVarSl in saleLines)
                {
                    sl = tempLoopVarSl;
                    _saleManager.Line_Reason(ref sale, ref sl, returnReason);
                }
            }
            _saleManager.SaveTemp(ref sale, tillNumber);
            //Update Sale object in Cache
            sale.ReverseRunaway  = sale.Sale_Type == "RUNAWAY" && sale.Sale_Amount > 0;  //
            sale.ReversePumpTest = sale.Sale_Type == "PUMPTEST" && sale.Sale_Amount > 0; //
            if (sale.ReverseRunaway)
            {
                var newLineMessage = new ErrorMessage
                {
                    MessageStyle = _resourceManager.CreateMessage(offSet, 11, 25, null)
                };
                saleLineMessages.Add(newLineMessage);
                Tenders nullTenders = null;
                fileName = Constants.RunAwayFile;
                var    file    = "Runaway";
                var    rePrint = false;
                Stream signature;
                sale.Sale_Type = "RUNAWAY";
                report         = _receiptManager.Print_Receipt(tillNumber, null, ref sale, ref nullTenders, true, ref file,
                                                               ref rePrint, out signature, user.Code);
                _saleManager.Clear_Sale(sale, sale.Sale_Num, sale.TillNumber, user.Code, "RUNAWAY", null, false, true, false, out message);

                ErrorMessage error;
                sale = _saleManager.InitializeSale(tillNumber, sale.Register, user.Code, out error);
            }
            if (sale.ReversePumpTest)
            {
                var newLineMessage = new ErrorMessage
                {
                    MessageStyle = _resourceManager.CreateMessage(offSet, 11, 27, null)
                };
                saleLineMessages.Add(newLineMessage);
                Tenders nullTenders = null;
                fileName = Constants.PumpTestFile;
                var    file    = "PumpTest";
                var    rePrint = false;
                Stream signature;
                sale.Sale_Type = "PUMPTEST";
                report         = _receiptManager.Print_Receipt(tillNumber, null, ref sale, ref nullTenders, true, ref file, ref rePrint, out signature, user.Code);
                _saleManager.Clear_Sale(sale, sale.Sale_Num, sale.TillNumber, user.Code, "PUMPTEST", null, false, true, false, out message);
                ErrorMessage error;
                sale = _saleManager.InitializeSale(tillNumber, sale.Register, user.Code, out error);
            }
            CacheManager.AddCurrentSaleForTill(sale.TillNumber, sale.Sale_Num, sale);
            return(sale);
        }
 public SaleSummaryResponse()
 {
     SaleSummary = new Dictionary <string, string>();
     Tenders     = new Tenders();
 }
Esempio n. 19
0
 public Payment(Tenders tender)
 {
     this.Tender = tender;
 }
Esempio n. 20
0
        //private void Top_Box()
        //{
        //    //    mvarTopLeft.Caption = GetResString(278) & " : " & vbCrLf
        //    mvarTopLeft.Text = Chaps_Main.Resource.DisplayCaption((short)278, (short)0, null, (short)0) + " : " + "\r\n";
        //    mvarTopRight.Text = this.PrepAmount.ToString("###,##0.00") + "\r\n";
        //}



        private void Class_Terminate_Renamed()
        {
            mvarTenders  = null;
            mvarCustomer = null;
        }
Esempio n. 21
0
        /// <summary>
        /// Method to construct the reciept of wex tranaction
        /// </summary>
        /// <param name="width"></param>
        /// <param name="name"></param>
        /// <param name="saleNumber"></param>
        /// <param name="terminalId"></param>
        /// <param name="cardNumber"></param>
        /// <param name="sequenceNumber"></param>
        /// <param name="approvalCode"></param>
        /// <param name="tenders"></param>
        /// <returns></returns>
        private string CreateWexReciept(short width, string name, string saleNumber, string terminalId, string cardNumber, string sequenceNumber, string approvalCode, Tenders tenders)
        {
            var wexReciept      = "";
            var tempStringArray = new string[5];

            wexReciept         = "";
            tempStringArray[0] = terminalId;
            tempStringArray[1] = PosId.ToString();
            tempStringArray[2] = System.Convert.ToString(_encryptDecryptManager.Encrypt(cardNumber, "C"));
            tempStringArray[3] = sequenceNumber;
            tempStringArray[4] = approvalCode;
            wexReciept         = wexReciept + "\r\n" + modStringPad.PadR(name, width);
            if (Strings.Left(System.Convert.ToString(_policyManager.LoadStoreInfo().Language), 1).ToUpper() == "F")
            {
                wexReciept = wexReciept + "\r\n" + modStringPad.PadR("Terminal Id: " + tempStringArray[0], width) + "\r\n";
                wexReciept = wexReciept + "\r\n" + modStringPad.PadR("Acc#: " + tempStringArray[2], width);
                wexReciept = wexReciept + "\r\n" + modStringPad.PadR("PD Seq#: " + tempStringArray[3], width);
                wexReciept = wexReciept + "\r\n" + modStringPad.PadR("Récupération Numéro de référence: " + saleNumber, width);
                wexReciept = wexReciept + "\r\n" + modStringPad.PadR("Code d\'autorisation: " + tempStringArray[4], width);

                wexReciept = wexReciept + "\r\n" + "\r\n" + "\r\n" + modStringPad.PadR(_resourceManager.GetResString(_policyManager.LoadStoreInfo().OffSet, (short)247) + ":  ", width, "_"); //Signature
                wexReciept = wexReciept + "\r\n" + "    Le Titulaire versera ce montant a  ";
                wexReciept = wexReciept + "\r\n" + "        L\'emetteur conformement au    ";
                wexReciept = wexReciept + "\r\n" + "             contrat adherent  ";
            }
            else
            {
                wexReciept = wexReciept + "\r\n" + modStringPad.PadR("Terminal Id: " + tempStringArray[0], width) + "\r\n";
                wexReciept = wexReciept + "\r\n" + modStringPad.PadR("Acc#: " + tempStringArray[2], width);
                wexReciept = wexReciept + "\r\n" + modStringPad.PadR("PD Seq#: " + tempStringArray[3], width);
                wexReciept = wexReciept + "\r\n" + modStringPad.PadR("Retrieval Reference Number: " + saleNumber, width);
                wexReciept = wexReciept + "\r\n" + modStringPad.PadR("Approval Code: " + tempStringArray[4], width);

                wexReciept = wexReciept + "\r\n" + "\r\n" + "\r\n" + modStringPad.PadR(_resourceManager.GetResString(_policyManager.LoadStoreInfo().OffSet, (short)247) + ":  ", 40, "_"); //Signature
                wexReciept = wexReciept + "\r\n" + "CUSTOMER AGREES TO PAY THE ABOVE AMOUNT";
                wexReciept = wexReciept + "\r\n" + " ACCORDING TO THE CARD ISSUER AGREEMENT";
            }
            wexReciept = wexReciept + "\r\n";
            return(wexReciept);
        }
Esempio n. 22
0
        public static void AddTenders(string transactionType, string reason, Tenders tenders)
        {
            MemCacher.Delete($"TENDERS_{transactionType}_{reason}");

            MemCacher.Add($"TENDERS_{transactionType}_{reason}", tenders, DateTimeOffset.UtcNow.AddHours(1));
        }
Esempio n. 23
0
 public Payment(Tenders tender)
 {
     this.tender = tender;
 }
Esempio n. 24
0
        public override int GetHashCode()
        {
            int hashCode = 401631729;

            if (Id != null)
            {
                hashCode += Id.GetHashCode();
            }

            if (LocationId != null)
            {
                hashCode += LocationId.GetHashCode();
            }

            if (ReferenceId != null)
            {
                hashCode += ReferenceId.GetHashCode();
            }

            if (Source != null)
            {
                hashCode += Source.GetHashCode();
            }

            if (CustomerId != null)
            {
                hashCode += CustomerId.GetHashCode();
            }

            if (LineItems != null)
            {
                hashCode += LineItems.GetHashCode();
            }

            if (Taxes != null)
            {
                hashCode += Taxes.GetHashCode();
            }

            if (Discounts != null)
            {
                hashCode += Discounts.GetHashCode();
            }

            if (ServiceCharges != null)
            {
                hashCode += ServiceCharges.GetHashCode();
            }

            if (Fulfillments != null)
            {
                hashCode += Fulfillments.GetHashCode();
            }

            if (Returns != null)
            {
                hashCode += Returns.GetHashCode();
            }

            if (ReturnAmounts != null)
            {
                hashCode += ReturnAmounts.GetHashCode();
            }

            if (NetAmounts != null)
            {
                hashCode += NetAmounts.GetHashCode();
            }

            if (RoundingAdjustment != null)
            {
                hashCode += RoundingAdjustment.GetHashCode();
            }

            if (Tenders != null)
            {
                hashCode += Tenders.GetHashCode();
            }

            if (Refunds != null)
            {
                hashCode += Refunds.GetHashCode();
            }

            if (Metadata != null)
            {
                hashCode += Metadata.GetHashCode();
            }

            if (CreatedAt != null)
            {
                hashCode += CreatedAt.GetHashCode();
            }

            if (UpdatedAt != null)
            {
                hashCode += UpdatedAt.GetHashCode();
            }

            if (ClosedAt != null)
            {
                hashCode += ClosedAt.GetHashCode();
            }

            if (State != null)
            {
                hashCode += State.GetHashCode();
            }

            if (Version != null)
            {
                hashCode += Version.GetHashCode();
            }

            if (TotalMoney != null)
            {
                hashCode += TotalMoney.GetHashCode();
            }

            if (TotalTaxMoney != null)
            {
                hashCode += TotalTaxMoney.GetHashCode();
            }

            if (TotalDiscountMoney != null)
            {
                hashCode += TotalDiscountMoney.GetHashCode();
            }

            if (TotalTipMoney != null)
            {
                hashCode += TotalTipMoney.GetHashCode();
            }

            if (TotalServiceChargeMoney != null)
            {
                hashCode += TotalServiceChargeMoney.GetHashCode();
            }

            if (PricingOptions != null)
            {
                hashCode += PricingOptions.GetHashCode();
            }

            if (Rewards != null)
            {
                hashCode += Rewards.GetHashCode();
            }

            return(hashCode);
        }
Esempio n. 25
0
        /// <summary>
        /// Method to save vendor payout
        /// </summary>
        /// <param name="po">Payout</param>
        /// <param name="tillNumber">Till number</param>
        /// <param name="userCode">User code</param>
        /// <param name="registerNumber">Register number</param>
        /// <param name="taxes">Taxes</param>
        /// <param name="openDrawer">Open cash drawer</param>
        /// <param name="error">Error message</param>
        /// <returns>Report</returns>
        public Report SaveVendorPayout(Payout po, int tillNumber, string userCode, byte registerNumber,
                                       List <Tax> taxes, out bool openDrawer, out ErrorMessage error)
        {
            openDrawer = false;
            var sale   = _saleManager.GetCurrentSale(po.Sale_Num, tillNumber, 0, userCode, out error);
            var offSet = _policyManager.LoadStoreInfo().OffSet;

            if (!string.IsNullOrEmpty(error.MessageStyle.Message))
            {
                return(null);
            }
            if (!_policyManager.DO_PAYOUTS || (sale != null && sale.Sale_Lines.Count > 0))
            {
                MessageType temp_VbStyle8 = (int)MessageType.Exclamation + MessageType.OkOnly;
                error.MessageStyle = _resourceManager.CreateMessage(offSet, 38, 54, null, temp_VbStyle8);
                return(null);
            }
            if (po.Gross > (decimal)214748.3647)
            {
                error = new ErrorMessage
                {
                    MessageStyle = new MessageStyle
                    {
                        Message = "Maximum payout amount is 214748.3647"
                    }
                };
                return(null);
            }
            var salePo = new Sale();
            var tendPo = new Tenders();



            var curr = Convert.ToString(_policyManager.BASECURR);

            if (string.IsNullOrEmpty(curr))
            {
                MessageType temp_VbStyle = (int)MessageType.OkOnly + MessageType.Critical;
                error.MessageStyle = _resourceManager.CreateMessage(offSet, 23, 94, null, temp_VbStyle);
                return(null);
            }
            var   poTaxes  = _taxService.GetAllTaxes();
            float sumTaxes = 0;

            foreach (var tax in taxes)
            {
                if (poTaxes.Any(p => p.TaxName == tax.Code))
                {
                    po.Payout_Taxes.Add(tax.Code, "", tax.Amount, true, tax.Code);
                    salePo.Sale_Totals.Sale_Taxes.Add(tax.Code, "I", 0, 0, 0, tax.Amount, po.Gross, 0, 0, "");
                    sumTaxes = (float)(sumTaxes + Conversion.Val(tax.Amount));
                }
                else
                {
                    MessageType temp_VbStyle8 = (int)MessageType.Exclamation + MessageType.OkOnly;
                    error.MessageStyle = new MessageStyle
                    {
                        Message     = "Invalid tax entered",
                        MessageType = temp_VbStyle8
                    };
                    return(null);
                }
            }
            if (!string.IsNullOrEmpty(po.Vendor.Code))
            {
                po.Vendor = _stockService.GetVendorByCode(po.Vendor.Code);
                if (po.Vendor.Code == null)
                {
                    MessageType temp_VbStyle2 = (int)MessageType.Critical + MessageType.OkOnly;
                    error.MessageStyle = new MessageStyle
                    {
                        Message     = "Invalid vendor code",
                        MessageType = temp_VbStyle2
                    };
                    return(null);
                }
            }
            // Nicoolette changed next line on Nov 13,2007 to allow negative payouts, based on Mr. Gas requirement
            if (po.Gross == 0)
            {
                //    If PO.Gross <= 0 Then
                //You must specify the Payout Amount, vbCritical + vbOKOnly
                MessageType temp_VbStyle2 = (int)MessageType.Critical + MessageType.OkOnly;
                error.MessageStyle = _resourceManager.CreateMessage(offSet, 23, 91, null, temp_VbStyle2);
                return(null);
            }

            if (_policyManager.PO_REASON)
            {
                po.Return_Reason = _reasonService.GetReturnReason(po.Return_Reason.Reason, (char)ReasonType.Payouts);
                if (po.Return_Reason == null)
                {
                    MessageType temp_VbStyle2 = (int)MessageType.Critical + MessageType.OkOnly;
                    error.MessageStyle = _resourceManager.CreateMessage(offSet, 23, 92, null, temp_VbStyle2);
                    return(null);
                }
                salePo.Return_Reason = po.Return_Reason;
            }


            var till = _tillService.GetTill(tillNumber);

            till.Cash = till.Cash - po.Gross;
            _tillService.UpdateTill(till);
            if (_policyManager.OPEN_DRAWER == "Every Sale")
            {
                openDrawer = true;
            }



            tendPo.Add(curr, "Cash", 1, true, true, false, 1, curr, false, 0, 0, 0.01, true, Convert.ToDouble((object)-po.Gross), 1, true, false, "", "");
            _tenderManager.Set_Amount_Entered(ref tendPo, ref salePo, tendPo[1], -po.Gross, -1);
            // payout

            if (_policyManager.PENNY_ADJ && po.Gross != 0)
            {
                salePo.Sale_Totals.Penny_Adj = modGlobalFunctions.Calculate_Penny_Adj(po.Gross);
            }
            else
            {
                salePo.Sale_Totals.Penny_Adj = 0;
            }
            po.Penny_Adj = salePo.Sale_Totals.Penny_Adj;
            //   end

            salePo.Sale_Totals.Net = po.Gross; // - Sum_Taxes   Nicolette commented out,
                                               // once for payout all taxes are included, don't subtract the taxes,
                                               // this will afect Sale_Amt in SaleHead, March 07, 2003

            var saleTotals = salePo.Sale_Totals;

            _saleManager.SetGross(ref saleTotals, salePo.Sale_Totals.Net);
            salePo.Sale_Totals.Gross        = saleTotals.Gross;
            salePo.Sale_Totals.TotalLabel   = saleTotals.TotalLabel;
            salePo.Sale_Totals.SummaryLabel = saleTotals.SummaryLabel;

            salePo.Register    = Convert.ToByte(registerNumber);
            salePo.Sale_Change = 0;

            salePo.TillNumber         = Convert.ToByte(tillNumber);
            salePo.Sale_Date          = DateTime.Now;
            salePo.Sale_Tender        = 0;
            salePo.Sale_Totals.PayOut = po.Gross;
            salePo.Sale_Change        = 0;
            salePo.Sale_Amount        = 0;
            if (po.Sale_Num == 0)
            {
                salePo.Sale_Num = _saleManager.GetSaleNo(tillNumber, userCode, out error);
            }
            else
            {
                salePo.Sale_Num = po.Sale_Num;
            }

            po.Penny_Adj = salePo.Sale_Totals.Penny_Adj; //

            salePo.Sale_Type = "PAYOUT";
            salePo.Vendor    = po.Vendor.Code;
            var user   = _userService.GetUser(userCode);
            var stream = _receiptManager.Print_Payout(po, userCode, user.Name, DateTime.Today,
                                                      salePo.Sale_Date, registerNumber,
                                                      till);

            stream.Copies = _policyManager.PayoutReceiptCopies;
            _saleManager.SaveSale(salePo, userCode, ref tendPo, null);


            _saleManager.Clear_Sale(salePo, po.Sale_Num, salePo.TillNumber, userCode, "", null,
                                    false, false, false, out error);


            return(stream);
        }
        public static Transaction GenerateTransactionWithAllFields(Common common)
        {
            Transaction transaction = new Transaction();
            Items       item        = new Items();
            Discounts   discount    = new Discounts();
            Rewards     reward      = new Rewards();
            Tenders     tender      = new Tenders();

            transaction.transactionId     = common.RandomNumber(12);
            transaction.transactionType   = Convert.ToInt32(common.RandomNumber(1));
            transaction.transactionDate   = System.DateTime.Now;
            transaction.registerNumber    = "1";
            transaction.storeId           = 1;
            transaction.brandId           = common.RandomString(6);
            transaction.creditsUsed       = Convert.ToInt32(common.RandomNumber(3));
            transaction.creditCardId      = Convert.ToInt32(common.RandomNumber(8));
            transaction.maskId            = "xxxxxxxxxxxx" + common.RandomNumber(4);
            transaction.transactionNumber = common.RandomString(8);
            transaction.webOrderNumber    = common.RandomString(8);
            transaction.amount            = Math.Round(random.NextDouble() * 1000, 4);
            transaction.qualifyingAmount  = random.NextDouble() * 100;
            transaction.discountAmount    = random.NextDouble() * 10;
            transaction.employeeId        = common.RandomString(10);
            transaction.channel           = common.RandomString(3);
            transaction.items             = new List <Items>();
            transaction.discounts         = new List <Discounts>();
            transaction.rewards           = new List <Rewards>();
            transaction.tenders           = new List <Tenders>();

            item.discountAmount = random.NextDouble() * 10;
            item.itemId         = common.RandomString(5);
            item.productId      = Convert.ToInt32(common.RandomNumber(3));
            item.itemTypeId     = Convert.ToInt32(common.RandomNumber(1));
            item.clearanceItem  = Convert.ToInt32(common.RandomNumber(3));
            item.itemNumber     = Convert.ToInt32(common.RandomNumber(3));
            item.retailAmount   = random.NextDouble() * 100;
            item.saleAmount     = random.NextDouble() * 100;
            item.actionId       = Convert.ToInt32(common.RandomNumber(1));
            item.transactionId  = transaction.transactionId;
            item.quantity       = Convert.ToInt32(common.RandomNumber(3));

            discount.discountAmount  = random.NextDouble() * 10;
            discount.offerCode       = common.RandomString(10);
            discount.discountId      = common.RandomString(10);
            discount.itemId          = common.RandomString(10);
            discount.discountType    = common.RandomString(10);
            discount.transactionId   = transaction.transactionId;
            discount.transactionDate = transaction.transactionDate;

            tender.tenderId      = common.RandomString(8);
            tender.tenderType    = Convert.ToInt32(common.RandomNumber(1));
            tender.amount        = random.NextDouble() * 1000;
            tender.currency      = common.RandomString(3);
            tender.taxRate       = random.NextDouble() * 10;
            tender.taxAmount     = random.NextDouble() * 100;
            tender.transactionId = transaction.transactionId;

            reward.itemId          = common.RandomString(10);
            reward.rewardType      = Convert.ToInt32(common.RandomNumber(1));
            reward.rewardCode      = common.RandomString(10);
            reward.discountAmount  = random.NextDouble() * 100;
            reward.programId       = Convert.ToInt32(common.RandomNumber(1));
            reward.transactionId   = transaction.transactionId;
            reward.transactionDate = transaction.transactionDate;

            transaction.items.Add(item);
            transaction.discounts.Add(discount);
            transaction.tenders.Add(tender);
            transaction.rewards.Add(reward);
            return(transaction);
        }
Esempio n. 27
0
 private void Class_Initialize_Renamed()
 {
     mvarTenders  = new Tenders();
     mvarCustomer = new Customer();
 }