narsil/Tanshu.Accounts.PointOfSale/ProductsForm.cs
2012-05-04 16:31:14 +05:30

256 lines
8.8 KiB
C#

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<ProductDisplayBO> productList = new List<ProductDisplayBO>();
#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().GetProductTypes();
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 = 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 = (cmbSalesLedger.SelectedValue == null ? false : true);
returnType = (cmbSalesTax.SelectedValue == null ? false : true);
returnType = (cmbPurchaseLedger.SelectedValue == null ? false : true);
returnType = (cmbPurchaseTax.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.ProductTypeID = new Guid(cmbProductTypes.SelectedValue.ToString());
product.SalePrice = Convert.ToDecimal(txtSalePrice.Text);
if (cmbPurchaseLedger.SelectedValue != null)
product.PurchaseLedgerID = new Guid(cmbPurchaseLedger.SelectedValue.ToString());
product.SaleLedgerID = new Guid(cmbSalesLedger.SelectedValue.ToString());
if (cmbPurchaseTax.SelectedValue != null)
product.PurchaseTaxID = new Guid(cmbPurchaseTax.SelectedValue.ToString());
product.Discontinued = chkDiscontinued.Checked;
product.PurchasePrice = Convert.ToDecimal(txtPurchasePrice.Text);
product.SaleTaxID = new Guid(cmbSalesTax.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)
{
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(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<ProductDisplayBO> list, Guid id)
{
for (int i = 0; i < list.Count; i++)
{
if (list[i].ProductID == id)
return i;
}
return 0;
}
}
}