Beispiel #1
0
        private void ChangeQuantity()
        {
            int iRow = dgItems.CurrentRowIndex;

            if (iRow >= 0)
            {
                if (dgItems[iRow, 8].ToString() != "VOID")
                {
                    Data.SalesTransactionItemDetails Details = getCurrentRowItemDetails();

                    decimal           decOldQuantity = Details.Quantity;
                    decimal           decScannedQty  = Details.ScannedQty;
                    ChangeQuantityWnd QtyWnd         = new ChangeQuantityWnd();
                    QtyWnd.Details = Details;

                    QtyWnd.ShowDialog(this);
                    DialogResult result = QtyWnd.Result;
                    Details = QtyWnd.Details;

                    QtyWnd.Close();
                    QtyWnd.Dispose();

                    if (result == DialogResult.OK && decScannedQty != Details.Quantity)
                    {
                        // ChangeQuantityWnd referenced is Quantity column thus need to overwrite with the olf value.
                        Details.ScannedQty = Details.Quantity;
                        Details.Quantity   = decOldQuantity;
                        ApplyChangeQuantityPriceAmountDetails(iRow, Details);
                    }
                }
            }
        }
Beispiel #2
0
        private void ApplyChangeQuantityPriceAmountDetails(int iRow, Data.SalesTransactionItemDetails Details)
        {
            System.Data.DataRow dr = (System.Data.DataRow)ItemDataTable.Rows[iRow];

            dr = setCurrentRowItemDetails(dr, Details);

            getTotal();
        }
Beispiel #3
0
        private void MatchItem()
        {
            Data.SalesTransactionItemDetails _SalesTransactionItemDetails = new Data.SalesTransactionItemDetails();
            int  oldindex = dgItems.CurrentRowIndex;
            bool boFound  = false;

            for (int iRow = 0; iRow < ItemDataTable.Rows.Count; iRow++)
            {
                dgItems.CurrentRowIndex      = iRow;
                _SalesTransactionItemDetails = getCurrentRowItemDetails();
                TransactionItemStatus _TransactionItemStatus = (TransactionItemStatus)Enum.Parse(typeof(TransactionItemStatus), dgItems[iRow, 21].ToString());
                if ((_SalesTransactionItemDetails.BarCode == txtScan.Text.Trim() || _SalesTransactionItemDetails.ProductCode.Contains(txtScan.Text.Trim())) && _TransactionItemStatus == TransactionItemStatus.Valid)
                {
                    _SalesTransactionItemDetails.ScannedQty += 1;
                    ApplyChangeQuantityPriceAmountDetails(iRow, _SalesTransactionItemDetails);

                    //decimal decScannedQty = Convert.ToDecimal(dgItems[iRow, 39].ToString());
                    //decimal decScannedAmt = Convert.ToDecimal(dgItems[iRow, 40].ToString());

                    try { dgItems.UnSelect(0); }
                    catch { }
                    dgItems.UnSelect(oldindex);
                    dgItems.Select(dgItems.CurrentRowIndex);
                    boFound = true;
                    break;

                    //if (decScannedQty == 0) { ApplyChangeQuantityPriceAmountDetails(iRow, Details); break; }
                }
            }
            txtScan.Text = string.Empty;
            if (!boFound)
            {
                dgItems.CurrentRowIndex = oldindex;
            }
            getTotal();
        }
Beispiel #4
0
        private Data.SalesTransactionItemDetails getCurrentRowItemDetails()
        {
            try
            {
                Int32 iRow = dgItems.CurrentRowIndex;

                Data.SalesTransactionItemDetails Details = new Data.SalesTransactionItemDetails();

                Details.TransactionID      = mclsSalesTransactionDetails.TransactionID;
                Details.TransactionDate    = mclsSalesTransactionDetails.TransactionDate;
                Details.TransactionItemsID = Convert.ToInt64(dgItems[iRow, 0].ToString());
                Details.ItemNo             = dgItems[iRow, 1].ToString();
                Details.ProductID          = Convert.ToInt32(dgItems[iRow, 2].ToString());
                Details.ProductCode        = dgItems[iRow, 3].ToString();
                Details.BarCode            = dgItems[iRow, 4].ToString();
                Details.Description        = dgItems[iRow, 5].ToString();
                Details.VariationsMatrixID = Convert.ToInt64(dgItems[iRow, 6].ToString());
                Details.MatrixDescription  = dgItems[iRow, 7].ToString();
                if (Details.Description.IndexOf(Environment.NewLine) > -1)
                {
                    Details.Description = Details.Description.Remove(Details.Description.IndexOf(Environment.NewLine), Details.Description.Length - Details.Description.IndexOf(Environment.NewLine));
                }
                if (dgItems[iRow, 8].ToString().IndexOf("RETURN") != -1)
                {
                    Details.Quantity   = Convert.ToDecimal(dgItems[iRow, 8].ToString().Replace(" - RETURN", "").Trim());
                    Details.ScannedQty = Convert.ToDecimal(dgItems[iRow, 39].ToString().Replace(" - RETURN", "").Trim());
                }
                else if (dgItems[iRow, 8].ToString().IndexOf("VOID") != -1)
                {
                    Details.Quantity   = 0;
                    Details.ScannedQty = 0;
                }
                else
                {
                    Details.Quantity   = Convert.ToDecimal(dgItems[iRow, 8].ToString());
                    Details.ScannedQty = Convert.ToDecimal(dgItems[iRow, 39].ToString());
                }
                Details.ProductUnitID    = Convert.ToInt32(dgItems[iRow, 9].ToString());
                Details.ProductUnitCode  = dgItems[iRow, 10].ToString();
                Details.Price            = Convert.ToDecimal(dgItems[iRow, 11].ToString());
                Details.Discount         = Convert.ToDecimal(dgItems[iRow, 12].ToString());
                Details.ItemDiscount     = Convert.ToDecimal(dgItems[iRow, 13].ToString());
                Details.ItemDiscountType = (DiscountTypes)Enum.Parse(typeof(DiscountTypes), dgItems[iRow, 14].ToString());
                Details.Amount           = Details.Quantity * Details.Price;   //Convert.ToDecimal(dgItems[iRow, 13].ToString()) ;
                Details.ScannedAmt       = Details.ScannedQty * Details.Price; //Convert.ToDecimal(dgItems[iRow, 40].ToString());
                Details.VAT                       = Convert.ToDecimal(dgItems[iRow, 16].ToString());
                Details.EVAT                      = Convert.ToDecimal(dgItems[iRow, 17].ToString());
                Details.LocalTax                  = Convert.ToDecimal(dgItems[iRow, 18].ToString());
                Details.ProductGroup              = dgItems[iRow, 19].ToString();
                Details.ProductSubGroup           = dgItems[iRow, 20].ToString();
                Details.TransactionItemStatus     = (TransactionItemStatus)Enum.Parse(typeof(TransactionItemStatus), dgItems[iRow, 21].ToString());
                Details.DiscountCode              = dgItems[iRow, 22].ToString();
                Details.DiscountRemarks           = dgItems[iRow, 23].ToString();
                Details.ProductPackageID          = Convert.ToInt64(dgItems[iRow, 24].ToString());
                Details.MatrixPackageID           = Convert.ToInt64(dgItems[iRow, 25].ToString());
                Details.PackageQuantity           = Convert.ToDecimal(dgItems[iRow, 26].ToString());
                Details.PromoQuantity             = Convert.ToDecimal(dgItems[iRow, 27].ToString());
                Details.PromoValue                = Convert.ToDecimal(dgItems[iRow, 28].ToString());
                Details.PromoInPercent            = Convert.ToBoolean(dgItems[iRow, 29].ToString());
                Details.PromoType                 = (PromoTypes)Enum.Parse(typeof(PromoTypes), dgItems[iRow, 30].ToString());
                Details.PromoApplied              = Convert.ToDecimal(dgItems[iRow, 31].ToString());
                Details.PurchasePrice             = Convert.ToDecimal(dgItems[iRow, 32].ToString());
                Details.PurchaseAmount            = Convert.ToDecimal(dgItems[iRow, 33].ToString());
                Details.IncludeInSubtotalDiscount = Convert.ToBoolean(dgItems[iRow, 34].ToString());
                Details.OrderSlipPrinter          = (OrderSlipPrinter)Enum.Parse(typeof(OrderSlipPrinter), dgItems[iRow, 35].ToString());
                Details.OrderSlipPrinted          = Convert.ToBoolean(dgItems[iRow, 36].ToString());
                Details.PercentageCommision       = Convert.ToDecimal(dgItems[iRow, 37].ToString());
                Details.Commision                 = Convert.ToDecimal(dgItems[iRow, 38].ToString());


                return(Details);
            }
            catch (Exception ex)
            {
                Event clsEvent = new Event();
                clsEvent.AddEventLn("ERROR! Getting current row item details. TRACE: " + ex.Message);
                throw ex;
            }
        }
Beispiel #5
0
        /// <summary>
        ///     Set the details contained in dr parameter to a selected row in the grdList.
        /// </summary>
        /// <param name="dr"></param>
        /// <param name="Details"></param>
        /// <returns></returns>
        private System.Data.DataRow setCurrentRowItemDetails(System.Data.DataRow dr, Data.SalesTransactionItemDetails Details)
        {
            try
            {
                dr["TransactionItemsID"] = Details.TransactionItemsID;                                                                                                    //0
                dr["ItemNo"]             = Details.ItemNo;                                                                                                                //1
                dr["ProductID"]          = Details.ProductID;                                                                                                             //2
                dr["ProductCode"]        = Details.ProductCode;                                                                                                           //3
                dr["BarCode"]            = Details.BarCode;                                                                                                               //4
                dr["Description"]        = Details.Description;                                                                                                           //5
                dr["VariationsMatrixID"] = Details.VariationsMatrixID;                                                                                                    //6
                dr["MatrixDescription"]  = Details.MatrixDescription;                                                                                                     //7
                dr["Quantity"]           = Details.Quantity;                                                                                                              //8
                dr["ProductUnitID"]      = Details.ProductUnitID;                                                                                                         //9
                dr["ProductUnitCode"]    = Details.ProductUnitCode;                                                                                                       //10
                dr["Price"]            = Details.Price.ToString("###,##0.#0");                                                                                            //11
                dr["Discount"]         = Details.Discount.ToString("###,##0.#0");                                                                                         //12
                dr["ItemDiscount"]     = Details.ItemDiscount.ToString("###,##0.#0");                                                                                     //13
                dr["ItemDiscountType"] = Details.ItemDiscountType.ToString("d");                                                                                          //14
                dr["Amount"]           = Details.Amount.ToString("###,##0.#0");                                                                                           //15
                dr["VAT"]                       = Details.VAT.ToString("###,##0.#0");                                                                                     //16
                dr["EVAT"]                      = Details.EVAT.ToString("###,##0.#0");                                                                                    //17
                dr["LocalTax"]                  = Details.LocalTax.ToString("###,##0.#0");                                                                                //18
                dr["ProductGroup"]              = Details.ProductGroup;                                                                                                   //19
                dr["ProductSubGroup"]           = Details.ProductSubGroup;                                                                                                //20
                dr["TransactionItemStat"]       = Details.TransactionItemStatus.ToString("d");                                                                            //21
                dr["DiscountCode"]              = Details.DiscountCode;                                                                                                   //22
                dr["DiscountRemarks"]           = Details.DiscountRemarks;                                                                                                //23
                dr["ProductPackageID"]          = Details.ProductPackageID;                                                                                               //24
                dr["MatrixPackageID"]           = Details.MatrixPackageID;                                                                                                //25
                dr["PackageQuantity"]           = Details.PackageQuantity;                                                                                                //26
                dr["PromoQuantity"]             = Details.PromoQuantity;                                                                                                  //27
                dr["PromoValue"]                = Details.PromoValue;                                                                                                     //28
                dr["PromoInPercent"]            = Details.PromoInPercent;                                                                                                 //29
                dr["PromoType"]                 = Details.PromoType;                                                                                                      //30
                dr["PromoApplied"]              = Details.PromoApplied;                                                                                                   //31
                dr["PurchasePrice"]             = Details.PurchasePrice;                                                                                                  //32
                dr["PurchaseAmount"]            = Details.PurchaseAmount;                                                                                                 //33
                dr["IncludeInSubtotalDiscount"] = Details.IncludeInSubtotalDiscount;                                                                                      //34
                dr["OrderSlipPrinter"]          = Details.OrderSlipPrinter;                                                                                               //35
                dr["OrderSlipPrinted"]          = Details.OrderSlipPrinted.ToString();                                                                                    //36
                dr["PercentageCommision"]       = Details.PercentageCommision;                                                                                            //37
                dr["Commision"]                 = Details.Amount * (Details.PercentageCommision / 100);                                                                   //38
                dr["ScannedQty"]                = Details.ScannedQty;                                                                                                     //39
                dr["ScannedAmt"]                = Convert.ToDecimal((Details.Price * Details.ScannedQty) - Details.Discount - Details.PromoApplied).ToString("#,##0.#0"); //40

                if (Details.TransactionItemStatus == TransactionItemStatus.Void)
                {
                    dr["Quantity"] = "VOID";
                    dr["Price"]    = "0.00";
                    dr["Discount"] = "0.00";
                    dr["Amount"]   = "0.00";
                    dr["VAT"]      = "0.00";
                    dr["EVAT"]     = "0.00";
                    dr["LocalTax"] = "0.00";

                    dr["PromoApplied"]        = "0.00";
                    dr["PercentageCommision"] = "0.00";
                    dr["Commision"]           = "0.00";
                }
                else if (Details.TransactionItemStatus == TransactionItemStatus.Return)
                {
                    dr["Quantity"]   = Details.Quantity + " - RETURN";
                    dr["ScannedQty"] = Details.ScannedQty + " - RETURN"; //39
                    if (Details.Amount < 0)
                    {
                        dr["Amount"]              = Convert.ToDecimal(-Details.Amount).ToString("###,##0.#0");
                        dr["ScannedAmt"]          = Convert.ToDecimal(-((Details.Price * Details.ScannedQty) - Details.Discount - Details.PromoApplied)).ToString("#,##0.#0"); //40
                        dr["PercentageCommision"] = -Details.PercentageCommision;
                        dr["Commision"]           = Convert.ToDecimal(Convert.ToDecimal(dr["Commision"]) * -1).ToString("###,##0.#0");
                    }
                }

                return(dr);
            }
            catch (Exception ex)
            {
                clsEvent.AddEventLn("ERROR! Setting current row item details. TRACE: " + ex.Message);
                return(dr);
            }
        }
Beispiel #6
0
		private void ReadBarCode()
		{
			DialogResult loginresult = GetWriteAccessAndLogin(mclsSalesTransactionDetails.CashierID, AccessTypes.CreateTransaction);

			if (loginresult == DialogResult.OK)
			{
				if (!string.IsNullOrEmpty(txtBarCode.Text.Trim()))
				{
					string stBarcode = txtBarCode.Text.Trim();
					decimal decQuantity = 1;

                    // 21Jul2013 : Check if parking ticket and has already an item.
                    if (mclsTerminalDetails.IsParkingTerminal && ItemDataTable.Rows.Count > 1)
                    {
                        txtBarCode.Text = "";
                        MessageBox.Show("Sorry you can only park 1 vehicle per transaction. ", "RetailPlus", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        return;
                    }

                    // 18Feb2016 : Do not allow consignment if items > 1 and AllowMoreThan1ItemIfConsignment is FALSE
                    if (mclsSalesTransactionDetails.isConsignment && !mclsSysConfigDetails.AllowMoreThan1ItemIfConsignment && ItemDataTable.Rows.Count >= 1)
                    {
                        txtBarCode.Text = "";
                        MessageBox.Show("Sorry you cannot tag this transaction is CONSIGNMENT. You are only allowed to consign 1 item, per transaction.", "RetailPlus", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        return;
                    }

					if (stBarcode.EndsWith("*"))
					{
						MessageBox.Show("Sorry please scan the item after the quantity before you press the enter key.", "RetailPlus", MessageBoxButtons.OK, MessageBoxIcon.Warning);
						return;
					}
					if (stBarcode.IndexOf("*") > -1)
					{
						try
						{
							decQuantity = Convert.ToDecimal(stBarcode.Substring(0, stBarcode.IndexOf("*")).Trim());
							stBarcode = stBarcode.Substring(stBarcode.IndexOf("*") + 1, stBarcode.Length - (stBarcode.IndexOf("*") + 1));
						}
						catch
						{
							MessageBox.Show("Sorry the quantity you entered is not valid. Please enter a valid quantity to purchase.", "RetailPlus", MessageBoxButtons.OK, MessageBoxIcon.Warning);
							return;
						}
					}
                    Data.ProductPackage clsProductPackage = new Data.ProductPackage(mConnection, mTransaction);
                    mConnection = clsProductPackage.Connection; mTransaction = clsProductPackage.Transaction;

                    Data.Products clsProduct = new Data.Products(mConnection, mTransaction);
                    mConnection = clsProduct.Connection; mTransaction = clsProduct.Transaction;

                    Data.ProductPackageDetails clsProductPackageDetails = new Data.ProductPackageDetails();
                    Data.ProductDetails clsProductDetails = new Data.ProductDetails();

                    if (ProductModel.PackageID != 0) //PackageID is not zero if selection is used.
                    {
                        clsProductPackageDetails = clsProductPackage.Details(ProductModel.PackageID);
                        clsProductDetails = clsProduct.Details(clsProductPackageDetails.ProductID, clsProductPackageDetails.MatrixID, mclsTerminalDetails.BranchID);
                    }
                    else //PackageID is zero if selection is not used.
                    {
                        // check if the product exist and with quantity
                        clsProductDetails = clsProduct.Details(mclsTerminalDetails.BranchID, stBarcode, mclsTerminalDetails.ShowItemMoreThanZeroQty, decQuantity);

                        // check if the product exist and zero quantity
                        if (clsProductDetails.ProductID == 0) clsProductDetails = clsProduct.Details(stBarcode, mclsTerminalDetails.BranchID);

                        // check if the product is weighted
                        if (clsProductDetails.ProductID == 0)
                        {
                            if (stBarcode.Length == 12) stBarcode = "0" + stBarcode;
                            if (stBarcode.Length > Data.Products.DEFAULT_WEIGHTED_BARCODE_CHARACTER_COUNT + 1)
                            {
                                clsProductDetails = clsProduct.Details(mclsTerminalDetails.BranchID, stBarcode.Remove(Data.Products.DEFAULT_WEIGHTED_BARCODE_CHARACTER_COUNT));

                                if (clsProductDetails.ProductID != 0)
                                {
                                    decQuantity = (decimal.Parse(stBarcode.Remove(stBarcode.Length - 1).Remove(1, Data.Products.DEFAULT_WEIGHTED_BARCODE_CHARACTER_COUNT)) / 100) / clsProductDetails.Price;
                                }
                            }
                        }
                        // 16Apr2015 : Add a new logic for the new weighing machine
                        // if (stBarcode.Length == 11) stBarcode = stBarcode.Remove(stBarcode.Length - 1);

                        // get the package details
                        if (clsProductDetails.ProductID != 0) clsProductPackageDetails = clsProductPackage.Details(clsProductDetails.PackageID);
                    }

					txtBarCode.Text = "";
                    ProductModel.Clear();
					
                    if (clsProductDetails.ProductID != 0)
                    {
                        // 06Mar2015 : Override the price base on the Price Level
                        if (mclsSysConfigDetails.EnablePriceLevel)
                        {
                            switch (mclsContactDetails.PriceLevel)
                            {
                                case PriceLevel.SRP: clsProductDetails.Price = clsProductPackageDetails.Price; break;
                                case PriceLevel.One: clsProductDetails.Price = clsProductPackageDetails.Price1 == 0 ? clsProductPackageDetails.Price : clsProductPackageDetails.Price1; break;
                                case PriceLevel.Two: clsProductDetails.Price = clsProductPackageDetails.Price2 == 0 ? clsProductPackageDetails.Price : clsProductPackageDetails.Price2; break;
                                case PriceLevel.Three: clsProductDetails.Price = clsProductPackageDetails.Price3 == 0 ? clsProductPackageDetails.Price : clsProductPackageDetails.Price3; break;
                                case PriceLevel.Four: clsProductDetails.Price = clsProductPackageDetails.Price4 == 0 ? clsProductPackageDetails.Price : clsProductPackageDetails.Price4; break;
                                case PriceLevel.Five: clsProductDetails.Price = clsProductPackageDetails.Price5 == 0 ? clsProductPackageDetails.Price : clsProductPackageDetails.Price5; break;
                                case PriceLevel.WSPrice: clsProductDetails.Price = clsProductPackageDetails.WSPrice == 0 ? clsProductPackageDetails.Price : clsProductPackageDetails.WSPrice; break;
                                default: clsProductDetails.Price = clsProductPackageDetails.Price; break;
                            }
                        }

                        // 21Jul2013 Include getting of rates for parking
                        if (mclsTerminalDetails.IsParkingTerminal)
                        {
                            Data.ParkingRates clsParkingRate = new Data.ParkingRates(mConnection, mTransaction);
                            mConnection = clsParkingRate.Connection; mTransaction = clsParkingRate.Transaction;

                            Data.ParkingRateDetails clsParkingRateDetails = clsParkingRate.Details(clsProductDetails.ProductID, DateTime.Now.ToString("dddd"));
                            if (clsParkingRateDetails.ParkingRateID != 0)
                            {
                                clsProductDetails.Price = clsParkingRateDetails.MinimumStayPrice;
                            }
                        }

                        if (lblCustomer.Text.Trim().ToUpper() != Constants.C_RETAILPLUS_ORDER_SLIP_CUSTOMER &&
                            !mboIsRefund && clsProductDetails.Quantity - clsProductDetails.ReservedQuantity < decQuantity && 
                            mclsTerminalDetails.ShowItemMoreThanZeroQty &&
                            clsProductDetails.BarCode != Data.Products.DEFAULT_CREDIT_PAYMENT_BARCODE &&
                            clsProductDetails.BarCode != Data.Products.DEFAULT_ADVANTAGE_CARD_MEMBERSHIP_FEE_BARCODE &&
                            clsProductDetails.BarCode != Data.Products.DEFAULT_ADVANTAGE_CARD_RENEWAL_FEE_BARCODE &&
                            clsProductDetails.BarCode != Data.Products.DEFAULT_ADVANTAGE_CARD_REPLACEMENT_FEE_BARCODE &&
                            clsProductDetails.BarCode != Data.Products.DEFAULT_CREDIT_CARD_MEMBERSHIP_FEE_BARCODE &&
                            clsProductDetails.BarCode != Data.Products.DEFAULT_CREDIT_CARD_RENEWAL_FEE_BARCODE &&
                            clsProductDetails.BarCode != Data.Products.DEFAULT_SUPER_CARD_MEMBERSHIP_FEE_BARCODE &&
                            clsProductDetails.BarCode != Data.Products.DEFAULT_SUPER_CARD_RENEWAL_FEE_BARCODE &&
                            clsProductDetails.BarCode != Data.Products.DEFAULT_SUPER_CARD_REPLACEMENT_FEE_BARCODE)
                        {
                            if (clsProductDetails.Quantity >= decQuantity)
                            {
                                clsProductPackage.CommitAndDispose();
                                MessageBox.Show("Sorry the quantity you entered is already reserved. Current Stock: " + clsProductDetails.Quantity.ToString("#,##0.#0") + " Reserved Stock: " + clsProductDetails.ReservedQuantity.ToString("#,##0.#0"), "RetailPlus", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                                return;
                            }
                            else
                            {
                                clsProductPackage.CommitAndDispose();
                                MessageBox.Show("Sorry the quantity you entered is greater than the current stock. " + Environment.NewLine + "Current Stock: " + clsProductDetails.Quantity.ToString("#,##0.#0"), "RetailPlus", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                                return;
                            }
                        }

                        if (clsProductDetails.IsLock)
                        {
                            clsProductPackage.CommitAndDispose();
                            MessageBox.Show("Sorry this product is currently LOCKED for inventory. Please advise the inventory officer if you really want to sell this product.", "RetailPlus", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                            return;
                        }

                        Data.SalesTransactionItemDetails clsItemDetails = new Data.SalesTransactionItemDetails();

                        clsItemDetails.ProductID = clsProductDetails.ProductID;
                        clsItemDetails.ProductCode = clsProductDetails.ProductCode;
                        clsItemDetails.BarCode = clsProductDetails.BarCode;
                        clsItemDetails.Description = clsProductDetails.ProductDesc;
                        clsItemDetails.ProductGroupID = clsProductDetails.ProductGroupID;
                        clsItemDetails.ProductSubGroupID = clsProductDetails.ProductSubGroupID;
                        clsItemDetails.ProductGroup = clsProductDetails.ProductGroupName;
                        clsItemDetails.ProductSubGroup = clsProductDetails.ProductSubGroupName;
                        clsItemDetails.TransactionItemStatus = TransactionItemStatus.Valid;
                        clsItemDetails.ProductUnitID = clsProductDetails.BaseUnitID;
                        clsItemDetails.ProductUnitCode = clsProductDetails.BaseUnitCode;
                        clsItemDetails.Quantity = decQuantity;
                        clsItemDetails.Price = clsProductDetails.Price;
                        clsItemDetails.Discount = 0;
                        clsItemDetails.ItemDiscount = 0;
                        clsItemDetails.ItemDiscountType = DiscountTypes.NotApplicable;
                        clsItemDetails.Amount = (clsItemDetails.Quantity * clsItemDetails.Price) - (clsItemDetails.Quantity * clsItemDetails.Discount);
                        clsItemDetails.VAT = clsProductDetails.VAT;
                        clsItemDetails.EVAT = clsProductDetails.EVAT;
                        clsItemDetails.LocalTax = clsProductDetails.LocalTax;
                        clsItemDetails.TransactionItemStatus = TransactionItemStatus.Valid;
                        clsItemDetails.PurchasePrice = clsProductDetails.PurchasePrice;
                        clsItemDetails.PurchaseAmount = clsItemDetails.Quantity * clsItemDetails.PurchasePrice;
                        clsItemDetails.IncludeInSubtotalDiscount = clsProductDetails.IncludeInSubtotalDiscount;
                        clsItemDetails.IsCreditChargeExcluded = clsProductDetails.IsCreditChargeExcluded;
                        clsItemDetails.OrderSlipPrinter1 = clsProductDetails.OrderSlipPrinter1;
                        clsItemDetails.OrderSlipPrinter2 = clsProductDetails.OrderSlipPrinter2;
                        clsItemDetails.OrderSlipPrinter3 = clsProductDetails.OrderSlipPrinter3;
                        clsItemDetails.OrderSlipPrinter4 = clsProductDetails.OrderSlipPrinter4;
                        clsItemDetails.OrderSlipPrinter5 = clsProductDetails.OrderSlipPrinter5;
                        clsItemDetails.OrderSlipPrinted = false;
                        clsItemDetails.PercentageCommision = clsProductDetails.PercentageCommision;
                        clsItemDetails.Commision = clsItemDetails.Amount * (clsItemDetails.PercentageCommision / 100);
                        clsItemDetails.RewardPoints = clsProductDetails.RewardPoints;
                        clsItemDetails.ItemRemarks = "";
                        clsItemDetails.ReturnTransactionItemsID = 0;
                        clsItemDetails.SupplierID = clsProductDetails.SupplierID;
                        clsItemDetails.SupplierCode = clsProductDetails.SupplierCode;
                        clsItemDetails.SupplierName = clsProductDetails.SupplierName;

                        clsItemDetails.ProductPackageID = clsProductPackageDetails.PackageID;
                        clsItemDetails.ProductUnitID = clsProductPackageDetails.UnitID;
                        clsItemDetails.ProductUnitCode = clsProductPackageDetails.UnitCode;

                        if (!mclsTerminalDetails.IsParkingTerminal)
                        {
                            // 06Mar2015 : Override the price base on the Price Level
                            if (mclsSysConfigDetails.EnablePriceLevel)
                            {
                                switch (mclsContactDetails.PriceLevel)
                                {
                                    case PriceLevel.SRP: clsItemDetails.Price = clsProductPackageDetails.Price; break;
                                    case PriceLevel.One: clsItemDetails.Price = clsProductPackageDetails.Price1 == 0 ? clsProductPackageDetails.Price : clsProductPackageDetails.Price1; break;
                                    case PriceLevel.Two: clsItemDetails.Price = clsProductPackageDetails.Price2 == 0 ? clsProductPackageDetails.Price : clsProductPackageDetails.Price2; break;
                                    case PriceLevel.Three: clsItemDetails.Price = clsProductPackageDetails.Price3 == 0 ? clsProductPackageDetails.Price : clsProductPackageDetails.Price3; break;
                                    case PriceLevel.Four: clsItemDetails.Price = clsProductPackageDetails.Price4 == 0 ? clsProductPackageDetails.Price : clsProductPackageDetails.Price4; break;
                                    case PriceLevel.Five: clsItemDetails.Price = clsProductPackageDetails.Price5 == 0 ? clsProductPackageDetails.Price : clsProductPackageDetails.Price5; break;
                                    case PriceLevel.WSPrice: clsItemDetails.Price = clsProductPackageDetails.WSPrice == 0 ? clsProductPackageDetails.Price : clsProductPackageDetails.WSPrice; break;
                                    default: clsItemDetails.Price = clsProductPackageDetails.Price; break;
                                }
                                if (mclsContactDetails.PriceLevel != PriceLevel.SRP)
                                {
                                    InsertAuditLog(AccessTypes.ChangePrice, "Barcode: " + clsItemDetails.BarCode + " ... Product Code:" + clsItemDetails.ProductCode + " ... Price Level:" + mclsContactDetails.PriceLevel.ToString("G") + "... SRP: " + clsProductPackageDetails.Price.ToString("#,###.#0") + " NewPrice: " + clsItemDetails.Price.ToString("#,###.#0"));
                                }
                            }

                            clsItemDetails.PackageQuantity = clsProductPackageDetails.Quantity;
                            clsItemDetails.Amount = (clsItemDetails.Quantity * clsItemDetails.Price) - (clsItemDetails.Quantity * clsItemDetails.Discount);
                            clsItemDetails.Commision = clsItemDetails.Amount * (clsItemDetails.PercentageCommision / 100);
                        }
                        clsItemDetails.MatrixPackageID = clsProductPackageDetails.MatrixID;
                        clsItemDetails.VariationsMatrixID = clsProductDetails.MatrixID;
                        clsItemDetails.MatrixDescription = clsProductDetails.MatrixDescription;
                        

                        clsItemDetails = ComputeItemTotal(clsItemDetails); // set the grossales, vat, discounts, etc.(Details);

                        if (!mboIsInTransaction)
                        {
                            lblTransDate.Text = DateTime.Now.ToString("MMM. dd, yyyy hh:mm:ss tt");
                            if (!this.CreateTransaction()) { clsProductPackage.CommitAndDispose(); return; }
                        }

                        AddItem(clsItemDetails);
                    }
					else
					{
						MessageBox.Show("Sorry the item is not yet entered in the system. Please select the generic code for this item.", "RetailPlus", MessageBoxButtons.OK, MessageBoxIcon.Warning);
					}
					clsProductPackage.CommitAndDispose();
				}
			}
		}
Beispiel #7
0
		private Data.SalesTransactionItemDetails getCurrentRowItemDetails()
		{
			try
			{
				Int32 iRow = dgItems.CurrentRowIndex;

				Data.SalesTransactionItemDetails Details = new Data.SalesTransactionItemDetails();

				Details.TransactionID = Convert.ToInt64(lblTransNo.Tag);
				Details.TransactionDate = mclsSalesTransactionDetails.TransactionDate;
				Details.TransactionItemsID = Convert.ToInt64(dgItems[iRow, 0].ToString());
				Details.ItemNo = dgItems[iRow, 1].ToString();
				Details.ProductID = Convert.ToInt32(dgItems[iRow, 2].ToString());
				Details.ProductCode = dgItems[iRow, 3].ToString();
				Details.BarCode = dgItems[iRow, 4].ToString();
				Details.Description = dgItems[iRow, 5].ToString();
				if (Details.Description.IndexOf(Environment.NewLine) > -1)
				{
                    try
                    { Details.Description = Details.Description.Remove(Details.Description.IndexOf(Environment.NewLine), Details.Description.Length - Details.Description.IndexOf(Environment.NewLine)); }
                    catch (Exception exdesc){ InsertErrorLogToFile(exdesc, "ERROR!!! Getting current row item details in desc. TRACE: "); }
				}
				Details.ProductUnitID = Convert.ToInt32(dgItems[iRow, 6].ToString());
				Details.ProductUnitCode = dgItems[iRow, 7].ToString();
				if (dgItems[iRow, 8].ToString().IndexOf("RETURN") != -1)
				{
					Details.Quantity = Convert.ToDecimal(dgItems[iRow, 8].ToString().Replace(" - RETURN", "").Trim());
				}
                else if (dgItems[iRow, 8].ToString().IndexOf("DEMO") != -1)
                {
                    Details.Quantity = Convert.ToDecimal(dgItems[iRow, 8].ToString().Replace(" - DEMO", "").Trim());
                }
				else if (dgItems[iRow, 8].ToString().IndexOf("VOID") != -1)
				{
					Details.Quantity = 0;
				}
				else
				{
					Details.Quantity = Convert.ToDecimal(dgItems[iRow, 8].ToString());
				}
				Details.Price = Convert.ToDecimal(dgItems[iRow, 9].ToString());
				Details.Discount = Convert.ToDecimal(dgItems[iRow, 10].ToString());
				Details.ItemDiscount = Convert.ToDecimal(dgItems[iRow, 11].ToString());
				Details.ItemDiscountType = (DiscountTypes)Enum.Parse(typeof(DiscountTypes), dgItems[iRow, 12].ToString());
				Details.Amount = Details.Quantity * Details.Price;//Convert.ToDecimal(dgItems[iRow, 13].ToString()) ;
				Details.VAT = Convert.ToDecimal(dgItems[iRow, 14].ToString());
				Details.EVAT = Convert.ToDecimal(dgItems[iRow, 15].ToString());
				Details.LocalTax = Convert.ToDecimal(dgItems[iRow, 16].ToString());
				Details.VariationsMatrixID = Convert.ToInt64(dgItems[iRow, 17].ToString());
				Details.MatrixDescription = dgItems[iRow, 18].ToString();
				Details.ProductGroup = dgItems[iRow, 19].ToString();
				Details.ProductSubGroup = dgItems[iRow, 20].ToString();
				Details.TransactionItemStatus = (TransactionItemStatus)Enum.Parse(typeof(TransactionItemStatus), dgItems[iRow, 21].ToString());
				Details.DiscountCode = dgItems[iRow, 22].ToString();
				Details.DiscountRemarks = dgItems[iRow, 23].ToString();
				Details.ProductPackageID = Convert.ToInt64(dgItems[iRow, 24].ToString());
				Details.MatrixPackageID = Convert.ToInt64(dgItems[iRow, 25].ToString());
				Details.PackageQuantity = Convert.ToDecimal(dgItems[iRow, 26].ToString());
				Details.PromoQuantity = Convert.ToDecimal(dgItems[iRow, 27].ToString());
				Details.PromoValue = Convert.ToDecimal(dgItems[iRow, 28].ToString());
                Details.PromoInPercent = Convert.ToBoolean(dgItems[iRow, 29].ToString());
				Details.PromoType = (PromoTypes)Enum.Parse(typeof(PromoTypes), dgItems[iRow, 30].ToString());
				Details.PromoApplied = Convert.ToDecimal(dgItems[iRow, 31].ToString());
				Details.PurchasePrice = Convert.ToDecimal(dgItems[iRow, 32].ToString());
				Details.PurchaseAmount = Convert.ToDecimal(dgItems[iRow, 33].ToString());
				Details.IncludeInSubtotalDiscount = Convert.ToBoolean(dgItems[iRow, 34].ToString());
                Details.IsCreditChargeExcluded = Convert.ToBoolean(dgItems[iRow, 35].ToString());
                Details.OrderSlipPrinter1 = bool.Parse(dgItems[iRow, 36].ToString());
                Details.OrderSlipPrinter2 = bool.Parse(dgItems[iRow, 37].ToString());
                Details.OrderSlipPrinter3 = bool.Parse(dgItems[iRow, 38].ToString());
                Details.OrderSlipPrinter4 = bool.Parse(dgItems[iRow, 39].ToString());
                Details.OrderSlipPrinter5 = bool.Parse(dgItems[iRow, 40].ToString());
                Details.OrderSlipPrinted = Convert.ToBoolean(dgItems[iRow, 41].ToString());
                Details.PercentageCommision = Convert.ToDecimal(dgItems[iRow, 42].ToString());
                Details.Commision = Convert.ToDecimal(dgItems[iRow, 43].ToString());
                Details.RewardPoints = Convert.ToDecimal(dgItems[iRow, 44].ToString());
                Details.ItemRemarks = dgItems[iRow, 45].ToString();
                Details.PaxNo = Convert.ToInt32(dgItems[iRow, 46].ToString());
                Details.ReturnTransactionItemsID = Convert.ToInt64(dgItems[iRow, 47].ToString());
                Details.SupplierID = Convert.ToInt64(dgItems[iRow, 48].ToString());
                Details.SupplierCode = dgItems[iRow, 49].ToString();
                Details.SupplierName = dgItems[iRow, 50].ToString();

				return Details;
			}
			catch (Exception ex)
			{
                InsertErrorLogToFile(ex, "ERROR!!! Getting current row item details. TRACE: ");
				throw ex;
			}
		}
Beispiel #8
0
		private bool SelectContact(AceSoft.RetailPlus.Data.ContactGroupCategory enumContactGroupCategory)
		{
            bool boretValue = true;

			// Sep 24, 2011      Lemuel E. Aceron
			// Added order slip wherein all punch items will not change sales and inventory
			// a customer named ORDER SLIP should be defined in contacts
			if (lblCustomer.Text.Trim().ToUpper() == Constants.C_RETAILPLUS_ORDER_SLIP_CUSTOMER && mboIsInTransaction && enumContactGroupCategory == AceSoft.RetailPlus.Data.ContactGroupCategory.CUSTOMER)
			{
				MessageBox.Show("Sorry you cannot select ORDER SLIP customer when an item is already purchased.", "RetailPlus", MessageBoxButtons.OK, MessageBoxIcon.Warning);
				return false;
			}

			if (mclsTerminalDetails.AutoPrint == PrintingPreference.Auto && mboIsInTransaction)
			{
				switch (enumContactGroupCategory)
				{ 
					case AceSoft.RetailPlus.Data.ContactGroupCategory.CUSTOMER:
						MessageBox.Show("Sorry you cannot select a customer when an item is already purchased.", "RetailPlus", MessageBoxButtons.OK, MessageBoxIcon.Warning);
						break;
					case AceSoft.RetailPlus.Data.ContactGroupCategory.AGENT:
						MessageBox.Show("Sorry you cannot select an agent when an item is already purchased.", "RetailPlus", MessageBoxButtons.OK, MessageBoxIcon.Warning);
						break;
				}

				return false;
			}

			try
			{
				switch (enumContactGroupCategory)
				{
					case AceSoft.RetailPlus.Data.ContactGroupCategory.CUSTOMER:
						clsEvent.AddEvent("[" + lblCashier.Text + "] Selecting customer.");
						if (mclsTerminalDetails.ShowCustomerSelection == false)
						{
							clsEvent.AddEventLn("Cancelled! ShowCustomerSelection is OFF, reward is ON.");
							txtBarCode.Text = Constants.SWIPE_REWARD_CARD;
							txtBarCode.Focus(); txtBarCode.SelectionStart = txtBarCode.Text.Length + 1;
							return false;
						}
						break;
					case AceSoft.RetailPlus.Data.ContactGroupCategory.AGENT:
						clsEvent.AddEvent("[" + lblCashier.Text + "] Selecting agent.");
						break;
				}

				DialogResult result; Data.ContactDetails details;
				ContactSelectWnd clsContactWnd = new ContactSelectWnd();
                clsContactWnd.EnableContactAddUpdate = GetWriteAccess(mclsSalesTransactionDetails.CashierID, AccessTypes.Contacts) == System.Windows.Forms.DialogResult.OK;
                clsContactWnd.SysConfigDetails = mclsSysConfigDetails;
                clsContactWnd.TerminalDetails = mclsTerminalDetails;
				clsContactWnd.ContactGroupCategory = enumContactGroupCategory;
				clsContactWnd.ShowDialog(this);
				details = clsContactWnd.Details;
				result = clsContactWnd.Result;
				clsContactWnd.Close();
				clsContactWnd.Dispose();

				if (result == DialogResult.OK)
				{

                    if (details.ContactCode == mclsSysConfigDetails.OutOfStockCustomerCode && mboIsInTransaction)
                    {
                        MessageBox.Show("Sorry you cannot select OUT OF STOCK customer when an item is already purchased.", "RetailPlus", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        clsEvent.AddEventLn("Cancelled OUT OF STOCK customer is selected but items are already purchased."); 
                        return false;
                    }

					LoadContact(enumContactGroupCategory, details);

                    // 13Mar2015 : MPC, override the price using the PriceLevel
                    //             For PriceLevel1...5
                    if (mclsSysConfigDetails.EnablePriceLevel)
                    {
                        Cursor.Current = Cursors.WaitCursor;

                        Int32 iOldRow = dgItems.CurrentRowIndex;
                        Data.SalesTransactionItemDetails Details = new Data.SalesTransactionItemDetails();

                        Data.ProductPackage clsProductPackage = new Data.ProductPackage(mConnection, mTransaction);
                        mConnection = clsProductPackage.Connection; mTransaction = clsProductPackage.Transaction;

                        Data.ProductPackageDetails clsProductPackageDetails = new Data.ProductPackageDetails();

                        System.Data.DataTable dt = (System.Data.DataTable)dgItems.DataSource;
                        for (int x = 0; x < dt.Rows.Count; x++)
                        {
                            dgItems.CurrentRowIndex = x;
                            Details = getCurrentRowItemDetails();

                            dgItems.UnSelect(x);
                            if (Details.TransactionItemStatus == TransactionItemStatus.Valid)
                            {
                                clsProductPackageDetails = clsProductPackage.Details(Details.ProductPackageID);

                                switch (mclsContactDetails.PriceLevel)
                                {
                                    case PriceLevel.SRP: Details.Price = clsProductPackageDetails.Price; break;
                                    case PriceLevel.One: Details.Price = clsProductPackageDetails.Price1 == 0 ? clsProductPackageDetails.Price : clsProductPackageDetails.Price1; break;
                                    case PriceLevel.Two: Details.Price = clsProductPackageDetails.Price2 == 0 ? clsProductPackageDetails.Price : clsProductPackageDetails.Price2; break;
                                    case PriceLevel.Three: Details.Price = clsProductPackageDetails.Price3 == 0 ? clsProductPackageDetails.Price : clsProductPackageDetails.Price3; break;
                                    case PriceLevel.Four: Details.Price = clsProductPackageDetails.Price4 == 0 ? clsProductPackageDetails.Price : clsProductPackageDetails.Price4; break;
                                    case PriceLevel.Five: Details.Price = clsProductPackageDetails.Price5 == 0 ? clsProductPackageDetails.Price : clsProductPackageDetails.Price5; break;
                                    case PriceLevel.WSPrice: Details.Price = clsProductPackageDetails.WSPrice == 0 ? clsProductPackageDetails.Price : clsProductPackageDetails.WSPrice; break;
                                    default: Details.Price = clsProductPackageDetails.Price; break;
                                }
                                Details = ApplyPromo(Details);

                                ApplyChangeQuantityPriceAmountDetails(x, Details, "Change Price: Change Contact");
                            }
                        }

                        clsProductPackage.CommitAndDispose();

                        if (iOldRow >=0 )
                        {
                            dgItems.CurrentRowIndex = iOldRow;
                            dgItems.Select(iOldRow);

                            Details = getCurrentRowItemDetails();
                            DisplayItemToTurretDelegate DisplayItemToTurretDel = new DisplayItemToTurretDelegate(DisplayItemToTurret);
                            DisplayItemToTurretDel.BeginInvoke(Details.Description, Details.ProductUnitCode, Details.Quantity, Details.Price, Details.Discount, Details.PromoApplied, Details.Amount, Details.VAT, Details.EVAT, null, null);
                            InsertAuditLog(AccessTypes.ChangePrice, "Change price: change contact : for item " + Details.ProductCode + " to " + Details.Price.ToString("#,##0.#0") + " @ Branch: " + mclsTerminalDetails.BranchDetails.BranchCode);
                            mbodgItemRowClick = false;
                        }

                        Cursor.Current = Cursors.Default;
                    }
				}
                else { clsEvent.AddEventLn("Cancelled!"); boretValue = false; }

			}
			catch (Exception ex)
			{ 
                InsertErrorLogToFile(ex, "ERROR!!! Selecting contact.");
                boretValue = false;
            }
            return boretValue;
		}
        public SalesTransactionItemDetails[] Details(Int64 TransactionID, DateTime TransactionDate)
        {
            try
            {
                
                SalesTransactionItems clsItems = new SalesTransactionItems(base.Connection, base.Transaction);
                System.Data.DataTable  dt = clsItems.List(TransactionID, TransactionDate, "TransactionItemsID", SortOption.Ascending);

                ArrayList items = new ArrayList();
                
                int itemno = 1;
                foreach(System.Data.DataRow dr in dt.Rows)
                {
                    Data.SalesTransactionItemDetails itemDetails = new Data.SalesTransactionItemDetails();

                    itemDetails.ItemNo = itemno.ToString();
                    itemDetails.TransactionItemsID = Int64.Parse(dr["TransactionItemsID"].ToString());
                    itemDetails.ReturnTransactionItemsID = Int64.Parse(dr["ReturnTransactionItemsID"].ToString());
                    itemDetails.RefReturnTransactionItemsID = Int64.Parse(dr["RefReturnTransactionItemsID"].ToString());
                    itemDetails.TransactionID = Int64.Parse(dr["TransactionID"].ToString());
                    itemDetails.ProductID = Int64.Parse(dr["ProductID"].ToString());
                    itemDetails.ProductCode = "" + dr["ProductCode"].ToString();
                    itemDetails.BarCode = "" + dr["BarCode"].ToString();
                    itemDetails.Description = "" + dr["Description"].ToString();
                    itemDetails.ProductUnitID = Int32.Parse(dr["ProductUnitID"].ToString());
                    itemDetails.ProductUnitCode = "" + dr["ProductUnitCode"].ToString();
                    itemDetails.Quantity = decimal.Parse(dr["Quantity"].ToString());
                    itemDetails.Price = decimal.Parse(dr["Price"].ToString());
                    itemDetails.Discount = decimal.Parse(dr["Discount"].ToString());
                    itemDetails.ItemDiscount = decimal.Parse(dr["ItemDiscount"].ToString());
                    itemDetails.ItemDiscountType = (DiscountTypes)Enum.Parse(typeof(DiscountTypes), dr["ItemDiscountType"].ToString());
                    itemDetails.Amount = decimal.Parse(dr["Amount"].ToString());
                    itemDetails.VAT = decimal.Parse(dr["VAT"].ToString());
                    itemDetails.VatableAmount = decimal.Parse(dr["VatableAmount"].ToString());
                    itemDetails.NonVatableAmount = decimal.Parse(dr["NonVatableAmount"].ToString());
                    itemDetails.VATExempt = decimal.Parse(dr["VATExempt"].ToString());
                    itemDetails.EVAT = decimal.Parse(dr["EVAT"].ToString());
                    itemDetails.LocalTax = decimal.Parse(dr["LocalTax"].ToString());
                    itemDetails.VariationsMatrixID = Int64.Parse(dr["VariationsMatrixID"].ToString());
                    itemDetails.MatrixDescription = "" + dr["MatrixDescription"].ToString();
                    itemDetails.ProductGroup = "" + dr["ProductGroup"].ToString();
                    itemDetails.ProductSubGroup = "" + dr["ProductSubGroup"].ToString();
                    itemDetails.TransactionDate = TransactionDate;
                    itemDetails.TransactionItemStatus = (TransactionItemStatus)Enum.Parse(typeof(TransactionItemStatus), dr["TransactionItemStatus"].ToString());
                    itemDetails.DiscountCode = "" + dr["DiscountCode"].ToString();
                    itemDetails.DiscountRemarks = "" + dr["DiscountRemarks"].ToString();
                    itemDetails.ProductPackageID = Int64.Parse(dr["ProductPackageID"].ToString());
                    itemDetails.MatrixPackageID = Int64.Parse(dr["MatrixPackageID"].ToString());
                    itemDetails.PackageQuantity = decimal.Parse(dr["PackageQuantity"].ToString());
                    itemDetails.PromoQuantity = decimal.Parse(dr["PromoQuantity"].ToString());
                    itemDetails.PromoValue = decimal.Parse(dr["PromoValue"].ToString());
                    itemDetails.PromoInPercent = bool.Parse(dr["PromoInPercent"].ToString());
                    itemDetails.PromoType = (PromoTypes)Enum.Parse(typeof(PromoTypes), dr["PromoType"].ToString());
                    itemDetails.PromoApplied = decimal.Parse(dr["PromoApplied"].ToString());
                    itemDetails.PurchasePrice = decimal.Parse(dr["PurchasePrice"].ToString());
                    itemDetails.PurchaseAmount = decimal.Parse(dr["PurchaseAmount"].ToString());
                    itemDetails.IncludeInSubtotalDiscount = bool.Parse(dr["IncludeInSubtotalDiscount"].ToString());
                    itemDetails.IsCreditChargeExcluded = bool.Parse(dr["IsCreditChargeExcluded"].ToString());
                    itemDetails.OrderSlipPrinter1 = bool.Parse(dr["OrderSlipPrinter1"].ToString());
                    itemDetails.OrderSlipPrinter2 = bool.Parse(dr["OrderSlipPrinter2"].ToString());
                    itemDetails.OrderSlipPrinter3 = bool.Parse(dr["OrderSlipPrinter3"].ToString());
                    itemDetails.OrderSlipPrinter4 = bool.Parse(dr["OrderSlipPrinter4"].ToString());
                    itemDetails.OrderSlipPrinter5 = bool.Parse(dr["OrderSlipPrinter5"].ToString());
                    itemDetails.OrderSlipPrinted = Convert.ToBoolean(dr["OrderSlipPrinted"]);
                    itemDetails.PercentageCommision = decimal.Parse(dr["PercentageCommision"].ToString());
                    itemDetails.Commision = decimal.Parse(dr["Commision"].ToString());
                    itemDetails.RewardPoints = decimal.Parse(dr["RewardPoints"].ToString());
                    itemDetails.PaxNo = Int32.Parse(dr["PaxNo"].ToString());
                    itemDetails.SupplierID = Int64.Parse(dr["SupplierID"].ToString());
                    itemDetails.SupplierCode = "" + dr["SupplierCode"].ToString();
                    itemDetails.SupplierName = "" + dr["SupplierName"].ToString();
                    itemDetails.ItemRemarks = "" + dr["ItemRemarks"].ToString();

                    if (itemDetails.TransactionItemStatus == TransactionItemStatus.Return)
                    {
                        itemDetails.Amount = -itemDetails.Amount;
                        itemDetails.Commision = -itemDetails.Commision;
                        itemDetails.RewardPoints = -itemDetails.RewardPoints;
                    }
                    else if (itemDetails.TransactionItemStatus == TransactionItemStatus.Refund)
                    {
                        itemDetails.Amount = -itemDetails.Amount;
                        itemDetails.Commision = -itemDetails.Commision;
                        itemDetails.RewardPoints = -itemDetails.RewardPoints;
                    }
                    else if (itemDetails.TransactionItemStatus == TransactionItemStatus.Void)
                    {
                        itemDetails.Amount = 0;
                        itemDetails.Commision = 0;
                        itemDetails.RewardPoints = 0;
                    }
                    //else
                    //    itemDetails.Amount				= itemDetails.Amount;

                    items.Add(itemDetails);
                    itemno++;
                }

                SalesTransactionItemDetails[] TransactionItems = new SalesTransactionItemDetails[0];

                if (items != null)
                {
                    TransactionItems = new SalesTransactionItemDetails[items.Count];
                    items.CopyTo(TransactionItems);
                }

                return TransactionItems;
            }
            catch (Exception ex)
            {
                throw base.ThrowException(ex);
            }
        }
Beispiel #10
0
        private void MatchItem()
        {
            Data.SalesTransactionItemDetails _SalesTransactionItemDetails  = new Data.SalesTransactionItemDetails();
            int oldindex = dgItems.CurrentRowIndex;
            bool boFound = false;

            for (int iRow=0;iRow<ItemDataTable.Rows.Count;iRow++)
            {
                dgItems.CurrentRowIndex = iRow;
                _SalesTransactionItemDetails = getCurrentRowItemDetails();
                TransactionItemStatus _TransactionItemStatus = (TransactionItemStatus)Enum.Parse(typeof(TransactionItemStatus), dgItems[iRow, 21].ToString());
                if ((_SalesTransactionItemDetails.BarCode == txtScan.Text.Trim() || _SalesTransactionItemDetails.ProductCode.Contains(txtScan.Text.Trim()))  && _TransactionItemStatus == TransactionItemStatus.Valid)
                {
                    _SalesTransactionItemDetails.ScannedQty += 1;
                    ApplyChangeQuantityPriceAmountDetails(iRow, _SalesTransactionItemDetails);
                    
                    //decimal decScannedQty = Convert.ToDecimal(dgItems[iRow, 39].ToString());
                    //decimal decScannedAmt = Convert.ToDecimal(dgItems[iRow, 40].ToString());

                    try { dgItems.UnSelect(0); }
                    catch { }
                    dgItems.UnSelect(oldindex);
                    dgItems.Select(dgItems.CurrentRowIndex);
                    boFound = true;
                    break;

                    //if (decScannedQty == 0) { ApplyChangeQuantityPriceAmountDetails(iRow, Details); break; }
                }
            }
            txtScan.Text = string.Empty;
            if (!boFound ) dgItems.CurrentRowIndex = oldindex;
            getTotal();
        }
Beispiel #11
0
        private Data.SalesTransactionItemDetails getCurrentRowItemDetails()
        {
            try
            {
                Int32 iRow = dgItems.CurrentRowIndex;

                Data.SalesTransactionItemDetails Details = new Data.SalesTransactionItemDetails();

                Details.TransactionID = mclsSalesTransactionDetails.TransactionID;
                Details.TransactionDate = mclsSalesTransactionDetails.TransactionDate;
                Details.TransactionItemsID = Convert.ToInt64(dgItems[iRow, 0].ToString());
                Details.ItemNo = dgItems[iRow, 1].ToString();
                Details.ProductID = Convert.ToInt32(dgItems[iRow, 2].ToString());
                Details.ProductCode = dgItems[iRow, 3].ToString();
                Details.BarCode = dgItems[iRow, 4].ToString();
                Details.Description = dgItems[iRow, 5].ToString();
                Details.VariationsMatrixID = Convert.ToInt64(dgItems[iRow, 6].ToString());
                Details.MatrixDescription = dgItems[iRow, 7].ToString();
                if (Details.Description.IndexOf(Environment.NewLine) > -1)
                {
                    Details.Description = Details.Description.Remove(Details.Description.IndexOf(Environment.NewLine), Details.Description.Length - Details.Description.IndexOf(Environment.NewLine));
                }
                if (dgItems[iRow, 8].ToString().IndexOf("RETURN") != -1)
                {
                    Details.Quantity = Convert.ToDecimal(dgItems[iRow, 8].ToString().Replace(" - RETURN", "").Trim());
                    Details.ScannedQty = Convert.ToDecimal(dgItems[iRow, 39].ToString().Replace(" - RETURN", "").Trim());
                }
                else if (dgItems[iRow, 8].ToString().IndexOf("VOID") != -1)
                {
                    Details.Quantity = 0;
                    Details.ScannedQty = 0;
                }
                else
                {
                    Details.Quantity = Convert.ToDecimal(dgItems[iRow, 8].ToString());
                    Details.ScannedQty = Convert.ToDecimal(dgItems[iRow, 39].ToString());
                }
                Details.ProductUnitID = Convert.ToInt32(dgItems[iRow, 9].ToString());
                Details.ProductUnitCode = dgItems[iRow, 10].ToString();
                Details.Price = Convert.ToDecimal(dgItems[iRow, 11].ToString());
                Details.Discount = Convert.ToDecimal(dgItems[iRow, 12].ToString());
                Details.ItemDiscount = Convert.ToDecimal(dgItems[iRow, 13].ToString());
                Details.ItemDiscountType = (DiscountTypes)Enum.Parse(typeof(DiscountTypes), dgItems[iRow, 14].ToString());
                Details.Amount = Details.Quantity * Details.Price;//Convert.ToDecimal(dgItems[iRow, 13].ToString()) ;
                Details.ScannedAmt = Details.ScannedQty * Details.Price;//Convert.ToDecimal(dgItems[iRow, 40].ToString());
                Details.VAT = Convert.ToDecimal(dgItems[iRow, 16].ToString());
                Details.EVAT = Convert.ToDecimal(dgItems[iRow, 17].ToString());
                Details.LocalTax = Convert.ToDecimal(dgItems[iRow, 18].ToString());
                Details.ProductGroup = dgItems[iRow, 19].ToString();
                Details.ProductSubGroup = dgItems[iRow, 20].ToString();
                Details.TransactionItemStatus = (TransactionItemStatus)Enum.Parse(typeof(TransactionItemStatus), dgItems[iRow, 21].ToString());
                Details.DiscountCode = dgItems[iRow, 22].ToString();
                Details.DiscountRemarks = dgItems[iRow, 23].ToString();
                Details.ProductPackageID = Convert.ToInt64(dgItems[iRow, 24].ToString());
                Details.MatrixPackageID = Convert.ToInt64(dgItems[iRow, 25].ToString());
                Details.PackageQuantity = Convert.ToDecimal(dgItems[iRow, 26].ToString());
                Details.PromoQuantity = Convert.ToDecimal(dgItems[iRow, 27].ToString());
                Details.PromoValue = Convert.ToDecimal(dgItems[iRow, 28].ToString());
                Details.PromoInPercent = Convert.ToBoolean(dgItems[iRow, 29].ToString());
                Details.PromoType = (PromoTypes)Enum.Parse(typeof(PromoTypes), dgItems[iRow, 30].ToString());
                Details.PromoApplied = Convert.ToDecimal(dgItems[iRow, 31].ToString());
                Details.PurchasePrice = Convert.ToDecimal(dgItems[iRow, 32].ToString());
                Details.PurchaseAmount = Convert.ToDecimal(dgItems[iRow, 33].ToString());
                Details.IncludeInSubtotalDiscount = Convert.ToBoolean(dgItems[iRow, 34].ToString());
                Details.OrderSlipPrinter = (OrderSlipPrinter)Enum.Parse(typeof(OrderSlipPrinter), dgItems[iRow, 35].ToString());
                Details.OrderSlipPrinted = Convert.ToBoolean(dgItems[iRow, 36].ToString());
                Details.PercentageCommision = Convert.ToDecimal(dgItems[iRow, 37].ToString());
                Details.Commision = Convert.ToDecimal(dgItems[iRow, 38].ToString());
                

                return Details;
            }
            catch (Exception ex)
            {
                Event clsEvent = new Event();
                clsEvent.AddEventLn("ERROR! Getting current row item details. TRACE: " + ex.Message);
                throw ex;
            }
        }
Beispiel #12
0
		private void SelectContact(AceSoft.RetailPlus.Data.ContactGroupCategory enumContactGroupCategory)
		{
			// Sep 24, 2011      Lemuel E. Aceron
			// Added order slip wherein all punch items will not change sales and inventory
			// a customer named ORDER SLIP should be defined in contacts
			if (lblCustomer.Text.Trim().ToUpper() == Constants.C_RETAILPLUS_ORDER_SLIP_CUSTOMER && mboIsInTransaction && enumContactGroupCategory == AceSoft.RetailPlus.Data.ContactGroupCategory.CUSTOMER)
			{
				MessageBox.Show("Sorry you cannot select ORDER SLIP customer when an item is already purchased.", "RetailPlus", MessageBoxButtons.OK, MessageBoxIcon.Warning);
				return;
			}

			if (mclsTerminalDetails.AutoPrint == PrintingPreference.Auto && mboIsInTransaction)
			{
				switch (enumContactGroupCategory)
				{ 
					case AceSoft.RetailPlus.Data.ContactGroupCategory.CUSTOMER:
						MessageBox.Show("Sorry you cannot select a customer when an item is already purchased.", "RetailPlus", MessageBoxButtons.OK, MessageBoxIcon.Warning);
						break;
					case AceSoft.RetailPlus.Data.ContactGroupCategory.AGENT:
						MessageBox.Show("Sorry you cannot select an agent when an item is already purchased.", "RetailPlus", MessageBoxButtons.OK, MessageBoxIcon.Warning);
						break;
				}

				return;
			}

			try
			{
				switch (enumContactGroupCategory)
				{
					case AceSoft.RetailPlus.Data.ContactGroupCategory.CUSTOMER:
						clsEvent.AddEvent("[" + lblCashier.Text + "] Selecting customer.");
						if (mclsTerminalDetails.ShowCustomerSelection == false)
						{
							clsEvent.AddEventLn("Cancelled! ShowCustomerSelection is OFF, reward is ON.");
							txtBarCode.Text = Constants.SWIPE_REWARD_CARD;
							txtBarCode.Focus(); txtBarCode.SelectionStart = txtBarCode.Text.Length + 1;
							return;
						}
						break;
					case AceSoft.RetailPlus.Data.ContactGroupCategory.AGENT:
						clsEvent.AddEvent("[" + lblCashier.Text + "] Selecting agent.");
						break;
				}

				DialogResult result; Data.ContactDetails details;
				TableSelectWnd clsTableSelectWnd = new TableSelectWnd();
				clsTableSelectWnd.TerminalDetails = mclsTerminalDetails;
                clsTableSelectWnd.ContactGroupCategory = enumContactGroupCategory;
				clsTableSelectWnd.ShowAvailableTableOnly = mboIsInTransaction;
				clsTableSelectWnd.ShowDialog(this);
				details = clsTableSelectWnd.Details;
				result = clsTableSelectWnd.Result;
				clsTableSelectWnd.Close();
				clsTableSelectWnd.Dispose();

				if (result == DialogResult.OK)
				{
					// Nov 18, 2011 : Lemu - auto suspend if already doing a transaction
                    if (mboIsInTransaction)
                    {
                        if (mclsSalesTransactionDetails.CustomerID == Constants.C_RETAILPLUS_CUSTOMERID && mclsSalesTransactionDetails.CustomerID != details.ContactID)
                        {
                            Data.Contacts clsContacts = new Data.Contacts(mConnection, mTransaction);
                            mConnection = clsContacts.Connection; mTransaction = clsContacts.Transaction;

                            clsContacts.UpdateLastCheckInDate(mclsSalesTransactionDetails.CustomerID, Constants.C_DATE_MIN_VALUE);
                            clsContacts.UpdateLastCheckInDate(details.ContactID, mclsSalesTransactionDetails.TransactionDate);
                            clsContacts.CommitAndDispose();

                            LoadContact(ContactGroupCategory.CUSTOMER, details);
                            return;
                        }
                        else if (mclsSalesTransactionDetails.CustomerID == details.ContactID)
                        { return; }
                        else if (mclsSalesTransactionDetails.CustomerID != details.ContactID)
                        {
                            if (MessageBox.Show("Would you like to move from table: " + mclsSalesTransactionDetails.CustomerDetails.ContactCode + " to table: " + details.ContactCode + "." + Environment.NewLine + "Please click [Yes] to move, [Cancel] to create new transaction in the selected table.", "RetailPlus", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.OK)
                            {
                                Data.Contacts clsContacts = new Data.Contacts(mConnection, mTransaction);
                                mConnection = clsContacts.Connection; mTransaction = clsContacts.Transaction;

                                clsContacts.UpdateLastCheckInDate(mclsSalesTransactionDetails.CustomerID, Constants.C_DATE_MIN_VALUE);
                                clsContacts.UpdateLastCheckInDate(details.ContactID, mclsSalesTransactionDetails.TransactionDate);
                                clsContacts.CommitAndDispose();

                                LoadContact(ContactGroupCategory.CUSTOMER, details);
                                return;
                            }
                            else
                            {
                                this.SuspendTransaction(false);
                            }
                        }
                    }
                    else
                    {
                        Data.Contacts clsContacts = new Data.Contacts(mConnection, mTransaction);
                        mConnection = clsContacts.Connection; mTransaction = clsContacts.Transaction;

                        clsContacts.UpdateLastCheckInDate(mclsSalesTransactionDetails.CustomerID, Constants.C_DATE_MIN_VALUE);
                        clsContacts.UpdateLastCheckInDate(details.ContactID, mclsSalesTransactionDetails.TransactionDate);
                        clsContacts.CommitAndDispose();
                    }

                    Data.SalesTransactions clsSalesTransactions = new Data.SalesTransactions(mConnection, mTransaction);
                    mConnection = clsSalesTransactions.Connection; mTransaction = clsSalesTransactions.Transaction;

                    string stTransactionNo = clsSalesTransactions.getSuspendedTransactionNo(details.ContactID, mclsTerminalDetails.TerminalNo, mclsTerminalDetails.BranchID);

                    if (stTransactionNo != string.Empty)
                    {
                        LoadTransaction(stTransactionNo, mclsTerminalDetails.TerminalNo);
                    }
                    else
                    {
                        this.LoadOptions();
                        LoadContact(ContactGroupCategory.CUSTOMER, details);

                        // 13Mar2015 : MPC, override the price using the PriceLevel
                        //             For PriceLevel1...5
                        if (mclsSysConfigDetails.EnablePriceLevel)
                        {
                            Cursor.Current = Cursors.WaitCursor;

                            Int32 iOldRow = dgItems.CurrentRowIndex;
                            Data.SalesTransactionItemDetails Details = new Data.SalesTransactionItemDetails();

                            Data.ProductPackage clsProductPackage = new Data.ProductPackage(mConnection, mTransaction);
                            mConnection = clsProductPackage.Connection; mTransaction = clsProductPackage.Transaction;

                            Data.ProductPackageDetails clsProductPackageDetails = new Data.ProductPackageDetails();

                            System.Data.DataTable dt = (System.Data.DataTable)dgItems.DataSource;
                            for (int x = 0; x < dt.Rows.Count; x++)
                            {
                                dgItems.CurrentRowIndex = x;
                                Details = getCurrentRowItemDetails();

                                dgItems.UnSelect(x);
                                if (Details.TransactionItemStatus == TransactionItemStatus.Valid)
                                {
                                    clsProductPackageDetails = clsProductPackage.Details(Details.ProductPackageID);

                                    switch (mclsContactDetails.PriceLevel)
                                    {
                                        case PriceLevel.SRP: Details.Price = clsProductPackageDetails.Price; break;
                                        case PriceLevel.One: Details.Price = clsProductPackageDetails.Price1 == 0 ? clsProductPackageDetails.Price : clsProductPackageDetails.Price1; break;
                                        case PriceLevel.Two: Details.Price = clsProductPackageDetails.Price2 == 0 ? clsProductPackageDetails.Price : clsProductPackageDetails.Price2; break;
                                        case PriceLevel.Three: Details.Price = clsProductPackageDetails.Price3 == 0 ? clsProductPackageDetails.Price : clsProductPackageDetails.Price3; break;
                                        case PriceLevel.Four: Details.Price = clsProductPackageDetails.Price4 == 0 ? clsProductPackageDetails.Price : clsProductPackageDetails.Price4; break;
                                        case PriceLevel.Five: Details.Price = clsProductPackageDetails.Price5 == 0 ? clsProductPackageDetails.Price : clsProductPackageDetails.Price5; break;
                                        case PriceLevel.WSPrice: Details.Price = clsProductPackageDetails.WSPrice == 0 ? clsProductPackageDetails.Price : clsProductPackageDetails.WSPrice; break;
                                        default: Details.Price = clsProductPackageDetails.Price; break;
                                    }
                                    Details = ApplyPromo(Details);

                                    ApplyChangeQuantityPriceAmountDetails(x, Details, "Change Price: Change Contact");
                                }
                            }

                            clsProductPackage.CommitAndDispose();

                            if (iOldRow >= 0)
                            {
                                dgItems.CurrentRowIndex = iOldRow;
                                dgItems.Select(iOldRow);

                                Details = getCurrentRowItemDetails();
                                DisplayItemToTurretDelegate DisplayItemToTurretDel = new DisplayItemToTurretDelegate(DisplayItemToTurret);
                                DisplayItemToTurretDel.BeginInvoke(Details.Description, Details.ProductUnitCode, Details.Quantity, Details.Price, Details.Discount, Details.PromoApplied, Details.Amount, Details.VAT, Details.EVAT, null, null);
                                InsertAuditLog(AccessTypes.ChangePrice, "Change price: change contact : for item " + Details.ProductCode + " to " + Details.Price.ToString("#,##0.#0") + " @ Branch: " + mclsTerminalDetails.BranchDetails.BranchCode);
                                mbodgItemRowClick = false;
                            }
                            
                            Cursor.Current = Cursors.Default;
                        }
                    }
                    clsSalesTransactions.CommitAndDispose();
				}
				else { clsEvent.AddEventLn("Cancelled!"); }
			}
			catch (Exception ex)
			{ clsEvent.AddErrorEventLn(ex); }
		}