using System; using System.Windows.Forms; using Tanshu.Accounts.Repository; using Tanshu.Accounts.Entities; namespace Tanshu.Accounts.PointOfSale { public partial class ProductForm : Form { private int? _productID; public ProductForm(int? productID) { _productID = productID; InitializeComponent(); } private void Products_Load(object sender, EventArgs e) { FillCombos(); if (_productID.HasValue) { Product product; using (var bi = new ProductBI()) product = bi.Get(x => x.ProductID == _productID.Value); txtProductID.Text = _productID.Value.ToString(); txtCode.Text = product.Code.ToString(); txtName.Text = product.Name; txtUnits.Text = product.Units; txtPrice.Text = product.Price.ToString("#.##"); txtFullPrice.Text = product.FullPrice.ToString("#.##"); cmbVat.SelectedValue = product.Vat.TaxID; cmbServiceTax.SelectedValue = product.ServiceTax.TaxID; txtServiceCharge.Text = product.ServiceCharge.ToString("#.##"); chkDiscontinued.Checked = product.Discontinued; chkIsScTaxable.Checked = product.IsScTaxable; cmbProductGroup.SelectedValue = product.ProductGroup.ProductGroupID; txtSortOrder.Text = product.SortOrder.ToString(); } else { txtProductID.Text = "(Auto)"; txtName.Focus(); } } private void FillCombos() { using (var bi = new ProductGroupBI()) bsProductGroups.DataSource = bi.List(); using (var bi = new TaxBI()) { bsServiceTax.DataSource = bi.List(); bsVat.DataSource = bi.List(); } } private void btnAddCategory_Click(object sender, EventArgs e) { using (var frm = new ProductGroupListForm()) frm.ShowDialog(); FillCombos(); cmbProductGroup.SelectedIndex = -1; } private Product IsFormValid() { var product = new Product(); if (_productID.HasValue) product.ProductID = _productID.Value; int code; if (!int.TryParse(txtCode.Text, out code)) return null; if (code < 0) return null; product.Code = code; if (string.IsNullOrEmpty(txtName.Text.Trim())) return null; product.Name = txtName.Text.Trim(); //if (string.IsNullOrEmpty(txtUnits.Text.Trim())) // return null; product.Units = txtUnits.Text.Trim(); decimal price; if (!decimal.TryParse(txtPrice.Text, out price)) return null; if (price < 0) return null; product.Price = price; if (!decimal.TryParse(txtFullPrice.Text, out price)) return null; if (price < 0 || price < product.Price) return null; product.FullPrice = price; // Tax if (cmbVat.SelectedItem == null) return null; product.Vat = (Tax)cmbVat.SelectedItem; if (cmbServiceTax.SelectedItem == null) return null; product.ServiceTax = (Tax)cmbServiceTax.SelectedItem; decimal serviceCharge; if (!decimal.TryParse(txtServiceCharge.Text, out serviceCharge)) return null; if (serviceCharge < 0 || serviceCharge > 1) return null; product.ServiceCharge = serviceCharge; product.IsScTaxable = chkIsScTaxable.Checked; product.Discontinued = chkDiscontinued.Checked; int sortOrder; if (!int.TryParse(txtSortOrder.Text, out sortOrder)) return null; product.SortOrder = sortOrder; //Group if (cmbProductGroup.SelectedItem == null) return null; product.ProductGroup = (ProductGroup)cmbProductGroup.SelectedItem; return product; } private void btnOk_Click(object sender, EventArgs e) { var product = IsFormValid(); if (product != null) { using (var bi = new ProductBI()) if (_productID.HasValue) bi.Update(product); else bi.Insert(product); MessageBox.Show("Update / Save Successful"); this.Close(); } else MessageBox.Show("The form is not valid"); } private void btnCancel_Click(object sender, EventArgs e) { this.Close(); } } }