示例#1
0
		private System.Data.DataRow setCurrentRowItemDetails(System.Data.DataRow dr, Data.SalesTransactionItemDetails Details)
		{
			try
			{
                //21Jul2013 Add Parking rate if parking
                if (mclsTerminalDetails.IsParkingTerminal)
                {
                    Data.ParkingRates clsParkingRate = new Data.ParkingRates(mConnection, mTransaction);
                    mConnection = clsParkingRate.Connection; mTransaction = clsParkingRate.Transaction;

                    Data.ParkingRateDetails clsParkingRateDetails = clsParkingRate.Details(Details.ProductID, mclsSalesTransactionDetails.TransactionDate.ToString("dddd"));
                    if (clsParkingRateDetails.ParkingRateID != 0)
                    {
                        //compute the parking rate
                        Int32 intTotalNoOfMinutes = mclsSalesTransactionDetails.DateResumed == DateTime.MinValue ? 0 : (Int32)(mclsSalesTransactionDetails.DateResumed - mclsSalesTransactionDetails.TransactionDate).TotalMinutes;
                        decimal decParkingPrice = Details.Price;

                        if (intTotalNoOfMinutes <= clsParkingRateDetails.MinimumStayInMin)
                        {
                            Details.Price = clsParkingRateDetails.MinimumStayPrice;
                            Details.Description += Environment.NewLine + "TotalNoOfMinutes".PadRight(15) + ":" + intTotalNoOfMinutes.ToString("#,##0") + " @ " + clsParkingRateDetails.MinimumStayPrice.ToString("#,##0.#0") + " / " + clsParkingRateDetails.MinimumStayInMin.ToString("#,##0"); 
                        }
                        else
                        {
                            decParkingPrice = clsParkingRateDetails.MinimumStayPrice + (intTotalNoOfMinutes - clsParkingRateDetails.MinimumStayInMin) / clsParkingRateDetails.NoOfUnitperMin * clsParkingRateDetails.PerUnitPrice;
                            Details.Description += Environment.NewLine + "TotalNoOfMinutes".PadRight(15) + ":" + intTotalNoOfMinutes.ToString("#,##0") + " First " + clsParkingRateDetails.MinimumStayInMin.ToString("#,##0") + " @ " + clsParkingRateDetails.MinimumStayPrice.ToString("#,##0.#0") + " SuccNoOfUnit: " + (intTotalNoOfMinutes - clsParkingRateDetails.MinimumStayInMin).ToString("#,##0") + "/" + clsParkingRateDetails.NoOfUnitperMin.ToString("#,##0") + " * " + clsParkingRateDetails.PerUnitPrice.ToString("#,##0.#0");
                        }
                        Details.Price = decParkingPrice;
                        Details.Amount = decParkingPrice;
                    }
                }

                if (Details.DiscountCode == mclsTerminalDetails.SeniorCitizenDiscountCode && Details.ItemDiscountType == DiscountTypes.Percentage)
                { Details.Description = Details.Description + Environment.NewLine + "@ " + Details.ItemDiscount.ToString("###,##0.#0") + "% " + Details.DiscountCode; }
                else if (Details.DiscountCode == mclsTerminalDetails.SeniorCitizenDiscountCode && Details.ItemDiscountType == DiscountTypes.FixedValue)
                { Details.Description = Details.Description + Environment.NewLine + "@ " + Details.ItemDiscount.ToString("###,##0.#0") + " " + Details.DiscountCode; }
                else if (Details.DiscountCode == Constants.C_DISCOUNT_CODE_FREE && Details.ItemDiscountType == DiscountTypes.FixedValue)
                { Details.Description = Details.Description + Environment.NewLine + "@ " + Details.ItemDiscount.ToString("###,##0.#0") + " FREE"; }
                else if (Details.DiscountCode == Constants.C_DISCOUNT_CODE_FREE && Details.ItemDiscountType == DiscountTypes.Percentage)
                { Details.Description = Details.Description + Environment.NewLine + "@ " + Details.ItemDiscount.ToString("###,##0.#0") + "% FREE"; }
				else if (Details.ItemDiscountType == DiscountTypes.FixedValue)
				{ Details.Description = Details.Description + Environment.NewLine + "@ " + Details.ItemDiscount.ToString("###,##0.#0") + " disc"; }
				else if (Details.ItemDiscountType == DiscountTypes.Percentage)
				{ Details.Description = Details.Description + Environment.NewLine + "@ " + Details.ItemDiscount.ToString("###,##0.#0") + " % disc"; }

				if (Details.PromoApplied != 0)
				{
                    if (Details.PromoType == PromoTypes.PercentOffAfterQtyReached)
                        Details.Description = Details.Description + Environment.NewLine + "@ (" + Details.PromoValue.ToString("##0") + "%) " + Details.PromoApplied.ToString("###,##0.#0") + " promo"; 
                    else
                        Details.Description = Details.Description + Environment.NewLine + "@ " + Details.PromoApplied.ToString("###,##0.#0") + " promo"; 
                }

				if (ItemDataTable.Rows.Count + 1 > 8)
					dgStyle.GridColumnStyles["Amount"].Width = 85;
				else
                    dgStyle.GridColumnStyles["Amount"].Width = 95;

				dr["TransactionItemsID"] = Details.TransactionItemsID;
				dr["ItemNo"] = Details.ItemNo;
				dr["ProductID"] = Details.ProductID;
				dr["ProductCode"] = Details.ProductCode;
				dr["BarCode"] = Details.BarCode;
				dr["Description"] = Details.Description;
				dr["ProductUnitID"] = Details.ProductUnitID;
				dr["ProductUnitCode"] = Details.ProductUnitCode;
				dr["Quantity"] = Details.Quantity.ToString("###,##0.##");	//8
				dr["Price"] = Details.Price.ToString("###,##0.#0");	//9
				dr["Discount"] = Details.Discount.ToString("###,##0.#0"); //10
				dr["ItemDiscount"] = Details.ItemDiscount.ToString("###,##0.#0");//11
				dr["ItemDiscountType"] = Details.ItemDiscountType.ToString("d");//12
				dr["Amount"] = Details.Amount.ToString("###,##0.#0"); //13
				dr["VAT"] = Details.VAT.ToString("###,##0.#0");  //14
                dr["EVAT"] = Details.EVAT.ToString("###,##0.#0"); //15
                dr["LocalTax"] = Details.LocalTax.ToString("###,##0.#0"); //16
                dr["VariationsMatrixID"] = Details.VariationsMatrixID; //17
                dr["MatrixDescription"] = Details.MatrixDescription; //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["IsCreditChargeExcluded"] = Details.IsCreditChargeExcluded; //35
                dr["OrderSlipPrinter1"] = Details.OrderSlipPrinter1; //36
                dr["OrderSlipPrinter2"] = Details.OrderSlipPrinter2; //37
                dr["OrderSlipPrinter3"] = Details.OrderSlipPrinter3; //38
                dr["OrderSlipPrinter4"] = Details.OrderSlipPrinter4; //39
                dr["OrderSlipPrinter5"] = Details.OrderSlipPrinter5; //40
                dr["OrderSlipPrinted"] = Details.OrderSlipPrinted.ToString(); //41
                dr["PercentageCommision"] = Details.PercentageCommision; //42
                dr["Commision"] = Details.Amount * (Details.PercentageCommision / 100); //43
                dr["RewardPoints"] = Details.RewardPoints; //44
                dr["ItemRemarks"] = Details.ItemRemarks; //45
                dr["PaxNo"] = Details.PaxNo; //46
                dr["ReturnTransactionItemsID"] = Details.ReturnTransactionItemsID; //47
                dr["SupplierID"] = Details.SupplierID; //48
                dr["SupplierCode"] = Details.SupplierCode; //49
                dr["SupplierName"] = Details.SupplierName; //50

                // 21May2015 : do an override for 3 digits wighted
                if (mclsSysConfigDetails.WeightMeasurement.IndexOf(Details.ProductUnitCode.ToUpper()) > -1)
                    dr["Quantity"] = Details.Quantity.ToString("###,##0.###");	//8

				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";
                    dr["RewardPoints"] = "0.00";
				}
				else if (Details.TransactionItemStatus == TransactionItemStatus.Return)
				{
                    dr["Quantity"] = Details.Quantity.ToString("#,##0.##") + " - RETURN";
					if (Details.Amount < 0)
					{
						dr["Amount"] = Convert.ToDecimal(-Details.Amount).ToString("###,##0.#0");
						dr["PercentageCommision"] = -Details.PercentageCommision;
						dr["Commision"] = Convert.ToDecimal(Convert.ToDecimal(dr["Commision"]) * -1).ToString("###,##0.#0");
                        dr["RewardPoints"] = Convert.ToDecimal(Convert.ToDecimal(dr["RewardPoints"]) * -1).ToString("###,##0.#0");
					}

                    // 21May2015 : do an override for 3 digits wighted
                    if (mclsSysConfigDetails.WeightMeasurement.IndexOf(Details.ProductUnitCode.ToUpper()) > -1)
                        dr["Quantity"] = Details.Quantity.ToString("#,##0.###") + " - RETURN";
				}
                else if (Details.TransactionItemStatus == TransactionItemStatus.Demo)
                {
                    dr["Quantity"] = Details.Quantity.ToString("#,##0.##") + " - DEMO";
                    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";
                    dr["RewardPoints"] = "0.00";

                    // 21May2015 : do an override for 3 digits wighted
                    if (mclsSysConfigDetails.WeightMeasurement.IndexOf(Details.ProductUnitCode.ToUpper()) > -1)
                        dr["Quantity"] = Details.Quantity.ToString("#,##0.###") + " - DEMO";
                }

				if (ItemDataTable.Rows.Count + 1 > 8)
					dgStyle.GridColumnStyles["Amount"].Width = 80;
				else
					dgStyle.GridColumnStyles["Amount"].Width = 90;

				return dr;
			}
			catch (Exception ex)
			{
                InsertErrorLogToFile(ex, "ERROR!!! Setting current row item details. TRACE: ");
				return dr;
			}
		}
示例#2
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();
				}
			}
		}