示例#1
0
        /// <summary>
        /// Get Sale lines
        /// </summary>
        /// <param name="saleNumber"></param>
        /// <param name="tillNumber"></param>
        /// <param name="userCode"></param>
        /// <returns>List of sale lines</returns>
        public List <Sale_Line> GetSaleLinesFromDbTemp(int saleNumber, int tillNumber, string userCode)
        {
            var dateStart = DateTime.Now;

            _performancelog.Debug($"Start,SaleLineService,GetSaleLinesFromDbTemp,{string.Empty},{DateTime.Now:hh.mm.ss.ffffff}");

            var saleLines = new List <Sale_Line>();

            var   rsLine   = GetRecords("SELECT * FROM   SaleLine WHERE  SaleLine.Sale_No = " + Convert.ToString(saleNumber) + " and   SaleLine.Till_Num = " + tillNumber + " ORDER BY SaleLine.Line_Num ", DataSource.CSCCurSale);
            var   rsReason = GetRecords("SELECT * FROM SLineReason WHERE SLineReason.Sale_No = " + Convert.ToString(saleNumber) + " and   SLineReason.Till_Num = " + tillNumber + " ORDER BY SLineReason.Line_Num", DataSource.CSCCurSale);
            short ln       = 0;

            foreach (DataRow lineFields in rsLine.Rows)
            {
                ln++;

                var saleLine = new Sale_Line {
                    PLU_Code = Convert.ToString(lineFields["PLU_Code"])
                };

                if (saleLine.ProductIsFuel && !saleLine.IsPropane)
                {
                    saleLine.Regular_Price = Convert.ToDouble(lineFields["price"]);
                }
                saleLine.Line_Num         = ln;
                saleLine.User             = userCode.ToUpper();
                saleLine.Quantity         = Convert.ToSingle(lineFields["Quantity"]);
                saleLine.pumpID           = Convert.ToByte(lineFields["pumpID"]);     // Nicolette
                saleLine.PositionID       = Convert.ToByte(lineFields["PositionID"]); // Nicolette
                saleLine.GradeID          = Convert.ToByte(lineFields["GradeID"]);    // Nicolette
                saleLine.Gift_Certificate = Convert.ToBoolean(lineFields["Gift_Cert"]);
                saleLine.Gift_Num         = Convert.ToString(lineFields["GC_Num"]);
                saleLine.Serial_No        = Convert.ToString(lineFields["Serial_No"]);
                saleLine.Stock_Code       = CommonUtility.GetStringValue(lineFields["Stock_Code"]);
                saleLine.Prepay           = Convert.ToBoolean(lineFields["Prepay"]);
                saleLine.Amount           = Convert.ToDecimal(lineFields["Amount"]);
                saleLine.PositionID       = Convert.ToByte(lineFields["PositionID"]);

                saleLine.ManualFuel = Convert.ToBoolean(lineFields["ManualFuel"]);

                saleLine.IsTaxExemptItem = Convert.ToBoolean(lineFields["TaxExempt"]);

                saleLine.PaidByCard =
                    Convert.ToByte(DBNull.Value.Equals(lineFields["PaidByCard"])
                        ? 0
                        : lineFields["PaidByCard"]);


                saleLine.Upsell =
                    Convert.ToBoolean(DBNull.Value.Equals(lineFields["Upsell"])
                        ? false
                        : lineFields["Upsell"]);

                saleLine.ScalableItem =
                    Convert.ToBoolean(DBNull.Value.Equals(lineFields["ScalableItem"])
                        ? false
                        : lineFields["ScalableItem"]);
                if (saleLine.Amount < 0)
                {
                    saleLine.No_Loading = true;
                }


                saleLine.No_Loading = true;
                // Set this property here, otherwise the stock item is a mess in POS screen and no others properties like description, dept, sub_dept, etc are set
                saleLine.price =
                    Convert.ToDouble(DBNull.Value.Equals(lineFields["price"])
                        ? 0
                        : lineFields["price"]);
                saleLine.TEPrice =
                    Convert.ToDouble(DBNull.Value.Equals(lineFields["TEPrice"])
                        ? 0
                        : lineFields["TEPrice"]);
                if (saleLine.ScalableItem)
                {
                    saleLine.Regular_Price = saleLine.price;
                }

                saleLine.Quantity =
                    Convert.ToSingle(DBNull.Value.Equals(lineFields["Quantity"])
                        ? 0
                        : lineFields["Quantity"]);
                saleLine.Amount =
                    Convert.ToDecimal(DBNull.Value.Equals(lineFields["Amount"])
                        ? 0
                        : lineFields["Amount"]);
                saleLine.Total_Amount =
                    Convert.ToDecimal(-1 *
                                      Convert.ToInt32(
                                          DBNull.Value.Equals(lineFields["TOTAL_AMT"])
                                                     ? 0
                                                     : lineFields["TOTAL_AMT"]));
                saleLine.Discount_Adjust = Convert.ToDouble(lineFields["Disc_Adj"]);
                saleLine.Line_Discount   = Convert.ToDouble(lineFields["Discount"]);
                saleLine.Discount_Type   = Convert.ToString(lineFields["Disc_Type"]);
                saleLine.Discount_Code   =
                    Convert.ToString(DBNull.Value.Equals(lineFields["Disc_Code"])
                        ? ""
                        : lineFields["Disc_Code"]);
                saleLine.Discount_Rate = Convert.ToSingle(lineFields["Disc_Rate"]);
                saleLine.DiscountName  =
                    Convert.ToString(DBNull.Value.Equals(lineFields["DiscountName"])
                        ? ""
                        : lineFields["DiscountName"]);
                saleLine.CardProfileID =
                    Convert.ToString(DBNull.Value.Equals(lineFields["CardProfileID"])
                        ? 0
                        : lineFields["CardProfileID"]);
                saleLine.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
                // Nicolette end

                var strPromo =
                    Convert.ToString(DBNull.Value.Equals(lineFields["PromoID"])
                        ? ""
                        : lineFields["PromoID"]);
                if (strPromo.Length != 0)
                {
                    saleLine.PromoID = strPromo; //
                }

                if (rsReason != null)
                {
                    foreach (DataRow reasonFields in rsReason.Rows)
                    {
                        if ((int)reasonFields["Line_Num"] == ln)
                        {
                            saleLine.Return_Reasons.Add(Convert.ToString(reasonFields["Reason"]),
                                                        Convert.ToString(reasonFields["Reason_Type"]),
                                                        Convert.ToString(reasonFields["Reason_Type"]));
                        }
                    }
                }
                else
                {
                    saleLine.Return_Reasons = new Return_Reasons();
                }

                saleLines.Add(saleLine);
            }
            _performancelog.Debug($"End,SaleLineService,GetSaleLinesFromDbTemp,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");

            return(saleLines);
        }
示例#2
0
        /// <summary>
        /// Load Store information
        /// </summary>
        /// <returns></returns>
        public Store LoadStoreInfo()
        {
            var dateStart = DateTime.Now;

            _performancelog.Debug($"Start,LoginService,LoadStoreInfo,{string.Empty},{DateTime.Now:hh.mm.ss.ffffff}");
            var store = new Store();
            var rs    = GetRecords("Select * from Setup_C", DataSource.CSCAdmin);

            if (rs != null && rs.Rows.Count > 0)
            {
                var fields = rs.Rows[0];
                store.Name       = CommonUtility.GetStringValue(fields["Company_Name"]);
                store.RegName    = CommonUtility.GetStringValue(fields["Reg_Name"]);
                store.RegNum     = CommonUtility.GetStringValue(fields["Reg_Num"]);
                store.SecRegName = CommonUtility.GetStringValue(fields["Sec_Reg_Name"]);
                store.SecRegNum  = CommonUtility.GetStringValue(fields["Sec_Reg_Num"]);
                store.Language   = CommonUtility.GetStringValue(fields["Language"]);
                // Store.Code is used in till close to set Store field in SaleHead table
                // With a null value in Store field in SaleHead after the till was closed, DTS package that transfers data from Bo to Ho will fail
                // BackOffice has this property set, so for tills closed from BO there is no problem
                store.Code               = CommonUtility.GetStringValue(fields["Store"]);
                store.Address.Street1    = CommonUtility.GetStringValue(fields["Address_1"]);
                store.Address.Street2    = CommonUtility.GetStringValue(fields["Address_2"]);
                store.Address.City       = CommonUtility.GetStringValue(fields["City"]);
                store.Address.ProvState  = CommonUtility.GetStringValue(fields["Province"]);
                store.Address.Country    = CommonUtility.GetStringValue(fields["Country"]);
                store.Address.PostalCode = CommonUtility.GetStringValue(fields["Postal_Code"]);
                store.Address.Phones.Add("Tel", "Phone", "", CommonUtility.GetStringValue(fields["Tel_Num"]), "");
                store.Address.Phones.Add("Fax", "Fax", "", CommonUtility.GetStringValue(fields["Fax_Num"]), ""); //"Fax","Fax"
            }

            if (!string.IsNullOrEmpty(store.Language))
            {
                rs = GetRecords("Select * From Languages  WHERE Languages.Language = \'" + store.Language + "\'", DataSource.CSCMaster);
                if (rs.Rows.Count != 0)
                {
                    store.OffSet = CommonUtility.GetShortValue(rs.Rows[0]["OffSet"]);
                }
                else
                {
                    store.OffSet = 0;
                }
            }
            else
            {
                store.OffSet = 0;
            }

            rs = GetRecords("SELECT * FROM Receipt where ID=\'1\'", DataSource.CSCMaster);
            if (rs != null && rs.Rows.Count > 0)
            {
                var fields = rs.Rows[0];

                store.Sale_Footer   = CommonUtility.GetStringValue(fields["Sale_Foot"]);
                store.Refund_Footer = CommonUtility.GetStringValue(fields["Ref_Foot"]);
            }
            rs = GetRecords("SELECT * FROM Receipt where ID=\'2\'", DataSource.CSCMaster);
            if (rs == null || rs.Rows.Count == 0)
            {
                return(store);
            }
            {
                var fields = rs.Rows[0];

                store.TaxExempt_Footer = CommonUtility.GetStringValue(fields["Sale_Foot"]);
            }
            _performancelog.Debug($"End,LoginService,LoadStoreInfo,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");
            return(store);
        }
示例#3
0
        /// <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);
        }
示例#4
0
        /// <summary>
        /// Method to get tax exempt sale line
        /// </summary>
        /// <param name="saleNumber">Sale number</param>
        /// <param name="tillNumber">Till number</param>
        /// <returns>Tax exempt sale lines</returns>
        public List <TaxExemptSaleLine> GetTaxExemptSaleLines(int saleNumber, int tillNumber)
        {
            var dateStart = DateTime.Now;

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

            var taxExemptSalelines = new List <TaxExemptSaleLine>();
            var rsSite             =
                GetRecords(
                    "select * from TaxExemptSaleLine a inner join TaxExemptSaleHead b " +
                    " On  a.sale_no = b.sale_No and a.till_num = b.till_num Where a.sale_no =" +
                    Convert.ToString(saleNumber) + " and a.Till_num =" + Convert.ToString(tillNumber),
                    DataSource.CSCTills);

            foreach (DataRow dataRow in rsSite.Rows)
            {
                taxExemptSalelines.Add(new TaxExemptSaleLine
                {
                    ExemptedTax  = CommonUtility.GetIntergerValue(dataRow["ExemptedTax"]),
                    ProductType  = (mPrivateGlobals.teProductEnum)Enum.Parse(typeof(mPrivateGlobals.teProductEnum), CommonUtility.GetStringValue(dataRow["ProductType"]), true),
                    CardHolderID = CommonUtility.GetStringValue(dataRow["CardholderID"])
                });
            }

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

            return(taxExemptSalelines);
        }
示例#5
0
        /// <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>
        /// Search Customers
        /// </summary>
        /// <param name="searchCriteria"></param>
        /// <param name="totalrecords"></param>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        public List <Customer> Search(string searchCriteria, out int totalrecords, int pageIndex = 1, int pageSize = 100)
        {
            var dateStart = DateTime.Now;

            _performancelog.Debug($"Start,CustomerService,Search,{string.Empty},{DateTime.Now:hh.mm.ss.ffffff}");
            totalrecords = 0;
            var customers = new List <Customer>();
            var query     = "Select * from Client " +
                            " WHERE  (Client.CL_Status IS NULL " +
                            " OR Client.CL_Status IN (\'A\',\'F\',\'\')) " +
                            " AND (CL_NAME like \'%" + searchCriteria + "%\' OR " +
                            " CL_CODE like \'%" + searchCriteria + "%\' OR " +
                            " CL_PHONE like \'%" + searchCriteria + "%\' )" +
                            "ORDER BY CLIENT.CL_CODE, CLIENT.CL_NAME, CLIENT.CL_PHONE";
            var dt = GetPagedRecords(query, DataSource.CSCMaster, pageIndex, pageSize);

            if (dt != null)
            {
                totalrecords = dt.Rows.Count;

                customers.AddRange(from DataRow fields in dt.Rows
                                   select new Customer
                {
                    Code                  = CommonUtility.GetStringValue(fields["CL_CODE"]),
                    Name                  = CommonUtility.GetStringValue(fields["CL_NAME"]),
                    Category              = CommonUtility.GetStringValue(fields["CL_CATEG"]),
                    Address_1             = CommonUtility.GetStringValue(fields["CL_ADD1"]),
                    Address_2             = CommonUtility.GetStringValue(fields["CL_ADD2"]),
                    City                  = CommonUtility.GetStringValue(fields["CL_CITY"]),
                    Province              = CommonUtility.GetStringValue(fields["CL_PROV"]),
                    Country               = CommonUtility.GetStringValue(fields["CL_COUNTRY"]),
                    Postal_Code           = CommonUtility.GetStringValue(fields["CL_POSTAL"]),
                    Area_Code             = CommonUtility.GetStringValue(fields["CL_ACODE"]),
                    Phone                 = CommonUtility.GetStringValue(fields["CL_PHONE"]),
                    Cell_Phone            = CommonUtility.GetStringValue(fields["CL_CELL"]),
                    Fax                   = CommonUtility.GetStringValue(fields["CL_FAX"]),
                    Toll_Free             = CommonUtility.GetStringValue(fields["CL_TOLL"]),
                    E_Mail                = CommonUtility.GetStringValue(fields["CL_EMAIL"]),
                    Contact_1             = CommonUtility.GetStringValue(fields["CL_CONT1"]),
                    Contact_2             = CommonUtility.GetStringValue(fields["CL_CONT2"]),
                    Loyalty_Code          = CommonUtility.GetStringValue(fields["LO_NUM"]),
                    Loyalty_Points        = CommonUtility.GetDoubleValue(fields["LO_POINTS"]),
                    AR_Customer           = CommonUtility.GetBooleanValue(fields["CL_ARCUST"]),
                    Customer_Type         = CommonUtility.GetStringValue(fields["CL_TYPE"]),
                    Terms                 = CommonUtility.GetShortValue(fields["TERMS"]),
                    Credit_Limit          = CommonUtility.GetDoubleValue(fields["CL_LIMIT"]),
                    Current_Balance       = CommonUtility.GetDoubleValue(fields["CL_CURBAL"]),
                    CL_Status             = CommonUtility.GetStringValue(fields["CL_STATUS"]),
                    UsePO                 = CommonUtility.GetBooleanValue(fields["UsePO"]),
                    GroupID               = CommonUtility.GetStringValue(fields["GroupID"]),
                    UseFuelRebate         = CommonUtility.GetBooleanValue(fields["UseFuelRebate"]),
                    UseFuelRebateDiscount = CommonUtility.GetBooleanValue(fields["UseFuelRebateDiscount"]),
                    CL_Note               = CommonUtility.GetStringValue(fields["CL_Note"]),
                    TaxExempt             = CommonUtility.GetBooleanValue(fields["TaxExempt"]),
                    PlateNumber           = CommonUtility.GetStringValue(fields["PlateNumber"]),
                    MultiUse_PO           = CommonUtility.GetBooleanValue(fields["MultiUse_PO"]),
                    TECardNumber          = CommonUtility.GetStringValue(fields["TECardNumber"]),
                    Discount_Code         = CommonUtility.GetByteValue(fields["CUST_DISC"])
                });
            }

            _performancelog.Debug($"End,CustomerService,Search,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");
            return(customers);
        }
示例#7
0
        /// <summary>
        /// Is Tank Exists
        /// </summary>
        /// <param name="tankno">Tank number</param>
        /// <param name="gradeId">Grade id</param>
        /// <returns>True or false</returns>
        public bool IsTankExists(byte tankno, int gradeId)
        {
            var rstank = GetRecords("Select TankCode from TankInfo where ID = " + CommonUtility.GetStringValue(tankno) + "AND GradeID=" + CommonUtility.GetStringValue(gradeId), DataSource.CSCPump);

            if (rstank != null && rstank.Rows.Count != 0)
            {
                return(true);
            }
            return(false);
        }
示例#8
0
        /// <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>
        /// Method to affix bar code
        /// </summary>
        /// <param name="strBarcode">Bar code</param>
        /// <param name="cardNumber">Card number</param>
        /// <param name="validateMode">Validation mode</param>
        /// <returns>True or false</returns>
        public bool AffixBarcode(string strBarcode, string cardNumber, byte validateMode)
        {
            if (string.IsNullOrEmpty(cardNumber))
            {
                return(false);
            }


            _connection = new SqlConnection(GetConnectionString(DataSource.CSCMaster));
            if (_connection.State == ConnectionState.Closed)
            {
                _connection.Open();
            }
            _dataTable = new DataTable();
            _adapter   = new SqlDataAdapter("Select * from TaxExemptCardRegistry where BarCode=\'" + strBarcode + "\' " + " OR AltBarCode=\'" + strBarcode + "\'", _connection);
            _adapter.Fill(_dataTable);
            if (_dataTable.Rows.Count != 0)
            {
                return(false);
            }

            //since allow affix bar code based on bar code
            if (validateMode == 3 | validateMode == 1)
            {
                _dataTable = new DataTable();
                _adapter   = new SqlDataAdapter("select * from TaxExemptCardRegistry where CardNumber=\'" + cardNumber + "\' ", _connection);
                _adapter.Fill(_dataTable);
                if (_dataTable.Rows.Count == 0)
                {
                    return(false);
                }
                var rsFields = _dataTable.Rows[0];
                if (CommonUtility.GetStringValue(rsFields["Barcode"]) != strBarcode || DBNull.Value.Equals(rsFields["Barcode"]))
                {
                    rsFields["Barcode"]    = strBarcode;
                    rsFields["Updated"]    = 1;
                    rsFields["UpdateTime"] = DateTime.Now;
                    SqlCommandBuilder builder = new SqlCommandBuilder(_adapter);
                    _adapter.UpdateCommand = builder.GetUpdateCommand();
                    _adapter.Update(_dataTable);
                }
            }
            else
            {
                _dataTable = new DataTable();
                _adapter   = new SqlDataAdapter("select * from TaxExemptCardRegistry where AltCardNumber=\'" + cardNumber + "\' ", _connection);
                _adapter.Fill(_dataTable);
                if (_dataTable.Rows.Count == 0)
                {
                    return(false);
                }
                var rsFields = _dataTable.Rows[0];
                if (CommonUtility.GetStringValue(rsFields["AltBarCode"]) != strBarcode)
                {
                    rsFields["AltBarCode"] = strBarcode;
                    rsFields["Updated"]    = 1;
                    rsFields["UpdateTime"] = DateTime.Now;
                    SqlCommandBuilder builder = new SqlCommandBuilder(_adapter);
                    _adapter.UpdateCommand = builder.GetUpdateCommand();
                    _adapter.Update(_dataTable);
                }
            }
            _connection.Close();
            _adapter?.Dispose();
            return(true);
        }
        /// <summary>
        /// Get Bottle Returns to display on Main Grid
        /// </summary>
        /// <param name="startIndex">Start index</param>
        /// <param name="endIndex">End index</param>
        /// <returns>List of bottles</returns>
        public List <BottleReturn> GetBottlesFromDbMaster(int startIndex, int endIndex)
        {
            var dt            = GetRecords("SELECT *  FROM   HotButtons  WHERE  HotButtons.Button > " + (startIndex - 1) + " " + " AND  HotButtons.Button <" + (endIndex + 1) + "ORDER BY HotButtons.Button ", DataSource.CSCMaster);
            var bottleReturns = new List <BottleReturn>();

            foreach (DataRow dr in dt.Rows)
            {
                var bottleReturn = new BottleReturn
                {
                    Product     = CommonUtility.GetStringValue(dr["Product"]),
                    Image_Url   = CommonUtility.GetStringValue(dr["Image_Url"]),
                    Description = $"{CommonUtility.GetStringValue(dr["Description_1"])} {CommonUtility.GetStringValue(dr["Description_2"])}",
                    Price       = CommonUtility.GetFloatValue(dr["BottlePrice"]),
                    Quantity    = CommonUtility.GetFloatValue(dr["DefaultQty"])
                };
                bottleReturns.Add(bottleReturn);
            }
            return(bottleReturns);
        }
示例#11
0
        public void Set_Customer_KickBack_Data(string InputValue, bool isPhoneNumber, string PointCardNumber,
                                               ref Sale sale, bool doSwipeCheck = false)
        {
            var customer = new Customer();

            //  ADODB.Recordset rsTemp = default(ADODB.Recordset);

            if (isPhoneNumber)
            {
                var query = GetRecords("SELECT CustomerCardNum, PointCardNum FROM KickBack " + "WHERE PhoneNum=\'" + InputValue.Trim() + "\'", DataSource.CSCMaster);


                if (query.Rows.Count > 0)

                {
                    var row = query.Rows[0];
                    sale.Customer.CustomerCardNum = CommonUtility.GetStringValue(row["CustomerCardNum"]);
                    sale.Customer.PointCardNum    = CommonUtility.GetStringValue(row["PointCardNum"]);
                    sale.Customer.PointCardPhone  = InputValue.Trim();
                    sale.Customer.PointCardSwipe  = doSwipeCheck ? (isPhoneNumber ? "1" : "2") : "1"; //0-from database based on a swiped GK card, 1-from phone number, 2-swiped
                    WriteUDPData(DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss tt") + "Inside setkickback 45 cardno value" + sale.Customer.PointCardNum);
                }
                else
                {
                    // if the phone number is not in the database, send to Kick Back to validate
                    sale.Customer.CustomerCardNum = null;
                    sale.Customer.PointCardNum    = null;
                    sale.Customer.PointCardPhone  = InputValue.Trim();
                    sale.Customer.PointCardSwipe  = doSwipeCheck ? (isPhoneNumber ? "1" : "2") : "1"; //0-from database based on a swiped GK card, 1-from phone number, 2-swiped
                }
                sale.Customer.PointsCard_AllowRedemption = false;                                     // no redemption for phone number
            }
            else
            {
                var query = GetRecords("SELECT CustomerCardNum, PhoneNum FROM KickBack " + "WHERE PointCardNum=\'"
                                       + PointCardNumber.Trim() + "\'", DataSource.CSCMaster);

                if (query.Rows.Count > 0)
                {
                    var row = query.Rows[0];
                    sale.Customer.CustomerCardNum = CommonUtility.GetStringValue(row["CustomerCardNum"]);
                    sale.Customer.PointCardNum    = PointCardNumber.Trim();
                    sale.Customer.PointCardPhone  = CommonUtility.GetStringValue(row["phonenum"]);
                    sale.Customer.PointCardSwipe  = doSwipeCheck ? (isPhoneNumber ? "1" : "2") : "1"; //0-from database, 1-from phone number, 2-swiped
                    WriteUDPData(DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss tt") + "Inside setkickback 68 cardno value" + sale.Customer.PointCardNum);
                }
                else
                {
                    // if the phone number is not in the database, send to Kick Back to validate
                    sale.Customer.CustomerCardNum = null;
                    sale.Customer.PointCardNum    = PointCardNumber.Trim();
                    sale.Customer.PointCardPhone  = null;
                    sale.Customer.PointCardSwipe  = doSwipeCheck ? (isPhoneNumber ? "1" : "2") : "1";//0-from database, 1-from phone number, 2-swiped
                }

                // Nicolette May 12, 2009: if Kick Back card is swiped then the system should allow redemption
                // redemption is also based on the KickBack response (card should be registered, otherwise no redemption allowed)
                sale.Customer.PointsCard_AllowRedemption = true;
                WriteUDPData(DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss tt") + "Inside setkickback 82 cardno value" + sale.Customer.PointCardNum);
            }
        }
        /// <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());
        }
示例#13
0
        /// <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);
        }
示例#14
0
        /// <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);
        }
示例#15
0
        /// <summary>
        /// Get Dip Input values
        /// </summary>
        /// <returns>List of dip input</returns>
        public List <DipInput> GetDipInputValues()
        {
            List <DipInput> dipInputs = new List <DipInput>();
            var             strDate   = DateAndTime.Year(DateAndTime.Today) + Strings.Right("00" + CommonUtility.GetStringValue(DateAndTime.Month(DateAndTime.Today)), 2) + Strings.Right("00" + CommonUtility.GetStringValue(DateAndTime.Day(DateAndTime.Today)), 2);
            var             strSql    = "select A.ID, A.GradeID, B.FullName from TankInfo as A INNER JOIN Grade as B ON A.GradeID=B.ID where B.FuelType=\'G\'";
            var             dt        = GetRecords(strSql, DataSource.CSCPump);

            if (dt != null && dt.Rows.Count > 0)
            {
                foreach (DataRow dr in dt.Rows)
                {
                    DipInput input = new DipInput
                    {
                        TankId  = CommonUtility.GetStringValue(dr["ID"]),
                        Grade   = CommonUtility.GetStringValue(dr["FullName"]),
                        GradeId = CommonUtility.GetStringValue(dr["GradeID"])
                    };
                    string query = "select * from DipInput where TankID=" + CommonUtility.GetStringValue(dr["ID"]) + " and CONVERT(char(8), DipDate, 112)=\'" + strDate + "\'";
                    var    rsDip = GetRecords(query, DataSource.CSCTrans);
                    if (rsDip == null || rsDip.Rows.Count == 0)
                    {
                        input.DipValue = "";
                    }
                    else
                    {
                        input.DipValue = CommonUtility.GetStringValue(rsDip.Rows[0]["DipValue"]);
                    }
                    dipInputs.Add(input);
                }
            }
            return(dipInputs);
        }
示例#16
0
        /// <summary>
        /// Checks whether correction is allowed
        /// </summary>
        /// <param name="saleNumber">Sale number</param>
        /// <returns>True or false</returns>
        public bool IsAllowCorrection(int saleNumber)
        {
            var dateStart = DateTime.Now;

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

            //#: we have a transaction processed. We want to do void of it. After voiding the original transaction shouldn’t be available for another void.
            var strSql = "Select SALE_NO From VoidSale Where Sale_No = " + Convert.ToString(saleNumber) + " OR Void_No = " + Convert.ToString(saleNumber);
            var rsTmp  = GetRecords(strSql, DataSource.CSCTrans);

            if (rsTmp == null || rsTmp.Rows.Count == 0)
            {
                rsTmp = GetRecords(strSql, DataSource.CSCTills);
            }



            if (rsTmp != null && rsTmp.Rows.Count != 0)
            {
                return(false);
            }


            strSql = "Select TENDCLAS From SaleTend Where Sale_No = " + Convert.ToString(saleNumber) + " AND AMTTEND<>0";
            rsTmp  = GetRecords(strSql, DataSource.CSCTrans);
            if (rsTmp == null || rsTmp.Rows.Count == 0)
            {
                rsTmp = GetRecords(strSql, DataSource.CSCTills);
            }

            if (rsTmp == null || rsTmp.Rows.Count == 0)
            {
                return(false);
            }


            if (rsTmp.Rows.Count != 1)
            {
                return(false);
            }
            var fields = rsTmp.Rows[0];

            if (CommonUtility.GetStringValue(fields["TENDCLAS"]).ToUpper() != "CRCARD" && CommonUtility.GetStringValue(fields["TENDCLAS"]).ToUpper() != "DBCARD")
            {
                _performancelog.Debug($"End,ReturnSaleService,IsAllowCorrection,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");

                return(false);
            }
            _performancelog.Debug($"End,ReturnSaleService,IsAllowCorrection,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");

            return(true);
        }
示例#17
0
        /// <summary>
        /// Get Maximum Dip value For Tank No
        /// </summary>
        /// <param name="tankno">Tank number</param>
        /// <returns>Maximum dip</returns>
        public float MaximumDip(byte tankno)
        {
            float returnValue;

            var dt = GetRecords("Select TankCode from TankInfo where ID = " + CommonUtility.GetStringValue(tankno), DataSource.CSCPump);

            if (dt != null && dt.Rows.Count > 0)
            {
                var rs = GetRecords("SELECT Length, Diameter, Capacity, TankEnds, Orientation,ReadingType, UseChart FROM   TankType WHERE  TankCode = \'" + CommonUtility.GetStringValue(dt.Rows[0]["TankCode"]) + "\' ", DataSource.CSCPump);
                if (rs != null && rs.Rows.Count > 0)
                {
                    if (Strings.UCase(CommonUtility.GetStringValue(rs.Rows[0]["Readingtype"])) == "G")
                    {
                        returnValue = 100;
                    }
                    else
                    {
                        if (CommonUtility.GetBooleanValue(rs.Rows[0]["UseChart"]) == false)
                        {
                            if (Strings.UCase(CommonUtility.GetStringValue(rs.Rows[0]["Orientation"])) == "H")
                            {
                                // For horizontal tanks it's the diameter
                                returnValue = CommonUtility.GetFloatValue(rs.Rows[0]["Diameter"]);
                            }
                            else
                            {
                                // For vertical tanks its the length
                                returnValue = CommonUtility.GetFloatValue(rs.Rows[0]["length"]);
                            }
                        }
                        else
                        {
                            var rsMax = GetRecords("select max(Depth) as [MaxDip] from TankChart Where   DipChart = \'" + CommonUtility.GetStringValue(dt.Rows[0]["TankCode"]) + "\' ", DataSource.CSCPump);
                            if (rsMax != null && rsMax.Rows.Count > 0)
                            {
                                returnValue = CommonUtility.GetFloatValue(rsMax.Rows[0]["maxdip"]);
                            }
                            else
                            {
                                returnValue = 0;
                            }
                        }
                    }
                }
                else
                {
                    // If the Tank Type wasn't found in the database then
                    // load dummy values.
                    returnValue = 0;
                }
            }
            else
            {
                returnValue = 0;
            }
            return(returnValue);
        }
示例#18
0
        /// <summary>
        /// Checks If Sale Exists
        /// </summary>
        /// <param name="saleNumber">Sale number</param>
        /// <param name="saleDate">Sale date</param>
        /// <param name="isSaleFound">Sale found</param>
        /// <param name="isReturnable">Sale returnable or not</param>
        public void IsSaleExist(int saleNumber, DateTime saleDate, out bool isSaleFound, out bool isReturnable)
        {
            var dateStart = DateTime.Now;

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

            var saleFound = false;

            isSaleFound  = true;
            isReturnable = true;

            var strSqlHead = " SELECT * FROM   SaleHead Where  SaleHead.Sale_No = " + CommonUtility.GetStringValue(saleNumber) + " 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;
                }
            }
            else
            {
                saleFound = true;
            }

            if (!saleFound)
            {
                isSaleFound  = false;
                isReturnable = false;
                return;
            }
            var rsHeadFields = rsHead.Rows[0];

            if (saleDate != new DateTime() && CommonUtility.GetDateTimeValue(rsHeadFields["Sale_Date"]) < saleDate)
            {
                isReturnable = false;
            }
            _performancelog.Debug($"End,ReturnSaleService,IsSaleExist,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");
        }
        /// <summary>
        /// Method to load device
        /// </summary>
        /// <returns>Device</returns>
        public Device LoadDevice()
        {
            Device device = null;
            var    query  = "select max(DeviceID) as MaxID from Device";

            var records = GetRecords(query, DataSource.CSCAdmin);

            if (records.Rows.Count > 0)
            {
                var maxId = CommonUtility.GetIntergerValue(records.Rows[0]["MAXID"]);
                if (maxId > 0)
                {
                    device = new Device {
                        DeviceName = new string[maxId + 1]
                    };
                    var rsDevice = GetRecords("select * from Device", DataSource.CSCAdmin);
                    foreach (DataRow row in rsDevice.Rows)
                    {
                        device.DeviceName[CommonUtility.GetIntergerValue(row["DeviceId"])] = CommonUtility.GetStringValue(row["DeviceName"]);
                        string deviceName = CommonUtility.GetStringValue(row["DeviceName"]);
                        switch (Strings.UCase(deviceName))
                        {
                        case "SCANNER":
                            device.ScannerID = CommonUtility.GetByteValue(row["DeviceID"]);
                            break;

                        case "RECEIPTPRINTER":
                            device.ReceiptPrinterID = CommonUtility.GetByteValue(row["DeviceID"]);
                            break;

                        case "MSR":
                            device.MSRID = CommonUtility.GetByteValue(row["DeviceID"]);
                            break;

                        case "CASHDRAWER":
                            device.CashDrawerID = CommonUtility.GetByteValue(row["DeviceID"]);
                            break;

                        case "CUSTOMERDISPLAY":
                            device.CustomerDisplayID = CommonUtility.GetByteValue(row["DeviceID"]);
                            break;

                        case "REPORTPRINTER":
                            device.ReportPrinterID = CommonUtility.GetByteValue(row["DeviceID"]);
                            break;

                        case "SCALE":
                            device.ScaleID = CommonUtility.GetByteValue(row["DeviceID"]);
                            break;
                        }
                    }
                }
            }
            return(device);
        }
        /// <summary>
        /// Get Customer By Client Code
        /// </summary>
        /// <param name="clientCode">code</param>
        /// <returns>Customer</returns>
        public Customer GetClientByClientCode(string clientCode)
        {
            var dateStart = DateTime.Now;

            _performancelog.Debug($"Start,CustomerService,GetClientByClientCode,{string.Empty},{DateTime.Now:hh.mm.ss.ffffff}");
            Customer customer = null;

            var dt = GetRecords(" SELECT * FROM   Client WHERE Client.CL_Code = \'" + clientCode + "\'", DataSource.CSCMaster);

            if (dt != null && dt.Rows.Count > 0)
            {
                _performancelog.Debug($"End,CustomerService,GetClientByClientCode,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");
                customer = new Customer
                {
                    Code                  = CommonUtility.GetStringValue(dt.Rows[0]["CL_CODE"]),
                    Name                  = CommonUtility.GetStringValue(dt.Rows[0]["CL_NAME"]),
                    Category              = CommonUtility.GetStringValue(dt.Rows[0]["CL_CATEG"]),
                    Address_1             = CommonUtility.GetStringValue(dt.Rows[0]["CL_ADD1"]),
                    Address_2             = CommonUtility.GetStringValue(dt.Rows[0]["CL_ADD2"]),
                    City                  = CommonUtility.GetStringValue(dt.Rows[0]["CL_CITY"]),
                    Province              = CommonUtility.GetStringValue(dt.Rows[0]["CL_PROV"]),
                    Country               = CommonUtility.GetStringValue(dt.Rows[0]["CL_COUNTRY"]),
                    Postal_Code           = CommonUtility.GetStringValue(dt.Rows[0]["CL_POSTAL"]),
                    Area_Code             = CommonUtility.GetStringValue(dt.Rows[0]["CL_ACODE"]),
                    Phone                 = CommonUtility.GetStringValue(dt.Rows[0]["CL_PHONE"]),
                    Cell_Phone            = CommonUtility.GetStringValue(dt.Rows[0]["CL_CELL"]),
                    Fax                   = CommonUtility.GetStringValue(dt.Rows[0]["CL_FAX"]),
                    Toll_Free             = CommonUtility.GetStringValue(dt.Rows[0]["CL_TOLL"]),
                    E_Mail                = CommonUtility.GetStringValue(dt.Rows[0]["CL_EMAIL"]),
                    Contact_1             = CommonUtility.GetStringValue(dt.Rows[0]["CL_CONT1"]),
                    Contact_2             = CommonUtility.GetStringValue(dt.Rows[0]["CL_CONT2"]),
                    Loyalty_Code          = CommonUtility.GetStringValue(dt.Rows[0]["LO_NUM"]),
                    Loyalty_Points        = CommonUtility.GetDoubleValue(dt.Rows[0]["LO_POINTS"]),
                    AR_Customer           = CommonUtility.GetBooleanValue(dt.Rows[0]["CL_ARCUST"]),
                    Customer_Type         = CommonUtility.GetStringValue(dt.Rows[0]["CL_TYPE"]),
                    Terms                 = CommonUtility.GetShortValue(dt.Rows[0]["TERMS"]),
                    Credit_Limit          = CommonUtility.GetDoubleValue(dt.Rows[0]["CL_LIMIT"]),
                    Current_Balance       = CommonUtility.GetDoubleValue(dt.Rows[0]["CL_CURBAL"]),
                    CL_Status             = CommonUtility.GetStringValue(dt.Rows[0]["CL_STATUS"]),
                    UsePO                 = CommonUtility.GetBooleanValue(dt.Rows[0]["UsePO"]),
                    GroupID               = CommonUtility.GetStringValue(dt.Rows[0]["GroupID"]),
                    UseFuelRebate         = CommonUtility.GetBooleanValue(dt.Rows[0]["UseFuelRebate"]),
                    UseFuelRebateDiscount = CommonUtility.GetBooleanValue(dt.Rows[0]["UseFuelRebateDiscount"]),
                    CL_Note               = CommonUtility.GetStringValue(dt.Rows[0]["CL_Note"]),
                    TaxExempt             = CommonUtility.GetBooleanValue(dt.Rows[0]["TaxExempt"]),
                    PlateNumber           = CommonUtility.GetStringValue(dt.Rows[0]["PlateNumber"]),
                    TECardNumber          = CommonUtility.GetStringValue(dt.Rows[0]["TECardNumber"]),
                    Discount_Code         = CommonUtility.GetByteValue(dt.Rows[0]["CUST_DISC"]),
                    Price_Code            = CommonUtility.GetByteValue(dt.Rows[0]["Price_Code"]),
                    MultiUse_PO           = CommonUtility.GetBooleanValue(dt.Rows[0]["UsePO"]) && CommonUtility.GetBooleanValue(dt.Rows[0]["MultiUse_PO"]),
                };

                if (!string.IsNullOrEmpty(customer.GroupID))
                {
                    var clientDt = GetRecords("select * from ClientGroup  where GroupID=\'" + customer.GroupID + "\'", DataSource.CSCMaster);
                    if (clientDt == null || clientDt.Rows.Count == 0)
                    {
                        customer.GroupID = "";
                    }
                    else
                    {
                        customer.GroupName    = CommonUtility.GetStringValue(clientDt.Rows[0]["GroupName"]);
                        customer.DiscountType = CommonUtility.GetStringValue(clientDt.Rows[0]["DiscountType"]);
                        customer.DiscountRate = CommonUtility.GetFloatValue(clientDt.Rows[0]["DiscountRate"]);
                        customer.Footer       = CommonUtility.GetStringValue(clientDt.Rows[0]["LoyaltyFooter"]);
                        customer.DiscountName = CommonUtility.GetStringValue(clientDt.Rows[0]["DiscountName"]);
                    }
                }
                // var clientCard = GetClientCardForCustomer()
            }
            _performancelog.Debug($"End,CustomerService,GetClientByClientCode,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");
            return(customer);
        }
        /// <summary>
        /// Method to set register info
        /// </summary>
        /// <param name="registerNumber">Register number</param>
        /// <param name="device">Device</param>
        /// <returns>Register</returns>
        public Register SetRegisterInfo(short registerNumber, Device device)
        {
            var rs = GetRecords("Select *  FROM Register  WHERE Register.Reg_No = " + Convert.ToString(registerNumber), DataSource.CSCAdmin);

            if (rs.Rows.Count == 0)
            {
                return(null);
            }
            var register = new Register {
                Register_Num = registerNumber
            };

            foreach (DataRow row in rs.Rows)
            {
                if (CommonUtility.GetByteValue(row["DeviceID"]) == device.ScannerID)
                {
                    register.Scanner         = CommonUtility.GetBooleanValue(row["Active"]);
                    register.Opos_Scanner    = CommonUtility.GetBooleanValue(row["UseOPOS"]);
                    register.Scanner_Name    = CommonUtility.GetStringValue(row["DeviceName"]);
                    register.Scanner_Port    = CommonUtility.GetStringValue(row["PortNum"]);
                    register.Scanner_Setting = CommonUtility.GetStringValue(row["PortSetting"]);
                }
                else if (CommonUtility.GetByteValue(row["DeviceID"]) == device.CashDrawerID)
                {
                    register.Cash_Drawer           = CommonUtility.GetBooleanValue(row["Active"]);
                    register.Opos_Cash_Drawer      = CommonUtility.GetBooleanValue(row["UseOPOS"]);
                    register.Cash_Drawer_Name      = CommonUtility.GetStringValue(row["DeviceName"]);
                    register.Cash_Drawer_Open_Code = CommonUtility.GetShortValue(row["PortNum"]);
                }
                else if (CommonUtility.GetByteValue(row["DeviceID"]) == device.CustomerDisplayID)
                {
                    register.Customer_Display      = CommonUtility.GetBooleanValue(row["Active"]);
                    register.Opos_Customer_Display = CommonUtility.GetBooleanValue(row["UseOPOS"]);
                    register.Customer_Display_Name = CommonUtility.GetStringValue(row["DeviceName"]);
                    if (CommonUtility.GetStringValue(row["DriverName"]).Length == 0)
                    {
                        register.Customer_Display_Code = 0;
                    }
                    else
                    {
                        register.Customer_Display_Code = (byte)(Conversion.Val(Strings.Left(CommonUtility.GetStringValue(row["DriverName"]), 1)));
                    }
                    register.Customer_Display_Port = CommonUtility.GetByteValue(row["PortNum"]);
                    if (CommonUtility.GetBooleanValue(row["UseOPOS"]))
                    {
                        register.Customer_Display_Len = 20;
                    }
                }
                else if (CommonUtility.GetByteValue(row["DeviceID"]) == device.ReceiptPrinterID)
                {
                    register.Receipt_Printer      = CommonUtility.GetBooleanValue(row["Active"]);
                    register.Opos_Receipt_Printer = CommonUtility.GetBooleanValue(row["UseOPOS"]);
                    register.ReceiptPrinterName   = CommonUtility.GetStringValue(row["DeviceName"]);
                    register.ReceiptDriver        = CommonUtility.GetStringValue(row["DriverName"]);
                }
                else if (CommonUtility.GetByteValue(row["DeviceID"]) == device.ReportPrinterID)
                {
                    register.Report_Printer           = CommonUtility.GetBooleanValue(row["Active"]);
                    register.Opos_Report_Printer      = CommonUtility.GetBooleanValue(row["UseOPOS"]);
                    register.Report_Printer_Name      = CommonUtility.GetStringValue(row["DeviceName"]);
                    register.Report_Printer_Driver    = CommonUtility.GetStringValue(row["DriverName"]);
                    register.Report_Printer_font      = CommonUtility.GetStringValue(row["FontName"]);
                    register.Report_Printer_font_size = CommonUtility.GetIntergerValue(row["FontSize"]);
                }
                else if (CommonUtility.GetByteValue(row["DeviceID"]) == device.MSRID)
                {
                    register.MSR      = CommonUtility.GetBooleanValue(row["Active"]);
                    register.Opos_MSR = CommonUtility.GetBooleanValue(row["UseOPOS"]);
                    register.MSR_Name = CommonUtility.GetStringValue(row["DeviceName"]);
                }
                else if (CommonUtility.GetByteValue(row["DeviceID"]) == device.ScaleID)
                {
                    register.UseScale   = CommonUtility.GetBooleanValue(row["Active"]);
                    register.OPOS_Scale = CommonUtility.GetBooleanValue(row["UseOPOS"]);
                    register.SCALE_Name = CommonUtility.GetStringValue(row["DeviceName"]);
                }
            }
            return(register);
        }
        /// <summary>
        /// Method to get card holder
        /// </summary>
        /// <param name="isBarCode">Is bar code or not</param>
        /// <param name="strNumber">Number</param>
        /// <param name="matchCount">Match count</param>
        /// <param name="ageRestrict">Age restriction</param>
        /// <returns>Tax exempt card holder</returns>
        public teCardholder GetCardHolder(bool isBarCode, string strNumber, out short matchCount, int ageRestrict)
        {
            var dateStart = DateTime.Now;

            _performancelog.Debug($"Start,CustomerService,GetCardHolder,{string.Empty},{DateTime.Now:hh.mm.ss.ffffff}");

            string       strSql;
            teCardholder cardHolder = new teCardholder {
                IsValidCardHolder = false
            };

            if (isBarCode)
            {
                strSql = "Select * from TaxExemptCardRegistry where BarCode=\'" + strNumber + "\'  OR AltBarCode=\'" + strNumber + "\'";
            }
            else
            {
                strSql = "Select * from TaxExemptCardRegistry where CardNumber=\'" + strNumber + "\'  OR AltCardNumber=\'" + strNumber + "\'";
            }
            var dt = GetRecords(strSql, DataSource.CSCMaster);

            matchCount = 0;
            if (dt != null && dt.Rows.Count > 0)
            {
                matchCount = Convert.ToInt16(dt.Rows.Count);
                if (matchCount > 1)
                {
                    cardHolder.IsValidCardHolder = false;
                    return(cardHolder);
                }

                DateTime mBirthDate;
                if (CommonUtility.GetBooleanValue(dt.Rows[0]["Birthdate"]))
                {
                    mBirthDate = DateAndTime.DateAdd(DateInterval.Year, Convert.ToDouble(-1 * (ageRestrict + 1)), DateAndTime.Today);
                }
                else
                {
                    mBirthDate = CommonUtility.GetDateTimeValue(dt.Rows[0]["Birthdate"]);
                }
                cardHolder.Birthdate = mBirthDate;


                cardHolder.Name              = CommonUtility.GetStringValue(dt.Rows[0]["Name"]);
                cardHolder.CardholderID      = CommonUtility.GetStringValue(dt.Rows[0]["CardholderID"]);
                cardHolder.IsValidCardHolder = false;
                if (isBarCode)
                {
                    if (CommonUtility.GetStringValue(dt.Rows[0]["Barcode"]) == strNumber)
                    {
                        cardHolder.ValidateMode = 1;
                        cardHolder.CardNumber   = CommonUtility.GetStringValue(dt.Rows[0]["CardNumber"]);
                    }
                    else
                    {
                        cardHolder.ValidateMode = 2;
                        cardHolder.CardNumber   = CommonUtility.GetStringValue(dt.Rows[0]["AltCardNumber"]);
                    }
                    cardHolder.Barcode = strNumber;
                }
                else
                {
                    if (CommonUtility.GetStringValue(dt.Rows[0]["CardNumber"]) == strNumber)
                    {
                        cardHolder.ValidateMode = 3;
                        cardHolder.Barcode      = CommonUtility.GetStringValue(dt.Rows[0]["Barcode"]);
                    }
                    else
                    {
                        cardHolder.ValidateMode = 4;
                        cardHolder.Barcode      = CommonUtility.GetStringValue(dt.Rows[0]["AltBarCode"]);
                    }
                    cardHolder.CardNumber = strNumber;
                }
                cardHolder.GasQuota          = CommonUtility.GetFloatValue(dt.Rows[0]["GasQuota"]);
                cardHolder.PropaneQuota      = CommonUtility.GetFloatValue(dt.Rows[0]["PropaneQuota"]);
                cardHolder.TobaccoQuota      = CommonUtility.GetFloatValue(dt.Rows[0]["TobaccoQuota"]);
                cardHolder.IsValidCardHolder = true;
            }
            _performancelog.Debug($"End,CustomerService,GetCardHolder,{DateTime.Now.Subtract(dateStart).TotalMilliseconds},{DateTime.Now:hh.mm.ss.ffffff}");

            return(cardHolder);
        }
示例#23
0
        /// <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);
        }