narsil/Tanshu.Accounts.PointOfSale/Products/ProductForm.cs
unknown 2d1030abf6 Scripts to transition database to new version.
Changed inventory and product entities to split Vat and Service Tax and IsScTaxable.
Added MessageBox on startup to inform about Debug Mode.
Updated ProductForm for the change.
Work still needs to be done on Thermal Printing where the hack for VAT on Food and VAT on Liqour is still there.
Now No Service Tax on Delivery Works as promised.
2012-04-08 17:58:15 +05:30

151 lines
5.0 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 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();
}
}
}