Changed Checkout to correctly reflect cash. Minor updates.

This commit is contained in:
unknown
2011-04-11 18:25:45 +05:30
parent 7229ebc0bb
commit 0cb7d3cf09
14 changed files with 254 additions and 195 deletions

View File

@ -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>(() => voucher)
.Where(i => i.LastEditDate >= StartDate &&
i.LastEditDate <= FinishDate &&
i.User == Cashier &&
i.Void == false)
.WithSubquery.WhereExists(QueryOver.Of<VoucherSettlement>().Where(x => x.Voucher.VoucherID == voucher.VoucherID && x.Settled == SettleOption.Unsettled).Select(x => x.Voucher))
.WithSubquery.WhereExists(QueryOver.Of<VoucherSettlement>().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>(() => voucher)
.Where(i => i.LastEditDate >= StartDate &&
i.LastEditDate <= FinishDate &&
i.User == Cashier &&
i.Void == false)
.WithSubquery.WhereExists(QueryOver.Of<VoucherSettlement>().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>(() => voucher)
.Where(i => i.LastEditDate >= StartDate &&
i.LastEditDate <= FinishDate &&
i.User == Cashier &&
i.Void == false)
.WithSubquery.WhereExists(QueryOver.Of<VoucherSettlement>().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>(() => voucher)
.Where(i => i.LastEditDate >= StartDate &&
i.LastEditDate <= FinishDate &&
i.User == Cashier &&
i.Void == false)
.WithSubquery.WhereExists(QueryOver.Of<VoucherSettlement>().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>(() => voucher)
// .Where(i => i.LastEditDate >= StartDate &&
// i.LastEditDate <= FinishDate &&
// i.User == Cashier &&
// i.Void == false)
// .WithSubquery.WhereExists(QueryOver.Of<VoucherSettlement>().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>(() => voucher)
// .Where(i => i.LastEditDate >= StartDate &&
// i.LastEditDate <= FinishDate &&
// i.User == Cashier &&
// i.Void == false)
// .WithSubquery.WhereExists(QueryOver.Of<VoucherSettlement>().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>(() => voucher)
// .Where(i => i.LastEditDate >= StartDate &&
// i.LastEditDate <= FinishDate &&
// i.User == Cashier &&
// i.Void == false)
// .WithSubquery.WhereExists(QueryOver.Of<VoucherSettlement>().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>(() => voucher)
// .Where(i => i.LastEditDate >= StartDate &&
// i.LastEditDate <= FinishDate &&
// i.User == Cashier &&
// i.Void == false)
// .WithSubquery.WhereExists(QueryOver.Of<VoucherSettlement>().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>(() => voucher)
// .Where(i => i.LastEditDate >= StartDate &&
// i.LastEditDate <= FinishDate &&
// i.User == Cashier &&
// i.Void == false)
// .WithSubquery.WhereExists(QueryOver.Of<VoucherSettlement>().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<decimal>();
return amount;
}
}
private static void GetInfo(ICollection<Voucher> list, out decimal amount, out decimal discount, ref string info)
{
amount = 0;

View File

@ -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<FoodTable>(foodTableID);
}
public FoodTable GetByName(string name)
public FoodTable Get(string name)
{
return _session.CreateCriteria<FoodTable>()
.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);
}
}
}

View File

@ -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<Voucher>(voucherID);
saleVoucher.Void = true;
saleVoucher.VoidReason = reason;
session.Save(saleVoucher);
UpdateTable(saleVoucher, session);
var voucher = session.Get<Voucher>(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();
}
}

View File

@ -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

View File

@ -11,39 +11,39 @@ namespace Tanshu.Accounts.Contracts
{
public static class Session
{
private static Dictionary<string, bool> roles;
private static User currentUser;
private static Dictionary<string, bool> _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<string, bool>();
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<string, bool>();
if (!_roles.ContainsKey(role.Role))
_roles.Add(role.Role, MembershipBI.IsUserInRole(_currentUser.UserID, role.Role));
return _roles[role.Role];
}