private void LoadProduct() { string strSearchKey = txtProductCode.Text.Trim(); Data.ProductDetails clsSearchKeys = new Data.ProductDetails(); clsSearchKeys.BarCode = strSearchKey; clsSearchKeys.BarCode2 = strSearchKey; clsSearchKeys.BarCode3 = strSearchKey; clsSearchKeys.ProductCode = strSearchKey; clsSearchKeys.ProductSubGroupID = long.Parse(cboProductSubGroup.SelectedItem.Value); clsSearchKeys.ProductGroupID = long.Parse(cboProductGroup.SelectedItem.Value); Data.Products clsProduct = new Data.Products(); cboProductCode.DataTextField = "ProductCode"; cboProductCode.DataValueField = "ProductID"; cboProductCode.DataSource = clsProduct.ListAsDataTable(clsSearchKeys: clsSearchKeys, limit: 100).DefaultView; cboProductCode.DataBind(); clsProduct.CommitAndDispose(); if (cboProductCode.Items.Count == 0) { cboProductCode.Items.Insert(0, new ListItem(Constants.ALL, Constants.ZERO_STRING)); } cboProductCode.SelectedIndex = 0; cboProductCode_SelectedIndexChanged(null, null); }
protected void cmdProductCode_Click(object sender, System.Web.UI.ImageClickEventArgs e) { DataClass clsDataClass = new DataClass(); Data.ProductColumns clsProductColumns = new Data.ProductColumns(); clsProductColumns.ProductID = true; clsProductColumns.ProductCode = true; string strSearchKey = txtProductCode.Text.Trim(); Data.ProductDetails clsSearchKeys = new Data.ProductDetails(); clsSearchKeys.BarCode = strSearchKey; clsSearchKeys.BarCode2 = strSearchKey; clsSearchKeys.BarCode3 = strSearchKey; clsSearchKeys.ProductCode = strSearchKey; Data.Products clsProduct = new Data.Products(); cboProductCode.DataTextField = "ProductCode"; cboProductCode.DataValueField = "ProductID"; cboProductCode.DataSource = clsProduct.ListAsDataTable(clsSearchKeys: clsSearchKeys, limit: 100).DefaultView; cboProductCode.DataBind(); clsProduct.CommitAndDispose(); if (cboProductCode.Items.Count == 0) { cboProductCode.Items.Add(new ListItem("No product", "0")); } cboProductCode.SelectedIndex = 0; cboProductCode_SelectedIndexChanged(null, null); }
private void ShowProductTotalQuantity() { try { if (mclsSysConfigDetails.WillShowProductTotalQuantityInItemSelect) { if (dgItems.CurrentRowIndex < 0) { lblProductCode.Visible = false; lblProductQuantity.Visible = false; } else { ProductModel.ProductID = Int64.Parse(dgItems[dgItems.CurrentRowIndex, 1].ToString()); ProductModel.MatrixID = Int64.Parse(dgItems[dgItems.CurrentRowIndex, 2].ToString()); Data.Products clsProduct = new Data.Products(); Data.ProductDetails clsProductDetails = clsProduct.Details(ProductModel.ProductID, ProductModel.MatrixID); lblProductCode.Text = clsProductDetails.ProductCode + " Qty:"; lblProductQuantity.Text = clsProductDetails.ConvertedQuantity; clsProduct.CommitAndDispose(); lblProductCode.Visible = true; lblProductQuantity.Visible = true; } } else { lblProductCode.Visible = false; lblProductQuantity.Visible = false; } } catch { } }
private void LoadProduct() { string strSearchKey = txtProductCode.Text.Trim(); Data.ProductDetails clsSearchKeys = new Data.ProductDetails(); clsSearchKeys.BarCode = strSearchKey; clsSearchKeys.BarCode2 = strSearchKey; clsSearchKeys.BarCode3 = strSearchKey; clsSearchKeys.ProductCode = strSearchKey; Data.Products clsProduct = new Data.Products(); cboProductCode.DataTextField = "ProductCode"; cboProductCode.DataValueField = "ProductID"; cboProductCode.DataSource = clsProduct.ListAsDataTable(clsSearchKeys: clsSearchKeys, limit: 100); cboProductCode.DataBind(); clsProduct.CommitAndDispose(); if (cboProductCode.Items.Count == 0) { cboProductCode.Items.Insert(0, new ListItem(Constants.PLEASE_SELECT, Constants.ZERO_STRING)); } cboProductCode.SelectedIndex = 0; }
private void ReadBarCode() { try { if (string.IsNullOrEmpty(txtBarCode.Text)) { return; } Data.Products clsProducts = new Data.Products(); Data.ProductDetails clsProductDetails = clsProducts.Details(txtBarCode.Text); clsProducts.CommitAndDispose(); if (clsProductDetails.ProductID == 0) { lblProductDesc.Text = "Item not found in db"; lblProductDesc.Tag = "Item not found in db"; txtUnitCode.Text = "PCS"; } else { if (clsProductDetails.ProductCode != clsProductDetails.ProductDesc) { lblProductDesc.Text = clsProductDetails.ProductCode + ": " + clsProductDetails.ProductDesc; } else { lblProductDesc.Text = clsProductDetails.ProductDesc; } lblProductDesc.Tag = clsProductDetails.ProductCode; txtUnitCode.Text = clsProductDetails.BaseUnitCode; } } catch { } }
private void PriceInquiryWnd_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) { switch (e.KeyData) { case Keys.Escape: dialog = DialogResult.Cancel; this.Hide(); break; case Keys.Enter: if (txtBarCode.Text.Trim() != string.Empty) { ClearProduct(); Data.Products clsProduct = new Data.Products(); Data.ProductDetails clsProductDetails = clsProduct.Details(TerminalDetails.BranchID, txtBarCode.Text.Trim()); if (clsProductDetails.ProductID == 0) { string strContactCardNo = txtBarCode.Text.Trim(); Data.Contacts clsContact = new Data.Contacts(clsProduct.Connection, clsProduct.Transaction); Data.ContactDetails clsContactDetails = clsContact.DetailsByRewardCardNo(strContactCardNo); if (clsContactDetails.ContactID == 0) { clsContactDetails = clsContact.DetailsByCreditCardNo(strContactCardNo); if (clsContactDetails.ContactID == 0) { strContactCardNo = strContactCardNo.Remove(strContactCardNo.Length - 1); clsContactDetails = clsContact.DetailsByRewardCardNo(strContactCardNo); if (clsContactDetails.ContactID == 0) { clsContactDetails = clsContact.DetailsByCreditCardNo(strContactCardNo); if (clsContactDetails.ContactID == 0) { ClearProduct(); } else { decimal decAvailableCreditLimit = clsContactDetails.CreditLimit - clsContactDetails.Credit; lblProductDescription.Text = clsContactDetails.ContactName + " - " + clsContactDetails.CreditDetails.CreditCardNo; lblPrice.Text = decAvailableCreditLimit.ToString("#,##0.#0"); lblPriceLabel.Text = "AVAILABLE CREDITS:"; if (clsContactDetails.CreditDetails.CreditCardStatus == CreditCardStatus.Expired || clsContactDetails.CreditDetails.CreditCardStatus == CreditCardStatus.Lost) { lblProductDescription.Text += "(" + clsContactDetails.CreditDetails.CreditCardStatus.ToString("G").ToLower() + ")"; } else { lblProductDescription.Text += "(active)"; } } } else { lblProductDescription.Text = clsContactDetails.ContactName + " - " + clsContactDetails.RewardDetails.RewardCardNo; lblPrice.Text = clsContactDetails.RewardDetails.RewardPoints.ToString("#,##0.#0"); lblPriceLabel.Text = "AVAILABLE POINTS:"; if (clsContactDetails.RewardDetails.RewardCardStatus == RewardCardStatus.Expired || clsContactDetails.RewardDetails.RewardCardStatus == RewardCardStatus.Lost) { lblProductDescription.Text += "(" + clsContactDetails.RewardDetails.RewardCardStatus.ToString("G").ToLower() + ")"; } else { lblProductDescription.Text += "(active)"; } } } else { decimal decAvailableCreditLimit = clsContactDetails.CreditLimit - clsContactDetails.Credit; lblProductDescription.Text = clsContactDetails.ContactName + " - " + clsContactDetails.CreditDetails.CreditCardNo; lblPrice.Text = decAvailableCreditLimit.ToString("#,##0.#0"); lblPriceLabel.Text = "AVAILABLE CREDITS:"; if (clsContactDetails.CreditDetails.CreditCardStatus == CreditCardStatus.Expired || clsContactDetails.CreditDetails.CreditCardStatus == CreditCardStatus.Lost) { lblProductDescription.Text += "(" + clsContactDetails.CreditDetails.CreditCardStatus.ToString("G").ToLower() + ")"; } else { lblProductDescription.Text += "(active)"; } } } else { lblProductDescription.Text = clsContactDetails.ContactName + " - " + clsContactDetails.RewardDetails.RewardCardNo; lblPrice.Text = clsContactDetails.RewardDetails.RewardPoints.ToString("#,##0.#0"); lblPriceLabel.Text = "AVAILABLE POINTS:"; if (clsContactDetails.RewardDetails.RewardCardStatus == RewardCardStatus.Expired || clsContactDetails.RewardDetails.RewardCardStatus == RewardCardStatus.Lost) { lblProductDescription.Text += "(" + clsContactDetails.RewardDetails.RewardCardStatus.ToString("G").ToLower() + ")"; } else { lblProductDescription.Text += "(active)"; } } } else { lblProductDescription.Text = clsProductDetails.ProductDesc; lblPrice.Text = clsProductDetails.Price.ToString("#,##0.#0"); lblPriceLabel.Text = "PRICE:"; } clsProduct.CommitAndDispose(); txtBarCode.Text = ""; } txtBarCode.Focus(); txtBarCode.SelectAll(); break; } }
private void LoadProduct() { string strSearchKey = txtProductCode.Text.Trim(); Data.ProductDetails clsSearchKeys = new Data.ProductDetails(); clsSearchKeys.BarCode = strSearchKey; clsSearchKeys.BarCode2 = strSearchKey; clsSearchKeys.BarCode3 = strSearchKey; clsSearchKeys.ProductCode = strSearchKey; Data.Products clsProduct = new Data.Products(); cboProductCode.DataTextField = "ProductCode"; cboProductCode.DataValueField = "ProductID"; cboProductCode.DataSource = clsProduct.ListAsDataTable(clsSearchKeys: clsSearchKeys, limit: 100); cboProductCode.DataBind(); clsProduct.CommitAndDispose(); if (cboProductCode.Items.Count == 0) cboProductCode.Items.Insert(0, new ListItem(Constants.PLEASE_SELECT, Constants.ZERO_STRING)); cboProductCode.SelectedIndex = 0; }
private void LoadList() { string SortField = "ProductDesc"; if (Request.QueryString["sortfield"]!=null) { SortField = Common.Decrypt(Request.QueryString["sortfield"].ToString(), Session.SessionID); } SortOption sortoption = SortOption.Ascending; if (Request.QueryString["sortoption"]!=null) { sortoption = (SortOption) Enum.Parse(typeof(SortOption), Common.Decrypt(Request.QueryString["sortoption"], Session.SessionID), true); } ProductListFilterType clsProductListFilterType = ProductListFilterType.ShowActiveOnly; if (rdoShowInactiveOnly.Checked == true) clsProductListFilterType = ProductListFilterType.ShowInactiveOnly; if (rdoShowActiveOnly.Checked == true) clsProductListFilterType = ProductListFilterType.ShowActiveOnly; if (rdoShowAll.Checked == true) clsProductListFilterType = ProductListFilterType.ShowActiveAndInactive; int intLimit = 0; try { intLimit = int.Parse(txtLimit.Text); } catch { } string SearchKey = string.Empty; if (Request.QueryString["Search"] != null) { SearchKey = Server.UrlDecode(Common.Decrypt((string)Request.QueryString["search"], Session.SessionID)); } else if (Session["Search"] != null) { SearchKey = Server.UrlDecode(Common.Decrypt(Session["Search"].ToString(), Session.SessionID)); } try { Session.Remove("Search"); } catch { } if (SearchKey == null) { SearchKey = string.Empty; } else if (SearchKey != string.Empty) { Session.Add("Search", Common.Encrypt(SearchKey, Session.SessionID)); } Data.ProductDetails clsSearchKeys = new Data.ProductDetails(); clsSearchKeys.BarCode = SearchKey; clsSearchKeys.BarCode2 = SearchKey; clsSearchKeys.BarCode3 = SearchKey; clsSearchKeys.ProductCode = SearchKey; ProductAddOnFilters clsProductAddOnFilters = new ProductAddOnFilters(); clsProductAddOnFilters.BarcodeFrom = txtBarcodeFrom.Text; clsProductAddOnFilters.BarcodeTo = txtBarcodeTo.Text; clsProductAddOnFilters.ProductCodeFrom = txtProductCodeFrom.Text; clsProductAddOnFilters.ProductCodeTo = txtProductCodeTo.Text; clsProductAddOnFilters.ProductSubGroupNameFrom = txtProductSubGroupNameFrom.Text; clsProductAddOnFilters.ProductSubGroupNameTo = txtProductSubGroupNameTo.Text; clsProductAddOnFilters.ProductGroupNameFrom = txtProductGroupnameFrom.Text; clsProductAddOnFilters.ProductGroupNameTo = txtProductGroupNameTo.Text; clsProductAddOnFilters.SupplierNameFrom = txtSupplierNameFrom.Text; clsProductAddOnFilters.SupplierNameTo = txtSupplierNameTo.Text; Products clsProduct = new Products(); System.Data.DataTable dt = clsProduct.ListAsDataTable(clsSearchKeys: clsSearchKeys, ProductAddOnFilters: clsProductAddOnFilters, clsProductListFilterType: clsProductListFilterType, limit: 100, SortField: SortField, SortOrder: SortOption.Ascending); clsProduct.CommitAndDispose(); PageData.DataSource = dt.DefaultView; int iPageSize = Convert.ToInt16(Session["PageSize"]) ; PageData.AllowPaging = true; PageData.PageSize = iPageSize; try { PageData.CurrentPageIndex = Convert.ToInt16(cboCurrentPage.SelectedItem.Value) - 1; lstItem.DataSource = PageData; lstItem.DataBind(); } catch { PageData.CurrentPageIndex = 1; lstItem.DataSource = PageData; lstItem.DataBind(); } cboCurrentPage.Items.Clear(); for (int i=0; i < PageData.PageCount;i++) { int iValue = i + 1; cboCurrentPage.Items.Add(new ListItem(iValue.ToString(),iValue.ToString())); if (PageData.CurrentPageIndex == i) { cboCurrentPage.Items[i].Selected = true;} else { cboCurrentPage.Items[i].Selected = false;} } lblDataCount.Text = " of " + " " + PageData.PageCount; }
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 void LoadProduct() { string strSearchKey = txtProductCode.Text.Trim(); Data.ProductDetails clsSearchKeys = new Data.ProductDetails(); clsSearchKeys.BarCode = strSearchKey; clsSearchKeys.BarCode2 = strSearchKey; clsSearchKeys.BarCode3 = strSearchKey; clsSearchKeys.ProductCode = strSearchKey; clsSearchKeys.ProductSubGroupID = long.Parse(cboProductSubGroup.SelectedItem.Value); clsSearchKeys.ProductGroupID = long.Parse(cboProductGroup.SelectedItem.Value); Data.Products clsProduct = new Data.Products(); cboProductCode.DataTextField = "ProductCode"; cboProductCode.DataValueField = "ProductID"; cboProductCode.DataSource = clsProduct.ListAsDataTable(clsSearchKeys: clsSearchKeys, limit: 100).DefaultView; cboProductCode.DataBind(); clsProduct.CommitAndDispose(); if (cboProductCode.Items.Count == 0) cboProductCode.Items.Insert(0, new ListItem(Constants.ALL, Constants.ZERO_STRING)); cboProductCode.SelectedIndex = 0; cboProductCode_SelectedIndexChanged(null, null); }
private void LoadList() { string SortField = "ProductDesc"; if (Request.QueryString["sortfield"] != null) { SortField = Common.Decrypt(Request.QueryString["sortfield"].ToString(), Session.SessionID); } SortOption sortoption = SortOption.Ascending; if (Request.QueryString["sortoption"] != null) { sortoption = (SortOption)Enum.Parse(typeof(SortOption), Common.Decrypt(Request.QueryString["sortoption"], Session.SessionID), true); } ProductListFilterType clsProductListFilterType = ProductListFilterType.ShowActiveOnly; if (rdoShowInactiveOnly.Checked == true) { clsProductListFilterType = ProductListFilterType.ShowInactiveOnly; } if (rdoShowActiveOnly.Checked == true) { clsProductListFilterType = ProductListFilterType.ShowActiveOnly; } if (rdoShowAll.Checked == true) { clsProductListFilterType = ProductListFilterType.ShowActiveAndInactive; } int intLimit = 0; try { intLimit = int.Parse(txtLimit.Text); } catch { } string SearchKey = string.Empty; if (Request.QueryString["Search"] != null) { SearchKey = Server.UrlDecode(Common.Decrypt((string)Request.QueryString["search"], Session.SessionID)); } else if (Session["Search"] != null) { SearchKey = Server.UrlDecode(Common.Decrypt(Session["Search"].ToString(), Session.SessionID)); } try { Session.Remove("Search"); } catch { } if (SearchKey == null) { SearchKey = string.Empty; } else if (SearchKey != string.Empty) { Session.Add("Search", Common.Encrypt(SearchKey, Session.SessionID)); } Data.ProductDetails clsSearchKeys = new Data.ProductDetails(); clsSearchKeys.BarCode = SearchKey; clsSearchKeys.BarCode2 = SearchKey; clsSearchKeys.BarCode3 = SearchKey; clsSearchKeys.ProductCode = SearchKey; ProductAddOnFilters clsProductAddOnFilters = new ProductAddOnFilters(); clsProductAddOnFilters.BarcodeFrom = txtBarcodeFrom.Text; clsProductAddOnFilters.BarcodeTo = txtBarcodeTo.Text; clsProductAddOnFilters.ProductCodeFrom = txtProductCodeFrom.Text; clsProductAddOnFilters.ProductCodeTo = txtProductCodeTo.Text; clsProductAddOnFilters.ProductSubGroupNameFrom = txtProductSubGroupNameFrom.Text; clsProductAddOnFilters.ProductSubGroupNameTo = txtProductSubGroupNameTo.Text; clsProductAddOnFilters.ProductGroupNameFrom = txtProductGroupnameFrom.Text; clsProductAddOnFilters.ProductGroupNameTo = txtProductGroupNameTo.Text; clsProductAddOnFilters.SupplierNameFrom = txtSupplierNameFrom.Text; clsProductAddOnFilters.SupplierNameTo = txtSupplierNameTo.Text; Products clsProduct = new Products(); System.Data.DataTable dt = clsProduct.ListAsDataTable(clsSearchKeys: clsSearchKeys, ProductAddOnFilters: clsProductAddOnFilters, clsProductListFilterType: clsProductListFilterType, limit: 100, SortField: SortField, SortOrder: SortOption.Ascending); clsProduct.CommitAndDispose(); PageData.DataSource = dt.DefaultView; int iPageSize = Convert.ToInt16(Session["PageSize"]); PageData.AllowPaging = true; PageData.PageSize = iPageSize; try { PageData.CurrentPageIndex = Convert.ToInt16(cboCurrentPage.SelectedItem.Value) - 1; lstItem.DataSource = PageData; lstItem.DataBind(); } catch { PageData.CurrentPageIndex = 1; lstItem.DataSource = PageData; lstItem.DataBind(); } cboCurrentPage.Items.Clear(); for (int i = 0; i < PageData.PageCount; i++) { int iValue = i + 1; cboCurrentPage.Items.Add(new ListItem(iValue.ToString(), iValue.ToString())); if (PageData.CurrentPageIndex == i) { cboCurrentPage.Items[i].Selected = true; } else { cboCurrentPage.Items[i].Selected = false; } } lblDataCount.Text = " of " + " " + PageData.PageCount; }
static void Main(string[] args) { try { WriteProcessToMonitor("Starting RetailPlus monitoring tool..."); // check if it's already running if (System.Diagnostics.Process.GetProcessesByName(System.IO.Path.GetFileNameWithoutExtension(System.Reflection.Assembly.GetEntryAssembly().Location)).Count() > 1) { WriteProcessToMonitor(" already running. not ok"); return; } WriteProcessToMonitor(" ok"); Data.Database clsDatabase = new Data.Database(); back: WriteProcessToMonitor("Checking connections to server."); if (IPAddress.IsOpen(AceSoft.RetailPlus.DBConnection.ServerIP(), DBConnection.DBPort()) == false) { WriteProcessToMonitor(" cannot connect to server please check."); goto exit; } WriteProcessToMonitor(" ok"); WriteProcessToMonitor("Checking connections to database."); clsDatabase.GetConnection(username: "******", password: "******"); try { bool boIsDBAlive = clsDatabase.IsAlive(); WriteProcessToMonitor(" connected to '" + clsDatabase.Connection.ConnectionString.Split(';')[0].ToString().Replace("Data Source=", "") + "'"); } catch (Exception ex) { WriteProcessToMonitor(" ERROR connecting to database. Exception: " + ex.ToString()); } #region Timed-Out Process WriteProcessToMonitor("Checking timed-out process."); System.Data.DataTable dtProcessList = clsDatabase.getProcessList(); foreach (DataRow dr in dtProcessList.Rows) { int iID = int.Parse(dr["ID"].ToString()); string strHost = dr["Host"].ToString(); string strDB = dr["db"].ToString(); int iTime = int.Parse(dr["Time"].ToString()); string strInfo = dr["Info"].ToString(); if (strInfo.ToUpper() != "SHOW PROCESSLIST" || strDB == "pos") { WriteProcessToMonitor(" id:" + iID.ToString() + " host:" + strHost + " Time:" + iTime.ToString() + " Info:" + strInfo); if (iTime > Constants.C_DEFAULT_MYSQL_PROCESS_TIMEOUT && strDB == "pos") { WriteProcessToMonitor(" status not ok... killing process id: " + iID.ToString()); clsDatabase.killProcess(iID); WriteProcessToMonitor(" done."); } else if (iTime > 16 && string.IsNullOrEmpty(strInfo)) { WriteProcessToMonitor(" status idle... killing process id: " + iID.ToString()); clsDatabase.killProcess(iID); WriteProcessToMonitor(" done."); } else if (strInfo.Contains("INSERT INTO tblTransactions") && iTime >= 8) { WriteProcessToMonitor(" status not ok... flushing table tblTransactions...process id: " + iID.ToString()); clsDatabase.FlushTable("tblTransactions"); WriteProcessToMonitor(" done."); } else if (strInfo.Contains("UPDATE tblTerminalReport") && iTime >= 8) { WriteProcessToMonitor(" status not ok... flushing table tblTerminalReport...process id: " + iID.ToString()); clsDatabase.FlushTable("tblTerminalReport"); WriteProcessToMonitor(" done."); } else { WriteProcessToMonitor(" status ok"); } } } clsDatabase.CommitAndDispose(); // audit //clsDatabase = new Data.Database(clsDatabase.Connection, clsDatabase.Transaction); clsDatabase.GetConnection(username: "******", password: "******"); try { bool boIsDBAlive = clsDatabase.IsAlive(); WriteProcessToMonitor(" connected to '" + clsDatabase.Connection.ConnectionString.Split(';')[0].ToString().Replace("Data Source=", "") + "'"); } catch (Exception ex) { WriteProcessToMonitor(" ERROR connecting to database. Exception: " + ex.ToString()); } WriteProcessToMonitor("Checking Audit timed-out process."); dtProcessList = clsDatabase.getProcessList(); foreach (DataRow dr in dtProcessList.Rows) { int iID = int.Parse(dr["ID"].ToString()); string strHost = dr["Host"].ToString(); string strDB = dr["db"].ToString(); int iTime = int.Parse(dr["Time"].ToString()); string strInfo = dr["Info"].ToString(); if (strInfo.ToUpper() != "SHOW PROCESSLIST" || strDB == "pos") { WriteProcessToMonitor(" audit id:" + iID.ToString() + " host:" + strHost + " Time:" + iTime.ToString() + " Info:" + strInfo); if (iTime > Constants.C_DEFAULT_MYSQL_PROCESS_TIMEOUT && strDB == "pos") { WriteProcessToMonitor(" status not ok... killing process id: " + iID.ToString()); clsDatabase.killProcess(iID); WriteProcessToMonitor(" done."); } else { WriteProcessToMonitor(" status ok"); } } } clsDatabase.CommitAndDispose(); WriteProcessToMonitor(" done checking..."); #endregion string strSyncFunction = ""; try { strSyncFunction = System.Configuration.ConfigurationManager.AppSettings["SyncFunction"].ToString(); } catch { } if (strSyncFunction.ToLower().Trim() == "export") { #region Export Products //clsDatabase = new Data.Database(clsDatabase.Connection, clsDatabase.Transaction); clsDatabase.GetConnection(username: "******", password: "******"); Data.SysConfig clsSysConfig = new Data.SysConfig(clsDatabase.Connection, clsDatabase.Transaction); DateTime dteLastSyncDateTime = clsSysConfig.get_ProdLastSyncDateTime(); DateTime dteLastSyncDateTimeTo = dteLastSyncDateTime.AddMinutes(clsSysConfig.get_ProdSyncInterval()); if (dteLastSyncDateTimeTo <= DateTime.Now) { Data.DBSync clsDBSync = new Data.DBSync(clsDatabase.Connection, clsDatabase.Transaction); System.Data.DataTable stSyncItems = clsDBSync.ListAsDataTable("tblProducts", dteLastSyncDateTime, dteLastSyncDateTimeTo); if (stSyncItems.Rows.Count > 0) { string xmlFileName = @"C:\RetailPlus\RetailPlus\RetailPlus\temp\uploaded\prodsync\prod_" + dteLastSyncDateTime.ToString("yyyyMMddHHmmss") + ".xml"; if (!System.IO.File.Exists(xmlFileName)) { XmlTextWriter writer = new XmlTextWriter(xmlFileName, System.Text.Encoding.UTF8); writer.Formatting = Formatting.Indented; writer.WriteStartDocument(); writer.WriteComment("This file represents the updated products."); writer.WriteStartElement("Header"); writer.WriteAttributeString("TableName", stSyncItems.TableName); writer.WriteAttributeString("LastSyncDateTime", dteLastSyncDateTime.ToString("yyyy-MM-dd HH:mm:ss")); writer.WriteAttributeString("LastSyncDateTimeTo", dteLastSyncDateTimeTo.ToString("yyyy-MM-dd HH:mm:ss")); foreach (DataRow dr in stSyncItems.Rows) { writer.WriteStartElement("Details"); foreach (DataColumn dc in dr.Table.Columns) { if (dc.DataType == System.Type.GetType("System.DateTime")) writer.WriteAttributeString(dc.ColumnName, DateTime.Parse(dr[dc.ColumnName].ToString()).ToString("yyyy-MM-dd HH:mm:ss")); else writer.WriteAttributeString(dc.ColumnName, dr[dc.ColumnName].ToString()); } writer.WriteEndElement(); } writer.WriteEndElement(); //Write the XML to file and close the writer writer.Flush(); writer.Close(); } } clsSysConfig = new Data.SysConfig(clsDatabase.Connection, clsDatabase.Transaction); clsSysConfig.Save(new Data.SysConfigDetails() { ConfigName = "ProdLastSyncDateTime", ConfigValue = dteLastSyncDateTimeTo.ToString("yyyy-MM-dd HH:mm:ss"), Category = "Sync" }); } clsDatabase.CommitAndDispose(); #endregion } else if (strSyncFunction.ToLower().Trim() == "import") { #region Import Products XmlTextReader xmlReader = new XmlTextReader(@"C:\RetailPlus\RetailPlus\RetailPlus\temp\uploaded\prodsync\prod_20150629183000.xml"); xmlReader.WhitespaceHandling = WhitespaceHandling.None; ////clsDatabase = new Data.Database(clsDatabase.Connection, clsDatabase.Transaction); clsDatabase.GetConnection(DBName: "poseamirror", username: "******", password: "******"); clsDatabase.SetForeignKey(false); Data.SysConfig clsSysConfig = new Data.SysConfig(clsDatabase.Connection, clsDatabase.Transaction); DateTime dteLastSyncDateTime = clsSysConfig.get_ProdLastSyncDateTime(); DateTime dteLastSyncDateTimeTo = dteLastSyncDateTime.AddMinutes(clsSysConfig.get_ProdSyncInterval()); Data.Products clsProducts = new Data.Products(clsDatabase.Connection, clsDatabase.Transaction); Data.ProductDetails clsProductDetails = new Data.ProductDetails(); string strTableName = ""; DateTime dteXmlLastSyncDateTime = Constants.C_DATE_MIN_VALUE; DateTime dteXmlLastSyncDateTimeTo = Constants.C_DATE_MIN_VALUE; while (xmlReader.Read()) { switch (xmlReader.NodeType) { case XmlNodeType.Element: if (xmlReader.Name == "Header") { strTableName = xmlReader.GetAttribute("TableName").ToString(); dteXmlLastSyncDateTime = DateTime.TryParse(xmlReader.GetAttribute("LastSyncDateTime").ToString(), out dteXmlLastSyncDateTime) ? dteXmlLastSyncDateTime : Constants.C_DATE_MIN_VALUE; dteXmlLastSyncDateTimeTo = DateTime.TryParse(xmlReader.GetAttribute("LastSyncDateTimeTo").ToString(), out dteXmlLastSyncDateTimeTo) ? dteXmlLastSyncDateTimeTo : Constants.C_DATE_MIN_VALUE; if (dteLastSyncDateTime >= dteXmlLastSyncDateTime) break; } else if (strTableName == "tblProducts" && xmlReader.Name == "Details") { clsProductDetails = Data.DBSync.setSyncProductDetails(xmlReader); clsProducts.Save(clsProductDetails); } break; } } if (dteLastSyncDateTime < dteXmlLastSyncDateTime) { clsSysConfig = new Data.SysConfig(clsDatabase.Connection, clsDatabase.Transaction); clsSysConfig.Save(new Data.SysConfigDetails() { ConfigName = "ProdLastSyncDateTime", ConfigValue = dteXmlLastSyncDateTimeTo.ToString("yyyy-MM-dd HH:mm:ss"), Category = "Sync" }); } clsDatabase.SetForeignKey(true); clsDatabase.CommitAndDispose(); #endregion } WriteProcessToMonitor("Waiting for next process..."); System.Threading.Thread.Sleep(20000); goto back; exit: WriteProcessToMonitor("Sytem terminated."); } catch (Exception ex) { WriteProcessToMonitor("PLEASE CALL RETAILPLUS IMMEDIATELY... error:" + ex.ToString()); } }
protected void cmdProductCode_Click(object sender, System.Web.UI.ImageClickEventArgs e) { DataClass clsDataClass = new DataClass(); Data.ProductColumns clsProductColumns = new Data.ProductColumns(); clsProductColumns.ProductID = true; clsProductColumns.ProductCode = true; string strSearchKey = txtProductCode.Text.Trim(); Data.ProductDetails clsSearchKeys = new Data.ProductDetails(); clsSearchKeys.BarCode = strSearchKey; clsSearchKeys.BarCode2 = strSearchKey; clsSearchKeys.BarCode3 = strSearchKey; clsSearchKeys.ProductCode = strSearchKey; Data.Products clsProduct = new Data.Products(); cboProductCode.DataTextField = "ProductCode"; cboProductCode.DataValueField = "ProductID"; cboProductCode.DataSource = clsProduct.ListAsDataTable(clsSearchKeys: clsSearchKeys, limit: 100).DefaultView; cboProductCode.DataBind(); clsProduct.CommitAndDispose(); if (cboProductCode.Items.Count == 0) cboProductCode.Items.Add(new ListItem("No product", "0")); cboProductCode.SelectedIndex = 0; cboProductCode_SelectedIndexChanged(null, null); }
static void Main(string[] args) { try { WriteProcessToMonitor("Starting RetailPlus monitoring tool..."); // check if it's already running if (System.Diagnostics.Process.GetProcessesByName(System.IO.Path.GetFileNameWithoutExtension(System.Reflection.Assembly.GetEntryAssembly().Location)).Count() > 1) { WriteProcessToMonitor(" already running. not ok"); return; } WriteProcessToMonitor(" ok"); Data.Database clsDatabase = new Data.Database(); back: WriteProcessToMonitor("Checking connections to server."); if (IPAddress.IsOpen(AceSoft.RetailPlus.DBConnection.ServerIP(), DBConnection.DBPort()) == false) { WriteProcessToMonitor(" cannot connect to server please check."); goto exit; } WriteProcessToMonitor(" ok"); WriteProcessToMonitor("Checking connections to database."); clsDatabase.GetConnection(username: "******", password: "******"); try { bool boIsDBAlive = clsDatabase.IsAlive(); WriteProcessToMonitor(" connected to '" + clsDatabase.Connection.ConnectionString.Split(';')[0].ToString().Replace("Data Source=", "") + "'"); } catch (Exception ex) { WriteProcessToMonitor(" ERROR connecting to database. Exception: " + ex.ToString()); } #region Timed-Out Process WriteProcessToMonitor("Checking timed-out process."); System.Data.DataTable dtProcessList = clsDatabase.getProcessList(); foreach (DataRow dr in dtProcessList.Rows) { int iID = int.Parse(dr["ID"].ToString()); string strHost = dr["Host"].ToString(); string strDB = dr["db"].ToString(); int iTime = int.Parse(dr["Time"].ToString()); string strInfo = dr["Info"].ToString(); if (strInfo.ToUpper() != "SHOW PROCESSLIST" || strDB == "pos") { WriteProcessToMonitor(" id:" + iID.ToString() + " host:" + strHost + " Time:" + iTime.ToString() + " Info:" + strInfo); if (iTime > Constants.C_DEFAULT_MYSQL_PROCESS_TIMEOUT && strDB == "pos") { WriteProcessToMonitor(" status not ok... killing process id: " + iID.ToString()); clsDatabase.killProcess(iID); WriteProcessToMonitor(" done."); } else if (iTime > 16 && string.IsNullOrEmpty(strInfo)) { WriteProcessToMonitor(" status idle... killing process id: " + iID.ToString()); clsDatabase.killProcess(iID); WriteProcessToMonitor(" done."); } else if (strInfo.Contains("INSERT INTO tblTransactions") && iTime >= 8) { WriteProcessToMonitor(" status not ok... flushing table tblTransactions...process id: " + iID.ToString()); clsDatabase.FlushTable("tblTransactions"); WriteProcessToMonitor(" done."); } else if (strInfo.Contains("UPDATE tblTerminalReport") && iTime >= 8) { WriteProcessToMonitor(" status not ok... flushing table tblTerminalReport...process id: " + iID.ToString()); clsDatabase.FlushTable("tblTerminalReport"); WriteProcessToMonitor(" done."); } else { WriteProcessToMonitor(" status ok"); } } } clsDatabase.CommitAndDispose(); // audit //clsDatabase = new Data.Database(clsDatabase.Connection, clsDatabase.Transaction); clsDatabase.GetConnection(username: "******", password: "******"); try { bool boIsDBAlive = clsDatabase.IsAlive(); WriteProcessToMonitor(" connected to '" + clsDatabase.Connection.ConnectionString.Split(';')[0].ToString().Replace("Data Source=", "") + "'"); } catch (Exception ex) { WriteProcessToMonitor(" ERROR connecting to database. Exception: " + ex.ToString()); } WriteProcessToMonitor("Checking Audit timed-out process."); dtProcessList = clsDatabase.getProcessList(); foreach (DataRow dr in dtProcessList.Rows) { int iID = int.Parse(dr["ID"].ToString()); string strHost = dr["Host"].ToString(); string strDB = dr["db"].ToString(); int iTime = int.Parse(dr["Time"].ToString()); string strInfo = dr["Info"].ToString(); if (strInfo.ToUpper() != "SHOW PROCESSLIST" || strDB == "pos") { WriteProcessToMonitor(" audit id:" + iID.ToString() + " host:" + strHost + " Time:" + iTime.ToString() + " Info:" + strInfo); if (iTime > Constants.C_DEFAULT_MYSQL_PROCESS_TIMEOUT && strDB == "pos") { WriteProcessToMonitor(" status not ok... killing process id: " + iID.ToString()); clsDatabase.killProcess(iID); WriteProcessToMonitor(" done."); } else { WriteProcessToMonitor(" status ok"); } } } clsDatabase.CommitAndDispose(); WriteProcessToMonitor(" done checking..."); #endregion string strSyncFunction = ""; try { strSyncFunction = System.Configuration.ConfigurationManager.AppSettings["SyncFunction"].ToString(); } catch { } if (strSyncFunction.ToLower().Trim() == "export") { #region Export Products //clsDatabase = new Data.Database(clsDatabase.Connection, clsDatabase.Transaction); clsDatabase.GetConnection(username: "******", password: "******"); Data.SysConfig clsSysConfig = new Data.SysConfig(clsDatabase.Connection, clsDatabase.Transaction); DateTime dteLastSyncDateTime = clsSysConfig.get_ProdLastSyncDateTime(); DateTime dteLastSyncDateTimeTo = dteLastSyncDateTime.AddMinutes(clsSysConfig.get_ProdSyncInterval()); if (dteLastSyncDateTimeTo <= DateTime.Now) { Data.DBSync clsDBSync = new Data.DBSync(clsDatabase.Connection, clsDatabase.Transaction); System.Data.DataTable stSyncItems = clsDBSync.ListAsDataTable("tblProducts", dteLastSyncDateTime, dteLastSyncDateTimeTo); if (stSyncItems.Rows.Count > 0) { string xmlFileName = @"C:\RetailPlus\RetailPlus\RetailPlus\temp\uploaded\prodsync\prod_" + dteLastSyncDateTime.ToString("yyyyMMddHHmmss") + ".xml"; if (!System.IO.File.Exists(xmlFileName)) { XmlTextWriter writer = new XmlTextWriter(xmlFileName, System.Text.Encoding.UTF8); writer.Formatting = Formatting.Indented; writer.WriteStartDocument(); writer.WriteComment("This file represents the updated products."); writer.WriteStartElement("Header"); writer.WriteAttributeString("TableName", stSyncItems.TableName); writer.WriteAttributeString("LastSyncDateTime", dteLastSyncDateTime.ToString("yyyy-MM-dd HH:mm:ss")); writer.WriteAttributeString("LastSyncDateTimeTo", dteLastSyncDateTimeTo.ToString("yyyy-MM-dd HH:mm:ss")); foreach (DataRow dr in stSyncItems.Rows) { writer.WriteStartElement("Details"); foreach (DataColumn dc in dr.Table.Columns) { if (dc.DataType == System.Type.GetType("System.DateTime")) { writer.WriteAttributeString(dc.ColumnName, DateTime.Parse(dr[dc.ColumnName].ToString()).ToString("yyyy-MM-dd HH:mm:ss")); } else { writer.WriteAttributeString(dc.ColumnName, dr[dc.ColumnName].ToString()); } } writer.WriteEndElement(); } writer.WriteEndElement(); //Write the XML to file and close the writer writer.Flush(); writer.Close(); } } clsSysConfig = new Data.SysConfig(clsDatabase.Connection, clsDatabase.Transaction); clsSysConfig.Save(new Data.SysConfigDetails() { ConfigName = "ProdLastSyncDateTime", ConfigValue = dteLastSyncDateTimeTo.ToString("yyyy-MM-dd HH:mm:ss"), Category = "Sync" }); } clsDatabase.CommitAndDispose(); #endregion } else if (strSyncFunction.ToLower().Trim() == "import") { #region Import Products XmlTextReader xmlReader = new XmlTextReader(@"C:\RetailPlus\RetailPlus\RetailPlus\temp\uploaded\prodsync\prod_20150629183000.xml"); xmlReader.WhitespaceHandling = WhitespaceHandling.None; ////clsDatabase = new Data.Database(clsDatabase.Connection, clsDatabase.Transaction); clsDatabase.GetConnection(DBName: "poseamirror", username: "******", password: "******"); clsDatabase.SetForeignKey(false); Data.SysConfig clsSysConfig = new Data.SysConfig(clsDatabase.Connection, clsDatabase.Transaction); DateTime dteLastSyncDateTime = clsSysConfig.get_ProdLastSyncDateTime(); DateTime dteLastSyncDateTimeTo = dteLastSyncDateTime.AddMinutes(clsSysConfig.get_ProdSyncInterval()); Data.Products clsProducts = new Data.Products(clsDatabase.Connection, clsDatabase.Transaction); Data.ProductDetails clsProductDetails = new Data.ProductDetails(); string strTableName = ""; DateTime dteXmlLastSyncDateTime = Constants.C_DATE_MIN_VALUE; DateTime dteXmlLastSyncDateTimeTo = Constants.C_DATE_MIN_VALUE; while (xmlReader.Read()) { switch (xmlReader.NodeType) { case XmlNodeType.Element: if (xmlReader.Name == "Header") { strTableName = xmlReader.GetAttribute("TableName").ToString(); dteXmlLastSyncDateTime = DateTime.TryParse(xmlReader.GetAttribute("LastSyncDateTime").ToString(), out dteXmlLastSyncDateTime) ? dteXmlLastSyncDateTime : Constants.C_DATE_MIN_VALUE; dteXmlLastSyncDateTimeTo = DateTime.TryParse(xmlReader.GetAttribute("LastSyncDateTimeTo").ToString(), out dteXmlLastSyncDateTimeTo) ? dteXmlLastSyncDateTimeTo : Constants.C_DATE_MIN_VALUE; if (dteLastSyncDateTime >= dteXmlLastSyncDateTime) { break; } } else if (strTableName == "tblProducts" && xmlReader.Name == "Details") { clsProductDetails = Data.DBSync.setSyncProductDetails(xmlReader); clsProducts.Save(clsProductDetails); } break; } } if (dteLastSyncDateTime < dteXmlLastSyncDateTime) { clsSysConfig = new Data.SysConfig(clsDatabase.Connection, clsDatabase.Transaction); clsSysConfig.Save(new Data.SysConfigDetails() { ConfigName = "ProdLastSyncDateTime", ConfigValue = dteXmlLastSyncDateTimeTo.ToString("yyyy-MM-dd HH:mm:ss"), Category = "Sync" }); } clsDatabase.SetForeignKey(true); clsDatabase.CommitAndDispose(); #endregion } WriteProcessToMonitor("Waiting for next process..."); System.Threading.Thread.Sleep(20000); goto back; exit: WriteProcessToMonitor("Sytem terminated."); } catch (Exception ex) { WriteProcessToMonitor("PLEASE CALL RETAILPLUS IMMEDIATELY... error:" + ex.ToString()); } }