narsil/Tanshu.Accounts.PointOfSale/Products/ProductForm.cs
tanshu 69617949bd Important! : Need to update to new schema using SQL Scripts
Important! : This version will not work.  It is pre-alpha and saved in case of catastrophic failure
Refactor: Remove dependency on Fluent Nhibernate.
Refactor: All Primary keys are now Guids.
Refactor: Class Mappings changed from AutoMap to Explicit Mappings.
Breakage: All Cascading is now disabled and entities must be explicitly saved/updated/deleted
Breakage: Auto Commiting is now off and "SaveChanges()" needs to be called on all BIs.
Refactor: Changed the pattern where all relevant db code for an operation is basically in the same function.
Chore: Removed Advance and Payments options.
2014-10-12 15:11:45 +05:30

149 lines
4.8 KiB
C#

using System;
using System.Windows.Forms;
using Tanshu.Accounts.Repository;
using Tanshu.Accounts.Entities;
namespace Tanshu.Accounts.PointOfSale
{
public partial class ProductForm : Form
{
private Guid? _productID;
public ProductForm(Guid? 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;
}
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;
//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);
bi.SaveChanges();
}
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();
}
}
}