/// <summary> /// Get Line Kits /// </summary> /// <param name="saleNumber"></param> /// <param name="lineNumber"></param> /// <param name="dataSource"></param> /// <returns></returns> private Line_Kits GetLineKits(int saleNumber, int lineNumber, DataSource dataSource) { var dateStart = DateTime.Now; _performancelog.Debug($"Start,ReturnSaleService,GetLineKits,{string.Empty},{dateStart:hh.mm.ss.ffffff}"); Line_Kits lineKits = new Line_Kits(); // Get the kit items in the line var rsLineKit = GetRecords("Select * FROM SaleKit WHERE SaleKit.Sale_No = " + CommonUtility.GetStringValue(saleNumber) + " AND SaleKit.Line_No = " + CommonUtility.GetStringValue(lineNumber) + " ", dataSource); foreach (DataRow rsLineKitFields in rsLineKit.Rows) { // Charges on Kit items var rsLineKitChg = GetRecords("Select * From SaleKitChg Where SaleKitChg.Sale_No = " + CommonUtility.GetStringValue(saleNumber) + " AND SaleKitChg.Line_No = " + CommonUtility.GetStringValue(lineNumber) + " AND SaleKitChg.Kit_Item = \'" + CommonUtility.GetStringValue(rsLineKitFields["Kit_Item"]) + "\' ", dataSource); var lkc = new K_Charges(); foreach (DataRow rsLineKitChgFields in rsLineKitChg.Rows) { // Taxes on Charges on Kit items var rsCgt = GetRecords("Select * From SaleKitChgTax Where SaleKitChgTax.Sale_No = " + CommonUtility.GetStringValue(saleNumber) + " AND SaleKitChgTax.Line_No = " + CommonUtility.GetStringValue(lineNumber) + " AND SaleKitChgTax.Kit_Item = \'" + CommonUtility.GetStringValue(rsLineKitFields["Kit_Item"]) + "\' AND SaleKitChgTax.As_Code = \'" + CommonUtility.GetStringValue(rsLineKitChgFields["As_Code"]) + "\' ", dataSource); var cgt = new Charge_Taxes(); foreach (DataRow rsCgtFields in rsCgt.Rows) { cgt.Add(CommonUtility.GetStringValue(rsCgtFields["Tax_Name"]), CommonUtility.GetStringValue(rsCgtFields["Tax_Code"]), CommonUtility.GetFloatValue(rsCgtFields["Tax_Rate"]), CommonUtility.GetBooleanValue(rsCgtFields["Tax_Included"]), ""); } lkc.Add(CommonUtility.GetDoubleValue(rsLineKitChgFields["price"]), CommonUtility.GetStringValue(rsLineKitChgFields["Description"]), CommonUtility.GetStringValue(rsLineKitChgFields["As_Code"]), cgt, ""); } lineKits.Add(CommonUtility.GetStringValue(rsLineKitFields["Kit_Item"]), CommonUtility.GetStringValue(rsLineKitFields["Descript"]), CommonUtility.GetFloatValue(rsLineKitFields["Quantity"]), CommonUtility.GetFloatValue(rsLineKitFields["Base"]), CommonUtility.GetFloatValue(rsLineKitFields["Fraction"]), CommonUtility.GetFloatValue(rsLineKitFields["Alloc"]), CommonUtility.GetStringValue(rsLineKitFields["Serial"]), lkc, ""); } _performancelog.Debug($"End,ReturnSaleService,GetLineKits,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}"); return(lineKits); }
/// <summary> /// Method to get line kit /// </summary> /// <param name="db">Data source</param> /// <param name="sn">Sale number</param> /// <param name="ln">Line number</param> /// <returns>Line kits</returns> public Line_Kits Get_Line_Kit(DataSource db, int sn, int ln) { Line_Kits lk = new Line_Kits(); // Get the kit items in the line var rsLineKit = GetRecords("Select * FROM SaleKit WHERE SaleKit.Sale_No = " + Convert.ToString(sn) + " AND " + " SaleKit.Line_No = " + Convert.ToString(ln) + " ", db); foreach (DataRow lineKit in rsLineKit.Rows) { // Charges on Kit items var rsLineKitChg = GetRecords("Select * FROM SaleKitChg WHERE SaleKitChg.Sale_No = " + Convert.ToString(sn) + " AND " + " SaleKitChg.Line_No = " + Convert.ToString(ln) + " AND " + " SaleKitChg.Kit_Item = \'" + CommonUtility.GetStringValue(lineKit["Kit_Item"]) + "\' ", db); var lkc = new K_Charges(); foreach (DataRow kitCharge in rsLineKitChg.Rows) { // Taxes on Charges on Kit items var rsCgt = GetRecords("Select * FROM SaleKitChgTax WHERE SaleKitChgTax.Sale_No = " + Convert.ToString(sn) + " AND " + " SaleKitChgTax.Line_No = " + Convert.ToString(ln) + " AND " + " SaleKitChgTax.Kit_Item = \'" + CommonUtility.GetStringValue(lineKit["Kit_Item"]) + "\' AND " + " SaleKitChgTax.As_Code = \'" + CommonUtility.GetStringValue(kitCharge["As_Code"]) + "\' ", db); var cgt = new Charge_Taxes(); foreach (DataRow tax in rsCgt.Rows) { cgt.Add(CommonUtility.GetStringValue(tax["Tax_Name"]), CommonUtility.GetStringValue(tax["Tax_Code"]), CommonUtility.GetFloatValue(tax["Tax_Rate"]), CommonUtility.GetBooleanValue(tax["Tax_Included"]), ""); } lkc.Add(CommonUtility.GetDoubleValue(kitCharge["price"]), CommonUtility.GetStringValue(kitCharge["Description"]), CommonUtility.GetStringValue(kitCharge["As_Code"]), cgt, ""); } lk.Add(CommonUtility.GetStringValue(lineKit["Kit_Item"]), CommonUtility.GetStringValue(lineKit["Descript"]), CommonUtility.GetFloatValue(lineKit["Quantity"]), CommonUtility.GetFloatValue(lineKit["Base"]), CommonUtility.GetFloatValue(lineKit["Fraction"]), CommonUtility.GetFloatValue(lineKit["Alloc"]), CommonUtility.GetStringValue(lineKit["Serial"]), lkc, ""); } var returnValue = lk; return(returnValue); }
/// <summary> /// Method to make charges /// </summary> /// <param name="stockCode">Stock code</param> /// <param name="stockType">Stock type</param> /// <returns>Charges</returns> private Charges GetCharges(string stockCode, char stockType) { var dateStart = DateTime.Now; Performancelog.Debug($"Start,StockManager,GetCharges,{string.Empty},{DateTime.Now:hh.mm.ss.ffffff}"); var cg = new Charges(); if (stockType == 'G') { return(null); } var allTaxes = _taxService.GetAllTaxes(); // Load Charges var charges = _stockService.GetAssociateCharges(stockCode); foreach (var charge in charges) { var taxes = _stockService.GetTax(charge.AsCode); var cs = new Charge_Taxes(); foreach (var tax in taxes) { var taxMast = allTaxes.FirstOrDefault(t => t.TaxName == tax.Tax_Name && t.Active.HasValue && t.Active.Value); if (taxMast != null) { cs.Add(Convert.ToString(tax.Tax_Name), Convert.ToString(tax.Tax_Code), Convert.ToSingle(tax.Tax_Rate), Convert.ToBoolean(tax.Tax_Included), ""); } } cg.Add(Convert.ToString(charge.AsCode), Convert.ToString(charge.Description), Convert.ToSingle(charge.Price), cs, ""); } var returnValue = cg; Performancelog.Debug($"End,StockManager,GetCharges,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}"); return(returnValue); }
/// <summary> /// Method to get sale line charges /// </summary> /// <param name="saleNumber">Sale number</param> /// <param name="lineNumber">Line number</param> /// <param name="dataSource">Data source</param> /// <returns>Charges</returns> public Charges GetSaleLineCharges(int saleNumber, int lineNumber, DataSource dataSource) { var rsLineChg = GetRecords("Select * FROM SaleChg WHERE SaleChg.Sale_No = " + Convert.ToString(saleNumber) + " AND " + " SaleChg.Line_No = " + Convert.ToString(lineNumber) + " " + "Order By SaleChg.As_Code ", dataSource); var charges = new Charges(); foreach (DataRow charge in rsLineChg.Rows) { var rsLcTax = GetRecords("Select * FROM ChargeTax WHERE ChargeTax.Sale_No = " + Convert.ToString(saleNumber) + " AND " + " ChargeTax.Line_No = " + Convert.ToString(lineNumber) + " AND " + " ChargeTax.As_Code = \'" + CommonUtility.GetStringValue(charge["As_Code"]) + "\' ", dataSource); // Find any taxes that applied to those charges. var lct = new Charge_Taxes(); foreach (DataRow tax in rsLcTax.Rows) { lct.Add(Convert.ToString(tax["Tax_Name"]), Convert.ToString(tax["Tax_Code"]), Convert.ToSingle(tax["Tax_Rate"]), Convert.ToBoolean(tax["Tax_Included"]), ""); } charges.Add(Convert.ToString(charge["As_Code"]), Convert.ToString(charge["Description"]), Convert.ToSingle(charge["price"]), lct, ""); } return(charges); }
/// <summary> /// Gets the List of Sale Lines /// </summary> /// <param name="saleNumber">Sale number</param> /// <param name="tillNumber">Till number</param> /// <param name="saleDate">Sale date</param> /// <param name="discountType">Discount type</param> /// <param name="teType">Tax exempt type</param> /// <param name="taxExempt">Tax exempt name</param> /// <returns>List of sale lines</returns> public List <Sale_Line> GetSaleLineBySaleNumber(int saleNumber, int tillNumber, DateTime saleDate, string discountType, string teType, bool taxExempt) { var dateStart = DateTime.Now; _performancelog.Debug($"Start,ReturnSaleService,GetSaleLineBySaleNumber,{string.Empty},{dateStart:hh.mm.ss.ffffff}"); List <Sale_Line> saleLines = new List <Sale_Line>(); DataSource db = DataSource.CSCTrans; var strSqlHead = " SELECT * FROM SaleHead Where SaleHead.Sale_No = " + CommonUtility.GetStringValue(saleNumber) + " AND SaleHead.TILL = " + CommonUtility.GetStringValue(tillNumber) + " AND SaleHead.T_Type IN ( \'SALE\' ,\'REFUND\', \'RUNAWAY\',\'PUMPTEST\' ) and SaleHead.SALE_AMT <> 0 "; var strSqlLine = " SELECT * FROM SaleLine Where SaleLine.Sale_No = " + CommonUtility.GetStringValue(saleNumber) + " AND SaleLine.TILL_NUM = " + CommonUtility.GetStringValue(tillNumber) + "ORDER BY SaleLine.Line_Num "; var rsHead = GetRecords(strSqlHead, DataSource.CSCTrans); var rsLine = GetRecords(strSqlLine, DataSource.CSCTrans); // If SaleNo is not found in Trans.mdb database, then // look for this SaleNo in all active Tills if (rsHead == null || rsHead.Rows.Count == 0) { rsHead = GetRecords(strSqlHead, DataSource.CSCTills); rsLine = GetRecords(strSqlLine, DataSource.CSCTills); // If sale number is found exit for do and use this recordset if (rsHead != null && rsHead.Rows.Count != 0) { db = DataSource.CSCTills; } } else { db = DataSource.CSCTrans; } foreach (DataRow rsLineFields in rsLine.Rows) { var saleLine = new Sale_Line { No_Loading = true, Stock_Code = CommonUtility.GetStringValue(rsLineFields["Stock_Code"]), PLU_Code = CommonUtility.GetStringValue(rsLineFields["PLU_Code"]), Line_Num = CommonUtility.GetShortValue(rsLineFields["Line_Num"]), Price_Type = CommonUtility.GetCharValue(rsLineFields["Price_Type"]), Dept = CommonUtility.GetStringValue(rsLineFields["Dept"]), Sub_Detail = CommonUtility.GetStringValue(rsLineFields["Sub_Detail"]), Sub_Dept = CommonUtility.GetStringValue(rsLineFields["Sub_Dept"]), Quantity = CommonUtility.GetFloatValue(rsLineFields["Quantity"]) * -1, price = CommonUtility.GetDoubleValue(rsLineFields["price"]), Regular_Price = CommonUtility.GetDoubleValue(rsLineFields["Reg_Price"]), Cost = CommonUtility.GetDoubleValue(rsLineFields["Cost"]), Amount = CommonUtility.GetDecimalValue(rsLineFields["Amount"]) * -1, Total_Amount = CommonUtility.GetDecimalValue(rsLineFields["Total_Amt"]) * -1 }; if (!(teType == "QITE" && discountType == "D")) { saleLine.Line_Discount = CommonUtility.GetDoubleValue(rsLineFields["Discount"]) * -1; } saleLine.Discount_Type = CommonUtility.GetStringValue(rsLineFields["Disc_Type"]); saleLine.Discount_Code = CommonUtility.GetStringValue(rsLineFields["Disc_Code"]); if (!(teType == "QITE" && discountType == "D")) { SetDiscountRate(ref saleLine, CommonUtility.GetFloatValue(rsLineFields["Disc_Rate"])); } saleLine.Associate_Amount = CommonUtility.GetDecimalValue(rsLineFields["Assoc_Amt"]); saleLine.Description = CommonUtility.GetStringValue(rsLineFields["Descript"]); saleLine.Loyalty_Save = CommonUtility.GetFloatValue(rsLineFields["Loyl_Save"]); saleLine.Units = CommonUtility.GetStringValue(rsLineFields["Units"]); saleLine.Serial_No = CommonUtility.GetStringValue(rsLineFields["Serial_No"]); saleLine.Stock_Code = CommonUtility.GetStringValue(rsLineFields["Stock_Code"]); saleLine.pumpID = CommonUtility.GetByteValue(rsLineFields["pumpID"]); saleLine.PositionID = CommonUtility.GetByteValue(rsLineFields["PositionID"]); saleLine.GradeID = CommonUtility.GetByteValue(rsLineFields["GradeID"]); saleLine.Prepay = CommonUtility.GetBooleanValue(rsLineFields["Prepay"]); saleLine.ManualFuel = CommonUtility.GetBooleanValue(rsLineFields["ManualFuel"]); saleLine.IsTaxExemptItem = CommonUtility.GetBooleanValue(rsLineFields["TaxExempt"]); saleLine.Gift_Num = CommonUtility.GetStringValue(rsLineFields["GC_Num"]); saleLine.FuelRebateEligible = CommonUtility.GetBooleanValue(rsLineFields["FuelRebateUsed"]); saleLine.FuelRebate = CommonUtility.GetDecimalValue(rsLineFields["RebateDiscount"]); saleLine.EligibleTaxEx = CommonUtility.GetBooleanValue(rsLineFields["ElgTaxExemption"]); saleLine.CarwashCode = CommonUtility.GetStringValue(rsLineFields["CarwashCode"]); if (saleLine.CarwashCode != "") { saleLine.IsCarwashProduct = true; } if (saleLine.IsTaxExemptItem) { if (teType == "SITE") { var rsPurchaseItem = GetRecords( "select * from PurchaseItem Where Sale_No=" + CommonUtility.GetStringValue(saleNumber) + " AND Line_No=" + CommonUtility.GetStringValue(saleLine.Line_Num), db); if (rsPurchaseItem != null && rsPurchaseItem.Rows.Count != 0) { var rsPurchaseItemFields = rsPurchaseItem.Rows[0]; saleLine.OriginalPrice = CommonUtility.GetFloatValue(rsPurchaseItemFields["OriginalPrice"]); saleLine.TaxInclPrice = CommonUtility.GetFloatValue(rsPurchaseItemFields["Amount"]); } else { saleLine.OriginalPrice = (float)saleLine.price; saleLine.TaxInclPrice = (float)(-1 * saleLine.Amount); } } else { var rsTeSaleLine = GetRecords( "select * from TaxExemptSaleLine Where SALE_NO=" + CommonUtility.GetStringValue(saleNumber) + " AND LINE_NUM=" + CommonUtility.GetStringValue(saleLine.Line_Num), db); if (rsTeSaleLine != null && rsTeSaleLine.Rows.Count != 0) { var rsTeSaleLineFields = rsTeSaleLine.Rows[0]; saleLine.OriginalPrice = CommonUtility.GetFloatValue(rsTeSaleLineFields["OriginalPrice"]); saleLine.TaxInclPrice = CommonUtility.GetFloatValue(-1 * CommonUtility.GetIntergerValue( rsTeSaleLineFields["TaxIncludedAmount"])); } else { saleLine.OriginalPrice = (float)saleLine.price; saleLine.TaxInclPrice = (float)(-1 * saleLine.Amount); } saleLine.IsTaxExemptItem = false; } } string strPromo = CommonUtility.GetStringValue(rsLineFields["PromoID"]); if (strPromo.Length != 0) { saleLine.PromoID = strPromo; } saleLine.Line_Taxes = null; var rsLineTax = GetRecords( "Select * From S_LineTax WHERE S_LineTax.Sale_No = " + CommonUtility.GetStringValue(saleNumber) + " AND S_LineTax.Line_No = " + CommonUtility.GetStringValue(rsLineFields["Line_Num"]) + " " + "Order By S_LineTax.Tax_Name ", db); if (rsLineTax == null || rsLineTax.Rows.Count == 0) { if (taxExempt && (teType == "AITE" || teType == "QITE")) { rsLineTax = GetRecords( "Select * From TaxCreditLine WHERE TaxCreditLine.Sale_No = " + CommonUtility.GetStringValue(saleNumber) + " AND TaxCreditLine.Line_No = " + CommonUtility.GetStringValue(rsLineFields["Line_Num"]) + " " + "Order By TaxCreditLine.Tax_Name ", db); if (!saleLine.IsTaxExemptItem && rsLineTax.Rows.Count != 0) { } } } foreach (DataRow rsLineTaxFields in rsLineTax.Rows) { saleLine.Line_Taxes.Add(CommonUtility.GetStringValue(rsLineTaxFields["Tax_Name"]), CommonUtility.GetStringValue(rsLineTaxFields["Tax_Code"]), CommonUtility.GetFloatValue(rsLineTaxFields["Tax_Rate"]), CommonUtility.GetBooleanValue(rsLineTaxFields["Tax_Included"]), CommonUtility.GetFloatValue(rsLineTaxFields["Tax_Rebate_Rate"]), CommonUtility.GetDecimalValue(rsLineTaxFields["Tax_Rebate"]), ""); } // Similarly, pick up the charges associated with the line. saleLine.Charges = null; var rsLineChg = GetRecords( "Select * FROM SaleChg WHERE SaleChg.Sale_No = " + CommonUtility.GetStringValue(saleNumber) + " AND SaleChg.Line_No = " + CommonUtility.GetStringValue(rsLineFields["Line_Num"]) + " Order By SaleChg.As_Code ", db); foreach (DataRow linChrField in rsLineChg.Rows) { var rsLcTax = GetRecords( "Select * FROM ChargeTax WHERE ChargeTax.Sale_No = " + CommonUtility.GetStringValue(saleNumber) + " AND ChargeTax.Line_No = " + CommonUtility.GetStringValue(rsLineFields["Line_Num"]) + " AND ChargeTax.As_Code = \'" + CommonUtility.GetStringValue(linChrField["As_Code"]) + "\' ", db); // Find any taxes that applied to those charges. var lct = new Charge_Taxes(); foreach (DataRow rsLcTaxFields in rsLcTax.Rows) { lct.Add(CommonUtility.GetStringValue(rsLcTaxFields["Tax_Name"]), CommonUtility.GetStringValue(rsLcTaxFields["Tax_Code"]), CommonUtility.GetFloatValue(rsLcTaxFields["Tax_Rate"]), CommonUtility.GetBooleanValue(rsLcTaxFields["Tax_Included"]), ""); } saleLine.Charges.Add(CommonUtility.GetStringValue(linChrField["As_Code"]), CommonUtility.GetStringValue(linChrField["Description"]), CommonUtility.GetFloatValue(linChrField["price"]), lct, ""); } saleLine.Line_Kits = GetLineKits(saleNumber, CommonUtility.GetIntergerValue(rsLineFields["Line_Num"]), db); saleLines.Add(saleLine); } _performancelog.Debug($"End,ReturnSaleService,GetSaleLineBySaleNumber,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}"); return(saleLines); }
/// <summary> /// Method to make kits /// </summary> /// <param name="stockCode">Stock code</param> /// <param name="stockType">Stock type</param> /// <param name="description">Description</param> /// <param name="vendor">Vendor</param> /// <returns>Line kits</returns> private Line_Kits GetLineKits(string stockCode, char stockType, string description , string vendor) { var dateStart = DateTime.Now; Performancelog.Debug($"Start,StockManager,GetLineKits,{string.Empty},{DateTime.Now:hh.mm.ss.ffffff}"); Charge_Taxes cts = default(Charge_Taxes); var kitCharges = new K_Charges(); var lineKitsRenamed = new Line_Kits(); if (stockType == 'G') { return(null); } if (_stockService.IsKitPresent(stockCode)) { var kits = _stockService.GetKitIems(stockCode); if (kits != null && kits.Count != 0) { foreach (var kit in kits) { var allPrices = _stockService.GetStockPricesByCode(kit.StockCode); var price = allPrices.FirstOrDefault(p => p.Vendor == vendor) ?? allPrices.FirstOrDefault(p => p.Vendor == "ALL"); var stockDescription = _stockService.GetKitDescription(kit.StockCode); if (price != null) { var allTaxes = _taxService.GetAllTaxes(); // Get Charges on Kit Items // Build the collection of charges var charges = _stockService.GetAssociateCharges(kit.StockCode); if (charges != null && charges.Count != 0) { var firstOrDefault = charges.FirstOrDefault(); if (firstOrDefault != null) { var taxes = _stockService.GetTax(firstOrDefault.AsCode); if (taxes != null && taxes.Count != 0) { var saleTax = taxes.FirstOrDefault(); if (allTaxes.FirstOrDefault(t => saleTax != null && t.TaxName == saleTax.Tax_Name) != null) { cts = new Charge_Taxes(); foreach (var tax in taxes) { cts.Add(Convert.ToString(tax.Tax_Name), Convert.ToString(tax.Tax_Code), Convert.ToSingle(tax.Tax_Rate), Convert.ToBoolean(tax.Tax_Included), ""); } } } } kitCharges = new K_Charges(); foreach (var charge in charges) { kitCharges.Add(Convert.ToDouble(charge.Price), charge.Description, charge.AsCode, cts, ""); } } // Add the kit item & charges to the kits collection lineKitsRenamed.Add(kit.StockCode, Convert.ToString(stockDescription), Convert.ToSingle(kit.Quantity), Convert.ToSingle(price.Price), 0, 0, "", kitCharges, ""); kitCharges = null; } else { //TIMsgbox "Kit Item " & Kits![Stock_Code] & " not found in stock master.", vbInformation + vbOKOnly, "Missing Kit Item" var offSet = _policyManager.LoadStoreInfo().OffSet; MessageType type = (int)MessageType.Critical + MessageType.OkOnly; var messageStyle = _resourceManager.CreateMessage(offSet, 0, 8113, kit.StockCode, type); } } } } var returnValue = lineKitsRenamed; Performancelog.Debug($"End,StockManager,GetLineKits,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}"); return(returnValue); }