public void add(CSSaleItemDiscount csSaleItemDiscount) { using (context = new CSFPOSWareContext()) { context.CSSaleItemDiscounts.Add(csSaleItemDiscount); try { context.SaveChanges(); } catch (Exception e) { Logger.log.Error(e.Message); Logger.log.Error(e.StackTrace); } } }
public void remove(CSSaleItemDiscount csSaleItemDiscount) { csSaleItemDiscount = get(csSaleItemDiscount.CSSaleItemDiscountID); if (null != csSaleItemDiscount) { using (context = new CSFPOSWareContext()) { context.CSSaleItemDiscounts.Remove(csSaleItemDiscount); try { context.SaveChanges(); } catch (Exception e) { Logger.log.Error(e.Message); Logger.log.Error(e.StackTrace); Logger.log.Error(e.InnerException.StackTrace); } } } }
private void _buildCSSaleItem(List<Seat> seats) { List<Discount> discounts = maintenanceDAO.getDiscounts(); //Logger.log.Debug(discounts); SaleItemDiscountDAO saleItemDiscountDAO = new SaleItemDiscountDAO(); ItemDAO itemDAO = new ItemDAO(); foreach (Seat seat in seats) { seat.csSaleItems = new List<CSSaleItem>(); foreach (SaleItem saleItem in seat.saleItems) { Item item = itemDAO.get(saleItem.ItemName); //Logger.log.Debug(BaseModel.ToString(saleItem)); List<SaleItemDiscount> saleItemDiscounts = saleItemDiscountDAO.find(saleItem.SaleItemID.ToString()); //double discountAmount = 0; decimal vatableAmount = Util.Number.fposToMoney(saleItem.BasePrice); decimal vatableTax = Util.Number.fposToMoney(saleItem.BasePrice) / new decimal(1.12) * new decimal(0.12); decimal vatExemptAmount = 0; decimal vatExemptTax = 0; decimal zeroRatedAmount = 0; decimal zeroRatedtax = 0; decimal amountDue = Util.Number.fposToMoney(saleItem.BasePrice); bool hasSCDisc = false; bool hasPWDDisc = false; foreach (SaleItemDiscount saleItemDiscount in saleItemDiscounts) { Logger.log.Debug(saleItem.ItemName + " discountIndex : " + saleItemDiscount.DiscountIndex); CSConfigurationDAO csConfigurationDAO = new CSConfigurationDAO(); int PWDMapIndex = int.Parse(csConfigurationDAO.get(CSConfiguration.Sections.DiscountIndexMap, CSConfiguration.Parameters.PWDIndex).Value); int SeniorMapIndex = int.Parse(csConfigurationDAO.get(CSConfiguration.Sections.DiscountIndexMap, CSConfiguration.Parameters.SeniorIndex).Value); Discount currDiscount = discounts[saleItemDiscount.DiscountIndex]; decimal discountAmount = 0; if (saleItemDiscount.DiscountIndex == SeniorMapIndex) {//Senior - refer to this file for computation : https://condorsolutions.slack.com/files/otalusan/F0E994FEK/senior_discount_computation.txt discountAmount += (Util.Number.fposToMoney(saleItem.BasePrice) / new decimal(1.12)) * currDiscount.PercentOff / 10000; vatableAmount = 0; vatableTax = 0; vatExemptAmount = Util.Number.fposToMoney(saleItem.BasePrice); vatExemptTax = Util.Number.fposToMoney(saleItem.BasePrice) / new decimal(1.12) * new decimal(0.12); amountDue -= discountAmount; } else if (saleItemDiscount.DiscountIndex == PWDMapIndex) {//PWD if (Main.GlobalValues.mallSetup.Equals(CSConfiguration.Values.Megaworld)) {//Megaworld setup discountAmount += Util.Number.fposToMoney(saleItem.BasePrice) * currDiscount.PercentOff / 10000; vatableAmount = Util.Number.fposToMoney(saleItem.BasePrice); vatableTax = Util.Number.fposToMoney(saleItem.BasePrice) / new decimal(1.12) * new decimal(0.12); amountDue -= discountAmount; } else if (Main.GlobalValues.mallSetup.Equals(CSConfiguration.Values.SM)) {//SM setup discountAmount += Util.Number.fposToMoney(saleItem.BasePrice) / new decimal(1.12) * currDiscount.PercentOff / 10000; decimal pwdAmountDue = amountDue - Util.Number.fposToMoney(saleItem.BasePrice) * currDiscount.PercentOff / 10000; vatableAmount = pwdAmountDue; vatableTax = pwdAmountDue / new decimal(1.12) * new decimal(0.12); amountDue -= Util.Number.fposToMoney(saleItem.BasePrice) * currDiscount.PercentOff / 10000; } } else //other discounts not PWD and Senior { vatableAmount = Util.Number.fposToMoney(saleItem.BasePrice); vatableTax = Util.Number.fposToMoney(saleItem.BasePrice) / new decimal(1.12) * new decimal(0.12); discountAmount += Util.Number.fposToMoney(saleItemDiscount.Amount); amountDue -= discountAmount; } //TODO: otalusan: Zero-rated items if (item.TaxFlags == 4) { Logger.log.Info("TODO: otalusan: Zero-rated items"); } CSSaleItemDiscount csSaleItemDiscount = new CSSaleItemDiscount(); csSaleItemDiscount.CSSaleItemDiscountID = saleItemDiscount.SaleItemDiscountID; csSaleItemDiscount.CSSaleItemID = saleItemDiscount.SaleItemID; csSaleItemDiscount.ItemIndex = saleItemDiscount.ItemIndex; csSaleItemDiscount.DiscountName = currDiscount.DiscountName; csSaleItemDiscount.Amount = discountAmount; CSSaleItemDiscountDAO csSaleItemDiscountDAO = new CSSaleItemDiscountDAO(); Logger.log.Debug(BaseModel.ToString(csSaleItemDiscount)); //csSaleItemDiscountDAO.remove(csSaleItemDiscount); csSaleItemDiscountDAO.add(csSaleItemDiscount); break;//Apply only ONE discount }//foreach(SaleItemDiscount saleItemDiscount in saleItemDiscounts) CSSaleItemTaxDAO csSaleItemTaxDAO = new CSSaleItemTaxDAO(); // csSaleItemTaxDAO.removeBySaleItem(saleItem);//cleanup //1. VAT sales CSSaleItemTax csSaleItemTaxVAT = new CSSaleItemTax(); csSaleItemTaxVAT.CSSaleItemID = saleItem.SaleItemID; csSaleItemTaxVAT.Type = CSSaleItemTax.Types.VAT; csSaleItemTaxVAT.Amount = vatableAmount; csSaleItemTaxVAT.Tax = vatableTax; if (csSaleItemTaxVAT.Amount > 0) csSaleItemTaxDAO.add(csSaleItemTaxVAT); //2. VAT exempt sales CSSaleItemTax csSaleItemTaxVATExempt = new CSSaleItemTax(); csSaleItemTaxVATExempt.CSSaleItemID = saleItem.SaleItemID; csSaleItemTaxVATExempt.Type = CSSaleItemTax.Types.VATExempt; csSaleItemTaxVATExempt.Amount = vatExemptAmount; csSaleItemTaxVATExempt.Tax = vatExemptTax; if (csSaleItemTaxVATExempt.Amount > 0) csSaleItemTaxDAO.add(csSaleItemTaxVATExempt); //3. Zero-rated sales CSSaleItemTax csSaleItemTaxZero = new CSSaleItemTax(); csSaleItemTaxZero.CSSaleItemID = saleItem.SaleItemID; csSaleItemTaxZero.Type = CSSaleItemTax.Types.ZERORated; csSaleItemTaxZero.Amount = zeroRatedAmount; csSaleItemTaxZero.Tax = zeroRatedtax; if (csSaleItemTaxZero.Amount > 0) csSaleItemTaxDAO.add(csSaleItemTaxZero); //TODO: otalusan - local and other taxes //4. Local tax CSSaleItemTax csSaleItemLocalTax = new CSSaleItemTax(); csSaleItemLocalTax.CSSaleItemID = saleItem.SaleItemID; csSaleItemLocalTax.Type = CSSaleItemTax.Types.Local; //5. Other taxes CSSaleItemTax csSaleItemOtherTax = new CSSaleItemTax(); csSaleItemOtherTax.CSSaleItemID = saleItem.SaleItemID; csSaleItemOtherTax.Type = CSSaleItemTax.Types.Other; //build CSSaleItem - all amounts computed for CSSaleItem csSaleItem = new CSSaleItem(); csSaleItem.CSSaleItemID = saleItem.SaleItemID; csSaleItem.CSSaleID = saleItem.SaleID; csSaleItem.ItemName = saleItem.ItemName; csSaleItem.SeatNumber = seat.number; csSaleItem.BasePrice = saleItem.BasePrice / 100; csSaleItem.Quantity = saleItem.Quantity; csSaleItem.AmountDue = amountDue; //csSaleItem.vatableAmount = Util.Number.moneyToFposWare(vatableAmount); //csSaleItem.vatableTax = Util.Number.moneyToFposWare(vatableTax); //csSaleItem.vatExemptAmount = Util.Number.moneyToFposWare(vatExemptAmount); //csSaleItem.vatExemptTax = Util.Number.moneyToFposWare(vatExemptTax); //csSaleItem.zeroRatedAmount = Util.Number.moneyToFposWare(zeroRatedAmount); //csSaleItem.zeroRatedtax = Util.Number.moneyToFposWare(zeroRatedtax); CSSaleItemDAO csSaleItemDAO = new CSSaleItemDAO(); // csSaleItemDAO.remove(csSaleItem); csSaleItemDAO.add(csSaleItem); seat.csSaleItems.Add(csSaleItem); }//foreach(SaleItem saleItem in seat.saleItems) }//foreach(Seat seat in saleInfo.seats) }