/// <summary> /// Method to update cash in till /// </summary> /// <param name="tillNumber">Till number</param> /// <param name="amount">Amount</param> /// <returns>Updated cash</returns> public decimal UpdateCash(int tillNumber, decimal amount) { decimal updatedCash = 0; var query = "Select * From Tills Where Tills.Till_Num = " + tillNumber; _connection = new SqlConnection(GetConnectionString(DataSource.CSCMaster)); if (_connection.State == ConnectionState.Closed) { _connection.Open(); } _dataTable = new DataTable(); _adapter = new SqlDataAdapter(query, _connection); _adapter.Fill(_dataTable); if (_dataTable.Rows.Count > 0) { updatedCash = CommonUtility.GetDecimalValue(_dataTable.Rows[0]["Cash"]) + amount; _dataTable.Rows[0]["Cash"] = updatedCash; SqlCommandBuilder builder = new SqlCommandBuilder(_adapter); _adapter.UpdateCommand = builder.GetUpdateCommand(); _adapter.Update(_dataTable); } _connection.Close(); _adapter?.Dispose(); return(updatedCash); }
/// <summary> /// Get All Sales /// </summary> /// <param name="saleDate">Sale date</param> /// <param name="timeFormat">Time format</param> /// <param name="pageIndex">Page index</param> /// <param name="pageSize">Page size</param> /// <returns>List of sale head</returns> public List <SaleHead> GetAllSales(DateTime saleDate, string timeFormat, int pageIndex, int pageSize) { var dateStart = DateTime.Now; _performancelog.Debug($"Start,ReturnSaleService,GetAllSales,{string.Empty},{dateStart:hh.mm.ss.ffffff}"); var salesHeads = new List <SaleHead>(); string strSql; if (timeFormat == "24 HOURS") //to format the time according to the policy { strSql = "(SELECT Till, Sale_No AS [Sale No], Sale_Date AS [Date], convert(varchar,Sale_time, 108) AS [Time] , Sale_Amt AS [Amount] FROM SaleHead A WHERE A.T_Type IN ( \'SALE\' ,\'REFUND\', \'RUNAWAY\', \'PUMPTEST\' ) and A.SALE_AMT <> 0 and A.Sale_Date >= \'" + saleDate.ToString("yyyyMMdd") + "\' UNION ALL SELECT Till, Sale_No AS [Sale No], Sale_Date AS [Date], convert(varchar,Sale_time, 108) AS [Time] , Sale_Amt AS [Amount] FROM CSCTRANS.dbo.SaleHead A WHERE A.T_Type IN ( \'SALE\' ,\'REFUND\', \'RUNAWAY\' , \'PUMPTEST\') and A.SALE_AMT <> 0 and A.Sale_Date >= \'" + saleDate.ToString("yyyyMMdd") + "\') ORDER BY Sale_No DESC"; } else { strSql = "(SELECT Till, Sale_No AS [Sale No], Sale_Date AS [Date], RIGHT(CONVERT(CHAR(19),sale_time,100),7) AS [Time] , Sale_Amt AS [Amount] FROM SaleHead A WHERE A.T_Type IN ( \'SALE\' ,\'REFUND\' , \'RUNAWAY\', \'PUMPTEST\') and A.SALE_AMT <> 0 and A.Sale_Date >= \'" + saleDate.ToString("yyyyMMdd") + "\' UNION ALL SELECT Till, Sale_No AS [Sale No], Sale_Date AS [Date], RIGHT(CONVERT(CHAR(19),sale_time,100),7) AS [Time] , Sale_Amt AS [Amount] FROM CSCTRANS.dbo.SaleHead A WHERE A.T_Type IN ( \'SALE\' ,\'REFUND\', \'RUNAWAY\' , \'PUMPTEST\') and A.SALE_AMT <> 0 and A.Sale_Date >= \'" + saleDate.ToString("yyyyMMdd") + "\') ORDER BY Sale_No DESC"; } var rsSales = GetPagedRecords(strSql, DataSource.CSCTills, pageIndex, pageSize); foreach (DataRow fields in rsSales.Rows) { salesHeads.Add(new SaleHead { TillNumber = CommonUtility.GetIntergerValue(fields["Till"]), SaleNumber = CommonUtility.GetIntergerValue(fields["Sale No"]), SaleDate = CommonUtility.GetDateTimeValue(fields["Date"]), SaleTime = CommonUtility.GetDateTimeValue(fields["Time"]), SaleAmount = CommonUtility.GetDecimalValue(fields["Amount"]) }); } _performancelog.Debug($"End,ReturnSaleService,GetAllSales,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}"); return(salesHeads); }
/// <summary> /// Get the active tills for a given user /// </summary> /// <param name="active">Active</param> /// <param name="payAtPumpTill">Pay at pump till</param> /// <param name="userLoggedOn">User logged on</param> /// <returns>Tills</returns> public List <Till> GetTillForUser(int active, int payAtPumpTill, string userLoggedOn) { var dateStart = DateTime.Now; _performancelog.Debug($"Start,TillService,GetTillForUser,{string.Empty},{DateTime.Now:hh.mm.ss.ffffff}"); var strSql = "Select * From Tills Where Tills.Active = " + active + " AND Tills.Till_Num <> " + payAtPumpTill + " and Tills.UserLoggedON=\'" + userLoggedOn + "\'"; var sTills = GetRecords(strSql, DataSource.CSCMaster); var tills = (from DataRow row in sTills.Rows select new Till { Number = CommonUtility.GetShortValue(row["TILL_NUM"]), Active = CommonUtility.GetBooleanValue(row["ACTIVE"]), Processing = CommonUtility.GetBooleanValue(row["PROCESS"]), Float = CommonUtility.GetDecimalValue(row["FLOAT"]), BonusFloat = CommonUtility.GetDecimalValue(row["CashBonusFloat"]), Cash = CommonUtility.GetDecimalValue(row["CASH"]), Date_Open = CommonUtility.GetDateTimeValue(row["DATE_OPEN"]), Time_Open = CommonUtility.GetDateTimeValue(row["TIME_OPEN"]), ShiftDate = CommonUtility.GetDateTimeValue(row["ShiftDate"]), Shift = CommonUtility.GetShortValue(row["ShiftNumber"]), UserLoggedOn = CommonUtility.GetStringValue(row["UserLoggedOn"]), POSId = CommonUtility.GetIntergerValue(row["POSID"]), CashBonus = CommonUtility.GetDecimalValue(row["CashBonus"]) }).ToList(); _performancelog.Debug($"End,TillService,GetTillForUser,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}"); return(tills); }
/// <summary> /// Get the tills which are not pay at pump /// </summary> /// <param name="payAtPumpTill">aPay at pump till</param> /// <returns>Tills</returns> public List <Till> GetnotPayAtPumpTill(int payAtPumpTill) { var dateStart = DateTime.Now; _performancelog.Debug($"Start,TillService,GetnotPayAtPumpTill,{string.Empty},{DateTime.Now:hh.mm.ss.ffffff}"); var strSql = "Select * FROM Tills WHERE Tills.Till_Num <> " + payAtPumpTill + ""; var sTills = GetRecords(strSql, DataSource.CSCMaster); var tills = new List <Till>(); foreach (DataRow row in sTills.Rows) { var till = new Till { Number = CommonUtility.GetShortValue(row["TILL_NUM"]), Active = CommonUtility.GetBooleanValue(row["ACTIVE"]), Processing = CommonUtility.GetBooleanValue(row["PROCESS"]), Float = CommonUtility.GetDecimalValue(row["FLOAT"]), BonusFloat = CommonUtility.GetDecimalValue(row["CashBonusFloat"]), Cash = CommonUtility.GetDecimalValue(row["CASH"]), Date_Open = CommonUtility.GetDateTimeValue(row["DATE_OPEN"]), Time_Open = CommonUtility.GetDateTimeValue(row["TIME_OPEN"]), ShiftDate = CommonUtility.GetDateTimeValue(row["ShiftDate"]), Shift = CommonUtility.GetShortValue(row["ShiftNumber"]), UserLoggedOn = CommonUtility.GetStringValue(row["UserLoggedOn"]), POSId = CommonUtility.GetIntergerValue(row["POSID"]), CashBonus = CommonUtility.GetDecimalValue(row["CashBonus"]) }; tills.Add(till); } _performancelog.Debug($"End,TillService,GetnotPayAtPumpTill,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}"); return(tills); }
/// <summary> /// Get the Till by Till Number /// </summary> /// <param name="tillNumber">Till number</param> /// <returns>Till</returns> public Till GetTill(int tillNumber) { var sTill = GetRecords("Select * From Tills where till_num=" + tillNumber, DataSource.CSCMaster); if (sTill.Rows.Count > 0) { var row = sTill.Rows[0]; var till = new Till { Number = CommonUtility.GetShortValue(row["TILL_NUM"]), Active = CommonUtility.GetBooleanValue(row["ACTIVE"]), Processing = CommonUtility.GetBooleanValue(row["PROCESS"]), Float = CommonUtility.GetDecimalValue(row["FLOAT"]), BonusFloat = CommonUtility.GetDecimalValue(row["CashBonusFloat"]), Cash = CommonUtility.GetDecimalValue(row["CASH"]), Date_Open = CommonUtility.GetDateTimeValue(row["DATE_OPEN"]), Time_Open = CommonUtility.GetDateTimeValue(row["TIME_OPEN"]), ShiftDate = CommonUtility.GetDateTimeValue(row["ShiftDate"]), Shift = CommonUtility.GetShortValue(row["ShiftNumber"]), UserLoggedOn = CommonUtility.GetStringValue(row["UserLoggedOn"]), POSId = CommonUtility.GetIntergerValue(row["POSID"]), CashBonus = CommonUtility.GetDecimalValue(row["CashBonus"]) }; return(till); } return(null); }
/// <summary> /// Method to get original sale head /// </summary> /// <param name="invoiceId">Sale number</param> /// <param name="tillNumber">Till number</param> /// <param name="db"></param> /// <returns>Sale head</returns> public SaleHead GetOriginalSaleHead(int invoiceId, int tillNumber, out DataSource db) { db = DataSource.CSCTills; var rsHead = GetRecords(" SELECT * FROM SaleHead " + " WHERE SaleHead.Sale_No = " + Convert.ToString(invoiceId) + " and TILL=" + tillNumber, db); //, adLockReadOnly) if (rsHead.Rows.Count == 0) { db = DataSource.CSCTrans; rsHead = GetRecords(" SELECT * FROM SaleHead " + " WHERE SaleHead.Sale_No = " + Convert.ToString(invoiceId) + " and TILL=" + tillNumber, db); //, adLockReadOnly) } if (rsHead.Rows.Count == 0) { return(null); } return(new SaleHead { SaleNumber = CommonUtility.GetIntergerValue(rsHead.Rows[0]["sale_no"]), TillNumber = CommonUtility.GetIntergerValue(rsHead.Rows[0]["Till"]), Client = CommonUtility.GetStringValue(rsHead.Rows[0]["Client"]), TType = CommonUtility.GetStringValue(rsHead.Rows[0]["T_type"]), Deposit = CommonUtility.GetDecimalValue(rsHead.Rows[0]["Deposit"]), TreatyNumber = CommonUtility.GetStringValue(rsHead.Rows[0]["TreatyNumber"]), Change = CommonUtility.GetDecimalValue(rsHead.Rows[0]["Change"]), PennyAdjust = CommonUtility.GetDecimalValue(rsHead.Rows[0]["Penny_Adj"]), DiscountType = CommonUtility.GetStringValue(rsHead.Rows[0]["Disc_Type"]), INVCDiscount = CommonUtility.GetDecimalValue(rsHead.Rows[0]["Invc_Disc"]) }); }
/// <summary> /// Method to load GST exempt /// </summary> /// <param name="taxExemptSale">Tax exempt sale</param> /// <param name="sn">Sale number</param> /// <param name="tillId">Till number</param> /// <param name="db">Data source</param> /// <returns>True or false</returns> public bool LoadGstExempt(ref TaxExemptSale taxExemptSale, int sn, byte tillId, DataSource db) { var rsLine = GetRecords("select * from SALELINE " + " where SALE_NO=" + Convert.ToString(sn) + " AND TILL_NUM=" + Convert.ToString(tillId), db); if (rsLine.Rows.Count == 0) { return(false); } foreach (DataRow line in rsLine.Rows) { var rsTaxCreditLine = GetRecords("SELECT * from TaxCreditLine where TILL_NUM=" + Convert.ToString(tillId) + " AND SALE_NO=" + Convert.ToString(sn) + " AND Line_No=" + Convert.ToString(line["Line_Num"]), db); if (rsTaxCreditLine.Rows.Count == 0) { continue; } var tx = new TaxCreditLine { Line_Num = CommonUtility.GetShortValue(line["Line_Num"]) }; foreach (DataRow taxCreditLine in rsTaxCreditLine.Rows) { var lt = new Line_Tax { Tax_Name = CommonUtility.GetStringValue(taxCreditLine["Tax_Name"]), Tax_Code = CommonUtility.GetStringValue(taxCreditLine["Tax_Code"]), Tax_Rate = CommonUtility.GetFloatValue(taxCreditLine["Tax_Rate"]), Tax_Included = CommonUtility.GetBooleanValue(taxCreditLine["Tax_Included"]), Tax_Added_Amount = CommonUtility.GetFloatValue(taxCreditLine["Tax_Added_Amount"]), Tax_Incl_Amount = CommonUtility.GetFloatValue(taxCreditLine["Tax_Included_Amount"]) }; tx.Line_Taxes.AddTaxLine(lt, ""); } taxExemptSale.TaxCreditLines.AddLine(tx.Line_Num, tx, ""); } var rsTaxCredit = GetRecords("SELECT * from TaxCredit where TILL_NUM=" + Convert.ToString(tillId) + " AND SALE_NO=" + Convert.ToString(sn), db); foreach (DataRow taxCredit in rsTaxCredit.Rows) { var sx = new Sale_Tax { Tax_Name = CommonUtility.GetStringValue(taxCredit["Tax_Name"]), Tax_Code = CommonUtility.GetStringValue(taxCredit["Tax_Code"]), Tax_Rate = CommonUtility.GetFloatValue(taxCredit["Tax_Rate"]), Taxable_Amount = CommonUtility.GetDecimalValue(taxCredit["Taxable_Amount"]), Tax_Added_Amount = CommonUtility.GetDecimalValue(taxCredit["Tax_Added_Amount"]), Tax_Included_Amount = CommonUtility.GetDecimalValue(taxCredit["Tax_Included_Amount"]), Tax_Included_Total = CommonUtility.GetDecimalValue(taxCredit["Tax_Included_Total"]) }; taxExemptSale.TaxCredit.Add(sx.Tax_Name, sx.Tax_Code, sx.Tax_Rate, sx.Taxable_Amount, sx.Tax_Added_Amount, sx.Tax_Included_Amount, sx.Tax_Included_Amount, sx.Tax_Rebate_Rate, sx.Tax_Rebate, sx.Tax_Name + sx.Tax_Code); // - gave mismatch type error for AITE } return(true); }
/// <summary> /// Method to get all coins /// </summary> /// <returns></returns> public List <CashBonus> GetCashBonusCoins() { var dt = GetRecords("Select * FROM CBonusDrawTypes", DataSource.CSCMaster); var coins = new List <CashBonus>(); foreach (DataRow dr in dt.Rows) { coins.Add(new CashBonus { CurrencyName = CommonUtility.GetStringValue(dr["Currency_Name"]), Value = CommonUtility.GetDecimalValue(CommonUtility.GetDecimalValue(dr["Value"]).ToString("0.00")), ButtonNumber = CommonUtility.GetIntergerValue(dr["Button_Number"]) }); } return(coins); }
/// <summary> /// Method to get all coins /// </summary> /// <returns></returns> public List <Cash> GetCoins() { var dt = GetRecords("Select * FROM DrawTypes WHERE DrawTypes.Currency_Type = \'C\' Order By DrawTypes.Button_Number ", DataSource.CSCMaster); var coins = new List <Cash>(); foreach (DataRow dr in dt.Rows) { coins.Add(new Cash { CurrencyName = CommonUtility.GetStringValue(dr["Currency_Name"]), Value = CommonUtility.GetDecimalValue(CommonUtility.GetDecimalValue(dr["Value"]).ToString("0.00")), Image = CommonUtility.GetStringValue(dr["Image"]) }); } return(coins); }
/// <summary> /// Method to get orginal saleLines /// </summary> /// <param name="invoiceId">Sale number</param> /// <param name="tillNumber">Till number</param> /// <param name="dataSource">Data source</param> /// <returns>List of sale lines</returns> public List <Sale_Line> GetOrginalSaleLines(int invoiceId, int tillNumber, DataSource dataSource) { var saleLines = new List <Sale_Line>(); var rsDetail = GetRecords(" SELECT * FROM SaleLine " + " WHERE SaleLine.Sale_No = " + Convert.ToString(invoiceId) + " " + " and TILL_NUM=" + tillNumber + " ORDER BY SaleLine.Line_Num ", dataSource); foreach (DataRow row in rsDetail.Rows) { saleLines.Add(new Sale_Line { Dept = CommonUtility.GetStringValue(row["Dept"]), Sub_Dept = CommonUtility.GetStringValue(row["Sub_Dept"]), Sub_Detail = CommonUtility.GetStringValue(row["Sub_Detail"]), Stock_Code = CommonUtility.GetStringValue(row["Stock_Code"]), PLU_Code = CommonUtility.GetStringValue(row["PLU_Code"]), Line_Num = CommonUtility.GetShortValue(row["Line_Num"]), Price_Type = CommonUtility.GetCharValue(row["Price_Type"]), Quantity = CommonUtility.GetFloatValue(row["Quantity"]), Amount = CommonUtility.GetDecimalValue(row["Amount"]), Discount_Adjust = CommonUtility.GetDoubleValue(row["Disc_adj"]), Line_Discount = CommonUtility.GetDoubleValue(row["Discount"]), Discount_Type = CommonUtility.GetStringValue(row["Disc_Type"]), Discount_Code = CommonUtility.GetStringValue(row["Disc_Code"]), Discount_Rate = CommonUtility.GetFloatValue(row["Disc_Rate"]), DiscountName = CommonUtility.GetStringValue(row["DiscountName"]), Associate_Amount = CommonUtility.GetDecimalValue(row["Assoc_Amt"]), User = CommonUtility.GetStringValue(row["User"]), Description = CommonUtility.GetStringValue(row["Descript"]), Loyalty_Save = CommonUtility.GetFloatValue(row["Loyl_Save"]), Units = CommonUtility.GetStringValue(row["Units"]), Serial_No = CommonUtility.GetStringValue(row["Serial_No"]), Prepay = Convert.ToBoolean(row["Prepay"]), pumpID = CommonUtility.GetByteValue(row["pumpID"]), GradeID = CommonUtility.GetByteValue(row["GradeID"]), PositionID = CommonUtility.GetByteValue(row["PositionID"]), IsTaxExemptItem = CommonUtility.GetBooleanValue(row["TaxExempt"]), Total_Amount = CommonUtility.GetDecimalValue(row["Total_Amt"]), Regular_Price = CommonUtility.GetDoubleValue(row["Reg_Price"]), price = CommonUtility.GetDoubleValue(row["price"]), FuelRebateEligible = CommonUtility.GetBooleanValue(row["FuelRebateUsed"]), FuelRebate = CommonUtility.GetDecimalValue(row["RebateDiscount"]), PromoID = CommonUtility.GetStringValue(row["PromoID"]) }); } return(saleLines); }
/// <summary> /// Method to get line taxes /// </summary> /// <param name="saleNumber">Sale number</param> /// <param name="lineNumber">Line number</param> /// <param name="dataSource">Data source</param> /// <returns></returns> public List <Line_Tax> GetLineTaxes(int saleNumber, int lineNumber, DataSource dataSource) { var lineTaxes = new List <Line_Tax>(); var rsLineTax = GetRecords("Select * From S_LineTax WHERE S_LineTax.Sale_No = " + Convert.ToString(saleNumber) + " AND " + " S_LineTax.Line_No = " + Convert.ToString(lineNumber) + " " + "Order By S_LineTax.Tax_Name ", dataSource); foreach (DataRow row in rsLineTax.Rows) { lineTaxes.Add(new Line_Tax { Tax_Name = CommonUtility.GetStringValue(row["Tax_Name"]), Tax_Code = CommonUtility.GetStringValue(row["Tax_Code"]), Tax_Rate = CommonUtility.GetFloatValue(row["Tax_Rate"]), Tax_Included = CommonUtility.GetBooleanValue(row["Tax_Included"]), Tax_Rebate_Rate = CommonUtility.GetFloatValue(row["Tax_Rebate_Rate"]), Tax_Rebate = CommonUtility.GetDecimalValue(row["Tax_Rebate"]) }); } return(lineTaxes); }
/// <summary> /// Get SaleBy SaleNumber /// </summary> /// <param name="saleNumber">Sale number</param> /// <param name="tillNumber">Till number</param> /// <param name="saleDate">Sale date</param> /// <param name="defaultCustCode">Default customer code</param> /// <param name="isSaleFound">Sale found or not</param> /// <param name="isReturnable">Sale returned or not</param> /// <param name="teType">Taxe exempt type</param> /// <param name="teGetName">Tax exempt name</param> /// <param name="taxExemptGa">Tax exempt ga</param> /// <param name="pDefaultCustomer">Deafult customer</param> /// <returns>Sale</returns> public Sale GetSaleBySaleNumber(int saleNumber, int tillNumber, DateTime saleDate, string teType, bool teGetName, bool taxExemptGa, bool pDefaultCustomer, string defaultCustCode, out bool isSaleFound, out bool isReturnable) { var dateStart = DateTime.Now; _performancelog.Debug($"Start,ReturnSaleService,GetSaleBySaleNumber,{string.Empty},{dateStart:hh.mm.ss.ffffff}"); DataSource db = DataSource.CSCTrans; bool saleFound = false; Sale sale = new Sale(); isSaleFound = true; isReturnable = true; 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 rsHead = GetRecords(strSqlHead, 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); // If sale number is found exit for do and use this recordset if (rsHead != null && rsHead.Rows.Count != 0) { saleFound = true; db = DataSource.CSCTills; } } else { saleFound = true; db = DataSource.CSCTrans; } if (!saleFound) { isSaleFound = false; isReturnable = false; return(sale); } var rsHeadFields = rsHead.Rows[0]; if (saleDate != new DateTime() && CommonUtility.GetDateTimeValue(rsHeadFields["Sale_Date"]) < saleDate) { isReturnable = false; return(sale); } sale.LoadingTemp = true; sale.TillNumber = CommonUtility.GetByteValue(tillNumber); sale.Sale_Num = saleNumber; sale.Sale_Amount = CommonUtility.GetDecimalValue(rsHeadFields["SALE_AMT"]); sale.Sale_Invc_Disc = CommonUtility.GetDecimalValue(rsHeadFields["INVC_DISC"]); sale.TotalTaxSaved = CommonUtility.GetFloatValue(CommonUtility.GetDecimalValue(rsHeadFields["SALE_AMT"]) - CommonUtility.GetDecimalValue(rsHeadFields["TEND_AMT"])); sale.Customer = LoadCustomer(CommonUtility.GetStringValue(rsHeadFields["Client"]), pDefaultCustomer, defaultCustCode); if ((CommonUtility.GetStringValue(rsHeadFields["T_type"]) == "RUNAWAY" || CommonUtility.GetStringValue(rsHeadFields["T_type"]) == "PUMPTEST") && CommonUtility.GetDecimalValue(rsHeadFields["Sale_amt"]) < 0) { sale.Sale_Type = "SALE"; } else { sale.Sale_Type = CommonUtility.GetStringValue(rsHeadFields["T_type"]); } sale.Void_Num = saleNumber; sale.Sale_Deposit = CommonUtility.GetDecimalValue(rsHeadFields["Deposit"]); sale.TreatyNumber = CommonUtility.GetStringValue(rsHeadFields["TreatyNumber"]); if (teType != "AITE" && teType != "QITE" && teGetName) { sale.TreatyName = GetTreatyName(CommonUtility.GetStringValue(rsHeadFields["TreatyNumber"])); } sale.ReferenceNumber = CommonUtility.GetStringValue(rsHeadFields["ReferenceNum"]); if (sale.ReferenceNumber != "" && taxExemptGa) { sale.EligibleTaxEx = true; } //Added to load the original Loyalty Card var rsDiscountTender = GetRecords("select * from DiscountTender where SALE_NO=" + CommonUtility.GetStringValue(saleNumber) + " AND TILL_NUM=" + tillNumber, db); if (rsDiscountTender != null && rsDiscountTender.Rows.Count != 0) { var tenderFields = rsDiscountTender.Rows[0]; sale.Customer.LoyaltyCard = CommonUtility.GetStringValue(tenderFields["CardNum"]); sale.CouponID = CommonUtility.GetStringValue(tenderFields["CouponID"]); } sale.ForCorrection = false; sale.Sale_Totals.Invoice_Discount_Type = Convert.ToString(rsHeadFields["Disc_Type"]); sale.Sale_Totals.Invoice_Discount = Convert.ToDecimal(Convert.ToInt32(rsHeadFields["Invc_Disc"]) * -1); sale.Sale_Totals.Penny_Adj = Convert.ToDecimal(-1 * Convert.ToInt32(DBNull.Value.Equals(rsHeadFields["PENNY_ADJ"]) ? 0 : rsHeadFields["PENNY_ADJ"])); // sale.ReverseRunaway = (string)rsHeadFields["T_type"] == "RUNAWAY" && Convert.ToInt32(rsHeadFields["Sale_amt"]) > 0; // sale.ReversePumpTest = (string)rsHeadFields["T_type"] == "PUMPTEST" && Convert.ToInt32(rsHeadFields["Sale_amt"]) > 0; // _performancelog.Debug($"End,ReturnSaleService,GetSaleBySaleNumber,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}"); return(sale); }
/// <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 get suspended sale /// </summary> /// <param name="tillNumber">Till number</param> /// <param name="saleNumber">Sale number</param> /// <param name="shareSusp">Share suspended sale</param> /// <returns>Sale</returns> public Sale GetSuspendedSale(int tillNumber, int saleNumber, bool shareSusp) { var dateStart = DateTime.Now; _performancelog.Debug($"Start,SuspendedSaleService,GetSuspendedSale,{string.Empty},{dateStart:hh.mm.ss.ffffff}"); var sale = new Sale(); DataTable uHead; DataTable uLine; if (shareSusp) { uHead = GetRecords("select * from SusHead WHERE SALE_NO=" + Convert.ToString(saleNumber), DataSource.CSCTills); uLine = GetRecords("select * from SusLine WHERE SALE_NO=" + Convert.ToString(saleNumber) + " ORDER BY SusLine.Line_Num ", DataSource.CSCTills); } else { uHead = GetRecords("select * from SusHead where TILL=" + tillNumber + " AND SALE_NO=" + Convert.ToString(saleNumber), DataSource.CSCTills); uLine = GetRecords("select * from SusLine where TILL_NUM=" + tillNumber + " AND SALE_NO=" + Convert.ToString(saleNumber) + " ORDER BY SusLine.Line_Num ", DataSource.CSCTills); } if (uHead.Rows.Count > 0) { sale.Sale_Num = CommonUtility.GetIntergerValue(uHead.Rows[0]["SALE_NO"]); sale.TillNumber = (byte)tillNumber; sale.Register = CommonUtility.GetByteValue(uHead.Rows[0]["Regist"]); sale.Customer.Code = CommonUtility.GetStringValue(uHead.Rows[0]["Client"]); sale.Sale_Type = CommonUtility.GetStringValue(uHead.Rows[0]["T_type"]); sale.Return_Reason.Reason = CommonUtility.GetStringValue(uHead.Rows[0]["Reason"]); sale.Return_Reason.RType = CommonUtility.GetStringValue(uHead.Rows[0]["Reason_Type"]); sale.Sale_Totals.Invoice_Discount_Type = CommonUtility.GetStringValue(uHead.Rows[0]["Disc_Type"]); sale.Sale_Totals.Invoice_Discount = CommonUtility.GetDecimalValue(uHead.Rows[0]["Invc_Disc"]); sale.Sale_Totals.Discount_Percent = CommonUtility.GetFloatValue(uHead.Rows[0]["Discount_Percent"]); sale.Void_Num = CommonUtility.GetIntergerValue(uHead.Rows[0]["Void_No"]); sale.Customer.LoyaltyCard = CommonUtility.GetStringValue(uHead.Rows[0]["LoyaltyCard"]); sale.Customer.LoyaltyExpDate = CommonUtility.GetStringValue(uHead.Rows[0]["LoyaltyExpDate"]); sale.CouponID = CommonUtility.GetStringValue(uHead.Rows[0]["CouponID"]); sale.Upsell = CommonUtility.GetBooleanValue(uHead.Rows[0]["Upsell"]); var ln = (short)0; foreach (DataRow row in uLine.Rows) { ln++; var sl = new Sale_Line { Sale_Num = CommonUtility.GetStringValue(row["sale_no"]), Till_Num = sale.TillNumber }; sale.Sale_Num = CommonUtility.GetIntergerValue(row["sale_no"]); sl.Line_Num = ln; sl.PLU_Code = CommonUtility.GetStringValue(row["PLU_Code"]); sl.Quantity = CommonUtility.GetFloatValue(row["Quantity"]); sl.price = CommonUtility.GetDoubleValue(row["price"]); sl.Amount = CommonUtility.GetDecimalValue(row["Amount"]); sl.Line_Discount = CommonUtility.GetDoubleValue(row["Discount"]); sl.Discount_Type = CommonUtility.GetStringValue(row["Disc_Type"]); sl.Discount_Adjust = CommonUtility.GetDoubleValue(row["Disc_Adj"]); sl.Discount_Code = CommonUtility.GetStringValue(row["Disc_Code"]); sl.Discount_Rate = CommonUtility.GetFloatValue(row["Disc_Rate"]); sl.DiscountName = CommonUtility.GetStringValue(row["DiscountName"]); sl.Price_Type = CommonUtility.GetCharValue(row["Price_Type"]); sl.Loyalty_Save = CommonUtility.GetFloatValue(row["Loyl_Save"]); sl.Units = CommonUtility.GetStringValue(row["Units"]); sl.Serial_No = CommonUtility.GetStringValue(row["Serial_No"]); sl.User = CommonUtility.GetStringValue(row["User"]); sl.pumpID = CommonUtility.GetByteValue(row["pumpID"]); sl.PositionID = CommonUtility.GetByteValue(row["PositionID"]); sl.GradeID = CommonUtility.GetByteValue(row["GradeID"]); sl.Gift_Certificate = CommonUtility.GetBooleanValue(row["Gift_Cert"]); sl.Gift_Num = CommonUtility.GetStringValue(row["GC_Num"]); sale.TillNumber = (byte)tillNumber; sl.ManualFuel = CommonUtility.GetBooleanValue(row["ManualFuel"]); sl.IsTaxExemptItem = CommonUtility.GetBooleanValue(row["TaxExempt"]); var strPromo = CommonUtility.GetStringValue(row["PromoID"]); if (!string.IsNullOrEmpty(strPromo)) { sl.PromoID = strPromo; } sl.Upsell = CommonUtility.GetBooleanValue(row["Upsell"]); sl.ScalableItem = CommonUtility.GetBooleanValue(row["ScalableItem"]); DataTable uReason; if (shareSusp) { uReason = GetRecords( "select * from SusReas WHERE SALE_NO=" + Convert.ToString(saleNumber) + " AND LINE_Num = " + ln + " ORDER BY SusReas.Line_Num", DataSource.CSCTills); } else { uReason = GetRecords( "select * from SusReas where TILL_NUM=" + tillNumber + " AND SALE_NO=" + Convert.ToString(saleNumber) + " AND LINE_Num = " + ln + " ORDER BY SusReas.Line_Num", DataSource.CSCTills); } var returnReason = new Return_Reason(); foreach (DataRow dataRow in uReason.Rows) { if (CommonUtility.GetStringValue(dataRow["Reason"]) != "" & CommonUtility.GetStringValue(dataRow["Reason_Type"]) != "") { returnReason.Reason = CommonUtility.GetStringValue(dataRow["Reason"]); returnReason.RType = CommonUtility.GetStringValue(dataRow["Reason_Type"]); } sl.Return_Reasons.Add(returnReason.Reason, returnReason.RType, ln.ToString()); } sale.Sale_Lines.AddLine(ln, sl, ""); } _performancelog.Debug($"End,SuspendedSaleService,GetSuspendedSale,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}"); return(sale); } _performancelog.Debug($"End,SuspendedSaleService,GetSuspendedSale,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}"); return(new Sale()); }
/// <summary> /// Get the list of tills /// </summary> /// <param name="posId">Pos id</param> /// <param name="tillNumber">Till number</param> /// <param name="shiftDate">Shift date</param> /// <param name="userCode">User code</param> /// <param name="active">Is active or not</param> /// <param name="process">Is processing or not</param> /// <returns>Tills</returns> public List <Till> GetTills(int?posId, int?tillNumber, DateTime?shiftDate, string userCode, int?active, int?process) { var dateStart = DateTime.Now; _performancelog.Debug($"Start,TillService,GetTills,{string.Empty},{DateTime.Now:hh.mm.ss.ffffff}"); var whereClause = new StringBuilder(); string query; if (posId.HasValue) { whereClause.Append($" AND POSID={posId.Value}"); } if (tillNumber.HasValue) { whereClause.Append($" AND TILL_NUM={tillNumber.Value} "); } if (shiftDate.HasValue) { whereClause.Append($" AND ShiftDate={shiftDate.Value}"); } if (!string.IsNullOrEmpty(userCode)) { whereClause.Append($" AND UserLoggedOn='{userCode}'"); } if (active.HasValue) { whereClause.Append($" AND ACTIVE={active.Value}"); } if (process.HasValue) { whereClause.Append($" AND PROCESS={process.Value}"); } if (whereClause.Length != 0) { var condition = whereClause.ToString().Substring(5, whereClause.Length - 5); query = $"Select * from Tills where {condition}"; } else { query = "Select * from Tills"; } var sTills = GetRecords(query, DataSource.CSCMaster); var tills = new List <Till>(); foreach (DataRow row in sTills.Rows) { var till = new Till { Number = CommonUtility.GetShortValue(row["TILL_NUM"]), Active = CommonUtility.GetBooleanValue(row["ACTIVE"]), Processing = CommonUtility.GetBooleanValue(row["PROCESS"]), Float = CommonUtility.GetDecimalValue(row["FLOAT"]), BonusFloat = CommonUtility.GetDecimalValue(row["CashBonusFloat"]), Cash = CommonUtility.GetDecimalValue(row["CASH"]), Date_Open = CommonUtility.GetDateTimeValue(row["DATE_OPEN"]), Time_Open = CommonUtility.GetDateTimeValue(row["TIME_OPEN"]), ShiftDate = CommonUtility.GetDateTimeValue(row["ShiftDate"]), Shift = CommonUtility.GetShortValue(row["ShiftNumber"]), UserLoggedOn = CommonUtility.GetStringValue(row["UserLoggedOn"]), POSId = CommonUtility.GetIntergerValue(row["POSID"]), CashBonus = CommonUtility.GetDecimalValue(row["CashBonus"]) }; tills.Add(till); } _performancelog.Debug($"End,TillService,GetTills,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}"); return(tills); }