256 lines
8.8 KiB
C#
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;
|
|
|
|
}
|
|
}
|
|
} |