From 0cb7d3cf09169a23cd261aa19c7f2c6ab641a6c2 Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 11 Apr 2011 18:25:45 +0530 Subject: [PATCH] Changed Checkout to correctly reflect cash. Minor updates. --- .../Helper Functions/EnumHelper.cs | 14 ++ .../Tanshu.Accounts.Contracts.csproj | 1 + Tanshu.Accounts.PointOfSale/App.config | 11 +- .../Controllers/BillController.cs | 6 +- Tanshu.Accounts.PointOfSale/MainForm.cs | 17 +- .../Reports/CheckoutForm.Designer.cs | 38 ++-- .../Reports/CheckoutForm.cs | 27 +-- Tanshu.Accounts.Print/RawPrinterHelper.cs | 14 +- Tanshu.Accounts.Print/Thermal.cs | 17 +- .../BusinessLayer/CheckoutBI.cs | 205 ++++++++++-------- .../BusinessLayer/FoodTableBI.cs | 15 +- .../BusinessLayer/VoucherBI.cs | 54 ++--- Tanshu.Accounts.Repository/DbValues.cs | 6 +- .../Lifetime/Session.cs | 24 +- 14 files changed, 254 insertions(+), 195 deletions(-) create mode 100644 Tanshu.Accounts.Contracts/Helper Functions/EnumHelper.cs diff --git a/Tanshu.Accounts.Contracts/Helper Functions/EnumHelper.cs b/Tanshu.Accounts.Contracts/Helper Functions/EnumHelper.cs new file mode 100644 index 0000000..feefecd --- /dev/null +++ b/Tanshu.Accounts.Contracts/Helper Functions/EnumHelper.cs @@ -0,0 +1,14 @@ +using Tanshu.Accounts.Entities; +using Tanshu.Accounts.Contracts; + +namespace Tanshu.Common.Helpers +{ + public static class EnumHelper + { + public static string Display(this SettleOption settleOption) + { + var attribute = (DisplayAttribute)settleOption.GetType().GetField(settleOption.ToString()).GetCustomAttributes(typeof(DisplayAttribute), false)[0]; + return attribute != null ? attribute.Name : ""; + } + } +} \ No newline at end of file diff --git a/Tanshu.Accounts.Contracts/Tanshu.Accounts.Contracts.csproj b/Tanshu.Accounts.Contracts/Tanshu.Accounts.Contracts.csproj index 8634adc..3c0032b 100644 --- a/Tanshu.Accounts.Contracts/Tanshu.Accounts.Contracts.csproj +++ b/Tanshu.Accounts.Contracts/Tanshu.Accounts.Contracts.csproj @@ -113,6 +113,7 @@ + diff --git a/Tanshu.Accounts.PointOfSale/App.config b/Tanshu.Accounts.PointOfSale/App.config index 142bad3..f775a81 100644 --- a/Tanshu.Accounts.PointOfSale/App.config +++ b/Tanshu.Accounts.PointOfSale/App.config @@ -1,7 +1,7 @@  - + @@ -9,4 +9,13 @@ + + + + + + + + \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/Controllers/BillController.cs b/Tanshu.Accounts.PointOfSale/Controllers/BillController.cs index 3182cd0..238be93 100644 --- a/Tanshu.Accounts.PointOfSale/Controllers/BillController.cs +++ b/Tanshu.Accounts.PointOfSale/Controllers/BillController.cs @@ -288,7 +288,7 @@ namespace Tanshu.Accounts.PointOfSale ClearBill(); bill.Clear(); _billInfo = null; - _billInfo = VoucherBI.GetVoucher(voucherID); + _billInfo = VoucherBI.Get(voucherID); _customer = _billInfo.Customer; _saleForm.ShowInfo(_billInfo.BillID, _billInfo.KotID, _billInfo.CreationDate, _billInfo.Date.Value, @@ -352,7 +352,7 @@ namespace Tanshu.Accounts.PointOfSale { if (!string.IsNullOrEmpty(tableName)) { - var table = new FoodTableBI().GetByName(tableName); + var table = new FoodTableBI().Get(tableName); if (table != null && table.VoucherID != 0) { LoadBill(table.VoucherID); @@ -366,7 +366,7 @@ namespace Tanshu.Accounts.PointOfSale var tableID = result.Text.Trim(); if ((tableID != "C") && (tableID != "") && (!tableID.Contains("."))) { - var table = new FoodTableBI().GetByName(tableName); + var table = new FoodTableBI().Get(tableName); if (table != null && table.VoucherID != 0) { LoadBill(table.VoucherID); diff --git a/Tanshu.Accounts.PointOfSale/MainForm.cs b/Tanshu.Accounts.PointOfSale/MainForm.cs index 6c1a3e8..d0bc733 100644 --- a/Tanshu.Accounts.PointOfSale/MainForm.cs +++ b/Tanshu.Accounts.PointOfSale/MainForm.cs @@ -18,22 +18,15 @@ namespace Tanshu.Accounts.PointOfSale private User form_userEvent(object sender, UserEventArgs e) { - User user = e.User; + var user = e.User; if (user == null) - { using (var form = new UserForm(null)) - { form.ShowDialog(); - } - } else - { using (var form = new UserForm(user.UserID)) - { form.ShowDialog(); - } - } + e.Handled = true; return new User(); } @@ -66,10 +59,8 @@ namespace Tanshu.Accounts.PointOfSale private void btnCustomer_Click(object sender, EventArgs e) { - using (var Customer = new CustomersForm(null, "")) - { - Customer.ShowDialog(); - } + using (var frm = new CustomersForm(null, "")) + frm.ShowDialog(); } private void btnInitial_Click(object sender, EventArgs e) diff --git a/Tanshu.Accounts.PointOfSale/Reports/CheckoutForm.Designer.cs b/Tanshu.Accounts.PointOfSale/Reports/CheckoutForm.Designer.cs index 3840196..674fd58 100644 --- a/Tanshu.Accounts.PointOfSale/Reports/CheckoutForm.Designer.cs +++ b/Tanshu.Accounts.PointOfSale/Reports/CheckoutForm.Designer.cs @@ -56,7 +56,7 @@ this.label2 = new System.Windows.Forms.Label(); this.label1 = new System.Windows.Forms.Label(); this.txtPayments = new System.Windows.Forms.TextBox(); - this.txtAdvanceAdjusted = new System.Windows.Forms.TextBox(); + this.txtCashReceipts = new System.Windows.Forms.TextBox(); this.txtCCReceipts = new System.Windows.Forms.TextBox(); this.txtAdditionalVoids = new System.Windows.Forms.TextBox(); this.txtVoidsInSystem = new System.Windows.Forms.TextBox(); @@ -95,7 +95,7 @@ this.dtpFinish.Name = "dtpFinish"; this.dtpFinish.Size = new System.Drawing.Size(110, 20); this.dtpFinish.TabIndex = 42; - this.dtpFinish.ValueChanged += new System.EventHandler(this.dtpFinish_ValueChanged); + this.dtpFinish.ValueChanged += new System.EventHandler(this.DtpFinishValueChanged); // // dtpStart // @@ -103,7 +103,7 @@ this.dtpStart.Name = "dtpStart"; this.dtpStart.Size = new System.Drawing.Size(110, 20); this.dtpStart.TabIndex = 41; - this.dtpStart.ValueChanged += new System.EventHandler(this.dtpStart_ValueChanged); + this.dtpStart.ValueChanged += new System.EventHandler(this.DtpStartValueChanged); // // label17 // @@ -167,7 +167,7 @@ this.btnCalculate.TabIndex = 39; this.btnCalculate.Text = "&Calculate"; this.btnCalculate.UseVisualStyleBackColor = true; - this.btnCalculate.Click += new System.EventHandler(this.btnCalculate_Click); + this.btnCalculate.Click += new System.EventHandler(this.BtnCalculateClick); // // btnPrint // @@ -177,7 +177,7 @@ this.btnPrint.TabIndex = 40; this.btnPrint.Text = "&Print"; this.btnPrint.UseVisualStyleBackColor = true; - this.btnPrint.Click += new System.EventHandler(this.btnPrint_Click); + this.btnPrint.Click += new System.EventHandler(this.BtnPrintClick); // // txtStatus // @@ -221,7 +221,7 @@ this.cmbCashier.Name = "cmbCashier"; this.cmbCashier.Size = new System.Drawing.Size(200, 21); this.cmbCashier.TabIndex = 37; - this.cmbCashier.SelectedIndexChanged += new System.EventHandler(this.cmbCashier_SelectedIndexChanged); + this.cmbCashier.SelectedIndexChanged += new System.EventHandler(this.CmbCashierSelectedIndexChanged); // // label10 // @@ -273,9 +273,9 @@ this.label5.AutoSize = true; this.label5.Location = new System.Drawing.Point(12, 224); this.label5.Name = "label5"; - this.label5.Size = new System.Drawing.Size(73, 13); + this.label5.Size = new System.Drawing.Size(76, 13); this.label5.TabIndex = 63; - this.label5.Text = "Adv. Adjusted"; + this.label5.Text = "Cash Receipts"; // // label4 // @@ -322,14 +322,14 @@ this.txtPayments.Size = new System.Drawing.Size(200, 20); this.txtPayments.TabIndex = 48; // - // txtAdvanceAdjusted + // txtCashReceipts // - this.txtAdvanceAdjusted.Location = new System.Drawing.Point(99, 221); - this.txtAdvanceAdjusted.Name = "txtAdvanceAdjusted"; - this.txtAdvanceAdjusted.ReadOnly = true; - this.txtAdvanceAdjusted.RightToLeft = System.Windows.Forms.RightToLeft.Yes; - this.txtAdvanceAdjusted.Size = new System.Drawing.Size(200, 20); - this.txtAdvanceAdjusted.TabIndex = 47; + this.txtCashReceipts.Location = new System.Drawing.Point(99, 221); + this.txtCashReceipts.Name = "txtCashReceipts"; + this.txtCashReceipts.ReadOnly = true; + this.txtCashReceipts.RightToLeft = System.Windows.Forms.RightToLeft.Yes; + this.txtCashReceipts.Size = new System.Drawing.Size(200, 20); + this.txtCashReceipts.TabIndex = 47; // // txtCCReceipts // @@ -439,7 +439,7 @@ this.txtNC.Size = new System.Drawing.Size(200, 20); this.txtNC.TabIndex = 74; // - // Cashier_Checkout_Form + // CashierCheckoutForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; @@ -476,7 +476,7 @@ this.Controls.Add(this.label2); this.Controls.Add(this.label1); this.Controls.Add(this.txtPayments); - this.Controls.Add(this.txtAdvanceAdjusted); + this.Controls.Add(this.txtCashReceipts); this.Controls.Add(this.txtCCReceipts); this.Controls.Add(this.txtAdditionalVoids); this.Controls.Add(this.txtVoidsInSystem); @@ -489,7 +489,7 @@ this.Name = "CashierCheckoutForm"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "Cashier Checkout Form"; - this.Load += new System.EventHandler(this.Cashier_Checkout_Form_Load); + this.Load += new System.EventHandler(this.CashierCheckoutFormLoad); this.ResumeLayout(false); this.PerformLayout(); @@ -525,7 +525,7 @@ private System.Windows.Forms.Label label2; private System.Windows.Forms.Label label1; private System.Windows.Forms.TextBox txtPayments; - private System.Windows.Forms.TextBox txtAdvanceAdjusted; + private System.Windows.Forms.TextBox txtCashReceipts; private System.Windows.Forms.TextBox txtCCReceipts; private System.Windows.Forms.TextBox txtAdditionalVoids; private System.Windows.Forms.TextBox txtVoidsInSystem; diff --git a/Tanshu.Accounts.PointOfSale/Reports/CheckoutForm.cs b/Tanshu.Accounts.PointOfSale/Reports/CheckoutForm.cs index 0057289..a210235 100644 --- a/Tanshu.Accounts.PointOfSale/Reports/CheckoutForm.cs +++ b/Tanshu.Accounts.PointOfSale/Reports/CheckoutForm.cs @@ -2,7 +2,6 @@ using System.Windows.Forms; using Tanshu.Accounts.Repository; using Tanshu.Accounts.Print; -using Tanshu.Accounts.Helpers; namespace Tanshu.Accounts.PointOfSale { @@ -10,14 +9,13 @@ namespace Tanshu.Accounts.PointOfSale { CheckoutBI _coProxy; bool _loading; - //private static readonly Tanshu.Logging.SqlLogger log = new Tanshu.Logging.SqlLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); public CashierCheckoutForm() { _loading = true; InitializeComponent(); } - private void Cashier_Checkout_Form_Load(object sender, EventArgs e) + private void CashierCheckoutFormLoad(object sender, EventArgs e) { dtpStart.Format = DateTimePickerFormat.Custom; dtpStart.CustomFormat = "dd-MMM-yyyy"; @@ -31,12 +29,15 @@ namespace Tanshu.Accounts.PointOfSale private void FillUsers() { + var loading = _loading; + _loading = true; cmbCashier.DisplayMember = "Name"; cmbCashier.ValueMember = "UserID"; cmbCashier.DataSource = UserBI.ListActive(dtpStart.Value.Date.AddHours(7), dtpFinish.Value.Date.AddDays(1).AddHours(7)); + _loading = loading; } - private void cmbCashier_SelectedIndexChanged(object sender, EventArgs e) + private void CmbCashierSelectedIndexChanged(object sender, EventArgs e) { EmployeeStatus(); //log.Warn(string.Format("User Checkout: {0} by {1}", coProxy.Cashier, Session.User.Name)); @@ -47,34 +48,34 @@ namespace Tanshu.Accounts.PointOfSale if (_loading || cmbCashier.SelectedValue == null) return; _coProxy = new CheckoutBI((int)cmbCashier.SelectedValue, dtpStart.Value, dtpFinish.Value); - txtOpening.Text = string.Format("{0:#,##0.00}", _coProxy); + txtOpening.Text = string.Format("{0:#,##0.00}", _coProxy.Opening); txtReceipts.Text = string.Format("{0:#,##0.00}", _coProxy.Receipts); txtAdvanceReceived.Text = string.Format("{0:#,##0.00}", _coProxy.AdvanceReceipts); txtCCReceipts.Text = string.Format("{0:#,##0.00}", _coProxy.CcReceipts); txtNC.Text = string.Format("{0:#,##0.00}", _coProxy.NcReceipts); txtBillToCompany.Text = string.Format("{0:#,##0.00}", _coProxy.BtcReceipts); - txtAdvanceAdjusted.Text = string.Format("{0:#,##0.00}", _coProxy.AdvanceAdjusted); + txtCashReceipts.Text = string.Format("{0:#,##0.00}", _coProxy.CashReceipts); txtPayments.Text = string.Format("{0:#,##0.00}", _coProxy.CashPayments); txtAdditionalVoids.Text = string.Format("{0:#,##0.00}", _coProxy.AdditionalVoids); txtVoidsInSystem.Text = string.Format("{0:#,##0.00}", _coProxy.VoidsInSystem); txtDiscounts.Text = string.Format("{0:#,##0.00}", _coProxy.Discount); txtPending.Text = string.Format("{0:#,##0.00}", _coProxy.PendingBills); - txtSales.Text = string.Format("{0:#,##0.00}", _coProxy.NetSales); + txtSales.Text = string.Format("{0:#,##0.00}", _coProxy.CashReceipts); txtClosingCash.Text = string.Format("{0:#,##0.00}", _coProxy.ClosingBalance); txtStatus.Text = _coProxy.Status; } - private void dtpStart_ValueChanged(object sender, EventArgs e) + private void DtpStartValueChanged(object sender, EventArgs e) { - EmployeeStatus(); + FillUsers(); } - private void dtpFinish_ValueChanged(object sender, EventArgs e) + private void DtpFinishValueChanged(object sender, EventArgs e) { - EmployeeStatus(); + FillUsers(); } - private void btnCalculate_Click(object sender, EventArgs e) + private void BtnCalculateClick(object sender, EventArgs e) { decimal deposited = 0; if (!decimal.TryParse(txtDeposited.Text, out deposited)) @@ -84,7 +85,7 @@ namespace Tanshu.Accounts.PointOfSale txtStatus.Text = _coProxy.Status; } - private void btnPrint_Click(object sender, EventArgs e) + private void BtnPrintClick(object sender, EventArgs e) { Thermal.PrintClosing(_coProxy); } diff --git a/Tanshu.Accounts.Print/RawPrinterHelper.cs b/Tanshu.Accounts.Print/RawPrinterHelper.cs index 0b3cc98..f74f64e 100644 --- a/Tanshu.Accounts.Print/RawPrinterHelper.cs +++ b/Tanshu.Accounts.Print/RawPrinterHelper.cs @@ -21,25 +21,25 @@ namespace Tanshu.Accounts.Print [MarshalAs(UnmanagedType.LPStr)] public string pDataType; } - [DllImport("winspool.Drv", EntryPoint = "OpenPrinterA", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] + [DllImport("winspool.drv", EntryPoint = "OpenPrinterA", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] internal static extern bool OpenPrinter([MarshalAs(UnmanagedType.LPStr)] string szPrinter, out IntPtr hPrinter, IntPtr pd); - [DllImport("winspool.Drv", EntryPoint = "ClosePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] + [DllImport("winspool.drv", EntryPoint = "ClosePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] internal static extern bool ClosePrinter(IntPtr hPrinter); - [DllImport("winspool.Drv", EntryPoint = "StartDocPrinterA", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] + [DllImport("winspool.drv", EntryPoint = "StartDocPrinterA", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] internal static extern bool StartDocPrinter(IntPtr hPrinter, Int32 level, [In, MarshalAs(UnmanagedType.LPStruct)] DOCINFOA di); - [DllImport("winspool.Drv", EntryPoint = "EndDocPrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] + [DllImport("winspool.drv", EntryPoint = "EndDocPrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] internal static extern bool EndDocPrinter(IntPtr hPrinter); - [DllImport("winspool.Drv", EntryPoint = "StartPagePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] + [DllImport("winspool.drv", EntryPoint = "StartPagePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] internal static extern bool StartPagePrinter(IntPtr hPrinter); - [DllImport("winspool.Drv", EntryPoint = "EndPagePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] + [DllImport("winspool.drv", EntryPoint = "EndPagePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] internal static extern bool EndPagePrinter(IntPtr hPrinter); - [DllImport("winspool.Drv", EntryPoint = "WritePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] + [DllImport("winspool.drv", EntryPoint = "WritePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] internal static extern bool WritePrinter(IntPtr hPrinter, IntPtr pBytes, Int32 dwCount, out Int32 dwWritten); #endregion diff --git a/Tanshu.Accounts.Print/Thermal.cs b/Tanshu.Accounts.Print/Thermal.cs index 629bb5a..9c4b317 100644 --- a/Tanshu.Accounts.Print/Thermal.cs +++ b/Tanshu.Accounts.Print/Thermal.cs @@ -6,6 +6,7 @@ using Tanshu.Accounts.Contracts; using Tanshu.Accounts.Entities; using Tanshu.Accounts.Entities.Auth; using Tanshu.Accounts.Repository; +using System.Diagnostics; namespace Tanshu.Accounts.Print { @@ -271,13 +272,14 @@ namespace Tanshu.Accounts.Print billText += string.Format("\n\rCC Receipts : {0,26:#,##0.00}", details.CcReceipts); billText += string.Format("\n\rNC Amount : {0,26:#,##0.00}", details.NcReceipts); billText += string.Format("\n\rBTC Amount : {0,26:#,##0.00}", details.BtcReceipts); + billText += string.Format("\n\rCash Amount : {0,26:#,##0.00}", details.CashReceipts); billText += string.Format("\n\rAdvance Adj. : {0,26:#,##0.00}", details.AdvanceAdjusted); //BillText += string.Format("\n\rPayments : {0,26:#,##0.00}", details.CashPayments); //BillText += string.Format("\n\rAddl. Voids : {0,26:#,##0.00}", details.AdditionalVoids); billText += string.Format("\n\rVoids in Sys. : {0,26:#,##0.00}", details.VoidsInSystem); billText += string.Format("\n\rDiscounts : {0,26:#,##0.00}", details.Discount); billText += string.Format("\n\rPending Bills : {0,26:#,##0.00}", details.PendingBills); - billText += string.Format("\n\rNet Sales : {0,26:#,##0.00}", details.NetSales); + billText += string.Format("\n\rNet Sales : {0,26:#,##0.00}", details.CashReceipts); billText += string.Format("\n\rClosing Bal. : {0,26:#,##0.00}", details.ClosingBalance); billText += string.Format("\n\rCash Dep. : {0,26:#,##0.00}", details.CashDeposited); billText += DrawLine; @@ -325,13 +327,15 @@ namespace Tanshu.Accounts.Print public static void PrintBill(int voucherID) { - var voucher = VoucherBI.GetVoucher(voucherID); + var voucher = VoucherBI.Get(voucherID); PrintRaw(PrintLocationBI.BasePrinter, DesignBill(voucher), "Bill"); } public static void PrintKot(int voucherID, int kotID) { - var voucher = VoucherBI.GetVoucher(voucherID); + var stopwatch = new Stopwatch(); + stopwatch.Start(); + var voucher = VoucherBI.Get(voucherID); var dict = new Dictionary>(); foreach (var item in voucher.Kots.Where(x => x.KotID == kotID)) { @@ -346,13 +350,20 @@ namespace Tanshu.Accounts.Print dict[printer].Add(inventory); } } + stopwatch.Stop(); + Trace.TraceWarning("kot and printers built in {0} ms",stopwatch.ElapsedMilliseconds); + stopwatch.Reset(); foreach (var item in dict) { for (var i = 0; i < item.Key.Copies; i++) { + stopwatch.Start(); PrintRaw(item.Key, DesignKot(voucher, voucher.Kots.Where(x => x.KotID == kotID).Single().Code, item.Value, i), "KOT"); + stopwatch.Stop(); + Trace.TraceWarning("kot designed and printed in {0} ms", stopwatch.ElapsedMilliseconds); + stopwatch.Reset(); } } } diff --git a/Tanshu.Accounts.Repository/BusinessLayer/CheckoutBI.cs b/Tanshu.Accounts.Repository/BusinessLayer/CheckoutBI.cs index 2255ee7..8dfd1d6 100644 --- a/Tanshu.Accounts.Repository/BusinessLayer/CheckoutBI.cs +++ b/Tanshu.Accounts.Repository/BusinessLayer/CheckoutBI.cs @@ -5,6 +5,7 @@ using Tanshu.Accounts.Entities; using Tanshu.Accounts.Entities.Auth; using NHibernate.Criterion; using Tanshu.Accounts.Contracts; +using Tanshu.Common.Helpers; namespace Tanshu.Accounts.Repository { @@ -23,7 +24,7 @@ namespace Tanshu.Accounts.Repository public decimal VoidsInSystem { get; private set; } public decimal Discount { get; private set; } public decimal PendingBills { get; private set; } - public decimal NetSales { get; private set; } + public decimal CashReceipts { get; private set; } public decimal ClosingBalance { get; private set; } public decimal RetainedOvernight { get; private set; } public decimal CashDeposited { get; private set; } // @@ -62,13 +63,13 @@ namespace Tanshu.Accounts.Repository this.FinishDate = finishDate.Date.AddDays(1).AddHours(5); string info; - PendingBills = GetPending(out info); + PendingBills = GetPrintInfo(out info,SettleOption.Unsettled); PendingString = info; - CcReceipts = GetCreditCard(out info); + CcReceipts = GetPrintInfo(out info,SettleOption.CreditCard); CcString = info; - NcReceipts = GetNoCharge(out info); + NcReceipts = GetPrintInfo(out info, SettleOption.CreditCard); NcString = info; - BtcReceipts = GetBillToCompany(out info); + BtcReceipts = GetPrintInfo(out info, SettleOption.BillToCompany); BtcString = info; VoidsInSystem = GetVoids(out info); VoidsString = info; @@ -89,21 +90,19 @@ namespace Tanshu.Accounts.Repository Cashiers = GetActiveCashiers(); - NetSales = GetNetSales(); + CashReceipts = GetPrintInfo(out info, SettleOption.Cash); Discount = GetDiscountBills(.1M, out info); DiscountString = info; ClosingBalance = Opening + Receipts + AdvanceReceipts - - CcReceipts - - BtcReceipts - - AdvanceAdjusted - CashPayments - AdditionalVoids - + NetSales; + + CashReceipts; } } + #region Advances private decimal GetAdvancesAdjusted() { using (var session = SessionManager.Session) @@ -127,6 +126,8 @@ namespace Tanshu.Accounts.Repository return amt; } } + #endregion + public void Calculate(decimal cashDeposited, decimal retainedOvernight) { this.CashDeposited = cashDeposited; @@ -135,84 +136,123 @@ namespace Tanshu.Accounts.Repository Status = string.Format("{0:Extra Cash Rs #,##0.00; Cash Short Rs #,##0.00;Cash Perfect}", Excess); } - private decimal GetPending(out string info) + private decimal GetPrintInfo(out string info, SettleOption settleOption) { using (var session = SessionManager.Session) { Voucher voucher = null; decimal amount; decimal discount; - info = "\n\r--- Pending Bills ------------------------"; + info = string.Format("\n\r--- {0} ", settleOption.Display()).PadRight(44,'-'); var list = session.QueryOver(() => voucher) .Where(i => i.LastEditDate >= StartDate && i.LastEditDate <= FinishDate && i.User == Cashier && i.Void == false) - .WithSubquery.WhereExists(QueryOver.Of().Where(x => x.Voucher.VoucherID == voucher.VoucherID && x.Settled == SettleOption.Unsettled).Select(x => x.Voucher)) + .WithSubquery.WhereExists(QueryOver.Of().Where(x => x.Voucher.VoucherID == voucher.VoucherID && x.Settled == settleOption).Select(x => x.Voucher)) .List(); GetInfo(list, SettleOption.Unsettled, out amount, out discount, ref info); return amount; } } - private decimal GetNoCharge(out string info) - { - using (var session = SessionManager.Session) - { - Voucher voucher = null; - decimal amount; - decimal discount; - info = "\n\r--- No Charge ----------------------------"; - var list = session.QueryOver(() => voucher) - .Where(i => i.LastEditDate >= StartDate && - i.LastEditDate <= FinishDate && - i.User == Cashier && - i.Void == false) - .WithSubquery.WhereExists(QueryOver.Of().Where(x => x.Voucher.VoucherID == voucher.VoucherID && x.Settled == SettleOption.NoCharge).Select(x => x.Voucher)) - .List(); - GetInfo(list, SettleOption.NoCharge, out amount, out discount, ref info); - return amount; - } - } - private decimal GetBillToCompany(out string info) - { - using (var session = SessionManager.Session) - { - Voucher voucher = null; - decimal amount; - decimal discount; - info = "\n\r--- Bill To Company ----------------------"; - var list = session.QueryOver(() => voucher) - .Where(i => i.LastEditDate >= StartDate && - i.LastEditDate <= FinishDate && - i.User == Cashier && - i.Void == false) - .WithSubquery.WhereExists(QueryOver.Of().Where(x => x.Voucher.VoucherID == voucher.VoucherID && x.Settled == SettleOption.BillToCompany).Select(x => x.Voucher)) - .List(); - GetInfo(list, SettleOption.BillToCompany, out amount, out discount, ref info); - return amount; - } - } - private decimal GetCreditCard(out string info) - { - using (var session = SessionManager.Session) - { - Voucher voucher = null; - decimal amount; - decimal discount; - info = "\n\r--- Credit Card Bills --------------------"; - var list = session.QueryOver(() => voucher) - .Where(i => i.LastEditDate >= StartDate && - i.LastEditDate <= FinishDate && - i.User == Cashier && - i.Void == false) - .WithSubquery.WhereExists(QueryOver.Of().Where(x => x.Voucher.VoucherID == voucher.VoucherID && x.Settled == SettleOption.CreditCard).Select(x => x.Voucher)) - .List(); + //private decimal GetPending(out string info) + //{ + // using (var session = SessionManager.Session) + // { + // Voucher voucher = null; + // decimal amount; + // decimal discount; + // info = "\n\r--- Pending Bills ------------------------"; + // var list = session.QueryOver(() => voucher) + // .Where(i => i.LastEditDate >= StartDate && + // i.LastEditDate <= FinishDate && + // i.User == Cashier && + // i.Void == false) + // .WithSubquery.WhereExists(QueryOver.Of().Where(x => x.Voucher.VoucherID == voucher.VoucherID && x.Settled == SettleOption.Unsettled).Select(x => x.Voucher)) + // .List(); + // GetInfo(list, SettleOption.Unsettled, out amount, out discount, ref info); + // return amount; + // } + //} - GetInfo(list, SettleOption.CreditCard, out amount, out discount, ref info); - return amount; - } - } + //private decimal GetNoCharge(out string info) + //{ + // using (var session = SessionManager.Session) + // { + // Voucher voucher = null; + // decimal amount; + // decimal discount; + // info = "\n\r--- No Charge ----------------------------"; + // var list = session.QueryOver(() => voucher) + // .Where(i => i.LastEditDate >= StartDate && + // i.LastEditDate <= FinishDate && + // i.User == Cashier && + // i.Void == false) + // .WithSubquery.WhereExists(QueryOver.Of().Where(x => x.Voucher.VoucherID == voucher.VoucherID && x.Settled == SettleOption.NoCharge).Select(x => x.Voucher)) + // .List(); + // GetInfo(list, SettleOption.NoCharge, out amount, out discount, ref info); + // return amount; + // } + //} + //private decimal GetCashReceipts(out string info) + //{ + // using (var session = SessionManager.Session) + // { + // Voucher voucher = null; + // decimal amount; + // decimal discount; + // info = "\n\r--- Cash Settlement ----------------------"; + // var list = session.QueryOver(() => voucher) + // .Where(i => i.LastEditDate >= StartDate && + // i.LastEditDate <= FinishDate && + // i.User == Cashier && + // i.Void == false) + // .WithSubquery.WhereExists(QueryOver.Of().Where(x => x.Voucher.VoucherID == voucher.VoucherID && x.Settled == SettleOption.Cash).Select(x => x.Voucher)) + // .List(); + // GetInfo(list, SettleOption.Cash, out amount, out discount, ref info); + // return amount; + // } + //} + //private decimal GetBillToCompany(out string info) + //{ + // using (var session = SessionManager.Session) + // { + // Voucher voucher = null; + // decimal amount; + // decimal discount; + // info = "\n\r--- Bill To Company ----------------------"; + // var list = session.QueryOver(() => voucher) + // .Where(i => i.LastEditDate >= StartDate && + // i.LastEditDate <= FinishDate && + // i.User == Cashier && + // i.Void == false) + // .WithSubquery.WhereExists(QueryOver.Of().Where(x => x.Voucher.VoucherID == voucher.VoucherID && x.Settled == SettleOption.BillToCompany).Select(x => x.Voucher)) + // .List(); + // GetInfo(list, SettleOption.BillToCompany, out amount, out discount, ref info); + // return amount; + // } + //} + //private decimal GetCreditCard(out string info) + //{ + // using (var session = SessionManager.Session) + // { + // Voucher voucher = null; + // decimal amount; + // decimal discount; + // info = "\n\r--- Credit Card Bills --------------------"; + // var list = session.QueryOver(() => voucher) + // .Where(i => i.LastEditDate >= StartDate && + // i.LastEditDate <= FinishDate && + // i.User == Cashier && + // i.Void == false) + // .WithSubquery.WhereExists(QueryOver.Of().Where(x => x.Voucher.VoucherID == voucher.VoucherID && x.Settled == SettleOption.CreditCard).Select(x => x.Voucher)) + // .List(); + + // GetInfo(list, SettleOption.CreditCard, out amount, out discount, ref info); + // return amount; + // } + //} private decimal GetVoids(out string info) { using (var session = SessionManager.Session) @@ -261,31 +301,6 @@ and i.Discount >= :discount"; } } - private decimal GetNetSales() - { - using (var session = SessionManager.Session) - { - const string query = @" -select sum(i.Amount) from Voucher v -inner join v.Kots k -inner join k.Inventories i -where v.Date >= :startDate and v.Date <= :finishDate and v.User = :cashierID and v.Void = false -and exists (select Voucher from VoucherSettlement vs where vs.Voucher = v -and vs.Settled != :noCharge and vs.Settled != :unSettled and vs.Settled != :amount and vs.Settled != :roundoff) -"; - var amount = session.CreateQuery(query) - .SetParameter("startDate", StartDate) - .SetParameter("finishDate", FinishDate) - .SetParameter("cashierID", Cashier.UserID) - .SetParameter("unSettled", SettleOption.Unsettled) - .SetParameter("noCharge", SettleOption.NoCharge) - .SetParameter("amount", SettleOption.Amount) - .SetParameter("roundoff", SettleOption.RoundOff) - .UniqueResult(); - return amount; - } - } - private static void GetInfo(ICollection list, out decimal amount, out decimal discount, ref string info) { amount = 0; diff --git a/Tanshu.Accounts.Repository/BusinessLayer/FoodTableBI.cs b/Tanshu.Accounts.Repository/BusinessLayer/FoodTableBI.cs index c534ad9..5e0acab 100644 --- a/Tanshu.Accounts.Repository/BusinessLayer/FoodTableBI.cs +++ b/Tanshu.Accounts.Repository/BusinessLayer/FoodTableBI.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using NHibernate; using NHibernate.Criterion; using Tanshu.Accounts.Entities; +using System.Linq; namespace Tanshu.Accounts.Repository { @@ -63,7 +64,7 @@ namespace Tanshu.Accounts.Repository return _session.Get(foodTableID); } - public FoodTable GetByName(string name) + public FoodTable Get(string name) { return _session.CreateCriteria() .Add(Restrictions.Eq("Name", name)) @@ -122,5 +123,17 @@ namespace Tanshu.Accounts.Repository return voucher.VoucherID; } } + + public void UpdateStatus(Voucher voucher) + { + string status; + if (!voucher.Printed) + status = "running"; + else if (voucher.Settlements.Count(x => x.Settled == SettleOption.Unsettled) != 0 && voucher.Void == false) + status = "printed"; + else + status = null; + UpdateStatus(voucher.TableID, voucher.VoucherID, status); + } } } \ No newline at end of file diff --git a/Tanshu.Accounts.Repository/BusinessLayer/VoucherBI.cs b/Tanshu.Accounts.Repository/BusinessLayer/VoucherBI.cs index 04feceb..5c18d1b 100644 --- a/Tanshu.Accounts.Repository/BusinessLayer/VoucherBI.cs +++ b/Tanshu.Accounts.Repository/BusinessLayer/VoucherBI.cs @@ -67,7 +67,8 @@ namespace Tanshu.Accounts.Repository } UpdateSettlements(voucher, session); session.Save(voucher); - UpdateTable(voucher, session); + using (var ft = new FoodTableBI(session, true)) + ft.UpdateStatus(voucher); trans.Commit(); return addedKot == null ? (int?)null : addedKot.KotID; } @@ -82,13 +83,13 @@ namespace Tanshu.Accounts.Repository voucher.Settlements.Add(new VoucherSettlement() { Amount = amount, Settled = SettleOption.Amount }); else voucher.Settlements.Single(x => x.Settled == SettleOption.Amount).Amount = amount; - + var roundoff = Math.Round(amount) - amount; if (voucher.Settlements.Count(x => x.Settled == SettleOption.RoundOff) == 0) voucher.Settlements.Add(new VoucherSettlement() { Amount = roundoff, Settled = SettleOption.RoundOff }); else voucher.Settlements.Single(x => x.Settled == SettleOption.RoundOff).Amount = roundoff; - + var balance = voucher.Settlements.Where(x => x.Settled != SettleOption.Unsettled).Sum(x => x.Amount) * -1; if (voucher.Settlements.Count(x => x.Settled == SettleOption.Unsettled) == 0) voucher.Settlements.Add(new VoucherSettlement() { Amount = balance, Settled = SettleOption.Unsettled }); @@ -144,7 +145,8 @@ namespace Tanshu.Accounts.Repository } UpdateSettlements(voucher, session); session.Update(voucher); - UpdateTable(voucher, session); + using (var ft = new FoodTableBI(session, true)) + ft.UpdateStatus(voucher); trans.Commit(); if (addedKot == null) return null; @@ -153,21 +155,21 @@ namespace Tanshu.Accounts.Repository } } } - static private void UpdateTable(Voucher voucher, ISession session) - { - using (var ft = new FoodTableBI(session, true)) - { - string status; - if (!voucher.Printed) - status = "running"; - else if (voucher.Settlements.Count(x => x.Settled == SettleOption.Unsettled) != 0 && voucher.Void == false) - status = "printed"; - else - status = null; - ft.UpdateStatus(voucher.TableID, voucher.VoucherID, status); - } - } - static public Voucher GetVoucher(int voucherID) + //static private void UpdateTable(Voucher voucher, ISession session) + //{ + // using (var ft = new FoodTableBI(session, true)) + // { + // string status; + // if (!voucher.Printed) + // status = "running"; + // else if (voucher.Settlements.Count(x => x.Settled == SettleOption.Unsettled) != 0 && voucher.Void == false) + // status = "printed"; + // else + // status = null; + // ft.UpdateStatus(voucher.TableID, voucher.VoucherID, status); + // } + //} + static public Voucher Get(int voucherID) { using (var session = SessionManager.Session) { @@ -198,11 +200,12 @@ namespace Tanshu.Accounts.Repository { using (var trans = session.BeginTransaction()) { - var saleVoucher = session.Get(voucherID); - saleVoucher.Void = true; - saleVoucher.VoidReason = reason; - session.Save(saleVoucher); - UpdateTable(saleVoucher, session); + var voucher = session.Get(voucherID); + voucher.Void = true; + voucher.VoidReason = reason; + session.Save(voucher); + using (var ft = new FoodTableBI(session, true)) + ft.UpdateStatus(voucher); trans.Commit(); } } @@ -223,7 +226,8 @@ namespace Tanshu.Accounts.Repository voucher.User = user; voucher.LastEditDate = DbValues.Date; session.Update(voucher); - UpdateTable(voucher, session); + using (var ft = new FoodTableBI(session, true)) + ft.UpdateStatus(voucher); trans.Commit(); } } diff --git a/Tanshu.Accounts.Repository/DbValues.cs b/Tanshu.Accounts.Repository/DbValues.cs index 52ec448..bbc2702 100644 --- a/Tanshu.Accounts.Repository/DbValues.cs +++ b/Tanshu.Accounts.Repository/DbValues.cs @@ -21,7 +21,7 @@ namespace Tanshu.Accounts.Repository { using (var session = SessionManager.Session) { - string query = @"SELECT ISNULL('K-' + CAST(MAX(CAST(SUBSTRING(KotID, 3,8) AS int)) + 1 AS nvarchar(8)), 'K-1') FROM Entities_Vouchers"; + const string query = @"SELECT ISNULL('K-' + CAST(MAX(CAST(SUBSTRING(KotID, 3,8) AS int)) + 1 AS nvarchar(8)), 'K-1') FROM Entities_Vouchers"; var sqlQuery = session.CreateSQLQuery(query); return (string)sqlQuery.UniqueResult(); } @@ -33,7 +33,7 @@ namespace Tanshu.Accounts.Repository { using (var session = SessionManager.Session) { - string query = @"SELECT ISNULL('S-' + CAST(MAX(CAST(SUBSTRING(Code, 3,8) AS int)) + 1 AS nvarchar(8)), 'S-1') FROM Entities_Kots"; + const string query = @"SELECT ISNULL('S-' + CAST(MAX(CAST(SUBSTRING(Code, 3,8) AS int)) + 1 AS nvarchar(8)), 'S-1') FROM Entities_Kots"; var sqlQuery = session.CreateSQLQuery(query); return (string)sqlQuery.UniqueResult(); } @@ -45,7 +45,7 @@ namespace Tanshu.Accounts.Repository { using (var session = SessionManager.Session) { - string query = @" + const string query = @" DECLARE @BillID nvarchar(10) SELECT @BillID = ISNULL(CAST(MAX(CAST(REPLACE(BillID, '-', '') AS int)) + 1 AS nvarchar(9)), '010001') FROM Entities_Vouchers WHERE BillID LIKE '__-____' IF LEN(@BillID) = 5 diff --git a/Tanshu.Accounts.Repository/Lifetime/Session.cs b/Tanshu.Accounts.Repository/Lifetime/Session.cs index fb52336..1169a12 100644 --- a/Tanshu.Accounts.Repository/Lifetime/Session.cs +++ b/Tanshu.Accounts.Repository/Lifetime/Session.cs @@ -11,39 +11,39 @@ namespace Tanshu.Accounts.Contracts { public static class Session { - private static Dictionary roles; - private static User currentUser; + private static Dictionary _roles; + private static User _currentUser; public static bool IsAuthenticated { get; private set; } public static User User { get { - return currentUser; + return _currentUser; } set { if (value != null) { - currentUser = value; + _currentUser = value; IsAuthenticated = true; } else { - currentUser = null; + _currentUser = null; IsAuthenticated = false; - roles = null; + _roles = null; } } } public static bool IsAllowed(RoleConstants role) { - if (currentUser == null) + if (_currentUser == null) return false; - if (roles == null) - roles = new Dictionary(); - if (!roles.ContainsKey(role.Role)) - roles.Add(role.Role, MembershipBI.IsUserInRole(currentUser.UserID, role.Role)); - return roles[role.Role]; + if (_roles == null) + _roles = new Dictionary(); + if (!_roles.ContainsKey(role.Role)) + _roles.Add(role.Role, MembershipBI.IsUserInRole(_currentUser.UserID, role.Role)); + return _roles[role.Role]; }