Biskilog POS desktop appilcation
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

165 lines
6.5 KiB

using BiskLog_Point_Of_Sale.Classes;
using BiskLog_Point_Of_Sale.Invoice;
using BiskLog_Point_Of_Sale.Multiple_Login;
using BiskLog_Point_Of_Sale.Properties;
using Point_Of_Sale_Managment;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace BiskLog_Point_Of_Sale.POSDialogs
{
public partial class Initializing : Form
{
SqlConnection cn;
SqlCommand cm;
SqlDataReader dr;
DatabaseConn conn = new DatabaseConn();
public List<InvoicePOS> getInvoiceList;
List<InvoicePOS> getNewInvoice = new List<InvoicePOS>();
List<OldAndNew> GetNews = new List<OldAndNew>();
List<string> products;
List<string> distinct;
public Initializing(List<InvoicePOS> getInvoiceList)
{
InitializeComponent();
this.getInvoiceList = getInvoiceList;
products = getInvoiceList.Select(p => p.productCode).ToList();
distinct = getInvoiceList.Select(p => p.distinctiveCode).ToList();
cn = new SqlConnection(conn.MyConnection());
}
private int loadDetails()
{
try
{
string[] productArray = products.Select(i => i.ToString()).ToArray();
string[] distinctArray = distinct.Select(i => i.ToString()).ToArray();
cn.Open();
cm = new SqlCommand("Select TI.pcode,TI.quantity,TP.price from tblInventory TI Inner Join tblProduct TP On TP.pcode = TI.pcode " +
"where TP.branchID = @branchID and TI.pcode in (@products) " +
"Select TI.pcode,TI.quantity/PAU.[quantity/unit],PAU.[price/unit],PAU.distinctiveCode from tblInventory TI " +
"Inner Join ProductAltUnit PAU On PAU.pcode = TI.pcode where PAU.branchID = @branchID and TI.pcode in " +
"(Select pcode from ProductAltUnit where branchID = @branchID and distinctiveCode in (@distinctive))", cn);
cm.Parameters.AddWithValue("@branchID", Settings.Default.BranchID);
cm.AddParametersWithValues("@products", productArray);
cm.AddParametersWithValues1("@distinctive", distinctArray);
cm.ExecuteNonQuery();
dr = cm.ExecuteReader();
while (dr.Read())
{
InvoicePOS pos = new InvoicePOS(productCode: dr[0].ToString(), quantity: int.Parse(dr[1].ToString()),
totalprice: 0,
distinctiveCode:dr[0].ToString(),
unitprice: decimal.Parse(dr[2].ToString()));
getNewInvoice.Add(pos);
}
dr.NextResult();
while (dr.Read())
{
InvoicePOS pos = new InvoicePOS(productCode: dr[0].ToString(), quantity: int.Parse(dr[1].ToString()),
totalprice: 0,
distinctiveCode: dr[3].ToString(),
unitprice: decimal.Parse(dr[2].ToString()));
getNewInvoice.Add(pos);
}
dr.Close();
cn.Close();
return 1;
}
catch (Exception ex)
{
ErrorLogging.WriteToFile(ex.ToString());
cn.Close();
return 0;
}
}
public void check()
{
foreach (InvoicePOS invoice in getNewInvoice)
{
string code = invoice.productCode;
string distinctive = invoice.distinctiveCode;
int qty = invoice.quantity;
InvoicePOS oldies = getInvoiceList
.First(p => p.distinctiveCode == distinctive);
int oldquantity = oldies.quantity;
decimal oldprice = oldies.unitprice;
string una = oldies.unitName;
if ((qty < oldquantity) || (invoice.unitprice != oldprice))
{
OldAndNew old = new OldAndNew();
old.productCode = code;
old.productname = oldies.productname;
old.old_quantity = oldquantity;
old.old_price = oldprice;
old.new_price = invoice.unitprice;
old.new_quantity = invoice.quantity;
old.unitCode = oldies.unitCode;
old.unitName = oldies.unitName;
old.distinctiveCode = oldies.distinctiveCode;
GetNews.Add(old);
}
}
}
private async void Initializing_Load(object sender, EventArgs e)
{
Task<int> task = new Task<int>(loadDetails);
holding.Value = 0;
var progress = new Progress<int>(percent =>
{
holding.Value = percent;
});
await Task.Run(() => Progression.DoSomething(progress));
task.Start();
int result = await task;
if (result == 1)
{
try
{
check();
}
catch { }
if (GetNews.Count != 0)
{
InvoiceRecheck invoiceRecheck = new InvoiceRecheck(GetNews);
invoiceRecheck.BringToFront();
invoiceRecheck.ShowDialog();
if (invoiceRecheck.DialogResult == DialogResult.OK)
{
getInvoiceList = invoiceRecheck.vetted;
this.DialogResult = DialogResult.OK;
this.Close();
}
else
{
this.DialogResult = DialogResult.Abort;
this.Close();
}
}
else
{
this.DialogResult = DialogResult.OK;
this.Close();
}
}
else
{
string title = "Error Occurred";
string message = "Sorry an unexpected error occurred while getting invoice ready for sale";
NoAction noAction = new NoAction(title, message);
noAction.BringToFront();
noAction.ShowDialog();
this.DialogResult = DialogResult.Cancel;
this.Close();
}
holding.Visible = false;
}
}
}