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.Repository; using Tanshu.Accounts.Entities; using Tanshu.Accounts.Entities.Auth; namespace Tanshu.Accounts.PointOfSale { public partial class ProductsForm : Form { bool createOnly = false; IList productList = new List(); #region Form Load public ProductsForm() { InitializeComponent(); } private void Products_Load(object sender, EventArgs e) { productList = 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 ProductGroupBI().GetProductGroups(); //bsPurchaseLedgers.DataSource = new LedgerBI().GetLedgersOfType('P'); //bsSalesLedgers.DataSource = new LedgerBI().GetLedgersOfType('X'); //bsSalesTax.DataSource = new LedgerBI().GetLedgersOfType('T'); //bsPurchaseTax.DataSource = new LedgerBI().GetLedgersOfType('T'); } #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 = 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 (ProductBI.Delete(productList.Single(p => p.Code == Convert.ToInt32(txtUniqueID.Text)).ProductID)) { productList = 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 = (cmbSalesLedger.SelectedValue == null ? false : true); returnType = (cmbSalesTax.SelectedValue == null ? false : true); return returnType; } private bool Save(bool addNew) { #region Setup Products User user = Session.User; Product product = new Product(); if (!addNew) product = ProductBI.GetProduct(productList.ElementAt(bsProducts.Position).ProductID); product.Name = txtName.Text; product.Units = cmbUnits.Text; product.ProductGroup = new ProductGroupBI().GetProductGroup((int)cmbProductTypes.SelectedValue); product.SalePrice = Convert.ToDecimal(txtSalePrice.Text); product.Discontinued = chkDiscontinued.Checked; product.Tax = new Tax(); if (addNew) ProductBI.Insert(product); else 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) { ProductTypes frm = new ProductTypes(); frm.ShowDialog(); frm.Dispose(); FillCombos(); cmbProductTypes.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(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 Product(); } 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(IList list, int id) { for (int i = 0; i < list.Count; i++) { if (list[i].ProductID == id) return i; } return 0; } } }