using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Windows.Forms; using Tanshu.Accounts.Helpers; using Tanshu.Accounts.Contracts; using Tanshu.Accounts.BI; namespace Tanshu.Accounts.PointOfSale { public partial class ProductsForm : Form { bool createOnly = false; List productList = new List(); #region Form Load public ProductsForm() { InitializeComponent(); } private void Products_Load(object sender, EventArgs e) { productList = new ProductBI().GetProducts(); bsProducts.DataSource = productList; FillCombos(); bsProducts.MoveFirst(); } private void FillCombos() { bsUnits.DataSource = new StringType[17] {new StringType ( "Cms"), new StringType ("Meter"), new StringType ("Quintal"), new StringType ("Can"), new StringType ("Gms"), new StringType ("Rs."), new StringType ("Piece"), new StringType ("Petti"), new StringType ("No.'s"), new StringType ("Liter"), new StringType ("Box"), new StringType ("Tin"), new StringType ("Dibbi"), new StringType ("Plate"), new StringType ("Kg."), new StringType ("Bottle"), new StringType ("Pack" )}; bsTypes.DataSource = new ProductBI().GetProductGroups(); bsVat.DataSource = new ProductBI().GetTaxes(); bsServiceTax.DataSource = new ProductBI().GetTaxes(); } #endregion #region Buttons private void btnAdd_Click(object sender, EventArgs e) { if (btnAdd.Text == "&Add") { bsProducts.AddNew(); LockControls(true); this.lblNavLocation.Text = "Add New"; txtName.Select(); } else { if (!ValidateValues()) { MessageBox.Show("Missing Information: Please check the form."); bsProducts.CancelEdit(); } else { bsProducts.EndEdit(); Save(true); if (createOnly) btnExit_Click(sender, e); else { productList = new ProductBI().GetProducts(); bsProducts.DataSource = productList; LockControls(false); } } } } private void btnDelete_Click(object sender, EventArgs e) { if (btnDelete.Text == "&Delete") { if (productList.Count() > 0) { if (MessageBox.Show("Are you sure?", "Delete", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes) { if (new ProductBI().Delete(productList.Single(p => p.Code == Convert.ToInt32(txtUniqueID.Text)).ProductID)) { productList = new ProductBI().GetProducts(); btnNavFirst_Click(sender, e); } } } } else { LockControls(false); bsProducts.CancelEdit(); } } private void btnUpdate_Click(object sender, EventArgs e) { if (MessageBox.Show("Are you sure?", "Update", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes) { Save(false); bsProducts.ResetItem(bsProducts.Position); } } #endregion #region Add / Edit / Delete private bool ValidateValues() { bool returnType; returnType = (bool)(txtName.Text.Trim().Length > 0 ? true : false); returnType = (cmbVat.SelectedValue == null ? false : true); returnType = (cmbServiceTax.SelectedValue == null ? false : true); return returnType; } private bool Save(bool addNew) { #region Setup Products UserBO user = CurrentUser.user; ProductBO product = new ProductBO(); if (!addNew) product = new ProductBI().GetProduct(productList.ElementAt(bsProducts.Position).ProductID); product.Name = txtName.Text; product.MinimumLevel = Convert.ToDecimal(txtMinimumLevel.Text); product.MaximumLevel = Convert.ToDecimal(txtMaximumLevel.Text); product.Units = cmbUnits.Text; product.ProductGroupID = new Guid(cmbProductGroups.SelectedValue.ToString()); product.SalePrice = Convert.ToDecimal(txtSalePrice.Text); if (cmbServiceTax.SelectedValue != null) product.ServiceTaxID = new Guid(cmbServiceTax.SelectedValue.ToString()); product.Discontinued = chkDiscontinued.Checked; product.VatID = new Guid(cmbVat.SelectedValue.ToString()); if (addNew) new ProductBI().Insert(product); else new ProductBI().Update(product); return true; #endregion } #endregion private void btnExit_Click(object sender, EventArgs e) { this.Close(); } private void LockControls(bool enable) { if (enable) { btnAdd.Text = "&Save"; btnDelete.Text = "&Cancel"; } else { btnAdd.Text = "&Add"; btnDelete.Text = "&Delete"; } btnExit.Enabled = !enable; btnLast.Enabled = !enable; btnNavPrev.Enabled = !enable; btnNavNext.Enabled = !enable; btnUpdate.Enabled = !enable; btnNavFirst.Enabled = !enable; } private void btnAddCategory_Click(object sender, EventArgs e) { ProductGroups frm = new ProductGroups(); frm.ShowDialog(); frm.Dispose(); FillCombos(); cmbProductGroups.SelectedIndex = 0; } #region Move Buttons private void btnNavFirst_Click(object sender, EventArgs e) { this.bsProducts.MoveFirst(); } private void btnNavPrev_Click(object sender, EventArgs e) { this.bsProducts.MovePrevious(); } private void btnNavNext_Click(object sender, EventArgs e) { this.bsProducts.MoveNext(); } private void btnLast_Click(object sender, EventArgs e) { this.bsProducts.MoveLast(); } private void lblNavLocation_Click(object sender, EventArgs e) { using (SelectProduct selectProduct = new SelectProduct(new ProductBI().GetFilteredProducts, true)) { selectProduct.ShowDialog(); if (selectProduct.SelectedItem != null) { bsProducts.Position = GetPosition(productList, selectProduct.SelectedItem.ProductID); } } } #endregion #region Binding Source Events private void bsProducts_AddingNew(object sender, AddingNewEventArgs e) { e.NewObject = new ProductDisplayBO(); } private void bsProducts_PositionChanged(object sender, EventArgs e) { this.lblNavLocation.Text = string.Format("{0} of {1}", bsProducts.Position + 1, bsProducts.Count); } #endregion private int GetPosition(List list, Guid id) { for (int i = 0; i < list.Count; i++) { if (list[i].ProductID == id) return i; } return 0; } } }