From 2d1030abf6bb83f8f41b0165cac98a190b2e06ea Mon Sep 17 00:00:00 2001 From: unknown Date: Sun, 8 Apr 2012 17:58:15 +0530 Subject: [PATCH] Scripts to transition database to new version. Changed inventory and product entities to split Vat and Service Tax and IsScTaxable. Added MessageBox on startup to inform about Debug Mode. Updated ProductForm for the change. Work still needs to be done on Thermal Printing where the hack for VAT on Food and VAT on Liqour is still there. Now No Service Tax on Delivery Works as promised. --- .../1. New Tax For Pets.sql | 85 ++++++++ Sql/Service Tax Change/2. Update Taxes.sql | 40 ++++ .../3. Update Products Table.sql | 102 ++++++++++ .../Data Contracts Display/BillInventoryBO.cs | 39 +++- .../Data Contracts/InventoryBO.cs | 15 +- .../Data Contracts/ProductBO.cs | 4 +- .../Controllers/BillController.cs | 10 +- Tanshu.Accounts.PointOfSale/MainForm.cs | 3 + .../Products/ProductForm.Designer.cs | 189 ++++++++++++------ .../Products/ProductForm.cs | 18 +- .../Products/ProductForm.resx | 7 +- .../Products/ProductListForm.Designer.cs | 66 +++--- .../Products/ProductListForm.cs | 2 +- .../Products/ProductListForm.resx | 2 +- .../Sales/SalesForm.cs | 2 +- Tanshu.Accounts.Print/Thermal.cs | 14 +- Tanshu.Accounts.Print/ThermalBill.cs | 23 +-- .../BusinessLayer/ProductBI.cs | 6 +- .../BusinessLayer/SalesAnalysisBI.cs | 28 ++- .../BusinessLayer/VoucherBI.cs | 9 +- 20 files changed, 519 insertions(+), 145 deletions(-) create mode 100644 Sql/Service Tax Change/1. New Tax For Pets.sql create mode 100644 Sql/Service Tax Change/2. Update Taxes.sql create mode 100644 Sql/Service Tax Change/3. Update Products Table.sql diff --git a/Sql/Service Tax Change/1. New Tax For Pets.sql b/Sql/Service Tax Change/1. New Tax For Pets.sql new file mode 100644 index 0000000..8068725 --- /dev/null +++ b/Sql/Service Tax Change/1. New Tax For Pets.sql @@ -0,0 +1,85 @@ +BEGIN TRANSACTION +GO +ALTER TABLE dbo.Entities_Inventories + DROP CONSTRAINT FK53E4F7FE3F88CAB6 +GO +ALTER TABLE dbo.Entities_Inventories + DROP CONSTRAINT FK53E4F7FEDB70F42 +GO +CREATE TABLE dbo.Tmp_Entities_Inventories + ( + InventoryID int NOT NULL IDENTITY (1, 1), + Quantity decimal(19, 5) NOT NULL, + Price decimal(19, 5) NOT NULL, + FullPrice decimal(19, 5) NOT NULL, + ServiceTax decimal(19, 5) NOT NULL, + Vat decimal(19, 5) NOT NULL, + Discount decimal(19, 5) NOT NULL, + ServiceCharge decimal(19, 5) NOT NULL, + IsScTaxable bit NOT NULL, + Amount AS CASE WHEN IsScTaxable = 1 THEN Quantity * Price * (1 - Discount) * (1 + ServiceCharge) * (1 + ServiceTax + Vat) ELSE Quantity * Price * (1 - Discount) * (1 + ServiceCharge + ServiceTax + Vat) END, + KotID int NULL, + ProductID int NULL + ) ON [PRIMARY] +GO +SET IDENTITY_INSERT dbo.Tmp_Entities_Inventories ON +GO +IF EXISTS(SELECT * FROM dbo.Entities_Inventories) + EXEC('INSERT INTO dbo.Tmp_Entities_Inventories (InventoryID, Quantity, Price, FullPrice, ServiceTax, Vat, Discount, ServiceCharge, IsScTaxable, KotID, ProductID) + SELECT InventoryID, Quantity, Price, FullPrice, 0, Tax, Discount, ServiceCharge, 1, KotID, ProductID FROM dbo.Entities_Inventories WITH (HOLDLOCK TABLOCKX)') +GO +SET IDENTITY_INSERT dbo.Tmp_Entities_Inventories OFF +GO +ALTER TABLE dbo.Entities_InventoryModifiers + DROP CONSTRAINT FK695304F8BA29671A +GO +DROP TABLE dbo.Entities_Inventories +GO +EXECUTE sp_rename N'dbo.Tmp_Entities_Inventories', N'Entities_Inventories', 'OBJECT' +GO +ALTER TABLE dbo.Entities_Inventories ADD CONSTRAINT + PK__Entities_Inventories PRIMARY KEY CLUSTERED + ( + InventoryID + ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] + +GO +CREATE NONCLUSTERED INDEX IX_Entities_Inventories ON dbo.Entities_Inventories + ( + KotID + ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +GO +ALTER TABLE dbo.Entities_Inventories ADD CONSTRAINT + FK53E4F7FEDB70F42 FOREIGN KEY + ( + KotID + ) REFERENCES dbo.Entities_Kots + ( + KotID + ) ON UPDATE NO ACTION + ON DELETE NO ACTION + +GO +ALTER TABLE dbo.Entities_Inventories ADD CONSTRAINT + FK53E4F7FE3F88CAB6 FOREIGN KEY + ( + ProductID + ) REFERENCES dbo.Entities_Products + ( + ProductID + ) ON UPDATE NO ACTION + ON DELETE NO ACTION + +GO +ALTER TABLE dbo.Entities_InventoryModifiers ADD CONSTRAINT + FK695304F8BA29671A FOREIGN KEY + ( + InventoryID + ) REFERENCES dbo.Entities_Inventories + ( + InventoryID + ) ON UPDATE NO ACTION + ON DELETE NO ACTION + +GO +COMMIT diff --git a/Sql/Service Tax Change/2. Update Taxes.sql b/Sql/Service Tax Change/2. Update Taxes.sql new file mode 100644 index 0000000..ce2dde2 --- /dev/null +++ b/Sql/Service Tax Change/2. Update Taxes.sql @@ -0,0 +1,40 @@ +select distinct vat from entities_inventories + +select * from entities_taxes + + +update entities_inventories set issctaxable = 0, servicetax = 0, vat = 0 +where vat = 0.00000 + +update entities_inventories set issctaxable = 1, servicetax = 0, vat = 0.13125 +where vat = 0.13125 + +update entities_inventories set issctaxable = 1, servicetax = 0, vat = 0.26250 +where vat = 0.26250 + +update entities_inventories set issctaxable = 0, servicetax = 0.03708, vat = 0.13125 +where vat = 0.15303 + +update entities_inventories set issctaxable = 0, servicetax = 0.03708, vat = 0.1575 +where vat = 0.17690 + +update entities_inventories set issctaxable = 0, servicetax = 0.0309, vat = 0.13125 +where vat = 0.14741 + +update entities_inventories set issctaxable = 0, servicetax = 0.0309, vat = 0.2625 +where vat = 0.26673 + +update entities_inventories set issctaxable = 0, servicetax = 0.03, vat = 0.13125 +where vat = 0.14659 + +update entities_inventories set issctaxable = 0, servicetax = 0.03, vat = 0.2625 +where vat = 0.26591 + + +UPDATE Entities_Taxes SET Name = 'VAT on Food 12.5%', Rate = .13125 WHERE TaxID = 1 + +UPDATE Entities_Taxes SET Name = 'VAT on Liquor 15%', Rate = .1575 WHERE TaxID = 2 + +UPDATE Entities_Taxes SET Name = 'Cental Govt. ST 12%', Rate = 0.03708 WHERE TaxID = 3 + +UPDATE Entities_Taxes SET Name = 'Tax Paid / Free', Rate = 0 WHERE TaxID = 4 diff --git a/Sql/Service Tax Change/3. Update Products Table.sql b/Sql/Service Tax Change/3. Update Products Table.sql new file mode 100644 index 0000000..6c9e156 --- /dev/null +++ b/Sql/Service Tax Change/3. Update Products Table.sql @@ -0,0 +1,102 @@ +BEGIN TRANSACTION +GO +ALTER TABLE dbo.Entities_Products + DROP CONSTRAINT FK66E1235A95976D16 +GO +ALTER TABLE dbo.Entities_Products + DROP CONSTRAINT FK66E1235AEB4DC236 +GO +CREATE TABLE dbo.Tmp_Entities_Products + ( + ProductID int NOT NULL IDENTITY (1, 1), + Code int NULL, + Name nvarchar(100) NOT NULL, + Units nvarchar(20) NOT NULL, + ServiceCharge decimal(19, 5) NOT NULL, + IsScTaxable bit NOT NULL, + Price decimal(19, 5) NOT NULL, + FullPrice decimal(19, 5) NOT NULL, + Discontinued bit NOT NULL, + SortOrder int NULL, + ProductGroupID int NOT NULL, + ServiceTaxID int NOT NULL, + VatID int NOT NULL, + BaseCode int NOT NULL, + Quantity decimal(19, 5) NOT NULL + ) ON [PRIMARY] +GO +SET IDENTITY_INSERT dbo.Tmp_Entities_Products ON +GO +IF EXISTS(SELECT * FROM dbo.Entities_Products) + EXEC('INSERT INTO dbo.Tmp_Entities_Products (ProductID, Code, Name, Units, ServiceCharge, IsScTaxable, Price, FullPrice, Discontinued, SortOrder, ProductGroupID, ServiceTaxID, VatID, BaseCode, Quantity) + SELECT ProductID, Code, Name, Units, ServiceCharge, 0, Price, FullPrice, Discontinued, SortOrder, ProductGroupID, CASE WHEN TaxID = 4 THEN 4 ELSE 3 END, TaxID, BaseCode, Quantity FROM dbo.Entities_Products WITH (HOLDLOCK TABLOCKX)') +GO +SET IDENTITY_INSERT dbo.Tmp_Entities_Products OFF +GO +ALTER TABLE dbo.Entities_Inventories + DROP CONSTRAINT FK53E4F7FE3F88CAB6 +GO +DROP TABLE dbo.Entities_Products +GO +EXECUTE sp_rename N'dbo.Tmp_Entities_Products', N'Entities_Products', 'OBJECT' +GO +ALTER TABLE dbo.Entities_Products ADD CONSTRAINT + PK__Entities_Product__737017C0 PRIMARY KEY CLUSTERED + ( + ProductID + ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] + +GO +ALTER TABLE dbo.Entities_Products ADD CONSTRAINT + IX_Entities_Products_Name UNIQUE NONCLUSTERED + ( + Name, + Units + ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] + +GO +ALTER TABLE dbo.Entities_Products ADD CONSTRAINT + FK66E1235AEB4DC236 FOREIGN KEY + ( + VatID + ) REFERENCES dbo.Entities_Taxes + ( + TaxID + ) ON UPDATE NO ACTION + ON DELETE NO ACTION + +GO +ALTER TABLE dbo.Entities_Products ADD CONSTRAINT + FK66E1235A95976D16 FOREIGN KEY + ( + ProductGroupID + ) REFERENCES dbo.Entities_ProductGroups + ( + ProductGroupID + ) ON UPDATE NO ACTION + ON DELETE NO ACTION + +GO +ALTER TABLE dbo.Entities_Products ADD CONSTRAINT + FK_Entities_Products_Entities_Taxes FOREIGN KEY + ( + ServiceTaxID + ) REFERENCES dbo.Entities_Taxes + ( + TaxID + ) ON UPDATE NO ACTION + ON DELETE NO ACTION + +GO +ALTER TABLE dbo.Entities_Inventories ADD CONSTRAINT + FK53E4F7FE3F88CAB6 FOREIGN KEY + ( + ProductID + ) REFERENCES dbo.Entities_Products + ( + ProductID + ) ON UPDATE NO ACTION + ON DELETE NO ACTION + +GO +COMMIT diff --git a/Tanshu.Accounts.Contracts/Data Contracts Display/BillInventoryBO.cs b/Tanshu.Accounts.Contracts/Data Contracts Display/BillInventoryBO.cs index 9525f35..ecf3956 100644 --- a/Tanshu.Accounts.Contracts/Data Contracts Display/BillInventoryBO.cs +++ b/Tanshu.Accounts.Contracts/Data Contracts Display/BillInventoryBO.cs @@ -27,12 +27,27 @@ namespace Tanshu.Accounts.Contracts } } - public decimal Tax { get; set; } - public decimal TaxAmount + public bool IsScTaxable { get; set; } + + public decimal ServiceTax { get; set; } + public decimal ServiceTaxAmount { get { - return Quantity * Price * (1 - _discount) * (1 + ServiceCharge) * Tax; + if (IsScTaxable) + return Quantity * Price * (1 - Discount) * (1 + ServiceCharge) * ServiceTax; + return Quantity * Price * (1 - Discount) * ServiceTax; + } + } + + public decimal Vat { get; set; } + public decimal VatAmount + { + get + { + if (IsScTaxable) + return Quantity * Price * (1 - Discount) * (1 + ServiceCharge) * Vat; + return Quantity * Price * (1 - Discount) * Vat; } } @@ -41,7 +56,7 @@ namespace Tanshu.Accounts.Contracts { get { - return Quantity * Price * (1 - _discount) * ServiceCharge; + return Quantity * Price * (1 - Discount) * ServiceCharge; } } @@ -49,7 +64,7 @@ namespace Tanshu.Accounts.Contracts { get { - return Quantity * Price * _discount; + return Quantity * Price * Discount; } } @@ -57,7 +72,7 @@ namespace Tanshu.Accounts.Contracts { get { - return Quantity * Price * (1 - _discount); + return Quantity * Price * (1 - Discount); } } @@ -67,7 +82,9 @@ namespace Tanshu.Accounts.Contracts { get { - return Price * Quantity * (1 - _discount) * (1 + ServiceCharge) * (1 + Tax); + if (IsScTaxable) + return Quantity * Price * (1 - Discount) * (1 + ServiceCharge) * (1 + ServiceTax + Vat); + return Quantity * Price * (1 - Discount) * (1 + ServiceCharge + ServiceTax + Vat); } } @@ -107,7 +124,9 @@ namespace Tanshu.Accounts.Contracts Quantity = 1; Price = product.Price; FullPrice = product.FullPrice; - Tax = product.Tax.Rate; + IsScTaxable = product.IsScTaxable; + ServiceTax = product.ServiceTax.Rate; + Vat = product.Vat.Rate; ServiceCharge = product.ServiceCharge; Discount = 0; Printed = false; @@ -123,7 +142,7 @@ namespace Tanshu.Accounts.Contracts FullPrice = 0; Printed = true; Quantity = 0; - Tax = -1; + Vat = -1; ServiceCharge = 0; } @@ -137,7 +156,7 @@ namespace Tanshu.Accounts.Contracts FullPrice = 0; Printed = true; Quantity = 0; - Tax = -1; + Vat = -1; ServiceCharge = 0; } diff --git a/Tanshu.Accounts.Contracts/Data Contracts/InventoryBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/InventoryBO.cs index d0eafad..7d71ed1 100644 --- a/Tanshu.Accounts.Contracts/Data Contracts/InventoryBO.cs +++ b/Tanshu.Accounts.Contracts/Data Contracts/InventoryBO.cs @@ -23,17 +23,24 @@ namespace Tanshu.Accounts.Entities public virtual decimal Quantity { get; set; } public virtual decimal Price { get; set; } public virtual decimal FullPrice { get; set; } - public virtual decimal Tax { get; set; } - public virtual decimal Discount { get; set; } public virtual decimal ServiceCharge { get; set; } + public virtual bool IsScTaxable { get; set; } + public virtual decimal ServiceTax { get; set; } + public virtual decimal Vat { get; set; } + public virtual decimal Discount { get; set; } [Cascade] public virtual IList InventoryModifier { get; set; } - [Formula(Formula = "Quantity * Price * (1 - Discount) * (1 + ServiceCharge) * (1 + Tax)")] + [Formula(Formula = "CASE WHEN IsScTaxable = 1 THEN Quantity * Price * (1 - Discount) * (1 + ServiceCharge) * (1 + ServiceTax + Vat) ELSE Quantity * Price * (1 - Discount) * (1 + ServiceCharge + ServiceTax + Vat) END")] public virtual decimal Amount { - get { return Quantity * Price * (1 + Tax) * (1 + ServiceCharge) * (1 - Discount); } + get + { + if (IsScTaxable) + return Quantity * Price * (1 - Discount) * (1 + ServiceCharge) * (1 + ServiceTax + Vat); + return Quantity * Price * (1 - Discount) * (1 + ServiceCharge + ServiceTax + Vat); + } private set { } } } diff --git a/Tanshu.Accounts.Contracts/Data Contracts/ProductBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/ProductBO.cs index 85aa81b..2eb7a9f 100644 --- a/Tanshu.Accounts.Contracts/Data Contracts/ProductBO.cs +++ b/Tanshu.Accounts.Contracts/Data Contracts/ProductBO.cs @@ -12,8 +12,10 @@ namespace Tanshu.Accounts.Entities [NotNull] public virtual ProductGroup ProductGroup { get; set; } [NotNull] - public virtual Tax Tax { get; set; } + public virtual Tax Vat { get; set; } + public virtual Tax ServiceTax { get; set; } public virtual decimal ServiceCharge { get; set; } + public virtual bool IsScTaxable { get; set; } public virtual decimal Price { get; set; } public virtual decimal FullPrice { get; set; } public virtual bool Discontinued { get; set; } diff --git a/Tanshu.Accounts.PointOfSale/Controllers/BillController.cs b/Tanshu.Accounts.PointOfSale/Controllers/BillController.cs index fd1848d..1c9c299 100644 --- a/Tanshu.Accounts.PointOfSale/Controllers/BillController.cs +++ b/Tanshu.Accounts.PointOfSale/Controllers/BillController.cs @@ -280,7 +280,7 @@ namespace Tanshu.Accounts.PointOfSale private void ShowAmount() { - var taxAmount = _bill.Values.Sum(b => b.TaxAmount); + var taxAmount = _bill.Values.Sum(b => b.ServiceTaxAmount + b.VatAmount); var discountAmount = _bill.Values.Sum(b => b.DiscountAmount); var grossAmount = _bill.Values.Sum(b => b.GrossAmount); var valueAmount = _bill.Values.Sum(b => b.Value); @@ -394,7 +394,9 @@ namespace Tanshu.Accounts.PointOfSale Price = inv.Price, Printed = true, Quantity = inv.Quantity, - Tax = inv.Tax, + IsScTaxable = inv.IsScTaxable, + ServiceTax = inv.ServiceTax, + Vat = inv.Vat, ServiceCharge = inv.ServiceCharge, }; foreach (var mod in inv.InventoryModifier) @@ -976,7 +978,9 @@ namespace Tanshu.Accounts.PointOfSale FullPrice = item.Value.FullPrice, Discount = item.Value.Discount, ServiceCharge = item.Value.ServiceCharge, - Tax = item.Value.Tax + IsScTaxable = item.Value.IsScTaxable, + ServiceTax = item.Value.ServiceTax, + Vat = item.Value.Vat }; foreach (var mod in item.Value.Modifiers) inv.InventoryModifier.Add(new InventoryModifier { Modifier = mod }); diff --git a/Tanshu.Accounts.PointOfSale/MainForm.cs b/Tanshu.Accounts.PointOfSale/MainForm.cs index fc51156..53977d8 100644 --- a/Tanshu.Accounts.PointOfSale/MainForm.cs +++ b/Tanshu.Accounts.PointOfSale/MainForm.cs @@ -144,6 +144,9 @@ namespace Tanshu.Accounts.PointOfSale private void MainForm_Load(object sender, EventArgs e) { +#if (DEBUG) + MessageBox.Show("This software does not print kots!!!","Debug Mode", MessageBoxButtons.OK , MessageBoxIcon.Exclamation); +#endif CheckRoles(); } diff --git a/Tanshu.Accounts.PointOfSale/Products/ProductForm.Designer.cs b/Tanshu.Accounts.PointOfSale/Products/ProductForm.Designer.cs index ae92c71..abcae58 100644 --- a/Tanshu.Accounts.PointOfSale/Products/ProductForm.Designer.cs +++ b/Tanshu.Accounts.PointOfSale/Products/ProductForm.Designer.cs @@ -32,7 +32,7 @@ this.Label4 = new System.Windows.Forms.Label(); this.bsProductGroups = new System.Windows.Forms.BindingSource(this.components); this.Label7 = new System.Windows.Forms.Label(); - this.bsTax = new System.Windows.Forms.BindingSource(this.components); + this.bsServiceTax = new System.Windows.Forms.BindingSource(this.components); this.label5 = new System.Windows.Forms.Label(); this.label3 = new System.Windows.Forms.Label(); this.txtProductID = new System.Windows.Forms.TextBox(); @@ -41,7 +41,7 @@ this.txtUnits = new System.Windows.Forms.TextBox(); this.txtName = new System.Windows.Forms.TextBox(); this.txtPrice = new System.Windows.Forms.TextBox(); - this.cmbTax = new System.Windows.Forms.ComboBox(); + this.cmbVat = new System.Windows.Forms.ComboBox(); this.chkDiscontinued = new System.Windows.Forms.CheckBox(); this.txtServiceCharge = new System.Windows.Forms.TextBox(); this.btnAddProductGroup = new System.Windows.Forms.Button(); @@ -51,18 +51,24 @@ this.label1 = new System.Windows.Forms.Label(); this.txtSortOrder = new System.Windows.Forms.TextBox(); 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.bsVat = new System.Windows.Forms.BindingSource(this.components); ((System.ComponentModel.ISupportInitialize)(this.bsProductGroups)).BeginInit(); - ((System.ComponentModel.ISupportInitialize)(this.bsTax)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsServiceTax)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsVat)).BeginInit(); this.SuspendLayout(); // // Label4 // this.Label4.AutoSize = true; - this.Label4.Location = new System.Drawing.Point(12, 68); + this.Label4.Location = new System.Drawing.Point(25, 82); + this.Label4.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.Label4.Name = "Label4"; - this.Label4.Size = new System.Drawing.Size(114, 13); + this.Label4.Size = new System.Drawing.Size(110, 17); this.Label4.TabIndex = 15; - this.Label4.Text = "Price / Full Price / Tax"; + this.Label4.Text = "Price / Full Price"; // // bsProductGroups // @@ -71,102 +77,113 @@ // Label7 // this.Label7.AutoSize = true; - this.Label7.Location = new System.Drawing.Point(70, 119); + this.Label7.Location = new System.Drawing.Point(93, 174); + this.Label7.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.Label7.Name = "Label7"; - this.Label7.Size = new System.Drawing.Size(36, 13); + this.Label7.Size = new System.Drawing.Size(48, 17); this.Label7.TabIndex = 17; this.Label7.Text = "Group"; // - // bsTax + // bsServiceTax // - this.bsTax.DataSource = typeof(Tanshu.Accounts.Entities.Tax); + this.bsServiceTax.DataSource = typeof(Tanshu.Accounts.Entities.Tax); // // label5 // this.label5.AutoSize = true; - this.label5.Location = new System.Drawing.Point(26, 93); + this.label5.Location = new System.Drawing.Point(35, 142); + this.label5.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.label5.Name = "label5"; - this.label5.Size = new System.Drawing.Size(80, 13); + this.label5.Size = new System.Drawing.Size(105, 17); this.label5.TabIndex = 16; this.label5.Text = "Service Charge"; // // label3 // this.label3.AutoSize = true; - this.label3.Location = new System.Drawing.Point(12, 15); + this.label3.Location = new System.Drawing.Point(16, 18); + this.label3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.label3.Name = "label3"; - this.label3.Size = new System.Drawing.Size(94, 13); + this.label3.Size = new System.Drawing.Size(119, 17); this.label3.TabIndex = 13; this.label3.Text = "Product ID / Code"; // // txtProductID // - this.txtProductID.Location = new System.Drawing.Point(112, 12); + this.txtProductID.Location = new System.Drawing.Point(149, 15); + this.txtProductID.Margin = new System.Windows.Forms.Padding(4); this.txtProductID.Name = "txtProductID"; this.txtProductID.ReadOnly = true; - this.txtProductID.Size = new System.Drawing.Size(189, 20); + this.txtProductID.Size = new System.Drawing.Size(251, 22); this.txtProductID.TabIndex = 12; // // txtCode // this.txtCode.AccessibleName = ""; - this.txtCode.Location = new System.Drawing.Point(307, 12); + this.txtCode.Location = new System.Drawing.Point(409, 15); + this.txtCode.Margin = new System.Windows.Forms.Padding(4); this.txtCode.Name = "txtCode"; - this.txtCode.Size = new System.Drawing.Size(96, 20); + this.txtCode.Size = new System.Drawing.Size(127, 22); this.txtCode.TabIndex = 0; this.txtCode.WordWrap = false; // // Label2 // this.Label2.AutoSize = true; - this.Label2.Location = new System.Drawing.Point(36, 41); + this.Label2.Location = new System.Drawing.Point(48, 50); + this.Label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.Label2.Name = "Label2"; - this.Label2.Size = new System.Drawing.Size(70, 13); + this.Label2.Size = new System.Drawing.Size(89, 17); this.Label2.TabIndex = 14; this.Label2.Text = "Name / Units"; // // txtUnits // this.txtUnits.AccessibleName = ""; - this.txtUnits.Location = new System.Drawing.Point(307, 38); + this.txtUnits.Location = new System.Drawing.Point(409, 47); + this.txtUnits.Margin = new System.Windows.Forms.Padding(4); this.txtUnits.Name = "txtUnits"; - this.txtUnits.Size = new System.Drawing.Size(96, 20); + this.txtUnits.Size = new System.Drawing.Size(127, 22); this.txtUnits.TabIndex = 2; // // txtName // this.txtName.AccessibleName = ""; - this.txtName.Location = new System.Drawing.Point(112, 38); + this.txtName.Location = new System.Drawing.Point(149, 47); + this.txtName.Margin = new System.Windows.Forms.Padding(4); this.txtName.Name = "txtName"; - this.txtName.Size = new System.Drawing.Size(189, 20); + this.txtName.Size = new System.Drawing.Size(251, 22); this.txtName.TabIndex = 1; // // txtPrice // this.txtPrice.AccessibleName = ""; - this.txtPrice.Location = new System.Drawing.Point(132, 64); + this.txtPrice.Location = new System.Drawing.Point(149, 79); + this.txtPrice.Margin = new System.Windows.Forms.Padding(4); this.txtPrice.Name = "txtPrice"; - this.txtPrice.Size = new System.Drawing.Size(84, 20); + this.txtPrice.Size = new System.Drawing.Size(111, 22); this.txtPrice.TabIndex = 3; this.txtPrice.Text = "0"; // - // cmbTax + // cmbVat // - this.cmbTax.DataSource = this.bsTax; - this.cmbTax.DisplayMember = "Name"; - this.cmbTax.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cmbTax.Location = new System.Drawing.Point(307, 65); - this.cmbTax.Name = "cmbTax"; - this.cmbTax.Size = new System.Drawing.Size(96, 21); - this.cmbTax.TabIndex = 4; - this.cmbTax.ValueMember = "TaxID"; + this.cmbVat.DataSource = this.bsVat; + this.cmbVat.DisplayMember = "Name"; + this.cmbVat.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbVat.Location = new System.Drawing.Point(284, 107); + this.cmbVat.Margin = new System.Windows.Forms.Padding(4); + this.cmbVat.Name = "cmbVat"; + this.cmbVat.Size = new System.Drawing.Size(116, 24); + this.cmbVat.TabIndex = 4; + this.cmbVat.ValueMember = "TaxID"; // // chkDiscontinued // this.chkDiscontinued.AutoSize = true; - this.chkDiscontinued.Location = new System.Drawing.Point(307, 92); + this.chkDiscontinued.Location = new System.Drawing.Point(409, 141); + this.chkDiscontinued.Margin = new System.Windows.Forms.Padding(4); this.chkDiscontinued.Name = "chkDiscontinued"; - this.chkDiscontinued.Size = new System.Drawing.Size(88, 17); + this.chkDiscontinued.Size = new System.Drawing.Size(112, 21); this.chkDiscontinued.TabIndex = 7; this.chkDiscontinued.Text = "Discontinued"; this.chkDiscontinued.UseVisualStyleBackColor = true; @@ -174,17 +191,19 @@ // txtServiceCharge // this.txtServiceCharge.AccessibleName = "Phone 1"; - this.txtServiceCharge.Location = new System.Drawing.Point(112, 90); + this.txtServiceCharge.Location = new System.Drawing.Point(149, 139); + this.txtServiceCharge.Margin = new System.Windows.Forms.Padding(4); this.txtServiceCharge.Name = "txtServiceCharge"; - this.txtServiceCharge.Size = new System.Drawing.Size(73, 20); + this.txtServiceCharge.Size = new System.Drawing.Size(96, 22); this.txtServiceCharge.TabIndex = 5; this.txtServiceCharge.Text = "0"; // // btnAddProductGroup // - this.btnAddProductGroup.Location = new System.Drawing.Point(307, 116); + this.btnAddProductGroup.Location = new System.Drawing.Point(409, 171); + this.btnAddProductGroup.Margin = new System.Windows.Forms.Padding(4); this.btnAddProductGroup.Name = "btnAddProductGroup"; - this.btnAddProductGroup.Size = new System.Drawing.Size(96, 21); + this.btnAddProductGroup.Size = new System.Drawing.Size(128, 26); this.btnAddProductGroup.TabIndex = 9; this.btnAddProductGroup.Text = "Add Group"; // @@ -195,17 +214,19 @@ 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, 116); + this.cmbProductGroup.Location = new System.Drawing.Point(149, 171); + this.cmbProductGroup.Margin = new System.Windows.Forms.Padding(4); this.cmbProductGroup.Name = "cmbProductGroup"; - this.cmbProductGroup.Size = new System.Drawing.Size(189, 21); + this.cmbProductGroup.Size = new System.Drawing.Size(251, 24); this.cmbProductGroup.TabIndex = 8; this.cmbProductGroup.ValueMember = "ProductGroupID"; // // btnCancel // - this.btnCancel.Location = new System.Drawing.Point(328, 143); + this.btnCancel.Location = new System.Drawing.Point(437, 204); + this.btnCancel.Margin = new System.Windows.Forms.Padding(4); this.btnCancel.Name = "btnCancel"; - this.btnCancel.Size = new System.Drawing.Size(75, 75); + this.btnCancel.Size = new System.Drawing.Size(100, 92); this.btnCancel.TabIndex = 11; this.btnCancel.Text = "&Cancel"; this.btnCancel.UseVisualStyleBackColor = true; @@ -213,9 +234,10 @@ // // btnOk // - this.btnOk.Location = new System.Drawing.Point(247, 143); + this.btnOk.Location = new System.Drawing.Point(329, 204); + this.btnOk.Margin = new System.Windows.Forms.Padding(4); this.btnOk.Name = "btnOk"; - this.btnOk.Size = new System.Drawing.Size(75, 75); + this.btnOk.Size = new System.Drawing.Size(100, 92); this.btnOk.TabIndex = 10; this.btnOk.Text = "&Ok"; this.btnOk.UseVisualStyleBackColor = true; @@ -224,35 +246,78 @@ // label1 // this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(196, 93); + this.label1.Location = new System.Drawing.Point(261, 142); + this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(26, 13); + this.label1.Size = new System.Drawing.Size(34, 17); this.label1.TabIndex = 18; this.label1.Text = "Sort"; // // txtSortOrder // this.txtSortOrder.AccessibleName = ""; - this.txtSortOrder.Location = new System.Drawing.Point(228, 90); + this.txtSortOrder.Location = new System.Drawing.Point(304, 139); + this.txtSortOrder.Margin = new System.Windows.Forms.Padding(4); this.txtSortOrder.Name = "txtSortOrder"; - this.txtSortOrder.Size = new System.Drawing.Size(73, 20); + this.txtSortOrder.Size = new System.Drawing.Size(96, 22); this.txtSortOrder.TabIndex = 6; this.txtSortOrder.Text = "0"; // // txtFullPrice // this.txtFullPrice.AccessibleName = ""; - this.txtFullPrice.Location = new System.Drawing.Point(222, 64); + this.txtFullPrice.Location = new System.Drawing.Point(268, 79); + this.txtFullPrice.Margin = new System.Windows.Forms.Padding(4); this.txtFullPrice.Name = "txtFullPrice"; - this.txtFullPrice.Size = new System.Drawing.Size(79, 20); + this.txtFullPrice.Size = new System.Drawing.Size(104, 22); 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(149, 107); + this.cmbServiceTax.Margin = new System.Windows.Forms.Padding(4); + this.cmbServiceTax.Name = "cmbServiceTax"; + this.cmbServiceTax.Size = new System.Drawing.Size(127, 24); + this.cmbServiceTax.TabIndex = 20; + this.cmbServiceTax.ValueMember = "TaxID"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(25, 110); + this.label6.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(115, 17); + this.label6.TabIndex = 21; + this.label6.Text = "Service Tax / Vat"; + // + // chkIsScTaxable + // + this.chkIsScTaxable.AutoSize = true; + this.chkIsScTaxable.Location = new System.Drawing.Point(409, 109); + this.chkIsScTaxable.Margin = new System.Windows.Forms.Padding(4); + this.chkIsScTaxable.Name = "chkIsScTaxable"; + this.chkIsScTaxable.Size = new System.Drawing.Size(114, 21); + this.chkIsScTaxable.TabIndex = 22; + this.chkIsScTaxable.Text = "Is Sc Taxable"; + this.chkIsScTaxable.UseVisualStyleBackColor = true; + // + // bsVat + // + this.bsVat.DataSource = typeof(Tanshu.Accounts.Entities.Tax); + // // ProductForm // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(415, 230); + this.ClientSize = new System.Drawing.Size(553, 340); + this.Controls.Add(this.chkIsScTaxable); + this.Controls.Add(this.label6); + this.Controls.Add(this.cmbServiceTax); this.Controls.Add(this.txtFullPrice); this.Controls.Add(this.txtSortOrder); this.Controls.Add(this.label1); @@ -265,7 +330,7 @@ this.Controls.Add(this.Label7); this.Controls.Add(this.txtPrice); this.Controls.Add(this.label5); - this.Controls.Add(this.cmbTax); + this.Controls.Add(this.cmbVat); this.Controls.Add(this.txtUnits); this.Controls.Add(this.txtName); this.Controls.Add(this.Label2); @@ -273,6 +338,7 @@ this.Controls.Add(this.txtProductID); this.Controls.Add(this.label3); this.Controls.Add(this.Label4); + this.Margin = new System.Windows.Forms.Padding(4); this.MaximizeBox = false; this.MinimizeBox = false; this.Name = "ProductForm"; @@ -280,7 +346,8 @@ this.Text = "Products"; this.Load += new System.EventHandler(this.Products_Load); ((System.ComponentModel.ISupportInitialize)(this.bsProductGroups)).EndInit(); - ((System.ComponentModel.ISupportInitialize)(this.bsTax)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsServiceTax)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsVat)).EndInit(); this.ResumeLayout(false); this.PerformLayout(); @@ -291,7 +358,7 @@ internal System.Windows.Forms.Label Label4; internal System.Windows.Forms.Label Label7; private System.Windows.Forms.BindingSource bsProductGroups; - private System.Windows.Forms.BindingSource bsTax; + private System.Windows.Forms.BindingSource bsServiceTax; internal System.Windows.Forms.Label label5; private System.Windows.Forms.Label label3; private System.Windows.Forms.TextBox txtProductID; @@ -300,7 +367,7 @@ internal System.Windows.Forms.TextBox txtUnits; internal System.Windows.Forms.TextBox txtName; internal System.Windows.Forms.TextBox txtPrice; - internal System.Windows.Forms.ComboBox cmbTax; + internal System.Windows.Forms.ComboBox cmbVat; private System.Windows.Forms.CheckBox chkDiscontinued; internal System.Windows.Forms.TextBox txtServiceCharge; internal System.Windows.Forms.Button btnAddProductGroup; @@ -310,5 +377,9 @@ internal System.Windows.Forms.Label label1; internal System.Windows.Forms.TextBox txtSortOrder; 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; } } \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/Products/ProductForm.cs b/Tanshu.Accounts.PointOfSale/Products/ProductForm.cs index 67b90c3..89ae0c1 100644 --- a/Tanshu.Accounts.PointOfSale/Products/ProductForm.cs +++ b/Tanshu.Accounts.PointOfSale/Products/ProductForm.cs @@ -28,9 +28,11 @@ namespace Tanshu.Accounts.PointOfSale txtUnits.Text = product.Units; txtPrice.Text = product.Price.ToString("#.##"); txtFullPrice.Text = product.FullPrice.ToString("#.##"); - cmbTax.SelectedValue = product.Tax.TaxID; + cmbVat.SelectedValue = product.Vat.TaxID; + cmbServiceTax.SelectedValue = product.ServiceTax.TaxID; txtServiceCharge.Text = product.ServiceCharge.ToString("#.##"); chkDiscontinued.Checked = product.Discontinued; + chkIsScTaxable.Checked = product.IsScTaxable; cmbProductGroup.SelectedValue = product.ProductGroup.ProductGroupID; txtSortOrder.Text = product.SortOrder.ToString(); } @@ -46,7 +48,10 @@ namespace Tanshu.Accounts.PointOfSale using (var bi = new ProductGroupBI()) bsProductGroups.DataSource = bi.List(); using (var bi = new TaxBI()) - bsTax.DataSource = bi.List(); + { + bsServiceTax.DataSource = bi.List(); + bsVat.DataSource = bi.List(); + } } private void btnAddCategory_Click(object sender, EventArgs e) @@ -92,9 +97,13 @@ namespace Tanshu.Accounts.PointOfSale product.FullPrice = price; // Tax - if (cmbTax.SelectedItem == null) + if (cmbVat.SelectedItem == null) return null; - product.Tax = (Tax)cmbTax.SelectedItem; + product.Vat = (Tax)cmbVat.SelectedItem; + + if (cmbServiceTax.SelectedItem == null) + return null; + product.ServiceTax = (Tax)cmbServiceTax.SelectedItem; decimal serviceCharge; if (!decimal.TryParse(txtServiceCharge.Text, out serviceCharge)) @@ -103,6 +112,7 @@ namespace Tanshu.Accounts.PointOfSale return null; product.ServiceCharge = serviceCharge; + product.IsScTaxable = chkIsScTaxable.Checked; product.Discontinued = chkDiscontinued.Checked; int sortOrder; if (!int.TryParse(txtSortOrder.Text, out sortOrder)) diff --git a/Tanshu.Accounts.PointOfSale/Products/ProductForm.resx b/Tanshu.Accounts.PointOfSale/Products/ProductForm.resx index 89e263b..89bd3df 100644 --- a/Tanshu.Accounts.PointOfSale/Products/ProductForm.resx +++ b/Tanshu.Accounts.PointOfSale/Products/ProductForm.resx @@ -120,8 +120,11 @@ 211, 17 - - 129, 17 + + 56, 25 + + + 382, 17 102 diff --git a/Tanshu.Accounts.PointOfSale/Products/ProductListForm.Designer.cs b/Tanshu.Accounts.PointOfSale/Products/ProductListForm.Designer.cs index 6e33cc2..8f928af 100644 --- a/Tanshu.Accounts.PointOfSale/Products/ProductListForm.Designer.cs +++ b/Tanshu.Accounts.PointOfSale/Products/ProductListForm.Designer.cs @@ -38,7 +38,7 @@ this.bsList = new System.Windows.Forms.BindingSource(this.components); this.nameDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.unitsDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.Tax = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Vat = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.Group = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.serviceChargeDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.salePriceDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); @@ -51,9 +51,10 @@ // 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.Location = new System.Drawing.Point(16, 314); + this.btnAdd.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.btnAdd.Name = "btnAdd"; - this.btnAdd.Size = new System.Drawing.Size(75, 75); + this.btnAdd.Size = new System.Drawing.Size(100, 92); this.btnAdd.TabIndex = 68; this.btnAdd.Text = "&Add"; this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click); @@ -62,9 +63,10 @@ // 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.Location = new System.Drawing.Point(124, 314); + this.btnEdit.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.btnEdit.Name = "btnEdit"; - this.btnEdit.Size = new System.Drawing.Size(75, 75); + this.btnEdit.Size = new System.Drawing.Size(100, 92); this.btnEdit.TabIndex = 62; this.btnEdit.Text = "&Edit"; this.btnEdit.Click += new System.EventHandler(this.btnEdit_Click); @@ -73,9 +75,10 @@ // 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(286, 255); + this.btnExit.Location = new System.Drawing.Point(381, 314); + this.btnExit.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.btnExit.Name = "btnExit"; - this.btnExit.Size = new System.Drawing.Size(75, 75); + this.btnExit.Size = new System.Drawing.Size(100, 92); this.btnExit.TabIndex = 61; this.btnExit.Text = "E&xit"; this.btnExit.Click += new System.EventHandler(this.btnExit_Click); @@ -94,7 +97,7 @@ this.dgvProductTypes.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.nameDataGridViewTextBoxColumn, this.unitsDataGridViewTextBoxColumn, - this.Tax, + this.Vat, this.Group, this.serviceChargeDataGridViewTextBoxColumn, this.salePriceDataGridViewTextBoxColumn, @@ -102,14 +105,16 @@ this.sortOrderDataGridViewTextBoxColumn}); this.dgvProductTypes.DataSource = this.bsList; this.dgvProductTypes.EditMode = System.Windows.Forms.DataGridViewEditMode.EditProgrammatically; - this.dgvProductTypes.Location = new System.Drawing.Point(12, 12); + this.dgvProductTypes.Location = new System.Drawing.Point(16, 15); + this.dgvProductTypes.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.dgvProductTypes.MultiSelect = false; this.dgvProductTypes.Name = "dgvProductTypes"; this.dgvProductTypes.ReadOnly = true; this.dgvProductTypes.RowHeadersVisible = false; this.dgvProductTypes.RowHeadersWidthSizeMode = System.Windows.Forms.DataGridViewRowHeadersWidthSizeMode.DisableResizing; + this.dgvProductTypes.RowTemplate.Height = 24; this.dgvProductTypes.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; - this.dgvProductTypes.Size = new System.Drawing.Size(349, 237); + this.dgvProductTypes.Size = new System.Drawing.Size(465, 292); this.dgvProductTypes.TabIndex = 74; this.dgvProductTypes.CellFormatting += new System.Windows.Forms.DataGridViewCellFormattingEventHandler(this.dgvProductTypes_CellFormatting); // @@ -123,7 +128,7 @@ this.nameDataGridViewTextBoxColumn.HeaderText = "Name"; this.nameDataGridViewTextBoxColumn.Name = "nameDataGridViewTextBoxColumn"; this.nameDataGridViewTextBoxColumn.ReadOnly = true; - this.nameDataGridViewTextBoxColumn.Width = 60; + this.nameDataGridViewTextBoxColumn.Width = 70; // // unitsDataGridViewTextBoxColumn // @@ -131,15 +136,15 @@ this.unitsDataGridViewTextBoxColumn.HeaderText = "Units"; this.unitsDataGridViewTextBoxColumn.Name = "unitsDataGridViewTextBoxColumn"; this.unitsDataGridViewTextBoxColumn.ReadOnly = true; - this.unitsDataGridViewTextBoxColumn.Width = 56; + this.unitsDataGridViewTextBoxColumn.Width = 65; // - // Tax + // Vat // - this.Tax.DataPropertyName = "Tax"; - this.Tax.HeaderText = "Tax"; - this.Tax.Name = "Tax"; - this.Tax.ReadOnly = true; - this.Tax.Width = 50; + this.Vat.DataPropertyName = "Vat"; + this.Vat.HeaderText = "Vat"; + this.Vat.Name = "Vat"; + this.Vat.ReadOnly = true; + this.Vat.Width = 54; // // Group // @@ -147,7 +152,7 @@ this.Group.HeaderText = "ProductGroup"; this.Group.Name = "Group"; this.Group.ReadOnly = true; - this.Group.Width = 98; + this.Group.Width = 122; // // serviceChargeDataGridViewTextBoxColumn // @@ -157,7 +162,7 @@ this.serviceChargeDataGridViewTextBoxColumn.HeaderText = "SC"; this.serviceChargeDataGridViewTextBoxColumn.Name = "serviceChargeDataGridViewTextBoxColumn"; this.serviceChargeDataGridViewTextBoxColumn.ReadOnly = true; - this.serviceChargeDataGridViewTextBoxColumn.Width = 46; + this.serviceChargeDataGridViewTextBoxColumn.Width = 51; // // salePriceDataGridViewTextBoxColumn // @@ -167,7 +172,7 @@ this.salePriceDataGridViewTextBoxColumn.HeaderText = "Price"; this.salePriceDataGridViewTextBoxColumn.Name = "salePriceDataGridViewTextBoxColumn"; this.salePriceDataGridViewTextBoxColumn.ReadOnly = true; - this.salePriceDataGridViewTextBoxColumn.Width = 77; + this.salePriceDataGridViewTextBoxColumn.Width = 65; // // discontinuedDataGridViewCheckBoxColumn // @@ -175,7 +180,7 @@ this.discontinuedDataGridViewCheckBoxColumn.HeaderText = "Discontinued"; this.discontinuedDataGridViewCheckBoxColumn.Name = "discontinuedDataGridViewCheckBoxColumn"; this.discontinuedDataGridViewCheckBoxColumn.ReadOnly = true; - this.discontinuedDataGridViewCheckBoxColumn.Width = 75; + this.discontinuedDataGridViewCheckBoxColumn.Width = 96; // // sortOrderDataGridViewTextBoxColumn // @@ -183,17 +188,18 @@ this.sortOrderDataGridViewTextBoxColumn.HeaderText = "SortOrder"; this.sortOrderDataGridViewTextBoxColumn.Name = "sortOrderDataGridViewTextBoxColumn"; this.sortOrderDataGridViewTextBoxColumn.ReadOnly = true; - this.sortOrderDataGridViewTextBoxColumn.Width = 77; + this.sortOrderDataGridViewTextBoxColumn.Width = 96; // // ProductListForm // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(373, 342); + this.ClientSize = new System.Drawing.Size(497, 421); this.Controls.Add(this.dgvProductTypes); this.Controls.Add(this.btnAdd); this.Controls.Add(this.btnEdit); this.Controls.Add(this.btnExit); + this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4); this.MaximizeBox = false; this.MinimizeBox = false; this.Name = "ProductListForm"; @@ -213,17 +219,17 @@ internal System.Windows.Forms.Button btnExit; private System.Windows.Forms.DataGridView dgvProductTypes; private System.Windows.Forms.BindingSource bsList; - //private System.Windows.Forms.DataGridViewTextBoxColumn discountLimitDataGridViewTextBoxColumn; - //private System.Windows.Forms.DataGridViewTextBoxColumn groupTypeDataGridViewTextBoxColumn; - //private System.Windows.Forms.DataGridViewTextBoxColumn productGroupDataGridViewTextBoxColumn; - //private System.Windows.Forms.DataGridViewTextBoxColumn taxDataGridViewTextBoxColumn; private System.Windows.Forms.DataGridViewTextBoxColumn nameDataGridViewTextBoxColumn; private System.Windows.Forms.DataGridViewTextBoxColumn unitsDataGridViewTextBoxColumn; - private System.Windows.Forms.DataGridViewTextBoxColumn Tax; + private System.Windows.Forms.DataGridViewTextBoxColumn Vat; private System.Windows.Forms.DataGridViewTextBoxColumn Group; private System.Windows.Forms.DataGridViewTextBoxColumn serviceChargeDataGridViewTextBoxColumn; private System.Windows.Forms.DataGridViewTextBoxColumn salePriceDataGridViewTextBoxColumn; private System.Windows.Forms.DataGridViewCheckBoxColumn discontinuedDataGridViewCheckBoxColumn; private System.Windows.Forms.DataGridViewTextBoxColumn sortOrderDataGridViewTextBoxColumn; + //private System.Windows.Forms.DataGridViewTextBoxColumn discountLimitDataGridViewTextBoxColumn; + //private System.Windows.Forms.DataGridViewTextBoxColumn groupTypeDataGridViewTextBoxColumn; + //private System.Windows.Forms.DataGridViewTextBoxColumn productGroupDataGridViewTextBoxColumn; + //private System.Windows.Forms.DataGridViewTextBoxColumn taxDataGridViewTextBoxColumn; } } \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/Products/ProductListForm.cs b/Tanshu.Accounts.PointOfSale/Products/ProductListForm.cs index 0cdc8d1..b86158b 100644 --- a/Tanshu.Accounts.PointOfSale/Products/ProductListForm.cs +++ b/Tanshu.Accounts.PointOfSale/Products/ProductListForm.cs @@ -46,7 +46,7 @@ namespace Tanshu.Accounts.PointOfSale return; if (e.Value.ToString() == "Castle.Proxies.TaxProxy") { - e.Value = ((Product)bsList[e.RowIndex]).Tax.Name; + e.Value = ((Product)bsList[e.RowIndex]).Vat.Name; } else if (e.Value.ToString() == "Castle.Proxies.ProductGroupProxy") { diff --git a/Tanshu.Accounts.PointOfSale/Products/ProductListForm.resx b/Tanshu.Accounts.PointOfSale/Products/ProductListForm.resx index 869a785..1043eb5 100644 --- a/Tanshu.Accounts.PointOfSale/Products/ProductListForm.resx +++ b/Tanshu.Accounts.PointOfSale/Products/ProductListForm.resx @@ -117,7 +117,7 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - + True diff --git a/Tanshu.Accounts.PointOfSale/Sales/SalesForm.cs b/Tanshu.Accounts.PointOfSale/Sales/SalesForm.cs index ccabaea..5b85c76 100644 --- a/Tanshu.Accounts.PointOfSale/Sales/SalesForm.cs +++ b/Tanshu.Accounts.PointOfSale/Sales/SalesForm.cs @@ -203,7 +203,7 @@ namespace Tanshu.Accounts.PointOfSale.Sales var dgv = sender as DataGridView; var data = dgv.Rows[e.RowIndex].DataBoundItem as BillItemValue; - if (data.Tax == -1) + if (data.Vat == -1) { e.CellStyle.SelectionBackColor = Color.Blue; e.CellStyle.BackColor = Color.LightBlue; diff --git a/Tanshu.Accounts.Print/Thermal.cs b/Tanshu.Accounts.Print/Thermal.cs index ead877e..87786b9 100644 --- a/Tanshu.Accounts.Print/Thermal.cs +++ b/Tanshu.Accounts.Print/Thermal.cs @@ -58,12 +58,17 @@ namespace Tanshu.Accounts.Print private static decimal Amount(IEnumerable list) { - return list.Sum(item => item.Quantity * item.Price * (1 - item.Discount) * (1 + item.ServiceCharge) * (1 + item.Tax)); + return list.Sum(item => item.Amount); } - private static decimal Tax(IEnumerable list) + private static decimal ServiceTax(IEnumerable list) { - return list.Sum(item => item.Quantity * item.Price * (1 - item.Discount) * (1 + item.ServiceCharge) * item.Tax); + return list.Sum(item => item.Quantity * item.Price * (1 - item.Discount) * (1 + (item.IsScTaxable ? item.ServiceCharge : 0)) * item.ServiceTax); + } + + private static decimal SplitTax(IEnumerable list, decimal rate) + { + return list.Where(x => x.Vat == rate).Sum(item => item.Quantity * item.Price * (1 - item.Discount) * (1 + (item.IsScTaxable ? item.ServiceCharge : 0)) * item.Vat); } private static decimal ServiceCharge(IEnumerable list) @@ -323,8 +328,7 @@ namespace Tanshu.Accounts.Print printText += DrawLine; foreach (var item in list) { - printText += string.Format("\n\r{0,-22} {1,9:#,##0.00} {2,9:#,##0.00}", item.Product, item.Sale, - item.NC); + printText += string.Format("\n\r{0,-22} {1,9:#,##0.00} {2,9:#,##0.00} {3,9:#,##0.00}", item.Product, item.Sale, item.NC, item.Staff); } printText += DrawEqual; return PrintRaw(PrintLocationBI.BasePrinter, printText, "Sale Detail " + user); diff --git a/Tanshu.Accounts.Print/ThermalBill.cs b/Tanshu.Accounts.Print/ThermalBill.cs index 35751f9..7e55cde 100644 --- a/Tanshu.Accounts.Print/ThermalBill.cs +++ b/Tanshu.Accounts.Print/ThermalBill.cs @@ -33,32 +33,21 @@ namespace Tanshu.Accounts.Print billText += "\n\r" + FormatText("Service Charge : ", 33, Align.Right) + FormatBillNum(amount, 9); // Begin Service Tax and VAT Hack - decimal st = 0; - amount = list.Values.Where(x => x.Tax == 0.14741M).Sum(item => item.Quantity * item.Price * (1 - item.Discount) * (1 + item.ServiceCharge) * item.Tax); - st = amount * 0.190564292M; - amount = amount * (1 - 0.190564292M); + + amount = SplitTax(list.Values, .13125M); if (amount != 0) billText += "\n\r" + FormatText("VAT on Food : ", 33, Align.Right) + FormatBillNum(amount, 9); - amount = list.Values.Where(x => x.Tax == 0.26673M).Sum(item => item.Quantity * item.Price * (1 - item.Discount) * (1 + item.ServiceCharge) * item.Tax); - st += amount * 0.105316973M; - amount = amount * (1 - 0.105316973M); + amount = SplitTax(list.Values, .1575M); if (amount != 0) billText += "\n\r" + FormatText("VAT on Liqour : ", 33, Align.Right) + FormatBillNum(amount, 9); - if (st != 0) + amount = ServiceTax(list.Values); + if (amount != 0) billText += "\n\r" + FormatText("Cental Govt. ST : ", 33, Align.Right) + - FormatBillNum(st, 9); - //// Original - //amount = Tax(list.Values); - //if (amount != 0) - // billText += "\n\r" + FormatText("VAT (incl. surcharge) : ", 33, Align.Right) + - // FormatBillNum(amount, 9); - - // End Service Tax and VAT Hack - + FormatBillNum(amount, 9); amount = Amount(list.Values); if (amount != 0) diff --git a/Tanshu.Accounts.Repository/BusinessLayer/ProductBI.cs b/Tanshu.Accounts.Repository/BusinessLayer/ProductBI.cs index cc29c9d..1c45198 100644 --- a/Tanshu.Accounts.Repository/BusinessLayer/ProductBI.cs +++ b/Tanshu.Accounts.Repository/BusinessLayer/ProductBI.cs @@ -40,7 +40,8 @@ namespace Tanshu.Accounts.Repository foreach (var item in list) { NHibernateUtil.Initialize(item.ProductGroup); - NHibernateUtil.Initialize(item.Tax); + NHibernateUtil.Initialize(item.ServiceTax); + NHibernateUtil.Initialize(item.Vat); } return list; } @@ -55,7 +56,8 @@ namespace Tanshu.Accounts.Repository foreach (var item in list) { NHibernateUtil.Initialize(item.ProductGroup); - NHibernateUtil.Initialize(item.Tax); + NHibernateUtil.Initialize(item.ServiceTax); + NHibernateUtil.Initialize(item.Vat); } return list; } diff --git a/Tanshu.Accounts.Repository/BusinessLayer/SalesAnalysisBI.cs b/Tanshu.Accounts.Repository/BusinessLayer/SalesAnalysisBI.cs index b7ce4dc..c3cdf1d 100644 --- a/Tanshu.Accounts.Repository/BusinessLayer/SalesAnalysisBI.cs +++ b/Tanshu.Accounts.Repository/BusinessLayer/SalesAnalysisBI.cs @@ -321,16 +321,38 @@ and vs.Settled != :noCharge and vs.Settled != :unsettled and vs.Settled != :amou .UniqueResult() ?? 0M; outList.Add(new SalesAnalysis() { GroupType = "Service Charge", Amount = (decimal)amt }); #endregion - #region Tax + #region Service Tax query = @" -select i.Tax, Sum(i.Quantity * i.Price * (1 - i.Discount) * (1 + i.ServiceCharge) * i.Tax) +select Sum(i.Quantity * i.Price * (1 - i.Discount) * (1 + case when i.IsScTaxable then i.ServiceCharge else 0 end) * i.ServiceTax) from Voucher v inner join v.Kots k inner join k.Inventories i where v.Date >= :startDate and v.Date <= :finishDate 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 and vs.Settled != :staff) -group by i.Tax +"; + amt = session + .CreateQuery(query) + .SetParameter("startDate", startDate) + .SetParameter("finishDate", finishDate) + .SetParameter("noCharge", SettleOption.NoCharge) + .SetParameter("unsettled", SettleOption.Unsettled) + .SetParameter("amount", SettleOption.Amount) + .SetParameter("roundoff", SettleOption.RoundOff) + .SetParameter("staff", SettleOption.Staff) + .UniqueResult() ?? 0M; + outList.Add(new SalesAnalysis() { GroupType = "Service Tax", Amount = (decimal)amt }); + #endregion + #region Vat + query = @" +select i.Vat, Sum(i.Quantity * i.Price * (1 - i.Discount) * (1 + case when i.IsScTaxable then i.ServiceCharge else 0 end) * i.Vat) +from Voucher v +inner join v.Kots k +inner join k.Inventories i +where v.Date >= :startDate and v.Date <= :finishDate 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 and vs.Settled != :staff) +group by i.Vat "; var list = session .CreateQuery(query) diff --git a/Tanshu.Accounts.Repository/BusinessLayer/VoucherBI.cs b/Tanshu.Accounts.Repository/BusinessLayer/VoucherBI.cs index bc9f774..464931c 100644 --- a/Tanshu.Accounts.Repository/BusinessLayer/VoucherBI.cs +++ b/Tanshu.Accounts.Repository/BusinessLayer/VoucherBI.cs @@ -162,18 +162,23 @@ namespace Tanshu.Accounts.Repository foreach (var item in voucher.Kots.SelectMany(kot => kot.Inventories)) { item.ServiceCharge = 0; - item.Tax = 0; + item.ServiceTax = 0; + item.Vat = 0; } break; case VoucherType.TakeAway: foreach (var item in voucher.Kots.SelectMany(kot => kot.Inventories)) + { item.ServiceCharge = 0; + item.ServiceTax = 0; + } break; case VoucherType.Staff: foreach (var item in voucher.Kots.SelectMany(kot => kot.Inventories)) { item.ServiceCharge = 0; - item.Tax = 0; + item.ServiceTax = 0; + item.Vat = 0; } break; }