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.

233 lines
9.7 KiB

using BiskLog_Point_Of_Sale.Classes;
using BiskLog_Point_Of_Sale.Multiple_Login;
using BiskLog_Point_Of_Sale.Properties;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace BiskLog_Point_Of_Sale.Invoice
{
public partial class CashierInvoiceRecheck : Form
{
List<OldAndNew> list;
public List<InvoicePOS> vetted = new List<InvoicePOS>();
List<InvoicePOS> changed = new List<InvoicePOS>();
List<InvoicePOS> unchanged = new List<InvoicePOS>();
public CashierInvoiceRecheck(List<OldAndNew> list)
{
InitializeComponent();
this.list = list;
}
private void InvoiceRecheck_Load(object sender, System.EventArgs e)
{
invoiceList.Columns["bqty"].ReadOnly = false;
invoiceList.Columns[0].ReadOnly = true;
invoiceList.Columns[1].ReadOnly = true;
invoiceList.Columns[2].ReadOnly = true;
invoiceList.Columns[4].ReadOnly = true;
invoiceList.Columns[5].ReadOnly = true;
invoiceList.Columns[6].ReadOnly = true;
invoiceList.Columns[7].ReadOnly = true;
invoiceList.Columns[8].ReadOnly = true;
invoiceList.Columns[9].ReadOnly = true;
string currency = Settings.Default.currrencyCode + " ";
int i = 1;
foreach (OldAndNew pos in list)
{
invoiceList.Rows.Add(i, pos.productCode, pos.productname, pos.old_quantity, pos.unitName,
pos.new_quantity, currency + pos.old_price, currency + pos.new_price, pos.unitCode, pos.distinctiveCode);
invoiceList.Rows[i - 1].Cells[3].Style.BackColor = Color.FromArgb(10, 10, 120);
if (pos.old_quantity > pos.new_quantity)
{
invoiceList.Rows[i - 1].Cells[3].Style.BackColor = Color.DarkRed;
invoiceList.Rows[i - 1].Cells[3].Style.ForeColor = Color.White;
invoiceList.Rows[i - 1].Cells[3].Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
invoiceList.Rows[i - 1].Cells[3].Style.Font = new Font("Segoe UI", 12, style: FontStyle.Bold);
}
else
{
invoiceList.Rows[i - 1].Cells[3].Style.BackColor = Color.DarkGreen;
invoiceList.Rows[i - 1].Cells[3].Style.ForeColor = Color.White;
invoiceList.Rows[i - 1].Cells[3].Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
invoiceList.Rows[i - 1].Cells[3].Style.Font = new Font("Segoe UI", 12, style: FontStyle.Bold);
}
i++;
}
}
private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
{
e.Control.KeyPress -= new KeyPressEventHandler(Column1_KeyPress);
if (invoiceList.CurrentCell.ColumnIndex == 3) //Desired Column
{
TextBox tb = e.Control as TextBox;
if (tb != null)
{
tb.KeyPress += new KeyPressEventHandler(Column1_KeyPress);
}
}
}
private void Column1_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
{
e.Handled = true;
}
}
public int checkAvailabilty()
{
int priceChanges = 0;
bool outOfOrder = false;
try
{
foreach (DataGridViewRow rows in invoiceList.Rows)
{
string code = rows.Cells[1].Value.ToString();
string name = rows.Cells[2].Value.ToString();
string unitName = rows.Cells[4].Value.ToString();
string unitCode = rows.Cells[8].Value.ToString();
string distinctiveCode = rows.Cells[9].Value.ToString();
int quantity = int.Parse(rows.Cells[3].Value.ToString().TrimStart('0'));
int available = int.Parse(rows.Cells[5].Value.ToString());
decimal perUnit = decimal.Parse(rows.Cells[7].Value.ToString().Substring(Settings.Default.currrencyCode.Length));
// decimal price = (quantity * perUnit);
decimal oldprice = decimal.Parse(rows.Cells[6].Value.ToString().Substring(Settings.Default.currrencyCode.Length));
if (quantity > available)
{
rows.Cells[3].Style.BackColor = Color.DarkRed;
rows.Cells[3].Style.ForeColor = Color.White;
rows.Cells[3].Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
rows.Cells[3].Style.Font = new Font("Segoe UI", 12, style: FontStyle.Bold);
outOfOrder = true;
}
else
{
rows.Cells[3].Style.BackColor = Color.DarkGreen;
rows.Cells[3].Style.ForeColor = Color.White;
rows.Cells[3].Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
rows.Cells[3].Style.Font = new Font("Segoe UI", 12, style: FontStyle.Bold);
}
if (oldprice != perUnit) priceChanges++;
InvoicePOS POSold = new InvoicePOS(
productCode: code, quantity: quantity, totalprice: oldprice * quantity, unitprice: oldprice, productname: name,
distinctiveCode: distinctiveCode, unitCode: unitCode, unitName: unitName
);
InvoicePOS POSnew = new InvoicePOS(
productCode: code, quantity: quantity, totalprice: perUnit * quantity, unitprice: perUnit, productname: name,
distinctiveCode: distinctiveCode, unitCode: unitCode, unitName: unitName
);
changed.Add(POSnew);
unchanged.Add(POSold);
invoiceList.ClearSelection();
}
}
catch (Exception ex)
{
ErrorLogging.WriteToFile(ex.ToString());
}
if (!outOfOrder && (priceChanges == 0))
{
return 1;
}
else if (!outOfOrder && (priceChanges != 0))
{
return 2;
}
else { return 3; }
}
private void Exit_Click(object sender, System.EventArgs e)
{
this.DialogResult = DialogResult.Abort;
this.Close();
}
private void Exit_MouseEnter(object sender, System.EventArgs e)
{
exit.BackColor = Color.Crimson;
}
private void Exit_MouseLeave(object sender, System.EventArgs e)
{
exit.BackColor = Color.Transparent;
}
private void InvoiceList_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
if (e.ColumnIndex == 3 && e.RowIndex != -1)
{
e.AdvancedBorderStyle.All = DataGridViewAdvancedCellBorderStyle.Single;
}
else
{
e.AdvancedBorderStyle.All = DataGridViewAdvancedCellBorderStyle.None;
}
}
private void Button1_Click(object sender, System.EventArgs e)
{
string title = "";
string message = "";
int result = checkAvailabilty();
switch (result)
{
case 1:
title = "Continue";
message = "Would you like to continue with the new changes ?";
Confirmation confirmation = new Confirmation(title, message);
confirmation.BringToFront();
confirmation.ShowDialog();
if (confirmation.DialogResult == DialogResult.Yes)
{
vetted = unchanged;
this.DialogResult = DialogResult.OK;
this.Close();
}
break;
case 2:
title = "Confirm";
message = "Prices of some products might have been altered since the generation of this invoice, would you like to continue " +
"with the latest pricings ?";
Confirmation confirmatioon = new Confirmation(title, message);
confirmatioon.BringToFront();
confirmatioon.ShowDialog();
if (confirmatioon.DialogResult == DialogResult.Yes)
{
vetted = changed;
this.DialogResult = DialogResult.OK;
this.Close();
}
else
{
vetted = unchanged;
this.DialogResult = DialogResult.OK;
this.Close();
}
break;
case 3:
title = "Attention";
message = "The quantity of some selected products may not been available please check and try again";
NoAction confirmatiooned = new NoAction(title, message);
confirmatiooned.BringToFront();
confirmatiooned.ShowDialog();
break;
default:
break;
}
}
}
}