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); } } } }
private void ApplyChangeQuantityPriceAmountDetails(int iRow, Data.SalesTransactionItemDetails Details) { System.Data.DataRow dr = (System.Data.DataRow)ItemDataTable.Rows[iRow]; dr = setCurrentRowItemDetails(dr, Details); getTotal(); }
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(); }
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; } }
/// <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); } }
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(); } } }
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; } }
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); } }
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(); }
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; } }
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); } }