Files
narsil/Tanshu.Accounts.Contracts/Data Contracts/VoucherBO.cs
tanshu 49faa9786d Moved to a new printer name format in PrintLocation
If printing from windows, then the printer name should be prefixed with smb.
If printing from linux, then the printer name should be prefixed with cups.
If printing directly, then the printer name should be prefixed with pdl.
2018-05-17 15:52:27 +05:30

161 lines
5.8 KiB
C#

using NHibernate.Mapping.ByCode;
using NHibernate.Mapping.ByCode.Conformist;
using System;
using System.Collections.Generic;
using Tanshu.Accounts.Entities.Auth;
namespace Tanshu.Accounts.Entities
{
public class Voucher
{
public Voucher()
{
Kots = new List<Kot>();
Settlements = new List<VoucherSettlement>();
}
public Voucher(User user, Customer customer)
: this()
{
this.User = user;
VoucherType = VoucherType.Regular;
Customer = customer;
}
public Voucher(User user, Customer customer, FoodTable table, bool printed, bool isVoid, string narration)
: this(user, customer)
{
Table = table;
Printed = printed;
Void = isVoid;
Narration = narration;
VoucherType = VoucherType.Regular;
}
public virtual Guid VoucherID { get; set; }
protected DateTime _date;
public virtual DateTime Date { get { return _date; } }
public virtual int Pax { get; set; }
public virtual User User { get; set; }
protected DateTime _creationDate;
public virtual DateTime CreationDate { get { return _creationDate; } }
protected DateTime _lastEditDate;
public virtual DateTime LastEditDate { get { return _lastEditDate; } }
protected int? _billID;
public virtual int? BillID { get { return _billID; } }
public virtual FoodTable Table { get; set; }
public virtual Customer Customer { get; set; }
public virtual IList<VoucherSettlement> Settlements { get; set; }
public virtual string Narration { get; set; }
public virtual bool Void { get; set; }
public virtual string VoidReason { get; set; }
public virtual bool Printed { get; set; }
public virtual VoucherType VoucherType { get; set; }
protected int _kotID;
public virtual int KotID { get { return _kotID; } }
public virtual IList<Kot> Kots { get; set; }
public virtual IList<Reprint> Reprints { get; set; }
public virtual string FullBillID
{
get
{
if (BillID.HasValue)
{
switch (VoucherType)
{
case VoucherType.NoCharge:
return "NC-" + BillID.Value.ToString();
case VoucherType.Staff:
return "ST-" + BillID.Value.ToString();
case VoucherType.TakeAway:
case VoucherType.Regular:
default:
return (BillID.Value / 10000).ToString() + "-" + (BillID.Value % 10000).ToString();
}
}
else
{
return "K-" + KotID.ToString();
}
}
}
}
public class VoucherMap : ClassMapping<Voucher>
{
public VoucherMap()
{
Table("Vouchers");
Schema("dbo");
Lazy(true);
SqlInsert(@"exec VoucherInsert ?,?,?,?,?,?,?,?,?,?");
SqlUpdate(@"exec VoucherUpdate ?,?,?,?,?,?,?,?,?,?");
Id(x => x.VoucherID, map => map.Generator(Generators.GuidComb));
Property(x => x.Date, map =>
{
map.NotNullable(true);
map.Generated(PropertyGeneration.Always);
map.Access(Accessor.NoSetter);
});
Property(x => x.Pax);
Property(x => x.VoucherType, map =>
{
map.NotNullable(true);
map.UniqueKey("UQ_BillID_VoucherType");
});
Property(x => x.Narration);
Property(x => x.CreationDate, map =>
{
map.NotNullable(true);
map.Generated(PropertyGeneration.Insert);
map.Access(Accessor.NoSetter);
});
Property(x => x.LastEditDate, map =>
{
map.NotNullable(true);
map.Generated(PropertyGeneration.Always);
map.Access(Accessor.NoSetter);
});
Property(x => x.BillID, map =>
{
map.Generated(PropertyGeneration.Always);
map.Access(Accessor.NoSetter);
map.UniqueKey("UQ_BillID_VoucherType");
});
Property(x => x.Void, map => map.NotNullable(true));
Property(x => x.VoidReason);
Property(x => x.Printed, map => map.NotNullable(true));
Property(x => x.KotID, map =>
{
map.NotNullable(true);
map.Generated(PropertyGeneration.Insert);
map.Access(Accessor.NoSetter);
});
ManyToOne(x => x.User, map =>
{
map.Column("UserID");
map.NotNullable(true);
map.Cascade(Cascade.None);
});
ManyToOne(x => x.Table, map =>
{
map.Column("TableID");
map.NotNullable(true);
map.Cascade(Cascade.None);
});
ManyToOne(x => x.Customer, map =>
{
map.Column("CustomerID");
map.NotNullable(true);
map.Cascade(Cascade.None);
});
Bag(x => x.Kots, colmap => { colmap.Key(x => x.Column("VoucherID")); colmap.Inverse(true); colmap.OrderBy(o => o.Date); }, map => { map.OneToMany(); });
Bag(x => x.Reprints, colmap => { colmap.Key(x => x.Column("VoucherID")); colmap.Inverse(true); }, map => { map.OneToMany(); });
Bag(x => x.Settlements, colmap => { colmap.Key(x => x.Column("VoucherID")); colmap.Inverse(true); }, map => { map.OneToMany(); });
}
}
}