From 69560cfb07a29361e0bb1583fed7787f97e0cc36 Mon Sep 17 00:00:00 2001 From: tanshu Date: Mon, 18 Jan 2016 16:13:43 +0530 Subject: [PATCH] Chore: Removed Waiter as it was not ever used. Refactor: Changed the user list form to a normal form. Feature: Service Charge disabled setting removes it from the Product Form. --- Sql/2016.01.04 Remove Waiter.sql | 81 ++++++++ Sql/2016.01.04 Service Charge Setting.sql | 1 + Tanshu.Accounts.Contracts/Constants.cs | 7 - .../Data Contracts/VoucherBO.cs | 15 +- .../Data Contracts/WaiterBO.cs | 28 --- .../Tanshu.Accounts.Contracts.csproj | 1 - Tanshu.Accounts.Helpers/SelectWaiter.cs | 109 ---------- .../Tanshu.Accounts.Helpers.csproj | 6 - .../Controllers/BillController.cs | 95 ++------- .../Controllers/ISaleForm.cs | 1 - Tanshu.Accounts.PointOfSale/MainForm.cs | 29 +-- .../MainForm.designer.cs | 22 +-- .../Products/ProductForm.Designer.cs | 125 ++++++------ .../Products/ProductForm.cs | 115 ++++++----- .../Properties/Resources.Designer.cs | 4 +- .../Sales/SalesForm.Designer.cs | 67 +++---- .../Sales/SalesForm.cs | 23 +-- .../Sales/SalesForm.resx | 3 - .../Tanshu.Accounts.PointOfSale.csproj | 10 + .../User Management/UserForm.Designer.cs | 56 ++++-- .../User Management/UserForm.cs | 62 +++--- .../User Management/UserListForm.Designer.cs | 187 ++++++++++++++++++ .../User Management/UserListForm.cs | 91 +++++++++ .../User Management/UserListForm.resx | 132 +++++++++++++ Tanshu.Accounts.Print/Thermal.cs | 3 +- Tanshu.Accounts.Print/ThermalBill.cs | 2 +- Tanshu.Accounts.Repository/SetupStore.cs | 1 - .../Tanshu.Accounts.Repository.csproj | 1 - Tanshu.Accounts.Repository/VoucherBI.cs | 3 +- Tanshu.Accounts.Repository/WaiterBI.cs | 24 --- 30 files changed, 776 insertions(+), 528 deletions(-) create mode 100644 Sql/2016.01.04 Remove Waiter.sql create mode 100644 Sql/2016.01.04 Service Charge Setting.sql delete mode 100644 Tanshu.Accounts.Contracts/Data Contracts/WaiterBO.cs delete mode 100644 Tanshu.Accounts.Helpers/SelectWaiter.cs create mode 100644 Tanshu.Accounts.PointOfSale/User Management/UserListForm.Designer.cs create mode 100644 Tanshu.Accounts.PointOfSale/User Management/UserListForm.cs create mode 100644 Tanshu.Accounts.PointOfSale/User Management/UserListForm.resx delete mode 100644 Tanshu.Accounts.Repository/WaiterBI.cs diff --git a/Sql/2016.01.04 Remove Waiter.sql b/Sql/2016.01.04 Remove Waiter.sql new file mode 100644 index 0000000..10dd307 --- /dev/null +++ b/Sql/2016.01.04 Remove Waiter.sql @@ -0,0 +1,81 @@ +BEGIN TRANSACTION +GO +IF EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK415A8D773E16E17E]') AND parent_object_id = OBJECT_ID(N'[dbo].[Vouchers]')) +ALTER TABLE [dbo].[Vouchers] DROP CONSTRAINT [FK415A8D773E16E17E] +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[Waiters]') AND type in (N'U')) +DROP TABLE [dbo].[Waiters] +GO +ALTER TABLE dbo.Vouchers DROP COLUMN WaiterID +GO +ALTER PROCEDURE [dbo].[VoucherUpdate] +@Pax int, +@UserID uniqueidentifier, +@TableID uniqueidentifier, +@CustomerID uniqueidentifier, +@Narration nvarchar(255), +@Void bit, +@VoidReason nvarchar(255), +@Printed bit, +@VoucherType int, +@VoucherID uniqueidentifier +AS +BEGIN + DECLARE @LastEditDate datetime; + DECLARE @Date datetime; + DECLARE @BillID int; + SELECT @Printed = CASE WHEN @Printed = 1 THEN 1 ELSE Printed END, + @BillID = BillID, @Date = Date, @LastEditDate = GETDATE() + FROM Vouchers WHERE VoucherID = @VoucherID; + + IF @Printed = 1 AND @BillID IS NULL + BEGIN + IF @VoucherType IN (1,3) + SELECT @BillID = ISNULL(MAX(BillID) + 1, 1) FROM Vouchers WHERE VoucherType IN (1, 3); + ELSE + SELECT @BillID = ISNULL(MAX(BillID) + 1, 1) FROM Vouchers WHERE VoucherType = @VoucherType; + IF @BillID % 10000 = 0 + SELECT @BillID = @BillID + 1; + SELECT @Date = @LastEditDate; + END + + UPDATE Vouchers SET Pax = @Pax, UserID = @UserID, TableID = @TableID, + CustomerID = @CustomerID, Narration = @Narration, Void = @Void, + VoidReason = @VoidReason, Printed = @Printed, VoucherType = @VoucherType, LastEditDate = @LastEditDate, + Date = @Date, BillID = @BillID + WHERE VoucherID = @VoucherID; +END +GO +ALTER PROCEDURE [dbo].[VoucherInsert] +@Pax int, +@UserID uniqueidentifier, +@TableID uniqueidentifier, +@CustomerID uniqueidentifier, +@Narration nvarchar(255), +@Void bit, +@VoidReason nvarchar(255), +@Printed bit, +@VoucherType int, +@VoucherID uniqueidentifier +AS +BEGIN + DECLARE @Date datetime; + DECLARE @BillID int; + DECLARE @KotID int; + SELECT @Date = GETDATE(), @BillID = null; + + SELECT @KotID = ISNULL(MAX(KotID) + 1, 1) FROM Vouchers; + IF @Printed = 1 + BEGIN + IF @VoucherType IN (1,3) + SELECT @BillID = ISNULL(MAX(BillID) + 1, 1) FROM Vouchers WHERE VoucherType IN (1, 3); + ELSE + SELECT @BillID = ISNULL(MAX(BillID) + 1, 1) FROM Vouchers WHERE VoucherType = @VoucherType; + IF @BillID % 10000 = 0 + SELECT @BillID = @BillID + 1; + END + INSERT INTO Vouchers (VoucherID, Date, Pax, UserID, CreationDate, LastEditDate, BillID, TableID, CustomerID, Narration, Void, VoidReason, Printed, VoucherType, KotID) + VALUES (@VoucherID, @Date, @Pax, @UserID, @Date, @Date, @BillID, @TableID, @CustomerID, @Narration, @Void, @VoidReason, @Printed, @VoucherType, @KotID); +END +GO +COMMIT \ No newline at end of file diff --git a/Sql/2016.01.04 Service Charge Setting.sql b/Sql/2016.01.04 Service Charge Setting.sql new file mode 100644 index 0000000..59b7981 --- /dev/null +++ b/Sql/2016.01.04 Service Charge Setting.sql @@ -0,0 +1 @@ +INSERT INTO Settings (SettingID, Name, Details) VALUES (NEWID(), 'Service Charge Enabled', 'no') \ No newline at end of file diff --git a/Tanshu.Accounts.Contracts/Constants.cs b/Tanshu.Accounts.Contracts/Constants.cs index 470038b..9d18199 100644 --- a/Tanshu.Accounts.Contracts/Constants.cs +++ b/Tanshu.Accounts.Contracts/Constants.cs @@ -14,12 +14,5 @@ namespace Tanshu.Accounts.Contracts return new Guid("2C716F4B-0736-429A-AD51-610D7C47CB5E"); } } - public static Guid WAITER - { - get - { - return new Guid("3ECB3BCE-CBBA-461C-BC16-5823FC075AAA"); - } - } } } diff --git a/Tanshu.Accounts.Contracts/Data Contracts/VoucherBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/VoucherBO.cs index fb1e898..147490f 100644 --- a/Tanshu.Accounts.Contracts/Data Contracts/VoucherBO.cs +++ b/Tanshu.Accounts.Contracts/Data Contracts/VoucherBO.cs @@ -22,12 +22,11 @@ namespace Tanshu.Accounts.Entities VoucherType = VoucherType.Regular; } - public Voucher(User user, Customer customer, FoodTable table, Waiter waiter, bool printed, bool isVoid, string narration) + public Voucher(User user, Customer customer, FoodTable table, bool printed, bool isVoid, string narration) : this(user) { Customer = customer; Table = table; - Waiter = waiter; Printed = printed; Void = isVoid; Narration = narration; @@ -48,7 +47,6 @@ namespace Tanshu.Accounts.Entities protected int? _billID; public virtual int? BillID { get { return _billID; } } public virtual FoodTable Table { get; set; } - public virtual Waiter Waiter { get; set; } public virtual Customer Customer { get; set; } public virtual IList Settlements { get; set; } public virtual string Narration { get; set; } @@ -93,8 +91,8 @@ namespace Tanshu.Accounts.Entities Table("Vouchers"); Schema("dbo"); Lazy(true); - SqlInsert(@"exec VoucherInsert ?,?,?,?,?,?,?,?,?,?,?"); - SqlUpdate(@"exec VoucherUpdate ?,?,?,?,?,?,?,?,?,?,?"); + SqlInsert(@"exec VoucherInsert ?,?,?,?,?,?,?,?,?,?"); + SqlUpdate(@"exec VoucherUpdate ?,?,?,?,?,?,?,?,?,?"); Id(x => x.VoucherID, map => map.Generator(Generators.GuidComb)); Property(x => x.Date, map => { @@ -149,13 +147,6 @@ namespace Tanshu.Accounts.Entities map.Cascade(Cascade.None); }); - ManyToOne(x => x.Waiter, map => - { - map.Column("WaiterID"); - map.NotNullable(true); - map.Cascade(Cascade.None); - }); - ManyToOne(x => x.Customer, map => { map.Column("CustomerID"); diff --git a/Tanshu.Accounts.Contracts/Data Contracts/WaiterBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/WaiterBO.cs deleted file mode 100644 index 038c45d..0000000 --- a/Tanshu.Accounts.Contracts/Data Contracts/WaiterBO.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; -using System.Runtime.Serialization; -using Tanshu.Accounts.Contracts; -using NHibernate.Mapping.ByCode.Conformist; -using NHibernate.Mapping.ByCode; -using System.Collections.Generic; - -namespace Tanshu.Accounts.Entities -{ - public class Waiter - { - public virtual Guid WaiterID { get; set; } - public virtual string Name { get; set; } - public virtual IList Vouchers { get; set; } - } - public class WaiterMap : ClassMapping - { - public WaiterMap() - { - Table("Waiters"); - Schema("dbo"); - Lazy(true); - Id(x => x.WaiterID, map => map.Generator(Generators.GuidComb)); - Property(x => x.Name, map => { map.NotNullable(true); map.Unique(true); }); - Bag(x => x.Vouchers, colmap => { colmap.Key(x => x.Column("WaiterID")); colmap.Inverse(true); }, map => { map.OneToMany(); }); - } - } -} diff --git a/Tanshu.Accounts.Contracts/Tanshu.Accounts.Contracts.csproj b/Tanshu.Accounts.Contracts/Tanshu.Accounts.Contracts.csproj index ad9a2a6..3dc2993 100644 --- a/Tanshu.Accounts.Contracts/Tanshu.Accounts.Contracts.csproj +++ b/Tanshu.Accounts.Contracts/Tanshu.Accounts.Contracts.csproj @@ -89,7 +89,6 @@ - diff --git a/Tanshu.Accounts.Helpers/SelectWaiter.cs b/Tanshu.Accounts.Helpers/SelectWaiter.cs deleted file mode 100644 index 2bcfebb..0000000 --- a/Tanshu.Accounts.Helpers/SelectWaiter.cs +++ /dev/null @@ -1,109 +0,0 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.Text; -using System.Windows.Forms; -using System.Linq; -using Tanshu.Accounts.Contracts; -using Tanshu.Data; -using Tanshu.Accounts.Entities; - -namespace Tanshu.Accounts.Helpers -{ - public class SelectWaiter : Tanshu.Data.BaseSelector - { - public event WaiterEventHandler WaiterEvent; - public SelectWaiter(GetData getData, bool autoClose) : base(getData, true, "Select a Waiter") - { - var filters = new List {"Name"}; - SetFilterColumns(filters); - grid.Columns["WaiterID"].Visible = false; - } - - protected override void FilterChanged(Dictionary filter) - { - //data = originalData.Where(d => d.Name.ToLower().Contains(filter["Name"].ToLower())).ToList(); - data = getData(filter); - bindingSource.DataSource = data; - } - protected override void UpdateDisplay(Waiter item) - { - DisplayLabel = item == null ? "" : string.Format("Waiter Name: {0}", item.Name); - } - - protected override Waiter HandleKeydown(object sender, ExtendedKeyEventArgs e) - { - var waiter = bindingSource.Current as Waiter; - - if (WaiterEvent == null) - { - e.Handled = false; - return waiter; - } - - var eventArgs = new SelectorEventArgs(null,SelectorAction.Insert); - switch (e.KeyCode) - { - case Keys.F1: - { - waiter = new Waiter { Name = base.filterColumns["Name"].Trim() }; - eventArgs = new SelectorEventArgs(waiter,SelectorAction.Insert); - break; - } - case Keys.F2: - { - if (waiter != null) - waiter.Name = base.filterColumns["Name"].Trim(); - eventArgs = new SelectorEventArgs(waiter, SelectorAction.Update); - break; - } - case Keys.F8: - { - if (waiter != null) - eventArgs = new SelectorEventArgs(waiter, SelectorAction.Delete); - break; - } - } - if ((waiter != null) && ((e.KeyCode == Keys.F1) || (e.KeyCode == Keys.F2) || (e.KeyCode == Keys.F8))) - waiter = WaiterEvent(sender, eventArgs); - - e.Handled = eventArgs.Handled; - return waiter; - } - #region Designer Code - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.components = new System.ComponentModel.Container(); - } - - #endregion - #endregion - } - public delegate Waiter WaiterEventHandler(object sender, SelectorEventArgs e); -} diff --git a/Tanshu.Accounts.Helpers/Tanshu.Accounts.Helpers.csproj b/Tanshu.Accounts.Helpers/Tanshu.Accounts.Helpers.csproj index b97abdd..9c35837 100644 --- a/Tanshu.Accounts.Helpers/Tanshu.Accounts.Helpers.csproj +++ b/Tanshu.Accounts.Helpers/Tanshu.Accounts.Helpers.csproj @@ -67,18 +67,12 @@ Code - - Form - Form Form - - Form - diff --git a/Tanshu.Accounts.PointOfSale/Controllers/BillController.cs b/Tanshu.Accounts.PointOfSale/Controllers/BillController.cs index 8ede911..a14b7b0 100644 --- a/Tanshu.Accounts.PointOfSale/Controllers/BillController.cs +++ b/Tanshu.Accounts.PointOfSale/Controllers/BillController.cs @@ -18,11 +18,6 @@ namespace Tanshu.Accounts.PointOfSale private Guid? _editVoucherID; private ISaleForm _saleForm; - public Waiter Waiter - { - get { return _voucher.Waiter; } - set { _voucher.Waiter = value; } - } public BillController(Guid? editVoucherID) { this._editVoucherID = editVoucherID; @@ -30,8 +25,6 @@ namespace Tanshu.Accounts.PointOfSale _voucher = new Voucher(Session.User); using (var bi = new CustomerBI()) _voucher.Customer = bi.Get(x => x.CustomerID == Constants.CASH_CUSTOMER); - using (var bi = new WaiterBI()) - _voucher.Waiter = bi.Get(x => x.WaiterID == Constants.WAITER); } public BillItemValue CurrentProduct { @@ -203,63 +196,6 @@ namespace Tanshu.Accounts.PointOfSale return form.Customer; } } - public void ShowWaiters(bool reset) - { - if (reset) - { - using (var bi = new WaiterBI()) - _voucher.Waiter = bi.Get(x => x.WaiterID == Constants.WAITER); - } - else - { - using (var selectWaiter = new SelectWaiter(WaiterBI.StaticList, true)) - { - selectWaiter.WaiterEvent += selectWaiter_waiterEvent; - selectWaiter.ShowDialog(); - if (selectWaiter.SelectedItem != null) - { - _voucher.Waiter = selectWaiter.SelectedItem; - } - else - { - using (var bi = new WaiterBI()) - _voucher.Waiter = bi.Get(x => x.WaiterID == Constants.WAITER); - } - } - } - _saleForm.SetWaiterDisplay(_voucher.Waiter.Name); - } - private Waiter selectWaiter_waiterEvent(object sender, SelectorEventArgs e) - { - var waiter = e.Item; - //if (!Thread.CurrentPrincipal.IsInRole("Waiter/Master")) - // return waiter; - - using (var bi = new WaiterBI()) - { - switch (e.Action) - { - case SelectorAction.Insert: // Add - bi.Insert(waiter); - bi.SaveChanges(); - e.Handled = true; - return waiter; - case SelectorAction.Update: // Edit - bi.Update(waiter); - bi.SaveChanges(); - e.Handled = true; - return waiter; - case SelectorAction.Delete: // Delete - bi.Delete(x => x.WaiterID == waiter.WaiterID); - bi.SaveChanges(); - e.Handled = true; - return bi.Get(x => x.WaiterID == Constants.WAITER); - default: - e.Handled = true; - return bi.Get(x => x.WaiterID == Constants.WAITER); - } - } - } private void ShowAmount() { var taxAmount = _bill.Values.Sum(b => b.ServiceTaxAmount + b.VatAmount); @@ -351,7 +287,6 @@ namespace Tanshu.Accounts.PointOfSale { _voucher = new Voucher(Session.User); ShowCustomers(true); - ShowWaiters(true); _bill.Clear(); var newKotKey = new BillItemKey(Guid.Empty); var newKotItem = new BillItemValue(); @@ -547,7 +482,7 @@ namespace Tanshu.Accounts.PointOfSale { #region Check if Allowed if (!Session.IsAllowed("Print Bill")) - return; // throw new PermissionException("Printing not allowed"); + return; if (_bill.Count == 1) //new kot only return; bool isPrinted = false, isVoid = false; @@ -587,15 +522,27 @@ namespace Tanshu.Accounts.PointOfSale } public void SplitBill() { + bool isPrinted = false; #region Permissions - - bool isPrinted, isVoid; - IsPrintedOrVoid(_voucher, out isPrinted, out isVoid); - if (_voucher.VoucherID == Guid.Empty || isVoid) - return; // must be existing non void bill - if (!Session.IsAllowed("Split Bill")) return; + if (_voucher.VoucherID == Guid.Empty) + return; // must be existing non void bill + using (var bi = new VoucherBI()) + { + var dbVoucher = bi.Get(x => x.VoucherID == _voucher.VoucherID); + if (dbVoucher.Void) + { + MessageBox.Show(string.Format("This Bill is already void.\nReason: {0}", _voucher.VoidReason), "Bill already Voided", MessageBoxButtons.OK, MessageBoxIcon.Error); + return;// must be a non void bill + } + if (dbVoucher.Printed && !Session.IsAllowed("Edit Printed Bill")) + { + MessageBox.Show("This Bill is already Printed.\nYou do not have the authority to alter it", "Bill already Printed", MessageBoxButtons.OK, MessageBoxIcon.Error); + return;// not allowed to edit printed bill + } + isPrinted = dbVoucher.Printed; + } #endregion #region Get Move List @@ -625,7 +572,6 @@ namespace Tanshu.Accounts.PointOfSale { Customer = _voucher.Customer, Table = table, - Waiter = _voucher.Waiter, Printed = isPrinted, Void = false, Narration = "", @@ -642,7 +588,6 @@ namespace Tanshu.Accounts.PointOfSale { Customer = _voucher.Customer, Table = _voucher.Table, - Waiter = _voucher.Waiter, Printed = isPrinted, Void = false, Narration = "", @@ -725,7 +670,6 @@ namespace Tanshu.Accounts.PointOfSale { Customer = _voucher.Customer, Table = _voucher.Table, - Waiter = _voucher.Waiter, Printed = true, Void = false, Narration = "", @@ -783,7 +727,6 @@ namespace Tanshu.Accounts.PointOfSale var voucher = bi.Get(x => x.VoucherID == _voucher.VoucherID); voucher.User = Session.User; voucher.Customer = _voucher.Customer; - voucher.Waiter = _voucher.Waiter; voucher.Printed = finalBill; voucher.VoucherType = _voucher.VoucherType; foreach (var item in _bill.Where(x => x.Key.BillItemType == BillItemType.Product && x.Key.KotID != Guid.Empty)) diff --git a/Tanshu.Accounts.PointOfSale/Controllers/ISaleForm.cs b/Tanshu.Accounts.PointOfSale/Controllers/ISaleForm.cs index 2806cbc..6e5b04b 100644 --- a/Tanshu.Accounts.PointOfSale/Controllers/ISaleForm.cs +++ b/Tanshu.Accounts.PointOfSale/Controllers/ISaleForm.cs @@ -13,7 +13,6 @@ namespace Tanshu.Accounts.PointOfSale { void ClearBill(List bill); void SetCustomerDisplay(string name); - void SetWaiterDisplay(string p); void CloseWindow(); void ShowAmount(decimal discountAmount, decimal grossAmount, decimal serviceChargeAmount, decimal taxAmount, decimal valueAmount, List bill); void ShowInfo(Voucher voucher); diff --git a/Tanshu.Accounts.PointOfSale/MainForm.cs b/Tanshu.Accounts.PointOfSale/MainForm.cs index c442916..95b566f 100644 --- a/Tanshu.Accounts.PointOfSale/MainForm.cs +++ b/Tanshu.Accounts.PointOfSale/MainForm.cs @@ -24,21 +24,6 @@ namespace Tanshu.Accounts.PointOfSale Text = "Point of Sale: Login (" + Environment.MachineName + ")"; } - private User form_userEvent(object sender, UserEventArgs e) - { - 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(); - } - private void btnLogin_Click(object sender, EventArgs e) { LoginUser(new KeyboardLogin()); @@ -79,17 +64,11 @@ namespace Tanshu.Accounts.PointOfSale Close(); } - private void btnCreateUser_Click(object sender, EventArgs e) + private void btnUsers_Click(object sender, EventArgs e) { if (Session.IsAllowed("Roles")) - using (var bi = new UserBI()) - { - using (var form = new SelectUser(bi.GetFilteredUsers, true)) - { - form.UserEvent += form_userEvent; - form.ShowDialog(); - } - } + using (var frm = new UserListForm()) + frm.ShowDialog(); } private void btnUserRoles_Click(object sender, EventArgs e) @@ -163,7 +142,7 @@ namespace Tanshu.Accounts.PointOfSale btnCustomer.Visible = Session.IsAllowed("Customers"); - btnCreateUser.Visible = Session.IsAllowed("Users"); + btnUsers.Visible = Session.IsAllowed("Users"); btnUserRoles.Visible = Session.IsAllowed("Users"); btnGroupRoles.Visible = Session.IsAllowed("Roles"); diff --git a/Tanshu.Accounts.PointOfSale/MainForm.designer.cs b/Tanshu.Accounts.PointOfSale/MainForm.designer.cs index 04e99b7..b855292 100644 --- a/Tanshu.Accounts.PointOfSale/MainForm.designer.cs +++ b/Tanshu.Accounts.PointOfSale/MainForm.designer.cs @@ -39,7 +39,7 @@ this.btnMachines = new System.Windows.Forms.Button(); this.btnModifiers = new System.Windows.Forms.Button(); this.btnOpenBill = new System.Windows.Forms.Button(); - this.btnCreateUser = new System.Windows.Forms.Button(); + this.btnUsers = new System.Windows.Forms.Button(); this.btnUserRoles = new System.Windows.Forms.Button(); this.btnGroupRoles = new System.Windows.Forms.Button(); this.btnCashierCheckout = new System.Windows.Forms.Button(); @@ -87,7 +87,7 @@ this.flowLayoutPanel1.Controls.Add(this.btnMachines); this.flowLayoutPanel1.Controls.Add(this.btnModifiers); this.flowLayoutPanel1.Controls.Add(this.btnOpenBill); - this.flowLayoutPanel1.Controls.Add(this.btnCreateUser); + this.flowLayoutPanel1.Controls.Add(this.btnUsers); this.flowLayoutPanel1.Controls.Add(this.btnUserRoles); this.flowLayoutPanel1.Controls.Add(this.btnGroupRoles); this.flowLayoutPanel1.Controls.Add(this.btnCashierCheckout); @@ -186,15 +186,15 @@ this.btnOpenBill.UseVisualStyleBackColor = true; this.btnOpenBill.Click += new System.EventHandler(this.btnOpenBill_Click); // - // btnCreateUser + // btnUsers // - this.btnCreateUser.Location = new System.Drawing.Point(3, 215); - this.btnCreateUser.Name = "btnCreateUser"; - this.btnCreateUser.Size = new System.Drawing.Size(150, 100); - this.btnCreateUser.TabIndex = 10; - this.btnCreateUser.Text = "Create User"; - this.btnCreateUser.UseVisualStyleBackColor = true; - this.btnCreateUser.Click += new System.EventHandler(this.btnCreateUser_Click); + this.btnUsers.Location = new System.Drawing.Point(3, 215); + this.btnUsers.Name = "btnUsers"; + this.btnUsers.Size = new System.Drawing.Size(150, 100); + this.btnUsers.TabIndex = 10; + this.btnUsers.Text = "Users"; + this.btnUsers.UseVisualStyleBackColor = true; + this.btnUsers.Click += new System.EventHandler(this.btnUsers_Click); // // btnUserRoles // @@ -346,7 +346,7 @@ private System.Windows.Forms.Button btnMachines; private System.Windows.Forms.Button btnModifiers; private System.Windows.Forms.Button btnOpenBill; - private System.Windows.Forms.Button btnCreateUser; + private System.Windows.Forms.Button btnUsers; private System.Windows.Forms.Button btnUserRoles; private System.Windows.Forms.Button btnGroupRoles; private System.Windows.Forms.Button btnCashierCheckout; diff --git a/Tanshu.Accounts.PointOfSale/Products/ProductForm.Designer.cs b/Tanshu.Accounts.PointOfSale/Products/ProductForm.Designer.cs index 9faeb95..a42fe25 100644 --- a/Tanshu.Accounts.PointOfSale/Products/ProductForm.Designer.cs +++ b/Tanshu.Accounts.PointOfSale/Products/ProductForm.Designer.cs @@ -33,7 +33,7 @@ this.bsProductGroups = new System.Windows.Forms.BindingSource(this.components); this.Label7 = new System.Windows.Forms.Label(); this.bsServiceTax = new System.Windows.Forms.BindingSource(this.components); - this.label5 = new System.Windows.Forms.Label(); + this.lblServiceCharge = new System.Windows.Forms.Label(); this.Label2 = new System.Windows.Forms.Label(); this.txtUnits = new System.Windows.Forms.TextBox(); this.txtName = new System.Windows.Forms.TextBox(); @@ -46,12 +46,13 @@ this.cmbProductGroup = new System.Windows.Forms.ComboBox(); this.btnCancel = new System.Windows.Forms.Button(); this.btnOk = new System.Windows.Forms.Button(); - this.txtFullPrice = new System.Windows.Forms.TextBox(); this.cmbServiceTax = new System.Windows.Forms.ComboBox(); this.label6 = new System.Windows.Forms.Label(); this.chkIsScTaxable = new System.Windows.Forms.CheckBox(); this.chkIsNotAvailable = new System.Windows.Forms.CheckBox(); this.label1 = new System.Windows.Forms.Label(); + this.txtFullPrice = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); ((System.ComponentModel.ISupportInitialize)(this.bsProductGroups)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.bsServiceTax)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.bsVat)).BeginInit(); @@ -60,11 +61,11 @@ // Label4 // this.Label4.AutoSize = true; - this.Label4.Location = new System.Drawing.Point(19, 41); + this.Label4.Location = new System.Drawing.Point(75, 41); this.Label4.Name = "Label4"; - this.Label4.Size = new System.Drawing.Size(85, 13); + this.Label4.Size = new System.Drawing.Size(31, 13); this.Label4.TabIndex = 15; - this.Label4.Text = "Price / Full Price"; + this.Label4.Text = "Price"; // // bsProductGroups // @@ -73,24 +74,24 @@ // Label7 // this.Label7.AutoSize = true; - this.Label7.Location = new System.Drawing.Point(70, 143); + this.Label7.Location = new System.Drawing.Point(70, 172); this.Label7.Name = "Label7"; this.Label7.Size = new System.Drawing.Size(36, 13); - this.Label7.TabIndex = 17; + this.Label7.TabIndex = 20; this.Label7.Text = "Group"; // // bsServiceTax // this.bsServiceTax.DataSource = typeof(Tanshu.Accounts.Entities.Tax); // - // label5 + // lblServiceCharge // - this.label5.AutoSize = true; - this.label5.Location = new System.Drawing.Point(26, 117); - this.label5.Name = "label5"; - this.label5.Size = new System.Drawing.Size(80, 13); - this.label5.TabIndex = 16; - this.label5.Text = "Service Charge"; + this.lblServiceCharge.AutoSize = true; + this.lblServiceCharge.Location = new System.Drawing.Point(26, 146); + this.lblServiceCharge.Name = "lblServiceCharge"; + this.lblServiceCharge.Size = new System.Drawing.Size(80, 13); + this.lblServiceCharge.TabIndex = 19; + this.lblServiceCharge.Text = "Service Charge"; // // Label2 // @@ -107,7 +108,7 @@ this.txtUnits.Location = new System.Drawing.Point(307, 12); this.txtUnits.Name = "txtUnits"; this.txtUnits.Size = new System.Drawing.Size(96, 20); - this.txtUnits.TabIndex = 2; + this.txtUnits.TabIndex = 1; // // txtName // @@ -115,12 +116,12 @@ this.txtName.Location = new System.Drawing.Point(112, 12); this.txtName.Name = "txtName"; this.txtName.Size = new System.Drawing.Size(189, 20); - this.txtName.TabIndex = 1; + this.txtName.TabIndex = 0; // // txtPrice // this.txtPrice.AccessibleName = ""; - this.txtPrice.Location = new System.Drawing.Point(112, 38); + this.txtPrice.Location = new System.Drawing.Point(112, 64); this.txtPrice.Name = "txtPrice"; this.txtPrice.Size = new System.Drawing.Size(104, 20); this.txtPrice.TabIndex = 3; @@ -131,10 +132,10 @@ this.cmbVat.DataSource = this.bsVat; this.cmbVat.DisplayMember = "Name"; this.cmbVat.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cmbVat.Location = new System.Drawing.Point(112, 88); + this.cmbVat.Location = new System.Drawing.Point(112, 117); this.cmbVat.Name = "cmbVat"; this.cmbVat.Size = new System.Drawing.Size(189, 21); - this.cmbVat.TabIndex = 4; + this.cmbVat.TabIndex = 6; this.cmbVat.ValueMember = "TaxID"; // // bsVat @@ -144,132 +145,141 @@ // chkIsActive // this.chkIsActive.AutoSize = true; - this.chkIsActive.Location = new System.Drawing.Point(307, 66); + this.chkIsActive.Location = new System.Drawing.Point(307, 95); this.chkIsActive.Name = "chkIsActive"; this.chkIsActive.Size = new System.Drawing.Size(67, 17); - this.chkIsActive.TabIndex = 7; + this.chkIsActive.TabIndex = 5; this.chkIsActive.Text = "Is Active"; this.chkIsActive.UseVisualStyleBackColor = true; // // txtServiceCharge // this.txtServiceCharge.AccessibleName = "Phone 1"; - this.txtServiceCharge.Location = new System.Drawing.Point(112, 115); + this.txtServiceCharge.Location = new System.Drawing.Point(112, 144); this.txtServiceCharge.Name = "txtServiceCharge"; this.txtServiceCharge.Size = new System.Drawing.Size(189, 20); - this.txtServiceCharge.TabIndex = 5; + this.txtServiceCharge.TabIndex = 8; this.txtServiceCharge.Text = "0"; // // btnAddProductGroup // - this.btnAddProductGroup.Location = new System.Drawing.Point(307, 141); + this.btnAddProductGroup.Location = new System.Drawing.Point(307, 170); this.btnAddProductGroup.Name = "btnAddProductGroup"; this.btnAddProductGroup.Size = new System.Drawing.Size(96, 21); - this.btnAddProductGroup.TabIndex = 9; + this.btnAddProductGroup.TabIndex = 11; this.btnAddProductGroup.Text = "Add Group"; // // cmbProductGroup // - this.cmbProductGroup.DataBindings.Add(new System.Windows.Forms.Binding("SelectedValue", this.bsProductGroups, "ProductGroupID", true)); - this.cmbProductGroup.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bsProductGroups, "Name", true)); this.cmbProductGroup.DataSource = this.bsProductGroups; this.cmbProductGroup.DisplayMember = "Name"; this.cmbProductGroup.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cmbProductGroup.Location = new System.Drawing.Point(112, 141); + this.cmbProductGroup.Location = new System.Drawing.Point(112, 170); this.cmbProductGroup.Name = "cmbProductGroup"; this.cmbProductGroup.Size = new System.Drawing.Size(189, 21); - this.cmbProductGroup.TabIndex = 8; + this.cmbProductGroup.TabIndex = 10; this.cmbProductGroup.ValueMember = "ProductGroupID"; // // btnCancel // - this.btnCancel.Location = new System.Drawing.Point(328, 169); + this.btnCancel.Location = new System.Drawing.Point(328, 198); this.btnCancel.Name = "btnCancel"; this.btnCancel.Size = new System.Drawing.Size(75, 75); - this.btnCancel.TabIndex = 11; + this.btnCancel.TabIndex = 13; this.btnCancel.Text = "&Cancel"; this.btnCancel.UseVisualStyleBackColor = true; this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); // // btnOk // - this.btnOk.Location = new System.Drawing.Point(247, 169); + this.btnOk.Location = new System.Drawing.Point(247, 198); this.btnOk.Name = "btnOk"; this.btnOk.Size = new System.Drawing.Size(75, 75); - this.btnOk.TabIndex = 10; + this.btnOk.TabIndex = 12; this.btnOk.Text = "&Ok"; this.btnOk.UseVisualStyleBackColor = true; this.btnOk.Click += new System.EventHandler(this.btnOk_Click); // - // txtFullPrice - // - this.txtFullPrice.AccessibleName = ""; - this.txtFullPrice.Location = new System.Drawing.Point(222, 38); - this.txtFullPrice.Name = "txtFullPrice"; - this.txtFullPrice.Size = new System.Drawing.Size(79, 20); - this.txtFullPrice.TabIndex = 19; - this.txtFullPrice.Text = "0"; - // // cmbServiceTax // this.cmbServiceTax.DataSource = this.bsServiceTax; this.cmbServiceTax.DisplayMember = "Name"; this.cmbServiceTax.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cmbServiceTax.Location = new System.Drawing.Point(112, 61); + this.cmbServiceTax.Location = new System.Drawing.Point(112, 90); this.cmbServiceTax.Name = "cmbServiceTax"; this.cmbServiceTax.Size = new System.Drawing.Size(189, 21); - this.cmbServiceTax.TabIndex = 20; + this.cmbServiceTax.TabIndex = 4; this.cmbServiceTax.ValueMember = "TaxID"; // // label6 // this.label6.AutoSize = true; - this.label6.Location = new System.Drawing.Point(42, 67); + this.label6.Location = new System.Drawing.Point(42, 96); this.label6.Name = "label6"; this.label6.Size = new System.Drawing.Size(64, 13); - this.label6.TabIndex = 21; + this.label6.TabIndex = 17; this.label6.Text = "Service Tax"; // // chkIsScTaxable // this.chkIsScTaxable.AutoSize = true; - this.chkIsScTaxable.Location = new System.Drawing.Point(307, 118); + this.chkIsScTaxable.Location = new System.Drawing.Point(307, 147); this.chkIsScTaxable.Name = "chkIsScTaxable"; this.chkIsScTaxable.Size = new System.Drawing.Size(91, 17); - this.chkIsScTaxable.TabIndex = 22; + this.chkIsScTaxable.TabIndex = 9; this.chkIsScTaxable.Text = "Is Sc Taxable"; this.chkIsScTaxable.UseVisualStyleBackColor = true; // // chkIsNotAvailable // this.chkIsNotAvailable.AutoSize = true; - this.chkIsNotAvailable.Location = new System.Drawing.Point(307, 93); + this.chkIsNotAvailable.Location = new System.Drawing.Point(307, 122); this.chkIsNotAvailable.Name = "chkIsNotAvailable"; this.chkIsNotAvailable.Size = new System.Drawing.Size(57, 17); - this.chkIsNotAvailable.TabIndex = 23; + this.chkIsNotAvailable.TabIndex = 7; this.chkIsNotAvailable.Text = "Is N/A"; this.chkIsNotAvailable.UseVisualStyleBackColor = true; // // label1 // this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(78, 94); + this.label1.Location = new System.Drawing.Point(78, 123); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(28, 13); - this.label1.TabIndex = 24; + this.label1.TabIndex = 18; this.label1.Text = "VAT"; // + // txtFullPrice + // + this.txtFullPrice.AccessibleName = ""; + this.txtFullPrice.Location = new System.Drawing.Point(112, 38); + this.txtFullPrice.Name = "txtFullPrice"; + this.txtFullPrice.Size = new System.Drawing.Size(104, 20); + this.txtFullPrice.TabIndex = 2; + this.txtFullPrice.Text = "0"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(15, 67); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(91, 13); + this.label3.TabIndex = 16; + this.label3.Text = "Happy Hour Price"; + // // ProductForm // + this.AcceptButton = this.btnOk; this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(415, 282); + this.ClientSize = new System.Drawing.Size(415, 285); + this.Controls.Add(this.txtFullPrice); + this.Controls.Add(this.label3); this.Controls.Add(this.label1); this.Controls.Add(this.chkIsNotAvailable); this.Controls.Add(this.chkIsScTaxable); this.Controls.Add(this.label6); this.Controls.Add(this.cmbServiceTax); - this.Controls.Add(this.txtFullPrice); this.Controls.Add(this.btnCancel); this.Controls.Add(this.btnOk); this.Controls.Add(this.btnAddProductGroup); @@ -278,7 +288,7 @@ this.Controls.Add(this.txtServiceCharge); this.Controls.Add(this.Label7); this.Controls.Add(this.txtPrice); - this.Controls.Add(this.label5); + this.Controls.Add(this.lblServiceCharge); this.Controls.Add(this.cmbVat); this.Controls.Add(this.txtUnits); this.Controls.Add(this.txtName); @@ -304,7 +314,7 @@ internal System.Windows.Forms.Label Label7; private System.Windows.Forms.BindingSource bsProductGroups; private System.Windows.Forms.BindingSource bsServiceTax; - internal System.Windows.Forms.Label label5; + internal System.Windows.Forms.Label lblServiceCharge; internal System.Windows.Forms.Label Label2; internal System.Windows.Forms.TextBox txtUnits; internal System.Windows.Forms.TextBox txtName; @@ -316,12 +326,13 @@ internal System.Windows.Forms.ComboBox cmbProductGroup; private System.Windows.Forms.Button btnCancel; private System.Windows.Forms.Button btnOk; - internal System.Windows.Forms.TextBox txtFullPrice; internal System.Windows.Forms.ComboBox cmbServiceTax; internal System.Windows.Forms.Label label6; private System.Windows.Forms.CheckBox chkIsScTaxable; private System.Windows.Forms.BindingSource bsVat; private System.Windows.Forms.CheckBox chkIsNotAvailable; internal System.Windows.Forms.Label label1; + internal System.Windows.Forms.TextBox txtFullPrice; + internal System.Windows.Forms.Label label3; } } \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/Products/ProductForm.cs b/Tanshu.Accounts.PointOfSale/Products/ProductForm.cs index 10e12a2..2e71e74 100644 --- a/Tanshu.Accounts.PointOfSale/Products/ProductForm.cs +++ b/Tanshu.Accounts.PointOfSale/Products/ProductForm.cs @@ -2,6 +2,7 @@ using System.Windows.Forms; using Tanshu.Accounts.Repository; using Tanshu.Accounts.Entities; +using System.Text.RegularExpressions; namespace Tanshu.Accounts.PointOfSale { @@ -17,6 +18,9 @@ namespace Tanshu.Accounts.PointOfSale private void Products_Load(object sender, EventArgs e) { FillCombos(); + using (var bis = new SettingBI()) + ShowServiceChargeControls(bis.Get(x => x.Name == "Service Charge Enabled").Details == "yes"); + if (_productID.HasValue) { Product product; @@ -40,6 +44,12 @@ namespace Tanshu.Accounts.PointOfSale } } + private void ShowServiceChargeControls(bool enabled) + { + lblServiceCharge.Visible = enabled; + txtServiceCharge.Visible = enabled; + chkIsScTaxable.Visible = enabled; + } private void FillCombos() { using (var bi = new ProductGroupBI()) @@ -59,68 +69,77 @@ namespace Tanshu.Accounts.PointOfSale cmbProductGroup.SelectedIndex = -1; } - private Product IsFormValid() + private void btnOk_Click(object sender, EventArgs e) { var product = new Product(); - if (_productID.HasValue) product.ProductID = _productID.Value; if (string.IsNullOrEmpty(txtName.Text.Trim())) - return null; + { + MessageBox.Show("Product name cannot be blank."); + txtName.Focus(); + return; + } product.Name = txtName.Text.Trim(); product.Units = txtUnits.Text.Trim(); - decimal price; if (string.IsNullOrEmpty(txtPrice.Text.Trim())) + txtPrice.Text = "0"; + if (!Regex.IsMatch(txtPrice.Text, @"^\d*([.]\d{1,5})?$")) { - price = 0; + MessageBox.Show("Price is not valid, it must be a decimal >= 0"); + txtPrice.Focus(); + return; } else - { - if (!decimal.TryParse(txtPrice.Text.Trim(), out price)) - return null; - } - if (price < 0) - return null; - product.Price = price; + product.Price = decimal.Parse(txtPrice.Text.Trim()); if (string.IsNullOrEmpty(txtFullPrice.Text.Trim())) + txtFullPrice.Text = "0"; + if (!Regex.IsMatch(txtFullPrice.Text, @"^\d*([.]\d{1,5})?$")) { - price = 0; + MessageBox.Show("Full Price is not valid, it must be a decimal >= 0"); + txtFullPrice.Focus(); + return; } else + product.FullPrice = decimal.Parse(txtFullPrice.Text.Trim()); + + if (product.FullPrice < product.Price) { - if (!decimal.TryParse(txtFullPrice.Text.Trim(), out price)) - return null; + MessageBox.Show("Full Price cannot be less than the actual price."); + txtFullPrice.Focus(); + return; } - if (price < 0 || price < product.Price) - return null; - product.FullPrice = price; // Tax if (cmbVat.SelectedItem == null) - return null; + { + MessageBox.Show("Please choose VAT"); + cmbVat.Focus(); + return; + } product.Vat = (Tax)cmbVat.SelectedItem; if (cmbServiceTax.SelectedItem == null) - return null; + { + MessageBox.Show("Please choose Service Tax"); + cmbServiceTax.Focus(); + return; + } product.ServiceTax = (Tax)cmbServiceTax.SelectedItem; - decimal serviceCharge; if (string.IsNullOrEmpty(txtServiceCharge.Text.Trim())) + txtServiceCharge.Text = "0"; + if (!Regex.IsMatch(txtServiceCharge.Text, @"^0*([.]\d{1,5})?$")) { - serviceCharge = 0; + MessageBox.Show("Service Charge is not valid, it must be a decimal >= 0 and < 1"); + txtServiceCharge.Focus(); + return; } else - { - if (!decimal.TryParse(txtServiceCharge.Text.Trim(), out serviceCharge)) - return null; - } - - if (serviceCharge < 0 || serviceCharge > 1) - return null; - product.ServiceCharge = serviceCharge; + product.ServiceCharge = decimal.Parse(txtServiceCharge.Text.Trim()); product.IsScTaxable = chkIsScTaxable.Checked; product.IsActive = chkIsActive.Checked; @@ -128,29 +147,23 @@ namespace Tanshu.Accounts.PointOfSale //Group if (cmbProductGroup.SelectedItem == null) - return null; - product.ProductGroup = (ProductGroup)cmbProductGroup.SelectedItem; - return product; - } - - private void btnOk_Click(object sender, EventArgs e) - { - var product = IsFormValid(); - if (product != null) { - using (var bi = new ProductBI()) - { - if (_productID.HasValue) - bi.Update(product); - else - bi.Insert(product); - bi.SaveChanges(); - } - MessageBox.Show("Update / Save Successful"); - this.Close(); + MessageBox.Show("Please choose Product Group"); + cmbProductGroup.Focus(); + return; + } + product.ProductGroup = (ProductGroup)cmbProductGroup.SelectedItem; + + using (var bi = new ProductBI()) + { + if (_productID.HasValue) + bi.Update(product); + else + bi.Insert(product); + bi.SaveChanges(); } - else - MessageBox.Show("The form is not valid"); + MessageBox.Show("Update / Save Successful"); + this.Close(); } private void btnCancel_Click(object sender, EventArgs e) diff --git a/Tanshu.Accounts.PointOfSale/Properties/Resources.Designer.cs b/Tanshu.Accounts.PointOfSale/Properties/Resources.Designer.cs index 7250ad0..e2e011a 100644 --- a/Tanshu.Accounts.PointOfSale/Properties/Resources.Designer.cs +++ b/Tanshu.Accounts.PointOfSale/Properties/Resources.Designer.cs @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:2.0.50727.5485 +// Runtime Version:4.0.30319.34209 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -19,7 +19,7 @@ namespace Tanshu.Accounts.PointOfSale.Properties { // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { diff --git a/Tanshu.Accounts.PointOfSale/Sales/SalesForm.Designer.cs b/Tanshu.Accounts.PointOfSale/Sales/SalesForm.Designer.cs index b590e8c..6e60771 100644 --- a/Tanshu.Accounts.PointOfSale/Sales/SalesForm.Designer.cs +++ b/Tanshu.Accounts.PointOfSale/Sales/SalesForm.Designer.cs @@ -57,7 +57,6 @@ namespace Tanshu.Accounts.PointOfSale.Sales this.btnDelete = new System.Windows.Forms.Button(); this.btnDiscount = new System.Windows.Forms.Button(); this.btnModifier = new System.Windows.Forms.Button(); - this.btnWaiter = new System.Windows.Forms.Button(); this.btnPrintKot = new System.Windows.Forms.Button(); this.btnMoveTable = new System.Windows.Forms.Button(); this.btnPrintBill = new System.Windows.Forms.Button(); @@ -67,7 +66,7 @@ namespace Tanshu.Accounts.PointOfSale.Sales this.btnMore = new System.Windows.Forms.Button(); this.btnMoveKot = new System.Windows.Forms.Button(); this.btnSplitBill = new System.Windows.Forms.Button(); - this.label1 = new System.Windows.Forms.Label(); + this.lblServiceCharge = new System.Windows.Forms.Label(); this.txtServiceCharge = new System.Windows.Forms.TextBox(); this.txtTableID = new System.Windows.Forms.TextBox(); this.label11 = new System.Windows.Forms.Label(); @@ -82,12 +81,10 @@ namespace Tanshu.Accounts.PointOfSale.Sales this.txtBillID = new System.Windows.Forms.TextBox(); this.txtKotID = new System.Windows.Forms.TextBox(); this.btnCustomer = new System.Windows.Forms.Button(); - this.bsWaiter = new System.Windows.Forms.BindingSource(this.components); ((System.ComponentModel.ISupportInitialize)(this.dgvProducts)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.bindingSource)).BeginInit(); this.pnlBilling.SuspendLayout(); this.flpActions.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.bsWaiter)).BeginInit(); this.SuspendLayout(); // // label7 @@ -244,7 +241,7 @@ namespace Tanshu.Accounts.PointOfSale.Sales this.pnlBilling.Controls.Add(this.flpMain); this.pnlBilling.Controls.Add(this.flpGroup); this.pnlBilling.Controls.Add(this.flpActions); - this.pnlBilling.Controls.Add(this.label1); + this.pnlBilling.Controls.Add(this.lblServiceCharge); this.pnlBilling.Controls.Add(this.txtServiceCharge); this.pnlBilling.Controls.Add(this.txtTableID); this.pnlBilling.Controls.Add(this.label11); @@ -316,7 +313,6 @@ namespace Tanshu.Accounts.PointOfSale.Sales this.flpActions.Controls.Add(this.btnDelete); this.flpActions.Controls.Add(this.btnDiscount); this.flpActions.Controls.Add(this.btnModifier); - this.flpActions.Controls.Add(this.btnWaiter); this.flpActions.Controls.Add(this.btnPrintKot); this.flpActions.Controls.Add(this.btnMoveTable); this.flpActions.Controls.Add(this.btnPrintBill); @@ -382,19 +378,9 @@ namespace Tanshu.Accounts.PointOfSale.Sales this.btnModifier.UseVisualStyleBackColor = true; this.btnModifier.Click += new System.EventHandler(this.btnModifier_Click); // - // btnWaiter - // - this.btnWaiter.Location = new System.Drawing.Point(408, 3); - this.btnWaiter.Name = "btnWaiter"; - this.btnWaiter.Size = new System.Drawing.Size(75, 75); - this.btnWaiter.TabIndex = 150; - this.btnWaiter.Text = "Select Waiter - F5"; - this.btnWaiter.UseVisualStyleBackColor = true; - this.btnWaiter.Click += new System.EventHandler(this.btnWaiter_Click); - // // btnPrintKot // - this.btnPrintKot.Location = new System.Drawing.Point(489, 3); + this.btnPrintKot.Location = new System.Drawing.Point(408, 3); this.btnPrintKot.Name = "btnPrintKot"; this.btnPrintKot.Size = new System.Drawing.Size(75, 75); this.btnPrintKot.TabIndex = 145; @@ -404,7 +390,7 @@ namespace Tanshu.Accounts.PointOfSale.Sales // // btnMoveTable // - this.btnMoveTable.Location = new System.Drawing.Point(570, 3); + this.btnMoveTable.Location = new System.Drawing.Point(489, 3); this.btnMoveTable.Name = "btnMoveTable"; this.btnMoveTable.Size = new System.Drawing.Size(75, 75); this.btnMoveTable.TabIndex = 158; @@ -414,7 +400,7 @@ namespace Tanshu.Accounts.PointOfSale.Sales // // btnPrintBill // - this.btnPrintBill.Location = new System.Drawing.Point(651, 3); + this.btnPrintBill.Location = new System.Drawing.Point(570, 3); this.btnPrintBill.Name = "btnPrintBill"; this.btnPrintBill.Size = new System.Drawing.Size(75, 75); this.btnPrintBill.TabIndex = 144; @@ -424,7 +410,7 @@ namespace Tanshu.Accounts.PointOfSale.Sales // // btnClear // - this.btnClear.Location = new System.Drawing.Point(732, 3); + this.btnClear.Location = new System.Drawing.Point(651, 3); this.btnClear.Name = "btnClear"; this.btnClear.Size = new System.Drawing.Size(75, 75); this.btnClear.TabIndex = 148; @@ -434,7 +420,7 @@ namespace Tanshu.Accounts.PointOfSale.Sales // // btnVoid // - this.btnVoid.Location = new System.Drawing.Point(813, 3); + this.btnVoid.Location = new System.Drawing.Point(732, 3); this.btnVoid.Name = "btnVoid"; this.btnVoid.Size = new System.Drawing.Size(75, 75); this.btnVoid.TabIndex = 143; @@ -444,7 +430,7 @@ namespace Tanshu.Accounts.PointOfSale.Sales // // btnSettle // - this.btnSettle.Location = new System.Drawing.Point(894, 3); + this.btnSettle.Location = new System.Drawing.Point(813, 3); this.btnSettle.Name = "btnSettle"; this.btnSettle.Size = new System.Drawing.Size(75, 75); this.btnSettle.TabIndex = 155; @@ -454,7 +440,7 @@ namespace Tanshu.Accounts.PointOfSale.Sales // // btnMore // - this.btnMore.Location = new System.Drawing.Point(3, 84); + this.btnMore.Location = new System.Drawing.Point(894, 3); this.btnMore.Name = "btnMore"; this.btnMore.Size = new System.Drawing.Size(75, 75); this.btnMore.TabIndex = 159; @@ -464,7 +450,7 @@ namespace Tanshu.Accounts.PointOfSale.Sales // // btnMoveKot // - this.btnMoveKot.Location = new System.Drawing.Point(84, 84); + this.btnMoveKot.Location = new System.Drawing.Point(3, 84); this.btnMoveKot.Name = "btnMoveKot"; this.btnMoveKot.Size = new System.Drawing.Size(75, 75); this.btnMoveKot.TabIndex = 160; @@ -474,7 +460,7 @@ namespace Tanshu.Accounts.PointOfSale.Sales // // btnSplitBill // - this.btnSplitBill.Location = new System.Drawing.Point(165, 84); + this.btnSplitBill.Location = new System.Drawing.Point(84, 84); this.btnSplitBill.Name = "btnSplitBill"; this.btnSplitBill.Size = new System.Drawing.Size(75, 75); this.btnSplitBill.TabIndex = 161; @@ -482,16 +468,16 @@ namespace Tanshu.Accounts.PointOfSale.Sales this.btnSplitBill.UseVisualStyleBackColor = true; this.btnSplitBill.Click += new System.EventHandler(this.btnSplitBill_Click); // - // label1 + // lblServiceCharge // - this.label1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(235, 511); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(21, 13); - this.label1.TabIndex = 154; - this.label1.Text = "SC"; - this.label1.TextAlign = System.Drawing.ContentAlignment.TopRight; + this.lblServiceCharge.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.lblServiceCharge.AutoSize = true; + this.lblServiceCharge.Location = new System.Drawing.Point(235, 511); + this.lblServiceCharge.Name = "lblServiceCharge"; + this.lblServiceCharge.Size = new System.Drawing.Size(21, 13); + this.lblServiceCharge.TabIndex = 154; + this.lblServiceCharge.Text = "SC"; + this.lblServiceCharge.TextAlign = System.Drawing.ContentAlignment.TopRight; // // txtServiceCharge // @@ -616,10 +602,6 @@ namespace Tanshu.Accounts.PointOfSale.Sales this.btnCustomer.UseVisualStyleBackColor = true; this.btnCustomer.Click += new System.EventHandler(this.btnCustomer_Click); // - // bsWaiter - // - this.bsWaiter.DataSource = typeof(Tanshu.Accounts.Entities.Waiter); - // // SalesForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -630,8 +612,8 @@ namespace Tanshu.Accounts.PointOfSale.Sales this.MaximizeBox = false; this.Name = "SalesForm"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "F2-Qty., F3-Discount, F4-Customer, F5-Waiter, F7-Product, F8-LoadBill, F9-Set Amo" + - "unt, F11-Print Bill, F12-Print KOT, ESC-Cancel"; + this.Text = "F2-Qty., F3-Discount, F4-Customer, F7-Product, F8-LoadBill, F9-Set Amount, F11-Pr" + + "int Bill, F12-Print KOT, ESC-Cancel"; this.Load += new System.EventHandler(this.SalesForm_Load); this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.SalesForm_KeyDown); ((System.ComponentModel.ISupportInitialize)(this.dgvProducts)).EndInit(); @@ -639,7 +621,6 @@ namespace Tanshu.Accounts.PointOfSale.Sales this.pnlBilling.ResumeLayout(false); this.pnlBilling.PerformLayout(); this.flpActions.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.bsWaiter)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -648,7 +629,6 @@ namespace Tanshu.Accounts.PointOfSale.Sales #endregion private System.Windows.Forms.BindingSource bindingSource; - private System.Windows.Forms.BindingSource bsWaiter; internal System.Windows.Forms.Label label7; internal System.Windows.Forms.TextBox txtDiscount; internal System.Windows.Forms.Label Label12; @@ -679,8 +659,7 @@ namespace Tanshu.Accounts.PointOfSale.Sales private System.Windows.Forms.Button btnVoid; private System.Windows.Forms.Button btnRate; private System.Windows.Forms.Button btnClear; - private System.Windows.Forms.Button btnWaiter; - internal System.Windows.Forms.Label label1; + internal System.Windows.Forms.Label lblServiceCharge; internal System.Windows.Forms.TextBox txtServiceCharge; private System.Windows.Forms.Button btnSettle; private System.Windows.Forms.FlowLayoutPanel flpActions; diff --git a/Tanshu.Accounts.PointOfSale/Sales/SalesForm.cs b/Tanshu.Accounts.PointOfSale/Sales/SalesForm.cs index 1026ac5..214c251 100644 --- a/Tanshu.Accounts.PointOfSale/Sales/SalesForm.cs +++ b/Tanshu.Accounts.PointOfSale/Sales/SalesForm.cs @@ -31,11 +31,6 @@ namespace Tanshu.Accounts.PointOfSale.Sales btnCustomer.Text = name; } - public void SetWaiterDisplay(string name) - { - btnWaiter.Text = string.Format("{0} - F5", name); - } - public void ShowInfo(Voucher voucher) { if (voucher.VoucherID == Guid.Empty) @@ -53,7 +48,6 @@ namespace Tanshu.Accounts.PointOfSale.Sales btnCustomer.Text = voucher.Customer.Name; txtTableID.Text = voucher.Table.Name; txtPax.Text = voucher.Pax.ToString(); - btnWaiter.Text = string.Format("{0} - F5", voucher.Waiter.Name); } } @@ -89,11 +83,6 @@ namespace Tanshu.Accounts.PointOfSale.Sales _billController.ShowCustomers(false); break; } - case Keys.F5: - { - btnWaiter_Click(sender, new EventArgs()); - break; - } case Keys.F7: { //using (var selectProduct = new SelectProduct(ProductBI.GetFilteredProducts, true)) @@ -157,6 +146,12 @@ namespace Tanshu.Accounts.PointOfSale.Sales private void SalesForm_Load(object sender, EventArgs e) { + using (var bis = new SettingBI()) + { + var showSC = bis.Get(x => x.Name == "Service Charge Enabled").Details == "yes"; + txtServiceCharge.Visible = showSC; + lblServiceCharge.Visible = showSC; + } _billController.FormLoad(); FormState = SaleFormState.Waiting; } @@ -218,11 +213,6 @@ namespace Tanshu.Accounts.PointOfSale.Sales } } - private void btnWaiter_Click(object sender, EventArgs e) - { - _billController.ShowWaiters(false); - } - private void btnSettle_Click(object sender, EventArgs e) { _billController.SettleBill(); @@ -290,7 +280,6 @@ namespace Tanshu.Accounts.PointOfSale.Sales txtLastEditDate.Text = ""; txtTableID.Text = ""; txtPax.Text = ""; - btnWaiter.Text = "Waiter - F5"; txtGrossTax.Text = "0.00"; txtDiscount.Text = "0.00"; txtServiceCharge.Text = "0.00"; diff --git a/Tanshu.Accounts.PointOfSale/Sales/SalesForm.resx b/Tanshu.Accounts.PointOfSale/Sales/SalesForm.resx index 4230359..8b31211 100644 --- a/Tanshu.Accounts.PointOfSale/Sales/SalesForm.resx +++ b/Tanshu.Accounts.PointOfSale/Sales/SalesForm.resx @@ -123,9 +123,6 @@ 17, 17 - - 148, 17 - 81 diff --git a/Tanshu.Accounts.PointOfSale/Tanshu.Accounts.PointOfSale.csproj b/Tanshu.Accounts.PointOfSale/Tanshu.Accounts.PointOfSale.csproj index c962f8d..83513b6 100644 --- a/Tanshu.Accounts.PointOfSale/Tanshu.Accounts.PointOfSale.csproj +++ b/Tanshu.Accounts.PointOfSale/Tanshu.Accounts.PointOfSale.csproj @@ -280,6 +280,12 @@ AssignRoleGroups.cs + + Form + + + UserListForm.cs + Form @@ -415,6 +421,10 @@ AssignRoleGroups.cs Designer + + UserListForm.cs + Designer + UserForm.cs Designer diff --git a/Tanshu.Accounts.PointOfSale/User Management/UserForm.Designer.cs b/Tanshu.Accounts.PointOfSale/User Management/UserForm.Designer.cs index d775aea..7995f88 100644 --- a/Tanshu.Accounts.PointOfSale/User Management/UserForm.Designer.cs +++ b/Tanshu.Accounts.PointOfSale/User Management/UserForm.Designer.cs @@ -36,15 +36,17 @@ this.btnDelete = new System.Windows.Forms.Button(); this.btnCancel = new System.Windows.Forms.Button(); this.btnSave = new System.Windows.Forms.Button(); + this.txtRetype = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); this.SuspendLayout(); // // label1 // this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(12, 13); + this.label1.Location = new System.Drawing.Point(12, 12); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(60, 13); - this.label1.TabIndex = 0; + this.label1.TabIndex = 7; this.label1.Text = "User Name"; // // txtUsername @@ -58,63 +60,83 @@ // this.txtPassword.Location = new System.Drawing.Point(78, 38); this.txtPassword.Name = "txtPassword"; - this.txtPassword.PasswordChar = '/'; this.txtPassword.Size = new System.Drawing.Size(188, 20); this.txtPassword.TabIndex = 1; + this.txtPassword.UseSystemPasswordChar = true; // // label2 // this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(12, 39); + this.label2.Location = new System.Drawing.Point(19, 38); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(53, 13); - this.label2.TabIndex = 2; + this.label2.TabIndex = 8; this.label2.Text = "Password"; // // chkLocked // this.chkLocked.AutoSize = true; - this.chkLocked.Location = new System.Drawing.Point(78, 65); + this.chkLocked.Location = new System.Drawing.Point(78, 90); this.chkLocked.Name = "chkLocked"; this.chkLocked.Size = new System.Drawing.Size(82, 17); - this.chkLocked.TabIndex = 2; + this.chkLocked.TabIndex = 3; this.chkLocked.Text = "Locked Out"; this.chkLocked.UseVisualStyleBackColor = true; // // btnDelete // - this.btnDelete.Location = new System.Drawing.Point(96, 88); + this.btnDelete.Location = new System.Drawing.Point(96, 113); this.btnDelete.Name = "btnDelete"; this.btnDelete.Size = new System.Drawing.Size(78, 23); - this.btnDelete.TabIndex = 9; + this.btnDelete.TabIndex = 5; this.btnDelete.Text = "&Delete"; this.btnDelete.UseVisualStyleBackColor = true; this.btnDelete.Click += new System.EventHandler(this.btnDelete_Click); // // btnCancel // - this.btnCancel.Location = new System.Drawing.Point(180, 88); + this.btnCancel.Location = new System.Drawing.Point(180, 113); this.btnCancel.Name = "btnCancel"; this.btnCancel.Size = new System.Drawing.Size(85, 23); - this.btnCancel.TabIndex = 10; + this.btnCancel.TabIndex = 6; this.btnCancel.Text = "&Cancel"; this.btnCancel.UseVisualStyleBackColor = true; + this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); // // btnSave // - this.btnSave.Location = new System.Drawing.Point(12, 88); + this.btnSave.Location = new System.Drawing.Point(12, 113); this.btnSave.Name = "btnSave"; this.btnSave.Size = new System.Drawing.Size(78, 23); - this.btnSave.TabIndex = 11; + this.btnSave.TabIndex = 4; this.btnSave.Text = "&Save"; this.btnSave.UseVisualStyleBackColor = true; this.btnSave.Click += new System.EventHandler(this.btnSave_Click); // + // txtRetype + // + this.txtRetype.Location = new System.Drawing.Point(78, 65); + this.txtRetype.Name = "txtRetype"; + this.txtRetype.Size = new System.Drawing.Size(188, 20); + this.txtRetype.TabIndex = 2; + this.txtRetype.UseSystemPasswordChar = true; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(31, 65); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(41, 13); + this.label3.TabIndex = 9; + this.label3.Text = "Retype"; + // // UserForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(300, 136); + this.ClientSize = new System.Drawing.Size(300, 148); + this.Controls.Add(this.txtRetype); + this.Controls.Add(this.label3); this.Controls.Add(this.btnSave); this.Controls.Add(this.btnCancel); this.Controls.Add(this.btnDelete); @@ -126,8 +148,8 @@ this.MaximizeBox = false; this.Name = "UserForm"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "User Form"; - this.Load += new System.EventHandler(this.NewUser_Load); + this.Text = "User"; + this.Load += new System.EventHandler(this.UserForm_Load); this.ResumeLayout(false); this.PerformLayout(); @@ -143,5 +165,7 @@ private System.Windows.Forms.Button btnDelete; private System.Windows.Forms.Button btnCancel; private System.Windows.Forms.Button btnSave; + private System.Windows.Forms.TextBox txtRetype; + private System.Windows.Forms.Label label3; } } \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/User Management/UserForm.cs b/Tanshu.Accounts.PointOfSale/User Management/UserForm.cs index 01eb82d..5fb0261 100644 --- a/Tanshu.Accounts.PointOfSale/User Management/UserForm.cs +++ b/Tanshu.Accounts.PointOfSale/User Management/UserForm.cs @@ -31,60 +31,60 @@ namespace Tanshu.Accounts.PointOfSale btnCancel_Click(sender, e); } - private void NewUser_Load(object sender, EventArgs e) + private void UserForm_Load(object sender, EventArgs e) { if (_user == null) return; txtUsername.Text = _user.Name; txtPassword.Text = _user.Password; + txtRetype.Text = _user.Password; chkLocked.Checked = _user.LockedOut; } - private bool Save() + private void Save() { - if (_user == null) - _user = new User(); - _user.Name = txtUsername.Text.Trim(); - if (_user.Password != txtPassword.Text.Trim()) - _user.Password = Common.Md5.Hash(txtPassword.Text.Trim(), "v2"); - _user.LockedOut = (chkLocked.Checked == true ? true : false); - if (_user.UserID == Guid.Empty) - using (var bi = new UserBI()) - { + using (var bi = new UserBI()) + { + if (_user == null) + _user = new User(); + else + _user = bi.Get(x => x.UserID == _user.UserID); + + _user.Name = txtUsername.Text.Trim(); + if (_user.Password != txtPassword.Text.Trim()) + _user.Password = Common.Md5.Hash(txtPassword.Text.Trim(), "v2"); + _user.LockedOut = (chkLocked.Checked == true ? true : false); + + if (_user.UserID == Guid.Empty) bi.Insert(_user); - bi.SaveChanges(); - } - else - using (var bi = new UserBI()) - { + else bi.Update(_user); - bi.SaveChanges(); - } - return true; + bi.SaveChanges(); + } } private void btnSave_Click(object sender, EventArgs e) { - if (!ValidateValues()) + if (txtUsername.Text.Trim() == "") { - MessageBox.Show("Missing Information: Please check the form."); + MessageBox.Show("Username cannot be blank."); txtUsername.Focus(); } + else if (txtPassword.Text.Trim() != txtRetype.Text.Trim()) + { + MessageBox.Show("Passwords do not match."); + txtPassword.Focus(); + } + else if (string.IsNullOrEmpty(txtPassword.Text.Trim())) + { + MessageBox.Show("Password cannot be empty."); + txtPassword.Focus(); + } else { Save(); btnCancel_Click(sender, e); } } - private bool ValidateValues() - { - if (txtUsername.Text.Trim() == "") - return false; - if (txtPassword.Text.Trim() == "") - return false; - return true; - } - - } } diff --git a/Tanshu.Accounts.PointOfSale/User Management/UserListForm.Designer.cs b/Tanshu.Accounts.PointOfSale/User Management/UserListForm.Designer.cs new file mode 100644 index 0000000..71b1c66 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/User Management/UserListForm.Designer.cs @@ -0,0 +1,187 @@ +namespace Tanshu.Accounts.PointOfSale +{ + partial class UserListForm + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.btnAdd = new System.Windows.Forms.Button(); + this.btnEdit = new System.Windows.Forms.Button(); + this.btnExit = new System.Windows.Forms.Button(); + this.dgvUsers = new System.Windows.Forms.DataGridView(); + this.bsList = new System.Windows.Forms.BindingSource(this.components); + this.nameDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Password = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.MsrString = new System.Windows.Forms.DataGridViewCheckBoxColumn(); + this.LockedOut = new System.Windows.Forms.DataGridViewCheckBoxColumn(); + this.UserGroups = new System.Windows.Forms.DataGridViewTextBoxColumn(); + ((System.ComponentModel.ISupportInitialize)(this.dgvUsers)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsList)).BeginInit(); + this.SuspendLayout(); + // + // btnAdd + // + this.btnAdd.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.btnAdd.Location = new System.Drawing.Point(12, 255); + this.btnAdd.Name = "btnAdd"; + this.btnAdd.Size = new System.Drawing.Size(75, 75); + this.btnAdd.TabIndex = 68; + this.btnAdd.Text = "&Add"; + this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click); + // + // btnEdit + // + this.btnEdit.AccessibleName = "Done"; + this.btnEdit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.btnEdit.Location = new System.Drawing.Point(93, 255); + this.btnEdit.Name = "btnEdit"; + this.btnEdit.Size = new System.Drawing.Size(75, 75); + this.btnEdit.TabIndex = 62; + this.btnEdit.Text = "&Edit"; + this.btnEdit.Click += new System.EventHandler(this.btnEdit_Click); + // + // btnExit + // + this.btnExit.AccessibleName = "Done"; + this.btnExit.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.btnExit.Location = new System.Drawing.Point(575, 255); + this.btnExit.Name = "btnExit"; + this.btnExit.Size = new System.Drawing.Size(75, 75); + this.btnExit.TabIndex = 61; + this.btnExit.Text = "E&xit"; + this.btnExit.Click += new System.EventHandler(this.btnExit_Click); + // + // dgvUsers + // + this.dgvUsers.AllowUserToAddRows = false; + this.dgvUsers.AllowUserToDeleteRows = false; + this.dgvUsers.AllowUserToResizeRows = false; + this.dgvUsers.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.dgvUsers.AutoGenerateColumns = false; + this.dgvUsers.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.AllCells; + this.dgvUsers.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dgvUsers.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.nameDataGridViewTextBoxColumn, + this.Password, + this.MsrString, + this.LockedOut, + this.UserGroups}); + this.dgvUsers.DataSource = this.bsList; + this.dgvUsers.EditMode = System.Windows.Forms.DataGridViewEditMode.EditProgrammatically; + this.dgvUsers.Location = new System.Drawing.Point(12, 12); + this.dgvUsers.MultiSelect = false; + this.dgvUsers.Name = "dgvUsers"; + this.dgvUsers.ReadOnly = true; + this.dgvUsers.RowHeadersVisible = false; + this.dgvUsers.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.DisableResizing; + this.dgvUsers.RowTemplate.Height = 24; + this.dgvUsers.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.dgvUsers.Size = new System.Drawing.Size(638, 237); + this.dgvUsers.TabIndex = 74; + this.dgvUsers.CellFormatting += new System.Windows.Forms.DataGridViewCellFormattingEventHandler(this.dgvUsers_CellFormatting); + // + // bsList + // + this.bsList.DataSource = typeof(Tanshu.Accounts.Entities.Auth.User); + // + // nameDataGridViewTextBoxColumn + // + this.nameDataGridViewTextBoxColumn.DataPropertyName = "Name"; + this.nameDataGridViewTextBoxColumn.HeaderText = "Name"; + this.nameDataGridViewTextBoxColumn.Name = "nameDataGridViewTextBoxColumn"; + this.nameDataGridViewTextBoxColumn.ReadOnly = true; + this.nameDataGridViewTextBoxColumn.Width = 60; + // + // unitsDataGridViewTextBoxColumn + // + this.Password.DataPropertyName = "Password"; + this.Password.HeaderText = "Password"; + this.Password.Name = "Password"; + this.Password.ReadOnly = true; + this.Password.Width = 78; + // + // MsrString + // + this.MsrString.DataPropertyName = "MsrString"; + this.MsrString.HeaderText = "Msr"; + this.MsrString.Name = "MsrString"; + this.MsrString.ReadOnly = true; + this.MsrString.Width = 30; + // + // LockedOut + // + this.LockedOut.DataPropertyName = "LockedOut"; + this.LockedOut.HeaderText = "Locked"; + this.LockedOut.Name = "LockedOut"; + this.LockedOut.ReadOnly = true; + this.LockedOut.Width = 49; + // + // UserGroups + // + this.UserGroups.DataPropertyName = "UserGroups"; + this.UserGroups.HeaderText = "Groups"; + this.UserGroups.Name = "UserGroups"; + this.UserGroups.ReadOnly = true; + this.UserGroups.Width = 66; + // + // UserListForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(662, 342); + this.Controls.Add(this.dgvUsers); + this.Controls.Add(this.btnAdd); + this.Controls.Add(this.btnEdit); + this.Controls.Add(this.btnExit); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "UserListForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Users"; + this.Load += new System.EventHandler(this.UserListForm_Load); + ((System.ComponentModel.ISupportInitialize)(this.dgvUsers)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsList)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + internal System.Windows.Forms.Button btnAdd; + internal System.Windows.Forms.Button btnEdit; + internal System.Windows.Forms.Button btnExit; + private System.Windows.Forms.DataGridView dgvUsers; + private System.Windows.Forms.BindingSource bsList; + private System.Windows.Forms.DataGridViewTextBoxColumn nameDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn Password; + private System.Windows.Forms.DataGridViewCheckBoxColumn MsrString; + private System.Windows.Forms.DataGridViewCheckBoxColumn LockedOut; + private System.Windows.Forms.DataGridViewTextBoxColumn UserGroups; + } +} \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/User Management/UserListForm.cs b/Tanshu.Accounts.PointOfSale/User Management/UserListForm.cs new file mode 100644 index 0000000..5693568 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/User Management/UserListForm.cs @@ -0,0 +1,91 @@ +using System; +using System.Linq; +using System.Windows.Forms; +using Tanshu.Accounts.Entities; +using Tanshu.Accounts.Repository; +using System.Collections.Generic; +using Tanshu.Accounts.Entities.Auth; + +namespace Tanshu.Accounts.PointOfSale +{ + public partial class UserListForm : Form + { + private IList _list; + public UserListForm() + { + InitializeComponent(); + } + + private void btnAdd_Click(object sender, EventArgs e) + { + using (var frm = new UserForm(null)) + frm.ShowDialog(); + using (var bi = new UserBI()) + _list = bi.List(); + bsList.DataSource = _list; + } + + private void UserListForm_Load(object sender, EventArgs e) + { + ShowGrid(); + } + private void ShowGrid() + { + using (var bi = new UserBI()) + _list = bi.List(); + bsList.DataSource = _list; + } + + private void btnEdit_Click(object sender, EventArgs e) + { + var id = ((User)bsList.Current).UserID; + using (var frm = new UserForm(id)) + frm.ShowDialog(); + using (var bi = new UserBI()) + _list = bi.List(); + bsList.DataSource = _list; + } + + private void btnExit_Click(object sender, EventArgs e) + { + this.Close(); + } + + private void dgvUsers_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) + { + var data = dgvUsers.Rows[e.RowIndex].DataBoundItem as User; + if (data == null) + return; + if (e.ColumnIndex == dgvUsers.Columns["Password"].Index) + { + e.Value = "******"; + } + + if (e.ColumnIndex == dgvUsers.Columns["MsrString"].Index) + { + e.Value = !string.IsNullOrEmpty(data.MsrString); + } + + if (e.ColumnIndex == dgvUsers.Columns["UserGroups"].Index) + { + e.Value = string.Join(", ", data.UserGroups.Select(x => x.Group.Name).ToArray()); + } + + var tax = e.Value as Tax; + if (tax != null) + { + e.Value = string.Format("{1:P} - {0}", tax.Name, tax.Rate); ; + return; + } + var productGroup = e.Value as ProductGroup; + if (productGroup != null) + { + e.Value = productGroup.Name; + } + } + private void chkIsActive_CheckStateChanged(object sender, EventArgs e) + { + ShowGrid(); + } + } +} diff --git a/Tanshu.Accounts.PointOfSale/User Management/UserListForm.resx b/Tanshu.Accounts.PointOfSale/User Management/UserListForm.resx new file mode 100644 index 0000000..8803dc3 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/User Management/UserListForm.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + True + + + True + + + True + + + 17, 17 + + \ No newline at end of file diff --git a/Tanshu.Accounts.Print/Thermal.cs b/Tanshu.Accounts.Print/Thermal.cs index ab4b9ce..de23a03 100644 --- a/Tanshu.Accounts.Print/Thermal.cs +++ b/Tanshu.Accounts.Print/Thermal.cs @@ -18,12 +18,11 @@ namespace Tanshu.Accounts.Print private static string DesignKot(Voucher voucher, Kot kot, IEnumerable billItems, int copyNumber) { - var waiter = voucher.Waiter; var billText = "\n\r" + "KOT / BOT".Center42(); billText += "\n\r" + string.Format("Copy No. {0}", copyNumber).Center42(); billText += DrawLine; billText += string.Format("\n\rKOT ID : K-{0,-5}/S-{1,-5} {2:dd-MMM-yyyy HH:mm}", voucher.KotID, kot.Code, kot.Date); - billText += string.Format("\n\rTable No.: {0} / {1}", voucher.Table.Name, waiter.Name); + billText += string.Format("\n\rTable No.: {0}", voucher.Table.Name); billText += DrawLine; billText += "\n\r Qty. x Name "; billText += DrawLine; diff --git a/Tanshu.Accounts.Print/ThermalBill.cs b/Tanshu.Accounts.Print/ThermalBill.cs index b9a883f..fcf44a6 100644 --- a/Tanshu.Accounts.Print/ThermalBill.cs +++ b/Tanshu.Accounts.Print/ThermalBill.cs @@ -103,7 +103,7 @@ namespace Tanshu.Accounts.Print billText += string.Format("\n\r{0}\n\r{1}", voucher.Customer.Phone, voucher.Customer.Address); billText += DrawLine; } - billText += "\n\r" + "Cashier : " + voucher.User.Name + " / " + voucher.Waiter.Name; + billText += "\n\r" + "Cashier : " + voucher.User.Name; using (var bis = new SettingBI()) billText += "\n\r" + bis.Get(x => x.Name == "Footer").Details; return billText; diff --git a/Tanshu.Accounts.Repository/SetupStore.cs b/Tanshu.Accounts.Repository/SetupStore.cs index a37f1a0..8ae3718 100644 --- a/Tanshu.Accounts.Repository/SetupStore.cs +++ b/Tanshu.Accounts.Repository/SetupStore.cs @@ -102,7 +102,6 @@ namespace Tanshu.Accounts.Repository var entities = new Type[] { typeof(VoucherMap), typeof(UserMap), - typeof(WaiterMap), typeof(CustomerMap), typeof(UserGroupMap), typeof(KotMap), diff --git a/Tanshu.Accounts.Repository/Tanshu.Accounts.Repository.csproj b/Tanshu.Accounts.Repository/Tanshu.Accounts.Repository.csproj index 5b20478..2dde8c4 100644 --- a/Tanshu.Accounts.Repository/Tanshu.Accounts.Repository.csproj +++ b/Tanshu.Accounts.Repository/Tanshu.Accounts.Repository.csproj @@ -91,7 +91,6 @@ - diff --git a/Tanshu.Accounts.Repository/VoucherBI.cs b/Tanshu.Accounts.Repository/VoucherBI.cs index a8ef557..616f511 100644 --- a/Tanshu.Accounts.Repository/VoucherBI.cs +++ b/Tanshu.Accounts.Repository/VoucherBI.cs @@ -82,7 +82,6 @@ namespace Tanshu.Accounts.Repository if (voucher == null) return voucher; NHibernateUtil.Initialize(voucher.Customer); - NHibernateUtil.Initialize(voucher.Waiter); NHibernateUtil.Initialize(voucher.User); NHibernateUtil.Initialize(voucher.Table); foreach (var kot in voucher.Kots) @@ -203,7 +202,7 @@ namespace Tanshu.Accounts.Repository var kot = _session.Get(kotID); var oldVoucher = _session.Get(kot.Voucher.VoucherID); var table = _session.QueryOver().Where(x => x.FoodTableID == tableID).SingleOrDefault(); - var newVoucher = new Voucher(Session.User, oldVoucher.Customer, table, oldVoucher.Waiter, false, false, ""); + var newVoucher = new Voucher(Session.User, oldVoucher.Customer, table, false, false, ""); Insert(newVoucher); oldVoucher.Kots.Remove(kot); diff --git a/Tanshu.Accounts.Repository/WaiterBI.cs b/Tanshu.Accounts.Repository/WaiterBI.cs deleted file mode 100644 index 70d0ab1..0000000 --- a/Tanshu.Accounts.Repository/WaiterBI.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System.Collections.Generic; -using NHibernate; -using Tanshu.Accounts.Entities; -using NHibernate.Criterion; - -namespace Tanshu.Accounts.Repository -{ - public class WaiterBI : UnitOfWork - { - public IList List(Dictionary filter) - { - return _session.QueryOver() - .WhereRestrictionOn(x => x.Name).IsLike(string.Format("%{0}%", filter["Name"])) - .List(); - } - public static IList StaticList(Dictionary filter) - { - using (var bi = new WaiterBI()) - { - return bi.List(filter); - } - } - } -}