From 232a62f8cab59345f4d9d8902ce9eb4062d61317 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 2 Mar 2010 23:26:21 +0530 Subject: [PATCH] Initial Commit --- Include/System.Data.SQLite.dll | Bin 0 -> 839680 bytes Include/Tanshu.Common.dll | Bin 0 -> 22528 bytes Include/Tanshu.Data.dll | Bin 0 -> 31232 bytes Include/Tanshu.Logging.dll | Bin 0 -> 8704 bytes Sql/DB.sql | Bin 0 -> 51568 bytes Sql/Initial Data.sql | 1087 +++++++++++++++++ Sql/Remove Companies.sql | 675 ++++++++++ Sql/generate_inserts_2005.SQL | 481 ++++++++ Tanshu.Accounts.BI/AdvanceBI.cs | 50 + Tanshu.Accounts.BI/CheckoutBI.cs | 127 ++ Tanshu.Accounts.BI/CustomerBI.cs | 109 ++ Tanshu.Accounts.BI/LedgerBI.cs | 80 ++ Tanshu.Accounts.BI/ManagementBI.cs | 86 ++ Tanshu.Accounts.BI/MembershipBI.cs | 117 ++ Tanshu.Accounts.BI/PaymentBI.cs | 49 + Tanshu.Accounts.BI/ProductBI.cs | 134 ++ Tanshu.Accounts.BI/Properties/AssemblyInfo.cs | 36 + Tanshu.Accounts.BI/RoleBI.cs | 74 ++ Tanshu.Accounts.BI/SaleVoucherBI.cs | 224 ++++ Tanshu.Accounts.BI/SalesAnalysisBI.cs | 59 + Tanshu.Accounts.BI/SecurityBI.cs | 97 ++ Tanshu.Accounts.BI/Tanshu.Accounts.BI.csproj | 108 ++ .../Tanshu.Accounts.BI.csproj.user | 17 + Tanshu.Accounts.BI/UserBI.cs | 107 ++ Tanshu.Accounts.BI/WaiterBI.cs | 99 ++ .../Communication/Delegates.cs | 10 + .../DAOFactory/AdvanceDAO.cs | 14 + .../DAOFactory/CheckoutDAO.cs | 29 + .../DAOFactory/CustomerDAO.cs | 19 + .../DAOFactory/InventoryDAO.cs | 16 + .../DAOFactory/LedgerDAO.cs | 18 + .../DAOFactory/ManagementDAO.cs | 19 + .../DAOFactory/MembershipDAO.cs | 26 + .../DAOFactory/PaymentDAO.cs | 13 + .../DAOFactory/ProductDAO.cs | 26 + .../DAOFactory/SaleVoucherDAO.cs | 15 + .../DAOFactory/SaleVoucherMixDAO.cs | 22 + .../DAOFactory/SalesAnalysisDAO.cs | 14 + .../DAOFactory/TaxDAO.cs | 11 + .../DAOFactory/UserDAO.cs | 21 + .../DAOFactory/VoucherDAO.cs | 14 + .../DAOFactory/WaiterDAO.cs | 19 + .../Data Contracts/AdvanceBO.cs | 24 + .../Data Contracts/AdvanceDisplayBO.cs | 12 + .../Data Contracts/BillItemKey.cs | 54 + .../Data Contracts/ComplexProductBO.cs | 28 + .../Data Contracts/CostCenterBO.cs | 18 + .../Data Contracts/CustomerBO.cs | 29 + .../Data Contracts/InventoryBO.cs | 90 ++ .../Data Contracts/InventoryDisplayBO.cs | 12 + .../Data Contracts/JournalBO.cs | 41 + .../Data Contracts/JournalDisplayBO.cs | 12 + .../Data Contracts/LedgerBO.cs | 26 + .../Data Contracts/LedgerDisplayBO.cs | 12 + .../Data Contracts/LedgerTypeBO.cs | 20 + .../Data Contracts/PaymentBO.cs | 23 + .../Data Contracts/PaymentDisplayBO.cs | 12 + .../Data Contracts/PaymentSheetBO.cs | 34 + .../Data Contracts/PaymentSheetDisplayBO.cs | 14 + .../Data Contracts/PendingBillsBO.cs | 51 + .../Data Contracts/ProductBO.cs | 42 + .../Data Contracts/ProductDisplayBO.cs | 14 + .../Data Contracts/ProductDisplaySmallBO.cs | 20 + .../Data Contracts/ProductTypeBO.cs | 22 + .../Data Contracts/RequirementBO.cs | 45 + .../Data Contracts/RequirementDisplayBO.cs | 33 + .../Data Contracts/SalarySheetBO.cs | 52 + .../Data Contracts/SalarySheetDisplayBO.cs | 20 + .../Data Contracts/SaleVoucherBO.cs | 36 + .../Data Contracts/SalesAnalysisBO.cs | 33 + .../Data Contracts/SalesBillItemBO.cs | 130 ++ .../Data Contracts/TaxBO.cs | 20 + .../Data Contracts/UserBO.cs | 20 + .../Data Contracts/VerificationBO.cs | 27 + .../Data Contracts/VerificationDisplayBO.cs | 12 + .../Data Contracts/VoucherBO.cs | 30 + .../Data Contracts/WaiterBO.cs | 18 + .../Properties/AssemblyInfo.cs | 36 + .../Service Contracts/AdvanceBI.cs | 19 + .../Service Contracts/CheckoutBI.cs | 75 ++ .../Service Contracts/CustomerBI.cs | 31 + .../Service Contracts/LedgerBI.cs | 26 + .../Service Contracts/MembershipBI.cs | 28 + .../Service Contracts/PaymentBI.cs | 20 + .../Service Contracts/ProductBI.cs | 31 + .../Service Contracts/SaleVoucherBI.cs | 41 + .../Service Contracts/SalesAnalysisBI.cs | 23 + .../Service Contracts/UserBI.cs | 27 + .../Service Contracts/WaiterBI.cs | 23 + .../Tanshu.Accounts.Contracts.csproj | 129 ++ .../Tanshu.Accounts.Contracts.csproj.user | 5 + Tanshu.Accounts.DAOFactory/DAOFactory.cs | 54 + Tanshu.Accounts.DAOFactory/GetFactoryTypes.cs | 22 + .../PostgresDAOFactory.cs | 158 +++ .../Properties/AssemblyInfo.cs | 36 + .../SqlServerDAOFactory.cs | 92 ++ .../Tanshu.Accounts.DAOFactory.csproj | 76 ++ Tanshu.Accounts.Helpers/ControlFactory.cs | 103 ++ Tanshu.Accounts.Helpers/CustomStructs.cs | 24 + .../Properties/AssemblyInfo.cs | 36 + Tanshu.Accounts.Helpers/SelectBill.cs | 73 ++ Tanshu.Accounts.Helpers/SelectCustomer.cs | 112 ++ Tanshu.Accounts.Helpers/SelectProduct.cs | 77 ++ Tanshu.Accounts.Helpers/SelectUser.cs | 121 ++ Tanshu.Accounts.Helpers/SelectVoidReason.cs | 76 ++ Tanshu.Accounts.Helpers/SelectWaiter.cs | 139 +++ .../Tanshu.Accounts.Helpers.csproj | 110 ++ Tanshu.Accounts.PointOfSale/App.config | 12 + .../ApplyRates.Designer.cs | 158 +++ Tanshu.Accounts.PointOfSale/ApplyRates.cs | 19 + Tanshu.Accounts.PointOfSale/ApplyRates.resx | 123 ++ .../ComplexProductForm.Designer.cs | 226 ++++ .../ComplexProductForm.cs | 132 ++ .../ComplexProductForm.resx | 132 ++ Tanshu.Accounts.PointOfSale/CustomEnums.cs | 19 + .../CustomerForm.Designer.cs | 392 ++++++ Tanshu.Accounts.PointOfSale/CustomerForm.cs | 138 +++ Tanshu.Accounts.PointOfSale/CustomerForm.resx | 244 ++++ .../Logging/LogViewerForm.Designer.cs | 232 ++++ .../Logging/LogViewerForm.cs | 43 + .../Logging/LogViewerForm.resx | 123 ++ .../LoginForm.Designer.cs | 123 ++ Tanshu.Accounts.PointOfSale/LoginForm.cs | 56 + Tanshu.Accounts.PointOfSale/LoginForm.resx | 120 ++ Tanshu.Accounts.PointOfSale/MainForm.cs | 325 +++++ .../MainForm.designer.cs | 566 +++++++++ Tanshu.Accounts.PointOfSale/MainForm.resx | 123 ++ .../ProductNewRates.Designer.cs | 243 ++++ .../ProductNewRates.cs | 52 + .../ProductNewRates.resx | 123 ++ .../ProductTypes.Designer.cs | 255 ++++ Tanshu.Accounts.PointOfSale/ProductTypes.cs | 24 + Tanshu.Accounts.PointOfSale/ProductTypes.resx | 120 ++ .../ProductsForm.Designer.cs | 578 +++++++++ Tanshu.Accounts.PointOfSale/ProductsForm.cs | 256 ++++ Tanshu.Accounts.PointOfSale/ProductsForm.resx | 144 +++ Tanshu.Accounts.PointOfSale/Program.cs | 54 + .../Properties/AssemblyInfo.cs | 36 + .../Resources/burger.ico | Bin 0 -> 22486 bytes .../Sales/AdjustAdvanceForm.cs | 59 + .../Sales/AdjustAdvanceForm.designer.cs | 270 ++++ .../Sales/AdjustAdvanceForm.resx | 120 ++ .../Sales/BillHelperFunctions.cs | 236 ++++ .../Sales/CheckoutForm.Designer.cs | 481 ++++++++ .../Sales/CheckoutForm.cs | 94 ++ .../Sales/CheckoutForm.resx | 120 ++ .../Sales/CustomersForm.Designer.cs | 259 ++++ .../Sales/CustomersForm.cs | 110 ++ .../Sales/CustomersForm.resx | 126 ++ .../Sales/PaymentForm.Designer.cs | 318 +++++ .../Sales/PaymentForm.cs | 84 ++ .../Sales/PaymentForm.resx | 129 ++ .../Sales/RecieveAdvanceForm.cs | 82 ++ .../Sales/RecieveAdvanceForm.designer.cs | 258 ++++ .../Sales/RecieveAdvanceForm.resx | 120 ++ .../Sales/SaleAnalysisForm.cs | 98 ++ .../Sales/SaleAnalysisForm.designer.cs | 240 ++++ .../Sales/SaleAnalysisForm.resx | 120 ++ .../Sales/SalesForm.Designer.cs | 990 +++++++++++++++ .../Sales/SalesForm.cs | 934 ++++++++++++++ .../Sales/SalesForm.resx | 144 +++ Tanshu.Accounts.PointOfSale/Script.txt | 154 +++ .../Tanshu.Accounts.PointOfSale.csproj | 334 +++++ .../Tanshu.Accounts.PointOfSale.csproj.user | 5 + .../Updates/AutoUpdateForm.Designer.cs | 183 +++ .../Updates/AutoUpdateForm.cs | 62 + .../Updates/AutoUpdateForm.resx | 120 ++ .../Updates/ReplaceForm.Designer.cs | 254 ++++ .../Updates/ReplaceForm.cs | 71 ++ .../Updates/ReplaceForm.resx | 120 ++ .../Updates/SaleTaxReportForm.cs | 78 ++ .../Updates/SaleTaxReportForm.designer.cs | 239 ++++ .../Updates/SaleTaxReportForm.resx | 120 ++ .../Updates/UpdateForm.Designer.cs | 161 +++ .../Updates/UpdateForm.cs | 107 ++ .../Updates/UpdateForm.resx | 120 ++ .../Updates/UpdateSales.Designer.cs | 404 ++++++ .../Updates/UpdateSales.cs | 53 + .../Updates/UpdateSales.resx | 132 ++ .../User Management/AssignRoles.Designer.cs | 179 +++ .../User Management/AssignRoles.cs | 120 ++ .../User Management/AssignRoles.resx | 120 ++ .../ChangePassword.Designer.cs | 173 +++ .../User Management/ChangePassword.cs | 64 + .../User Management/ChangePassword.resx | 120 ++ .../User Management/RoleFactoryBI.cs | 28 + .../User Management/UserForm.Designer.cs | 147 +++ .../User Management/UserForm.cs | 84 ++ .../User Management/UserForm.resx | 120 ++ .../Properties/AssemblyInfo.cs | 36 + Tanshu.Accounts.Print/RawPrinterHelper.cs | 103 ++ .../Tanshu.Accounts.Print.csproj | 79 ++ Tanshu.Accounts.Print/Thermal.cs | 440 +++++++ Tanshu.Accounts.SqlDAO/AdvanceDAO.cs | 59 + Tanshu.Accounts.SqlDAO/BaseDAO.cs | 65 + Tanshu.Accounts.SqlDAO/CheckoutDAO.cs | 377 ++++++ Tanshu.Accounts.SqlDAO/CustomerDAO.cs | 109 ++ Tanshu.Accounts.SqlDAO/Database.cs | 10 + Tanshu.Accounts.SqlDAO/InventoryDAO.cs | 102 ++ Tanshu.Accounts.SqlDAO/LedgerDAO.cs | 102 ++ Tanshu.Accounts.SqlDAO/ManagementDAO.cs | 355 ++++++ Tanshu.Accounts.SqlDAO/MembershipDAO.cs | 151 +++ Tanshu.Accounts.SqlDAO/PaymentDAO.cs | 57 + Tanshu.Accounts.SqlDAO/ProductDAO.cs | 220 ++++ .../Properties/AssemblyInfo.cs | 36 + Tanshu.Accounts.SqlDAO/SaleVoucherDAO.cs | 112 ++ Tanshu.Accounts.SqlDAO/SaleVoucherMixDAO.cs | 351 ++++++ Tanshu.Accounts.SqlDAO/SalesAnalysisDAO.cs | 239 ++++ Tanshu.Accounts.SqlDAO/SqlConnectionDAO.cs | 16 + .../Tanshu.Accounts.SqlDAO.csproj | 95 ++ Tanshu.Accounts.SqlDAO/UserDAO.cs | 122 ++ Tanshu.Accounts.SqlDAO/VoucherDAO.cs | 131 ++ Tanshu.Accounts.SqlDAO/WaiterDAO.cs | 101 ++ Tanshu.Accounts.sln | 56 + 214 files changed, 25010 insertions(+) create mode 100644 Include/System.Data.SQLite.dll create mode 100644 Include/Tanshu.Common.dll create mode 100644 Include/Tanshu.Data.dll create mode 100644 Include/Tanshu.Logging.dll create mode 100644 Sql/DB.sql create mode 100644 Sql/Initial Data.sql create mode 100644 Sql/Remove Companies.sql create mode 100644 Sql/generate_inserts_2005.SQL create mode 100644 Tanshu.Accounts.BI/AdvanceBI.cs create mode 100644 Tanshu.Accounts.BI/CheckoutBI.cs create mode 100644 Tanshu.Accounts.BI/CustomerBI.cs create mode 100644 Tanshu.Accounts.BI/LedgerBI.cs create mode 100644 Tanshu.Accounts.BI/ManagementBI.cs create mode 100644 Tanshu.Accounts.BI/MembershipBI.cs create mode 100644 Tanshu.Accounts.BI/PaymentBI.cs create mode 100644 Tanshu.Accounts.BI/ProductBI.cs create mode 100644 Tanshu.Accounts.BI/Properties/AssemblyInfo.cs create mode 100644 Tanshu.Accounts.BI/RoleBI.cs create mode 100644 Tanshu.Accounts.BI/SaleVoucherBI.cs create mode 100644 Tanshu.Accounts.BI/SalesAnalysisBI.cs create mode 100644 Tanshu.Accounts.BI/SecurityBI.cs create mode 100644 Tanshu.Accounts.BI/Tanshu.Accounts.BI.csproj create mode 100644 Tanshu.Accounts.BI/Tanshu.Accounts.BI.csproj.user create mode 100644 Tanshu.Accounts.BI/UserBI.cs create mode 100644 Tanshu.Accounts.BI/WaiterBI.cs create mode 100644 Tanshu.Accounts.Contracts/Communication/Delegates.cs create mode 100644 Tanshu.Accounts.Contracts/DAOFactory/AdvanceDAO.cs create mode 100644 Tanshu.Accounts.Contracts/DAOFactory/CheckoutDAO.cs create mode 100644 Tanshu.Accounts.Contracts/DAOFactory/CustomerDAO.cs create mode 100644 Tanshu.Accounts.Contracts/DAOFactory/InventoryDAO.cs create mode 100644 Tanshu.Accounts.Contracts/DAOFactory/LedgerDAO.cs create mode 100644 Tanshu.Accounts.Contracts/DAOFactory/ManagementDAO.cs create mode 100644 Tanshu.Accounts.Contracts/DAOFactory/MembershipDAO.cs create mode 100644 Tanshu.Accounts.Contracts/DAOFactory/PaymentDAO.cs create mode 100644 Tanshu.Accounts.Contracts/DAOFactory/ProductDAO.cs create mode 100644 Tanshu.Accounts.Contracts/DAOFactory/SaleVoucherDAO.cs create mode 100644 Tanshu.Accounts.Contracts/DAOFactory/SaleVoucherMixDAO.cs create mode 100644 Tanshu.Accounts.Contracts/DAOFactory/SalesAnalysisDAO.cs create mode 100644 Tanshu.Accounts.Contracts/DAOFactory/TaxDAO.cs create mode 100644 Tanshu.Accounts.Contracts/DAOFactory/UserDAO.cs create mode 100644 Tanshu.Accounts.Contracts/DAOFactory/VoucherDAO.cs create mode 100644 Tanshu.Accounts.Contracts/DAOFactory/WaiterDAO.cs create mode 100644 Tanshu.Accounts.Contracts/Data Contracts/AdvanceBO.cs create mode 100644 Tanshu.Accounts.Contracts/Data Contracts/AdvanceDisplayBO.cs create mode 100644 Tanshu.Accounts.Contracts/Data Contracts/BillItemKey.cs create mode 100644 Tanshu.Accounts.Contracts/Data Contracts/ComplexProductBO.cs create mode 100644 Tanshu.Accounts.Contracts/Data Contracts/CostCenterBO.cs create mode 100644 Tanshu.Accounts.Contracts/Data Contracts/CustomerBO.cs create mode 100644 Tanshu.Accounts.Contracts/Data Contracts/InventoryBO.cs create mode 100644 Tanshu.Accounts.Contracts/Data Contracts/InventoryDisplayBO.cs create mode 100644 Tanshu.Accounts.Contracts/Data Contracts/JournalBO.cs create mode 100644 Tanshu.Accounts.Contracts/Data Contracts/JournalDisplayBO.cs create mode 100644 Tanshu.Accounts.Contracts/Data Contracts/LedgerBO.cs create mode 100644 Tanshu.Accounts.Contracts/Data Contracts/LedgerDisplayBO.cs create mode 100644 Tanshu.Accounts.Contracts/Data Contracts/LedgerTypeBO.cs create mode 100644 Tanshu.Accounts.Contracts/Data Contracts/PaymentBO.cs create mode 100644 Tanshu.Accounts.Contracts/Data Contracts/PaymentDisplayBO.cs create mode 100644 Tanshu.Accounts.Contracts/Data Contracts/PaymentSheetBO.cs create mode 100644 Tanshu.Accounts.Contracts/Data Contracts/PaymentSheetDisplayBO.cs create mode 100644 Tanshu.Accounts.Contracts/Data Contracts/PendingBillsBO.cs create mode 100644 Tanshu.Accounts.Contracts/Data Contracts/ProductBO.cs create mode 100644 Tanshu.Accounts.Contracts/Data Contracts/ProductDisplayBO.cs create mode 100644 Tanshu.Accounts.Contracts/Data Contracts/ProductDisplaySmallBO.cs create mode 100644 Tanshu.Accounts.Contracts/Data Contracts/ProductTypeBO.cs create mode 100644 Tanshu.Accounts.Contracts/Data Contracts/RequirementBO.cs create mode 100644 Tanshu.Accounts.Contracts/Data Contracts/RequirementDisplayBO.cs create mode 100644 Tanshu.Accounts.Contracts/Data Contracts/SalarySheetBO.cs create mode 100644 Tanshu.Accounts.Contracts/Data Contracts/SalarySheetDisplayBO.cs create mode 100644 Tanshu.Accounts.Contracts/Data Contracts/SaleVoucherBO.cs create mode 100644 Tanshu.Accounts.Contracts/Data Contracts/SalesAnalysisBO.cs create mode 100644 Tanshu.Accounts.Contracts/Data Contracts/SalesBillItemBO.cs create mode 100644 Tanshu.Accounts.Contracts/Data Contracts/TaxBO.cs create mode 100644 Tanshu.Accounts.Contracts/Data Contracts/UserBO.cs create mode 100644 Tanshu.Accounts.Contracts/Data Contracts/VerificationBO.cs create mode 100644 Tanshu.Accounts.Contracts/Data Contracts/VerificationDisplayBO.cs create mode 100644 Tanshu.Accounts.Contracts/Data Contracts/VoucherBO.cs create mode 100644 Tanshu.Accounts.Contracts/Data Contracts/WaiterBO.cs create mode 100644 Tanshu.Accounts.Contracts/Properties/AssemblyInfo.cs create mode 100644 Tanshu.Accounts.Contracts/Service Contracts/AdvanceBI.cs create mode 100644 Tanshu.Accounts.Contracts/Service Contracts/CheckoutBI.cs create mode 100644 Tanshu.Accounts.Contracts/Service Contracts/CustomerBI.cs create mode 100644 Tanshu.Accounts.Contracts/Service Contracts/LedgerBI.cs create mode 100644 Tanshu.Accounts.Contracts/Service Contracts/MembershipBI.cs create mode 100644 Tanshu.Accounts.Contracts/Service Contracts/PaymentBI.cs create mode 100644 Tanshu.Accounts.Contracts/Service Contracts/ProductBI.cs create mode 100644 Tanshu.Accounts.Contracts/Service Contracts/SaleVoucherBI.cs create mode 100644 Tanshu.Accounts.Contracts/Service Contracts/SalesAnalysisBI.cs create mode 100644 Tanshu.Accounts.Contracts/Service Contracts/UserBI.cs create mode 100644 Tanshu.Accounts.Contracts/Service Contracts/WaiterBI.cs create mode 100644 Tanshu.Accounts.Contracts/Tanshu.Accounts.Contracts.csproj create mode 100644 Tanshu.Accounts.Contracts/Tanshu.Accounts.Contracts.csproj.user create mode 100644 Tanshu.Accounts.DAOFactory/DAOFactory.cs create mode 100644 Tanshu.Accounts.DAOFactory/GetFactoryTypes.cs create mode 100644 Tanshu.Accounts.DAOFactory/PostgresDAOFactory.cs create mode 100644 Tanshu.Accounts.DAOFactory/Properties/AssemblyInfo.cs create mode 100644 Tanshu.Accounts.DAOFactory/SqlServerDAOFactory.cs create mode 100644 Tanshu.Accounts.DAOFactory/Tanshu.Accounts.DAOFactory.csproj create mode 100644 Tanshu.Accounts.Helpers/ControlFactory.cs create mode 100644 Tanshu.Accounts.Helpers/CustomStructs.cs create mode 100644 Tanshu.Accounts.Helpers/Properties/AssemblyInfo.cs create mode 100644 Tanshu.Accounts.Helpers/SelectBill.cs create mode 100644 Tanshu.Accounts.Helpers/SelectCustomer.cs create mode 100644 Tanshu.Accounts.Helpers/SelectProduct.cs create mode 100644 Tanshu.Accounts.Helpers/SelectUser.cs create mode 100644 Tanshu.Accounts.Helpers/SelectVoidReason.cs create mode 100644 Tanshu.Accounts.Helpers/SelectWaiter.cs create mode 100644 Tanshu.Accounts.Helpers/Tanshu.Accounts.Helpers.csproj create mode 100644 Tanshu.Accounts.PointOfSale/App.config create mode 100644 Tanshu.Accounts.PointOfSale/ApplyRates.Designer.cs create mode 100644 Tanshu.Accounts.PointOfSale/ApplyRates.cs create mode 100644 Tanshu.Accounts.PointOfSale/ApplyRates.resx create mode 100644 Tanshu.Accounts.PointOfSale/ComplexProductForm.Designer.cs create mode 100644 Tanshu.Accounts.PointOfSale/ComplexProductForm.cs create mode 100644 Tanshu.Accounts.PointOfSale/ComplexProductForm.resx create mode 100644 Tanshu.Accounts.PointOfSale/CustomEnums.cs create mode 100644 Tanshu.Accounts.PointOfSale/CustomerForm.Designer.cs create mode 100644 Tanshu.Accounts.PointOfSale/CustomerForm.cs create mode 100644 Tanshu.Accounts.PointOfSale/CustomerForm.resx create mode 100644 Tanshu.Accounts.PointOfSale/Logging/LogViewerForm.Designer.cs create mode 100644 Tanshu.Accounts.PointOfSale/Logging/LogViewerForm.cs create mode 100644 Tanshu.Accounts.PointOfSale/Logging/LogViewerForm.resx create mode 100644 Tanshu.Accounts.PointOfSale/LoginForm.Designer.cs create mode 100644 Tanshu.Accounts.PointOfSale/LoginForm.cs create mode 100644 Tanshu.Accounts.PointOfSale/LoginForm.resx create mode 100644 Tanshu.Accounts.PointOfSale/MainForm.cs create mode 100644 Tanshu.Accounts.PointOfSale/MainForm.designer.cs create mode 100644 Tanshu.Accounts.PointOfSale/MainForm.resx create mode 100644 Tanshu.Accounts.PointOfSale/ProductNewRates.Designer.cs create mode 100644 Tanshu.Accounts.PointOfSale/ProductNewRates.cs create mode 100644 Tanshu.Accounts.PointOfSale/ProductNewRates.resx create mode 100644 Tanshu.Accounts.PointOfSale/ProductTypes.Designer.cs create mode 100644 Tanshu.Accounts.PointOfSale/ProductTypes.cs create mode 100644 Tanshu.Accounts.PointOfSale/ProductTypes.resx create mode 100644 Tanshu.Accounts.PointOfSale/ProductsForm.Designer.cs create mode 100644 Tanshu.Accounts.PointOfSale/ProductsForm.cs create mode 100644 Tanshu.Accounts.PointOfSale/ProductsForm.resx create mode 100644 Tanshu.Accounts.PointOfSale/Program.cs create mode 100644 Tanshu.Accounts.PointOfSale/Properties/AssemblyInfo.cs create mode 100644 Tanshu.Accounts.PointOfSale/Resources/burger.ico create mode 100644 Tanshu.Accounts.PointOfSale/Sales/AdjustAdvanceForm.cs create mode 100644 Tanshu.Accounts.PointOfSale/Sales/AdjustAdvanceForm.designer.cs create mode 100644 Tanshu.Accounts.PointOfSale/Sales/AdjustAdvanceForm.resx create mode 100644 Tanshu.Accounts.PointOfSale/Sales/BillHelperFunctions.cs create mode 100644 Tanshu.Accounts.PointOfSale/Sales/CheckoutForm.Designer.cs create mode 100644 Tanshu.Accounts.PointOfSale/Sales/CheckoutForm.cs create mode 100644 Tanshu.Accounts.PointOfSale/Sales/CheckoutForm.resx create mode 100644 Tanshu.Accounts.PointOfSale/Sales/CustomersForm.Designer.cs create mode 100644 Tanshu.Accounts.PointOfSale/Sales/CustomersForm.cs create mode 100644 Tanshu.Accounts.PointOfSale/Sales/CustomersForm.resx create mode 100644 Tanshu.Accounts.PointOfSale/Sales/PaymentForm.Designer.cs create mode 100644 Tanshu.Accounts.PointOfSale/Sales/PaymentForm.cs create mode 100644 Tanshu.Accounts.PointOfSale/Sales/PaymentForm.resx create mode 100644 Tanshu.Accounts.PointOfSale/Sales/RecieveAdvanceForm.cs create mode 100644 Tanshu.Accounts.PointOfSale/Sales/RecieveAdvanceForm.designer.cs create mode 100644 Tanshu.Accounts.PointOfSale/Sales/RecieveAdvanceForm.resx create mode 100644 Tanshu.Accounts.PointOfSale/Sales/SaleAnalysisForm.cs create mode 100644 Tanshu.Accounts.PointOfSale/Sales/SaleAnalysisForm.designer.cs create mode 100644 Tanshu.Accounts.PointOfSale/Sales/SaleAnalysisForm.resx create mode 100644 Tanshu.Accounts.PointOfSale/Sales/SalesForm.Designer.cs create mode 100644 Tanshu.Accounts.PointOfSale/Sales/SalesForm.cs create mode 100644 Tanshu.Accounts.PointOfSale/Sales/SalesForm.resx create mode 100644 Tanshu.Accounts.PointOfSale/Script.txt create mode 100644 Tanshu.Accounts.PointOfSale/Tanshu.Accounts.PointOfSale.csproj create mode 100644 Tanshu.Accounts.PointOfSale/Tanshu.Accounts.PointOfSale.csproj.user create mode 100644 Tanshu.Accounts.PointOfSale/Updates/AutoUpdateForm.Designer.cs create mode 100644 Tanshu.Accounts.PointOfSale/Updates/AutoUpdateForm.cs create mode 100644 Tanshu.Accounts.PointOfSale/Updates/AutoUpdateForm.resx create mode 100644 Tanshu.Accounts.PointOfSale/Updates/ReplaceForm.Designer.cs create mode 100644 Tanshu.Accounts.PointOfSale/Updates/ReplaceForm.cs create mode 100644 Tanshu.Accounts.PointOfSale/Updates/ReplaceForm.resx create mode 100644 Tanshu.Accounts.PointOfSale/Updates/SaleTaxReportForm.cs create mode 100644 Tanshu.Accounts.PointOfSale/Updates/SaleTaxReportForm.designer.cs create mode 100644 Tanshu.Accounts.PointOfSale/Updates/SaleTaxReportForm.resx create mode 100644 Tanshu.Accounts.PointOfSale/Updates/UpdateForm.Designer.cs create mode 100644 Tanshu.Accounts.PointOfSale/Updates/UpdateForm.cs create mode 100644 Tanshu.Accounts.PointOfSale/Updates/UpdateForm.resx create mode 100644 Tanshu.Accounts.PointOfSale/Updates/UpdateSales.Designer.cs create mode 100644 Tanshu.Accounts.PointOfSale/Updates/UpdateSales.cs create mode 100644 Tanshu.Accounts.PointOfSale/Updates/UpdateSales.resx create mode 100644 Tanshu.Accounts.PointOfSale/User Management/AssignRoles.Designer.cs create mode 100644 Tanshu.Accounts.PointOfSale/User Management/AssignRoles.cs create mode 100644 Tanshu.Accounts.PointOfSale/User Management/AssignRoles.resx create mode 100644 Tanshu.Accounts.PointOfSale/User Management/ChangePassword.Designer.cs create mode 100644 Tanshu.Accounts.PointOfSale/User Management/ChangePassword.cs create mode 100644 Tanshu.Accounts.PointOfSale/User Management/ChangePassword.resx create mode 100644 Tanshu.Accounts.PointOfSale/User Management/RoleFactoryBI.cs create mode 100644 Tanshu.Accounts.PointOfSale/User Management/UserForm.Designer.cs create mode 100644 Tanshu.Accounts.PointOfSale/User Management/UserForm.cs create mode 100644 Tanshu.Accounts.PointOfSale/User Management/UserForm.resx create mode 100644 Tanshu.Accounts.Print/Properties/AssemblyInfo.cs create mode 100644 Tanshu.Accounts.Print/RawPrinterHelper.cs create mode 100644 Tanshu.Accounts.Print/Tanshu.Accounts.Print.csproj create mode 100644 Tanshu.Accounts.Print/Thermal.cs create mode 100644 Tanshu.Accounts.SqlDAO/AdvanceDAO.cs create mode 100644 Tanshu.Accounts.SqlDAO/BaseDAO.cs create mode 100644 Tanshu.Accounts.SqlDAO/CheckoutDAO.cs create mode 100644 Tanshu.Accounts.SqlDAO/CustomerDAO.cs create mode 100644 Tanshu.Accounts.SqlDAO/Database.cs create mode 100644 Tanshu.Accounts.SqlDAO/InventoryDAO.cs create mode 100644 Tanshu.Accounts.SqlDAO/LedgerDAO.cs create mode 100644 Tanshu.Accounts.SqlDAO/ManagementDAO.cs create mode 100644 Tanshu.Accounts.SqlDAO/MembershipDAO.cs create mode 100644 Tanshu.Accounts.SqlDAO/PaymentDAO.cs create mode 100644 Tanshu.Accounts.SqlDAO/ProductDAO.cs create mode 100644 Tanshu.Accounts.SqlDAO/Properties/AssemblyInfo.cs create mode 100644 Tanshu.Accounts.SqlDAO/SaleVoucherDAO.cs create mode 100644 Tanshu.Accounts.SqlDAO/SaleVoucherMixDAO.cs create mode 100644 Tanshu.Accounts.SqlDAO/SalesAnalysisDAO.cs create mode 100644 Tanshu.Accounts.SqlDAO/SqlConnectionDAO.cs create mode 100644 Tanshu.Accounts.SqlDAO/Tanshu.Accounts.SqlDAO.csproj create mode 100644 Tanshu.Accounts.SqlDAO/UserDAO.cs create mode 100644 Tanshu.Accounts.SqlDAO/VoucherDAO.cs create mode 100644 Tanshu.Accounts.SqlDAO/WaiterDAO.cs create mode 100644 Tanshu.Accounts.sln diff --git a/Include/System.Data.SQLite.dll b/Include/System.Data.SQLite.dll new file mode 100644 index 0000000000000000000000000000000000000000..080c74cd52a2b9dcb6cf9b8d3b9756b62d1492fe GIT binary patch literal 839680 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 (K=Xetqs4% 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 z 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%0DY+p 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 literal 0 HcmV?d00001 diff --git a/Include/Tanshu.Data.dll b/Include/Tanshu.Data.dll new file mode 100644 index 0000000000000000000000000000000000000000..0b51f902e51edbc63f984d6b1039106635ac0c62 GIT binary patch literal 31232 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 literal 0 HcmV?d00001 diff --git a/Include/Tanshu.Logging.dll b/Include/Tanshu.Logging.dll new file mode 100644 index 0000000000000000000000000000000000000000..a1e6b014f3f83dce3f5faba2d003c41a60e79982 GIT binary patch literal 8704 zcmeHMdvH|ebwBs+?$v4~t=W|TfoyRxU<+BSB>^_nKvqZs%aM?*6^Qr|v8%n3*6i+G z-QC3q3W(IWg*YTQw54OWjqOYvJf8U3_|dpAjXjB*+992iI1M3oos7#&UDt6vop@T) z-#PcLcJ*kIX(!`DzbUHYuj{p!+zu|!tSSmvk|P3gnYblS}6F+;cVX+4qFJ9;B}%8VPKsw&@dr|G^< zqHe`Sn-09*Rp{*vQkPaJUZTa2XtwmiIy`mUVcZNl9;$6OD6yZPG>IGX8&4Aa3Lhbw zCx6AK!?G@}KSH|^Cc>aO5Hqh`M3pmTzX`7s!Go#G3;xC_jwqBf_U6Fn;>>TRQHND@?Sxgcb5djw>#X?vW3k`*~eW{ph;;j%|PB>#m2ET)1uYjzdrP-12W< zKKK6Vw?BO%)-qPF?nl_&jaRC!142LmUu=O85cmoLAt0zI2!wzDVYI6V0YOzkAVj^| zfMMlpB&u$9Q!hfH5Cv=@I`%`kApivn;*1#tusS zjg4w;kz8CP>kDK^T{5pgbG@2ky(w~WQCeRhrJkcvhw;OM2TM<2b|kH*;N8sdea6M% zLj`48lKV^~Km)hXT)`a70H>DMnpc69 zVQ6CQWsOB5GBKT)TWoWPoK{|EUJd0{eu(RAG3JXFa0fhQ0}9H`m0Wxz;I7s#)R#AD z<#rN^sVOEVpfxI}qtbRd_R~UMbb94tfv%*t-?!<_k()Lv95h_K-tB1(HHX$VU*CE? zOFWbWJ`UTL9mG;uMzojdNX|;6N3*PP5|MZm@msb%LSal(WSf?4-QLxKXCL^x5SeA0 zlV*&Sae-9^uXwOr*2E8$)fg_)JK`qGG1tfVCJbhR!?I;zOv}E?R-${clWD#YYFs|Y z0}UQ;gU&62rv$Ν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 literal 0 HcmV?d00001 diff --git a/Sql/Initial Data.sql b/Sql/Initial Data.sql new file mode 100644 index 0000000..aa7e1b4 --- /dev/null +++ b/Sql/Initial Data.sql @@ -0,0 +1,1087 @@ +-- Insert CostCenters +INSERT INTO [CostCenters] ([CostCenterID],[Code],[Name],[timestamp])VALUES('5DCA3747-D6A0-45C3-A248-018331722D4A',12,'Namkeen',DEFAULT) +INSERT INTO [CostCenters] ([CostCenterID],[Code],[Name],[timestamp])VALUES('78E5F85C-D987-4788-9526-06A5A81DC063',32,'Special Deals',DEFAULT) +INSERT INTO [CostCenters] ([CostCenterID],[Code],[Name],[timestamp])VALUES('955AF7D1-E66C-497E-850D-211E6BDF2611',23,'Pickup Restaurant',DEFAULT) +INSERT INTO [CostCenters] ([CostCenterID],[Code],[Name],[timestamp])VALUES('B4C1D8C9-EFBE-4680-B153-39FD44FAAF10',31,'Waiter Restaurant',DEFAULT) +INSERT INTO [CostCenters] ([CostCenterID],[Code],[Name],[timestamp])VALUES('803E897A-2B3E-4AEF-9849-4293EFD473B7',29,'Ice Cream Basement',DEFAULT) +INSERT INTO [CostCenters] ([CostCenterID],[Code],[Name],[timestamp])VALUES('6E10D530-11EE-4374-BBC4-4700A9EEF27A',10,'Bakery',DEFAULT) +INSERT INTO [CostCenters] ([CostCenterID],[Code],[Name],[timestamp])VALUES('E742C6BF-E6B7-4D85-9AEA-4D30F98ECD41',18,'Ice Cream Ground Floor',DEFAULT) +INSERT INTO [CostCenters] ([CostCenterID],[Code],[Name],[timestamp])VALUES('4002505A-977A-432F-937C-54043A749E40',0,'Sale',DEFAULT) +INSERT INTO [CostCenters] ([CostCenterID],[Code],[Name],[timestamp])VALUES('CE98D3B2-CCE3-42C5-9FEB-5D7783E899DF',8,'Tandoor',DEFAULT) +INSERT INTO [CostCenters] ([CostCenterID],[Code],[Name],[timestamp])VALUES('394D79F1-22BF-4B57-9E04-6114DAA985B9',11,'Bhandari',DEFAULT) +INSERT INTO [CostCenters] ([CostCenterID],[Code],[Name],[timestamp])VALUES('506AD654-DDC2-45BE-AB33-62F2BD179869',24,'Waiter Fast Food',DEFAULT) +INSERT INTO [CostCenters] ([CostCenterID],[Code],[Name],[timestamp])VALUES('D9A17CE1-3A95-4AAA-AEF3-8B4F56F7636F',4,'Sweets',DEFAULT) +INSERT INTO [CostCenters] ([CostCenterID],[Code],[Name],[timestamp])VALUES('B30F4DD8-84E3-4A91-B8EA-8DCB0AF79698',2,'Indian',DEFAULT) +INSERT INTO [CostCenters] ([CostCenterID],[Code],[Name],[timestamp])VALUES('08E80158-0B18-46D2-924A-9375A71401DC',9,'Continental',DEFAULT) +INSERT INTO [CostCenters] ([CostCenterID],[Code],[Name],[timestamp])VALUES('C0DE6CD2-C04B-4FDE-8AF9-94D3242C572C',26,'Bhatura',DEFAULT) +INSERT INTO [CostCenters] ([CostCenterID],[Code],[Name],[timestamp])VALUES('F71BD61F-6EAD-4DCA-BA22-9860118AF2DD',7,'South Indian',DEFAULT) +INSERT INTO [CostCenters] ([CostCenterID],[Code],[Name],[timestamp])VALUES('2277DEEB-B43F-4CF4-BA71-B03AEEBECDDD',30,'Ice Cream Restaurant',DEFAULT) +INSERT INTO [CostCenters] ([CostCenterID],[Code],[Name],[timestamp])VALUES('7345731F-9635-4268-8A73-B482FA290718',20,'Mithai Counter',DEFAULT) +INSERT INTO [CostCenters] ([CostCenterID],[Code],[Name],[timestamp])VALUES('B82CA45B-DBE0-4FE9-BBF1-B7FBBA819B44',3,'Chinese Fast Food',DEFAULT) +INSERT INTO [CostCenters] ([CostCenterID],[Code],[Name],[timestamp])VALUES('037C1491-E418-4FC6-87ED-B83074BC6EA9',16,'Other Issues',DEFAULT) +INSERT INTO [CostCenters] ([CostCenterID],[Code],[Name],[timestamp])VALUES('019611CC-FC7E-4491-AB4F-B9D2006E0C7F',33,'Houdi',DEFAULT) +INSERT INTO [CostCenters] ([CostCenterID],[Code],[Name],[timestamp])VALUES('E3079DCD-97C6-444A-B0FD-BBD40CC8EE9A',17,'Outdoor Catering',DEFAULT) +INSERT INTO [CostCenters] ([CostCenterID],[Code],[Name],[timestamp])VALUES('A9BCF727-8909-4929-B56C-CDB238CD1437',15,'Bhandari WS',DEFAULT) +INSERT INTO [CostCenters] ([CostCenterID],[Code],[Name],[timestamp])VALUES('BFC247CC-3C09-4D2A-9EE9-D131A486B6B9',28,'Chinese Restaurant',DEFAULT) +INSERT INTO [CostCenters] ([CostCenterID],[Code],[Name],[timestamp])VALUES('FA338C74-0048-49BA-9F3F-D594F43D5C05',25,'Pickup Fast Food',DEFAULT) +INSERT INTO [CostCenters] ([CostCenterID],[Code],[Name],[timestamp])VALUES('3694F536-2A52-4607-AE94-E0F746BF6C0D',1,'Overall',DEFAULT) +INSERT INTO [CostCenters] ([CostCenterID],[Code],[Name],[timestamp])VALUES('A165A741-16B6-4D8C-AC78-EB2F9C1185E2',14,'Chat',DEFAULT) +INSERT INTO [CostCenters] ([CostCenterID],[Code],[Name],[timestamp])VALUES('93DD356F-9A48-4413-9210-ED899D792F2F',27,'286',DEFAULT) +INSERT INTO [CostCenters] ([CostCenterID],[Code],[Name],[timestamp])VALUES('CEB9F5D6-6750-47FD-9B83-EF1F648E13AE',19,'Stock Loss',DEFAULT) +INSERT INTO [CostCenters] ([CostCenterID],[Code],[Name],[timestamp])VALUES('955F847B-EFDF-4AFA-897C-F0BAF15284A3',6,'Purchase',DEFAULT) +INSERT INTO [CostCenters] ([CostCenterID],[Code],[Name],[timestamp])VALUES('243E3B96-16E7-4A8E-A483-F721BFC07DAC',13,'House Keeping',DEFAULT) + +-- Insert Ledgers +INSERT INTO [Ledgers] ([LedgerID],[Code],[Name],[Type],[ParentLedgerID],[CostCenterID],[timestamp])VALUES('88A234F5-65DA-4166-A171-0139EC7B9BA6',28,'Chinese Restaurant Sales','X','75B28950-02AF-4939-87CE-C99653522B33','BFC247CC-3C09-4D2A-9EE9-D131A486B6B9',DEFAULT) +INSERT INTO [Ledgers] ([LedgerID],[Code],[Name],[Type],[ParentLedgerID],[CostCenterID],[timestamp])VALUES('4DEDF95B-B5D1-460F-8C8B-0F7E64EC9602',3,'HDFC','B','57076758-28DE-48AE-A778-73E5E9F47837','3694F536-2A52-4607-AE94-E0F746BF6C0D',DEFAULT) +INSERT INTO [Ledgers] ([LedgerID],[Code],[Name],[Type],[ParentLedgerID],[CostCenterID],[timestamp])VALUES('1BFAA689-EF6E-44B5-9E73-34451E577E1E',4,'ICICI','B','57076758-28DE-48AE-A778-73E5E9F47837','3694F536-2A52-4607-AE94-E0F746BF6C0D',DEFAULT) +INSERT INTO [Ledgers] ([LedgerID],[Code],[Name],[Type],[ParentLedgerID],[CostCenterID],[timestamp])VALUES('C8C87922-5982-4731-AB9A-352D21F19EDA',8,'Tandoor Sales','X','75B28950-02AF-4939-87CE-C99653522B33','CE98D3B2-CCE3-42C5-9FEB-5D7783E899DF',DEFAULT) +INSERT INTO [Ledgers] ([LedgerID],[Code],[Name],[Type],[ParentLedgerID],[CostCenterID],[timestamp])VALUES('AC73D06F-997C-44AB-9712-4E2CD8049357',2,'4% VAT','T',NULL,'3694F536-2A52-4607-AE94-E0F746BF6C0D',DEFAULT) +INSERT INTO [Ledgers] ([LedgerID],[Code],[Name],[Type],[ParentLedgerID],[CostCenterID],[timestamp])VALUES('99D80D24-13C4-4C85-A7EB-67A29D154490',0,'All Purchases','P','99D80D24-13C4-4C85-A7EB-67A29D154490','3694F536-2A52-4607-AE94-E0F746BF6C0D',DEFAULT) +INSERT INTO [Ledgers] ([LedgerID],[Code],[Name],[Type],[ParentLedgerID],[CostCenterID],[timestamp])VALUES('BE495981-2DAA-4472-BC68-6DD93BFB6C82',2,'PNB','B','57076758-28DE-48AE-A778-73E5E9F47837','3694F536-2A52-4607-AE94-E0F746BF6C0D',DEFAULT) +INSERT INTO [Ledgers] ([LedgerID],[Code],[Name],[Type],[ParentLedgerID],[CostCenterID],[timestamp])VALUES('57076758-28DE-48AE-A778-73E5E9F47837',0,'Cash / Bank Accounts','B',NULL,'3694F536-2A52-4607-AE94-E0F746BF6C0D',DEFAULT) +INSERT INTO [Ledgers] ([LedgerID],[Code],[Name],[Type],[ParentLedgerID],[CostCenterID],[timestamp])VALUES('82D65188-AC81-4355-92B2-762F2E519060',12,'Namkeen Sales','X','75B28950-02AF-4939-87CE-C99653522B33','5DCA3747-D6A0-45C3-A248-018331722D4A',DEFAULT) +INSERT INTO [Ledgers] ([LedgerID],[Code],[Name],[Type],[ParentLedgerID],[CostCenterID],[timestamp])VALUES('48E10C74-9508-44CB-9D7D-7B71ABDAA289',3,'12.5% VAT','T',NULL,'3694F536-2A52-4607-AE94-E0F746BF6C0D',DEFAULT) +INSERT INTO [Ledgers] ([LedgerID],[Code],[Name],[Type],[ParentLedgerID],[CostCenterID],[timestamp])VALUES('F7755AB3-9EFC-4278-BEE1-849E8FE37ABA',4,'4% CST','T',NULL,'3694F536-2A52-4607-AE94-E0F746BF6C0D',DEFAULT) +INSERT INTO [Ledgers] ([LedgerID],[Code],[Name],[Type],[ParentLedgerID],[CostCenterID],[timestamp])VALUES('25ECCB39-7D75-49DE-8F47-87DC5D5326B9',26,'Bhatura Sales','X','75B28950-02AF-4939-87CE-C99653522B33','C0DE6CD2-C04B-4FDE-8AF9-94D3242C572C',DEFAULT) +INSERT INTO [Ledgers] ([LedgerID],[Code],[Name],[Type],[ParentLedgerID],[CostCenterID],[timestamp])VALUES('66497F17-8096-46B7-A45E-8851BA4EA780',4,'Sweets Sales','X','75B28950-02AF-4939-87CE-C99653522B33','D9A17CE1-3A95-4AAA-AEF3-8B4F56F7636F',DEFAULT) +INSERT INTO [Ledgers] ([LedgerID],[Code],[Name],[Type],[ParentLedgerID],[CostCenterID],[timestamp])VALUES('A072E791-082A-419D-8889-9387674A8297',10,'Bakery Sales','X','75B28950-02AF-4939-87CE-C99653522B33','6E10D530-11EE-4374-BBC4-4700A9EEF27A',DEFAULT) +INSERT INTO [Ledgers] ([LedgerID],[Code],[Name],[Type],[ParentLedgerID],[CostCenterID],[timestamp])VALUES('3D1413EE-D3EA-412F-B762-BAE37BD503B6',1,'Tax Free','T',NULL,'3694F536-2A52-4607-AE94-E0F746BF6C0D',DEFAULT) +INSERT INTO [Ledgers] ([LedgerID],[Code],[Name],[Type],[ParentLedgerID],[CostCenterID],[timestamp])VALUES('092A7308-8A30-49C4-B7C4-C3BADFC1659C',2,'Indian Sales','X','75B28950-02AF-4939-87CE-C99653522B33','B30F4DD8-84E3-4A91-B8EA-8DCB0AF79698',DEFAULT) +INSERT INTO [Ledgers] ([LedgerID],[Code],[Name],[Type],[ParentLedgerID],[CostCenterID],[timestamp])VALUES('75B28950-02AF-4939-87CE-C99653522B33',0,'All Sales','X',NULL,'3694F536-2A52-4607-AE94-E0F746BF6C0D',DEFAULT) +INSERT INTO [Ledgers] ([LedgerID],[Code],[Name],[Type],[ParentLedgerID],[CostCenterID],[timestamp])VALUES('CF0285D9-9FE6-4A3B-A6D9-CBBEA5ED228F',14,'Chat Sales','X','75B28950-02AF-4939-87CE-C99653522B33','A165A741-16B6-4D8C-AC78-EB2F9C1185E2',DEFAULT) +INSERT INTO [Ledgers] ([LedgerID],[Code],[Name],[Type],[ParentLedgerID],[CostCenterID],[timestamp])VALUES('ADFB70E9-D421-44DD-B1A8-D1024C776556',7,'South Indian Sales','X','75B28950-02AF-4939-87CE-C99653522B33','F71BD61F-6EAD-4DCA-BA22-9860118AF2DD',DEFAULT) +INSERT INTO [Ledgers] ([LedgerID],[Code],[Name],[Type],[ParentLedgerID],[CostCenterID],[timestamp])VALUES('F1837A92-C859-4459-A0C7-D7A1F6A24680',18,'Ice Cream Ground Floor Sales','X','75B28950-02AF-4939-87CE-C99653522B33','E742C6BF-E6B7-4D85-9AEA-4D30F98ECD41',DEFAULT) +INSERT INTO [Ledgers] ([LedgerID],[Code],[Name],[Type],[ParentLedgerID],[CostCenterID],[timestamp])VALUES('BB4123ED-B880-4996-90DB-F9AACA183BB3',1,'Cash in Hand','B','57076758-28DE-48AE-A778-73E5E9F47837','3694F536-2A52-4607-AE94-E0F746BF6C0D',DEFAULT) +INSERT INTO [Ledgers] ([LedgerID],[Code],[Name],[Type],[ParentLedgerID],[CostCenterID],[timestamp])VALUES('EB818456-09C5-4E20-BF4F-FB02812A8008',9,'Continental Sales','X','75B28950-02AF-4939-87CE-C99653522B33','08E80158-0B18-46D2-924A-9375A71401DC',DEFAULT) + +-- Insert Customers +INSERT INTO [Customers] ([CustomerID],[Code],[Name],[LedgerID],[Address],[Important],[Phone],[Remarks],[timestamp])VALUES('F016CBAD-206C-42C0-BB1D-6006CE57BAB5',0,'Cash','BB4123ED-B880-4996-90DB-F9AACA183BB3','',0,'','',DEFAULT) + +-- Insert ProductTypes +INSERT INTO [ProductTypes] ([ProductTypeID],[Name],[DiscountLimit],[IsForSale],[IsForPurchase],[timestamp])VALUES('9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','Namkeens',0.10000,1,0,DEFAULT) +INSERT INTO [ProductTypes] ([ProductTypeID],[Name],[DiscountLimit],[IsForSale],[IsForPurchase],[timestamp])VALUES('A331DC08-EAA5-4C87-8DE0-0F9CBA2558F7','Mithai',0.10000,1,0,DEFAULT) +INSERT INTO [ProductTypes] ([ProductTypeID],[Name],[DiscountLimit],[IsForSale],[IsForPurchase],[timestamp])VALUES('DAC3B270-FA83-4096-9C17-118755B6B9E7','Chinese',0.10000,1,0,DEFAULT) +INSERT INTO [ProductTypes] ([ProductTypeID],[Name],[DiscountLimit],[IsForSale],[IsForPurchase],[timestamp])VALUES('A6D57F39-2988-4CFB-8564-118767E5E989','Continental',0.10000,1,0,DEFAULT) +INSERT INTO [ProductTypes] ([ProductTypeID],[Name],[DiscountLimit],[IsForSale],[IsForPurchase],[timestamp])VALUES('80EC988A-448E-4F81-B753-1B70FF8B233C','Kaju Mithai',0.10000,1,0,DEFAULT) +INSERT INTO [ProductTypes] ([ProductTypeID],[Name],[DiscountLimit],[IsForSale],[IsForPurchase],[timestamp])VALUES('28846C15-6391-48D4-A50E-2A40BA8156C0','Khoya Mithai',0.10000,1,0,DEFAULT) +INSERT INTO [ProductTypes] ([ProductTypeID],[Name],[DiscountLimit],[IsForSale],[IsForPurchase],[timestamp])VALUES('3769C9D3-C194-438D-AB18-2A665D5DB052','Tandoor',0.10000,1,0,DEFAULT) +INSERT INTO [ProductTypes] ([ProductTypeID],[Name],[DiscountLimit],[IsForSale],[IsForPurchase],[timestamp])VALUES('389A3E09-AC97-4C4B-BCE1-342D2CF991DB','Misc. Mithai',0.10000,1,0,DEFAULT) +INSERT INTO [ProductTypes] ([ProductTypeID],[Name],[DiscountLimit],[IsForSale],[IsForPurchase],[timestamp])VALUES('5E6522AF-99B5-4F7B-B561-352380C53CF1','Indian',0.10000,1,0,DEFAULT) +INSERT INTO [ProductTypes] ([ProductTypeID],[Name],[DiscountLimit],[IsForSale],[IsForPurchase],[timestamp])VALUES('AD0AD9D8-8E30-4986-8EEB-482DD446532A','Mother Dairy/Cold Drinks/Mocktails',0.10000,1,0,DEFAULT) +INSERT INTO [ProductTypes] ([ProductTypeID],[Name],[DiscountLimit],[IsForSale],[IsForPurchase],[timestamp])VALUES('A0D44EED-39C2-4030-9030-5C6F928D3D89','Special Deals',0.10000,1,0,DEFAULT) +INSERT INTO [ProductTypes] ([ProductTypeID],[Name],[DiscountLimit],[IsForSale],[IsForPurchase],[timestamp])VALUES('2314F948-0BAA-4B1C-81F4-6AC062CF39D8','Non Mithai',0.10000,1,0,DEFAULT) +INSERT INTO [ProductTypes] ([ProductTypeID],[Name],[DiscountLimit],[IsForSale],[IsForPurchase],[timestamp])VALUES('A04BAFBD-01FD-4EC8-9858-7E9368383009','Bakery',0.10000,1,0,DEFAULT) +INSERT INTO [ProductTypes] ([ProductTypeID],[Name],[DiscountLimit],[IsForSale],[IsForPurchase],[timestamp])VALUES('A6446E4B-6472-4B79-967C-AA1DC1265205','South Indian',0.10000,1,0,DEFAULT) +INSERT INTO [ProductTypes] ([ProductTypeID],[Name],[DiscountLimit],[IsForSale],[IsForPurchase],[timestamp])VALUES('B75B3C3A-4364-4B36-8DEA-C0C0247449B2','Ghee Mithai',0.10000,1,0,DEFAULT) +INSERT INTO [ProductTypes] ([ProductTypeID],[Name],[DiscountLimit],[IsForSale],[IsForPurchase],[timestamp])VALUES('381765CB-F018-455A-985D-D5EFB1ED1536','Chat',0.10000,1,0,DEFAULT) +INSERT INTO [ProductTypes] ([ProductTypeID],[Name],[DiscountLimit],[IsForSale],[IsForPurchase],[timestamp])VALUES('F76B54C6-21CE-450F-AC73-E1A3A43DAB43','Bengali Mithai',0.10000,1,0,DEFAULT) +INSERT INTO [ProductTypes] ([ProductTypeID],[Name],[DiscountLimit],[IsForSale],[IsForPurchase],[timestamp])VALUES('3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','Bhatura',0.10000,1,0,DEFAULT) +INSERT INTO [ProductTypes] ([ProductTypeID],[Name],[DiscountLimit],[IsForSale],[IsForPurchase],[timestamp])VALUES('CC099265-97FF-45CA-80A6-F7BB189C18B7','Bengali Discount',0.10000,1,0,DEFAULT) +INSERT INTO [ProductTypes] ([ProductTypeID],[Name],[DiscountLimit],[IsForSale],[IsForPurchase],[timestamp])VALUES('4973B4EF-0506-4A44-8BC4-FA422334B041','Cash Charge',0.10000,1,0,DEFAULT) + +-- Insert Products +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('05B923E2-14E2-4B43-9862-000EA95FA1C9',50087,'Puri Chana Desi Ghee','Plate','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,53) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('090DCAB2-ACA5-4AE4-8501-00B7C9904B3C',13001,'Regular Ice Cream','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',10.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('FBAA82A1-A34C-4BF1-AF17-00E8992D79F1',91,'Mirinda','Bottle','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('38484FDC-ABA4-45B9-92B5-0255FE3F5B30',21102,'Paneer Makhni','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',80.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,40) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('24EBBD50-7C4C-4C1C-AE2B-02977FB4B6E5',5010,'7" Corn Feast','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',85.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,29) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('906197C3-41EF-4373-BFE3-02DA9F67AD75',9605,'Kaju Dryfruit Anjeer','Kg.','80EC988A-448E-4F81-B753-1B70FF8B233C','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',350.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,2) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('EB204D4A-306B-4A31-B3DE-02DDF64203BB',50121,'Ghee Roast Dosa50121','Plate','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',58.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('10DF80EA-E1E0-4DC7-B0A6-03062D7AE6FB',50011,'rabri','Kg.','F76B54C6-21CE-450F-AC73-E1A3A43DAB43','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',200.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,18) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('A6D67CC3-AE4A-4CE4-948A-0315C4B89FE1',17004,'Dam Aloo Kashmiri Indian','Piece','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,168) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('6702156A-6605-418F-8F70-040C68018C67',9209,'Real Active 1l (1000ml)','Bottle','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',69.33333,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,4) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('24A336CE-B9BC-4DA1-94C1-0420B0CE0A36',505,'Rs. 06','Piece','4973B4EF-0506-4A44-8BC4-FA422334B041','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',6.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('7D547D01-EBB8-4929-9075-04E84B0127E3',6250088,'Coconut Masala Dosa6250088','Plate','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',55.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F9D2BC06-CA2C-4033-A33E-05070C2C658C',9854,'Mango Petha','Kg.','F76B54C6-21CE-450F-AC73-E1A3A43DAB43','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',100.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,2) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('CC49033B-E765-4767-A712-050EAD84EFF3',50054,'vanilla double sundaes','No.''s','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,13) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('3276E1C4-0CAA-45D5-89D1-05133AB89BAE',27036,'Kheer Mohan','Kg.','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',140.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('83E95C45-C5A9-4896-A720-05246A345561',14021,'Chana Kulcha','Piece','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',35.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,130) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('206FABD0-CE34-47E1-B747-0527B6064607',25056,'Gunjia','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',160.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','AC73D06F-997C-44AB-9712-4E2CD8049357',0.00000,0,0.00,0.00,DEFAULT,1760) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('80662CDC-6619-4D02-A131-055068227996',25063,'Plain Burfi','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',160.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,908) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F658D827-17E4-4EDC-B459-0554E6D9AFDE',2003,'Chilli Paneer Burger','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,21) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C2C5253D-090C-470E-BC00-05BF7FE705A1',21007,'Butter Roti','Piece','3769C9D3-C194-438D-AB18-2A665D5DB052','C8C87922-5982-4731-AB9A-352D21F19EDA','48E10C74-9508-44CB-9D7D-7B71ABDAA289',12.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,491) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('5A690388-3BBD-4BD2-9065-05DAD3673026',9856,'Kesar Pan Petha','Kg.','F76B54C6-21CE-450F-AC73-E1A3A43DAB43','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',120.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,4) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('351D92AD-00F9-44FD-A50A-069835454023',50070,'Besan Laddu','Kg.','389A3E09-AC97-4C4B-BCE1-342D2CF991DB','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',150.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,610) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('3B96C7EA-1FCA-4EB1-8BD9-06BC9FC855CF',6250087,'Coconut Rava Masala Dosa6250087','Plate','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',60.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,2) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('516A7A59-0BD6-405F-9DDA-06D940AC25D3',25043,'Patisa','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',180.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,809) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('3DACF29C-AB6D-41A6-AEB9-06F388F7F192',25052,'Son Halwa','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',260.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,91) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('2588B678-591F-4B9F-8AE5-07D422743EF7',23002,'Kiwi Pastry','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',19.56000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,5) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('52CF7428-E8C6-47C6-9D9E-07DBE1E3CA1A',1,'Mango Pastry','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',19.55555,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('AE6E448E-96C8-4102-B468-0876D014B057',50099,'Chocolate Double Sundae50099','Plate','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',55.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,8) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('96EA8E46-7A36-4978-AC6D-087F3E9D1334',100007,'Chocolate Gajjak','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',180.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,312) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('62D521A7-ACC1-4DCE-B110-088FFB8FDF37',9805,'Badam laccha','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',160.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,2) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('71F1FDFA-4308-4C0F-8E95-08C5CA0309A5',40,'Kashmiri Mixture','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',106.66667,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,31) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('FA280AB0-E89E-4791-AD27-090066F37D00',25020,'Rasbhari Petha','Kg.','F76B54C6-21CE-450F-AC73-E1A3A43DAB43','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',120.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,51) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('2C6974E5-73EF-4AA7-AA79-09281F31EABA',6250083,'Mushroom Onion Capsicum Foot Long6250083','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F45738D9-CF81-4BB1-B949-092A072C43BA',17003,'Mixed/Seasonal Vegetables','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',60.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','AC73D06F-997C-44AB-9712-4E2CD8049357',0.00000,0,0.00,0.00,DEFAULT,451) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('060EAB8B-B169-4986-9752-094BD866F4D5',9063,'Pineapple Cake9063','Kg.','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',222.22222,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1935) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('BFADD353-41DC-4ED4-A038-0991A1E74FDB',27012,'Pista Pounj','Kg.','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','3D1413EE-D3EA-412F-B762-BAE37BD503B6',115.55556,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('54988778-9042-4BFD-959B-09A30230DC2E',5003,'12" Cheese Pizza','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',140.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,50) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('8EA4C0B1-ADD8-4B0C-B950-0A237DA53E08',990,'Dhakai Chat','Plate','381765CB-F018-455A-985D-D5EFB1ED1536','CF0285D9-9FE6-4A3B-A6D9-CBBEA5ED228F','48E10C74-9508-44CB-9D7D-7B71ABDAA289',35.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,132) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F3D14594-1B1C-4670-BCF4-0AED7E9393D7',25088,'Pista Gulab','Kg.','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',170.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,23) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('D7240E46-14CC-470B-AF1A-0B0EE38B07D9',50050,'Dry Fruit Pastry','No.''s','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',24.88000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,827) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('EE9F7659-8424-4150-BA2A-0B4373D2BB66',9560,'Mushroom Mutter','Piece','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',80.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,39) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('243902F0-5044-42DE-8580-0BB0DC11281F',23010,'Plain Cake','Kg.','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',133.33333,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,3) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('1A5F73C8-89B2-4430-9F9E-0BB1E9B863F7',50013,'kuttu ka ladoo','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',160.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,53) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('8195ABC0-F4F8-477C-97FB-0BCC8C1ABC9D',50079,'Brick Rs. 75','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',66.67000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,8) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('1E4DC79C-34DD-4AE4-AC7C-0BF770CBEAF0',50112,'Corn Chilli Cheese Toast','Plate','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','AC73D06F-997C-44AB-9712-4E2CD8049357',0.00000,0,0.00,0.00,DEFAULT,10) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('43B83F96-5E34-4833-BE2D-0C82606F5EBA',16006,'Singapore Fried Rice Chinese','Piece','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,21) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('45900046-778A-4B18-892D-0CE7C79F2E86',12014,'Create Your Own Sundae Double','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,2) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('ACC43F4B-A998-4C1A-ACE5-0D671A6183C5',9205,'Ice Cream Cone (8)','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',7.11000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,7) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('7856ECC7-BF6F-44CE-A1CD-0DB613C7F961',14018,'Masala Dhokla by Piece','Piece','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',5.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,31) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('2E1783E4-1241-49DE-9965-0E1727BF68AA',86,'Wheat Biscuit','Kg.','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',106.66667,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,34) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('12EB861E-C13A-4ABA-9661-0E6CCCF5D236',9124,'Khoya Tasty','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',180.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,1267) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C9C36A4A-B976-482A-83BA-0E8B78DFFF99',21105,'Navrattan Korma','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',80.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,107) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('38C0A2EB-C227-4039-B030-0EE0BA496302',13,'Mushroom Kadhai Paneer','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',80.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,151) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('76CEDE3B-28B5-4FF6-92B1-0F7A474E9732',9020,'Kaju Diamond','Kg.','80EC988A-448E-4F81-B753-1B70FF8B233C','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',392.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('0491BB6F-9617-422E-889A-0F7ABE883D39',9069,'Black Forest Cake','Kg.','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',249.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,701) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('8B3650CC-F3CF-43EA-8A19-0FDABF451992',50046,'x-mas desi ghee special','Bottle','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',35.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('9F079F95-DE9E-4962-B54B-0FE784D3E8C0',4003,'Vegetable Coleslaw SW','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',50.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,35) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('95A5F019-F698-45B4-96B8-10469C7352D2',25147,'Mushroom Noodles','Plate','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',70.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,7) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('9A09BBB2-2A6D-4B0B-A02A-1061E4322608',6250089,'Aloo Pudina Raita6250089','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,8) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('8F15262D-8167-4FA0-A1FB-10B12704A405',25259,'Rawa Onion Masal Dosa','Plate','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',50.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,19) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F1F811A9-0F07-4636-A1F1-10C560884C51',4,'Chinese Thali','Plate','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',95.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,74) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('12AD318C-0A95-462F-AB4B-10D1D95B5859',9112,'Til Bugga','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',180.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,410) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('A25B23C1-772A-48D9-B722-11735A04BA49',6250080,'Ultimate Veg.Foot Long6250080','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('290FA659-5D94-42AD-896F-11A9B53C6453',50103,'Anjeer Katli','Kg.','F76B54C6-21CE-450F-AC73-E1A3A43DAB43','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',350.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('8B60F300-7311-4E9E-ABD1-11BA3FD8F9EE',9099,'Kaju Kheer Kadam','Kg.','80EC988A-448E-4F81-B753-1B70FF8B233C','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',350.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,2) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('A50D4ED5-B57A-451B-A8EB-11F390D64582',9032,'Ratnami','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',88.89000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,21) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('0FE3EFED-8A81-400A-9638-1203B9A48E70',50042,'apple pie pc','No.''s','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',18.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B6E2F419-25F5-4734-8C61-120CD0FFB5DA',18006,'Butter Naan','Piece','3769C9D3-C194-438D-AB18-2A665D5DB052','C8C87922-5982-4731-AB9A-352D21F19EDA','48E10C74-9508-44CB-9D7D-7B71ABDAA289',20.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1419) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('32253355-A957-422D-B355-122F9BE81C09',21001,'Aloo Prantha with Curd (Value Meal Deal)','Piece','3769C9D3-C194-438D-AB18-2A665D5DB052','C8C87922-5982-4731-AB9A-352D21F19EDA','48E10C74-9508-44CB-9D7D-7B71ABDAA289',50.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,39) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('97BF36D2-8AB1-4658-9F4C-12A6AF812ECC',2,'Chana Rice & Raita','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',60.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,17) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('73F4E30C-1929-4E0F-8B1D-12FB40313A0C',54,'Services Provided','Piece','4973B4EF-0506-4A44-8BC4-FA422334B041','092A7308-8A30-49C4-B7C4-C3BADFC1659C','3D1413EE-D3EA-412F-B762-BAE37BD503B6',1.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,2) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('6E13B4FA-E22A-440E-9A8B-1301094330F5',15013,'Tomato Uttapam','Piece','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',55.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,3) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('DA8B721F-EBEF-43F0-BB77-139A8376D31D',21005,'Rajma Chawal with Raita (Value Meal Deal)','Piece','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',60.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,162) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('1BDD6CDA-0F3F-4BEA-A681-13E2EF47FF5C',18010,'Onion Kulcha','Piece','3769C9D3-C194-438D-AB18-2A665D5DB052','C8C87922-5982-4731-AB9A-352D21F19EDA','48E10C74-9508-44CB-9D7D-7B71ABDAA289',28.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,26) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('4F0128F2-CDAD-4AC4-80EC-13FC1469EE01',12009,'Hot Choc. Fudge Double Sundae','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',55.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,28) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('246C61A3-7351-41B5-96C1-14C00F4D9FB3',50082,'Chana Kulcha Desi Ghee','Plate','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,38) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('E7E03D4F-2ECA-4C6F-AE5D-1529E0190746',8006,'Pina Colada','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',59.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F68FAA4E-18E8-4B91-9533-1536E9BDCBF5',9068,'Fruit Pie','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',13.33333,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('454ABBF6-9EF7-4482-ACBB-1548ED7CFC99',503,'Rs. 04','Piece','4973B4EF-0506-4A44-8BC4-FA422334B041','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',4.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F98E675B-C19C-4310-97B2-155A14D8771A',100008,'Dal Gajjak','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',100.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,15) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('85E5F1D1-E672-487A-BBF9-1568EF66D789',9613,'B. Spl. Shahi Ghewar','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',200.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('184670BF-E35A-4316-AAE7-15E09AF57F7B',99,'Cold Drink (Pet Bottle)','Bottle','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',22.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,233) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('4493BEBD-7DEB-46FE-BC17-15EB4FEA8DD7',14,'Kesar Ghewar','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',180.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,25) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('A55C646E-DDDD-42F4-84A6-160D563ED197',25021,'Rim Jhim Petha','Kg.','F76B54C6-21CE-450F-AC73-E1A3A43DAB43','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',100.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('EF5D1E91-876E-4E56-B0D4-1678AE1A44C5',25058,'Lamba Jamun','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',140.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,37) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C66A558C-7859-46C2-8F88-171C15B929E0',50001,'Navratra Special Thali','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',99.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,157) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('89FB6E79-F628-4813-BD94-17374C7B0E28',100006,'Gurpara','Kg.','A331DC08-EAA5-4C87-8DE0-0F9CBA2558F7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',80.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,30) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('565BDCD7-BEBD-4DCB-B0BA-17BC239C5422',89,'Chat','Piece','381765CB-F018-455A-985D-D5EFB1ED1536','CF0285D9-9FE6-4A3B-A6D9-CBBEA5ED228F','48E10C74-9508-44CB-9D7D-7B71ABDAA289',1.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,77) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('180CEE0F-2DDC-4006-8C94-180CD47D3C9B',19005,'Veg. Pulao','Piece','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',70.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,119) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('9727BE9A-C8DD-4A0C-A861-1877CB21B868',6220,'Fruit Cake','Kg.','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',267.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,4) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('BB0E722C-6B06-4FA6-94BF-18F13960C572',6250065,'Garlic Roti','No.''s','3769C9D3-C194-438D-AB18-2A665D5DB052','C8C87922-5982-4731-AB9A-352D21F19EDA','48E10C74-9508-44CB-9D7D-7B71ABDAA289',10.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('AD61E004-83BC-4ECB-A041-1908DDE7A757',50124,'Coconut Masala Dosa50124','Plate','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',55.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,3) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('32E0F137-49B8-417D-A637-193900A93D67',58,'Snax Pack','Pack','4973B4EF-0506-4A44-8BC4-FA422334B041','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',35.56000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('0C17CABD-7293-4087-8022-1974B2CB0413',6250112,'Cho chip Pastry','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',26.60000,NULL,'3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,531) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('9D09AF48-A4D3-49F7-90B9-19DF4503A22B',9610,'Orange Cookies','Kg.','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',88.89000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,15) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('037B02EF-49AB-4FE4-8C2B-19E7B9AA1A98',6250115,'Mix Fruit Cake','Kg.','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',266.60000,NULL,'3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,23) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('3C67275C-5702-4820-9F0B-1A65ED679860',6250090,'Kulfi Shake6250090','','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',50.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('72DA40E7-2B0E-45D1-82A3-1A791EDEFAFB',50085,'punjabi puri desi ghee50085','No.''s','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',40.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,3) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('9597E868-919B-4619-A472-1A9B53411CA6',26029,'Kesar Khoya Burfi','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',170.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,37) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('EEE0075E-647B-47B1-A5FC-1AE0BA5FB28A',26010,'Kaju Pan','Kg.','80EC988A-448E-4F81-B753-1B70FF8B233C','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',380.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,531) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('2D7A964C-EB8B-4735-8F8E-1B0C4F096B9A',9201,'Hot Tea','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',15.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,165) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('CB8DFE89-DE99-44FF-8F78-1B53C8AFB69B',7007,'Fresh Fruit Salad','Plate','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('BF85A0FF-B8E3-4981-808C-1B5D48A4194E',6,'South Indian Thali','Plate','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',80.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,125) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('177D1896-1DCF-491A-8E67-1B73D07A4579',15012,'Rava Paneer Dosa South Indian','Piece','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,8) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('FB822A82-4ACC-4524-AA53-1B887087D493',52,'Mushroom Do Piaza52','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',80.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,66) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('D730B980-13BC-40EA-A993-1C04EAD46723',50062,'fan cake','Kg.','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',204.44444,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('06A01B80-3C9D-4443-B87D-1CF07A722014',16005,'Veg. Fried Rice Chinese','Piece','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',60.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,501) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('2071DAB3-66D1-493B-B67C-1D61AA347DEA',25067,'Sev Badam','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',190.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,5) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('CF8D30DB-3948-4EDD-B0B2-1DCF61C7F7E9',25068,'Plain Matthi','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',88.80000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,68) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('0DCB13CA-EF73-4E59-B700-1EB1A369E736',9028,'Small Matthi','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',88.81000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,2) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('20FA0747-C2BC-481F-A25F-1EED64FF0612',6250111,'Dry Fruit Sweet Mix','Kg.','A331DC08-EAA5-4C87-8DE0-0F9CBA2558F7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',1.00000,NULL,'3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,9) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('E7D85046-7951-4081-BC0D-1EFDA95921A9',5013,'7" Mushroom Delight Pizzas','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',85.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,18) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('89D7A32E-0BF9-4699-BCF0-1F69F5CFA4CD',11009,'Frozen Mint Granita','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',35.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('7B111A07-FEB8-44C9-94F4-1FAF62C7F177',50063,'Mini dal kachori','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',71.11000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('488BC81B-A099-4161-96DC-203240AC6EC2',9043,'Disco Papad Namkeen','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',84.44444,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,27) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('16158B46-1B53-44F2-A3FB-2052E472BA23',2002,'Veg. Burger','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',35.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,446) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('E1A0146F-1F63-4CAF-A3DF-20A628FC4B03',30,'Litchi Shake','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',25.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('81859BF7-3856-4DFF-AD52-2127A37AAC46',6005,'Extravaganza','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',75.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,31) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('8931E865-2725-47F1-BD86-215B8ADC477B',25008,'Firnee','Piece','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',18.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('5E625250-75FD-4FFF-82F3-216E4CAF01AE',6250102,'Normal Thali Pack','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',83.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,441) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('3DA042CF-536B-4FA9-B8DB-217E340571FB',6250086,'Coconut Uttapam6250086','Plate','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('9F9A6992-6EBD-4DAA-B120-219F9526E065',6250081,'Chilli Paneer Foot Long6250081','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',70.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('3F792DD0-78D3-45CB-B156-21C402E37C38',25007,'Chhoti Rasmalai','Kg.','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',160.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1539) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('BCDCB05C-7FE8-40A9-A5F6-21C88ADF9F49',9212,'Real Tomato 1l (1000ml)','Bottle','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',62.22222,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,3) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('673966A1-5F77-49D4-AE36-21DFCFB80F65',3001,'Regular French Fries','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',40.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,81) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('601C44BB-ACD2-4F1C-A732-228C8A6E835E',6250092,'Fruit Cream6250092','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','3D1413EE-D3EA-412F-B762-BAE37BD503B6',20.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('4F3AA06E-3833-4DEB-A7F8-22BA54E5CD28',50110,'Mango Juice','Bottle','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',40.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,16) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('CF7E5E47-97B9-45B0-AB4A-2315087D7289',25085,'Rasbhari','Kg.','F76B54C6-21CE-450F-AC73-E1A3A43DAB43','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',120.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,4196) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('74D70C91-9C95-4950-845B-23224E270F86',5017,'10" Shezwan Paneer Pizzas','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',135.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,8) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('5F138CCE-A06A-4782-AEED-23668246BE93',6250061,'juice','No.''s','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',35.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,2) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('6C20A0AC-EDD6-490B-BC2E-23AF53335023',61,'Kesar Petha','Kg.','F76B54C6-21CE-450F-AC73-E1A3A43DAB43','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',130.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,609) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('AD962E9A-21DE-4383-B8C1-23C03C7B95FF',5002,'badam halwa','Plate','A6D57F39-2988-4CFB-8564-118767E5E989','66497F17-8096-46B7-A45E-8851BA4EA780','48E10C74-9508-44CB-9D7D-7B71ABDAA289',25.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,42) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('60EDA651-7DA4-4B85-B3D1-23DCA1C0E287',51,'Paneer Korma','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',75.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,3) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('3EE6122C-B0D4-4522-8F77-242F652020D1',6250071,'Mushroom Do Piaza6250071','Kg.','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',170.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('CE943B90-C91D-419E-9A73-24C09CEA488E',22003,'Rasgulla (2 Pcs.)','Piece','F76B54C6-21CE-450F-AC73-E1A3A43DAB43','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',10.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,6) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('A9350E21-7F22-4D47-8D2C-24C46A0E960E',9121,'Kaju Pista Gajjak','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',140.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,15) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('8D9B2A0C-8E9D-4D3C-8DDF-258ADFF359C4',10000,'Chocolate Mud Cake','Kg.','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',293.33000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,5) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('901F33E2-BF22-400E-8A58-2628D38AAD37',9514,'Vanilla Biscuit','Kg.','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',151.11000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,3) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('27A54FA3-2542-475C-AD9A-26C0BF524495',16008,'Dry Chilli Cheese','Piece','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,224) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('5980DC23-BE14-4D49-8AE3-270A1245F8E7',10008,'Maracuja Frappe IC Soda','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',35.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('BAAB2FA8-43FF-46E0-8AD1-271F3ED51907',15002,'Rice Idli South Indian','Piece','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',40.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,319) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('E7CD8F06-8453-4035-A815-274C803E0450',22,'Tutty Fuity Double Sundae','Plate','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',55.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,55) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('FA1CBC64-6929-495E-8C18-2757DB8C8929',25053,'Mixed Mithai','Piece','389A3E09-AC97-4C4B-BCE1-342D2CF991DB','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',1.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,7875) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C46DE8DC-5FCF-408E-A4F0-2777ECCD13AF',50077,'Brick Rs. 110','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',97.78000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,28) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('0CB14DF8-CDD0-4467-A0FB-278887CA0944',4009,'Honey Pepper Cheese Sandwich','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',70.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('3BC7E62D-6CBA-45FD-B4DF-27C4F5027C25',50106,'Soup 1x250106','No.''s','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','3D1413EE-D3EA-412F-B762-BAE37BD503B6',10.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,58) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('A9E6AF3D-36B9-4E0A-BFF2-282B1CAAA685',23018,'Choco nut cake 500 gm','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',133.30000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('7C198AC9-6DED-4960-99CD-28F4AFD32615',8003,'Thandai','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',29.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('2BC1A736-192A-48CB-AE99-28F60B696C0C',25003,'Raj Bhog','Piece','F76B54C6-21CE-450F-AC73-E1A3A43DAB43','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',11.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','AC73D06F-997C-44AB-9712-4E2CD8049357',0.00000,0,0.00,0.00,DEFAULT,1800) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('BD64EB83-F8A8-4731-8A36-28FF200597E3',93,'Fountain Cold Drink','Bottle','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',19.57000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,61) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('EBC6B78F-2C0B-48CF-96E7-292023DC94AA',9044,'Masala Badam','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','AC73D06F-997C-44AB-9712-4E2CD8049357',600.50000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,144) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C41B08D6-4D37-4043-9639-2943466C6E9A',9804,'Dry Fruits','Piece','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','AC73D06F-997C-44AB-9712-4E2CD8049357',0.96000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,123) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('E2AFB871-6260-4911-8A0E-29712A3EF497',14003,'Dal Chila','Piece','381765CB-F018-455A-985D-D5EFB1ED1536','CF0285D9-9FE6-4A3B-A6D9-CBBEA5ED228F','48E10C74-9508-44CB-9D7D-7B71ABDAA289',20.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('109B6F81-F845-49C9-937B-2A00965720DD',26028,'Koya Phool','Kg.','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',140.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('48611F47-D906-4339-8E1F-2A47327B55A6',12002,'All American Banana Split Triple','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',75.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('BCB6343B-18EE-4C39-A60D-2A78A54366C9',9664,'Mathura Peda','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',110.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('0E6ECC7D-D85D-42DF-BBE2-2AB1EF638748',50128,'Russian Salad50128','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',50.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('60AB476A-2133-429A-8FE4-2AD84D7F1863',9014,'Besan Papri','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',88.88889,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,207) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('D39BF221-8231-4D54-85D0-2B63C8F5D599',9113,'Moti Pak','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',160.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,20) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('55F8C3B4-9031-4A49-9646-2B97C7FF2AA6',12000,'Dry Plum Cake','Kg.','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',169.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,67) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('1120DDC8-802F-479F-A5C8-2BCACC89EDD4',5001,'7" Cheese Pizza','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',75.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,122) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F86B1D31-70CA-4107-9942-2C5CEEBB42C3',50123,'Coconut Rava Masala Dosa50123','Plate','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',60.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,2) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('1C934DB7-06F6-4799-8DDA-2C6E0DB78C97',24005,'Candies','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',7.11111,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('DCBE739D-65EF-483A-A1EE-2C7413BD3874',27006,'Dil Bahar','Kg.','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',170.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,93) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('2E732DAF-070D-4532-AEB9-2CB743548A85',100010,'Til Patti Gajjak','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',150.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,209) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('3D3A6655-A9A3-4910-A030-2D30C161B6A3',25037,'Gaund Burfi','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',160.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('3BFB6CB8-BD30-4464-971D-2D487C08A599',27022,'Kesar Sandesh','Kg.','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',180.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,29) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B7DEE22A-6FC2-4437-B093-2D8C76083F42',6250066,'Mango double sundae','No.''s','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('16048B68-BD62-4728-98E7-2DD714E0B955',9603,'Sugarfree Kalakand','Kg.','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',200.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,566) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('EF9B103F-7B27-442F-8564-2DFE1DBD3E3E',27001,'Badam Chap','Piece','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',130.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('97F99326-9C6C-4712-8974-2E77040A684B',50031,'Black Current Cake','Kg.','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',293.33000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,6) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('578D5D38-F302-4FBC-B470-2EC7F5FF4D10',50111,'Mix Fruit Juice','Bottle','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',40.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,26) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('AB0113F1-58A8-4EA2-9B0A-2F0FBDF19711',19004,'Chef Spl. Biryani','Piece','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',75.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,33) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F9CAE517-7F39-4F86-B88E-2F28708F67EB',15014,'black forest cake 500 gm','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',133.30000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,29) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('43382587-FD91-4903-97A8-2F2E8FA30140',25256,'Veg. Cheese Dosa','Plate','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',58.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,19) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('1BB6C112-FD44-45C1-9BC8-2FA0F2771DFA',14020,'Bharwan Gol Guppe','Plate','381765CB-F018-455A-985D-D5EFB1ED1536','CF0285D9-9FE6-4A3B-A6D9-CBBEA5ED228F','48E10C74-9508-44CB-9D7D-7B71ABDAA289',30.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,383) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('2660E002-FE21-42D1-9D81-305926C41AC0',22006,'Kesar Raj Bhog (2 Pcs.)','Plate','F76B54C6-21CE-450F-AC73-E1A3A43DAB43','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',20.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,3) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('659C5514-A084-426F-9368-3089CB2464B8',50109,'Pineapple Juice','Bottle','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',40.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,15) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('1835645D-7767-4B2F-9544-30B8D3EB8489',18,'Chander Malai','Piece','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',28.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,207) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('E185738E-B5CA-4929-8F47-31605819459E',509,'Rs. 10','Piece','4973B4EF-0506-4A44-8BC4-FA422334B041','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',10.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('72BF989D-D26D-4CD1-8220-317C1A5EA943',9021,'Cookies','Kg.','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',1.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','AC73D06F-997C-44AB-9712-4E2CD8049357',0.00000,0,0.00,0.00,DEFAULT,1689) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('DADF1C69-8DC7-4274-B582-31A93DEEAD1D',8001,'Badam Milk','Bottle','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',20.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,4) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('76B32088-E020-40CC-876F-31BD6BB728D2',50036,'Black Current Double Sundae','Plate','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B0D250DE-C464-46E3-99DB-31C6244E6A64',25075,'Kaju Tohfa Burfi','Kg.','80EC988A-448E-4F81-B753-1B70FF8B233C','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',350.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('914C61BC-6235-49EB-8100-325335519AB1',9023,'Butter Shortbread','Kg.','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',133.33000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C31058B8-5212-44A7-B7C7-326EFA6A859B',9065,'Cherry Pie','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',22.22222,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F9BF8E72-1B8D-4582-B30B-32A69197134F',50116,'Ultimate Veg.Foot Long50116','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('DF1566DB-9A3A-4FAD-B727-32B1E8A08001',14011,'Chana Bhatura14011','Piece','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',40.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,646) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('61A40CD2-98FB-44D5-8C35-32DD60B07EDF',25072,'Mini Kachauri','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',88.89000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,189) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('10201259-E44C-4179-A320-336F39384B68',9211,'Real Guava 1l (1000ml)','Bottle','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',62.22222,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('D0D9D435-4749-46BB-A76E-337501E85E82',13002,'Premium Flavours Ice Cream','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',12.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('D799DEB4-10D7-4F58-B6A7-337FCED043B8',25087,'Phool aur Kaante','Piece','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',130.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('7C5E03A4-805E-4E45-AE39-33DB72EC2755',23022,'Black Forest Pastry','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',23.10000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1406) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('CA23667C-857C-47C0-A6A9-33FA77482CF2',7,'Bhalla Papri Chat','Plate','381765CB-F018-455A-985D-D5EFB1ED1536','CF0285D9-9FE6-4A3B-A6D9-CBBEA5ED228F','48E10C74-9508-44CB-9D7D-7B71ABDAA289',35.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1383) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B15282CD-B43B-499D-9DDB-340440694F6B',9018,'Badam Khoya','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',170.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('83D9AEE7-77FF-4F53-B0D7-3494562E8327',18015,'Paneer Shaslik','Piece','3769C9D3-C194-438D-AB18-2A665D5DB052','C8C87922-5982-4731-AB9A-352D21F19EDA','48E10C74-9508-44CB-9D7D-7B71ABDAA289',70.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,8) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('18DBAB51-86E1-459A-B82E-3495ED0E36A5',9040,'Kaju Ring Ladoo','Kg.','80EC988A-448E-4F81-B753-1B70FF8B233C','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',350.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C9D2CA8F-F9FC-423A-95F3-34A8F52A4E11',17010,'Palak Kofta Indian','Piece','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',75.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,54) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('CC769C6C-073B-453E-B63A-354624C7960A',500,'Misc. Sweet','Piece','389A3E09-AC97-4C4B-BCE1-342D2CF991DB','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',1.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,612) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('A88DB953-9103-4027-97F6-355FDEE16167',9955,'Rogni Naan','Plate','3769C9D3-C194-438D-AB18-2A665D5DB052','C8C87922-5982-4731-AB9A-352D21F19EDA','48E10C74-9508-44CB-9D7D-7B71ABDAA289',30.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,10) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('E428F087-E680-40E9-8F92-3610FE1C6016',100005,'Hot Gulab Jamun (Plate)','Plate','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',16.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,592) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('46C37F52-300B-4278-87B5-3619D2D4059E',14008,'Samosa with Chana (2 Pcs)','Piece','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',20.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,55) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F83F17EF-4C73-42DE-BBF7-361F31B8A507',50,'Paneer Jal Frazi','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('A7E2BD1D-1BEB-4092-8E82-369EEB4D46AD',25041,'White Nariyal Burfi','Kg.','F76B54C6-21CE-450F-AC73-E1A3A43DAB43','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',150.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,605) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('6EE3DD41-C270-4861-BE69-36BD6CD9E76B',9501,'Plum Pudding Weight','Kg.','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',133.33333,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('5AA66AC1-81D3-479D-89DB-37BD50357EB8',50043,'Paneer Dilruba','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',80.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,18) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('48453EFC-5C67-4624-9B68-37CD01993E8A',5029,'10" Paneer Chilli Pizzas','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',155.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,15) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('619D241F-79FF-448E-AB28-38C092B48A0F',50115,'Tomato Surprise Foot Long50115','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('7854EB62-4771-4B19-AE63-3945577CEBC9',27007,'Lachha Bhog','Kg.','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',140.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('BAA31944-4511-406A-9DF7-394A625224F5',25070,'Plain Dhokla (By weight)','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',80.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','AC73D06F-997C-44AB-9712-4E2CD8049357',0.00000,0,0.00,0.00,DEFAULT,6007) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('071B2259-61B2-4B27-AD9C-394EE81164A7',23017,'Chocolate Brownie','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',13.33333,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('3BE16BF7-5EB6-49CA-BAB6-39A64580E99A',27005,'Chhenna Toast','Kg.','F76B54C6-21CE-450F-AC73-E1A3A43DAB43','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',170.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,476) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('7AD04E09-B29C-4BFB-BF09-39D4F96B79DE',50094,'Kaju Sankh','Kg.','80EC988A-448E-4F81-B753-1B70FF8B233C','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',350.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('66109FF9-88B3-4826-9535-39D55911B864',9554,'Chana Kilo','Kg.','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',135.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B70898F4-C4E5-40C6-B11A-3A03F36ADE06',9226,'Butter Plain Dosa','Plate','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',50.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,4) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('1DB211EE-F783-4EF3-9EBA-3A8180EBCC9A',9049,'Plain Sandesh','Kg.','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',190.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,539) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('8A388F02-6177-4E0A-9D27-3A93075C8AB4',100004,'Honey Chilli Couli Flower','Plate','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',60.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,87) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('E6AC2984-BCDD-462D-923D-3B9E2D2063B8',6004,'Primavera','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',75.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,7) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('82C98AAE-B4A0-4691-859B-3BCC1991695B',25033,'Dhoda Burfi','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',180.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,1246) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('DDF73A9C-3F65-4A61-917C-3BF57F346623',6250117,'Idli Dhokla','Piece','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',8.90000,NULL,'3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,102) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('6433B4A5-8C72-4255-B169-3C672964026B',9120,'Gajjak Kaju','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',300.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,19) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('3840602D-1DA4-416D-BBD6-3CA54F40A4DA',50057,'chana bhatura lassi','No.''s','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('CDA0AF86-A5C4-4D83-81A0-3CE3020C1651',63,'Real Juice 200ml','Bottle','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',10.66667,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,15) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('73224A54-82C7-4986-A6B2-3D11D8467A27',50119,'Mushroom Onion Capsicum Foot Long50119','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('8650B580-EADC-42FC-8697-3D1CB2F74E12',6250075,'coconut rava masala dosa6250075','No.''s','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',60.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('536CAC66-8C37-4B0F-B558-3D382F4CBAE0',4010,'Extra Cheese','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',10.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('E41A43BC-09F3-4E49-B61B-3DC7CF0DF792',100011,'Dry Fruit Vati','Kg.','389A3E09-AC97-4C4B-BCE1-342D2CF991DB','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',400.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,111) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('43AEEC9E-3EB2-442C-8F15-3E0B205156AE',9515,'Brownie Cookies','Box','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',1.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','AC73D06F-997C-44AB-9712-4E2CD8049357',0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('56A0E56A-3E69-42E7-8630-3E32C9538BFE',50092,'White Forest Pastry','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',23.10000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,624) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('A94CC3F8-F0AC-419A-B9C1-3E4C20CE006C',6250101,'Honey chilli cauliflower','Plate','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',70.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,9) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('7B85B597-C2FC-4221-8D2C-3E7DE7822AE6',9952,'Choodidar Naan','Plate','3769C9D3-C194-438D-AB18-2A665D5DB052','C8C87922-5982-4731-AB9A-352D21F19EDA','48E10C74-9508-44CB-9D7D-7B71ABDAA289',30.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,14) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('00F7BBF1-878F-4311-B9E2-3EDB68F38225',25010,'Fruit Chat','Plate','381765CB-F018-455A-985D-D5EFB1ED1536','CF0285D9-9FE6-4A3B-A6D9-CBBEA5ED228F','48E10C74-9508-44CB-9D7D-7B71ABDAA289',17.78000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,35) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('CFC3DFEF-6CCC-45B5-B829-3EDD03BD4B6B',50083,'Bedmi Puri Desi Ghee','Plate','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,49) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('68A315AD-F209-44F9-8286-3F00E8F5E110',68,'Butter Masala Dosa','Plate','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',63.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,30) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('71DEA75A-7742-4DAA-852C-3F104C743A72',25055,'Dal Kachauri (per Peice)','Piece','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',7.11111,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,5314) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B4D32971-A945-4394-9B89-3F1E64621753',25254,'Dahi Vada','Plate','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',50.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,78) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C2F5D93C-8EA9-48F7-8AFF-3F3392FCE868',50018,'Onion dosa South Indian','Plate','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',40.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,6) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('05A1EBEE-0984-4BF7-A504-3F802A1071AF',9098,'Khir Kadam','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',180.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,309) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('4F53E0B9-A4E2-4D33-8AD0-401D3B280CD3',6003,'Mushroom Alfredo','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',70.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,10) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('358E4176-C26A-49C6-9FA7-401D82DCB083',27015,'Anurodh','Kg.','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',150.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('BEBBE0BF-AD5F-42A4-8670-40603DD15FB5',18008,'Paneer Naan','Piece','3769C9D3-C194-438D-AB18-2A665D5DB052','C8C87922-5982-4731-AB9A-352D21F19EDA','48E10C74-9508-44CB-9D7D-7B71ABDAA289',35.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,91) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('716640C8-BE6F-4476-98EF-4112F541F6EA',27009,'Malai Chap','Kg.','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',170.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,346) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('1122D5A7-AD94-40ED-99B6-411749964A65',25045,'Karachi Halwa','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',160.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,240) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('20C02041-BE64-4D08-A2C0-42093DB955A4',7003,'Fruit Cocktail Salad','Plate','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C1755FEC-0473-4135-8377-424B4A483148',25065,'Kala Gulab Jamun','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',140.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,3501) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('A9AA0E8A-BD8C-4ACA-BBAC-425DE1C72DF5',17012,'Paneer Tikka Butter Masala Indian','Piece','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',80.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,443) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('EDEEECEB-6378-45A9-84BD-42C82A1DF738',14012,'Lachha Tokri','Piece','381765CB-F018-455A-985D-D5EFB1ED1536','CF0285D9-9FE6-4A3B-A6D9-CBBEA5ED228F','48E10C74-9508-44CB-9D7D-7B71ABDAA289',35.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','AC73D06F-997C-44AB-9712-4E2CD8049357',0.00000,0,0.00,0.00,DEFAULT,301) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('5E581FE1-757B-4DA1-9ADD-4318C89C57C3',9801,'Cornflakes Mixture','Piece','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',106.67000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('8E41507C-8882-4C63-980A-431CEC13812E',12,'Phainee','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',106.67000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,14) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('77B0DCA7-C9F1-4D26-A83E-431D2A0CF235',23024,'Butterscotch Pastry','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',24.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,721) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('9137C2DD-26C5-4A4A-B217-43B213C861A0',95,'Can','Can','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',26.67000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,796) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('346BC829-476F-4368-B0E4-44211EEB499F',50038,'Choti Rasmalai Plate','Plate','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',25.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,220) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('95DAF07A-D4D4-47F3-A34D-442A86873399',6227024,'Pan Matthi','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',71.11111,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('E9748F73-3F66-47D4-B5EE-4430753C2FDB',6250099,'Extra Pao6250099','Piece','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',15.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,11) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F6E17097-F805-42AB-BD21-4479BC247AC5',11001,'Fresh Lime Soda (Sweets & Salt) Granita','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',28.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,94) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('CFA4A3CC-9EED-4A97-A75C-45B094AB78B3',15017,'Rava Onion Dosa','Piece','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',55.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,12) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('AE30352C-4B16-4E7E-91F4-45EF754038F5',50125,'Shanghai Cheese Chilli50125','Plate','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,5) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('20BF276C-3E0F-4E5A-91B5-465522C8EF1B',9606,'Khoya Tohfa','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',180.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,71) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('14FD5E2C-8420-41E1-84C0-46B897E4994F',5,'Khas-Khas Panjiree','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',350.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,69) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('5A512402-C3A4-4A0E-8BB2-46DF841347B1',14022,'Puri Chana','Piece','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',40.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,98) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('4C6CC2E2-FB6D-4BF9-9185-46FFAB4A4283',42,'creamy capsicum roll','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',8.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('89B98094-18A9-4EA7-BA9D-4701D15FCE7E',50035,'chota samosa','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',88.88889,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,223) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('263CBD55-CC97-4C4F-8DD7-4749FB576753',50014,'platter','No.''s','389A3E09-AC97-4C4B-BCE1-342D2CF991DB','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',1.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,193) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('AC9F3989-5C7F-4558-BD9B-47C635010B3F',9017,'Kesar Khoya','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',170.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('16BC70F3-CB16-4770-94A8-4871D6E3320C',6250005,'bhatura extra','No.''s','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',10.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,2) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('8B161BDB-8C37-4A89-828F-48984F2203E5',44,'potato cheese bun','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',15.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C827F6CF-50D2-4ECF-B97C-49367E0BF26F',76,'Bakery','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',1.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,238) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('DBC0989D-B186-4DB9-89E2-49C3289D7CBB',27013,'Plain Sadesh','Kg.','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',180.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,12) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F5DC8706-2142-4992-8B00-4A09E8951F19',9102,'Kesar Sandwich','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',190.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,113) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('BE361B1A-F4C8-43B7-917F-4A86A4F633D5',50105,'vanilla tripple sundaes','No.''s','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',58.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,5) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('3B8CCF53-C109-4D4F-A0BC-4A8B7BAEEACA',25035,'Standard Burfi','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',160.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('83117B7D-531E-47B8-A424-4AA58B9D4F4A',9101,'Tiranga Burfi','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',160.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('A97DF2E2-400A-4005-96F1-4AA6B1242E54',50010,'Desi Ghee Paneer Jalebi','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',150.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1126) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('5393703E-CB8E-41B7-B098-4AE2F61618E1',6250072,'plain milk','No.''s','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',25.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,3) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F61B0E6C-F4BC-4E74-9E23-4B102F196499',23021,'Pineapple Pastry','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',18.60000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1577) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('D2134EE6-2132-48DF-8AFF-4B141AFD2372',17001,'Dal Makhni Indian','Piece','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',55.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1884) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('9E5822E7-9514-43A2-AC88-4BA9863AE157',43,'paneer roll43','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',10.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('708164B2-B828-49C8-B603-4BCA364C786C',9602,'Two-in-One Tart','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',12.44000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B82C7052-1968-430C-9D57-4C3BBF5881EA',11007,'Hawaiian Dream Granita','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',30.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('25041212-45B0-4B93-B07B-4CB6B8343A0A',25080,'Moong Dal Burfi','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',180.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,1197) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('525353D6-0C4C-48E2-8347-4CC2AE4B8701',18002,'Missi Roti','Piece','3769C9D3-C194-438D-AB18-2A665D5DB052','C8C87922-5982-4731-AB9A-352D21F19EDA','48E10C74-9508-44CB-9D7D-7B71ABDAA289',12.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,652) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('E7217037-B705-47DF-A659-4D4579577D85',6250084,'Onion Capsicum Foot Long6250084','Bottle','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('6FD4C213-6AC1-4ABB-A496-4D473E8B3316',17015,'Kadhai Paneer','Piece','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',75.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,927) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('24C89F0D-3479-434D-811B-4D814BAD4C3C',50060,'Bisleri Water','Bottle','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',10.67000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,638) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('51458104-7A70-45CB-9B14-4E2A19163784',6250105,'Cheese Piza 10"','No.''s','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',100.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,35) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F8CCB960-EF36-4B1F-94EF-4E2CF3A37A07',38,'pure desi ghee cookies','Pack','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',1.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','AC73D06F-997C-44AB-9712-4E2CD8049357',0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('0BFC5999-0175-4B8D-A98A-4E4789259456',9009,'Chocolate Ice Cream Shake','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',50.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,22) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('88535F2E-091C-4A66-8FC9-4E8993170734',9108,'Chivda Mixture (Chidva)','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',90.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,40) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('FBD11E5B-9A73-4DF8-95A4-500FD51F5814',47,'Paneer Do Piaza','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',80.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,49) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('4B2A24A3-61FE-4460-8672-505F7CC86152',9609,'Meetha Samosa','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',140.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F92DA01B-963C-4518-93C6-5084FC9810FF',9067,'Apple Crunch','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',21.33333,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('927604E4-A6D8-4ED7-A1D5-50C0011C02FF',23031,'Chocolate Pie','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',17.77778,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('CDA2BCB3-2078-40FE-A7D6-50FEDF7678FD',25253,'Paneer Cutlet','Piece','381765CB-F018-455A-985D-D5EFB1ED1536','CF0285D9-9FE6-4A3B-A6D9-CBBEA5ED228F','48E10C74-9508-44CB-9D7D-7B71ABDAA289',7.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,32) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('A8E45530-125D-4460-89B3-5135AC6D124F',19001,'Veg. Biryani','Piece','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,234) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('555AF498-2552-46E3-991F-514DFEACF6B2',96,'Bran Bread','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',13.33333,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('22CB87B1-027E-4E2A-931B-52DFB1001878',50073,'Cold Drink Rs.25','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',22.22000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,29) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('40EB48B5-4E74-4342-A3AC-5380CB4373D5',50140,'a','Bottle','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',100.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C0118296-87E1-4F81-BEE4-539ED2EB8EC9',21101,'Dal Bukhara','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('1290217D-0E88-4C55-B76A-53F0C1292D3F',15003,'Rawa Idli South Indian','Piece','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',40.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,20) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('0AB05592-D108-46EB-85F9-54BCF936ADCE',50114,'Mushroom Delieght Foot Long50114','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('155843BE-7D71-489F-A1CD-55418597F796',26011,'Kaju Strawberry','Kg.','80EC988A-448E-4F81-B753-1B70FF8B233C','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',300.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('BF8D37F6-02E1-418F-B58B-55A5F8532839',22001,'Hot Gulab Jamun','Piece','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',8.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,3483) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F13BA114-8D96-46EA-A198-55D7CB89A008',37,'Chocolate Chiffen','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',20.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('7BCE0BFF-CFCE-40AA-A760-55DFDE7DBEBA',25004,'Rasmalai','Piece','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',13.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,6867) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C23C997D-1B09-4CD9-A9FC-561352E2F09E',23029,'French Bread','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',13.33333,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('CCBAA43D-2F70-4378-80EC-565A637115CD',25047,'Milk Cake','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',180.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,1587) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('5F502885-4B9B-41A2-8B20-566954E09FBD',5009,'12" Simply Veg','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',170.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,45) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('81E9EE53-A5A3-4835-85C3-56C2B8D41F17',25257,'Bengali Special Dosa','Plate','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',70.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,11) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('3B1FBCF2-375C-4923-A21C-56FC6268E007',9006,'Pineapple Ice Cream Shake','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,4) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('FE930BD9-BC86-48B9-BD8B-571CC2F62D2F',6250062,'Gravy6250062','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',25.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,6) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('3DF815F0-5CA7-4634-895A-57672AD28578',32,'Lassi Masala','Bottle','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','3D1413EE-D3EA-412F-B762-BAE37BD503B6',28.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,115) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('29E434DA-272D-4CC2-B9F6-57E30EEA82F0',25032,'Bekaneri Burfi','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',140.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,8) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('153817B4-6F02-408A-A763-583ACA5B6392',6250094,'onion salad6250094','No.''s','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',20.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('12324C3A-2CD8-4AF7-BB44-58895E733403',629124,'Badam Bati','Kg.','389A3E09-AC97-4C4B-BCE1-342D2CF991DB','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',150.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('03267721-1F98-452A-BA6C-59519B809C42',15015,'Onion Uttapam','Piece','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',55.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,35) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('87104E38-9522-464F-AE30-59902DCE4636',71,'Single Chana Puri','Piece','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',15.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('3172F414-D662-48F9-A79A-59B05F63C2B0',6250107,'Khoya Ghee Mix','Kg.','A331DC08-EAA5-4C87-8DE0-0F9CBA2558F7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',1.00000,NULL,'3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,2) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('ECF00AB2-4A5B-4099-A1D6-59E9724D0356',8,'Paneer Uttapam','Plate','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',60.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,22) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('58C8E82D-C022-4831-8E12-59F22825EB07',6250069,'Shanghai cheese chilli6250069','Plate','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('CE54B0CA-2B2E-4E58-AA99-5A8AFE6275AC',6250059,'Stuffed Tomato','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',80.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,19) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('DFCC7AC1-92FF-44C2-A752-5B11405F7D6B',50090,'Sambhar','Plate','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',15.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,6) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('7F43C869-CB35-45A9-B771-5B1DEF8E1639',16015,'Gravy Chilli Cheese','Piece','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,222) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('0B582CE5-99CF-4D9E-8AB7-5B40D7AFE73E',520,'Gajra Kali','Kg.','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',160.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B9947684-7CBF-4A68-AB4C-5B6FA37A1690',21109,'Boondi Raita','Piece','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,135) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('A159B145-D53D-4247-B233-5C0ACE9AEEA9',26012,'Kaju Anjeer Burfi','Kg.','80EC988A-448E-4F81-B753-1B70FF8B233C','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',280.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('AF9AA4A2-DC0A-4368-A5CE-5C374A3459C7',22007,'Ras Malai','Piece','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',16.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,19) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('786F63B3-9E30-4EF9-9B34-5C4A8E5B669C',6227,'Eggless Pineapple Cake500.gm','Pack','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',133.30000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('40F3CE72-1DA2-46D7-AE0D-5CBB65899094',16007,'Dry Menchurian','Piece','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',55.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,149) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('9B999E00-BF65-465D-84CB-5CF159C9E652',50017,'Mango Ice Cream Soda','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',40.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('E322D144-723C-4AD2-AA02-5D2131013396',9200,'Hot Espresso Coffee','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',30.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,123) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('E827B75A-9170-49F1-9F13-5D2F12EB151C',9095,'Bournevita Burfi','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',190.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('1F3AF1FD-4C12-4B5E-B435-5DE75480D311',26017,'Badam Pista Dilkush','Kg.','80EC988A-448E-4F81-B753-1B70FF8B233C','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',450.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F3256AF3-6705-412F-A207-5E161CC34CCC',50129,'Kulfi Shake50129','Bottle','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',50.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,2) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('D5A6F3E4-D30F-467E-ACC3-5E42428C23E2',504,'Rs. 05','Piece','4973B4EF-0506-4A44-8BC4-FA422334B041','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',5.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('BB69D363-ABDE-4D02-BD22-5EBF1FE7BEE7',9207,'Butter Scotch Cup','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',11.55556,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,15) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('031F2E7E-5211-4E36-B854-5EFAF16638BD',27021,'Sandesh Roll','Kg.','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',140.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('25D38246-C4C2-4057-9891-5F2CDDF9F390',100012,'Gulab Chikki','Kg.','389A3E09-AC97-4C4B-BCE1-342D2CF991DB','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',350.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,20) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('FCCFC3C0-66F4-4A3F-8457-5F5461138FF7',50133,'paneer roll50133','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',10.66667,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('1B877646-A7F9-4082-AB8F-5F7F4D004091',9033,'Moti Ganth','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',71.11111,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('43BB5B91-3A63-4DA1-90E6-5F836A6F97BF',5014,'10" Mushroom Delight Pizzas','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',155.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,31) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('4BEFEE39-974E-4B2B-A3E7-5F9FEE5D6FF7',25027,'Moti Choor Dry Fruit Ladoo Desi Ghee','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',150.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,3529) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C0FC2EF2-219B-4D11-B90F-5FD94F6F7C6F',14015,'Pao Bhaji','Piece','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',40.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,226) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('0B7F7611-173C-4F20-8A50-6005AA61898C',75,'Indian Snacks','Piece','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',48.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('FDF76B0A-8592-4788-B127-60B12E1D3DFB',502,'Rs. 03','Piece','4973B4EF-0506-4A44-8BC4-FA422334B041','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',3.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('146E7B14-BCAB-4EE4-AB6E-61D32F9E6594',31,'Paneer Fried Rice','Plate','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',70.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,18) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('4B54026C-8AF2-4FB4-BB48-61D99BFD2F70',23026,'Mocha Pastry','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',21.33333,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('64D6DF20-8F19-4895-9920-622B2AECF594',25022,'Banarasi Ladoo','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',110.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,6) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('24E9C797-8C16-475C-BC8B-6237845318BB',9013,'Chhota Samosa','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',100.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,171) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('954E2096-6827-4C82-B3E2-62BE893C7472',27023,'Pink Rasgulla','Kg.','F76B54C6-21CE-450F-AC73-E1A3A43DAB43','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',120.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,315) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('1848C974-1F8F-492D-82EA-630060B08FF3',6250068,'Mango double sundaeMDS','No.''s','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',50.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('625B20CC-64BA-4E7F-82B3-631D2EDAB4D8',23,'Jeera Rice','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',55.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,154) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('EAB4A0AF-3C80-4AC2-B534-6333357AF83F',50037,'Chinese Idli','Plate','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',60.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,47) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('CC474A33-9409-4142-948C-635163718D43',50075,'Brick Rs. 70','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',62.22000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,9) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('FD018853-350A-4EF3-A195-6358D6F95700',27032,'Anar Sandesh','Kg.','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',140.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('4F61DD30-15E4-48E2-B061-639E2E715D3D',9119,'Gajjak','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',140.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,320) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('5EC143B8-8113-42E5-8253-63B9D7B8D160',201,'Lic Lolleez','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',4.44444,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('E1250B0D-A175-4B70-9CFA-6409D9E120A2',23019,'Chocolate Tart','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',17.77778,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B76873DD-B1EF-44CF-9DBB-645D7BBF4888',25150,'Veg. Chopsuey','Plate','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',70.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,93) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('A9BD7E42-45B6-41E5-861D-6476C4FF4208',152,'Mountain Dew','Bottle','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('0AC9A085-406B-4959-9CDE-648F1A12D7B0',50003,'Mixed Platter (Sweets)','No.''s','389A3E09-AC97-4C4B-BCE1-342D2CF991DB','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',1.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,25) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('3D480E50-E524-41B3-81B7-64A415B0FF50',3002,'Large French Fries','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',50.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,56) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('61CF3569-E042-4B4F-B6F8-64B94C93AA9E',6250097,'desi ghee pao bhaji','Plate','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,15) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F0230CDF-F302-4A86-962B-64CE1C4C17ED',18004,'Pudina Lachha Prantha','Piece','3769C9D3-C194-438D-AB18-2A665D5DB052','C8C87922-5982-4731-AB9A-352D21F19EDA','48E10C74-9508-44CB-9D7D-7B71ABDAA289',20.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,100) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('6E51435B-04CA-4E73-A381-64DA81236B36',27020,'Wark Sandesh','Kg.','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',140.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('8B6800AA-85BA-41EC-A5F8-65A14516B988',9035,'Pista Bahaar','Kg.','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',140.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('04368148-9D5B-4E9B-A4FA-66D5B0E0FCD1',17005,'Chana Masala Indian','Piece','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,422) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('E3425FD3-9E14-4C04-970F-66D8E67CE2DD',25086,'Pista Bhog','Kg.','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',170.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,222) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('98AD5919-B3F5-4BEE-8DC9-6706381694B3',17008,'Mushroom Masala Indian','Piece','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',70.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,214) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('341539D2-60E8-4B16-BDBB-673B36C573CA',25149,'Rice with Gravy','Plate','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',75.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,46) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('72B8B3A0-A1E4-43FF-B771-6742B6FDAFBA',9516,'Creamy Chocolate Pastry','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',21.33000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,3) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('05CCF4D6-12EC-47CA-AA14-6773071D3188',5025,'7" Extreme Vegetable Pizzas','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',105.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,49) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('6D3961AC-FB5B-4456-B84F-67AEA7D9FA1D',50134,'veg roll','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',10.66667,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('4ECEB956-87A7-4A70-9F36-67E93C262C48',5022,'7" Deluxe Margarita Pizzas','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',95.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,11) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('3E49F5BD-D5BE-4030-9313-6830C0F596AE',25074,'Kaju Kesar Burfi','Kg.','80EC988A-448E-4F81-B753-1B70FF8B233C','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',360.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,191) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('53EF69F0-8899-4AAF-9003-684918D7459E',50120,'Onion Capsicum Foot Long50120','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('484ADDBC-7CD0-49BB-8EA1-68DF18C693AF',9,'Cheese Menchurian','Plate','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',70.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,54) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('87846F84-460E-4743-BFAE-68EDB8CFCC3D',6250074,'coconut rava masala dosa6250074','No.''s','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',60.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('25DF3A78-D770-4EB8-AF9F-699DC4003F4A',15010,'Rawa Plain Dosa South Indian','Piece','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',55.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,6) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('02FA0170-CF31-4BE6-B566-69A2A4A5F4D7',22016,'Kamal Bhog','Kg.','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',170.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,286) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('EFD0AAFF-D7FF-4287-8825-6A7A56580554',9232,'Clear Soup','Plate','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',35.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,8) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('34AD6153-70C4-46D6-8C84-6A82CC78AAB3',14009,'Tikki (2 Pcs)','Piece','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',32.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,363) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('03E7EBE3-ECD6-401D-BE30-6A85456A2CC4',33,'Lassi Sweet','Bottle','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','3D1413EE-D3EA-412F-B762-BAE37BD503B6',28.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,660) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('2ED0EAA4-3C2F-4709-B1F5-6A8BF541AB36',5007,'7" Simply Veg','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',85.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,135) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('8A53096E-6221-4551-B89A-6B5E0722DFBD',26002,'Kaju Dilkush','Kg.','80EC988A-448E-4F81-B753-1B70FF8B233C','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',350.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('8C286E98-E274-466F-ADF1-6BBB43A75E0A',6222006,'Kesar Raj Bhog KRB','Plate','389A3E09-AC97-4C4B-BCE1-342D2CF991DB','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',25.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('09E4E970-1C4B-4DFE-A091-6BBEA7CD47E0',100003,'HI-tea','Pack','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',130.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('D4FBC1BB-270C-4338-B049-6BC13779DF7A',17009,'Malai Kofta Indian','Piece','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',80.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,363) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('126DAA5E-2FED-45E5-9500-6BDDCAD3B747',9962,'Sabji Kali Mirch','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',50.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('09B07F51-C6F2-4BA5-9F88-6C0C39C630B2',9039,'Rich Cake (500g)','Kg.','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',40.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('E329F992-3898-4C4B-B3CF-6CD41722BD2B',16010,'Mushroom Hot Gravy Sauce Chinese','Piece','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',70.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,11) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('99061937-5B18-4AB1-9318-6CE5CBCE154C',1031,'Gunjia Phool','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',180.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,11) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('0A74D97E-D143-4C30-913A-6CEDC0CE9CB3',16002,'Hakka Noodles Chinese','Piece','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',60.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,145) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('FB77075B-5EDD-43D2-BB86-6D908622458C',23004,'Chocolate Truffle Pastry','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',24.50000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1021) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('A521EA4D-7CC1-44C3-9426-6E3542618018',26033,'Khoya Pudding','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',170.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('23483E2F-735C-4050-9219-6E44FF3F6135',1030,'Pista Cookies','Box','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',1.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','AC73D06F-997C-44AB-9712-4E2CD8049357',0.00000,0,0.00,0.00,DEFAULT,2) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('E4D30B14-4D61-492A-9D67-6E5520D78E2E',28,'Nut Cracker','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',88.89000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,72) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('6D34E77D-2812-483E-AC6F-6E7EF1FD62A9',9041,'Namkeen Green Mattar','Piece','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',88.81000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,12) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('8212E429-0F2E-4DEF-92D5-6EA18880C164',9850,'Kaju Anjeer Cake','Kg.','80EC988A-448E-4F81-B753-1B70FF8B233C','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',400.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,2) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('9E30883A-9147-4B29-B55C-6F5709B1AB86',11002,'Cola with a Twist Granita','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',25.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B629CF9E-63F8-4767-9E12-6FA22136C442',5008,'10" Simply Veg','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',135.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,105) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('EF7CC9BE-EC9F-41CD-887D-7045437F58A3',17002,'Rajma Indian','Piece','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',60.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,204) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('133069D6-4E0E-49A3-B818-706A44A86C7E',9064,'Fruit Tart','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',17.77778,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('7B9855A7-1AD6-4F26-8A4E-70D3986531FF',6250093,'kulfi shake6250093','','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',50.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('5AB075A1-C7AD-4642-A921-70DEB2E8F935',5018,'12" Shezwan Paneer Pizzas','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',170.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('36D8A16C-F5F0-422A-BC3C-70FA1CF68FA6',100015,'Spl. Chocolate','Kg.','A0D44EED-39C2-4030-9030-5C6F928D3D89','092A7308-8A30-49C4-B7C4-C3BADFC1659C','3D1413EE-D3EA-412F-B762-BAE37BD503B6',390.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,3) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('1EAB1BCE-6139-4CD1-8AA7-712A359A0A05',26034,'Anjeer Roll','Kg.','80EC988A-448E-4F81-B753-1B70FF8B233C','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',360.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,82) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('57FB0549-A2FB-44E1-B269-715021D9BFC0',18012,'Aloo Prantha','Piece','3769C9D3-C194-438D-AB18-2A665D5DB052','C8C87922-5982-4731-AB9A-352D21F19EDA','48E10C74-9508-44CB-9D7D-7B71ABDAA289',30.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,85) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('655F9F5B-939E-4C6D-8BAE-716FB50D739B',9096,'Bournvita Katli','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',190.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F1525307-CDD1-423F-8FEA-71820A93EDA1',50076,'Brick Rs. 115','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',102.22000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,10) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('80187328-E148-4257-A1B1-71C37FFC8AB4',25031,'Khoya Katli','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',180.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,473) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C29C10B4-3670-4986-B61A-727CF4C234B2',6250103,'Deluxe Thali Pack','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',103.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,497) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('7384D80A-3BFF-45D5-84EB-727D42F2CA1B',100908,'strawberry Cake 500 gm','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','3D1413EE-D3EA-412F-B762-BAE37BD503B6',133.30000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',6.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('81E97E32-2ADE-4DE0-AA44-72D16CC2AD5E',12010,'Hot Choc. Fudge Triple Sundae','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',70.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('7997C4FB-75B6-48CD-BE60-72DAC6DD3177',50021,'Tikki & Chana','Plate','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',35.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','AC73D06F-997C-44AB-9712-4E2CD8049357',0.00000,0,0.00,0.00,DEFAULT,32) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('140ED534-2B17-4AD0-84A8-72F3012396A9',50078,'Brick Rs. 60','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',53.33000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('EDF0D344-A8D9-4923-87EC-7381DE931842',9116,'Kaju Roll','Kg.','80EC988A-448E-4F81-B753-1B70FF8B233C','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',360.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,279) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('56ECE018-F6CF-485F-A861-73B607DB5681',10001,'Chocolate Ice Cream Soda','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',40.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,7) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('94EAAD34-3CE8-40AE-A212-74087167B882',50093,'Ice Cream Cone','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',18.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,315) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('D1E0FA8E-42DD-46CD-9207-74506B1BE29C',9852,'Pista Sandwich','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',190.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,290) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('5AACD8ED-6542-4B1F-9EFD-74AF2F11275A',8005,'Mango Smoothie','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',35.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('E2E213D7-2673-4E59-B49D-758C1E923B75',9853,'Kashmiri Petha','Kg.','F76B54C6-21CE-450F-AC73-E1A3A43DAB43','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',110.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,749) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('20F109EC-0994-48C0-9A2E-75B821D243B8',50040,'Paneer Achari','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',80.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,45) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('E2E547CE-F920-433F-BA65-7603EFA2F72A',9004,'Mango Ice Cream Shake','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,9) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('409D084B-393B-4ABE-BC8E-760A2DA83DC6',50033,'Extra Puri','Piece','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',10.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,28) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('9C4F08F6-E460-4CE9-9D3B-7638AA3C949B',50030,'Kesar Phainee','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',120.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,12) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('1BEB34AC-C202-43F4-9D06-76867C62008B',27024,'Feeki Matthi','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',88.80000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,5) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('ED785D91-4CE3-4A04-95F1-76886FE9C93D',25252,'Chana Methi Paneer Bhatura','Plate','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',35.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('CDE7A9E9-748C-4681-9BC3-76D5B5A96A4D',50084,'punjabi puri desi ghee50084','No.''s','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',40.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B8D4E123-92C2-4195-A6CB-774C8065A790',21008,'Pineapple Raita','Piece','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',50.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,172) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C76C78E8-95E1-474B-9E18-7750CB19C714',25261,'Black Current Ice Cream Shake','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',50.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,2) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('2F73E747-C2F5-4A3C-8799-77BACE4D7E41',1001,'Cream of Tomato','Piece','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,69) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('118436BE-45D2-4E8C-8768-77BDFB3E78AC',50008,'Gobi Samosa','Piece','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',8.89000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,382) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('15665A72-7AE7-4D88-9417-77E4D91AEB88',9214,'Real Juice 200ml (Rs. 15)','Bottle','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',13.33333,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,579) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('276026C0-B55E-4C5D-94D0-78010F98827E',27002,'Badam Phool','Piece','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',130.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('4530B1D6-F92F-4370-A88F-78411ED135A7',56,'Peanut Gajjak','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',130.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,201) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('EA115E21-6EF0-41FA-903C-787C2B25185B',87,'Kiwi Pastry (Discontinued)','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('DF80ADD7-1BD9-4FF0-BA5D-797D4A3A8830',25057,'Kanpuri Ladoo','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',110.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,2786) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('CF63BE0F-7CC2-48E2-9C25-79C27C466808',9222,'Diet Pepsi 250ml','Bottle','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',11.56000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,4) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B295CC6E-F94A-4C6E-A35F-7A74317D0181',50071,'Badam Chikki','Kg.','389A3E09-AC97-4C4B-BCE1-342D2CF991DB','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',400.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,15) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('91E4DF4B-9DF1-4E30-B8AF-7AC6EE118863',50122,'Coconut Uttapam50122','Plate','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('6C9544F6-9140-4AA9-B851-7B65C3306388',6007,'Stuffed Crust','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',20.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F3EA527E-8B36-4D0D-AF84-7BC141366146',27011,'Pista Phool','Kg.','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',130.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('CB0907DB-02E1-4F4A-BBEB-7C08F5A4CA21',10006,'Mid Night Beauty Ice Cream Soda','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',40.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,5) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('320125E6-75F7-4606-9E73-7C1BC17670F4',9513,'Chocotip Cookies','Box','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',1.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','AC73D06F-997C-44AB-9712-4E2CD8049357',0.00000,0,0.00,0.00,DEFAULT,7) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('62E75A24-72C8-47A4-9366-7C55B4254580',49,'Cheese Tomato','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',75.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,218) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B5D40070-4821-481A-992C-7C5BE33DB0A5',9858,'Badam Milan','Kg.','80EC988A-448E-4F81-B753-1B70FF8B233C','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',450.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,2) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B1A0D1C7-DEE1-449A-AE70-7C8A26BD942B',5021,'12" Shezwan Vegetable Pizzas','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',170.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,7) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('635A026A-4ACD-4351-B07F-7CBCA4F72B9A',25078,'Bikaneri Burfi','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',190.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,398) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('12A2824B-2308-4DDE-886F-7D078C657577',9008,'Vanilla Ice Cream Shake','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,7) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('410DB88E-148A-4689-A65D-7D7A2ABE59F0',21002,'Onion Kulcha with Chana(Value Meal Deal)','Piece','3769C9D3-C194-438D-AB18-2A665D5DB052','C8C87922-5982-4731-AB9A-352D21F19EDA','48E10C74-9508-44CB-9D7D-7B71ABDAA289',40.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,21) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F0380B49-1E75-4709-A167-7D7E724444B3',26005,'Kaju Samosa','Kg.','80EC988A-448E-4F81-B753-1B70FF8B233C','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',360.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,51) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('882F4EF1-D39F-4952-A8F6-7D85ABF17BE7',2004,'Jumbo Berger with Cheese','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',49.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,53) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('A7DB0D18-B0D1-42D3-AEAF-7DAC358AB105',74,'Namkeen','Piece','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.88889,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,4715) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('CF1EA16A-77E5-4287-A760-7DC89ABDE9B3',22004,'Gajzar Ka Halwa','Piece','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',25.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,366) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('58E02106-F4D8-46B3-96AE-7DF033C87A14',17,'soya chanp','Bottle','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',69.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('2A9A74E1-4AA9-4F45-A13B-7F3CBFBA5EB9',12011,'Create Your Own Sundae Triple','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',75.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F13CBBF4-2F35-4CFA-8E29-7F520D1BB4D7',9204,'Strawberry Cup','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',8.88889,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,33) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('5D17C7F4-BAD9-45D0-AAEE-7FA7A317B7EB',50056,'Gravy50056','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',25.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,6) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('3324CC70-6DD2-4F09-835B-7FB19959D253',20002,'Deluxe Thali','Piece','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',95.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,390) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('086730B1-14E6-4081-9C32-7FC265D824C0',14013,'Matra Kulcha','Piece','381765CB-F018-455A-985D-D5EFB1ED1536','CF0285D9-9FE6-4A3B-A6D9-CBBEA5ED228F','48E10C74-9508-44CB-9D7D-7B71ABDAA289',30.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('5270B403-5AE9-4F12-89B6-7FC4512FE8EF',50096,'Aloo Chips','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',21.35000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,910) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('2EEB5142-BCD7-4C47-A84C-8010385C0A80',48,'Paneer Methi Malai','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',90.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','AC73D06F-997C-44AB-9712-4E2CD8049357',0.00000,0,0.00,0.00,DEFAULT,410) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C7DF2F34-B941-4ECF-894C-801089C4C3B0',18016,'Paneer Malai Tikka','Piece','3769C9D3-C194-438D-AB18-2A665D5DB052','C8C87922-5982-4731-AB9A-352D21F19EDA','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,31) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('E5CD9C89-9C2C-4063-B080-802F82619227',26015,'Badam Burfi','Kg.','80EC988A-448E-4F81-B753-1B70FF8B233C','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',430.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,47) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C08AAC04-3F1F-4D53-9E70-806236584B09',6250082,'Tomato Capsicum Onion Foot Long6250082','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C7305B00-20DC-4A5A-BEC9-80BF21588BB3',23023,'Mix Fruit Pastry','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',20.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('D4F57D66-2EBA-4692-AB88-80DE8DDA049C',50104,'hot milk plain','No.''s','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',25.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('6ED01949-F7CD-495E-9A79-8171C29CA569',25061,'Khatta Mitha','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',88.88889,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('BC4A05C2-895A-4496-BC4B-81A580D3C585',27014,'Anar Kali','Kg.','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',160.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('CE67A574-F56D-4706-97DC-8233F7B78A3F',50044,'Aloo Bedmi','Plate','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',40.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,38) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B47BB292-7B9A-459E-B24C-830298B2A058',9117,'Shalimar Gur','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',180.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('9E0AB9D2-442F-4A71-880C-831C44F7DAAE',27025,'Karela Matthi','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',88.80000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,61) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('48D6D2A6-7BFA-47D5-88EE-832EA243DFC8',25044,'Gajar Ka Halwa','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',180.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,848) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('36AAF5CF-E978-4F9B-A77E-833B896533D5',9011,'Moong Dal Fried','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',100.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,61) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('866301E8-6BC1-4D2A-B2DD-834C3044F30E',25039,'Nariyal Burfi25039','Kg.','F76B54C6-21CE-450F-AC73-E1A3A43DAB43','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',150.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,255) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('18FECA9D-9907-4ED8-9F13-838FC060D53B',12013,'Brownie Triple Sundae','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',75.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('7975C77B-EFA4-4957-A30E-839257B9C123',25258,'Bengali Special Uttapam','Plate','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,20) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('AFEA8407-7B11-4956-8D27-83D502F1F28E',3,'Besan Pinni','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',150.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,355) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('4A2DA868-2DCE-41A8-9AD4-840C1F9951A1',98,'Diet Pepsi','Bottle','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',17.77778,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,999) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('0920D43C-67AC-4D64-9012-8445B23425E1',9100,'Special Rewari Burfi','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',150.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,17) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('91CF59E5-6A82-4680-B4D6-846630045330',16014,'Gravy Menchurian','Piece','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',55.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,860) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B1F73C2F-69CD-4264-B83B-84C730E840C9',26024,'Dry Fruit Panjeeri Ladoo Desi Ghee','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',150.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,7) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B3670E8C-9072-4BAC-9DC2-84FE3138D72F',16016,'Mushroom Chilli Gravy','Plate','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',70.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,26) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('53B84363-8092-4DFC-AA7C-8510F4688AF7',25046,'Malai Roll','Kg.','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',150.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('EC56D609-3B4A-48EF-B5B8-851C9F620E73',2121,'Extra Pao2121','Piece','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',17.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,21) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('7FAE929F-1250-4B47-BD08-85828E765568',100014,'lunch','No.''s','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',133.50000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('2ACE5E65-6C88-446C-B9BC-8585122A23AF',9216,'Hot Kesar Milk','Piece','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',20.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('8167BCA2-12CF-4887-BB66-862EA601895A',5033,'12" Real Italian Pizzas','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',170.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('6F9B4B5D-3837-4597-A86C-86F85271B520',4006,'Veg. Delight Grilled Sandwich','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,20) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B7DF7670-D609-49CD-AEEE-870749D2FF4D',50005,'Extra Bhatura','No.''s','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',12.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,20) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B3A45979-C45F-4077-B0DF-870E029A1BAB',100001,'Dry Fruit Platter','Pack','A0D44EED-39C2-4030-9030-5C6F928D3D89','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.89000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,328) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('A894B126-B3B6-4693-923E-876A7A8A8E6E',77,'Continental','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',1.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B2A7E5DC-417B-41D7-9AAD-8840F0290040',27008,'Malai Bhog','Kg.','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',160.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,18) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C4C82A3D-35A4-4E1E-9342-884327D4ADCD',5016,'7" Shezwan Paneer Pizzas','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',85.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,10) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('BA0945AD-BB09-4AA1-8619-885DF65D3464',23008,'Black Current Pastry','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',21.33000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,8) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('A313A72E-E3F8-42A9-9084-891F2268C43B',50142,'Gheeya Burfi','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',180.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,59) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('17239ED9-05E9-4091-BFD5-8989A85BD2DB',6250052,'Single Scoop Ice Cream','No.''s','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',30.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,6) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('35C82AC6-9FFC-4641-BDC1-89BBD63A11B1',10005,'Sunset Glory Ice Cream Soda','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',30.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('7FCDE9AE-113F-4E85-A244-8A59D1A4A5D3',9951,'Paneer Irani','Plate','3769C9D3-C194-438D-AB18-2A665D5DB052','C8C87922-5982-4731-AB9A-352D21F19EDA','48E10C74-9508-44CB-9D7D-7B71ABDAA289',70.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,9) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('9C48D0D6-2F00-4CED-9407-8A84AC07A803',50029,'Mixed Packing','Piece','389A3E09-AC97-4C4B-BCE1-342D2CF991DB','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',1.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,7) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('6FA61AF1-91B1-42E1-91F0-8AC7853D23DE',5036,'12" Tandoori Paneer Pizza','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',190.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,15) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('363B5791-852A-4104-8EA8-8B6EECA6ED8D',9060,'cheese Patty','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',8.89000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,184) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('8EC4E346-BFD0-445A-9A8B-8BB1F813293B',9114,'Rajasthani Ladoo','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',150.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','AC73D06F-997C-44AB-9712-4E2CD8049357',0.00000,0,0.00,0.00,DEFAULT,16) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('4376462E-7619-4A30-B59F-8BE5EBC2DD53',27030,'Chenna Murki','Kg.','F76B54C6-21CE-450F-AC73-E1A3A43DAB43','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',170.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,2293) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('479A93E6-E865-42A0-99A9-8BEB5F233B74',50067,'mesu pak','Kg.','389A3E09-AC97-4C4B-BCE1-342D2CF991DB','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',170.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,22) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('95A6BA27-B281-4B73-B3CB-8C29C8F829E1',5031,'7" Real Italian Pizzas','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',90.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('A08E6AD8-8A84-42EA-BA7B-8CBF263CE448',21004,'Paneer Naan with Gravy (Value Meal Deal)','Plate','3769C9D3-C194-438D-AB18-2A665D5DB052','C8C87922-5982-4731-AB9A-352D21F19EDA','48E10C74-9508-44CB-9D7D-7B71ABDAA289',55.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','AC73D06F-997C-44AB-9712-4E2CD8049357',0.00000,0,0.00,0.00,DEFAULT,410) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('DAF9DCDA-6536-4A11-874C-8D089F3D5833',9061,'Shahi Samosa','Piece','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',8.89000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,415) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('86421B71-1BE4-402E-BCB2-8D8D0C82DF52',17011,'Methi Paneer Indian','Piece','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',77.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,32) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('2E863D68-B764-4B51-B861-8DA9037FFF89',50131,'dal vada','No.''s','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',8.89000,'99D80D24-13C4-4C85-A7EB-67A29D154490','AC73D06F-997C-44AB-9712-4E2CD8049357',0.00000,0,0.00,0.00,DEFAULT,633) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('808E3482-FC58-4111-A843-8DD1411AE79A',9802,'Chameli Mixture','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',88.80000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,27) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('2EF06B1A-4489-4281-A11E-8DFD0904C42F',9224,'Ice Cream Cone (18)','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',16.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,26) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('47072F81-D0F4-4C9C-BA5D-8E0F293D390C',50074,'Brick Rs. 125','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',111.11000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,24) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('AD34AB89-6988-43AA-B3DE-8E18B4A517A7',9005,'Orange Surprise Ice Cream Shake','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('46CDE7A9-FFD0-4B6F-AF70-8EA25671EB71',6225010,'Fruit Cup','Piece','389A3E09-AC97-4C4B-BCE1-342D2CF991DB','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',20.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,2) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('205B2EFB-4137-472E-81A5-8EB71D38AB1D',9001,'Banana Ice Cream Shake','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,3) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('85D61FE2-5D4D-4D75-85DE-8ECD59E12DDE',9859,'Corn chilly cheese toast','Plate','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',55.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,3) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('3EACAB00-1553-42A2-BEF5-8ED6E333F3E8',9213,'Real Pineapple 1l (1000ml)','Bottle','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',57.77778,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('BDB483F4-D6D1-4BB0-B8FC-8F5F300EBAE3',19002,'Paneer Biryani','Piece','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',75.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,13) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('ED9F85E2-CAE4-4BF5-A049-8F7E24099D8A',50126,'Aloo Pudina Raita50126','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',50.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,32) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('929B7E24-3DEA-46B3-AE03-8F8B372DBACE',50137,'frouit cream','Piece','F76B54C6-21CE-450F-AC73-E1A3A43DAB43','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',20.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('9181DA71-4B34-4374-A66F-8FC052E04368',9037,'Onion Kachauri','Piece','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',8.88889,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,2091) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B5D25EF2-5BE2-4B13-A849-904D04ECABDC',23015,'Chocolate Muffin','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',22.22222,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('80770355-E0A8-43AC-B852-90598C4ADE96',64,'Papad','Piece','3769C9D3-C194-438D-AB18-2A665D5DB052','C8C87922-5982-4731-AB9A-352D21F19EDA','48E10C74-9508-44CB-9D7D-7B71ABDAA289',10.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,69) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('21D18318-C0B5-4973-952C-905C003F472B',9553,'Rajma Kilo','Kg.','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',135.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('CA58FA63-84CC-4960-BDA1-907D59FA5012',9512,'Paneer','Kg.','F76B54C6-21CE-450F-AC73-E1A3A43DAB43','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',140.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,675) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('DE9AB250-D828-49E6-97BB-91B49C6C2C8D',50118,'Tomato Capsicum Onion Foot Long50118','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B766AE64-E141-4B34-B9B8-91BD020B7602',15018,'Onion-Tomato Uttapam','Plate','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',55.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,3) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('8A344FB0-FC89-4DEE-8E4A-91D2014CF2A2',20001,'Thali Meals','Piece','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',75.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,402) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('7A79D574-5C77-49E6-9A31-91FEE159EF97',9015,'Methi Matthi','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',88.80000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1651) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C35BA1FD-7943-4A50-93FC-92269D284DE9',15,'Plain Ghewar','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',180.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,421) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('2F4C5C4D-9E96-472E-9BA3-92A10A4D632C',25030,'Chocolate Burfi (Khoya)','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',180.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,284) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('50807DA6-E5FF-450E-88D3-92BE098D352B',55,'Butterscotch Sundae Cup','Piece','4973B4EF-0506-4A44-8BC4-FA422334B041','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',18.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('08316D91-D388-451B-B007-92CD017748D7',6250104,'Chinese Thali Pack','Plate','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',103.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,57) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('8598B1EE-BA7A-4C70-B95F-93495D07B6B8',9507,'Double Chocolate Cookies','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',8.88889,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('4B0AF651-6810-4FD3-8EDC-941B80B9F18C',12007,'Hot Butter Scotch Double Sundae','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',55.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,31) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('2770A835-F797-4A23-9B89-9429DAE004CF',9024,'Mota Mixture','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',88.88889,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,2) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('476B44B5-325B-4729-B309-942FA77B8498',9851,'Kaju Pista Cake','Kg.','80EC988A-448E-4F81-B753-1B70FF8B233C','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',400.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('0A81FBD0-09E9-4119-BA5A-946A3285B6E4',15009,'Paper Masala Dosa South Indian','Piece','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',60.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,10) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('75578F56-ACE9-4891-A92D-949BE0284A2B',34,'kitty 3','Pack','A0D44EED-39C2-4030-9030-5C6F928D3D89','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',130.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('8CB3E0F1-36F0-47AA-BBDB-94B704BABA28',50098,'Tutty Fruity Triple Sundae','Plate','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',75.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('0CEA6C75-EBC2-4A59-BF21-94BB585762C9',50097,'Stuffed Tomato (Indian)','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',75.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('09808152-DDFB-4CEA-A047-94E60E686ACB',16004,'American Chopsuey Chinese','Piece','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,110) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('E868FF1C-F838-4B9B-8A63-94F89F6AE554',5027,'12" Extreme Vegetable Pizzas','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',190.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,46) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('E9D799B4-ED45-4F22-944F-955D0F99A59A',23025,'Caribbean Chocolate Pastry','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',21.33333,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('1E36FA3B-3501-4920-8516-95F120CCD65F',9042,'Mumbai Bhakad Badi','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',71.11111,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('0DE052F9-0C28-4575-AB55-963D885AC209',50095,'Pepsi Gold','Bottle','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',22.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('80A1B320-0646-4EB5-8681-96787F026EF3',25064,'navratra thali','No.''s','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',90.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('40DF07B5-1B37-4176-80DC-9696BB5C3469',16003,'Singapore Noodles Chinese','Piece','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,40) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C848F183-D5AE-43A8-A50E-96EA508B0A2C',18009,'Amritsari Kulcha','Piece','3769C9D3-C194-438D-AB18-2A665D5DB052','C8C87922-5982-4731-AB9A-352D21F19EDA','48E10C74-9508-44CB-9D7D-7B71ABDAA289',30.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,114) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('050BDCD4-C00C-4BB4-86B7-976AA2E31BCC',50034,'extra desi ghee special','No.''s','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',16.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('DA010218-F805-486E-B9F7-97B62ED2F283',50015,'shaker pare','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',80.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,243) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('AB2B855E-D03A-4D82-935E-98A701295BFB',6250033,'Tutty Fruity Tripple','No.''s','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',75.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,5) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B97A91BA-A8EF-4764-9D4D-98ADEE0C5917',6250108,'Khoya Kaju Ghee Mix','Kg.','A331DC08-EAA5-4C87-8DE0-0F9CBA2558F7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',1.00000,NULL,'3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,3) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('85198EE1-C44F-4AAA-BE23-990C4B140C57',9950,'Paneer Haryali Tikka','Plate','3769C9D3-C194-438D-AB18-2A665D5DB052','C8C87922-5982-4731-AB9A-352D21F19EDA','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,32) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('D0D22EBE-2DED-433B-8127-991E5E772A6A',50101,'Aloo Puri','Plate','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',30.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('AA124A2B-EF25-4C25-B1A6-994D465F7EB3',25251,'Gole Guppa Water','Piece','381765CB-F018-455A-985D-D5EFB1ED1536','CF0285D9-9FE6-4A3B-A6D9-CBBEA5ED228F','48E10C74-9508-44CB-9D7D-7B71ABDAA289',5.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,103) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('E64BCB79-A3C8-458F-9441-99684F7C90D3',15008,'Paper Dosa South Indian','Piece','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',55.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,6) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('BE1092D9-B2D3-41F7-9B15-9995503664F0',5015,'12" Mushroom Delight Pizzas','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',190.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,16) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('4D92900D-8131-4BF9-B805-99A1EB0E5559',25012,'Kesar Firnee','Piece','F76B54C6-21CE-450F-AC73-E1A3A43DAB43','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',20.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('8A82932C-692E-4857-A890-9A1830347ADD',9959,'Paneer Taka Tak','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',80.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,50) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('14D962E2-2A7B-4B89-AB47-9A5398D514AE',6250064,'Cold Drink6250064','No.''s','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',19.55000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,27) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C18CE55B-00E5-4DCF-862E-9A703149A2FB',5026,'10" Extreme Vegetable Pizzas','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',155.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,66) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('A0D9151E-E463-4B1D-BBBF-9A8018C0F66D',25148,'Noodles with Gravy','Plate','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',70.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,38) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('461715A2-9588-4928-8B2D-9B1BA6504DB1',1005,'Talumein Soup','Piece','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,24) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('EC11BA7D-9B8A-40D6-B424-9BEFEC508F48',25250,'Khandvi','Kg.','381765CB-F018-455A-985D-D5EFB1ED1536','CF0285D9-9FE6-4A3B-A6D9-CBBEA5ED228F','48E10C74-9508-44CB-9D7D-7B71ABDAA289',90.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('93051DAC-A74A-4E2F-BC56-9BF894EAE055',9203,'Choco-chip Cup','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',13.33333,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,43) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('CB184E8E-1E73-40E8-B935-9C094BD46B81',50080,'Pao Bhaji Desi Ghee','Plate','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,55) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('CFFC4A54-271E-4D28-AA60-9C46A0F90D32',9094,'Kamal Sandesh','Kg.','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',130.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('1B05A7F1-F191-4421-8D26-9CD7026886A1',60,'Kiwi Cake','Kg.','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',249.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,3) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B9DB8CD7-9687-4A33-8F25-9CFEB0EAD4F1',9025,'Mungra','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',71.11111,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,57) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('6C44D5B7-0526-4ED1-A85C-9E0FE6EF2E2D',9556,'Methi Paneer Kilo','Kg.','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',170.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('38C2B5B3-F48F-4EDA-805C-9E1F46FC6473',9115,'Gur Patti','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',170.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('0CC06471-D716-482C-B041-9E5C3D2E2FC4',97,'Diet Can','Can','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',22.22222,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,22) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('7300CC66-6DD4-4844-A417-9E702581C1DD',14024,'Bhel Puri','Plate','381765CB-F018-455A-985D-D5EFB1ED1536','CF0285D9-9FE6-4A3B-A6D9-CBBEA5ED228F','48E10C74-9508-44CB-9D7D-7B71ABDAA289',30.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,264) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('DDDE25D0-6B55-4BA2-86BD-9EDBCCCD3B72',15006,'Masala Dosa South Indian','Piece','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',55.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,610) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('0E1FEBEE-95B8-4E95-A425-9F78562FD56B',15016,'Vegetable Uttapam','Piece','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',55.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,22) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('CFF0FB1E-65D9-4056-9D90-9FA03941EDED',50059,'Punjabi Gunjia','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',180.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,25) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B65ACF74-882A-4790-98CB-9FF0B22DFF18',73,'Single Chana Bhatura','Piece','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',15.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('8D20F04F-A234-48BA-811E-A0A2E167AC20',6250098,'desi ghee chana kulcha','Plate','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('54C433D5-FD45-44B1-BF0A-A0DC35C1C241',9118,'Shalimar Cheeni','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',180.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F9093CFE-1AF8-4594-B948-A1402753B52C',25077,'Kaju Gulkand','Kg.','80EC988A-448E-4F81-B753-1B70FF8B233C','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',260.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,295) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('D2DA9490-8BFB-4B2F-B581-A2640C968879',9104,'Mung Dal Halwa Kilo','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',200.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,554) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('D49C8B9F-9916-4F79-B539-A2921724090C',6250095,'Fruity Delight double sundae','','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',60.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('252EF8F2-0920-48CD-AEC4-A2A9BD256C71',9090,'Kesar Peda','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',140.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('D3A2C500-B72A-4FA5-8A9A-A2BA3CE48130',5023,'namkeen-muttar','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',98.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','AC73D06F-997C-44AB-9712-4E2CD8049357',0.00000,0,0.00,0.00,DEFAULT,118) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('372929CB-3D25-412B-8380-A2BAB07F3A7C',17006,'Shahi Paneer Indian','Piece','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',70.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,585) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('0462F4B1-5735-4C17-8A38-A2EC622CD2C6',9107,'Gajar Burfi','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',180.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,103) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('4C80A52F-DF0E-4EE8-B715-A35F7868FAA8',26032,'Khoya Roll','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',180.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,147) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('5F7C6277-B4A4-4EC8-AF8C-A37715738E80',9223,'Ice Cream Cone (12)','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',10.67000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,7) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('2FF3311B-5F8B-4CFA-B86F-A39DB00E492B',629645,'munchini Double sundae MDS','Plate','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',60.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('E7A434B9-929A-46F1-BE5C-A3FD95D56000',26023,'Pista Lauj','Kg.','80EC988A-448E-4F81-B753-1B70FF8B233C','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',790.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,3) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('D5F86D61-9B68-452E-A178-A4481FBFB3C5',25011,'Milk Badam','Piece','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',28.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,612) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('6CA4DFF1-57A5-4BDD-A2DB-A48B0EF4D5EC',9003,'Coffee Ice Cream Shake','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,54) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('64ACC4C5-442C-45F9-9387-A53376D74B6D',13000,'Dry Fruit Cake','Kg.','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',266.60000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,275) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('5C35BCC6-64CF-4A43-BEF7-A5953941B19C',26001,'Kaju Burfi','Kg.','80EC988A-448E-4F81-B753-1B70FF8B233C','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',320.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,4046) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('9D9DE118-146F-4BBE-9D22-A603B798D1A4',50130,'Fruit Cream50130','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',17.77778,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('DCB8B564-5E57-4B44-8268-A62D5519ADC7',5006,'cho-almond pastry','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',26.60000,'99D80D24-13C4-4C85-A7EB-67A29D154490','AC73D06F-997C-44AB-9712-4E2CD8049357',0.00000,0,0.00,0.00,DEFAULT,26) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('18294EA9-8CEA-4D5C-84B6-A67A4C874EEF',7004,'Pasta Salad','Plate','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',40.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('E0258DDF-0525-4E22-9BD7-A7443A2C2ADC',100020,'white forest cake 500gm','Pack','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','3D1413EE-D3EA-412F-B762-BAE37BD503B6',133.33000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',33.67000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('A79FAC5A-EE9F-41A8-838A-A755882B16DC',25013,'Gulab Jamun','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',140.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,2437) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('5D552D5B-1B53-4438-98A2-A78D9466E0F4',50135,'Feeki Phainee','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',120.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,256) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('A470790A-C9E2-46EF-80BF-A7E6F59DF050',50055,'Single Scoop','No.''s','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',30.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,66) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('36A41913-DC8E-4B7C-A740-A81952D42316',9958,'Paneer Begam Bahar','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',80.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,20) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('6B073199-85E9-414B-9E65-A882D444B2B6',12006,'Strawberry Triple Sundae','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',58.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,3) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('FD2EECB1-554A-4A52-B161-A8B04DE864BC',6250106,'Chenna Murki 400gm Pack','Piece','A331DC08-EAA5-4C87-8DE0-0F9CBA2558F7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',70.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,633) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('0E668032-34A7-4256-9F83-A93D2CD0BF50',25066,'Chota Kala Jamun','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',120.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,170) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('A2550210-D5F7-458E-8A41-AA04C76E8C9E',1000,'Honey almond pastry','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','75B28950-02AF-4939-87CE-C99653522B33','48E10C74-9508-44CB-9D7D-7B71ABDAA289',26.60000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,281) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('86A1447B-30EB-4BEE-A8D9-AAE888230A25',50068,'mesu pak khoya','Kg.','389A3E09-AC97-4C4B-BCE1-342D2CF991DB','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',170.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F4DCCCC4-5990-4B79-BE7E-AB216786A37F',4002,'Tomato & Cheese Grilled Sandwich','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,70) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('269E4258-D3CF-4958-92CB-AC5D66506A20',6006,'Fresh Coleslaw SW','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',15.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,904) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('6BD86367-7662-4578-8AB1-ACD354896007',9612,'Strawberry Pastry (12)','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',19.55556,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('3C6EAA8E-E6E3-40F6-8AB5-ACEF53373205',6250109,'Khoya Kaju Mix','Kg.','A331DC08-EAA5-4C87-8DE0-0F9CBA2558F7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',1.00000,NULL,'3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B08EBD44-5E25-40DF-8AE4-ACF32D600F2B',21108,'Bengali Special Pulao','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',80.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,27) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('3EA36E68-F941-4046-B6ED-AD1893E72722',9010,'Aquafina Mineral Water','Bottle','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',11.55556,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,239) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('5457C050-4C0D-4562-B3BA-AE56D18D1214',10009,'Orange Glow Ice Cream Soda','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',35.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F03F2EFB-0F8C-468C-9225-AE6AC381D5D8',9221,'Vanilla Double Sundae','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',50.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('A69F9F4C-3421-45E5-B6FB-AE74D337FFE9',12004,'Pineapple Triple Sundae','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',58.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,3) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('ADC19F2D-2475-4AA5-BE29-AED626B229BA',100013,'Til Chikki','Kg.','389A3E09-AC97-4C4B-BCE1-342D2CF991DB','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',300.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,15) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('2A5C121E-136C-47B0-9B46-AF2383DFF407',84,'Misc. Sweet-140','Kg.','389A3E09-AC97-4C4B-BCE1-342D2CF991DB','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',140.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,41) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('44B8E24E-811F-4506-9E4F-AF6233DE5AD2',72,'Single Chana Kulcha','Piece','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',15.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('183EB4E0-FFFA-44D1-BB21-AFD3F9424748',9558,'Palak Paneer Kilo','Kg.','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',165.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('79CCE18D-5F59-4DD2-BD26-AFFED1565801',25002,'Mal Pua','Piece','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',12.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,341) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('EB2D1A09-C807-4855-924A-B0FB9F6552C5',27034,'Kaju Dil','Kg.','80EC988A-448E-4F81-B753-1B70FF8B233C','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',350.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,44) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('788EC943-4057-473C-AE60-B142E536D988',21010,'Special Thali','Piece','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',68.93000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('6BEA7CF0-C0DA-47E1-BCDF-B1BB25F56543',15007,'Paneer Dosa South Indian','Piece','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,75) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('2B8DBD47-E8C1-48B7-B0CC-B1EBC467146E',9557,'PTBM Kilo','Kg.','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',170.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('56F7ED44-1FBA-4E35-B99B-B1F8C8479969',26004,'Kaju Kesar Roll','Kg.','80EC988A-448E-4F81-B753-1B70FF8B233C','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',360.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,18) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B4757713-7FF2-4DA9-B677-B232A37D7230',50004,'navratra tikki','Piece','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',24.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,21) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('ABDAD27F-07C4-4F8E-8AF0-B254F8C003A9',9220,'Mango Shake','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,5) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('248B8BDB-5340-4656-B846-B278F2EE1AAA',1003,'Minchow Soup','Piece','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,146) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('A52B8BEB-C788-4AD8-A570-B2827B8285EA',5005,'honey almond cake','Kg.','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',293.33000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,10) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C5A31C19-AAA2-4D2F-B069-B2AE79E05657',9050,'Kajra Bahaar','Kg.','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',140.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('3ACF8B40-D4EE-4035-8180-B2E45AE558AF',25001,'Rasgulla','Piece','F76B54C6-21CE-450F-AC73-E1A3A43DAB43','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',8.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,6311) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B6BCEDE2-1BDC-44CC-8723-B3306CC3EE23',12003,'Pineapple Double Sundae','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',50.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,6) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('A401F601-CEA6-4444-A47A-B372C6FB4D8A',14004,'Dal Kachauri with aloo (2 Pcs)','Piece','381765CB-F018-455A-985D-D5EFB1ED1536','CF0285D9-9FE6-4A3B-A6D9-CBBEA5ED228F','48E10C74-9508-44CB-9D7D-7B71ABDAA289',20.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,27) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('220AE38C-2808-4432-B28F-B441E1F14188',9956,'Veg. Thopa','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',25.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('3FAF019E-EB3C-4B5B-82E5-B45D5C457029',50041,'apple pie','Kg.','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',180.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('4760030C-9E73-4B08-9568-B46012CB6B02',62,'Paneer Jalbarezi','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',55.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('0B47C327-489D-4321-AE18-B54854735A76',50032,'Extra Kulcha','Piece','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',11.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,16) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('AAB1C493-CD55-4FE8-BDAF-B55BE0C2FAB1',15001,'Upma South Indian','Piece','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',25.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('27519774-10D7-45A1-AAFC-B56082CA770C',50020,'Plain Curd','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',25.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,63) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('3A069D91-3237-4427-9F04-B56721285559',9007,'Strawberry Ice Cream Shake','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,21) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C4C1F801-68C0-4AB7-BEB7-B58D3F08F955',7006,'Waldorf Salad','Plate','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',40.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('70818CDD-9EE3-4D33-869E-B5EE2F18E864',50061,'Rum Ball','No.''s','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',13.33000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,38) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('2B5C6E9A-9FA3-4D33-9193-B6331CD67CE4',50066,'Besan Burfi','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',180.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,435) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('47C05513-BF4C-46A1-941D-B669C8D5158A',25089,'Patty','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',7.11000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,383) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('716F95D3-92E4-4829-B35E-B6B4F410A2FF',629121,'Gajjak Pista','Kg.','389A3E09-AC97-4C4B-BCE1-342D2CF991DB','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',200.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,5) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('957E2AF8-9A25-47A0-9994-B6B69202DD51',27004,'Chand Bahar','Piece','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',150.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('33A457A9-37E2-4053-986E-B6C426D279EA',6250079,'Tomato Surprise Foot Long6250079','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('A8877B16-3999-4077-BB68-B6E8DD3A00EC',6001,'Pasta in Red Sauce','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',70.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,68) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('8058B99A-A486-496B-A7A3-B727656EB875',9106,'Boondi Ladoo','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',100.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,369) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('7DB4B287-E033-49E7-A3FC-B7B1BAFC54F4',512,'Badam Kali','Kg.','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',150.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('A29B6DD5-EB92-4867-9D8A-B7B3861D0AEA',18014,'Paneer Tikka','Piece','3769C9D3-C194-438D-AB18-2A665D5DB052','C8C87922-5982-4731-AB9A-352D21F19EDA','48E10C74-9508-44CB-9D7D-7B71ABDAA289',70.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,141) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F00F5028-D5AA-4BA2-BE31-B7BD2BDFB110',21104,'Jeera Aloo','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',55.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,95) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('20CF2AB0-295D-4530-8396-B7EB586F6868',5012,'12" Corn Feast','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',170.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,14) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C996A171-5482-4AAA-8D3F-B7FCE86D4E97',25,'strawberry pastry','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',19.56000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('D0B274C4-BE86-4475-9C46-B87333FF698A',25146,'Bengali Spl. Noodles','Plate','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,35) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('3EEE6923-E47C-440C-906E-B8865C19D3D2',50053,'pastry50053','No.''s','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',1.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,62) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('7CFC8F8E-1F7F-4C5C-84F8-B8953F550C40',6002,'Pasta in White Sauce','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',70.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,51) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('D209AFA2-E3EC-4854-BAA5-B8B1D4FC1378',1002,'Hot & Sour Soup','Cms','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,45) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('9222CE9F-B390-4789-BB1E-B8C4F9DF74B1',1004,'Sweet Corn Soup','Plate','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,88) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('ADF912A1-A1FC-40EA-AC56-B8EB94C98FE5',25040,'Green Nariyal Burfi','Kg.','F76B54C6-21CE-450F-AC73-E1A3A43DAB43','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',150.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('E1D5AF08-FDA2-4A3C-8B0B-B922E026E8BC',5038,'Garlic Bread with Cheese','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',55.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,64) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('4363B126-60C5-40E6-82DC-BA7F2AC9DA51',10003,'Pineapple Ice Cream Soda','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',40.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,5) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('05C4C239-6F63-42FE-B2AC-BADDC4E95909',100000,'Mithi Mathi','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',89.11000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,564) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('CB5DF6C4-50BB-4BFA-97FF-BAE05498E92A',53,'Dal Kabila','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',60.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,413) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('FB90B2D7-52EE-485B-BB99-BB4329570B6B',6250085,'Ghee Roast Dosa6250085','Plate','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',55.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('2C17007E-1AE4-42D2-B82C-BB775CD7D6B0',1006,'Vegetable Soup','Piece','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,38) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('E356C2BE-EB85-4DE4-8462-BC2CAF493FBF',6250070,'Palak corn','Kg.','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',170.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('9E8CE599-FD52-4A63-AE2B-BC4456662186',995,'Aloo Ponda','Plate','381765CB-F018-455A-985D-D5EFB1ED1536','CF0285D9-9FE6-4A3B-A6D9-CBBEA5ED228F','48E10C74-9508-44CB-9D7D-7B71ABDAA289',6.22000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,38) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('8B4F7C0D-EB2F-4E21-925F-BCDC349E8C25',80,'Indian','Piece','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',1.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('CA6FEAC6-53B3-4668-B51A-BD196C77AA69',50072,'Dalda Ladoo','Kg.','389A3E09-AC97-4C4B-BCE1-342D2CF991DB','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',70.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B4573BBC-0596-4889-8CBA-BD6D73818C23',69,'Single Tikki','Piece','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',14.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,5) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('33DF935C-AC7C-407D-95A2-BD7FF8EBE7A6',50089,'Petha Galori','Kg.','F76B54C6-21CE-450F-AC73-E1A3A43DAB43','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',150.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,739) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('44D976F9-4020-4233-89EC-BDB25CA8D1E2',50045,'Kaju Badam Mixture','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',160.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('16A3C1E7-9E61-41D5-ACA2-BDC6F782BB98',508,'Rs. 09','Piece','4973B4EF-0506-4A44-8BC4-FA422334B041','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',9.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('64D7FAEA-4451-40F4-B1BC-BDE8587A5F0E',50141,'Navratra Pakoda','Kg.','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',88.89000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,2) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('7C2D9F6F-1D99-4970-9684-BDFF6FDC60F7',9505,'Strawberry Cake','Kg.','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',249.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,12) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('084B90AC-67EF-4077-93FC-BE30220F5830',6250063,'bisleri','Bottle','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',17.80000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,16) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('7E9473D3-F239-422E-95BC-BE4E984812BD',25028,'Shahi Pinni','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',200.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,93) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('EB786559-DE8C-4ACB-BF70-BE7975532C82',100009,'Khasta Gajjak','Bottle','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',150.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,6) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('E81EB8F1-11A4-4047-ADE4-BE8B4758E3E7',9855,'Pan Petha','Kg.','F76B54C6-21CE-450F-AC73-E1A3A43DAB43','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',100.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('1A83DCAF-882E-4D16-8E65-BEBCB605622E',26014,'Anjeer Burfi','Kg.','80EC988A-448E-4F81-B753-1B70FF8B233C','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',410.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,101) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('5DAF2024-A8B9-451E-917B-BEBE44620199',6250057,'Butter Paneer','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',72.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('808FE189-8CAF-424C-89DE-BF2AF7EEBFF4',50107,'Fresh Lime Water','Bottle','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',40.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,9) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('69EAF82F-B8C1-4CB8-B66C-BF990DE1899E',9601,'Honey Bee Biscuits','Kg.','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',150.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('28D8537F-2569-4774-B030-BFCBE9D6E096',26003,'Kaju Gunjia','Kg.','80EC988A-448E-4F81-B753-1B70FF8B233C','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',360.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,47) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('FB8DA5D4-676F-4D12-9858-C05F409813FF',5019,'7" Shezwan Vegetable Pizzas','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',85.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,5) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('9BDC84B6-A21F-46D3-86E7-C097D27C8676',26009,'Kaju Mango','Kg.','80EC988A-448E-4F81-B753-1B70FF8B233C','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',350.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,7) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('30C0FD41-4E47-4F8F-A5E2-C09FB4FE1543',9002,'Butter Scotch Ice Cream Shake','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',50.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,12) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('060B9635-AEB9-4009-A241-C0A1B6C829BF',50052,'club sandwich50052','No.''s','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',50.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,10) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('349F7280-B8B5-498C-8B69-C0B453EEB57E',11000,'Blue Berry Cake','Kg.','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',222.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('BC36C061-5663-44A4-8465-C0E11D1DD76C',506,'Rs. 07','Piece','4973B4EF-0506-4A44-8BC4-FA422334B041','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',7.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('76DC8F63-B971-4D7B-B395-C0ECDD217022',25082,'Sandesh','Piece','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',10.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('8D1464C8-09B4-4912-89BC-C10CFFA21BF1',35,'kitty1','Pack','A0D44EED-39C2-4030-9030-5C6F928D3D89','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',140.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,9) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('6FEC6AE7-F9F6-4E76-B4B1-C17013363FDE',50132,'aloo wonda','No.''s','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',8.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,3) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F9CAFE58-5B75-4C87-BBDA-C1CA72B38F5A',25026,'Besan Tikki','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',120.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('D4A0BC28-E52A-49DD-99F4-C22F29BAEA63',6250067,'Mix pakora','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',90.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,124) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('8564FB28-B454-44D3-A69B-C247819EA258',50064,'holi desi ghee special','No.''s','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',35.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('771B8A62-FF21-441D-936A-C279B552AE30',14023,'Dilli ki Chat','Plate','381765CB-F018-455A-985D-D5EFB1ED1536','CF0285D9-9FE6-4A3B-A6D9-CBBEA5ED228F','48E10C74-9508-44CB-9D7D-7B71ABDAA289',35.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,232) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('A2E052B6-CB7C-4A55-B15D-C2F07CAB85ED',11003,'Lime n lemon Granita','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',25.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('D6C3532B-7C2C-4432-83CB-C32697751D40',10002,'Lime Ice Ice Cream Soda','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',40.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,2) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('2DBE6B04-DFFF-4971-B3B4-C37D4D82CE32',50113,'Plain Cheese Foot Long50113','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',50.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('781FFE77-F8C5-45A6-8A8C-C3A20CC7A9FF',21006,'Paneer Lababdar','Piece','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',80.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,195) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('E09B9556-867C-4A3F-A1C9-C3BECC14AEB8',9026,'Bhujia','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',84.44444,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,21) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('2E6290DE-C97D-432A-8575-C3C8589CFE75',14002,'Aloo Matar','Piece','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',20.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('5FAB3E10-6C49-4DD5-921F-C4FC92A76014',18001,'Tandoori Roti','Piece','3769C9D3-C194-438D-AB18-2A665D5DB052','C8C87922-5982-4731-AB9A-352D21F19EDA','48E10C74-9508-44CB-9D7D-7B71ABDAA289',7.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,2365) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B40166F7-F6EA-4914-85DA-C553143E8424',25090,'Square Biscuits','Kg.','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',71.11111,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,3) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C98549EC-E223-4A91-B6F5-C596ACB14448',20003,'Unlimited North Indian Meal','Piece','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',110.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('3EE223D0-AB70-499D-95F6-C5FB418FEC2A',9210,'Real Orange 1l (1000ml)','Bottle','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',57.77778,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('AC4CA854-5FDB-49C7-92D5-C64438F234B7',18003,'Lachha Prantha','Piece','3769C9D3-C194-438D-AB18-2A665D5DB052','C8C87922-5982-4731-AB9A-352D21F19EDA','48E10C74-9508-44CB-9D7D-7B71ABDAA289',12.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','AC73D06F-997C-44AB-9712-4E2CD8049357',0.00000,0,0.00,0.00,DEFAULT,652) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F29805DE-1469-42AC-AD88-C66F869FAF1A',6250100,'Veg.Momo','Plate','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',40.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B311949A-47A1-4BF7-8D9E-C6760C418934',9016,'Dates & Cashewnut Cake','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',133.33333,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('84395525-D756-435A-A7F0-C6CA7D91284D',10004,'Strawberry Ice Cream Soda','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',40.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('CDE8D480-5B93-4C34-BBE8-C77BE57B3E92',5555,'cho chip cake','Kg.','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',284.55000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,425) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C352DF4F-EDAC-4E65-9ADB-C77D9CEE1D2D',82,'Misc. Sweet-160','Kg.','389A3E09-AC97-4C4B-BCE1-342D2CF991DB','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',170.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,89) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('00210062-8325-4C52-81AE-C77FC3E48857',9954,'Chilli Garlic Naan','Plate','3769C9D3-C194-438D-AB18-2A665D5DB052','C8C87922-5982-4731-AB9A-352D21F19EDA','48E10C74-9508-44CB-9D7D-7B71ABDAA289',30.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,42) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('4B727616-13AC-45CA-9289-C7F142EF89AF',57,'Buffet Dinner (90)','Plate','4973B4EF-0506-4A44-8BC4-FA422334B041','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',90.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('7532F562-9705-4658-A4D7-C82AB589EC11',90,'Panjiree Ladoo','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',200.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,713) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('A1638788-24A5-46E1-A091-C86AE2DBE03C',5035,'10" Tandoori Paneer Pizza','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',155.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,17) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('4223D018-A361-4D3C-91EE-C87CA48C34DD',6250053,'Club Sandwich6250053','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',50.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,2) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('1185B7AF-0EF1-4D73-AD2A-C88805EECBCA',25023,'Besan Dryfruit Ladoo','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',200.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,527) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('71C30C85-7BE0-421A-AFEB-C8EB0C035A47',36,'kitty','No.''s','A0D44EED-39C2-4030-9030-5C6F928D3D89','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',130.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,5) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('3277CC2C-5A64-47F8-A713-C8FDEFDFAAF3',12005,'Strawberry Double Sundae','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',50.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,19) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C815B71F-F057-4C6E-ABC2-C938E05554D9',10007,'Black Current Ice Cream Soda','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',40.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B1807E00-ABAC-4870-B037-C93C3E3D83FB',6250055,'Mocktails','Bottle','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('CE849DE6-2AC4-4BB8-B71A-C99B0F7863B7',9093,'Bada Ladoo (Piece)','Piece','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',50.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('E51ECA9E-F28C-45D5-95E1-C9CF26FA3A1C',15005,'Plain Dosa South Indian','Piece','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',40.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,105) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('9603C0E2-21C9-4327-834F-CA447B35AA6F',25038,'Nariyal Burfi25038','Kg.','F76B54C6-21CE-450F-AC73-E1A3A43DAB43','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',150.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,16) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B91DE8A3-B7B7-4FBC-B300-CA517ECB5F07',9029,'Shahi Mixture','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',177.77778,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('70BD223D-D555-4753-8043-CAEDC3544F4C',11005,'Strawberry Granita','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',25.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('13E4D01F-FEFE-4EF7-A7B8-CAFB291E218F',12008,'Hot Butter Scotch Triple Sundae','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',70.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('585B833E-7E15-4C7E-8E0C-CB0DEA90FAE0',23020,'Lemon Tart','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',17.77778,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('5B2E7B4B-7667-4CEC-880B-CBAF6AA9D6A1',6250096,'desi ghee chana bhatura','Plate','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,42) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('7E54A0B3-764A-4586-BA9C-CC1E9A2751C6',10,'dry frouit cake','Kg.','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',249.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,30) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('CE041CDF-A06E-4030-9A72-CC42E713C8EE',50048,'gur parva spl desi ghee','No.''s','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',35.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('1A149D92-1400-439E-B643-CCA36C7AEE45',6250091,'White Forest Cake','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',249.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,77) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('43BFB778-B209-4754-B54D-CCB67FCD7C1F',50139,'pastry50139','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',13.33000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,102) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('A9C990E1-9A51-473E-9BA8-CCB7CBBE08BD',25260,'Onion Masal Dosa','Plate','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,4) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C76944D8-BCE2-4794-B994-CCBA0DD34874',16011,'Vegetable Spring Roll Chinese','Piece','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',60.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,303) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('EA214860-AE9C-46D1-BE0D-CCE82A2C7652',9953,'Kashmiri Naan','Plate','3769C9D3-C194-438D-AB18-2A665D5DB052','C8C87922-5982-4731-AB9A-352D21F19EDA','48E10C74-9508-44CB-9D7D-7B71ABDAA289',30.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,72) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('92A96EBF-0E8F-42B6-A775-CD01D2279F84',50065,'ice cream','Bottle','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','AC73D06F-997C-44AB-9712-4E2CD8049357',0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('723EB176-68DF-4742-BC2D-CD023A108629',999,'Punjabi Puri Chana with Lassi','Plate','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',40.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('E3C2E01A-5CA1-4D42-BC9C-CD75CB8ADADA',50049,'Dry Petha','Kg.','F76B54C6-21CE-450F-AC73-E1A3A43DAB43','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',80.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,114) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('3F8C1434-8CB8-4A18-8C7E-CD8CD1E740B8',100002,'Dry Fruit Box','Pack','A0D44EED-39C2-4030-9030-5C6F928D3D89','092A7308-8A30-49C4-B7C4-C3BADFC1659C','3D1413EE-D3EA-412F-B762-BAE37BD503B6',1.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,20) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('25DA910C-68C4-4B33-8920-CD9683BF2FBA',59,'Shagan Panjiri Ladoo','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',200.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,37) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('DAD5A9DA-2046-4666-AE92-CDA9C7F2C2BD',94,'Amritsari Kulcha with Chana','No.''s','3769C9D3-C194-438D-AB18-2A665D5DB052','C8C87922-5982-4731-AB9A-352D21F19EDA','48E10C74-9508-44CB-9D7D-7B71ABDAA289',50.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,169) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('9B516FEE-19D9-4BD8-985C-CDC538393A0F',100,'Cold Drink 2.0L','Bottle','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',48.88889,'99D80D24-13C4-4C85-A7EB-67A29D154490','AC73D06F-997C-44AB-9712-4E2CD8049357',0.00000,0,0.00,0.00,DEFAULT,1161) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('7492EBEF-DEA9-4181-8CA9-CE611D963703',16012,'Golden Fried Paneer Chinese','Piece','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',55.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('8AEEBA79-7968-4A2B-982F-CE787C7C1EE2',25029,'Khoya Burfi','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',180.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,2) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('D4A07022-F54B-4316-8CED-CF2BCB4FC057',9070,'Kulfi Stick','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',8.89000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,3) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('3DCBBE25-822D-4E2C-A8D2-CF47B86C415D',9036,'Chocolate Italian Balls','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',21.33333,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('427A80D2-0D8C-4DFF-8537-CF8C8F9DE963',7002,'Green Salad Healthy Choice','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',35.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,208) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('11D5074A-2205-442C-AF62-CF90698B6DAF',629512,'Paneer S','Kg.','389A3E09-AC97-4C4B-BCE1-342D2CF991DB','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',90.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,10) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('7E39D460-071E-4DF3-B3B3-CFBD0193DBF3',4001,'Grilled Cheese Sandwich','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',40.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,231) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('6616CB54-D328-4475-A6B7-CFCABF6C9B0C',5020,'10" Shezwan Vegetable Pizzas','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',135.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,3) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('630C8C4F-D28D-4EFF-8AC8-D018695C093B',50028,'Pheeki Pheni','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',120.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,310) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C9DB9441-4F49-4F95-8CA7-D03738A800CC',25042,'Son Papadi','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',180.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,194) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('16CBD4A4-69B0-4E9F-A1F3-D0940C335EA7',14007,'Papri Chat','Piece','381765CB-F018-455A-985D-D5EFB1ED1536','CF0285D9-9FE6-4A3B-A6D9-CBBEA5ED228F','48E10C74-9508-44CB-9D7D-7B71ABDAA289',30.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,2686) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('867A140F-30E5-433B-B399-D0AA81ACD4A9',20,'Fruit Cake dry','Kg.','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',133.33333,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('77AB0D40-4693-4878-B65A-D0B8E73F93ED',25048,'Plain Kalakand','Kg.','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',190.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,1379) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('060C19BB-27DB-4BFA-9E3C-D0DAC7300F22',25009,'Chandan Malai','Kg.','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',130.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('DAC81C10-A5D7-4EE5-9AFD-D141DC555F0E',23030,'Puddings','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',15.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,155) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F5EB8AF8-3BB8-4647-B982-D1480001C453',6250113,'Butter Scotch Cake','Kg.','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',240.00000,NULL,'3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,215) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('9E31FF2A-2388-4977-B2E5-D2395CB3B645',50108,'Orange Juice','Bottle','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',40.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,19) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('5345672C-04E1-4794-B5C8-D29800991B7A',9502,'Plum Pudding Piece','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',8.88889,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('8B3E3F83-E227-438A-9011-D2B78FC14252',25049,'Kesar Kalakand','Kg.','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',150.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('A6661BDF-398D-47B9-8CB4-D2D07D922DAD',15004,'Sambhar Vada (2 Pcs)','Piece','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',40.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,189) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('4133C1E0-530D-4D3A-8E1C-D2DA5DD84AB0',9038,'Mattar Kachauri by Piece','Piece','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',4.44000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('A2E374C9-09C2-4C86-8A80-D348EBAB5C53',25019,'Petha','Kg.','F76B54C6-21CE-450F-AC73-E1A3A43DAB43','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',60.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('5E80EAAD-02D1-4090-8D50-D34D4CCB37E7',6250060,'Gulab Jamun Phool','Plate','389A3E09-AC97-4C4B-BCE1-342D2CF991DB','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,2) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('D9EE7672-0FF6-477A-A483-D36606B494EE',50002,'Real Juice 1L (75)','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',66.67000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,101) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('19E3A2EB-310C-4FE5-AB0B-D36B0821FEEC',5028,'7" Paneer Chilli Pizzas','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',105.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,9) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('20B40626-107A-4D59-8D2F-D37B626FE27A',9215,'Creamy Hot Coffee','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',35.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F36E9C3B-2937-46B3-9A23-D3B1AA08E0BC',9561,'Kadhi Chawal','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',35.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('4F6077CF-8FDB-4121-89EA-D3BF9DC4C158',12001,'All American Banana Split Double','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',60.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('51B06145-F4A9-46A4-BEB1-D454C89383AC',6225057,'Plain Ladoo','Kg.','389A3E09-AC97-4C4B-BCE1-342D2CF991DB','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',100.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('8E8F4A5E-F96D-45B5-8CD7-D4960327A6B2',6250078,'Mushroom Delieght Foot Long6250078','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('6C8BB18F-9DDA-4A44-BF7E-D583E4051BC4',50058,'long lata','No.''s','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',180.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','AC73D06F-997C-44AB-9712-4E2CD8049357',0.00000,0,0.00,0.00,DEFAULT,13) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('88CDE3B2-F98F-4795-AB23-D5A00ECE7566',25014,'Chanderkala','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',180.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','AC73D06F-997C-44AB-9712-4E2CD8049357',0.00000,0,0.00,0.00,DEFAULT,13) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F94641E4-5FB6-48DF-AEC7-D5B099B201B2',27,'Pineapple Cake27','Kg.','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',186.60000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,21) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('CA550789-2D17-487C-AFA0-D5B1FBB752F0',14010,'Dahi Bhalla','Piece','381765CB-F018-455A-985D-D5EFB1ED1536','CF0285D9-9FE6-4A3B-A6D9-CBBEA5ED228F','48E10C74-9508-44CB-9D7D-7B71ABDAA289',35.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,2036) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('4BD780BD-129E-407D-80DA-D5BD5BD75F4F',27039,'Fried/Nameen/Masala Kaju','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','AC73D06F-997C-44AB-9712-4E2CD8049357',552.50000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,712) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('46B63025-2BDE-4CC8-93D4-D62E654C2413',9103,'Pinni','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',180.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,526) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C15BAEDF-78A7-4F86-9CE4-D64A2A114AC7',17014,'Plain Rice Indian','Kg.','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',50.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,220) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('4B11B963-4B02-4E88-A916-D66F40AB26BF',27019,'Pista Sandesh','Kg.','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',140.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('ECF5F552-594F-4AAB-A4DA-D6A3662FCA2A',6250058,'Chocolate double Sundae6250058','Plate','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('951DF85D-8CC0-4FDF-8C4B-D7218B19DC54',25005,'Sugarfree Rasmalai','Piece','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',14.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1261) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F0622923-C866-451B-A5C0-D787B9BF0772',9091,'Plain Peda','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',160.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,560) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('02B0953B-7D8D-4429-AC11-D79C834B8F8B',6216,'Khoya Ghewar','Kg.','389A3E09-AC97-4C4B-BCE1-342D2CF991DB','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',160.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('FEED129B-76D8-4A4E-88D0-D7B281F7FF04',22009,'Rabri Faluda','Piece','F76B54C6-21CE-450F-AC73-E1A3A43DAB43','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',30.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,120) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C38C389A-20ED-4FFE-A309-D87DC6FDD3FC',501,'Cash Charge','Piece','4973B4EF-0506-4A44-8BC4-FA422334B041','092A7308-8A30-49C4-B7C4-C3BADFC1659C','3D1413EE-D3EA-412F-B762-BAE37BD503B6',1.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,973) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('09A219B4-73F0-4EDA-8DF1-D978342C40FB',50127,'Fresh Onion Salad','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',25.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,19) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('1114E895-AAAE-4A28-A953-D9CE19DB029A',26,'Pepsi Cafe Chino','Bottle','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',11.56000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C9602EB1-89C4-4F19-A84F-D9F5635D5614',9607,'Evergreen Burfi','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',150.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('1E078426-509B-4FD2-9992-DA1439FFA41A',50091,'Extra Bhaji','Plate','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',18.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('41EF872F-ED5B-4B0F-8346-DA50C73DDE3F',16001,'Vegetable Noodles Chinese','Piece','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',55.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,933) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('09003343-B183-4E0E-9795-DA6042E6CC0D',9803,'Aloo Lachha','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',106.67000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,17) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('77DBF8B2-FDE6-4634-A01C-DA918E4F8650',9111,'Desi Ghee Boondi','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',80.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,32) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('526BA840-64A4-49BE-B357-DABBB29BE511',6250116,'Cho Nut Cake','Kg.','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',257.70000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,132) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('76EEB002-C2FC-40DF-9E86-DAFABA179AC1',6685,'Sunday Desi Ghee Specials','Plate','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',40.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('3E11D943-C24E-4DB5-B347-DB034294A098',6250114,'Cho Alomond Pastry','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',26.60000,NULL,'3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,101) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('1C5AFDDC-7023-474E-A9A0-DB11A894EAEF',78,'South Indian','Piece','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',1.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('D51955A6-AD1C-4FE9-B6E1-DB39CD6D1F0E',25145,'Crispy Menchurian New Style','Plate','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',60.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,48) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('27165AB3-DA3A-4FAB-8C21-DB45695E2EA5',50102,'Sorbet','Bottle','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',22.22000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('2B02318B-AA6A-4E8C-9AFB-DB89528FF3A3',19003,'Hyderabadi Biryani','Piece','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',75.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,120) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('5F49C7C1-F63D-4812-BB1C-DBD2623AEE06',14014,'Raj Kachauri','Piece','381765CB-F018-455A-985D-D5EFB1ED1536','CF0285D9-9FE6-4A3B-A6D9-CBBEA5ED228F','48E10C74-9508-44CB-9D7D-7B71ABDAA289',35.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1393) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('5F4D050F-0934-4657-8D01-DC1CC90E42BB',27003,'Cham-Cham','Kg.','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',170.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,855) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('818A57E3-E6C5-4405-9C67-DD2D70E940F4',5004,'7" Bell Pepper Magic','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',85.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,5) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('1A1E3F74-E4BB-43ED-9C7C-DE5163D3FD1A',25016,'Balushai','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',150.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,665) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('45C02637-18E2-482B-8BA0-DE6761BC6BB1',5011,'marbel crunch','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',26.60000,'99D80D24-13C4-4C85-A7EB-67A29D154490','AC73D06F-997C-44AB-9712-4E2CD8049357',0.00000,0,0.00,0.00,DEFAULT,38) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('84032455-F451-40FD-981A-DE976E58EB1B',25083,'Pista Bhoj','Kg.','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',150.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,4) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('73DF5D57-B782-4FAE-B467-DEFC15186C94',50047,'chocolate','Piece','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','48E10C74-9508-44CB-9D7D-7B71ABDAA289',1.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,862) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('211FB73E-86D8-46D8-8F58-DF8A42BE9AAC',25050,'Gaund Pak','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',190.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,33) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('3344C963-A919-4905-A11F-DFB4F38ED023',9511,'Crease Puff','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',71.11000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('2C8B875E-2D46-4DA1-9C04-E014BBA5F9F8',9123,'Gur Rewri','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',160.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,68) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('08164BBE-C215-46E1-B23E-E0150B9E9622',9122,'Cheeni Rewri','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',160.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,7) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('4FB873D7-6576-49EF-B496-E04574F3F712',6250073,'Onion Salad6250073','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',20.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('E93FE64F-7D74-4A59-AC8F-E0FBE897C342',5034,'7" Tandoori Paneer Pizza','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',105.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,13) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('FF655B2C-C1FC-4E17-8DD4-E13A2E06F4EB',4005,'Cheesy Veggie Grilled Sandwich','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','AC73D06F-997C-44AB-9712-4E2CD8049357',0.00000,0,0.00,0.00,DEFAULT,40) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('825B4F64-091B-450E-BC6F-E1A442EA0A3E',8002,'Chocolic','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',29.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,2) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F9BC04FE-D9B6-4E4C-88CE-E1B001ED9C0F',6227026,'Ganthia','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',71.11111,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,2) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('70DDBE42-B669-4D02-924C-E1FECE81541E',14001,'Channa','Piece','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',15.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,81) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('1CE514D5-5E11-4DD0-8AA2-E24FA40322EB',27026,'Besan Ganthia','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',88.88889,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,76) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('5D68D855-CBF3-4D14-994A-E2C79CE9BC6E',25051,'Atta Panjiree','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',260.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,59) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('2D334123-8B3D-40EC-AE66-E2D838B09D3F',9508,'Cookie Piece','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',8.88889,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,9) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('DC674911-D53F-4E33-8F34-E319697A893D',88,'Wheat Bread','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',13.33333,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('240D267E-2DF3-456B-807E-E3345A18D37E',4004,'Submarine Sandwich','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',55.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('25DDB719-F79C-454F-A189-E3721D48559C',70,'Paneer Pakoda','Piece','381765CB-F018-455A-985D-D5EFB1ED1536','CF0285D9-9FE6-4A3B-A6D9-CBBEA5ED228F','48E10C74-9508-44CB-9D7D-7B71ABDAA289',7.11000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,603) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F262B2B5-76DB-4032-9E54-E39355233AEF',5037,'Toasted Garlic Bread with Butter Pizza','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,25) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('73F78CA3-67C3-4047-B0FA-E3CFDEC6E71F',6250077,'Plain Cheese Foot Long6250077','Plate','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',50.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B3243DF4-3D9E-458D-9622-E47AEB31F58F',23014,'Muffin','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',17.77778,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('8FC52136-70F4-4F8F-BFD4-E4B24338F39B',25017,'Imarti','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',150.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1309) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('89B3FE4A-30BE-425B-AD4B-E4EA11879393',21107,'Matar Pulao','Piece','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',70.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,33) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('63C4B7C0-3E7E-4360-818F-E54519F93B04',14017,'Paneer Dhokla by Weight','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',90.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,3) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('652C9E35-22A4-48C5-A5C4-E5456EB1CE64',16,'Malai Ghewar','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',220.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,673) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('2B51D5ED-68B0-459C-92F6-E602B89BAFA1',9509,'Royal Plum Cake','Kg.','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',177.77778,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('55A27A83-B027-4E00-9096-E686E1B7FFC1',21106,'Nargisi Kofta','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',80.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,61) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('0E254F05-E483-462D-8A9B-E6932BD453E1',9022,'Milk Wafer','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',21.33333,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C7306A0E-5320-46DF-A0F9-E6C03204EF46',9125,'Sabudana Mixture','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',71.11111,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,4) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('3DC3DC54-5062-4AB0-BF64-E6CE2DBCDF49',23011,'Chocolate Walnut Cake','Kg.','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',133.33333,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,4) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('00043B2C-A92C-49DC-A3A7-E6E81EC03AD3',507,'Rs. 08','Piece','4973B4EF-0506-4A44-8BC4-FA422334B041','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',8.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F8D33C90-3B26-4C0E-965F-E7145B7E2231',25054,'Samosa','Piece','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',5.30000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,9624) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('6A3EE23D-B2F6-4516-96A1-E74280104100',65,'Gajar Pak','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',180.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,287) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('730A3C24-3ABF-4C2B-9AF9-E7AD73DA39C5',50051,'Corn Cheese','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',72.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('2FF477BF-8D74-4236-B860-E7B7360587A8',9800,'Chana Dal Fried','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',71.11111,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('D3C5FF35-29FE-411E-ACDB-E7E207C36991',8004,'Vanilla Rainbow','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',29.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('3603DA42-3640-4CF7-BB27-E87A38E22DA0',25151,'Chinese Chopsuey','Plate','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',70.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,17) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('6FEF2BA6-B8EF-40CE-B9DE-E9837EF4BA94',9202,'Ice Cream Bars','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',13.33333,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,148) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('0E5C7470-0412-4D1E-B8C5-E9ECBA4D8C09',45,'mushroom quish','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',8.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('92D5DC81-87A5-45EC-858C-EA6B74B0BAFA',9012,'Paneer Pakora','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',124.44000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,4) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('BA1466B4-3633-4DC6-9DE8-EA8E8849312F',9510,'Millie Filly Pastry','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',21.33000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('BA13477F-CC54-4F6A-A568-EAA9C9DD5B13',6250110,'Ghee Kaju Mix','Kg.','A331DC08-EAA5-4C87-8DE0-0F9CBA2558F7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',1.00000,NULL,'3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,0) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('9E1095B1-985D-4AA5-8ABD-EB33C9DBD52A',92,'Pepsi','Bottle','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('CE2E3AAF-959E-4B5C-B475-EB400B7DD8AD',9031,'Meethi Matthi','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',88.80000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('4B1D9309-DDD3-422A-85B5-EB8B4CEBDC39',14005,'Dhokla per Plate','Plate','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',30.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1094) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('55764486-2463-4287-9999-ECA0B4ABB27B',4007,'Yoghurt Surprise','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('5901BCC5-4F19-4422-A645-ECFB3A9A7A75',21,'Paneer Bhurji','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',75.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,29) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('262E86DE-1BB8-4B07-874B-ED298907F995',17013,'Mix Veg Raita','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,339) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('A6FA1191-543A-4325-A257-ED42D0076DD7',6250076,'Onion Salad6250076','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',20.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('42D3A465-DB31-4C2C-BA63-ED56BCD1B2CA',9645,'Mix Pakoda','Kg.','381765CB-F018-455A-985D-D5EFB1ED1536','CF0285D9-9FE6-4A3B-A6D9-CBBEA5ED228F','48E10C74-9508-44CB-9D7D-7B71ABDAA289',120.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,62) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('85919972-CFDA-4820-BE9A-ED5AE3232FFB',26008,'Kaju Kalash','Kg.','80EC988A-448E-4F81-B753-1B70FF8B233C','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',380.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,75) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('AD98BDA8-5508-4510-881D-ED6D565EB41C',83,'Misc. Sweet-150','Kg.','389A3E09-AC97-4C4B-BCE1-342D2CF991DB','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',150.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,43) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('44638F23-4876-4119-AFC4-EE2EC10228E2',9559,'Mattar Paneer Kilo','Kg.','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',165.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,3) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('EEA3F8F3-155A-409F-B9A9-EE40A2C72F42',39,'sweet n sour','Plate','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',35.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('DD725028-9909-43CD-B9FF-EE5C513A84BD',5024,'12" Deluxe Margarita','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',160.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,16) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('A0FAC305-C1A8-42DB-B9E2-EEA6F6BE60F4',9230,'Cheese Chopsuey','Plate','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',70.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,3) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('3B6015C3-C1D6-40D3-B5E6-EEC0D043A593',18013,'Veg. Seek Kabab','Piece','3769C9D3-C194-438D-AB18-2A665D5DB052','C8C87922-5982-4731-AB9A-352D21F19EDA','48E10C74-9508-44CB-9D7D-7B71ABDAA289',60.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,82) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('1E455DEC-E691-48F6-AF0F-EF434C681897',50009,'chocolate platter','No.''s','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',1.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1204) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('2EFF7D96-37DF-4D30-BB88-EF58BC5C82BB',14006,'Gole Guppa (8 pcs)','Piece','381765CB-F018-455A-985D-D5EFB1ED1536','CF0285D9-9FE6-4A3B-A6D9-CBBEA5ED228F','48E10C74-9508-44CB-9D7D-7B71ABDAA289',24.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,4243) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('1D1C822B-CA80-49A5-9333-EF7CCFB08F79',9228,'Ghee Roast Masala Dosa','Plate','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',60.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,2) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('2EE83D40-6578-4E0A-A195-EFCD721B2631',21100,'Matar Paneer','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',75.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,78) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('8048AB15-F81A-4F09-8B5A-F06564CCA9DB',12012,'Brownie Double Sundae','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,15) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('1A1EAA7C-2AB9-4E77-BC4D-F10746014E78',50012,'Magaz Burfi','Kg.','80EC988A-448E-4F81-B753-1B70FF8B233C','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',220.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,60) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('3A8D2192-5D4C-44E9-8547-F13B468E52CC',9019,'Kaju Pista Roll','Kg.','80EC988A-448E-4F81-B753-1B70FF8B233C','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',360.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,49) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('8BEC678A-9986-49FE-8917-F1513849EDFF',9231,'Mushroom Soup','Plate','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,9) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('BCE08CEE-9789-4F57-96FB-F16A186A0FD7',18007,'Veg. Stuffed Naan','Piece','3769C9D3-C194-438D-AB18-2A665D5DB052','C8C87922-5982-4731-AB9A-352D21F19EDA','48E10C74-9508-44CB-9D7D-7B71ABDAA289',30.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,113) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('79F65B36-6028-4B58-80C3-F1866AFF6A43',23006,'Mud Pastry','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',24.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,170) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('2944BE4D-2EB0-47E4-9A15-F1979A9FB7F6',15011,'Rava Masala Dosa South','Piece','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',58.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,78) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('79A70092-F40F-4E96-9F6D-F198CD3869EA',25059,'Namkeen Mattar','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',88.81000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,346) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('7301371C-9E34-4468-96F1-F1BF5CD0839D',50081,'Chana Bhatura50081','No.''s','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',40.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('9E101304-8AD3-4E21-A733-F1DEAD105938',511,'Gajra Bahar','Kg.','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',140.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('CEE67046-8D27-459B-82A3-F20D9B42A092',6250054,'Soup 1x26250054','','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','3D1413EE-D3EA-412F-B762-BAE37BD503B6',10.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,7) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('5B675110-E262-4180-B3F9-F26FEDD9004F',41,'Kaju Dal Moath','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','AC73D06F-997C-44AB-9712-4E2CD8049357',115.38000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,26) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('9BBC3B43-BBBF-4BCB-9A5A-F29E3F0D9155',5039,'Chilli Cheese Garlic Bread','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',60.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,14) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('21F4CFCD-8F46-4C27-8174-F3415003519A',18011,'Aloo Kulcha','Piece','3769C9D3-C194-438D-AB18-2A665D5DB052','C8C87922-5982-4731-AB9A-352D21F19EDA','48E10C74-9508-44CB-9D7D-7B71ABDAA289',28.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('18AEFF85-3E07-4F23-AB34-F3B0ADF0F603',50086,'chana bhatura desi ghee','No.''s','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,135) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('6AA712B4-3369-44A9-B966-F3D4B5DA0840',26006,'Kaju Apple','Kg.','80EC988A-448E-4F81-B753-1B70FF8B233C','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',360.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,141) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('D3105863-FFBB-4AC7-8BCE-F3DA5B17E81F',2001,'Burger (Aloo Patty)','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',30.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,20) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('DD723EA0-8AB7-4C7F-A0C4-F3FCE3049A3B',25062,'Roasted Kaju25062','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','AC73D06F-997C-44AB-9712-4E2CD8049357',528.85000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,158) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C501D806-DC5B-4130-A7B5-F43CCC176A02',24,'Cheese Noodles','Plate','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',60.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,28) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('0C03DC07-CFA3-4E80-A83D-F46835A242C4',23009,'Chocolate Eclairs','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',21.33333,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('64E37237-A026-405B-9352-F5314A16235C',9551,'Dal Makhni Kilo','Kg.','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',125.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('07966EE1-EA52-4478-A3D3-F5A778ED55AE',50088,'Ice Cream Cone Rs. 20','Piece','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',17.78000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,16) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('FF35F16F-A80B-469C-A49A-F5ABCBB1CE97',9604,'Kesar Gunjia','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',180.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,126) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B9BF5977-9033-439A-A76F-F5C3AB74D15B',27029,'Chauras Matthi','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',88.81000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,44) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('A02E074E-236B-4AF9-9DCC-F63B8AD47CBB',9110,'Shahi Ladoo','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',180.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,1) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F69FD02B-30A8-4ADB-809B-F63F1DD9DECD',46,'Veg. Roll','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',8.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('64C86018-45F5-4F63-B8A1-F682A94DAF1D',629216,'Hot Plain Milk','Piece','389A3E09-AC97-4C4B-BCE1-342D2CF991DB','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',25.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('6FD82EC0-A64A-4431-B689-F69F8E81A46D',50100,'Chocolate Triple Sundae','Plate','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',70.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('436F55BA-99C5-428F-AC71-F6FC948E4A45',22008,'Kulfi Faluda','Piece','F76B54C6-21CE-450F-AC73-E1A3A43DAB43','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',30.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,267) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('961B66B1-951B-479E-805D-F76D98A06AB3',25076,'Kaju Litchi Burfi','Kg.','80EC988A-448E-4F81-B753-1B70FF8B233C','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',360.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,68) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('2BA0B5C1-4468-4934-A2EA-F7EFBBCA75C2',27010,'Pakiza','Kg.','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',170.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,285) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C0A83F2B-244C-455D-84BB-F8DA8E1F6B7B',50025,'Aloo Sabzi','Plate','3B6EB835-44B9-4C90-B058-E5CDE0CB1E2A','25ECCB39-7D75-49DE-8F47-87DC5D5326B9','48E10C74-9508-44CB-9D7D-7B71ABDAA289',15.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,20) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('75D4539A-0A32-40B1-A21B-F91088CC3A1D',21110,'Kachumbar Raita','Piece','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',45.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,12) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('907AF81A-736B-4665-9031-F91B3922BBF0',9126,'Mattar Kachauri by Weight','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',88.81000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('C1CE0372-1478-43D3-957B-F99E548ACD97',629031,'Palak Matthi','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',71.11111,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('4D624E8A-8CBF-4FCA-879F-F9AADDE209AC',9030,'Nav Rattan','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',88.88889,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,45) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('2D22FF48-3212-4A3B-9795-F9AB955E4B4C',25079,'Khoya Pista Burfi','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',180.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,813) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('4D9DC655-8AC0-47AB-9037-F9BA0AF164CD',9506,'Chocolate Truffle Cake','Kg.','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',249.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,530) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('0C687BC6-E0DC-4CE6-84AF-F9E0A1ED9601',25018,'Angoori Petha','Kg.','F76B54C6-21CE-450F-AC73-E1A3A43DAB43','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',110.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,1052) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('1E1BA955-0B17-43BB-98DC-FA033E3361E6',9229,'Onion Capsicum Uttapam','Plate','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',58.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,27) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('2CF40351-29EB-433F-BD86-FA5152D78322',9555,' Paneer pasanda','Plate','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',80.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,18) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('46B5B10F-22E7-4053-8A83-FA7FCA0007BF',4008,'Chef''s Spl. Sandwich','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,7) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('2F308BC9-3174-4EF2-81C5-FA9ACC2B6A9C',9500,'Bread Stick','Pack','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',8.88889,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('63A51304-CA41-4EA7-B856-FAB0482F1F9E',50117,'Chilli Paneer Foot Long50117','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',70.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('646245A6-D77C-4BCB-93D5-FAC8728A5EF0',18005,'Naan','Piece','3769C9D3-C194-438D-AB18-2A665D5DB052','C8C87922-5982-4731-AB9A-352D21F19EDA','48E10C74-9508-44CB-9D7D-7B71ABDAA289',15.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,443) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B5ADFD21-00F7-47DA-974F-FAD717F4CEB1',21003,'Veg. Stuff Naan with Gravy (Value Meal Deal)','Piece','3769C9D3-C194-438D-AB18-2A665D5DB052','C8C87922-5982-4731-AB9A-352D21F19EDA','48E10C74-9508-44CB-9D7D-7B71ABDAA289',42.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,32) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('51B8C36A-CCF0-4DFA-A033-FB396634A3CC',27027,'Roasted Kaju27027','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','AC73D06F-997C-44AB-9712-4E2CD8049357',480.77000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,5) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('1AEA4978-E65E-4168-A8D1-FB6B00F0CFD0',5040,'Corn Chilli Cheese Garlic Bread','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',65.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('5CA12FDC-E23D-4828-AD82-FB84DB4F352C',17007,'Palak Paneer Indian','Piece','5E6522AF-99B5-4F7B-B561-352380C53CF1','092A7308-8A30-49C4-B7C4-C3BADFC1659C','48E10C74-9508-44CB-9D7D-7B71ABDAA289',80.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,202) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('459C6F9C-7B8F-437D-8B82-FB9143507C7D',25084,'Kachha Gola Sandesh','Kg.','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',190.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','3D1413EE-D3EA-412F-B762-BAE37BD503B6',0.00000,0,0.00,0.00,DEFAULT,355) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('E69E5081-736C-4FF3-B9EE-FBBE2827AD26',22005,'Moong Dal Halwa','Piece','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',25.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,409) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('35BF46DC-757F-4E2F-B248-FBE4E5CECF4D',27018,'Mango Sandesh','Kg.','CC099265-97FF-45CA-80A6-F7BB189C18B7','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',140.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('DF9682E0-4E1C-41F0-B27B-FC856F3F61F8',50138,'pastry50138','Piece','A04BAFBD-01FD-4EC8-9858-7E9368383009','A072E791-082A-419D-8889-9387674A8297','48E10C74-9508-44CB-9D7D-7B71ABDAA289',10.66667,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,2) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('0CA3A65F-1C8C-40B6-A79A-FCD20321FA07',2005,'Sultan Berger','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',55.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,10) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('7C939DDA-7678-47D2-A0C8-FCDA8A1B2050',25015,'Jalebi','Kg.','B75B3C3A-4364-4B36-8DEA-C0C0247449B2','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',140.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,204) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F994DE88-B03D-489D-B203-FCDB9B65A850',26031,'Pineapple Khoya Burfi','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',130.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,500) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('F145A12C-4A04-4FC6-8531-FD3D25E6710C',6299,'Cold Drink6299','No.''s','AD0AD9D8-8E30-4986-8EEB-482DD446532A','F1837A92-C859-4459-A0C7-D7A1F6A24680','48E10C74-9508-44CB-9D7D-7B71ABDAA289',19.55000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,504) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('CD52BEF6-ED8B-498D-851C-FD72A4B5BCF1',16009,'Mushroom Chilli Dry','Piece','DAC3B270-FA83-4096-9C17-118755B6B9E7','88A234F5-65DA-4166-A171-0139EC7B9BA6','48E10C74-9508-44CB-9D7D-7B71ABDAA289',70.00000,'99D80D24-13C4-4C85-A7EB-67A29D154490','48E10C74-9508-44CB-9D7D-7B71ABDAA289',0.00000,0,0.00,0.00,DEFAULT,29) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('1F1B2DDA-BB37-4093-AE15-FE29E14B08FE',5030,'12" Paneer Chilli Pizzas','Piece','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',190.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,9) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('B34408BC-DF53-421C-A279-FEE2AAA06E48',25255,'Mysore Masala Dosa','Plate','A6446E4B-6472-4B79-967C-AA1DC1265205','ADFB70E9-D421-44DD-B1A8-D1024C776556','48E10C74-9508-44CB-9D7D-7B71ABDAA289',58.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,2) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('DC250358-ECD7-4B64-BD20-FEFEE0ACE558',6250056,'Russian salad6250056','Plate','A6D57F39-2988-4CFB-8564-118767E5E989','EB818456-09C5-4E20-BF4F-FB02812A8008','48E10C74-9508-44CB-9D7D-7B71ABDAA289',50.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,14) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('ED37DB5B-A803-4A21-B78C-FF5F30B8E744',14016,'Masala Dhokla by weight','Kg.','9A479BD4-1DC6-40CE-89B9-07D8E83D3DD7','82D65188-AC81-4355-92B2-762F2E519060','48E10C74-9508-44CB-9D7D-7B71ABDAA289',88.88000,'99D80D24-13C4-4C85-A7EB-67A29D154490','AC73D06F-997C-44AB-9712-4E2CD8049357',0.00000,0,0.00,0.00,DEFAULT,1421) +INSERT INTO [Products] ([ProductID],[Code],[Name],[Units],[ProductTypeID],[SaleLedgerID],[SaleTaxID],[SalePrice],[PurchaseLedgerID],[PurchaseTaxID],[PurchasePrice],[Discontinued],[MinimumLevel],[MaximumLevel],[timestamp],[SortOrder])VALUES('0AF39AE3-09EB-4853-90F9-FFC612B4B5B7',26030,'Kaju Khoya Burfi','Kg.','28846C15-6391-48D4-A50E-2A40BA8156C0','66497F17-8096-46B7-A45E-8851BA4EA780','3D1413EE-D3EA-412F-B762-BAE37BD503B6',170.00000,NULL,NULL,0.00000,0,0.00,0.00,DEFAULT,500) + +-- Inset Tax +INSERT INTO [Tax] ([TaxID],[Name],[Rate],[Type],[timestamp])VALUES('AC73D06F-997C-44AB-9712-4E2CD8049357','4% VAT',0.04000,'V',DEFAULT) +INSERT INTO [Tax] ([TaxID],[Name],[Rate],[Type],[timestamp])VALUES('48E10C74-9508-44CB-9D7D-7B71ABDAA289','12.5% VAT',0.12500,'V',DEFAULT) +INSERT INTO [Tax] ([TaxID],[Name],[Rate],[Type],[timestamp])VALUES('F7755AB3-9EFC-4278-BEE1-849E8FE37ABA','4% CST',0.04000,'C',DEFAULT) +INSERT INTO [Tax] ([TaxID],[Name],[Rate],[Type],[timestamp])VALUES('3D1413EE-D3EA-412F-B762-BAE37BD503B6','Tax Free',0.00000,'V',DEFAULT) + +-- Insert Waiters +INSERT INTO [Waiters] ([WaiterID],[Code],[Name],[timestamp])VALUES('D53F5638-E850-4221-9650-FB66B1C98795',1,'Waiter',DEFAULT) + +-- Inset Users +INSERT INTO [Users] ([UserID],[Name],[Password],[LockedOut],[Email],[Approved],[Question],[Answer],[Comment],[CreationDate],[LastLoginDate],[LastActivityDate],[LastPasswordChangedDate],[LastLockoutDate],[timestamp])VALUES('C8E3C9E3-4DAB-4387-A966-2C29F1D4CD22','Tarun','930bbe9744386d1202be4228aa63df23',0,'',1,'','','','May 8 2008 8:04:32:313PM',NULL,NULL,NULL,NULL,DEFAULT) +INSERT INTO [Users] ([UserID],[Name],[Password],[LockedOut],[Email],[Approved],[Question],[Answer],[Comment],[CreationDate],[LastLoginDate],[LastActivityDate],[LastPasswordChangedDate],[LastLockoutDate],[timestamp])VALUES('9285E98D-D976-4DC7-BB3F-D6184D388B5A','Admin','452ce6a7441c813e36f228a7d55f3eb1',0,NULL,1,NULL,NULL,NULL,'Mar 24 2008 4:46:14:763PM',NULL,NULL,NULL,NULL,DEFAULT) + +-- Insert Roles +INSERT INTO [Roles] ([Role],[Description],[timestamp])VALUES('Log/View','View the event Log',DEFAULT) +INSERT INTO [Roles] ([Role],[Description],[timestamp])VALUES('Master/Products','Allow user to access product form',DEFAULT) +INSERT INTO [Roles] ([Role],[Description],[timestamp])VALUES('Sales/ChangeRate','Allow to access check out form',DEFAULT) +INSERT INTO [Roles] ([Role],[Description],[timestamp])VALUES('Sales/Checkout','Allow to access check out form',DEFAULT) +INSERT INTO [Roles] ([Role],[Description],[timestamp])VALUES('Sales/EditBill','Allow to access check out form',DEFAULT) +INSERT INTO [Roles] ([Role],[Description],[timestamp])VALUES('Sales/EditKOT','Allow to change KOT',DEFAULT) +INSERT INTO [Roles] ([Role],[Description],[timestamp])VALUES('Sales/EditPrintedProduct','Allow user to edit a printed product',DEFAULT) +INSERT INTO [Roles] ([Role],[Description],[timestamp])VALUES('Sales/PrintBill','Allow to Print Bill',DEFAULT) +INSERT INTO [Roles] ([Role],[Description],[timestamp])VALUES('Sales/PrintKOT','Allow to Print KOT',DEFAULT) +INSERT INTO [Roles] ([Role],[Description],[timestamp])VALUES('Sales/SaleDetail','Allow user to check sale',DEFAULT) +INSERT INTO [Roles] ([Role],[Description],[timestamp])VALUES('Sales/SalesBill','Allow user to access salesbill',DEFAULT) +INSERT INTO [Roles] ([Role],[Description],[timestamp])VALUES('Sales/VoidPrintedBill','User can void a printed bill',DEFAULT) +INSERT INTO [Roles] ([Role],[Description],[timestamp])VALUES('Security/CreateUser','Allow user to create new users.',DEFAULT) +INSERT INTO [Roles] ([Role],[Description],[timestamp])VALUES('Security/ManageRoles','Allow user to create new users.',DEFAULT) +INSERT INTO [Roles] ([Role],[Description],[timestamp])VALUES('Waiter/Master', 'Add / Edit / Delete Waiters.',DEFAULT) + +-- Insert UserRoles +INSERT INTO [UserRoles] ([UserRoleID],[UserID],[Role],[timestamp])VALUES('F2EC9DE5-0751-4709-B1D8-CD3BCD0D8430','C8E3C9E3-4DAB-4387-A966-2C29F1D4CD22','Log/View',DEFAULT) +INSERT INTO [UserRoles] ([UserRoleID],[UserID],[Role],[timestamp])VALUES('D1876D1A-7985-46DB-B8C7-CCCA6DC9D238','C8E3C9E3-4DAB-4387-A966-2C29F1D4CD22','Master/Products',DEFAULT) +INSERT INTO [UserRoles] ([UserRoleID],[UserID],[Role],[timestamp])VALUES('F6876408-4CAC-4020-8A85-CB5463894654','C8E3C9E3-4DAB-4387-A966-2C29F1D4CD22','Sales/ChangeRate',DEFAULT) +INSERT INTO [UserRoles] ([UserRoleID],[UserID],[Role],[timestamp])VALUES('28EAEEEB-5EFF-42C1-AAFC-30E4824C1B89','C8E3C9E3-4DAB-4387-A966-2C29F1D4CD22','Sales/Checkout',DEFAULT) +INSERT INTO [UserRoles] ([UserRoleID],[UserID],[Role],[timestamp])VALUES('641D72A1-EDAF-4F9A-A5F5-ECE645FEBE8B','C8E3C9E3-4DAB-4387-A966-2C29F1D4CD22','Sales/EditBill',DEFAULT) +INSERT INTO [UserRoles] ([UserRoleID],[UserID],[Role],[timestamp])VALUES('381821D5-516D-4E8F-BD6B-BC8C1CA8395B','C8E3C9E3-4DAB-4387-A966-2C29F1D4CD22','Sales/EditKOT',DEFAULT) +INSERT INTO [UserRoles] ([UserRoleID],[UserID],[Role],[timestamp])VALUES('647CF8B6-D729-40E6-9625-F7EE8FB73B96','C8E3C9E3-4DAB-4387-A966-2C29F1D4CD22','Sales/EditPrintedProduct',DEFAULT) +INSERT INTO [UserRoles] ([UserRoleID],[UserID],[Role],[timestamp])VALUES('52712882-B24E-4D59-9DD9-4D8F9C4B1B14','C8E3C9E3-4DAB-4387-A966-2C29F1D4CD22','Sales/PrintBill',DEFAULT) +INSERT INTO [UserRoles] ([UserRoleID],[UserID],[Role],[timestamp])VALUES('902E1B87-0033-4DAF-BDCB-4A143019932E','C8E3C9E3-4DAB-4387-A966-2C29F1D4CD22','Sales/PrintKOT',DEFAULT) +INSERT INTO [UserRoles] ([UserRoleID],[UserID],[Role],[timestamp])VALUES('26010629-3E23-42E6-A55B-D2590EE0C52D','C8E3C9E3-4DAB-4387-A966-2C29F1D4CD22','Sales/SaleDetail',DEFAULT) +INSERT INTO [UserRoles] ([UserRoleID],[UserID],[Role],[timestamp])VALUES('F69E6E64-5759-4DF2-8DE8-803149B2E6EC','C8E3C9E3-4DAB-4387-A966-2C29F1D4CD22','Sales/SalesBill',DEFAULT) +INSERT INTO [UserRoles] ([UserRoleID],[UserID],[Role],[timestamp])VALUES('D754A729-21FC-4DD1-B37B-B5AD5B291C33','C8E3C9E3-4DAB-4387-A966-2C29F1D4CD22','Sales/VoidPrintedBill',DEFAULT) +INSERT INTO [UserRoles] ([UserRoleID],[UserID],[Role],[timestamp])VALUES('655F59BA-2BF3-409A-B2F5-17BCD0D5D379','C8E3C9E3-4DAB-4387-A966-2C29F1D4CD22','Security/CreateUser',DEFAULT) +INSERT INTO [UserRoles] ([UserRoleID],[UserID],[Role],[timestamp])VALUES('028D948A-CD15-460C-AEA1-63C65D3A9708','C8E3C9E3-4DAB-4387-A966-2C29F1D4CD22','Security/ManageRoles',DEFAULT) +INSERT INTO [UserRoles] ([UserRoleID],[UserID],[Role],[timestamp])VALUES('5D5CD427-0E0C-4420-8ECF-B05659A92127','C8E3C9E3-4DAB-4387-A966-2C29F1D4CD22','Transaction/Issue',DEFAULT) +INSERT INTO [UserRoles] ([UserRoleID],[UserID],[Role],[timestamp])VALUES('0D01583C-D99C-4857-9326-BD247BA4DFF0','C8E3C9E3-4DAB-4387-A966-2C29F1D4CD22','Transaction/Journal',DEFAULT) +INSERT INTO [UserRoles] ([UserRoleID],[UserID],[Role],[timestamp])VALUES('E02696A5-E180-4A91-9EB7-E98A38416BA0','C8E3C9E3-4DAB-4387-A966-2C29F1D4CD22','Transaction/Locked',DEFAULT) +INSERT INTO [UserRoles] ([UserRoleID],[UserID],[Role],[timestamp])VALUES('12A03D1B-48ED-4998-856D-AA0C5AECEDE3','C8E3C9E3-4DAB-4387-A966-2C29F1D4CD22','Transaction/Payment',DEFAULT) +INSERT INTO [UserRoles] ([UserRoleID],[UserID],[Role],[timestamp])VALUES('E29D11F2-6DE9-46EF-9B2A-FD6CEACE1C24','C8E3C9E3-4DAB-4387-A966-2C29F1D4CD22','Transaction/Posted',DEFAULT) +INSERT INTO [UserRoles] ([UserRoleID],[UserID],[Role],[timestamp])VALUES('A567D0CB-24E5-4BB3-8054-CCCB48DD6E76','C8E3C9E3-4DAB-4387-A966-2C29F1D4CD22','Transaction/Purchase',DEFAULT) +INSERT INTO [UserRoles] ([UserRoleID],[UserID],[Role],[timestamp])VALUES('4C195C5A-7789-41F9-810C-D31419410715','C8E3C9E3-4DAB-4387-A966-2C29F1D4CD22','Transaction/Receipt',DEFAULT) +INSERT INTO [UserRoles] ([UserRoleID],[UserID],[Role],[timestamp])VALUES('706B2B51-7939-4515-BDC4-D9809014F557','C8E3C9E3-4DAB-4387-A966-2C29F1D4CD22','Transactions/PostTransactions',DEFAULT) +INSERT INTO [UserRoles] ([UserRoleID],[UserID],[Role],[timestamp])VALUES('67735CF0-6E89-4734-A522-C5A48C198545','9285E98D-D976-4DC7-BB3F-D6184D388B5A','Log/View',DEFAULT) +INSERT INTO [UserRoles] ([UserRoleID],[UserID],[Role],[timestamp])VALUES('DF9F4BD6-5A68-4E94-ABC1-312FABB9FA34','9285E98D-D976-4DC7-BB3F-D6184D388B5A','Master/Products',DEFAULT) +INSERT INTO [UserRoles] ([UserRoleID],[UserID],[Role],[timestamp])VALUES('6C48B8C3-40A6-46FB-8ECA-01622E6A5039','9285E98D-D976-4DC7-BB3F-D6184D388B5A','Sales/ChangeRate',DEFAULT) +INSERT INTO [UserRoles] ([UserRoleID],[UserID],[Role],[timestamp])VALUES('B773F4B9-66D0-42F8-9516-45FB77E01594','9285E98D-D976-4DC7-BB3F-D6184D388B5A','Sales/Checkout',DEFAULT) +INSERT INTO [UserRoles] ([UserRoleID],[UserID],[Role],[timestamp])VALUES('4AAB9620-0A3B-4B97-B531-0B7B9729E420','9285E98D-D976-4DC7-BB3F-D6184D388B5A','Sales/EditBill',DEFAULT) +INSERT INTO [UserRoles] ([UserRoleID],[UserID],[Role],[timestamp])VALUES('30CE982C-7841-44FD-AB8C-2D73E8889A3A','9285E98D-D976-4DC7-BB3F-D6184D388B5A','Sales/EditKOT',DEFAULT) +INSERT INTO [UserRoles] ([UserRoleID],[UserID],[Role],[timestamp])VALUES('DF774768-2584-43F7-99F6-695C83859A11','9285E98D-D976-4DC7-BB3F-D6184D388B5A','Sales/EditPrintedProduct',DEFAULT) +INSERT INTO [UserRoles] ([UserRoleID],[UserID],[Role],[timestamp])VALUES('B1A9FCC1-2263-4597-9117-D774B065EB78','9285E98D-D976-4DC7-BB3F-D6184D388B5A','Sales/PrintBill',DEFAULT) +INSERT INTO [UserRoles] ([UserRoleID],[UserID],[Role],[timestamp])VALUES('A560B79E-19F3-4663-9DB5-6DA51D12E9FC','9285E98D-D976-4DC7-BB3F-D6184D388B5A','Sales/PrintKOT',DEFAULT) +INSERT INTO [UserRoles] ([UserRoleID],[UserID],[Role],[timestamp])VALUES('911D0FC8-25E3-436B-BAAF-13500B27AB01','9285E98D-D976-4DC7-BB3F-D6184D388B5A','Sales/SaleDetail',DEFAULT) +INSERT INTO [UserRoles] ([UserRoleID],[UserID],[Role],[timestamp])VALUES('6E7C3342-7FCF-4A74-A039-7FCF497B16E0','9285E98D-D976-4DC7-BB3F-D6184D388B5A','Sales/SalesBill',DEFAULT) +INSERT INTO [UserRoles] ([UserRoleID],[UserID],[Role],[timestamp])VALUES('AEF39B6E-6E0E-4B4A-9968-46856A04B007','9285E98D-D976-4DC7-BB3F-D6184D388B5A','Sales/VoidPrintedBill',DEFAULT) +INSERT INTO [UserRoles] ([UserRoleID],[UserID],[Role],[timestamp])VALUES('EFBFFAEE-1ED8-42D6-B783-79B60904A245','9285E98D-D976-4DC7-BB3F-D6184D388B5A','Security/CreateUser',DEFAULT) +INSERT INTO [UserRoles] ([UserRoleID],[UserID],[Role],[timestamp])VALUES('C1A9C284-79C9-4B17-BF2F-A66279ED38F0','9285E98D-D976-4DC7-BB3F-D6184D388B5A','Security/ManageRoles',DEFAULT) diff --git a/Sql/Remove Companies.sql b/Sql/Remove Companies.sql new file mode 100644 index 0000000..60cc7ff --- /dev/null +++ b/Sql/Remove Companies.sql @@ -0,0 +1,675 @@ +BEGIN TRANSACTION +GO +ALTER TABLE dbo.BasicTransactions + DROP CONSTRAINT FK_BasicTransactions_Companies +GO +COMMIT +BEGIN TRANSACTION +GO +ALTER TABLE dbo.BasicTransactions + DROP COLUMN CompanyID +GO +COMMIT + +BEGIN TRANSACTION +GO +ALTER TABLE dbo.CostCenters + DROP CONSTRAINT FK_CostCenters_Companies +GO +COMMIT +BEGIN TRANSACTION +GO +ALTER TABLE dbo.CostCenters + DROP COLUMN CompanyID +GO +COMMIT + +BEGIN TRANSACTION +GO +ALTER TABLE dbo.Customers + DROP CONSTRAINT FK_Customers_Companies +GO +COMMIT +BEGIN TRANSACTION +GO +ALTER TABLE dbo.Customers + DROP COLUMN CompanyID +GO +COMMIT + +BEGIN TRANSACTION +GO +ALTER TABLE dbo.Employees + DROP CONSTRAINT FK_Employees_Companies +GO +COMMIT +BEGIN TRANSACTION +GO +ALTER TABLE dbo.Employees + DROP COLUMN CompanyID +GO +COMMIT + +BEGIN TRANSACTION +GO +ALTER TABLE dbo.Inventory + DROP CONSTRAINT FK_Inventory_Companies +GO +COMMIT +BEGIN TRANSACTION +GO +ALTER TABLE dbo.Inventory + DROP COLUMN CompanyID +GO +COMMIT + +BEGIN TRANSACTION +GO +ALTER TABLE dbo.Ledgers + DROP CONSTRAINT FK_Ledgers_Companies +GO +COMMIT +BEGIN TRANSACTION +GO +ALTER TABLE dbo.Ledgers + DROP COLUMN CompanyID +GO +COMMIT + +BEGIN TRANSACTION +GO +ALTER TABLE dbo.Products + DROP CONSTRAINT FK_Products_Companies +GO +COMMIT +BEGIN TRANSACTION +GO +ALTER TABLE dbo.Products + DROP COLUMN CompanyID +GO +COMMIT + +BEGIN TRANSACTION +GO +ALTER TABLE dbo.ProductTypes + DROP CONSTRAINT FK_ProductTypes_Companies +GO +COMMIT +BEGIN TRANSACTION +GO +ALTER TABLE dbo.ProductTypes + DROP COLUMN CompanyID +GO +COMMIT + +BEGIN TRANSACTION +GO +ALTER TABLE dbo.Roles + DROP CONSTRAINT FK_Roles_Companies +GO +COMMIT +BEGIN TRANSACTION +GO +ALTER TABLE dbo.Roles + DROP COLUMN CompanyID +GO +COMMIT + +BEGIN TRANSACTION +GO +ALTER TABLE dbo.Tax + DROP CONSTRAINT FK_Tax_Companies +GO +COMMIT +BEGIN TRANSACTION +GO +ALTER TABLE dbo.Tax + DROP COLUMN CompanyID +GO +COMMIT + +BEGIN TRANSACTION +GO +DROP TABLE dbo.TransactionContra +GO +COMMIT + +BEGIN TRANSACTION +GO +ALTER TABLE dbo.TransactionSale + DROP CONSTRAINT FK_TransactionSale_Companies +GO +COMMIT +BEGIN TRANSACTION +GO +ALTER TABLE dbo.TransactionSale + DROP COLUMN CompanyID +GO +COMMIT + +BEGIN TRANSACTION +GO +ALTER TABLE dbo.UserRoles + DROP CONSTRAINT IX_UserRoles +GO +ALTER TABLE dbo.UserRoles ADD CONSTRAINT + IX_UserRoles UNIQUE NONCLUSTERED + ( + UserID, + Role + ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] + +GO +ALTER TABLE dbo.UserRoles + DROP COLUMN CompanyID +GO +COMMIT + +BEGIN TRANSACTION +GO +ALTER TABLE dbo.Users + DROP CONSTRAINT FK_Users_Companies +GO +COMMIT +BEGIN TRANSACTION +GO +ALTER TABLE dbo.Users + DROP COLUMN CompanyID +GO +COMMIT + +BEGIN TRANSACTION +GO +DROP TABLE Companies +GO +COMMIT + +BEGIN TRANSACTION +GO +CREATE TABLE dbo.Waiters + ( + WaiterID uniqueidentifier NOT NULL, + Name nvarchar(200) NOT NULL, + timestamp timestamp NOT NULL + ) ON [PRIMARY] +GO +ALTER TABLE dbo.Waiters ADD CONSTRAINT + PK_Waiters PRIMARY KEY CLUSTERED + ( + WaiterID + ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] + +GO +CREATE NONCLUSTERED INDEX IX_Waiters_Name ON dbo.Waiters + ( + Name + ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +GO +COMMIT + +INSERT INTO Waiters (WaiterID, Name) +SELECT l.LedgerID, l.Name FROM Ledgers l INNER JOIN Employees e ON l.LedgerID = e.LedgerID ORDER BY Name + +BEGIN TRANSACTION +GO +ALTER TABLE dbo.TransactionSale + DROP CONSTRAINT FK_TransactionSale_Employees +GO +COMMIT +BEGIN TRANSACTION +GO +ALTER TABLE dbo.TransactionSale ADD CONSTRAINT + FK_TransactionSale_Waiters FOREIGN KEY + ( + WaiterID + ) REFERENCES dbo.Waiters + ( + WaiterID + ) ON UPDATE NO ACTION + ON DELETE NO ACTION + +GO +COMMIT + +BEGIN TRANSACTION +GO +ALTER TABLE dbo.CashPayments + DROP CONSTRAINT FK_CashPayments_Employees +GO +COMMIT +BEGIN TRANSACTION +GO +ALTER TABLE dbo.CashPayments ADD CONSTRAINT + FK_CashPayments_Users FOREIGN KEY + ( + CashierID + ) REFERENCES dbo.Users + ( + UserID + ) ON UPDATE NO ACTION + ON DELETE NO ACTION + +GO +COMMIT + +DROP TABLE CashPayments + +DROP TABLE Employees +DELETE FROM Ledgers WHERE Type = 'S' + + +BEGIN TRANSACTION +GO +ALTER TABLE dbo.BasicTransactions + DROP CONSTRAINT FK_BasicTransactions_Users_PosterID +GO +COMMIT +BEGIN TRANSACTION +GO +EXECUTE sp_rename N'dbo.BasicTransactions', N'Vouchers', 'OBJECT' +GO +EXECUTE sp_rename N'dbo.Vouchers.TransactionID', N'VoucherID', 'COLUMN' +GO +ALTER TABLE dbo.Vouchers + DROP COLUMN Posted, Review, PosterID, Autolocked +GO +COMMIT + +BEGIN TRANSACTION +GO +ALTER TABLE dbo.Inventory + DROP CONSTRAINT FK_Inventory_BasicTransactions +GO +ALTER TABLE dbo.TransactionSale + DROP CONSTRAINT FK_TransactionSale_BasicTransactions +GO +ALTER TABLE dbo.Vouchers + DROP CONSTRAINT IX_BasicTransactions_Code_Type +GO +ALTER TABLE dbo.Vouchers + DROP CONSTRAINT PK_BasicTransactions +GO +ALTER TABLE dbo.Vouchers ADD CONSTRAINT + PK_Vouchers PRIMARY KEY CLUSTERED + ( + VoucherID + ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] + +GO +ALTER TABLE dbo.Vouchers ADD CONSTRAINT + IX_Vouchers_Code_Type UNIQUE NONCLUSTERED + ( + Code, + Type + ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] + +GO +COMMIT +BEGIN TRANSACTION +GO +ALTER TABLE dbo.TransactionSale ADD CONSTRAINT + FK_TransactionSale_BasicTransactions FOREIGN KEY + ( + TransactionID + ) REFERENCES dbo.Vouchers + ( + VoucherID + ) ON UPDATE NO ACTION + ON DELETE NO ACTION + +GO +COMMIT +BEGIN TRANSACTION +GO +ALTER TABLE dbo.Inventory ADD CONSTRAINT + FK_Inventory_BasicTransactions FOREIGN KEY + ( + TransactionID + ) REFERENCES dbo.Vouchers + ( + VoucherID + ) ON UPDATE NO ACTION + ON DELETE NO ACTION + +GO +COMMIT + + +BEGIN TRANSACTION +GO +ALTER TABLE dbo.TransactionSale + DROP CONSTRAINT FK_TransactionSale_BasicTransactions +GO +COMMIT +BEGIN TRANSACTION +GO +ALTER TABLE dbo.TransactionSale + DROP CONSTRAINT FK_TransactionSale_Waiters +GO +COMMIT +BEGIN TRANSACTION +GO +ALTER TABLE dbo.TransactionSale + DROP CONSTRAINT FK_TransactionSale_Customers +GO +COMMIT +BEGIN TRANSACTION +GO +EXECUTE sp_rename N'dbo.TransactionSale', N'SaleVoucher', 'OBJECT' +GO +EXECUTE sp_rename N'dbo.SaleVoucher.TransactionID', N'VoucherID', 'COLUMN' +GO +ALTER TABLE dbo.SaleVoucher ADD CONSTRAINT + FK_SaleVoucher_Customers FOREIGN KEY + ( + CustomerID + ) REFERENCES dbo.Customers + ( + CustomerID + ) ON UPDATE NO ACTION + ON DELETE NO ACTION + +GO +ALTER TABLE dbo.SaleVoucher ADD CONSTRAINT + FK_SaleVoucher_Waiters FOREIGN KEY + ( + WaiterID + ) REFERENCES dbo.Waiters + ( + WaiterID + ) ON UPDATE NO ACTION + ON DELETE NO ACTION + +GO +ALTER TABLE dbo.SaleVoucher ADD CONSTRAINT + FK_SaleVoucher_Vouchers FOREIGN KEY + ( + VoucherID + ) REFERENCES dbo.Vouchers + ( + VoucherID + ) ON UPDATE NO ACTION + ON DELETE NO ACTION + +GO +COMMIT + +BEGIN TRANSACTION +GO +ALTER TABLE dbo.Inventory + DROP CONSTRAINT FK_Inventory_BasicTransactions +GO +COMMIT +BEGIN TRANSACTION +GO +EXECUTE sp_rename N'dbo.Inventory.TransactionID', N'VoucherID', 'COLUMN' +GO +ALTER TABLE dbo.Inventory ADD CONSTRAINT + FK_Inventory_Vouchers FOREIGN KEY + ( + VoucherID + ) REFERENCES dbo.Vouchers + ( + VoucherID + ) ON UPDATE NO ACTION + ON DELETE NO ACTION + +GO +COMMIT +GO + +DROP PROCEDURE [dbo].[BasicTransactions_Insert] +DROP PROCEDURE [dbo].[BasicTransactions_Update] +GO + +-- Product Sorting +UPDATE Products +SET SortOrder = inv.Sort +FROM (SELECT ProductID, Count(*) AS Sort FROM Inventory GROUP BY ProductID) AS inv +WHERE Products.ProductID = inv.ProductID +GO + +BEGIN TRANSACTION +GO +ALTER TABLE dbo.Vouchers + DROP CONSTRAINT DF_BasicTransactions_TransactionID +GO +COMMIT +GO +DROP TRIGGER [dbo].[BasicTransactions_Update_Auto] +GO +DROP TRIGGER [dbo].[BasicTransactions_Insert_Auto] +GO +DROP PROCEDURE [dbo].[TransactionSale_Update] +GO +DROP PROCEDURE [dbo].[TransactionSale_Insert] +GO +CREATE PROCEDURE [dbo].[SaleVoucher_Update] +( + @VoucherID uniqueidentifier, + @BillID nvarchar(10) OUTPUT, + @TableID nvarchar(10), + @WaiterID uniqueidentifier, + @CustomerID uniqueidentifier, + @Paid bit, + @Void bit, + @VoidReason nvarchar(50), + @Printed bit OUTPUT, + @Alarm datetime, + @KotID nvarchar(10) OUTPUT, + @CreditCard bit, + @IsImportant bit, + @timestamp timestamp OUTPUT + ) +AS +BEGIN + IF @Printed = 1 AND (SELECT Printed FROM SaleVoucher WHERE VoucherID = @VoucherID) = 0 + BEGIN + SELECT @BillID = ISNULL(CAST(MAX(CAST(REPLACE(BillID, '-', '') AS int)) + 1 AS nvarchar(9)), '010001') FROM SaleVoucher WHERE BillID LIKE '__-____' + IF LEN(@BillID) = 5 + SET @BillID = '0' + @BillID + SET @BillID = SUBSTRING(@BillID, 1, 2) + '-' + SUBSTRING(@BillID, 3, 7) + IF SUBSTRING(@BillID,3,7) = '-0000' + SET @BillID = SUBSTRING(@BillID, 1, 2) + '-0001' + END + ELSE + BEGIN + SELECT @BillID = BillID FROM SaleVoucher WHERE VoucherID = @VoucherID + END + IF @TableID = '' + BEGIN + SELECT @TableID = 'C' + CAST(ISNULL(MAX(CAST(SUBSTRING(TableID, 2, 10) AS int)), 0) + 1 AS nvarchar(10)) FROM SaleVoucher WHERE TableID LIKE 'C%' AND Paid = 0 AND Void = 0 + END + IF (SELECT Printed FROM SaleVoucher WHERE VoucherID = @VoucherID) = 1 + SET @Printed = 1 + UPDATE [dbo].[SaleVoucher] SET + [BillID] = @BillID, + [TableID] = @TableID, + [WaiterID] = @WaiterID, + [CustomerID] = @CustomerID, + [Paid] = @Paid, + [Void] = @Void, + [VoidReason] = @VoidReason, + [Printed] = @Printed, + [Alarm] = @Alarm, + [CreditCard] = @CreditCard, + [IsImportant] = @IsImportant + WHERE VoucherID = @VoucherID + + UPDATE Vouchers SET LastEditDate = GETDATE() WHERE VoucherID = @VoucherID + + SELECT @timestamp = timestamp, @KotID = KotID FROM [dbo].[SaleVoucher] WHERE VoucherID = @VoucherID +END + +GO + +CREATE PROCEDURE [dbo].[SaleVoucher_Insert] +( + @VoucherID uniqueidentifier, + @BillID nvarchar(10) OUTPUT, + @TableID nvarchar(10), + @WaiterID uniqueidentifier, + @CustomerID uniqueidentifier, + @Paid bit, + @Void bit, + @VoidReason nvarchar(50), + @Printed bit, + @Alarm datetime, + @KotID nvarchar(10) OUTPUT, + @CreditCard bit, + @IsImportant bit, + @timestamp timestamp OUTPUT + ) +AS +BEGIN + SELECT @KotID = ISNULL('K-' + CAST(MAX(CAST(SUBSTRING(KotID, 3,8) AS int)) + 1 AS nvarchar(8)), 'K-1') FROM [dbo].[SaleVoucher] + IF @Printed = 1 + BEGIN + SELECT @BillID = ISNULL(CAST(MAX(CAST(REPLACE(BillID, '-', '') AS int)) + 1 AS nvarchar(9)), '010001') FROM SaleVoucher WHERE BillID LIKE '__-____' + IF LEN(@BillID) = 5 + SET @BillID = '0' + @BillID + SET @BillID = SUBSTRING(@BillID, 1, 2) + '-' + SUBSTRING(@BillID, 3, 7) + IF SUBSTRING(@BillID,3,7) = '-0000' + SET @BillID = SUBSTRING(@BillID, 1, 2) + '-0001' + END + ELSE + BEGIN + SET @BillID = @KotID + END + IF @TableID = '' + BEGIN + SELECT @TableID = 'C' + CAST(ISNULL(MAX(CAST(SUBSTRING(TableID, 2, 10) AS int)), 0) + 1 AS nvarchar(10)) FROM SaleVoucher WHERE TableID LIKE 'C%' AND Paid = 0 AND Void = 0 + END + INSERT INTO [dbo].[SaleVoucher] ([VoucherID], [BillID], [TableID], [WaiterID], [CustomerID], [Paid], [Void], [VoidReason], [Printed], [Alarm], [KotID], [CreditCard] ,[IsImportant]) + VALUES (@VoucherID, @BillID, @TableID, @WaiterID, @CustomerID, @Paid, @Void, @VoidReason, @Printed, @Alarm, @KotID, @CreditCard, @IsImportant) + SELECT @timestamp = timestamp FROM [dbo].[SaleVoucher] WHERE VoucherID = @VoucherID +END +GO + +-- Waiters +BEGIN TRANSACTION +GO +CREATE TABLE dbo.Tmp_Waiters + ( + WaiterID uniqueidentifier NOT NULL, + Code int NULL, + Name nvarchar(200) NOT NULL, + timestamp timestamp NOT NULL + ) ON [PRIMARY] +GO +IF EXISTS(SELECT * FROM dbo.Waiters) + EXEC('INSERT INTO dbo.Tmp_Waiters (WaiterID, Name) + SELECT WaiterID, Name FROM dbo.Waiters WITH (HOLDLOCK TABLOCKX)') +GO +ALTER TABLE dbo.SaleVoucher + DROP CONSTRAINT FK_SaleVoucher_Waiters +GO +DROP TABLE dbo.Waiters +GO +EXECUTE sp_rename N'dbo.Tmp_Waiters', N'Waiters', 'OBJECT' +GO +ALTER TABLE dbo.Waiters ADD CONSTRAINT + PK_Waiters PRIMARY KEY CLUSTERED + ( + WaiterID + ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] + +GO +CREATE NONCLUSTERED INDEX IX_Waiters_Name ON dbo.Waiters + ( + Name + ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +GO +COMMIT +BEGIN TRANSACTION +GO +ALTER TABLE dbo.SaleVoucher ADD CONSTRAINT + FK_SaleVoucher_Waiters FOREIGN KEY + ( + WaiterID + ) REFERENCES dbo.Waiters + ( + WaiterID + ) ON UPDATE NO ACTION + ON DELETE NO ACTION + +GO +COMMIT + +-- Add Waiter +DECLARE @Code int +SELECT @Code = 1 +UPDATE Waiters SET @Code = Code = @Code + 1 + +INSERT INTO Waiters (WaiterID, Code, Name) +VALUES (NEWID(), 1, 'Waiter'); + +BEGIN TRANSACTION +GO +CREATE TABLE dbo.Tmp_Waiters + ( + WaiterID uniqueidentifier NOT NULL, + Code int NOT NULL, + Name nvarchar(200) NOT NULL, + timestamp timestamp NOT NULL + ) ON [PRIMARY] +GO +IF EXISTS(SELECT * FROM dbo.Waiters) + EXEC('INSERT INTO dbo.Tmp_Waiters (WaiterID, Code, Name) + SELECT WaiterID, Code, Name FROM dbo.Waiters WITH (HOLDLOCK TABLOCKX)') +GO +ALTER TABLE dbo.SaleVoucher + DROP CONSTRAINT FK_SaleVoucher_Waiters +GO +DROP TABLE dbo.Waiters +GO +EXECUTE sp_rename N'dbo.Tmp_Waiters', N'Waiters', 'OBJECT' +GO +ALTER TABLE dbo.Waiters ADD CONSTRAINT + PK_Waiters PRIMARY KEY CLUSTERED + ( + WaiterID + ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] + +GO +CREATE NONCLUSTERED INDEX IX_Waiters_Name ON dbo.Waiters + ( + Name + ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +GO +CREATE UNIQUE NONCLUSTERED INDEX IX_Waiters ON dbo.Waiters + ( + Code + ) WITH( STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +GO +COMMIT +BEGIN TRANSACTION +GO +ALTER TABLE dbo.SaleVoucher ADD CONSTRAINT + FK_SaleVoucher_Waiters FOREIGN KEY + ( + WaiterID + ) REFERENCES dbo.Waiters + ( + WaiterID + ) ON UPDATE NO ACTION + ON DELETE NO ACTION + +GO +COMMIT + +-- Waiter Role +INSERT INTO Roles (Role, Description) VALUES ('Waiter/Master', 'Add / Edit / Delete Waiters') +--INSERT INTO Roles (Role, Description) VALUES ('Log/View', 'View the event Log') + + +---- User Modification +BEGIN TRANSACTION +GO +ALTER TABLE dbo.Users + DROP CONSTRAINT DF_Users_CreationDate +GO +ALTER TABLE dbo.Users + DROP COLUMN Email, Approved, Question, Answer, Comment, CreationDate, LastLoginDate, LastActivityDate, LastPasswordChangedDate, LastLockoutDate +GO +COMMIT diff --git a/Sql/generate_inserts_2005.SQL b/Sql/generate_inserts_2005.SQL new file mode 100644 index 0000000..e5e7005 --- /dev/null +++ b/Sql/generate_inserts_2005.SQL @@ -0,0 +1,481 @@ +SET NOCOUNT ON +GO + +PRINT 'Using Master database' +USE AccFF +GO + +PRINT 'Checking for the existence of this procedure' +IF (SELECT OBJECT_ID('ScriptInserts','P')) IS NOT NULL --means, the procedure already exists + BEGIN + PRINT 'Procedure already exists. So, dropping it' + DROP PROC ScriptInserts + END +GO + +CREATE PROC ScriptInserts +( + @table_name varchar(776), -- The table/view for which the INSERT statements will be generated using the existing data + @target_table varchar(776) = NULL, -- Use this parameter to specify a different table name into which the data will be inserted + @include_column_list bit = 1, -- Use this parameter to include/ommit column list in the generated INSERT statement + @from varchar(800) = NULL, -- Use this parameter to filter the rows based on a filter condition (using WHERE) + @include_timestamp bit = 0, -- Specify 1 for this parameter, if you want to include the TIMESTAMP/ROWVERSION column's data in the INSERT statement + @debug_mode bit = 0, -- If @debug_mode is set to 1, the SQL statements constructed by this procedure will be printed for later examination + @owner varchar(64) = NULL, -- Use this parameter if you are not the owner of the table + @ommit_images bit = 0, -- Use this parameter to generate INSERT statements by omitting the 'image' columns + @ommit_identity bit = 0, -- Use this parameter to ommit the identity columns + @top int = NULL, -- Use this parameter to generate INSERT statements only for the TOP n rows + @cols_to_include varchar(8000) = NULL, -- List of columns to be included in the INSERT statement + @cols_to_exclude varchar(8000) = NULL, -- List of columns to be excluded from the INSERT statement + @disable_constraints bit = 0, -- When 1, disables foreign key constraints and enables them after the INSERT statements + @ommit_computed_cols bit = 0 -- When 1, computed columns will not be included in the INSERT statement + +) +AS +BEGIN + +/*********************************************************************************************************** +Procedure: sp_generate_inserts (Build 22) + (Copyright © 2002 Narayana Vyas Kondreddi. All rights reserved.) + +Purpose: To generate INSERT statements from existing data. + These INSERTS can be executed to regenerate the data at some other location. + This procedure is also useful to create a database setup, where in you can + script your data along with your table definitions. + +Written by: Narayana Vyas Kondreddi + http://vyaskn.tripod.com + +Acknowledgements: + Divya Kalra -- For beta testing + Mark Charsley -- For reporting a problem with scripting uniqueidentifier columns with NULL values + Artur Zeygman -- For helping me simplify a bit of code for handling non-dbo owned tables + Joris Laperre -- For reporting a regression bug in handling text/ntext columns + +Tested on: SQL Server 7.0 and SQL Server 2000 and SQL Server 2005 + +Date created: January 17th 2001 21:52 GMT + +Date modified: May 1st 2002 19:50 GMT + +Email: vyaskn@hotmail.com + +NOTE: This procedure may not work with tables with too many columns. + Results can be unpredictable with huge text columns or SQL Server 2000's sql_variant data types + Whenever possible, Use @include_column_list parameter to ommit column list in the INSERT statement, for better results + IMPORTANT: This procedure is not tested with internation data (Extended characters or Unicode). If needed + you might want to convert the datatypes of character variables in this procedure to their respective unicode counterparts + like nchar and nvarchar + + ALSO NOTE THAT THIS PROCEDURE IS NOT UPDATED TO WORK WITH NEW DATA TYPES INTRODUCED IN SQL SERVER 2005 / YUKON + + +Example 1: To generate INSERT statements for table 'titles': + + EXEC sp_generate_inserts 'titles' + +Example 2: To ommit the column list in the INSERT statement: (Column list is included by default) + IMPORTANT: If you have too many columns, you are advised to ommit column list, as shown below, + to avoid erroneous results + + EXEC sp_generate_inserts 'titles', @include_column_list = 0 + +Example 3: To generate INSERT statements for 'titlesCopy' table from 'titles' table: + + EXEC sp_generate_inserts 'titles', 'titlesCopy' + +Example 4: To generate INSERT statements for 'titles' table for only those titles + which contain the word 'Computer' in them: + NOTE: Do not complicate the FROM or WHERE clause here. It's assumed that you are good with T-SQL if you are using this parameter + + EXEC sp_generate_inserts 'titles', @from = "from titles where title like '%Computer%'" + +Example 5: To specify that you want to include TIMESTAMP column's data as well in the INSERT statement: + (By default TIMESTAMP column's data is not scripted) + + EXEC sp_generate_inserts 'titles', @include_timestamp = 1 + +Example 6: To print the debug information: + + EXEC sp_generate_inserts 'titles', @debug_mode = 1 + +Example 7: If you are not the owner of the table, use @owner parameter to specify the owner name + To use this option, you must have SELECT permissions on that table + + EXEC sp_generate_inserts Nickstable, @owner = 'Nick' + +Example 8: To generate INSERT statements for the rest of the columns excluding images + When using this otion, DO NOT set @include_column_list parameter to 0. + + EXEC sp_generate_inserts imgtable, @ommit_images = 1 + +Example 9: To generate INSERT statements excluding (ommiting) IDENTITY columns: + (By default IDENTITY columns are included in the INSERT statement) + + EXEC sp_generate_inserts mytable, @ommit_identity = 1 + +Example 10: To generate INSERT statements for the TOP 10 rows in the table: + + EXEC sp_generate_inserts mytable, @top = 10 + +Example 11: To generate INSERT statements with only those columns you want: + + EXEC sp_generate_inserts titles, @cols_to_include = "'title','title_id','au_id'" + +Example 12: To generate INSERT statements by omitting certain columns: + + EXEC sp_generate_inserts titles, @cols_to_exclude = "'title','title_id','au_id'" + +Example 13: To avoid checking the foreign key constraints while loading data with INSERT statements: + + EXEC sp_generate_inserts titles, @disable_constraints = 1 + +Example 14: To exclude computed columns from the INSERT statement: + EXEC sp_generate_inserts MyTable, @ommit_computed_cols = 1 +***********************************************************************************************************/ + +SET NOCOUNT ON + +--Making sure user only uses either @cols_to_include or @cols_to_exclude +IF ((@cols_to_include IS NOT NULL) AND (@cols_to_exclude IS NOT NULL)) + BEGIN + RAISERROR('Use either @cols_to_include or @cols_to_exclude. Do not use both the parameters at once',16,1) + RETURN -1 --Failure. Reason: Both @cols_to_include and @cols_to_exclude parameters are specified + END + +--Making sure the @cols_to_include and @cols_to_exclude parameters are receiving values in proper format +IF ((@cols_to_include IS NOT NULL) AND (PATINDEX('''%''',@cols_to_include) = 0)) + BEGIN + RAISERROR('Invalid use of @cols_to_include property',16,1) + PRINT 'Specify column names surrounded by single quotes and separated by commas' + PRINT 'Eg: EXEC ScriptInserts titles, @cols_to_include = "''title_id'',''title''"' + RETURN -1 --Failure. Reason: Invalid use of @cols_to_include property + END + +IF ((@cols_to_exclude IS NOT NULL) AND (PATINDEX('''%''',@cols_to_exclude) = 0)) + BEGIN + RAISERROR('Invalid use of @cols_to_exclude property',16,1) + PRINT 'Specify column names surrounded by single quotes and separated by commas' + PRINT 'Eg: EXEC ScriptInserts titles, @cols_to_exclude = "''title_id'',''title''"' + RETURN -1 --Failure. Reason: Invalid use of @cols_to_exclude property + END + + +--Checking to see if the database name is specified along wih the table name +--Your database context should be local to the table for which you want to generate INSERT statements +--specifying the database name is not allowed +IF (PARSENAME(@table_name,3)) IS NOT NULL + BEGIN + RAISERROR('Do not specify the database name. Be in the required database and just specify the table name.',16,1) + RETURN -1 --Failure. Reason: Database name is specified along with the table name, which is not allowed + END + +--Checking for the existence of 'user table' or 'view' +--This procedure is not written to work on system tables +--To script the data in system tables, just create a view on the system tables and script the view instead + +IF @owner IS NULL + BEGIN + IF ((OBJECT_ID(@table_name,'U') IS NULL) AND (OBJECT_ID(@table_name,'V') IS NULL)) + BEGIN + RAISERROR('User table or view not found.',16,1) + PRINT 'You may see this error, if you are not the owner of this table or view. In that case use @owner parameter to specify the owner name.' + PRINT 'Make sure you have SELECT permission on that table or view.' + RETURN -1 --Failure. Reason: There is no user table or view with this name + END + END +ELSE + BEGIN + IF NOT EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = @table_name AND (TABLE_TYPE = 'BASE TABLE' OR TABLE_TYPE = 'VIEW') AND TABLE_SCHEMA = @owner) + BEGIN + RAISERROR('User table or view not found.',16,1) + PRINT 'You may see this error, if you are not the owner of this table. In that case use @owner parameter to specify the owner name.' + PRINT 'Make sure you have SELECT permission on that table or view.' + RETURN -1 --Failure. Reason: There is no user table or view with this name + END + END + +--Variable declarations +DECLARE @Column_ID int, + @Column_List varchar(8000), + @Column_Name varchar(128), + @Start_Insert varchar(786), + @Data_Type varchar(128), + @Actual_Values varchar(8000), --This is the string that will be finally executed to generate INSERT statements + @IDN varchar(128) --Will contain the IDENTITY column's name in the table + +--Variable Initialization +SET @IDN = '' +SET @Column_ID = 0 +SET @Column_Name = '' +SET @Column_List = '' +SET @Actual_Values = '' + +IF @owner IS NULL + BEGIN + SET @Start_Insert = 'INSERT INTO ' + '[' + RTRIM(COALESCE(@target_table,@table_name)) + ']' + END +ELSE + BEGIN + SET @Start_Insert = 'INSERT ' + '[' + LTRIM(RTRIM(@owner)) + '].' + '[' + RTRIM(COALESCE(@target_table,@table_name)) + ']' + END + + +--To get the first column's ID + +SELECT @Column_ID = MIN(ORDINAL_POSITION) +FROM INFORMATION_SCHEMA.COLUMNS (NOLOCK) +WHERE TABLE_NAME = @table_name AND +(@owner IS NULL OR TABLE_SCHEMA = @owner) + + + +--Loop through all the columns of the table, to get the column names and their data types +WHILE @Column_ID IS NOT NULL + BEGIN + SELECT @Column_Name = QUOTENAME(COLUMN_NAME), + @Data_Type = DATA_TYPE + FROM INFORMATION_SCHEMA.COLUMNS (NOLOCK) + WHERE ORDINAL_POSITION = @Column_ID AND + TABLE_NAME = @table_name AND + (@owner IS NULL OR TABLE_SCHEMA = @owner) + + + + IF @cols_to_include IS NOT NULL --Selecting only user specified columns + BEGIN + IF CHARINDEX( '''' + SUBSTRING(@Column_Name,2,LEN(@Column_Name)-2) + '''',@cols_to_include) = 0 + BEGIN + GOTO SKIP_LOOP + END + END + + IF @cols_to_exclude IS NOT NULL --Selecting only user specified columns + BEGIN + IF CHARINDEX( '''' + SUBSTRING(@Column_Name,2,LEN(@Column_Name)-2) + '''',@cols_to_exclude) <> 0 + BEGIN + GOTO SKIP_LOOP + END + END + + --Making sure to output SET IDENTITY_INSERT ON/OFF in case the table has an IDENTITY column + IF (SELECT COLUMNPROPERTY( OBJECT_ID(QUOTENAME(COALESCE(@owner,USER_NAME())) + '.' + @table_name),SUBSTRING(@Column_Name,2,LEN(@Column_Name) - 2),'IsIdentity')) = 1 + BEGIN + IF @ommit_identity = 0 --Determing whether to include or exclude the IDENTITY column + SET @IDN = @Column_Name + ELSE + GOTO SKIP_LOOP + END + + --Making sure whether to output computed columns or not + IF @ommit_computed_cols = 1 + BEGIN + IF (SELECT COLUMNPROPERTY( OBJECT_ID(QUOTENAME(COALESCE(@owner,USER_NAME())) + '.' + @table_name),SUBSTRING(@Column_Name,2,LEN(@Column_Name) - 2),'IsComputed')) = 1 + BEGIN + GOTO SKIP_LOOP + END + END + + --Tables with columns of IMAGE data type are not supported for obvious reasons + IF(@Data_Type in ('image')) + BEGIN + IF (@ommit_images = 0) + BEGIN + RAISERROR('Tables with image columns are not supported.',16,1) + PRINT 'Use @ommit_images = 1 parameter to generate INSERTs for the rest of the columns.' + PRINT 'DO NOT ommit Column List in the INSERT statements. If you ommit column list using @include_column_list=0, the generated INSERTs will fail.' + RETURN -1 --Failure. Reason: There is a column with image data type + END + ELSE + BEGIN + GOTO SKIP_LOOP + END + END + + --Determining the data type of the column and depending on the data type, the VALUES part of + --the INSERT statement is generated. Care is taken to handle columns with NULL values. Also + --making sure, not to lose any data from flot, real, money, smallmomey, datetime columns + SET @Actual_Values = @Actual_Values + + CASE + WHEN @Data_Type IN ('char','varchar','nchar','nvarchar') + THEN + 'COALESCE('''''''' + REPLACE(RTRIM(' + @Column_Name + '),'''''''','''''''''''')+'''''''',''NULL'')' + WHEN @Data_Type IN ('datetime','smalldatetime') + THEN + 'COALESCE('''''''' + RTRIM(CONVERT(char,' + @Column_Name + ',109))+'''''''',''NULL'')' + WHEN @Data_Type IN ('uniqueidentifier') + THEN + 'COALESCE('''''''' + REPLACE(CONVERT(char(255),RTRIM(' + @Column_Name + ')),'''''''','''''''''''')+'''''''',''NULL'')' + WHEN @Data_Type IN ('text','ntext') + THEN + 'COALESCE('''''''' + REPLACE(CONVERT(char(8000),' + @Column_Name + '),'''''''','''''''''''')+'''''''',''NULL'')' + WHEN @Data_Type IN ('binary','varbinary') + THEN + 'COALESCE(RTRIM(CONVERT(char,' + 'CONVERT(int,' + @Column_Name + '))),''NULL'')' + WHEN @Data_Type IN ('timestamp','rowversion') + THEN + CASE + WHEN @include_timestamp = 0 + THEN + '''DEFAULT''' + ELSE + 'COALESCE(RTRIM(CONVERT(char,' + 'CONVERT(int,' + @Column_Name + '))),''NULL'')' + END + WHEN @Data_Type IN ('float','real','money','smallmoney') + THEN + 'COALESCE(LTRIM(RTRIM(' + 'CONVERT(char, ' + @Column_Name + ',2)' + ')),''NULL'')' + ELSE + 'COALESCE(LTRIM(RTRIM(' + 'CONVERT(char, ' + @Column_Name + ')' + ')),''NULL'')' + END + '+' + ''',''' + ' + ' + + --Generating the column list for the INSERT statement + SET @Column_List = @Column_List + @Column_Name + ',' + + SKIP_LOOP: --The label used in GOTO + + SELECT @Column_ID = MIN(ORDINAL_POSITION) + FROM INFORMATION_SCHEMA.COLUMNS (NOLOCK) + WHERE TABLE_NAME = @table_name AND + ORDINAL_POSITION > @Column_ID AND + (@owner IS NULL OR TABLE_SCHEMA = @owner) + + + --Loop ends here! + END + +--To get rid of the extra characters that got concatenated during the last run through the loop +SET @Column_List = LEFT(@Column_List,len(@Column_List) - 1) +SET @Actual_Values = LEFT(@Actual_Values,len(@Actual_Values) - 6) + +IF LTRIM(@Column_List) = '' + BEGIN + RAISERROR('No columns to select. There should at least be one column to generate the output',16,1) + RETURN -1 --Failure. Reason: Looks like all the columns are ommitted using the @cols_to_exclude parameter + END + +--Forming the final string that will be executed, to output the INSERT statements +IF (@include_column_list <> 0) + BEGIN + SET @Actual_Values = + 'SELECT ' + + CASE WHEN @top IS NULL OR @top < 0 THEN '' ELSE ' TOP ' + LTRIM(STR(@top)) + ' ' END + + '''' + RTRIM(@Start_Insert) + + ' ''+' + '''(' + RTRIM(@Column_List) + '''+' + ''')''' + + ' +''VALUES(''+ ' + @Actual_Values + '+'')''' + ' ' + + COALESCE(@from,' FROM ' + CASE WHEN @owner IS NULL THEN '' ELSE '[' + LTRIM(RTRIM(@owner)) + '].' END + '[' + rtrim(@table_name) + ']' + '(NOLOCK)') + END +ELSE IF (@include_column_list = 0) + BEGIN + SET @Actual_Values = + 'SELECT ' + + CASE WHEN @top IS NULL OR @top < 0 THEN '' ELSE ' TOP ' + LTRIM(STR(@top)) + ' ' END + + '''' + RTRIM(@Start_Insert) + + ' '' +''VALUES(''+ ' + @Actual_Values + '+'')''' + ' ' + + COALESCE(@from,' FROM ' + CASE WHEN @owner IS NULL THEN '' ELSE '[' + LTRIM(RTRIM(@owner)) + '].' END + '[' + rtrim(@table_name) + ']' + '(NOLOCK)') + END + +--Determining whether to ouput any debug information +IF @debug_mode =1 + BEGIN + PRINT '/*****START OF DEBUG INFORMATION*****' + PRINT 'Beginning of the INSERT statement:' + PRINT @Start_Insert + PRINT '' + PRINT 'The column list:' + PRINT @Column_List + PRINT '' + PRINT 'The SELECT statement executed to generate the INSERTs' + PRINT @Actual_Values + PRINT '' + PRINT '*****END OF DEBUG INFORMATION*****/' + PRINT '' + END + +PRINT '--INSERTs generated by ''ScriptInserts'' stored procedure written by Vyas' +PRINT '--Build number: 22' +PRINT '--Problems/Suggestions? Contact Vyas @ vyaskn@hotmail.com' +PRINT '--http://vyaskn.tripod.com' +PRINT '' +PRINT 'SET NOCOUNT ON' +PRINT '' + + +--Determining whether to print IDENTITY_INSERT or not +IF (@IDN <> '') + BEGIN + PRINT 'SET IDENTITY_INSERT ' + QUOTENAME(COALESCE(@owner,USER_NAME())) + '.' + QUOTENAME(@table_name) + ' ON' + PRINT 'GO' + PRINT '' + END + + +IF @disable_constraints = 1 AND (OBJECT_ID(QUOTENAME(COALESCE(@owner,USER_NAME())) + '.' + @table_name, 'U') IS NOT NULL) + BEGIN + IF @owner IS NULL + BEGIN + SELECT 'ALTER TABLE ' + QUOTENAME(COALESCE(@target_table, @table_name)) + ' NOCHECK CONSTRAINT ALL' AS '--Code to disable constraints temporarily' + END + ELSE + BEGIN + SELECT 'ALTER TABLE ' + QUOTENAME(@owner) + '.' + QUOTENAME(COALESCE(@target_table, @table_name)) + ' NOCHECK CONSTRAINT ALL' AS '--Code to disable constraints temporarily' + END + + PRINT 'GO' + END + +PRINT '' +PRINT 'PRINT ''Inserting values into ' + '[' + RTRIM(COALESCE(@target_table,@table_name)) + ']' + '''' + + +--All the hard work pays off here!!! You'll get your INSERT statements, when the next line executes! +EXEC (@Actual_Values) + +PRINT 'PRINT ''Done''' +PRINT '' + + +IF @disable_constraints = 1 AND (OBJECT_ID(QUOTENAME(COALESCE(@owner,USER_NAME())) + '.' + @table_name, 'U') IS NOT NULL) + BEGIN + IF @owner IS NULL + BEGIN + SELECT 'ALTER TABLE ' + QUOTENAME(COALESCE(@target_table, @table_name)) + ' CHECK CONSTRAINT ALL' AS '--Code to enable the previously disabled constraints' + END + ELSE + BEGIN + SELECT 'ALTER TABLE ' + QUOTENAME(@owner) + '.' + QUOTENAME(COALESCE(@target_table, @table_name)) + ' CHECK CONSTRAINT ALL' AS '--Code to enable the previously disabled constraints' + END + + PRINT 'GO' + END + +PRINT '' +IF (@IDN <> '') + BEGIN + PRINT 'SET IDENTITY_INSERT ' + QUOTENAME(COALESCE(@owner,USER_NAME())) + '.' + QUOTENAME(@table_name) + ' OFF' + PRINT 'GO' + END + +PRINT 'SET NOCOUNT OFF' + + +SET NOCOUNT OFF +RETURN 0 --Success. We are done! +END + +GO + +PRINT 'Created the procedure' +GO + + +--Mark procedure as system object +EXEC sys.sp_MS_marksystemobject ScriptInserts +GO + +PRINT 'Granting EXECUTE permission on ScriptInserts to all users' +GRANT EXEC ON ScriptInserts TO public + +SET NOCOUNT OFF +GO + +PRINT 'Done' \ No newline at end of file diff --git a/Tanshu.Accounts.BI/AdvanceBI.cs b/Tanshu.Accounts.BI/AdvanceBI.cs new file mode 100644 index 0000000..5d34f7a --- /dev/null +++ b/Tanshu.Accounts.BI/AdvanceBI.cs @@ -0,0 +1,50 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Tanshu.Accounts.Contracts; +using Tanshu.Accounts.DAOFactory; +using System.Data.SqlClient; +using Tanshu.Data.DAO; + +namespace Tanshu.Accounts.BI +{ + public class AdvanceBI : IAdvanceBI + { + public void Insert(AdvanceBO advance) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IAdvanceDAO dao = factory.GetAdvanceDAO(connection)) + { + dao.Insert(advance); + } + } + } + public List GetAdvances(DateTime fromDate, DateTime toDate, bool all) + { + fromDate = Convert.ToDateTime(string.Format("{0:dd-MMM-yyyy} 00:00:00", fromDate)); + toDate = Convert.ToDateTime(string.Format("{0:dd-MMM-yyyy} 23:59:59", toDate)); + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IAdvanceDAO dao = factory.GetAdvanceDAO(connection)) + { + return dao.GetAdvances(fromDate, toDate, all); + } + } + } + public void Adjust(Guid advanceID, Guid userID) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IAdvanceDAO dao = factory.GetAdvanceDAO(connection)) + { + + dao.Adjust(advanceID, userID); + } + } + } + } +} diff --git a/Tanshu.Accounts.BI/CheckoutBI.cs b/Tanshu.Accounts.BI/CheckoutBI.cs new file mode 100644 index 0000000..28cdc97 --- /dev/null +++ b/Tanshu.Accounts.BI/CheckoutBI.cs @@ -0,0 +1,127 @@ +using System; +using System.Collections.Generic; +//using System.Linq; +using System.Text; +using System.Threading; +using System.Data.SqlClient; +using Tanshu.Accounts.DAOFactory; +using Tanshu.Data.DAO; + +namespace Tanshu.Accounts.BI +{ + public class CheckoutBI + { + #region Properties + public decimal Opening { get; private set; } + public decimal Receipts { get; private set; } + public decimal AdvanceReceipts { get; private set; } + public decimal CCReceipts { get; private set; } + public decimal AdvanceAdjusted { get; private set; } + public decimal CashPayments { get; private set; } + public decimal AdditionalVoids { get; private set; } + public decimal VoidsInSystem { get; private set; } + public decimal PendingBills { get; private set; } + public decimal NetSales { get; private set; } + public decimal ClosingBalance { get; private set; } + public decimal RetainedOvernight { get; private set; } + public decimal CashDeposited { get; private set; } // + public decimal Excess { get; private set; } // + public string Status { get; private set; } // + public string Cashiers { get; private set; } // + public Guid CashierID { get; private set; } // + public string Cashier { get; private set; } // + + public decimal OldPending { get; private set; } + public decimal OldReceipts { get; private set; } + public decimal OldVoided { get; private set; } + + public DateTime StartDate { get; private set; } // + public DateTime FinishDate { get; private set; } // + + private string pendingString; + public string PendingString + { + get { return pendingString; } + } + private string cCString; + public string CCString + { + get { return cCString; } + } + private string voidsString; + public string VoidsString + { + get { return voidsString; } + } + private string discountString; + public string DiscountString + { + get { return discountString; } + } + + //public string PendingString { get; private set; } // + //public string CCString { get; private set; } // + //public string VoidsString { get; private set; } + //public string DiscountString { get; private set; } + + public string PaymentString { get; private set; } // + public string Manager + { + get { return Thread.CurrentPrincipal.Identity.Name; } + } + #endregion + + public CheckoutBI(Guid cashier, DateTime startDate, DateTime finishDate) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (ICheckoutDAO dao = factory.GetCheckoutDAO(startDate, finishDate, cashier, connection)) + { + //Actual Closing + this.CashierID = cashier; + this.StartDate = Convert.ToDateTime(string.Format("{0:dd-MMM-yyyy} 00:00:00", startDate)); + this.FinishDate = Convert.ToDateTime(string.Format("{0:dd-MMM-yyyy} 23:59:59", finishDate)); + + Cashier = new UserBI().GetUser(CashierID).Name; + PendingBills = dao.GetPending(ref pendingString); + CCReceipts = dao.GetCreditCard(ref cCString); + VoidsInSystem = dao.GetVoids(ref voidsString); + Opening = dao.GetOpenings(); + Receipts = dao.GetReceipts(); + CashPayments = dao.GetPayments(); + AdditionalVoids = dao.GetAdditionalVoids(); + RetainedOvernight = dao.GetRetainedOvernight(); + AdvanceReceipts = dao.GetAdvancesReceived(); + AdvanceAdjusted = dao.GetAdvancesAdjusted(); + PaymentString = dao.GetPaymentString(); + + OldPending = dao.GetOldPending(); + OldReceipts = dao.GetOldReceipts(); + OldVoided = dao.GetOldVoided(); + + + Cashiers = dao.GetActiveCashiers(); + NetSales = dao.GetNetSales(); + dao.GetDiscountsBills(ref discountString); + ClosingBalance = Opening + + Receipts + + AdvanceReceipts + - CCReceipts + - AdvanceAdjusted + - CashPayments + - AdditionalVoids + + NetSales; + } + } + } + public void Calculate(decimal cashDeposited, decimal retainedOvernight) + { + this.CashDeposited = cashDeposited; + this.RetainedOvernight = retainedOvernight; + Excess = CashDeposited - ClosingBalance; + Status = string.Format("{0:Extra Cash Rs #,##0.00; Cash Short Rs #,##0.00;Cash Perfect}", Excess); + } + } + +} diff --git a/Tanshu.Accounts.BI/CustomerBI.cs b/Tanshu.Accounts.BI/CustomerBI.cs new file mode 100644 index 0000000..e9ca547 --- /dev/null +++ b/Tanshu.Accounts.BI/CustomerBI.cs @@ -0,0 +1,109 @@ +using System; +using System.Collections.Generic; +//using System.Linq; +using System.Text; +using Tanshu.Accounts.Contracts; +using System.Data.SqlClient; +using Tanshu.Accounts.DAOFactory; +using Tanshu.Data.DAO; + + +namespace Tanshu.Accounts.BI +{ + public class CustomerBI : ICustomerBI + { + + public List GetCustomerLedgers() + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (ICustomerDAO dao = factory.GetCustomerDAO(connection)) + { + return dao.GetCustomerLedgers(); + } + } + } + public CustomerBO GetCustomer(Guid customerID) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (ICustomerDAO dao = factory.GetCustomerDAO(connection)) + { + return dao.GetCustomer(customerID); + } + } + + } + public List GetFilteredCustomers(Dictionary filter) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (ICustomerDAO dao = factory.GetCustomerDAO(connection)) + { + return dao.GetFilteredCustomers(filter); + } + } + } + public List GetCustomers() + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (ICustomerDAO dao = factory.GetCustomerDAO(connection)) + { + return dao.GetCustomers(); + } + } + } + public List GetSingleCustomers(Guid customerID) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (ICustomerDAO dao = factory.GetCustomerDAO(connection)) + { + return dao.GetCustomers(customerID); + } + } + } + public bool Update(CustomerBO customer) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (ICustomerDAO dao = factory.GetCustomerDAO(connection)) + { + dao.Update(customer); + return true; + } + } + } + public bool Delete(Guid customerID) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (ICustomerDAO dao = factory.GetCustomerDAO(connection)) + { + dao.Delete(customerID); + return true; + } + } + } + public bool Insert(CustomerBO customer) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (ICustomerDAO dao = factory.GetCustomerDAO(connection)) + { + dao.Insert(customer); + return true; + } + } + } + } +} diff --git a/Tanshu.Accounts.BI/LedgerBI.cs b/Tanshu.Accounts.BI/LedgerBI.cs new file mode 100644 index 0000000..f6f99c9 --- /dev/null +++ b/Tanshu.Accounts.BI/LedgerBI.cs @@ -0,0 +1,80 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Tanshu.Accounts.Contracts; +using Tanshu.Accounts.DAOFactory; +using System.Data.SqlClient; +using Tanshu.Data.DAO; + +namespace Tanshu.Accounts.BI +{ + public class LedgerBI : ILedgerBI + { + public LedgerBO GetLedger(Guid ledgerID) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (ILedgerDAO dao = factory.GetLedgerDAO(connection)) + { + return dao.GetLedger(ledgerID); + } + } + } + public LedgerBO GetLedgerByName(string name) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (ILedgerDAO dao = factory.GetLedgerDAO(connection)) + { + return dao.GetLedger(name); + } + } + } + public bool Insert(LedgerBO ledger) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (ILedgerDAO dao = factory.GetLedgerDAO(connection)) + { + return dao.Insert(ledger); + } + } + } + public bool Update(LedgerBO ledger) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (ILedgerDAO dao = factory.GetLedgerDAO(connection)) + { + return dao.Update(ledger); + } + } + } + public List GetLedgers() + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (ILedgerDAO dao = factory.GetLedgerDAO(connection)) + { + return dao.GetLedgers(); + } + } + } + public List GetLedgersOfType(char type) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (ILedgerDAO dao = factory.GetLedgerDAO(connection)) + { + return dao.GetLedgers(type); + } + } + } + } +} diff --git a/Tanshu.Accounts.BI/ManagementBI.cs b/Tanshu.Accounts.BI/ManagementBI.cs new file mode 100644 index 0000000..556f2af --- /dev/null +++ b/Tanshu.Accounts.BI/ManagementBI.cs @@ -0,0 +1,86 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Data.SqlClient; +using Tanshu.Accounts.DAOFactory; +using Tanshu.Accounts.Contracts; +using Tanshu.Data.DAO; + +namespace Tanshu.Accounts.BI +{ + public class ManagementBI + { + public decimal GetBalance(decimal? tax, DateTime startDate, DateTime endDate) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IManagementDAO dao = factory.GetManagementDAO(startDate, endDate, connection)) + { + return dao.GetBalance(tax); + } + } + } + public List GetUpdateBillList(decimal tax, bool voided, bool paid, bool creditCard, DateTime startDate, DateTime endDate) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IManagementDAO dao = factory.GetManagementDAO(startDate, endDate, connection)) + { + return dao.GetUpdateBillList(tax, voided, paid, creditCard); + } + } + } + public decimal Update(Guid voucherID, decimal tax, DateTime startDate, DateTime endDate) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IManagementDAO dao = factory.GetManagementDAO(startDate, endDate, connection)) + { + return dao.Update(voucherID, tax); + } + } + } + + public void Reorder(DateTime startDate, DateTime endDate, ShowProgessDelegate showProgressDelegate) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IManagementDAO dao = factory.GetManagementDAO(startDate, endDate, connection)) + { + dao.Reorder(showProgressDelegate); + } + } + } + + + public bool MergeData(DateTime startDate, DateTime endDate, string sourceDB, string targetDB) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IManagementDAO dao = factory.GetManagementDAO(startDate, endDate, connection)) + { + return dao.MergeData(sourceDB, targetDB); + } + } + } + public List GetPaidBills(DateTime startDate, DateTime finishDate) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IManagementDAO dao = factory.GetManagementDAO(startDate, finishDate, connection)) + { + return dao.GetPaidBills(); + } + } + } + } +} + + + diff --git a/Tanshu.Accounts.BI/MembershipBI.cs b/Tanshu.Accounts.BI/MembershipBI.cs new file mode 100644 index 0000000..3390e29 --- /dev/null +++ b/Tanshu.Accounts.BI/MembershipBI.cs @@ -0,0 +1,117 @@ +using System; +using System.Collections.Generic; +//using System.Linq; +using System.Text; +using System.Data.SqlClient; +using Tanshu.Accounts.Contracts; +using Tanshu.Accounts.DAOFactory; +using Tanshu.Data.DAO; + +namespace Tanshu.Accounts.BI +{ + public class MembershipBI : IMembershipBI + { + public bool ValidateUser(string name, string password) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IMembershipDAO dao = factory.GetMembershipDAO(connection)) + { + return dao.ValidateUser(name, password); + } + } + } + + public void AddUsersToRoles(string[] usernames, string[] roleNames) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IMembershipDAO dao = factory.GetMembershipDAO(connection)) + { + dao.AddUsersToRoles(usernames, roleNames); + } + } + } + + public string[] GetAllRoles() + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IMembershipDAO dao = factory.GetMembershipDAO(connection)) + { + return dao.GetAllRoles(); + } + } + } + + public string[] GetRolesForUser(string username) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IMembershipDAO dao = factory.GetMembershipDAO(connection)) + { + return dao.GetRolesForUser(username); + } + } + } + + public bool IsUserInRole(string username, string roleName) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IMembershipDAO dao = factory.GetMembershipDAO(connection)) + { + if (!dao.RoleExists(roleName)) + throw new Exception(string.Format("Role {0} does not exist in the database", roleName)); + return dao.IsUserInRole(username, roleName); + } + } + } + + public bool IsUserInRole(Guid userID, string roleName) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IMembershipDAO dao = factory.GetMembershipDAO(connection)) + { + if (!dao.RoleExists(roleName)) + throw new Exception(string.Format("Role {0} does not exist in the database", roleName)); + return dao.IsUserInRole(userID, roleName); + } + } + } + + public void RemoveUsersFromRoles(string[] usernames, string[] roleNames) + { + if ((roleNames.Length > 0) || (usernames.Length > 0)) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IMembershipDAO dao = factory.GetMembershipDAO(connection)) + { + dao.RemoveUsersFromRoles(usernames, roleNames); + } + } + } + } + + public UserBO GetUserFromName(string name) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IMembershipDAO dao = factory.GetMembershipDAO(connection)) + { + return dao.GetUserFromName(name); + } + } + } + } +} diff --git a/Tanshu.Accounts.BI/PaymentBI.cs b/Tanshu.Accounts.BI/PaymentBI.cs new file mode 100644 index 0000000..c6c4124 --- /dev/null +++ b/Tanshu.Accounts.BI/PaymentBI.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Tanshu.Accounts.Contracts; +using Tanshu.Accounts.DAOFactory; +using System.Data.SqlClient; +using Tanshu.Data.DAO; + +namespace Tanshu.Accounts.BI +{ + public class PaymentBI : IPaymentBI + { + public void Insert(PaymentBO payment) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IPaymentDAO dao = factory.GetPaymentDAO(connection)) + { + dao.Insert(payment); + } + } + } + public List GetPayments(Guid? userID, DateTime fromDate, DateTime toDate) + { + fromDate = Convert.ToDateTime(string.Format("{0:dd-MMM-yyyy} 00:00:00", fromDate)); + toDate = Convert.ToDateTime(string.Format("{0:dd-MMM-yyyy} 23:59:59", toDate)); + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IPaymentDAO dao = factory.GetPaymentDAO(connection)) + { + return dao.GetPayments(userID, fromDate, toDate); + } + } + } + public void Delete(Guid paymentID) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IPaymentDAO dao = factory.GetPaymentDAO(connection)) + { + dao.Delete(paymentID); + } + } + } + } +} diff --git a/Tanshu.Accounts.BI/ProductBI.cs b/Tanshu.Accounts.BI/ProductBI.cs new file mode 100644 index 0000000..21dcea1 --- /dev/null +++ b/Tanshu.Accounts.BI/ProductBI.cs @@ -0,0 +1,134 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Tanshu.Accounts.Contracts; +using Tanshu.Accounts.DAOFactory; +using System.Data.SqlClient; +using Tanshu.Data.DAO; + +namespace Tanshu.Accounts.BI +{ + public class ProductBI : IProductBI + { + public bool Insert(ProductBO product) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IProductDAO dao = factory.GetProductDAO(connection)) + { + return dao.Insert(product); + } + } + } + public bool Update(ProductBO product) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IProductDAO dao = factory.GetProductDAO(connection)) + { + return dao.Update(product); + } + } + } + public bool Delete(Guid productID) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IProductDAO dao = factory.GetProductDAO(connection)) + { + return dao.Delete(productID); + } + } + } + public ProductBO GetProductFromName(string nameAndUnits) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IProductDAO dao = factory.GetProductDAO(connection)) + { + return dao.GetProduct(nameAndUnits); + } + } + } + public ProductBO GetProduct(Guid productID) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IProductDAO dao = factory.GetProductDAO(connection)) + { + return dao.GetProduct(productID); + } + } + } + public decimal GetProductStock(DateTime date, Guid productID, Guid? voucherID) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IProductDAO dao = factory.GetProductDAO(connection)) + { + return dao.GetProductStock(date, productID, voucherID); + } + } + } + public List GetProducts() + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IProductDAO dao = factory.GetProductDAO(connection)) + { + return dao.GetProducts(); + } + } + } + + public List GetFilteredProducts(Dictionary filter) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IProductDAO dao = factory.GetProductDAO(connection)) + { + return dao.GetFilteredProducts(filter); + } + } + } + + public void UpdateShortName() + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IProductDAO dao = factory.GetProductDAO(connection)) + { + dao.UpdateShortName(); + } + } + } + + public List GetUnFilteredProducts() + { + Dictionary filter = new Dictionary(); + filter.Add("Name", ""); + filter.Add("Type", ""); + return GetFilteredProducts(filter); + } + public List GetProductTypes() + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IProductDAO dao = factory.GetProductDAO(connection)) + { + return dao.GetProductTypes(); + } + } + } + } +} diff --git a/Tanshu.Accounts.BI/Properties/AssemblyInfo.cs b/Tanshu.Accounts.BI/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..8854534 --- /dev/null +++ b/Tanshu.Accounts.BI/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Tanshu.Accounts.LiteDBService")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Tanshu.Accounts.LiteDBService")] +[assembly: AssemblyCopyright("Copyright © 2009")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("70c26187-076c-49a3-8cf1-faa4ba15fc82")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Tanshu.Accounts.BI/RoleBI.cs b/Tanshu.Accounts.BI/RoleBI.cs new file mode 100644 index 0000000..fc31dd1 --- /dev/null +++ b/Tanshu.Accounts.BI/RoleBI.cs @@ -0,0 +1,74 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; + +namespace Tanshu.Accounts.BI +{ + public delegate bool AuthenticateUser(out string userName); + public class RoleBI : IDisposable + { + string roleID; + Guid userID; + bool elevated; + AccountsPrincipal originalUser; + AuthenticateUser authenticateUser; + public RoleBI(string roleID, Guid userID) + { + this.roleID = roleID; + this.userID = userID; + elevated = false; + originalUser = null; + authenticateUser = null; + } + public bool IsAllowed + { + get + { + return new MembershipBI().IsUserInRole(userID, roleID); + } + } + + public bool IsElevated + { + get + { + return elevated; + } + } + + public void Evelvate(AuthenticateUser authenticateUser) + { + this.authenticateUser = authenticateUser; + string userName; + if (this.authenticateUser(out userName)) + { + originalUser = (AccountsPrincipal)Thread.CurrentPrincipal; + SetElevation(userName); + } + } + private void SetElevation(string userName) + { + if (userName.Contains(":")) + userName = userName.Substring(userName.IndexOf(":") + 1); + + AccountsPrincipal principal = AccountsPrincipal.CreateAccountsPrincipal(new Tanshu.Accounts.BI.MembershipBI().GetRolesForUser(userName), + new MembershipBI().GetUserFromName(userName)); + + // bind the generic principal to the thread + Thread.CurrentPrincipal = principal; + userName = ((AccountsIdentity)principal.Identity).UserInfo.Name; + userID = ((AccountsIdentity)principal.Identity).UserInfo.UserID; + elevated = true; + } + + public void Dispose() + { + if (elevated) + { + Thread.CurrentPrincipal = originalUser; + } + } + } +} diff --git a/Tanshu.Accounts.BI/SaleVoucherBI.cs b/Tanshu.Accounts.BI/SaleVoucherBI.cs new file mode 100644 index 0000000..e481aa1 --- /dev/null +++ b/Tanshu.Accounts.BI/SaleVoucherBI.cs @@ -0,0 +1,224 @@ +using System; +using System.Collections.Generic; +using System.Data.SqlClient; +using Tanshu.Accounts.Contracts; +using Tanshu.Accounts.DAOFactory; +using Tanshu.Data.DAO; + +namespace Tanshu.Accounts.BI +{ + public class SaleVoucherBI : ISaleVoucherBI + { + public SalesBillItemBO GetDefaultSaleBillItem(Guid productID) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (ISaleVoucherMixDAO dao = factory.GetSaleVoucherMixDAO(connection)) + { + return dao.GetDefaultSaleBillItem(productID); + } + } + } + public decimal GetProductDiscountLimit(Guid productID) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (ISaleVoucherMixDAO dao = factory.GetSaleVoucherMixDAO(connection)) + { + return dao.GetProductDiscountLimit(productID); + } + } + } + public bool IsBillPrinted(Guid voucherID) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (ISaleVoucherMixDAO dao = factory.GetSaleVoucherMixDAO(connection)) + { + return dao.IsBillPrinted(voucherID); + } + } + } + public bool Insert(SaleVoucherBO saleVoucher, List inventory) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IVoucherDAO vdao = factory.GetVoucherDAO(connection)) + { + using (ISaleVoucherDAO svdao = factory.GetSaleVoucherDAO(connection)) + { + using (IInventoryDAO idao = factory.GetInventoryDAO(connection)) + { + connection.BeginTransaction(); + #region Voucher + VoucherBO myVoucher = (VoucherBO)saleVoucher; + myVoucher.Date = null; + vdao.Insert(myVoucher); + #endregion + #region Transaction Sale + svdao.Insert(saleVoucher); + #endregion + #region Inventory + foreach (InventoryBO i in inventory) + { + i.VoucherID = saleVoucher.VoucherID; + InventoryBO myInventory = i; + idao.Insert(myInventory); + } + #endregion + connection.CommitTransaction(); + return true; + } + } + } + } + } + public bool Update(SaleVoucherBO saleVoucher, List inventory) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IVoucherDAO vdao = factory.GetVoucherDAO(connection)) + { + using (ISaleVoucherDAO svdao = factory.GetSaleVoucherDAO(connection)) + { + using (IInventoryDAO idao = factory.GetInventoryDAO(connection)) + { + connection.BeginTransaction(); + #region Voucher + VoucherBO myVoucher = (VoucherBO)saleVoucher; + vdao.Update(myVoucher); + #endregion + #region Transaction Sale + svdao.Update(saleVoucher); + #endregion + #region Inventory + idao.Delete(saleVoucher.VoucherID); + foreach (InventoryBO i in inventory) + { + i.VoucherID = saleVoucher.VoucherID; + InventoryBO myInventory = i; + idao.Insert(myInventory); + } + #endregion + connection.CommitTransaction(); + return true; + } + } + } + } + } + public bool GetSaleVoucher(Guid voucherID, ref SaleVoucherBO voucherSale, ref List iList) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (ISaleVoucherDAO svdao = factory.GetSaleVoucherDAO(connection)) + { + using (IInventoryDAO idao = factory.GetInventoryDAO(connection)) + { + voucherSale = svdao.GetVoucherSale(voucherID); + iList = idao.GetInventories(voucherID); + return true; + } + } + } + } + + public List GetPendingBills(PendingType list) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (ISaleVoucherMixDAO dao = factory.GetSaleVoucherMixDAO(connection)) + { + return dao.GetPendingBills(list); + } + } + } + + public Guid? GetPendingVoucherID(string tableID) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (ISaleVoucherMixDAO dao = factory.GetSaleVoucherMixDAO(connection)) + { + return dao.GetPendingVoucherID(tableID); + } + } + } + public List SaleInventory(Dictionary.ValueCollection list, Guid? voucherID) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (ISaleVoucherMixDAO dao = factory.GetSaleVoucherMixDAO(connection)) + { + return dao.SaleInventory(list, voucherID); + } + } + } + public void GetComplexBillInformation(Guid voucherID, Guid complexProductID, ref decimal rate, ref decimal quantity, ref string name) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (ISaleVoucherMixDAO dao = factory.GetSaleVoucherMixDAO(connection)) + { + dao.GetComplexBillInformation(voucherID, complexProductID, ref rate, ref quantity, ref name); + } + } + } + public void SetAlarm(Guid voucherID, DateTime? alarmTime) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (ISaleVoucherDAO dao = factory.GetSaleVoucherDAO(connection)) + { + dao.SetAlarm(voucherID, alarmTime); + } + } + } + public void VoidBill(Guid voucherID, string reason) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (ISaleVoucherDAO dao = factory.GetSaleVoucherDAO(connection)) + { + dao.VoidBill(voucherID, reason); + } + } + } + + public void DeclareBillsPaid(Guid userID, List billList, bool creditCard) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (ISaleVoucherMixDAO dao = factory.GetSaleVoucherMixDAO(connection)) + { + dao.DeclareBillsPaid(userID, billList, creditCard); + } + } + } + + public void ToggleImportant(Guid voucherID) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (ISaleVoucherMixDAO dao = factory.GetSaleVoucherMixDAO(connection)) + { + dao.ToggleImportant(voucherID); + } + } + } + } +} diff --git a/Tanshu.Accounts.BI/SalesAnalysisBI.cs b/Tanshu.Accounts.BI/SalesAnalysisBI.cs new file mode 100644 index 0000000..a170a14 --- /dev/null +++ b/Tanshu.Accounts.BI/SalesAnalysisBI.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; +//using System.Linq; +using System.Text; +using System.Data.SqlClient; +using Tanshu.Accounts.Contracts; +using Tanshu.Accounts.DAOFactory; +using Tanshu.Data.DAO; + +namespace Tanshu.Accounts.BI +{ + public class SalesAnalysisBI : ISalesAnalysisBI + { + public List GetSaleDetail(DateTime startDate, DateTime finishDate, Guid costCenterID) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (ISalesAnalysisDAO dao = factory.GetSalesAnalysisDAO(connection)) + { + return dao.GetSaleDetail(startDate, finishDate, costCenterID); + } + } + } + public List GetSale(DateTime startDate, DateTime finishDate) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (ISalesAnalysisDAO dao = factory.GetSalesAnalysisDAO(connection)) + { + return dao.GetSale(startDate, finishDate); + } + } + } + public void GetAdditionalInfo(ref decimal freeSale, ref decimal voids, ref decimal pending, ref decimal net, ref decimal tax, DateTime startDate, DateTime finishDate) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (ISalesAnalysisDAO dao = factory.GetSalesAnalysisDAO(connection)) + { + dao.GetAdditionalInfo(ref freeSale, ref voids, ref pending, ref net, ref tax, startDate, finishDate); + } + } + } + public List GetSalesTaxReturn(DateTime startDate, DateTime finishDate, ref decimal freeSale, ref decimal voids, ref decimal pending, ref decimal net, ref decimal tax) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (ISalesAnalysisDAO dao = factory.GetSalesAnalysisDAO(connection)) + { + return dao.GetSalesTaxReturn(startDate, finishDate, ref freeSale, ref voids, ref pending, ref net, ref tax); + } + } + } + } +} diff --git a/Tanshu.Accounts.BI/SecurityBI.cs b/Tanshu.Accounts.BI/SecurityBI.cs new file mode 100644 index 0000000..61912e0 --- /dev/null +++ b/Tanshu.Accounts.BI/SecurityBI.cs @@ -0,0 +1,97 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Collections; +using System.Security.Principal; +using System.Globalization; +using System.Threading; +using Tanshu.Accounts.Contracts; + +namespace Tanshu.Accounts.BI +{ + public class AccountsIdentity : IIdentity + { + // the authentication type for us is always database + private static string AuthenticationTypeString = "Database"; + + // hash table with all the user info we have + private UserBO userInfo; + + // create the user identity; all user information is in the + // hashtable passed along + private AccountsIdentity(UserBO UserInfo) + { + this.userInfo = UserInfo; + } + + //create a user identity and return it to the caller + public static AccountsIdentity CreateUserIdentity(UserBO UserInfo) + { + return new AccountsIdentity(UserInfo); + } + // returns the name of the identity + public string Name { get { return UserInfo.Name; } } + + // returns the userID of the identity + public UserBO UserInfo { get { return userInfo; } } + + // returns whether or not identity is authenticated + public bool IsAuthenticated { get { return true; } } + + // the type of authentication + public string AuthenticationType { get { return AuthenticationTypeString; } } + } + public class AccountsPrincipal : IPrincipal + { + // stores the list of roles user has + private string[] userRoles; + + // the user identity we create and associate with this principal + private AccountsIdentity userIdentity; + + // constructor: stores role and permission info and creates + // custom identity + private AccountsPrincipal(string[] userRoles, UserBO userInfo) + { + this.userRoles = userRoles; + + // creates the IIdentity for the user and associates it with + // this IPrincipal + userIdentity = AccountsIdentity.CreateUserIdentity(userInfo); + } + + // create the security principal and return it to the caller + public static AccountsPrincipal CreateAccountsPrincipal(string[] userRoles, UserBO userInfo) + { + return new AccountsPrincipal(userRoles, userInfo); + } + // returns the Identity object associated with the principal + public IIdentity Identity + { + get + { + return userIdentity; + } + } + + // checks whether user belongs to role + public bool IsInRole(string Role) + { + //return userRoles.Where(ur => ur.ToLower() == Role.ToLower()).Count() > 1; + return (userRoles.Where(ur => ur.Trim().ToLower() == Role.Trim().ToLower()).Count() > 0 ? true : false); + } + } + public static class CurrentUser + { + public static UserBO user + { + get + { + AccountsIdentity identity = (AccountsIdentity)Thread.CurrentPrincipal.Identity; + return identity.UserInfo; + } + } + } + +} diff --git a/Tanshu.Accounts.BI/Tanshu.Accounts.BI.csproj b/Tanshu.Accounts.BI/Tanshu.Accounts.BI.csproj new file mode 100644 index 0000000..5d03b9f --- /dev/null +++ b/Tanshu.Accounts.BI/Tanshu.Accounts.BI.csproj @@ -0,0 +1,108 @@ + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {0B43ECD4-3701-4CD3-82EC-617D7D590BBB} + Library + Properties + Tanshu.Accounts.BI + Tanshu.Accounts.BI + {3D9AD99F-2412-4246-B90B-4EAA41C64699};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + /client:"WcfTestClient.exe" + v3.5 + + + true + full + false + ..\Bin\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + ..\Bin\ + TRACE + prompt + 4 + + + + + + 3.5 + + + + 3.0 + + + 3.0 + + + + + 3.5 + + + False + ..\Include\Tanshu.Common.dll + + + False + ..\Include\Tanshu.Data.dll + + + False + ..\Include\Tanshu.Logging.dll + + + + + + + + + + + + + + + + + + + + + + {59A6F8B8-12EE-4D8E-BEBB-61CB665A2C17} + Tanshu.Accounts.Contracts + + + {AC7AA7C5-4712-4992-B733-092D703E7AA9} + Tanshu.Accounts.DAOFactory + + + + + + + + + True + + + + + \ No newline at end of file diff --git a/Tanshu.Accounts.BI/Tanshu.Accounts.BI.csproj.user b/Tanshu.Accounts.BI/Tanshu.Accounts.BI.csproj.user new file mode 100644 index 0000000..303b350 --- /dev/null +++ b/Tanshu.Accounts.BI/Tanshu.Accounts.BI.csproj.user @@ -0,0 +1,17 @@ + + + ProjectFiles + + + + + + RunFiles + + + False + + + + + \ No newline at end of file diff --git a/Tanshu.Accounts.BI/UserBI.cs b/Tanshu.Accounts.BI/UserBI.cs new file mode 100644 index 0000000..2957bc8 --- /dev/null +++ b/Tanshu.Accounts.BI/UserBI.cs @@ -0,0 +1,107 @@ +using System; +using System.Collections.Generic; +//using System.Linq; +using System.Text; +using Tanshu.Accounts.Contracts; +using System.Data.SqlClient; +using Tanshu.Accounts.DAOFactory; +using Tanshu.Data.DAO; + + +namespace Tanshu.Accounts.BI +{ + public class UserBI : IUserBI + { + public UserBO GetUser(Guid userID) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IUserDAO dao = factory.GetUserDAO(connection)) + { + return dao.GetUser(userID); + } + } + } + public bool ChangePassword(UserBO userData, string newPassword) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IUserDAO dao = factory.GetUserDAO(connection)) + { + return dao.ChangePassword(userData, newPassword); + } + } + } + public List GetUsers() + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IUserDAO dao = factory.GetUserDAO(connection)) + { + return dao.GetUsers(); + } + } + } + public List GetFilteredUsers(Dictionary filter) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IUserDAO dao = factory.GetUserDAO(connection)) + { + return dao.GetFilteredUsers(filter); + } + } + } + public bool UserExists(string userName) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IUserDAO dao = factory.GetUserDAO(connection)) + { + return dao.UserExists(userName); + } + } + } + public bool Insert(UserBO user) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IUserDAO dao = factory.GetUserDAO(connection)) + { + return dao.Insert(user); + } + } + } + + public bool Update(UserBO user) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IUserDAO dao = factory.GetUserDAO(connection)) + { + return dao.Update(user); + } + } + } + + public bool Delete(Guid userID) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IUserDAO dao = factory.GetUserDAO(connection)) + { + return dao.Delete(userID); + } + } + + } + } +} diff --git a/Tanshu.Accounts.BI/WaiterBI.cs b/Tanshu.Accounts.BI/WaiterBI.cs new file mode 100644 index 0000000..e9194ca --- /dev/null +++ b/Tanshu.Accounts.BI/WaiterBI.cs @@ -0,0 +1,99 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Tanshu.Accounts.Contracts; +using System.Data.SqlClient; +using Tanshu.Accounts.DAOFactory; +using Tanshu.Data.DAO; + +namespace Tanshu.Accounts.BI +{ + public class WaiterBI : IWaiterBI + { + public bool Insert(WaiterBO waiter) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IWaiterDAO dao = factory.GetWaiterDAO(connection)) + { + + return dao.Insert(waiter); + } + } + } + public bool Update(WaiterBO waiter) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IWaiterDAO dao = factory.GetWaiterDAO(connection)) + { + + return dao.Update(waiter); + } + } + } + public bool Delete(Guid waiterID) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IWaiterDAO dao = factory.GetWaiterDAO(connection)) + { + + return dao.Delete(waiterID); + } + } + } + + public WaiterBO GetWaiter(Guid waiterID) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IWaiterDAO dao = factory.GetWaiterDAO(connection)) + { + + return dao.GetWaiter(waiterID); + } + } + } + public WaiterBO GetWaiter(int code) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IWaiterDAO dao = factory.GetWaiterDAO(connection)) + { + + return dao.GetWaiter(code); + } + } + } + public List GetWaiters() + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IWaiterDAO dao = factory.GetWaiterDAO(connection)) + { + + return dao.GetWaiters(); + } + } + } + public List GetFilteredWaiters(Dictionary filter) + { + GetFactory factory = GetFactory.GetDAOFactory(Database.GetFactoryType); + using (IConnectionDAO connection = factory.Connection) + { + using (IWaiterDAO dao = factory.GetWaiterDAO(connection)) + { + + return dao.GetFilteredWaiters(filter); + } + } + } + } +} diff --git a/Tanshu.Accounts.Contracts/Communication/Delegates.cs b/Tanshu.Accounts.Contracts/Communication/Delegates.cs new file mode 100644 index 0000000..165f23f --- /dev/null +++ b/Tanshu.Accounts.Contracts/Communication/Delegates.cs @@ -0,0 +1,10 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Tanshu.Accounts.Contracts +{ + public delegate void ShowProgessDelegate(decimal mininum, decimal maximum, decimal current, string message); + //public delegate UserBO IsInRole(bool authenticated, decimal maximum, decimal current, string message); +} diff --git a/Tanshu.Accounts.Contracts/DAOFactory/AdvanceDAO.cs b/Tanshu.Accounts.Contracts/DAOFactory/AdvanceDAO.cs new file mode 100644 index 0000000..ee70851 --- /dev/null +++ b/Tanshu.Accounts.Contracts/DAOFactory/AdvanceDAO.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using Tanshu.Accounts.Contracts; + +namespace Tanshu.Accounts.DAOFactory +{ + public interface IAdvanceDAO :IDisposable + { + void Insert(AdvanceBO advance); + List GetAdvances(DateTime fromDate, DateTime toDate, bool all); + void Adjust(Guid advanceID, Guid userID); + + } +} diff --git a/Tanshu.Accounts.Contracts/DAOFactory/CheckoutDAO.cs b/Tanshu.Accounts.Contracts/DAOFactory/CheckoutDAO.cs new file mode 100644 index 0000000..32f3c68 --- /dev/null +++ b/Tanshu.Accounts.Contracts/DAOFactory/CheckoutDAO.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using Tanshu.Accounts.Contracts; + +namespace Tanshu.Accounts.DAOFactory +{ + public interface ICheckoutDAO :IDisposable + { + decimal GetPending(ref string info); + decimal GetCreditCard(ref string info); + decimal GetVoids(ref string info); + decimal GetOpenings(); + decimal GetReceipts(); + decimal GetPayments(); + decimal GetAdditionalVoids(); + decimal GetRetainedOvernight(); + decimal GetAdvancesReceived(); + decimal GetAdvancesAdjusted(); + string GetPaymentString(); + string GetActiveCashiers(); + decimal GetNetSales(); + decimal GetDiscountsBills(ref string info); + + decimal GetOldPending(); + decimal GetOldReceipts(); + decimal GetOldVoided(); + + } +} diff --git a/Tanshu.Accounts.Contracts/DAOFactory/CustomerDAO.cs b/Tanshu.Accounts.Contracts/DAOFactory/CustomerDAO.cs new file mode 100644 index 0000000..a0cd817 --- /dev/null +++ b/Tanshu.Accounts.Contracts/DAOFactory/CustomerDAO.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using Tanshu.Accounts.Contracts; + +namespace Tanshu.Accounts.DAOFactory +{ + public interface ICustomerDAO :IDisposable + { + void Insert(CustomerBO customer); + void Update(CustomerBO customer); + void Delete(Guid customerID); + + CustomerBO GetCustomer(Guid customerID); + List GetFilteredCustomers(Dictionary filter); + List GetCustomerLedgers(); + List GetCustomers(); + List GetCustomers(Guid customerID); + } +} diff --git a/Tanshu.Accounts.Contracts/DAOFactory/InventoryDAO.cs b/Tanshu.Accounts.Contracts/DAOFactory/InventoryDAO.cs new file mode 100644 index 0000000..e4333ce --- /dev/null +++ b/Tanshu.Accounts.Contracts/DAOFactory/InventoryDAO.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using Tanshu.Accounts.Contracts; + +namespace Tanshu.Accounts.DAOFactory +{ + public interface IInventoryDAO : IDisposable + { + bool Insert(InventoryBO inventory); + bool Update(InventoryBO inventory); + bool Delete(Guid voucherID); + bool Delete(Guid voucherID, Guid productID); + + List GetInventories(Guid voucherID); + } +} diff --git a/Tanshu.Accounts.Contracts/DAOFactory/LedgerDAO.cs b/Tanshu.Accounts.Contracts/DAOFactory/LedgerDAO.cs new file mode 100644 index 0000000..acc99c2 --- /dev/null +++ b/Tanshu.Accounts.Contracts/DAOFactory/LedgerDAO.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using Tanshu.Accounts.Contracts; + +namespace Tanshu.Accounts.DAOFactory +{ + public interface ILedgerDAO : IDisposable + { + bool Insert(LedgerBO ledger); + LedgerBO GetLedger(Guid ledgerID); + LedgerBO GetLedger(string name); + List GetLedgers(char type); + bool Delete(Guid ledgerID); + bool Update(LedgerBO ledger); + List GetLedgers(); + + } +} diff --git a/Tanshu.Accounts.Contracts/DAOFactory/ManagementDAO.cs b/Tanshu.Accounts.Contracts/DAOFactory/ManagementDAO.cs new file mode 100644 index 0000000..d2bfdc1 --- /dev/null +++ b/Tanshu.Accounts.Contracts/DAOFactory/ManagementDAO.cs @@ -0,0 +1,19 @@ +using System; +using Tanshu.Accounts.Contracts; +using System.Collections.Generic; + +namespace Tanshu.Accounts.DAOFactory +{ + public interface IManagementDAO : IDisposable + { + decimal GetBalance(decimal? tax); + List GetUpdateBillList(decimal tax, bool voided, bool paid, bool creditCard); + decimal Update(Guid voucherID, decimal tax); + + List GetPaidBills(); + + void Reorder(ShowProgessDelegate showProgressDelegate); + + bool MergeData(string sourceDB, string targetDB); + } +} diff --git a/Tanshu.Accounts.Contracts/DAOFactory/MembershipDAO.cs b/Tanshu.Accounts.Contracts/DAOFactory/MembershipDAO.cs new file mode 100644 index 0000000..05abffd --- /dev/null +++ b/Tanshu.Accounts.Contracts/DAOFactory/MembershipDAO.cs @@ -0,0 +1,26 @@ +using System; +using Tanshu.Accounts.Contracts; + +namespace Tanshu.Accounts.DAOFactory +{ + public interface IMembershipDAO : IDisposable + { + bool ValidateUser(string name, string password); + + bool IsUserInRole(string username, string roleName); + + bool IsUserInRole(Guid userID, string roleName); + + string[] GetRolesForUser(string username); + + UserBO GetUserFromName(string name); + + string[] GetAllRoles(); + + void AddUsersToRoles(string[] usernames, string[] roleNames); + + void RemoveUsersFromRoles(string[] usernames, string[] roleNames); + + bool RoleExists(string roleID); + } +} diff --git a/Tanshu.Accounts.Contracts/DAOFactory/PaymentDAO.cs b/Tanshu.Accounts.Contracts/DAOFactory/PaymentDAO.cs new file mode 100644 index 0000000..bcfb22c --- /dev/null +++ b/Tanshu.Accounts.Contracts/DAOFactory/PaymentDAO.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using Tanshu.Accounts.Contracts; + +namespace Tanshu.Accounts.DAOFactory +{ + public interface IPaymentDAO : IDisposable + { + void Insert(PaymentBO payment); + List GetPayments(Guid? userID, DateTime fromDate, DateTime toDate); + void Delete(Guid paymentID); + } +} \ No newline at end of file diff --git a/Tanshu.Accounts.Contracts/DAOFactory/ProductDAO.cs b/Tanshu.Accounts.Contracts/DAOFactory/ProductDAO.cs new file mode 100644 index 0000000..273764d --- /dev/null +++ b/Tanshu.Accounts.Contracts/DAOFactory/ProductDAO.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using Tanshu.Accounts.Contracts; + +namespace Tanshu.Accounts.DAOFactory +{ + public interface IProductDAO : IDisposable + { + bool Insert(ProductBO product); + ProductBO GetProduct(Guid productID); + bool Delete(Guid productID); + bool Update(ProductBO product); + ProductBO GetProduct(string nameAndUnits); + decimal GetProductStock(DateTime date, Guid productID, Guid? voucherID); + + List GetProducts(); + + void UpdateShortName(); + + List GetFilteredProducts(Dictionary filter); + + List GetProductTypes(); + + List GetProducts(string name, int skip, int count); + } +} diff --git a/Tanshu.Accounts.Contracts/DAOFactory/SaleVoucherDAO.cs b/Tanshu.Accounts.Contracts/DAOFactory/SaleVoucherDAO.cs new file mode 100644 index 0000000..ba6ab90 --- /dev/null +++ b/Tanshu.Accounts.Contracts/DAOFactory/SaleVoucherDAO.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using Tanshu.Accounts.Contracts; + +namespace Tanshu.Accounts.DAOFactory +{ + public interface ISaleVoucherDAO : IDisposable + { + bool Insert(SaleVoucherBO saleVoucher); + bool Update(SaleVoucherBO saleVoucher); + void SetAlarm(Guid voucherID, DateTime? alarmTime); + void VoidBill(Guid voucherID, string reason); + SaleVoucherBO GetVoucherSale(Guid voucherID); + } +} diff --git a/Tanshu.Accounts.Contracts/DAOFactory/SaleVoucherMixDAO.cs b/Tanshu.Accounts.Contracts/DAOFactory/SaleVoucherMixDAO.cs new file mode 100644 index 0000000..fdada20 --- /dev/null +++ b/Tanshu.Accounts.Contracts/DAOFactory/SaleVoucherMixDAO.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using Tanshu.Accounts.Contracts; + +namespace Tanshu.Accounts.DAOFactory +{ + public interface ISaleVoucherMixDAO : IDisposable + { + SalesBillItemBO GetDefaultSaleBillItem(Guid productID); + decimal GetProductDiscountLimit(Guid productID); + bool IsBillPrinted(Guid voucherID); + + List GetPendingBills(PendingType list); + Nullable GetPendingVoucherID(string tableID); + List SaleInventory(Dictionary.ValueCollection list, Guid? voucherID); + void GetComplexBillInformation(Guid voucherID, Guid complexProductID, ref decimal rate, ref decimal quantity, ref string name); + + void DeclareBillsPaid(Guid userID, List billList, bool creditCard); + + void ToggleImportant(Guid voucherID); + } +} diff --git a/Tanshu.Accounts.Contracts/DAOFactory/SalesAnalysisDAO.cs b/Tanshu.Accounts.Contracts/DAOFactory/SalesAnalysisDAO.cs new file mode 100644 index 0000000..ca2e72b --- /dev/null +++ b/Tanshu.Accounts.Contracts/DAOFactory/SalesAnalysisDAO.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using Tanshu.Accounts.Contracts; + +namespace Tanshu.Accounts.DAOFactory +{ + public interface ISalesAnalysisDAO : IDisposable + { + List GetSalesTaxReturn(DateTime startDate, DateTime finishDate, ref decimal freeSale, ref decimal voids, ref decimal pending, ref decimal net, ref decimal tax); + void GetAdditionalInfo(ref decimal freeSale, ref decimal voids, ref decimal pending, ref decimal net, ref decimal tax, DateTime startDate, DateTime finishDate); + List GetSaleDetail(DateTime startDate, DateTime finishDate, Guid costCenterID); + List GetSale(DateTime startDate, DateTime finishDate); + } +} diff --git a/Tanshu.Accounts.Contracts/DAOFactory/TaxDAO.cs b/Tanshu.Accounts.Contracts/DAOFactory/TaxDAO.cs new file mode 100644 index 0000000..64317c9 --- /dev/null +++ b/Tanshu.Accounts.Contracts/DAOFactory/TaxDAO.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using Tanshu.Accounts.Contracts; + +namespace Tanshu.Accounts.DAOFactory +{ + public interface ITaxDAO : IDisposable + { + List GetTaxes(); + } +} diff --git a/Tanshu.Accounts.Contracts/DAOFactory/UserDAO.cs b/Tanshu.Accounts.Contracts/DAOFactory/UserDAO.cs new file mode 100644 index 0000000..2dbaf07 --- /dev/null +++ b/Tanshu.Accounts.Contracts/DAOFactory/UserDAO.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using Tanshu.Accounts.Contracts; + +namespace Tanshu.Accounts.DAOFactory +{ + public interface IUserDAO : IDisposable + { + UserBO GetUser(Guid userID); + List GetUsers(); + List GetFilteredUsers(Dictionary filter); + bool UserExists(string userName); + bool Insert(UserBO user); + + bool ChangePassword(UserBO userData, string newPassword); + + bool Update(UserBO user); + + bool Delete(Guid userID); + } +} diff --git a/Tanshu.Accounts.Contracts/DAOFactory/VoucherDAO.cs b/Tanshu.Accounts.Contracts/DAOFactory/VoucherDAO.cs new file mode 100644 index 0000000..344a944 --- /dev/null +++ b/Tanshu.Accounts.Contracts/DAOFactory/VoucherDAO.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using Tanshu.Accounts.Contracts; + +namespace Tanshu.Accounts.DAOFactory +{ + public interface IVoucherDAO : IDisposable + { + bool Insert(VoucherBO voucher); + VoucherBO GetVoucher(Guid voucherID); + bool Delete(Guid voucherID); + bool Update(VoucherBO voucher); + } +} diff --git a/Tanshu.Accounts.Contracts/DAOFactory/WaiterDAO.cs b/Tanshu.Accounts.Contracts/DAOFactory/WaiterDAO.cs new file mode 100644 index 0000000..01b459b --- /dev/null +++ b/Tanshu.Accounts.Contracts/DAOFactory/WaiterDAO.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using Tanshu.Accounts.Contracts; + +namespace Tanshu.Accounts.DAOFactory +{ + public interface IWaiterDAO : IDisposable + { + bool Insert(WaiterBO waiter); + bool Update(WaiterBO waiter); + bool Delete(Guid waiterID); + + WaiterBO GetWaiter(Guid waiterID); + WaiterBO GetWaiter(int code); + + List GetWaiters(); + List GetFilteredWaiters(Dictionary filter); + } +} diff --git a/Tanshu.Accounts.Contracts/Data Contracts/AdvanceBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/AdvanceBO.cs new file mode 100644 index 0000000..0c4b4de --- /dev/null +++ b/Tanshu.Accounts.Contracts/Data Contracts/AdvanceBO.cs @@ -0,0 +1,24 @@ +using System; +using System.Runtime.Serialization; + +namespace Tanshu.Accounts.Contracts +{ + [DataContract] + public class AdvanceBO + { + [DataMember] + public Guid AdvanceID { get; set; } + [DataMember] + public decimal Amount { get; set; } + [DataMember] + public string Narration { get; set; } + [DataMember] + public Guid CashierIn { get; set; } + [DataMember] + public DateTime DateIn { get; set; } + [DataMember] + public Guid? CashierOut { get; set; } + [DataMember] + public DateTime? DateOut { get; set; } + } +} diff --git a/Tanshu.Accounts.Contracts/Data Contracts/AdvanceDisplayBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/AdvanceDisplayBO.cs new file mode 100644 index 0000000..b3ae081 --- /dev/null +++ b/Tanshu.Accounts.Contracts/Data Contracts/AdvanceDisplayBO.cs @@ -0,0 +1,12 @@ +using System; +using System.Runtime.Serialization; + +namespace Tanshu.Accounts.Contracts +{ + [DataContract] + public class AdvanceDisplayBO : AdvanceBO + { + [DataMember] + public string Cashier { get; set; } + } +} diff --git a/Tanshu.Accounts.Contracts/Data Contracts/BillItemKey.cs b/Tanshu.Accounts.Contracts/Data Contracts/BillItemKey.cs new file mode 100644 index 0000000..19d39f1 --- /dev/null +++ b/Tanshu.Accounts.Contracts/Data Contracts/BillItemKey.cs @@ -0,0 +1,54 @@ +using System; +using System.Runtime.Serialization; + +namespace Tanshu.Accounts.Contracts +{ + public class BillItemKey + { + public BillItemKey(Guid productID, bool isNew) + { + ProductID = productID; + IsNew = isNew; + } + + public Guid ProductID + { + get; + private set; + } + public bool IsNew + { + get; + private set; + } + public override int GetHashCode() + { + return string.Format("{0} - {1}", ProductID, IsNew).GetHashCode(); + } + public override bool Equals(object obj) + { + if (obj is BillItemKey) + return (this == (BillItemKey)obj); + else + return false; + } + public override string ToString() + { + return string.Format("{0} - {1}", ProductID, IsNew); + } + + public static bool operator ==(BillItemKey a, BillItemKey b) + { + if (!(a is BillItemKey)) + return false; + if (!(b is BillItemKey)) + return false; + + return a.ProductID == b.ProductID && a.IsNew == b.IsNew; + } + public static bool operator !=(BillItemKey a, BillItemKey b) + { + return !(a == b); + } + } +} diff --git a/Tanshu.Accounts.Contracts/Data Contracts/ComplexProductBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/ComplexProductBO.cs new file mode 100644 index 0000000..7f70ad2 --- /dev/null +++ b/Tanshu.Accounts.Contracts/Data Contracts/ComplexProductBO.cs @@ -0,0 +1,28 @@ +using System; +using System.Runtime.Serialization; + +namespace Tanshu.Accounts.Contracts +{ + [DataContract] + public class ComplexProductBO + { + [DataMember] + public Guid ComplexProductID { get; set; } + [DataMember] + public Guid ProductID { get; set; } + [DataMember] + public int Code { get; set; } + [DataMember] + public string Name { get; set; } + [DataMember] + public string Units { get; set; } + [DataMember] + public decimal SalePrice { get; set; } + [DataMember] + public Guid SaleTaxID { get; set; } + [DataMember] + public decimal Quantity { get; set; } + [DataMember] + public byte[] timestamp { get; set; } + } +} diff --git a/Tanshu.Accounts.Contracts/Data Contracts/CostCenterBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/CostCenterBO.cs new file mode 100644 index 0000000..38d3562 --- /dev/null +++ b/Tanshu.Accounts.Contracts/Data Contracts/CostCenterBO.cs @@ -0,0 +1,18 @@ +using System; +using System.Runtime.Serialization; + +namespace Tanshu.Accounts.Contracts +{ + [DataContract] + public class CostCenterBO + { + [DataMember] + public Guid CostCenterID { get; set; } + [DataMember] + public int Code { get; set; } + [DataMember] + public string Name { get; set; } + [DataMember] + public byte[] timestamp { get; set; } + } +} diff --git a/Tanshu.Accounts.Contracts/Data Contracts/CustomerBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/CustomerBO.cs new file mode 100644 index 0000000..da5bc1b --- /dev/null +++ b/Tanshu.Accounts.Contracts/Data Contracts/CustomerBO.cs @@ -0,0 +1,29 @@ +using System; +using System.Runtime.Serialization; + +namespace Tanshu.Accounts.Contracts +{ + [DataContract] + public class CustomerBO + { + [DataMember] + public Guid CustomerID { get; set; } + [DataMember] + public int Code { get; set; } + [DataMember] + public string Name { get; set; } + [DataMember] + public Guid LedgerID { get; set; } + [DataMember] + public string Address { get; set; } + [DataMember] + public bool Important { get; set; } + [DataMember] + public string Phone { get; set; } + [DataMember] + public string Remarks { get; set; } + [DataMember] + public byte[] timestamp { get; set; } + + } +} diff --git a/Tanshu.Accounts.Contracts/Data Contracts/InventoryBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/InventoryBO.cs new file mode 100644 index 0000000..f34a2f4 --- /dev/null +++ b/Tanshu.Accounts.Contracts/Data Contracts/InventoryBO.cs @@ -0,0 +1,90 @@ +using System; +using System.Runtime.Serialization; + +namespace Tanshu.Accounts.Contracts +{ + [DataContract] + public class InventoryBO + { + [DataMember] + public Guid InventoryID { get; set; } + [DataMember] + public Guid VoucherID { get; set; } + [DataMember] + public Guid ProductID { get; set; } + [DataMember] + public Guid? ComplexProductID { get; set; } + private decimal quantity; + [DataMember] + public decimal Quantity + { + get { return quantity; } + set + { + quantity = value; + if (amount != null) + CalculateAmount(); + } + } + private decimal rate; + [DataMember] + public decimal Rate + { + get { return rate; } + set + { + rate = value; + if (amount != null) + CalculateAmount(); + } + } + decimal tax; + [DataMember] + public decimal Tax + { + get { return tax; } + set + { + tax = value; if (amount != null) + CalculateAmount(); + } + } + decimal discount; + + [DataMember] + public decimal Discount + { + get { return discount; } + set + { + discount = value; if (amount != null) + CalculateAmount(); + } + } + decimal? amount; + + [DataMember] + public decimal Amount + { + get + { + if (!amount.HasValue) + CalculateAmount(); + return amount.Value; + } + } + private void CalculateAmount() + { + amount = quantity * rate * (1 + tax) * (1 - discount); + } + [DataMember] + public bool IsRateFinal { get; set; } + [DataMember] + public bool RateFinal + { + get { return IsRateFinal; } + } + [DataMember] + public byte[] timestamp { get; set; } + } +} diff --git a/Tanshu.Accounts.Contracts/Data Contracts/InventoryDisplayBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/InventoryDisplayBO.cs new file mode 100644 index 0000000..8ca836c --- /dev/null +++ b/Tanshu.Accounts.Contracts/Data Contracts/InventoryDisplayBO.cs @@ -0,0 +1,12 @@ +using System; +using System.Runtime.Serialization; + +namespace Tanshu.Accounts.Contracts +{ + [DataContract] + public class InventoryDisplayBO : InventoryBO + { + [DataMember] + public string ProductName { get; set; } + } +} diff --git a/Tanshu.Accounts.Contracts/Data Contracts/JournalBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/JournalBO.cs new file mode 100644 index 0000000..ddbd45a --- /dev/null +++ b/Tanshu.Accounts.Contracts/Data Contracts/JournalBO.cs @@ -0,0 +1,41 @@ +using System; +using System.Runtime.Serialization; + +namespace Tanshu.Accounts.Contracts +{ + [DataContract] + public class JournalBO + { + [DataMember] + public Guid JournalID { get; set; } + [DataMember] + public Guid VoucherID { get; set; } + [DataMember] + public Guid LedgerID { get; set; } + [DataMember] + public Guid CostCenterID { get; set; } + [DataMember] + public decimal Amount { get; set; } + private int debit; + [DataMember] + public int Debit + { + get { return debit; } + set + { + if ((value == 1) || (value == -1)) + debit = value; + else + throw new ArgumentException("Debit can only be -1 or 1"); + } + } + [DataMember] + public decimal SignedAmount + { + get { return Amount * Debit; } + } + [DataMember] + public byte[] timestamp { get; set; } + + } +} diff --git a/Tanshu.Accounts.Contracts/Data Contracts/JournalDisplayBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/JournalDisplayBO.cs new file mode 100644 index 0000000..e0225e4 --- /dev/null +++ b/Tanshu.Accounts.Contracts/Data Contracts/JournalDisplayBO.cs @@ -0,0 +1,12 @@ +using System; +using System.Runtime.Serialization; + +namespace Tanshu.Accounts.Contracts +{ + [DataContract] + public class JournalDisplayBO : JournalBO + { + [DataMember] + public string LedgerName { get; set; } + } +} diff --git a/Tanshu.Accounts.Contracts/Data Contracts/LedgerBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/LedgerBO.cs new file mode 100644 index 0000000..3e5faf2 --- /dev/null +++ b/Tanshu.Accounts.Contracts/Data Contracts/LedgerBO.cs @@ -0,0 +1,26 @@ +using System; +using System.Runtime.Serialization; + +namespace Tanshu.Accounts.Contracts +{ + [DataContract] + public class LedgerBO + { + [DataMember] + public Guid LedgerID { get; set; } + [DataMember] + public int Code { get; set; } + [DataMember] + public string Name { get; set; } + [DataMember] + public virtual char Type { get; set; } + [DataMember] + public Guid ParentLedgerID { get; set; } + [DataMember] + public Guid CostCenterID { get; set; } + [DataMember] + public bool IsActive { get; set; } + [DataMember] + public byte[] timestamp { get; set; } + } +} diff --git a/Tanshu.Accounts.Contracts/Data Contracts/LedgerDisplayBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/LedgerDisplayBO.cs new file mode 100644 index 0000000..a3c6c95 --- /dev/null +++ b/Tanshu.Accounts.Contracts/Data Contracts/LedgerDisplayBO.cs @@ -0,0 +1,12 @@ +using System; +using System.Runtime.Serialization; + +namespace Tanshu.Accounts.Contracts +{ + [DataContract] + public class LedgerDisplayBO : LedgerBO + { + [DataMember] + public string CostCenter { get; set; } + } +} diff --git a/Tanshu.Accounts.Contracts/Data Contracts/LedgerTypeBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/LedgerTypeBO.cs new file mode 100644 index 0000000..5cea3f1 --- /dev/null +++ b/Tanshu.Accounts.Contracts/Data Contracts/LedgerTypeBO.cs @@ -0,0 +1,20 @@ +using System; +using System.Runtime.Serialization; + +namespace Tanshu.Accounts.Contracts +{ + [DataContract] + public class LedgerTypeBO + { + [DataMember] + public char TypeID { get; set; } + [DataMember] + public string Name { get; set; } + [DataMember] + public int SortOrder { get; set; } + [DataMember] + public short Debit { get; set; } + [DataMember] + public byte Location { get; set; } + } +} diff --git a/Tanshu.Accounts.Contracts/Data Contracts/PaymentBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/PaymentBO.cs new file mode 100644 index 0000000..b9b45ac --- /dev/null +++ b/Tanshu.Accounts.Contracts/Data Contracts/PaymentBO.cs @@ -0,0 +1,23 @@ +using System; +using System.Runtime.Serialization; + +namespace Tanshu.Accounts.Contracts +{ + [DataContract] + public class PaymentBO + { + [DataMember] + public Guid PaymentID { get; set; } + [DataMember] + public DateTime Date { get; set; } + [DataMember] + public string Type { get; set; } + [DataMember] + public Guid CashierID { get; set; } + [DataMember] + public decimal Amount { get; set; } + [DataMember] + public string Narration { get; set; } + + } +} diff --git a/Tanshu.Accounts.Contracts/Data Contracts/PaymentDisplayBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/PaymentDisplayBO.cs new file mode 100644 index 0000000..f13ce59 --- /dev/null +++ b/Tanshu.Accounts.Contracts/Data Contracts/PaymentDisplayBO.cs @@ -0,0 +1,12 @@ +using System; +using System.Runtime.Serialization; + +namespace Tanshu.Accounts.Contracts +{ + [DataContract] + public class PaymentDisplayBO : PaymentBO + { + [DataMember] + public string Cashier { get; set; } + } +} diff --git a/Tanshu.Accounts.Contracts/Data Contracts/PaymentSheetBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/PaymentSheetBO.cs new file mode 100644 index 0000000..6d49ef0 --- /dev/null +++ b/Tanshu.Accounts.Contracts/Data Contracts/PaymentSheetBO.cs @@ -0,0 +1,34 @@ +using System; +using System.Runtime.Serialization; + +namespace Tanshu.Accounts.Contracts +{ + [DataContract] + public class PaymentSheetBO + { + [DataMember] + public Guid SalaryPaymentID { get; set; } + [DataMember] + public Guid LedgerID { get; set; } + [DataMember] + public Guid VoucherID { get; set; } + [DataMember] + public decimal Opening { get; set; } + [DataMember] + public decimal Salary { get; set; } + [DataMember] + public decimal Total + { + get { return Opening + Salary; } + } + [DataMember] + public int Paid { get; set; } + [DataMember] + public decimal Closing + { + get { return (Opening + Salary) - Paid; } + } + [DataMember] + public byte[] timestamp { get; set; } + } +} diff --git a/Tanshu.Accounts.Contracts/Data Contracts/PaymentSheetDisplayBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/PaymentSheetDisplayBO.cs new file mode 100644 index 0000000..4e6325f --- /dev/null +++ b/Tanshu.Accounts.Contracts/Data Contracts/PaymentSheetDisplayBO.cs @@ -0,0 +1,14 @@ +using System; +using System.Runtime.Serialization; + +namespace Tanshu.Accounts.Contracts +{ + [DataContract] + public class PaymentSheetDisplayBO : PaymentSheetBO + { + [DataMember] + public string Name { get; set; } + [DataMember] + public string Department { get; set; } + } +} diff --git a/Tanshu.Accounts.Contracts/Data Contracts/PendingBillsBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/PendingBillsBO.cs new file mode 100644 index 0000000..3ec0073 --- /dev/null +++ b/Tanshu.Accounts.Contracts/Data Contracts/PendingBillsBO.cs @@ -0,0 +1,51 @@ +using System; +using System.Runtime.Serialization; + +namespace Tanshu.Accounts.Contracts +{ + [DataContract] + public enum PendingType + { + [EnumMember] + Today = 0, + [EnumMember] + Week = 1, + [EnumMember] + All = 2, + [EnumMember] + Important = 4, + [EnumMember] + Alarms = 8 + } + + [DataContract] + public class PendingBillsBO + { + [DataMember] + public Guid voucherID { get; set; } + [DataMember] + public string BillNo { get; set; } + [DataMember] + public string Kot { get; set; } + [DataMember] + public string TableID { get; set; } + [DataMember] + public decimal Amount { get; set; } + [DataMember] + public bool Important { get; set; } + [DataMember] + public bool Alarm { get; set; } + [DataMember] + public DateTime BookingTime { get; set; } + [DataMember] + public DateTime LastEdited { get; set; } + [DataMember] + public string Waiter { get; set; } + [DataMember] + public string Cashier { get; set; } + [DataMember] + public bool Printed { get; set; } + [DataMember] + public Nullable AlarmTime { get; set; } + } +} diff --git a/Tanshu.Accounts.Contracts/Data Contracts/ProductBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/ProductBO.cs new file mode 100644 index 0000000..da4163d --- /dev/null +++ b/Tanshu.Accounts.Contracts/Data Contracts/ProductBO.cs @@ -0,0 +1,42 @@ +using System; +using System.Runtime.Serialization; + +namespace Tanshu.Accounts.Contracts +{ + [DataContract] + public class ProductBO + { + [DataMember] + public Guid ProductID { get; set; } + [DataMember] + public int Code { get; set; } + [DataMember] + public string Name { get; set; } + [DataMember] + public string Units { get; set; } + [DataMember] + public Guid ProductTypeID { get; set; } + [DataMember] + public Guid SaleLedgerID { get; set; } + [DataMember] + public Guid SaleTaxID { get; set; } + [DataMember] + public decimal SalePrice { get; set; } + [DataMember] + public Guid PurchaseLedgerID { get; set; } + [DataMember] + public Guid PurchaseTaxID { get; set; } + [DataMember] + public decimal PurchasePrice { get; set; } + [DataMember] + public bool Discontinued { get; set; } + [DataMember] + public decimal MinimumLevel { get; set; } + [DataMember] + public decimal MaximumLevel { get; set; } + [DataMember] + public byte[] timestamp { get; set; } + [DataMember] + public int SortOrder { get; set; } + } +} diff --git a/Tanshu.Accounts.Contracts/Data Contracts/ProductDisplayBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/ProductDisplayBO.cs new file mode 100644 index 0000000..330ae33 --- /dev/null +++ b/Tanshu.Accounts.Contracts/Data Contracts/ProductDisplayBO.cs @@ -0,0 +1,14 @@ +using System; +using System.Runtime.Serialization; + +namespace Tanshu.Accounts.Contracts +{ + [DataContract] + public class ProductDisplayBO : ProductBO + { + [DataMember] + public decimal Price { get; set; } + [DataMember] + public string Type { get; set; } + } +} diff --git a/Tanshu.Accounts.Contracts/Data Contracts/ProductDisplaySmallBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/ProductDisplaySmallBO.cs new file mode 100644 index 0000000..21fca42 --- /dev/null +++ b/Tanshu.Accounts.Contracts/Data Contracts/ProductDisplaySmallBO.cs @@ -0,0 +1,20 @@ +using System; +using System.Runtime.Serialization; + +namespace Tanshu.Accounts.Contracts +{ + [DataContract] + public class ProductDisplaySmallBO + { + [DataMember] + public int Code { get; set; } + [DataMember] + public string Name { get; set; } + [DataMember] + public decimal Price { get; set; } + [DataMember] + public string Category { get; set; } + [DataMember] + public Guid ProductID { get; set; } + } +} diff --git a/Tanshu.Accounts.Contracts/Data Contracts/ProductTypeBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/ProductTypeBO.cs new file mode 100644 index 0000000..2a9252e --- /dev/null +++ b/Tanshu.Accounts.Contracts/Data Contracts/ProductTypeBO.cs @@ -0,0 +1,22 @@ +using System; +using System.Runtime.Serialization; + +namespace Tanshu.Accounts.Contracts +{ + [DataContract] + public class ProductTypeBO + { + [DataMember] + public Guid ProductTypeID { get; set; } + [DataMember] + public string Name { get; set; } + [DataMember] + public decimal DiscountLimit { get; set; } + [DataMember] + public bool IsForSale { get; set; } + [DataMember] + public bool IsForPurchae { get; set; } + [DataMember] + public byte[] timestamp { get; set; } + } +} diff --git a/Tanshu.Accounts.Contracts/Data Contracts/RequirementBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/RequirementBO.cs new file mode 100644 index 0000000..a58f6ab --- /dev/null +++ b/Tanshu.Accounts.Contracts/Data Contracts/RequirementBO.cs @@ -0,0 +1,45 @@ +using System; +using System.Runtime.Serialization; + +namespace Tanshu.Accounts.Contracts +{ + [DataContract] + public class RequirementBO + { + [DataMember] + public Guid RequirementID { get; set; } + [DataMember] + public Guid LedgerID { get; set; } + [DataMember] + public DateTime Date { get; set; } + [DataMember] + public Guid ProductID { get; set; } + [DataMember] + public decimal Requirement { get; set; } + [DataMember] + public string Remarks { get; set; } + [DataMember] + public byte Status { get; set; } + // Status 0 - Pending, 1 - Ordered, 2 - Cancelled, 3 - Fulfilled + [DataMember] + public DateTime StatusDate { get; set; } + [DataMember] + public decimal Stock { get; set; } + [DataMember] + public decimal Price { get; set; } + [DataMember] + public decimal Ordered { get; set; } + [DataMember] + public decimal OrderRate { get; set; } + [DataMember] + public decimal OrderAmount + { + get + { + return Ordered * OrderRate; + } + } + [DataMember] + public byte[] timestamp { get; set; } + } +} diff --git a/Tanshu.Accounts.Contracts/Data Contracts/RequirementDisplayBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/RequirementDisplayBO.cs new file mode 100644 index 0000000..6becbf1 --- /dev/null +++ b/Tanshu.Accounts.Contracts/Data Contracts/RequirementDisplayBO.cs @@ -0,0 +1,33 @@ +using System; +using System.Runtime.Serialization; + +namespace Tanshu.Accounts.Contracts +{ + [DataContract] + public class RequirementDisplayBO : RequirementBO + { + [DataMember] + public string Product { get; set; } + [DataMember] + public string Ledger { get; set; } + [DataMember] + public string StatusDisplay + { + get + { + if (base.Status == 0) + return "Pending"; + else if (base.Status == 1) + return "Ordered"; + else if (base.Status == 2) + return "Cancelled"; + else if (base.Status == 3) + return "Fulfilled"; + else + throw new ArgumentException("Status message is invalid"); + } + } + [DataMember] + public decimal OrderTotal { get; set; } + } +} diff --git a/Tanshu.Accounts.Contracts/Data Contracts/SalarySheetBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/SalarySheetBO.cs new file mode 100644 index 0000000..2abab05 --- /dev/null +++ b/Tanshu.Accounts.Contracts/Data Contracts/SalarySheetBO.cs @@ -0,0 +1,52 @@ +using System; +using System.Runtime.Serialization; + +namespace Tanshu.Accounts.Contracts +{ + [DataContract] + public class SalarySheetBO + { + [DataMember] + public Guid SalarySheetID { get; set; } + [DataMember] + public Guid VoucherID { get; set; } + [DataMember] + public Guid LedgerID { get; set; } + [DataMember] + public int Salary { get; set; } + [DataMember] + public decimal WorkingDays { get; set; } + [DataMember] + public decimal Present { get; set; } + [DataMember] + public decimal Offs { get; set; } + [DataMember] + public decimal Overtime { get; set; } + [DataMember] + public int Deductions { get; set; } + [DataMember] + public int TotalSalary + { + get + { + decimal amount = 0; + + // Salary + amount = (Present + Offs + Overtime) * Salary / WorkingDays; + + // Less Deductions + amount -= Deductions; + + // Roundoff + amount = Math.Round(amount); + + return Convert.ToInt32(amount); + } + + } + [DataMember] + public string Remarks { get; set; } + [DataMember] + public byte[] timestamp { get; set; } + } +} diff --git a/Tanshu.Accounts.Contracts/Data Contracts/SalarySheetDisplayBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/SalarySheetDisplayBO.cs new file mode 100644 index 0000000..d1bef2e --- /dev/null +++ b/Tanshu.Accounts.Contracts/Data Contracts/SalarySheetDisplayBO.cs @@ -0,0 +1,20 @@ +using System; +using System.Runtime.Serialization; + +namespace Tanshu.Accounts.Contracts +{ + [DataContract] + public class SalarySheetDisplayBO : SalarySheetBO + { + [DataMember] + public int Code { get; set; } + [DataMember] + public string Name { get; set; } + [DataMember] + public string CostCenter { get; set; } + [DataMember] + public int CurrentSalary { get; set; } + [DataMember] + public bool IsComputed { get; set; } + } +} diff --git a/Tanshu.Accounts.Contracts/Data Contracts/SaleVoucherBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/SaleVoucherBO.cs new file mode 100644 index 0000000..e5492ec --- /dev/null +++ b/Tanshu.Accounts.Contracts/Data Contracts/SaleVoucherBO.cs @@ -0,0 +1,36 @@ +using System; +using System.Runtime.Serialization; + +namespace Tanshu.Accounts.Contracts +{ + [DataContract] + public class SaleVoucherBO : VoucherBO + { + [DataMember] + public string BillID { get; set; } + [DataMember] + public string TableID { get; set; } + [DataMember] + public Guid WaiterID { get; set; } + [DataMember] + public Guid CustomerID { get; set; } + [DataMember] + public bool Paid { get; set; } + [DataMember] + public bool Void { get; set; } + [DataMember] + public string VoidReason { get; set; } + [DataMember] + public bool Printed { get; set; } + [DataMember] + public DateTime? Alarm { get; set; } + [DataMember] + public string KotID { get; set; } + [DataMember] + public bool CreditCard { get; set; } + [DataMember] + public bool IsImportant { get; set; } + [DataMember] + public byte[] SaleTimestamp { get; set; } + } +} diff --git a/Tanshu.Accounts.Contracts/Data Contracts/SalesAnalysisBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/SalesAnalysisBO.cs new file mode 100644 index 0000000..2951930 --- /dev/null +++ b/Tanshu.Accounts.Contracts/Data Contracts/SalesAnalysisBO.cs @@ -0,0 +1,33 @@ +using System; +using System.Runtime.Serialization; + +namespace Tanshu.Accounts.Contracts +{ + [DataContract] + public class SalesAnalysisBO + { + [DataMember] + public Guid TypeID { get; set; } + [DataMember] + public string Section { get; set; } + [DataMember] + public decimal Quantity { get; set; } + [DataMember] + public decimal Gross { get; set; } + [DataMember] + public decimal Net { get; set; } + } + + [DataContract] + public class SalesAnalysisDetailBO + { + [DataMember] + public string Section { get; set; } + [DataMember] + public string Product { get; set; } + [DataMember] + public decimal Quantity { get; set; } + [DataMember] + public decimal Amount { get; set; } + } +} diff --git a/Tanshu.Accounts.Contracts/Data Contracts/SalesBillItemBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/SalesBillItemBO.cs new file mode 100644 index 0000000..89d591e --- /dev/null +++ b/Tanshu.Accounts.Contracts/Data Contracts/SalesBillItemBO.cs @@ -0,0 +1,130 @@ +using System; +using System.Runtime.Serialization; + +namespace Tanshu.Accounts.Contracts +{ + [DataContract] + public class SalesBillItemBO + { + [DataMember] + public Guid productID; + [DataMember] + public string Name { get; set; } + + private decimal price; + [DataMember] + public decimal Price + { + get { return price; } + set + { + if (value <= 0) + throw new ArgumentException("Price has to be non-negative greater than zero."); + else + price = value; + } + } + + private decimal quantity = 1; + [DataMember] + public decimal Quantity + { + get { return quantity; } + set + { + if (value <= 0) + throw new ArgumentException("Quantity has to be non-negative greater than zero."); + quantity = value; + + } + } + + private decimal discount = 0; + [DataMember] + public decimal Discount + { + get { return discount; } + set + { + if (value < 0) + throw new ArgumentException("Discount has to be non-negative greater than or equal to zero."); + else if (value > 1) + throw new ArgumentException("Discount has to be less than one."); + else + discount = value; + } + } + + [DataMember] + public decimal Tax { get; set; } + + public decimal TaxAmount + { + get + { + return quantity * price * Tax * (1 - discount); + } + } + + public decimal DiscountAmount + { + get + { + return quantity * price * discount; + } + } + + public decimal GrossAmount + { + get + { + return quantity * price * (1 - discount); + } + } + + private decimal printed = 0; + [DataMember] + public decimal Printed + { + get { return printed; } + set + { + if (value < 0) + throw new ArgumentException("Printed has to be non-negative greater than or equal to zero."); + else + printed = value; + } + } + [DataMember] + public string location; + + public decimal Value + { + get + { + return price * quantity * (1 - discount) * (1 + Tax); + } + } + public decimal Additional + { + get + { + return quantity - printed; + } + } + + [DataMember] + public bool isNew = true; + + public string Display + { + get + { + string output = string.Format("{0} @ Rs. {1:#.##}", Name, price); + if (discount != 0) + output += string.Format(" - {0:#.##%}", discount); + return output; + } + } + } +} diff --git a/Tanshu.Accounts.Contracts/Data Contracts/TaxBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/TaxBO.cs new file mode 100644 index 0000000..52b5fd6 --- /dev/null +++ b/Tanshu.Accounts.Contracts/Data Contracts/TaxBO.cs @@ -0,0 +1,20 @@ +using System; +using System.Runtime.Serialization; + +namespace Tanshu.Accounts.Contracts +{ + [DataContract] + public class TaxBO + { + [DataMember] + public Guid TaxID { get; set; } + [DataMember] + public string Name { get; set; } + [DataMember] + public decimal Rate { get; set; } + [DataMember] + public char Type { get; set; } + [DataMember] + private byte[] timestamp { get; set; } + } +} diff --git a/Tanshu.Accounts.Contracts/Data Contracts/UserBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/UserBO.cs new file mode 100644 index 0000000..42c3c95 --- /dev/null +++ b/Tanshu.Accounts.Contracts/Data Contracts/UserBO.cs @@ -0,0 +1,20 @@ +using System; +using System.Runtime.Serialization; + +namespace Tanshu.Accounts.Contracts +{ + [DataContract] + public class UserBO + { + [DataMember] + public Guid UserID { get; set; } + [DataMember] + public string Name { get; set; } + [DataMember] + public string Password { get; set; } + [DataMember] + public bool LockedOut { get; set; } + [DataMember] + public byte[] timestamp { get; set; } + } +} diff --git a/Tanshu.Accounts.Contracts/Data Contracts/VerificationBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/VerificationBO.cs new file mode 100644 index 0000000..68083c8 --- /dev/null +++ b/Tanshu.Accounts.Contracts/Data Contracts/VerificationBO.cs @@ -0,0 +1,27 @@ +using System; +using System.Runtime.Serialization; + +namespace Tanshu.Accounts.Contracts +{ + [DataContract] + public class VerificationBO + { + [DataMember] + public Guid VerificationID { get; set; } + [DataMember] + public Guid VoucherID { get; set; } + [DataMember] + public Guid ProductID { get; set; } + [DataMember] + public decimal ActualQuantity { get; set; } + [DataMember] + public decimal ComputedQuantity { get; set; } + [DataMember] + public decimal LostQuantity + { + get { return ComputedQuantity - ActualQuantity; } + } + [DataMember] + public byte[] Timestamp { get; set; } + } +} diff --git a/Tanshu.Accounts.Contracts/Data Contracts/VerificationDisplayBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/VerificationDisplayBO.cs new file mode 100644 index 0000000..bb46713 --- /dev/null +++ b/Tanshu.Accounts.Contracts/Data Contracts/VerificationDisplayBO.cs @@ -0,0 +1,12 @@ +using System; +using System.Runtime.Serialization; + +namespace Tanshu.Accounts.Contracts +{ + [DataContract] + public class VerificationDisplayBO : VerificationBO + { + [DataMember] + public string ProductName { get; set; } + } +} diff --git a/Tanshu.Accounts.Contracts/Data Contracts/VoucherBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/VoucherBO.cs new file mode 100644 index 0000000..415f2f4 --- /dev/null +++ b/Tanshu.Accounts.Contracts/Data Contracts/VoucherBO.cs @@ -0,0 +1,30 @@ +using System; +using System.Runtime.Serialization; + +namespace Tanshu.Accounts.Contracts +{ + [DataContract] + public class VoucherBO + { + [DataMember] + public Guid VoucherID { get; set; } + [DataMember] + public int Code { get; set; } + [DataMember] + public string Ref { get; set; } + [DataMember] + public DateTime? Date { get; set; } + [DataMember] + public string Narration { get; set; } + [DataMember] + public Guid UserID { get; set; } + [DataMember] + public DateTime CreationDate { get; set; } + [DataMember] + public DateTime LastEditDate { get; set; } + [DataMember] + public char Type { get; set; } + [DataMember] + public byte[] timestamp { get; set; } + } +} diff --git a/Tanshu.Accounts.Contracts/Data Contracts/WaiterBO.cs b/Tanshu.Accounts.Contracts/Data Contracts/WaiterBO.cs new file mode 100644 index 0000000..1eb2c81 --- /dev/null +++ b/Tanshu.Accounts.Contracts/Data Contracts/WaiterBO.cs @@ -0,0 +1,18 @@ +using System; +using System.Runtime.Serialization; + +namespace Tanshu.Accounts.Contracts +{ + [DataContract] + public class WaiterBO + { + [DataMember] + public Guid WaiterID { get; set; } + [DataMember] + public int Code { get; set; } + [DataMember] + public string Name { get; set; } + [DataMember] + public byte[] timestamp { get; set; } + } +} diff --git a/Tanshu.Accounts.Contracts/Properties/AssemblyInfo.cs b/Tanshu.Accounts.Contracts/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..3eec3aa --- /dev/null +++ b/Tanshu.Accounts.Contracts/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Tanshu.Accounts.Contracts")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Tanshu.Accounts.Contracts")] +[assembly: AssemblyCopyright("Copyright © 2009")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("2eff194b-2299-481d-95dd-08e40ebce1b9")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Tanshu.Accounts.Contracts/Service Contracts/AdvanceBI.cs b/Tanshu.Accounts.Contracts/Service Contracts/AdvanceBI.cs new file mode 100644 index 0000000..45fb870 --- /dev/null +++ b/Tanshu.Accounts.Contracts/Service Contracts/AdvanceBI.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.ServiceModel; +using System.Data.SqlClient; + +namespace Tanshu.Accounts.Contracts +{ + [ServiceContract] + public interface IAdvanceBI + { + [OperationContract] + void Insert(AdvanceBO advance); + [OperationContract] + List GetAdvances(DateTime fromDate, DateTime toDate, bool all); + [OperationContract] + void Adjust(Guid advanceID, Guid userID); + } +} diff --git a/Tanshu.Accounts.Contracts/Service Contracts/CheckoutBI.cs b/Tanshu.Accounts.Contracts/Service Contracts/CheckoutBI.cs new file mode 100644 index 0000000..b618016 --- /dev/null +++ b/Tanshu.Accounts.Contracts/Service Contracts/CheckoutBI.cs @@ -0,0 +1,75 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading; +using System.Data.SqlClient; +using System.ServiceModel; +using System.Runtime.Serialization; + + +namespace Tanshu.Accounts.Contracts +{ + [ServiceContract] + public interface ICheckoutBI + { + #region Properties + [DataMember] + decimal Opening { get; } + [DataMember] + decimal Receipts { get; } + [DataMember] + decimal AdvanceReceipts { get; } + [DataMember] + decimal CCReceipts { get; } + [DataMember] + decimal AdvanceAdjusted { get; } + [DataMember] + decimal CashPayments { get; } + [DataMember] + decimal AdditionalVoids { get; } + [DataMember] + decimal VoidsInSystem { get; } + [DataMember] + decimal PendingBills { get; } + [DataMember] + decimal NetSales { get; } + [DataMember] + decimal ClosingBalance { get; } + [DataMember] + decimal RetainedOvernight { get; } + [DataMember] + decimal CashDeposited { get; } // + [DataMember] + decimal Excess { get; } // + [DataMember] + string Status { get; } // + [DataMember] + string Cashiers { get; } // + [DataMember] + Guid CashierID { get; } // + [DataMember] + string Cashier { get; } // + [DataMember] + DateTime StartDate { get; } // + [DataMember] + DateTime FinishDate { get; } // + + [DataMember] + string PendingString { get; } + [DataMember] + string CCString { get; } + [DataMember] + string VoidsString { get; } + [DataMember] + string DiscountString { get; } + [DataMember] + string Manager { get; } + #endregion + + [OperationContract] + void Init(Guid cashier, DateTime startDate, DateTime finishDate); + [OperationContract] + void Calculate(decimal cashDeposited, decimal retainedOvernight); + } + +} diff --git a/Tanshu.Accounts.Contracts/Service Contracts/CustomerBI.cs b/Tanshu.Accounts.Contracts/Service Contracts/CustomerBI.cs new file mode 100644 index 0000000..f3f32da --- /dev/null +++ b/Tanshu.Accounts.Contracts/Service Contracts/CustomerBI.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +//using System.Linq; +using System.Text; +using System.ServiceModel; +using System.Data.SqlClient; + +namespace Tanshu.Accounts.Contracts +{ + [ServiceContract] + public interface ICustomerBI + { + [OperationContract] + List GetCustomerLedgers(); + [OperationContract] + CustomerBO GetCustomer(Guid customerID); + [OperationContract] + List GetFilteredCustomers(Dictionary filter); + [OperationContract] + List GetCustomers(); + [OperationContract] + List GetSingleCustomers(Guid customerID); + [OperationContract] + bool Update(CustomerBO customer); + [OperationContract] + bool Delete(Guid customerID); + [OperationContract] + bool Insert(CustomerBO customer); + } + +} diff --git a/Tanshu.Accounts.Contracts/Service Contracts/LedgerBI.cs b/Tanshu.Accounts.Contracts/Service Contracts/LedgerBI.cs new file mode 100644 index 0000000..c06df99 --- /dev/null +++ b/Tanshu.Accounts.Contracts/Service Contracts/LedgerBI.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.ServiceModel; + +using System.Data.SqlClient; + +namespace Tanshu.Accounts.Contracts +{ + [ServiceContract] + public interface ILedgerBI + { + [OperationContract] + LedgerBO GetLedger(Guid ledgerID); + [OperationContract] + LedgerBO GetLedgerByName(string name); + [OperationContract] + bool Insert(LedgerBO ledger); + [OperationContract] + bool Update(LedgerBO ledger); + [OperationContract] + List GetLedgers(); + [OperationContract] + List GetLedgersOfType(char type); + } +} diff --git a/Tanshu.Accounts.Contracts/Service Contracts/MembershipBI.cs b/Tanshu.Accounts.Contracts/Service Contracts/MembershipBI.cs new file mode 100644 index 0000000..7c9761b --- /dev/null +++ b/Tanshu.Accounts.Contracts/Service Contracts/MembershipBI.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +//using System.Linq; +using System.Text; +using System.Data.SqlClient; +using System.ServiceModel; + +namespace Tanshu.Accounts.Contracts +{ + [ServiceContract] + public interface IMembershipBI + { + [OperationContract] + bool ValidateUser(string name, string password); + [OperationContract] + void AddUsersToRoles(string[] usernames, string[] roleNames); + [OperationContract] + string[] GetAllRoles(); + [OperationContract] + string[] GetRolesForUser(string username); + [OperationContract] + bool IsUserInRole(string username, string roleName); + [OperationContract] + void RemoveUsersFromRoles(string[] usernames, string[] roleNames); + [OperationContract] + UserBO GetUserFromName(string name); + } +} diff --git a/Tanshu.Accounts.Contracts/Service Contracts/PaymentBI.cs b/Tanshu.Accounts.Contracts/Service Contracts/PaymentBI.cs new file mode 100644 index 0000000..ea9a9cc --- /dev/null +++ b/Tanshu.Accounts.Contracts/Service Contracts/PaymentBI.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.ServiceModel; + +using System.Data.SqlClient; + +namespace Tanshu.Accounts.Contracts +{ + [ServiceContract] + public interface IPaymentBI + { + [OperationContract] + void Insert(PaymentBO payment); + [OperationContract] + List GetPayments(Guid? userID, DateTime fromDate, DateTime toDate); + [OperationContract] + void Delete(Guid paymentID); + } +} diff --git a/Tanshu.Accounts.Contracts/Service Contracts/ProductBI.cs b/Tanshu.Accounts.Contracts/Service Contracts/ProductBI.cs new file mode 100644 index 0000000..a8e3cb2 --- /dev/null +++ b/Tanshu.Accounts.Contracts/Service Contracts/ProductBI.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.ServiceModel; +using System.Data.SqlClient; + +namespace Tanshu.Accounts.Contracts +{ + [ServiceContract] + public interface IProductBI + { + [OperationContract] + bool Insert(ProductBO product); + [OperationContract] + bool Update(ProductBO product); + [OperationContract] + bool Delete(Guid productID); + [OperationContract] + ProductBO GetProductFromName(string nameAndUnits); + [OperationContract] + ProductBO GetProduct(Guid productID); + [OperationContract] + decimal GetProductStock(DateTime date, Guid productID, Guid? voucherID); + [OperationContract] + List GetProducts(); + [OperationContract] + List GetFilteredProducts(Dictionary filter); + [OperationContract] + List GetProductTypes(); + } +} diff --git a/Tanshu.Accounts.Contracts/Service Contracts/SaleVoucherBI.cs b/Tanshu.Accounts.Contracts/Service Contracts/SaleVoucherBI.cs new file mode 100644 index 0000000..c3a5658 --- /dev/null +++ b/Tanshu.Accounts.Contracts/Service Contracts/SaleVoucherBI.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using System.Data.SqlClient; +using System.ServiceModel; + +namespace Tanshu.Accounts.Contracts +{ + [ServiceContract] + public interface ISaleVoucherBI + { + [OperationContract] + SalesBillItemBO GetDefaultSaleBillItem(Guid productID); + [OperationContract] + decimal GetProductDiscountLimit(Guid productID); + [OperationContract] + bool IsBillPrinted(Guid voucherID); + [OperationContract] + bool Insert(SaleVoucherBO saleVoucher, List inventory); + [OperationContract] + bool Update(SaleVoucherBO saleVoucher, List inventory); + [OperationContract] + bool GetSaleVoucher(Guid voucherID, ref SaleVoucherBO voucherSale, ref List iList); + + [OperationContract] + List GetPendingBills(PendingType list); + [OperationContract] + Guid? GetPendingVoucherID(string tableID); + [OperationContract] + List SaleInventory(Dictionary.ValueCollection list, Guid? voucherID); + [OperationContract] + void GetComplexBillInformation(Guid voucherID, Guid complexProductID, ref decimal rate, ref decimal quantity, ref string name); + [OperationContract] + void SetAlarm(Guid voucherID, DateTime? alarmTime); + [OperationContract] + void VoidBill(Guid voucherID, string reason); + [OperationContract] + void DeclareBillsPaid(Guid userID, List billList, bool creditCard); + [OperationContract] + void ToggleImportant(Guid voucherID); + } +} diff --git a/Tanshu.Accounts.Contracts/Service Contracts/SalesAnalysisBI.cs b/Tanshu.Accounts.Contracts/Service Contracts/SalesAnalysisBI.cs new file mode 100644 index 0000000..44120ab --- /dev/null +++ b/Tanshu.Accounts.Contracts/Service Contracts/SalesAnalysisBI.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +//using System.Linq; +using System.Text; +using System.Data.SqlClient; +using System.ServiceModel; + + +namespace Tanshu.Accounts.Contracts +{ + [ServiceContract] + public interface ISalesAnalysisBI + { + [OperationContract] + List GetSaleDetail(DateTime startDate, DateTime finishDate, Guid costCenterID); + [OperationContract] + List GetSale(DateTime startDate, DateTime finishDate); + [OperationContract] + void GetAdditionalInfo(ref decimal freeSale, ref decimal voids, ref decimal pending, ref decimal net, ref decimal tax, DateTime startDate, DateTime finishDate); + [OperationContract] + List GetSalesTaxReturn(DateTime startDate, DateTime finishDate, ref decimal freeSale, ref decimal voids, ref decimal pending, ref decimal net, ref decimal tax); + } +} diff --git a/Tanshu.Accounts.Contracts/Service Contracts/UserBI.cs b/Tanshu.Accounts.Contracts/Service Contracts/UserBI.cs new file mode 100644 index 0000000..25e78bf --- /dev/null +++ b/Tanshu.Accounts.Contracts/Service Contracts/UserBI.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.ServiceModel; +using System.Data.SqlClient; + +namespace Tanshu.Accounts.Contracts +{ + [ServiceContract] + public interface IUserBI + { + [OperationContract] + UserBO GetUser(Guid userID); + [OperationContract] + bool ChangePassword(UserBO userData, string newPassword); + [OperationContract] + List GetUsers(); + [OperationContract] + bool UserExists(string userName); + [OperationContract] + bool Insert(UserBO user); + [OperationContract] + bool Update(UserBO user); + [OperationContract] + bool Delete(Guid userID); + } +} diff --git a/Tanshu.Accounts.Contracts/Service Contracts/WaiterBI.cs b/Tanshu.Accounts.Contracts/Service Contracts/WaiterBI.cs new file mode 100644 index 0000000..7a11979 --- /dev/null +++ b/Tanshu.Accounts.Contracts/Service Contracts/WaiterBI.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.ServiceModel; +using System.Data.SqlClient; + +namespace Tanshu.Accounts.Contracts +{ + [ServiceContract] + public interface IWaiterBI + { + [OperationContract] + bool Insert(WaiterBO waiter); + [OperationContract] + bool Update(WaiterBO waiter); + [OperationContract] + WaiterBO GetWaiter(Guid waiterID); + [OperationContract] + bool Delete(Guid waiterID); + [OperationContract] + List GetWaiters(); + } +} diff --git a/Tanshu.Accounts.Contracts/Tanshu.Accounts.Contracts.csproj b/Tanshu.Accounts.Contracts/Tanshu.Accounts.Contracts.csproj new file mode 100644 index 0000000..557690e --- /dev/null +++ b/Tanshu.Accounts.Contracts/Tanshu.Accounts.Contracts.csproj @@ -0,0 +1,129 @@ + + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {59A6F8B8-12EE-4D8E-BEBB-61CB665A2C17} + Library + Properties + Tanshu.Accounts.Contracts + Tanshu.Accounts.Contracts + v3.5 + 512 + + + + + true + full + false + ..\Bin\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + ..\Bin\ + TRACE + prompt + 4 + + + + + 3.5 + + + 3.0 + + + 3.0 + + + 3.5 + + + 3.5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Tanshu.Accounts.Contracts/Tanshu.Accounts.Contracts.csproj.user b/Tanshu.Accounts.Contracts/Tanshu.Accounts.Contracts.csproj.user new file mode 100644 index 0000000..a1d742b --- /dev/null +++ b/Tanshu.Accounts.Contracts/Tanshu.Accounts.Contracts.csproj.user @@ -0,0 +1,5 @@ + + + ProjectFiles + + \ No newline at end of file diff --git a/Tanshu.Accounts.DAOFactory/DAOFactory.cs b/Tanshu.Accounts.DAOFactory/DAOFactory.cs new file mode 100644 index 0000000..e18c37c --- /dev/null +++ b/Tanshu.Accounts.DAOFactory/DAOFactory.cs @@ -0,0 +1,54 @@ +using System; +using Tanshu.Data.DAO; + +namespace Tanshu.Accounts.DAOFactory +{ + // List of DAO types supported by the factory + public enum DAOFactoryTypes + { + SqlServer = 0, + PostgreSQL = 1 + } + // Abstract class DAO Factory + public abstract class GetFactory + { + + // There will be a method for each DAO that can be + // created. The concrete factories will have to + // implement these methods. + public abstract IAdvanceDAO GetAdvanceDAO(IConnectionDAO connection); + public abstract ICheckoutDAO GetCheckoutDAO(DateTime startDate, DateTime finishDate, Guid userID, IConnectionDAO connection); + public abstract ICustomerDAO GetCustomerDAO(IConnectionDAO connection); + public abstract IInventoryDAO GetInventoryDAO(IConnectionDAO connection); + public abstract ILedgerDAO GetLedgerDAO(IConnectionDAO connection); + public abstract IManagementDAO GetManagementDAO(DateTime startDate, DateTime finishDate, IConnectionDAO connection); + public abstract IMembershipDAO GetMembershipDAO(IConnectionDAO connection); + public abstract IPaymentDAO GetPaymentDAO(IConnectionDAO connection); + public abstract IProductDAO GetProductDAO(IConnectionDAO connection); + public abstract ISalesAnalysisDAO GetSalesAnalysisDAO(IConnectionDAO connection); + public abstract ISaleVoucherDAO GetSaleVoucherDAO(IConnectionDAO connection); + public abstract ISaleVoucherMixDAO GetSaleVoucherMixDAO(IConnectionDAO connection); + public abstract IUserDAO GetUserDAO(IConnectionDAO connection); + public abstract IVoucherDAO GetVoucherDAO(IConnectionDAO connection); + public abstract IWaiterDAO GetWaiterDAO(IConnectionDAO connection); + + + public abstract IConnectionDAO Connection { get; } + + public static GetFactory GetDAOFactory(DAOFactoryTypes type) + { + + switch (type) + { + //case DAOFactoryTypes.PostgreSQL: + // return new PostgreSQLDAOFactory(); + case DAOFactoryTypes.SqlServer: + return new SqlServerDAOFactory(); + //case DAOFactoryTypes.PostgreSQL: + // return new PostgresDAOFactory(); + default: + throw new ArgumentException(); + } + } + } +} diff --git a/Tanshu.Accounts.DAOFactory/GetFactoryTypes.cs b/Tanshu.Accounts.DAOFactory/GetFactoryTypes.cs new file mode 100644 index 0000000..f2da1c8 --- /dev/null +++ b/Tanshu.Accounts.DAOFactory/GetFactoryTypes.cs @@ -0,0 +1,22 @@ +using System.Configuration; +using System; + +namespace Tanshu.Accounts.DAOFactory +{ + public static class Database + { + public static DAOFactoryTypes GetFactoryType + { + get + { + string type = ConfigurationManager.AppSettings["Factory"].ToLowerInvariant(); + if (DAOFactoryTypes.SqlServer.ToString().ToLowerInvariant() == type) + return DAOFactoryTypes.SqlServer; + else if (DAOFactoryTypes.PostgreSQL.ToString().ToLowerInvariant() == type) + return DAOFactoryTypes.PostgreSQL; + else + throw new ArgumentException(); + } + } + } +} diff --git a/Tanshu.Accounts.DAOFactory/PostgresDAOFactory.cs b/Tanshu.Accounts.DAOFactory/PostgresDAOFactory.cs new file mode 100644 index 0000000..fc2f7a2 --- /dev/null +++ b/Tanshu.Accounts.DAOFactory/PostgresDAOFactory.cs @@ -0,0 +1,158 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Tanshu.WebAccounts.PostgresDAO; +using Tanshu.Data.DAO; +using Tanshu.WebAccounts.PostgresDAO.Reports; + +namespace Tanshu.WebAccounts.DAOFactory +{ + public class PostgresDAOFactory : GetFactory + { + public override ICostCenterDAO GetCostCenterDAO(IConnectionDAO connection) + { + return new CostCenterDAO(connection); + } + + public override IEmployeeDAO GetEmployeeDAO(IConnectionDAO connection) + { + return new EmployeeDAO(connection); + } + + public override IInventoryDAO GetInventoryDAO(IConnectionDAO connection) + { + return new InventoryDAO(connection); + } + + public override IInventoryDisplayDAO GetInventoryDisplayDAO(IConnectionDAO connection) + { + return new InventoryDisplayDAO(connection); + } + + public override IIssueDAO GetIssueDAO(IConnectionDAO connection) + { + return new IssueDAO(connection); + } + + public override IJournalDAO GetJournalDAO(IConnectionDAO connection) + { + return new JournalDAO(connection); + } + + public override ILedgerDAO GetLedgerDAO(IConnectionDAO connection) + { + return new LedgerDAO(connection); + } + + public override IMaintenanceDAO GetMaintenanceDAO(IConnectionDAO connection) + { + return new MaintenanceDAO(connection); + } + + public override IMembershipDAO GetMembershipDAO(IConnectionDAO connection) + { + return new MembershipDAO(connection); + } + + public override IPaymentSheetDAO GetPaymentSheetDAO(IConnectionDAO connection) + { + return new PaymentSheetDAO(connection); + } + + public override IProductDAO GetProductDAO(IConnectionDAO connection) + { + return new ProductDAO(connection); + } + + public override IProductTypeDAO GetProductTypeDAO(IConnectionDAO connection) + { + return new ProductTypeDAO(connection); + } + + public override IRequirementDAO GetRequirementDAO(IConnectionDAO connection) + { + return new RequirementDAO(connection); + } + + public override ISalarySheetDAO GetSalarySheetDAO(IConnectionDAO connection) + { + return new SalarySheetDAO(connection); + } + + public override ITaxDAO GetTaxDAO(IConnectionDAO connection) + { + return new TaxDAO(connection); + } + + public override IUserDAO GetUserDAO(IConnectionDAO connection) + { + return new UserDAO(connection); + } + + public override IVerificationDAO GetVerificationDAO(IConnectionDAO connection) + { + return new VerificationDAO(connection); + } + + public override IVoucherDAO GetVoucherDAO(IConnectionDAO connection) + { + return new VoucherDAO(connection); + } + + public override IConnectionDAO Connection + { + get { return new Tanshu.WebAccounts.PostgresDAO.PostgresConnectionDAO(); } + } + + public override ICashFlowDAO GetCashFlowDAO(IConnectionDAO connection) + { + return new CashFlowDAO(connection); + } + + public override IClosingStockDAO GetClosingStockDAO(IConnectionDAO connection) + { + return new ClosingStockDAO(connection); + } + + public override IEntriesDAO GetEntriesDAO(IConnectionDAO connection) + { + return new EntriesDAO(connection); + } + + public override IIssueReportsDAO GetIssueReportsDAO(IConnectionDAO connection) + { + return new IssueReportsDAO(connection); + } + + public override ILedgerReportDAO GetLedgerReportDAO(IConnectionDAO connection) + { + return new LedgerReportDAO(connection); + } + + public override ILiabilityReportsDAO GetLiabilityReportsDAO(IConnectionDAO connection) + { + return new LiabilityReportsDAO(connection); + } + + public override IProductLedgerDAO GetProductLedgerDAO(IConnectionDAO connection) + { + return new ProductLedgerDAO(connection); + } + + public override IProfitLossDAO GetProfitLossDAO(IConnectionDAO connection) + { + return new ProfitLossDAO(connection); + } + + public override IPurchaseDAO GetPurchaseDAO(IConnectionDAO connection) + { + return new PurchaseDAO(connection); + } + + public override IStockDAO GetStockDAO(IConnectionDAO connection) + { + return new StockDAO(connection); + } + } +} diff --git a/Tanshu.Accounts.DAOFactory/Properties/AssemblyInfo.cs b/Tanshu.Accounts.DAOFactory/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..b13f1e3 --- /dev/null +++ b/Tanshu.Accounts.DAOFactory/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Tanshu.WebAccounts.DAOFactory")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Tanshu.WebAccounts.DAOFactory")] +[assembly: AssemblyCopyright("Copyright © 2009")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("4d63472a-b214-416c-a26b-1f963d39743b")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Tanshu.Accounts.DAOFactory/SqlServerDAOFactory.cs b/Tanshu.Accounts.DAOFactory/SqlServerDAOFactory.cs new file mode 100644 index 0000000..55a9676 --- /dev/null +++ b/Tanshu.Accounts.DAOFactory/SqlServerDAOFactory.cs @@ -0,0 +1,92 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Tanshu.Accounts.SqlDAO; +using Tanshu.Data.DAO; + +namespace Tanshu.Accounts.DAOFactory +{ + public class SqlServerDAOFactory : GetFactory + { + public override IAdvanceDAO GetAdvanceDAO(IConnectionDAO connection) + { + return new AdvanceDAO(connection); + } + + public override ICheckoutDAO GetCheckoutDAO(DateTime startDate, DateTime finishDate, Guid userID, IConnectionDAO connection) + { + return new CheckoutDAO(startDate, finishDate, userID, connection); + } + + public override IConnectionDAO Connection + { + get { return new Tanshu.Accounts.SqlDAO.SqlConnectionDAO(); } + } + + public override ICustomerDAO GetCustomerDAO(IConnectionDAO connection) + { + return new CustomerDAO(connection); + } + + public override IInventoryDAO GetInventoryDAO(IConnectionDAO connection) + { + return new InventoryDAO(connection); + } + + public override ILedgerDAO GetLedgerDAO(IConnectionDAO connection) + { + return new LedgerDAO(connection); + } + + public override IManagementDAO GetManagementDAO(DateTime startDate, DateTime finishDate, IConnectionDAO connection) + { + return new ManagementDAO(startDate, finishDate, connection); + } + + public override IMembershipDAO GetMembershipDAO(IConnectionDAO connection) + { + return new MembershipDAO(connection); + } + + public override IPaymentDAO GetPaymentDAO(IConnectionDAO connection) + { + return new PaymentDAO(connection); + } + + public override IProductDAO GetProductDAO(IConnectionDAO connection) + { + return new ProductDAO(connection); + } + + public override ISalesAnalysisDAO GetSalesAnalysisDAO(IConnectionDAO connection) + { + return new SalesAnalysisDAO(connection); + } + + public override ISaleVoucherDAO GetSaleVoucherDAO(IConnectionDAO connection) + { + return new SaleVoucherDAO(connection); + } + + public override ISaleVoucherMixDAO GetSaleVoucherMixDAO(IConnectionDAO connection) + { + return new SaleVoucherMixDAO(connection); + } + + public override IUserDAO GetUserDAO(IConnectionDAO connection) + { + return new UserDAO(connection); + } + + public override IVoucherDAO GetVoucherDAO(IConnectionDAO connection) + { + return new VoucherDAO(connection); + } + + public override IWaiterDAO GetWaiterDAO(IConnectionDAO connection) + { + return new WaiterDAO(connection); + } + } +} diff --git a/Tanshu.Accounts.DAOFactory/Tanshu.Accounts.DAOFactory.csproj b/Tanshu.Accounts.DAOFactory/Tanshu.Accounts.DAOFactory.csproj new file mode 100644 index 0000000..f744d2c --- /dev/null +++ b/Tanshu.Accounts.DAOFactory/Tanshu.Accounts.DAOFactory.csproj @@ -0,0 +1,76 @@ + + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {AC7AA7C5-4712-4992-B733-092D703E7AA9} + Library + Properties + Tanshu.Accounts.DAOFactory + Tanshu.Accounts.DAOFactory + v3.5 + 512 + + + true + full + false + ..\Bin\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + ..\Bin\ + TRACE + prompt + 4 + + + + + + 3.5 + + + 3.5 + + + 3.5 + + + + + False + ..\Include\Tanshu.Data.dll + + + + + + + + + + + {59A6F8B8-12EE-4D8E-BEBB-61CB665A2C17} + Tanshu.Accounts.Contracts + + + {B755D152-37C3-47D6-A721-3AD17A8EF316} + Tanshu.Accounts.SqlDAO + + + + + \ No newline at end of file diff --git a/Tanshu.Accounts.Helpers/ControlFactory.cs b/Tanshu.Accounts.Helpers/ControlFactory.cs new file mode 100644 index 0000000..3392dab --- /dev/null +++ b/Tanshu.Accounts.Helpers/ControlFactory.cs @@ -0,0 +1,103 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Drawing; +using Tanshu.Accounts.Contracts; + +namespace Tanshu.Accounts.Helpers +{ + public static class ControlFactory + { + public static void GenerateButtons(ref Panel panel, Rectangle clientArea, int x, int y, int border, List list, ButtonClickDelegate bcDelegate) + { + int width = (clientArea.Width - (border * (x - 1))) / x; + int height = (clientArea.Height - (border * (y - 1))) / y; + int left = 0, top = 0, count = 0; + for (int i = 0; i < x; i++) + { + left = clientArea.Left + (i * (width + border)); + for (int j = 0; j < y; j++) + { + count++; + if (list.Count < count) + break; + top = clientArea.Top + (j * (height + border)); + ProductDisplaySmallBO item = list[(i * x) + j]; + Button btn = GetButton(string.Format("{0}-{1}", i, j), item.Name, width, height, left, top, item.ProductID, bcDelegate); + panel.Controls.Add(btn); + } + } + } + + public static void GenerateButtons(ref Panel panel, Rectangle clientArea, int x, int y, int border, ButtonClickDelegate bcDelegate) + { + int width = (clientArea.Width - (border * (x - 1))) / x; + int height = (clientArea.Height - (border * (y - 1))) / y; + for (int i = 0; i < x; i++) + { + int left = clientArea.Left + (i * (width + border)); + for (int j = 0; j < y; j++) + { + int top = clientArea.Top + (j * (height + border)); + Button btn = GetButton(string.Format("{0}-{1}", i, j), string.Format("{0}-{1}", i, j), width, height, left, top, string.Format("{0}-{1} Clicked", i, j), bcDelegate); + panel.Controls.Add(btn); + } + } + } + private static TextBox GetTextBox(string name, string text, int width, int height, int x, int y, object tag, ButtonClickDelegate bcDelegate) + { + TextBox textBox = CreateControl(ControlType.TextBox, name, text, width, height, x, y) as TextBox; + textBox.Tag = tag; + if (bcDelegate != null) + textBox.Click += new EventHandler(bcDelegate); + return textBox; + } + private static Button GetButton(string name, string text, int width, int height, int x, int y, object tag, ButtonClickDelegate bcDelegate) + { + Button button = CreateControl(ControlType.Button, name, text, width, height, x, y) as Button; + button.Tag = tag; + if (bcDelegate != null) + button.Click += new EventHandler(bcDelegate); + return button; + } + private static Control CreateControl(ControlType controlType, string name, string text, int width, int height, int x, int y) + { + switch (controlType) + { + case ControlType.TextBox: + { + TextBox textBox = new TextBox(); + textBox.Name = name; + textBox.Text = text; + textBox.Width = width; + textBox.Height = height; + textBox.Left = x; + textBox.Top = y; + return textBox; + } + case ControlType.Button: + { + Button button = new Button(); + button.Name = name; + button.Text = text; + button.Width = width; + button.Height = height; + button.Left = x; + button.Top = y; + return button; + } + default: + throw new ArgumentOutOfRangeException(); + } + + } + } + public enum ControlType + { + TextBox = 1, + Button = 2 + } + public delegate void ButtonClickDelegate(object sender, EventArgs e); +} \ No newline at end of file diff --git a/Tanshu.Accounts.Helpers/CustomStructs.cs b/Tanshu.Accounts.Helpers/CustomStructs.cs new file mode 100644 index 0000000..5d540ea --- /dev/null +++ b/Tanshu.Accounts.Helpers/CustomStructs.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Runtime.Serialization; +using Tanshu.Common; + +namespace Tanshu.Accounts.Helpers +{ + public class StringType + { + string description; + public StringType(string description) + { + this.description = description; + } + + public string Description + { + get { return description; } + set { description = value; } + } + } +} diff --git a/Tanshu.Accounts.Helpers/Properties/AssemblyInfo.cs b/Tanshu.Accounts.Helpers/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..3b87f50 --- /dev/null +++ b/Tanshu.Accounts.Helpers/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Tanshu.Accounts.Library")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Tanshu.Accounts.Library")] +[assembly: AssemblyCopyright("Copyright © 2008")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("81ae2a4e-3508-4031-8868-0fced349f818")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Tanshu.Accounts.Helpers/SelectBill.cs b/Tanshu.Accounts.Helpers/SelectBill.cs new file mode 100644 index 0000000..a28839e --- /dev/null +++ b/Tanshu.Accounts.Helpers/SelectBill.cs @@ -0,0 +1,73 @@ +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; + +namespace Tanshu.Accounts.Helpers +{ + public class SelectBill : Tanshu.Data.BaseSelector + { + public SelectBill(GetData getData, bool autoClose) + : base(getData, true, "List of Bills") + { + //grid.Columns["CustomerID"].Visible = false; + //grid.Columns["LedgerID"].Visible = false; + } + + protected override void FilterChanged(Dictionary filter) + { + //data = CustomerProxy.GetCustomers(filter["Universal"].Split(' ')).ToList(); + //bindingSource.DataSource = data; + } + protected override void UpdateDisplay(PendingBillsBO item) + { + //if (item == null) + // DisplayLabel = ""; + //else + // DisplayLabel = string.Format("Chosen Customer is {0} with phone number {1}", item.Name, item.Phone); + } + protected override PendingBillsBO HandleKeydown(object sender, ExtendedKeyEventArgs e) + { + e.Handled = false; + return null; + } + #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 + } +} diff --git a/Tanshu.Accounts.Helpers/SelectCustomer.cs b/Tanshu.Accounts.Helpers/SelectCustomer.cs new file mode 100644 index 0000000..b3ae65e --- /dev/null +++ b/Tanshu.Accounts.Helpers/SelectCustomer.cs @@ -0,0 +1,112 @@ +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.Accounts.BI; +using Tanshu.Data; + +namespace Tanshu.Accounts.Helpers +{ + public class SelectCustomer : Tanshu.Data.BaseSelector + { + public event CustomerEventHandler customerEvent; + public SelectCustomer(GetData getData, bool autoClose) : base(getData, true, "List of Products") + { + List filters = new List(); + filters.Add("Universal"); + SetFilterColumns(filters); + grid.Columns["CustomerID"].Visible = false; + grid.Columns["LedgerID"].Visible = false; + } + + protected override void FilterChanged(Dictionary filter) + { + //data = new CustomerBI().GetFilteredCustomers(filter["Universal"].Split(' ')).ToList(); + data = getData(filter); + bindingSource.DataSource = data; + } + protected override void UpdateDisplay(CustomerBO item) + { + if (item == null) + DisplayLabel = ""; + else + DisplayLabel = string.Format("Chosen Customer is {0} with phone number {1}", item.Name, item.Phone); + } + protected override CustomerBO HandleKeydown(object sender, ExtendedKeyEventArgs e) + { + CustomerBO customer = bindingSource.Current as CustomerBO; + + if (customerEvent == null) + { + e.Handled = false; + return customer; + } + Guid? id = null; + if ((customer != null) && (e.KeyCode == Keys.F2)) + id = customer.CustomerID; + + if ((e.KeyCode == Keys.F1) || (e.KeyCode == Keys.F2)) + { + customer = customerEvent(sender, new CustomerEventArgs(id, base.filterColumns["Universal"])); + e.Handled = customer != null; + } + return customer; + } + #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 CustomerBO CustomerEventHandler(object sender, CustomerEventArgs e); + public class CustomerEventArgs : EventArgs + { + public CustomerEventArgs(Guid? customerID, string phone) + { + CustomerID = customerID; + Phone = phone; + } + public Guid? CustomerID + { + get; + private set; + } + public string Phone + { + get; + private set; + } + } +} diff --git a/Tanshu.Accounts.Helpers/SelectProduct.cs b/Tanshu.Accounts.Helpers/SelectProduct.cs new file mode 100644 index 0000000..684d147 --- /dev/null +++ b/Tanshu.Accounts.Helpers/SelectProduct.cs @@ -0,0 +1,77 @@ +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; + +namespace Tanshu.Accounts.Helpers +{ + public class SelectProduct : Tanshu.Data.BaseSelector + { + public SelectProduct(GetData getData, bool autoClose) + : base(getData, true, "List of Products") + { + List filters = new List(); + filters.Add("Name"); + filters.Add("Type"); + SetFilterColumns(filters); + grid.Columns["ProductID"].Visible = false; + } + + protected override void FilterChanged(Dictionary filter) + { + data = getData(filter); + bindingSource.DataSource = data; + } + + protected override void UpdateDisplay(ProductDisplaySmallBO item) + { + if (item == null) + DisplayLabel = ""; + else + DisplayLabel = string.Format("Chosen Product {0} with rate Rs. {1}", item.Name, item.Price); + } + protected override ProductDisplaySmallBO HandleKeydown(object sender, ExtendedKeyEventArgs e) + { + e.Handled = false; + return null; + } + #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 + } +} diff --git a/Tanshu.Accounts.Helpers/SelectUser.cs b/Tanshu.Accounts.Helpers/SelectUser.cs new file mode 100644 index 0000000..dc152cb --- /dev/null +++ b/Tanshu.Accounts.Helpers/SelectUser.cs @@ -0,0 +1,121 @@ +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; + +namespace Tanshu.Accounts.Helpers +{ + public class SelectUser : Tanshu.Data.BaseSelector + { + public event UserEventHandler userEvent; + public SelectUser(GetData getData, bool autoClose) : base (getData, true, "Select a User") + { + List filters = new List(); + filters.Add("Name"); + SetFilterColumns(filters); + grid.Columns["UserID"].Visible = false; + grid.Columns["timestamp"].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(UserBO item) + { + if (item == null) + DisplayLabel = ""; + else + DisplayLabel = string.Format("User Name: {0}", item.Name); + } + protected override UserBO HandleKeydown(object sender, ExtendedKeyEventArgs e) + { + UserBO user = bindingSource.Current as UserBO; + + if (userEvent == null) + { + e.Handled = false; + return user; + } + if ((e.KeyCode != Keys.F1) && (e.KeyCode != Keys.F2)) + { + e.Handled = false; + return user; + } + if ((user == null) && (e.KeyCode == Keys.F2)) + { + e.Handled = false; + return user; + } + + if (e.KeyCode == Keys.F1) + user = new UserBO(); + UserEventArgs userEventArgs = new UserEventArgs(user); + user = userEvent(sender, userEventArgs); + + e.Handled = userEventArgs.Handled; + return user; + } + #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 UserBO UserEventHandler(object sender, UserEventArgs e); + public class UserEventArgs : EventArgs + { + public UserEventArgs(UserBO user) + { + User = user; + Handled = false; + } + + public UserBO User + { + get; + private set; + } + + public bool Handled + { + get; + set; + } + } +} diff --git a/Tanshu.Accounts.Helpers/SelectVoidReason.cs b/Tanshu.Accounts.Helpers/SelectVoidReason.cs new file mode 100644 index 0000000..8900358 --- /dev/null +++ b/Tanshu.Accounts.Helpers/SelectVoidReason.cs @@ -0,0 +1,76 @@ +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.Data; + +namespace Tanshu.Accounts.Helpers +{ + + public class SelectVoidReason : Tanshu.Data.BaseSelector + { + public SelectVoidReason(GetData getData, bool autoClose) + : base(getData, autoClose, "Reason for Voiding Bill") + { + List filters = new List(); + filters.Add("Name"); + SetFilterColumns(filters); + } + + protected override void FilterChanged(Dictionary filter) + { + //data = originalData.Where(d => d.Description.ToLower().Contains(filter["Name"].ToLower())).ToList(); + data = getData(filter); + bindingSource.DataSource = data; + } + protected override void UpdateDisplay(StringType item) + { + if (item == null) + DisplayLabel = ""; + else + DisplayLabel = string.Format("Reason for Voiding: {0}", item); + } + protected override StringType HandleKeydown(object sender, ExtendedKeyEventArgs e) + { + e.Handled = false; + return null; + } + #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 + + } +} diff --git a/Tanshu.Accounts.Helpers/SelectWaiter.cs b/Tanshu.Accounts.Helpers/SelectWaiter.cs new file mode 100644 index 0000000..f0a8286 --- /dev/null +++ b/Tanshu.Accounts.Helpers/SelectWaiter.cs @@ -0,0 +1,139 @@ +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; + +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") + { + List filters = new List(); + filters.Add("Name"); + SetFilterColumns(filters); + grid.Columns["WaiterID"].Visible = false; + grid.Columns["timestamp"].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(WaiterBO item) + { + if (item == null) + DisplayLabel = ""; + else + DisplayLabel = string.Format("Waiter Name: {0}", item.Name); + } + protected override WaiterBO HandleKeydown(object sender, ExtendedKeyEventArgs e) + { + WaiterBO waiter = bindingSource.Current as WaiterBO; + + if (waiterEvent == null) + { + e.Handled = false; + return waiter; + } + + WaiterEventArgs eventArgs = new WaiterEventArgs(null, 1); + switch (e.KeyCode) + { + case Keys.F1: + { + waiter = new WaiterBO { Name = base.filterColumns["Name"].Trim() }; + eventArgs = new WaiterEventArgs(waiter, 1); + break; + } + case Keys.F2: + { + if (waiter != null) + waiter.Name = base.filterColumns["Name"].Trim(); + eventArgs = new WaiterEventArgs(waiter, 2); + break; + } + case Keys.F8: + { + if (waiter != null) + eventArgs = new WaiterEventArgs(waiter, 3); + 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 WaiterBO WaiterEventHandler(object sender, WaiterEventArgs e); + public class WaiterEventArgs : EventArgs + { + public WaiterEventArgs(WaiterBO waiter, int action) + { + Waiter = waiter; + Action = action; + Handled = false; + } + + public WaiterBO Waiter + { + get; + private set; + } + + public int Action + { + get; + private set; + } + + public bool Handled + { + get; + set; + } + } +} diff --git a/Tanshu.Accounts.Helpers/Tanshu.Accounts.Helpers.csproj b/Tanshu.Accounts.Helpers/Tanshu.Accounts.Helpers.csproj new file mode 100644 index 0000000..e906ba8 --- /dev/null +++ b/Tanshu.Accounts.Helpers/Tanshu.Accounts.Helpers.csproj @@ -0,0 +1,110 @@ + + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {3E28AAA5-A493-4446-8188-C615245943B4} + Library + Properties + Tanshu.Accounts.Helpers + Tanshu.Accounts.Helpers + v3.5 + 512 + + + true + full + false + ..\Bin\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + ..\Bin\ + TRACE + prompt + 4 + + + + + + 3.5 + + + 3.5 + + + + 3.0 + + + + 3.5 + + + 3.5 + + + + + False + ..\Include\Tanshu.Common.dll + + + False + ..\Include\Tanshu.Data.dll + + + + + + Form + + + Code + + + Form + + + Form + + + Form + + + Form + + + Form + + + + + + + + + {59A6F8B8-12EE-4D8E-BEBB-61CB665A2C17} + Tanshu.Accounts.Contracts + + + {0B43ECD4-3701-4CD3-82EC-617D7D590BBB} + Tanshu.Accounts.BI + + + + + \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/App.config b/Tanshu.Accounts.PointOfSale/App.config new file mode 100644 index 0000000..515e678 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/App.config @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/ApplyRates.Designer.cs b/Tanshu.Accounts.PointOfSale/ApplyRates.Designer.cs new file mode 100644 index 0000000..b423216 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/ApplyRates.Designer.cs @@ -0,0 +1,158 @@ +namespace Accounts.PointOfSale +{ + partial class ApplyRates + { + /// + /// 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.btnSave = new System.Windows.Forms.Button(); + this.dgvItems = new System.Windows.Forms.DataGridView(); + this.idDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.productIDDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.oldRateDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.newRateDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.timestampDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.deleteDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.bsApplyRates = new System.Windows.Forms.BindingSource(this.components); + ((System.ComponentModel.ISupportInitialize)(this.dgvItems)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsApplyRates)).BeginInit(); + this.SuspendLayout(); + // + // btnSave + // + this.btnSave.Location = new System.Drawing.Point(523, 326); + this.btnSave.Name = "btnSave"; + this.btnSave.Size = new System.Drawing.Size(81, 23); + this.btnSave.TabIndex = 31; + this.btnSave.Text = "Apply Rates"; + this.btnSave.UseVisualStyleBackColor = true; + // + // dgvItems + // + this.dgvItems.AllowUserToAddRows = false; + this.dgvItems.AllowUserToDeleteRows = false; + this.dgvItems.AllowUserToOrderColumns = true; + this.dgvItems.AllowUserToResizeRows = false; + this.dgvItems.AutoGenerateColumns = false; + this.dgvItems.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.DisplayedCells; + this.dgvItems.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dgvItems.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.idDataGridViewTextBoxColumn, + this.productIDDataGridViewTextBoxColumn, + this.oldRateDataGridViewTextBoxColumn, + this.newRateDataGridViewTextBoxColumn, + this.timestampDataGridViewTextBoxColumn, + this.deleteDataGridViewTextBoxColumn}); + this.dgvItems.DataSource = this.bsApplyRates; + this.dgvItems.EditMode = System.Windows.Forms.DataGridViewEditMode.EditProgrammatically; + this.dgvItems.Location = new System.Drawing.Point(2, 3); + this.dgvItems.MultiSelect = false; + this.dgvItems.Name = "dgvItems"; + this.dgvItems.RowHeadersVisible = false; + this.dgvItems.RowTemplate.Height = 19; + this.dgvItems.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.dgvItems.ShowRowErrors = false; + this.dgvItems.Size = new System.Drawing.Size(602, 317); + this.dgvItems.TabIndex = 30; + // + // idDataGridViewTextBoxColumn + // + this.idDataGridViewTextBoxColumn.DataPropertyName = "Id"; + this.idDataGridViewTextBoxColumn.HeaderText = "Id"; + this.idDataGridViewTextBoxColumn.Name = "idDataGridViewTextBoxColumn"; + this.idDataGridViewTextBoxColumn.Width = 41; + // + // productIDDataGridViewTextBoxColumn + // + this.productIDDataGridViewTextBoxColumn.DataPropertyName = "ProductID"; + this.productIDDataGridViewTextBoxColumn.HeaderText = "ProductID"; + this.productIDDataGridViewTextBoxColumn.Name = "productIDDataGridViewTextBoxColumn"; + this.productIDDataGridViewTextBoxColumn.Width = 80; + // + // oldRateDataGridViewTextBoxColumn + // + this.oldRateDataGridViewTextBoxColumn.DataPropertyName = "OldRate"; + this.oldRateDataGridViewTextBoxColumn.HeaderText = "OldRate"; + this.oldRateDataGridViewTextBoxColumn.Name = "oldRateDataGridViewTextBoxColumn"; + this.oldRateDataGridViewTextBoxColumn.Width = 71; + // + // newRateDataGridViewTextBoxColumn + // + this.newRateDataGridViewTextBoxColumn.DataPropertyName = "NewRate"; + this.newRateDataGridViewTextBoxColumn.HeaderText = "NewRate"; + this.newRateDataGridViewTextBoxColumn.Name = "newRateDataGridViewTextBoxColumn"; + this.newRateDataGridViewTextBoxColumn.Width = 77; + // + // timestampDataGridViewTextBoxColumn + // + this.timestampDataGridViewTextBoxColumn.DataPropertyName = "timestamp"; + this.timestampDataGridViewTextBoxColumn.HeaderText = "timestamp"; + this.timestampDataGridViewTextBoxColumn.Name = "timestampDataGridViewTextBoxColumn"; + this.timestampDataGridViewTextBoxColumn.Width = 79; + // + // deleteDataGridViewTextBoxColumn + // + this.deleteDataGridViewTextBoxColumn.DataPropertyName = "Delete"; + this.deleteDataGridViewTextBoxColumn.HeaderText = "Delete"; + this.deleteDataGridViewTextBoxColumn.Name = "deleteDataGridViewTextBoxColumn"; + this.deleteDataGridViewTextBoxColumn.Width = 63; + // + // bsApplyRates + // + this.bsApplyRates.DataSource = typeof(Accounts.Proxy.NewProductRates); + // + // ApplyRates + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(606, 354); + this.Controls.Add(this.btnSave); + this.Controls.Add(this.dgvItems); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "ApplyRates"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Apply Rates"; + ((System.ComponentModel.ISupportInitialize)(this.dgvItems)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsApplyRates)).EndInit(); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Button btnSave; + private System.Windows.Forms.DataGridView dgvItems; + private System.Windows.Forms.DataGridViewTextBoxColumn idDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn productIDDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn oldRateDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn newRateDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn timestampDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn deleteDataGridViewTextBoxColumn; + private System.Windows.Forms.BindingSource bsApplyRates; + } +} \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/ApplyRates.cs b/Tanshu.Accounts.PointOfSale/ApplyRates.cs new file mode 100644 index 0000000..fff1d2b --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/ApplyRates.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace Accounts.PointOfSale +{ + public partial class ApplyRates : Form + { + public ApplyRates() + { + InitializeComponent(); + } + } +} diff --git a/Tanshu.Accounts.PointOfSale/ApplyRates.resx b/Tanshu.Accounts.PointOfSale/ApplyRates.resx new file mode 100644 index 0000000..a001137 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/ApplyRates.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 17, 17 + + \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/ComplexProductForm.Designer.cs b/Tanshu.Accounts.PointOfSale/ComplexProductForm.Designer.cs new file mode 100644 index 0000000..4038522 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/ComplexProductForm.Designer.cs @@ -0,0 +1,226 @@ +namespace Accounts.PointOfSale +{ + partial class ComplexProductForm + { + /// + /// 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.dgvItems = new System.Windows.Forms.DataGridView(); + this.deleteDataGridViewButtonColumn = new System.Windows.Forms.DataGridViewButtonColumn(); + this.bsComplexProducts = new System.Windows.Forms.BindingSource(this.components); + this.btnAdd = new System.Windows.Forms.Button(); + this.label2 = new System.Windows.Forms.Label(); + this.txtQuantity = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.bsProducts = new System.Windows.Forms.BindingSource(this.components); + this.cmbChildItems = new System.Windows.Forms.ComboBox(); + this.bsChildProducts = new System.Windows.Forms.BindingSource(this.components); + this.btnPrint = new System.Windows.Forms.Button(); + this.textBox1 = new System.Windows.Forms.TextBox(); + this.textBox2 = new System.Windows.Forms.TextBox(); + this.textBox3 = new System.Windows.Forms.TextBox(); + this.textBox4 = new System.Windows.Forms.TextBox(); + this.comboBox1 = new System.Windows.Forms.ComboBox(); + ((System.ComponentModel.ISupportInitialize)(this.dgvItems)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsComplexProducts)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsProducts)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsChildProducts)).BeginInit(); + this.SuspendLayout(); + // + // dgvItems + // + this.dgvItems.AllowUserToAddRows = false; + this.dgvItems.AutoGenerateColumns = false; + this.dgvItems.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dgvItems.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.deleteDataGridViewButtonColumn}); + this.dgvItems.DataSource = this.bsComplexProducts; + this.dgvItems.Location = new System.Drawing.Point(16, 74); + this.dgvItems.Name = "dgvItems"; + this.dgvItems.Size = new System.Drawing.Size(490, 420); + this.dgvItems.TabIndex = 2; + this.dgvItems.CellClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvItems_CellClick); + // + // deleteDataGridViewButtonColumn + // + this.deleteDataGridViewButtonColumn.HeaderText = "Delete"; + this.deleteDataGridViewButtonColumn.Name = "deleteDataGridViewButtonColumn"; + this.deleteDataGridViewButtonColumn.Text = "Delete"; + this.deleteDataGridViewButtonColumn.UseColumnTextForButtonValue = true; + this.deleteDataGridViewButtonColumn.Width = 64; + // + // btnAdd + // + this.btnAdd.Location = new System.Drawing.Point(431, 45); + this.btnAdd.Name = "btnAdd"; + this.btnAdd.Size = new System.Drawing.Size(75, 23); + this.btnAdd.TabIndex = 3; + this.btnAdd.Text = "Add"; + this.btnAdd.UseVisualStyleBackColor = true; + this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(52, 50); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(53, 13); + this.label2.TabIndex = 4; + this.label2.Text = "Child Item"; + // + // txtQuantity + // + this.txtQuantity.Location = new System.Drawing.Point(375, 48); + this.txtQuantity.Name = "txtQuantity"; + this.txtQuantity.Size = new System.Drawing.Size(50, 20); + this.txtQuantity.TabIndex = 7; + this.txtQuantity.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(330, 51); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(39, 13); + this.label3.TabIndex = 6; + this.label3.Text = "Quality"; + // + // cmbChildItems + // + this.cmbChildItems.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbChildItems.FormattingEnabled = true; + this.cmbChildItems.Location = new System.Drawing.Point(111, 47); + this.cmbChildItems.Name = "cmbChildItems"; + this.cmbChildItems.Size = new System.Drawing.Size(213, 21); + this.cmbChildItems.TabIndex = 9; + // + // btnPrint + // + this.btnPrint.Location = new System.Drawing.Point(431, 501); + this.btnPrint.Name = "btnPrint"; + this.btnPrint.Size = new System.Drawing.Size(75, 23); + this.btnPrint.TabIndex = 11; + this.btnPrint.Text = "Print"; + this.btnPrint.UseVisualStyleBackColor = true; + this.btnPrint.Click += new System.EventHandler(this.btnPrint_Click); + // + // textBox1 + // + this.textBox1.Location = new System.Drawing.Point(111, 12); + this.textBox1.Name = "textBox1"; + this.textBox1.Size = new System.Drawing.Size(100, 20); + this.textBox1.TabIndex = 12; + // + // textBox2 + // + this.textBox2.Location = new System.Drawing.Point(0, 0); + this.textBox2.Name = "textBox2"; + this.textBox2.Size = new System.Drawing.Size(100, 20); + this.textBox2.TabIndex = 13; + // + // textBox3 + // + this.textBox3.Location = new System.Drawing.Point(8, 8); + this.textBox3.Name = "textBox3"; + this.textBox3.Size = new System.Drawing.Size(100, 20); + this.textBox3.TabIndex = 14; + // + // textBox4 + // + this.textBox4.Location = new System.Drawing.Point(16, 16); + this.textBox4.Name = "textBox4"; + this.textBox4.Size = new System.Drawing.Size(100, 20); + this.textBox4.TabIndex = 15; + // + // comboBox1 + // + this.comboBox1.FormattingEnabled = true; + this.comboBox1.Location = new System.Drawing.Point(24, 24); + this.comboBox1.Name = "comboBox1"; + this.comboBox1.Size = new System.Drawing.Size(121, 21); + this.comboBox1.TabIndex = 16; + // + // ComplexProductForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(521, 531); + this.Controls.Add(this.comboBox1); + this.Controls.Add(this.textBox4); + this.Controls.Add(this.textBox3); + this.Controls.Add(this.textBox2); + this.Controls.Add(this.textBox1); + this.Controls.Add(this.btnPrint); + this.Controls.Add(this.cmbChildItems); + this.Controls.Add(this.txtQuantity); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.btnAdd); + this.Controls.Add(this.dgvItems); + this.KeyPreview = true; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "ComplexProductForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Complex Products F7-Complex Product, F6-Child Item"; + this.Load += new System.EventHandler(this.ComplexProductForm_Load); + this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.ComplexProductForm_KeyDown); + ((System.ComponentModel.ISupportInitialize)(this.dgvItems)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsComplexProducts)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsProducts)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsChildProducts)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.DataGridView dgvItems; + private System.Windows.Forms.Button btnAdd; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox txtQuantity; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.ComboBox cmbChildItems; + private System.Windows.Forms.BindingSource bsProducts; + private System.Windows.Forms.BindingSource bsChildProducts; + private System.Windows.Forms.BindingSource bsComplexProducts; + private System.Windows.Forms.DataGridViewTextBoxColumn complexProductIDDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn productNameDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn quantityDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn productIDDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn childIDDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn timestampDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewButtonColumn deleteDataGridViewButtonColumn; + private System.Windows.Forms.Button btnPrint; + private System.Windows.Forms.TextBox textBox1; + private System.Windows.Forms.TextBox textBox2; + private System.Windows.Forms.TextBox textBox3; + private System.Windows.Forms.TextBox textBox4; + private System.Windows.Forms.ComboBox comboBox1; + } +} \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/ComplexProductForm.cs b/Tanshu.Accounts.PointOfSale/ComplexProductForm.cs new file mode 100644 index 0000000..d21a16e --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/ComplexProductForm.cs @@ -0,0 +1,132 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Windows.Forms; +using Accounts.Proxy; +using System.Threading; +using Accounts.BI; + +namespace Accounts.PointOfSale +{ + public partial class ComplexProductForm : Form + { + public ComplexProductForm() + { + InitializeComponent(); + } + + private void ComplexProductForm_Load(object sender, EventArgs e) + { + FillCombos(); + } + + private void FillCombos() + { + //cmbComplexProducts.DisplayMember = "Name"; + //cmbComplexProducts.ValueMember = "ProductID"; + //cmbComplexProducts.DataSource = ProductProxy.GetComplexProducts().ToList(); + cmbChildItems.DisplayMember = "Name"; + cmbChildItems.ValueMember = "ProductID"; + cmbChildItems.DataSource = ProductBI.GetProducts(); + } + + private void btnAdd_Click(object sender, EventArgs e) + { + //if ((cmbComplexProducts.Text != "") && (cmbChildItems.Text != "") && (txtQuantity.Text.Trim() != "")) + // Save(); + //else + //{ + // System.Windows.Forms.MessageBox.Show("Please select missing information"); + // cmbComplexProducts.Focus(); + //} + } + + private void Save() + { + //ComplexProduct complexProduct = new ComplexProduct(); + //complexProduct.ProductID = (Guid)cmbComplexProducts.SelectedValue; + //complexProduct.ChildID = (Guid)cmbChildItems.SelectedValue; + //complexProduct.Quantity = Convert.ToDecimal(txtQuantity.Text); + //ProductProxy.AddComplexProduct(complexProduct); + //GetComplexProductItems(); + } + + + + private void GetComplexProductItems() + { + //List list = new List(); + //if (cmbComplexProducts.Text != "") + //{ + // list = ProductProxy.GetChildProductList(new Guid(cmbComplexProducts.SelectedValue.ToString())); + // dgvItems.DataSource = list; + //} + } + + private void btnProducts_Click(object sender, EventArgs e) + { + if (!Thread.CurrentPrincipal.IsInRole("Master/Products")) + { + MessageBox.Show("You are not authorized to access"); + } + else + { + ProductsForm form = new ProductsForm(); + form.ShowDialog(); + form.Dispose(); + + FillCombos(); + } + } + + private void dgvItems_CellClick(object sender, DataGridViewCellEventArgs e) + { + if (dgvItems.Columns[e.ColumnIndex].Name == "deleteDataGridViewButtonColumn") + { + ProductProxy.DeleteComplexProductFromID((Guid)dgvItems.Rows[e.RowIndex].Cells[0].Value); + GetComplexProductItems(); + } + } + + private void cmbComplexProducts_SelectedIndexChanged(object sender, EventArgs e) + { + GetComplexProductItems(); + } + + private void ComplexProductForm_KeyDown(object sender, KeyEventArgs e) + { + //if (e.KeyCode == Keys.F7) + //{ + // using (SelectProduct selectProduct = new SelectProduct(ProductProxy.GetAllComplexProductList(), true)) + // { + // selectProduct.ShowDialog(); + // if (selectProduct.SelectedItem != null) + // { + // cmbComplexProducts.SelectedValue = selectProduct.SelectedItem.productID; + // GetComplexProductItems(); + // cmbChildItems.Focus(); + // } + // } + //} + if (e.KeyCode == Keys.F6) + { + using (SelectProduct selectProduct = new SelectProduct(ProductBI.GetProducts(), true)) + { + selectProduct.ShowDialog(); + if (selectProduct.SelectedItem != null) + { + cmbChildItems.SelectedValue = selectProduct.SelectedItem.ProductID; + txtQuantity.Focus(); + } + } + } + } + + private void btnPrint_Click(object sender, EventArgs e) + { + //Accounts.Print.Thermal.PrintComplexProducts(new Guid(cmbComplexProducts.SelectedValue.ToString())); + } + + } +} diff --git a/Tanshu.Accounts.PointOfSale/ComplexProductForm.resx b/Tanshu.Accounts.PointOfSale/ComplexProductForm.resx new file mode 100644 index 0000000..d3b14ae --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/ComplexProductForm.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 + + + 253, 17 + + + 17, 17 + + + 123, 17 + + \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/CustomEnums.cs b/Tanshu.Accounts.PointOfSale/CustomEnums.cs new file mode 100644 index 0000000..e09da02 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/CustomEnums.cs @@ -0,0 +1,19 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace Tanshu.Accounts.PointOfSale +{ + public enum SaleFormState + { + Waiting = 0, + Billing = 1 + } + public enum FormMode + { + Normal = 0, + Edit = 1, + AddNew = 2 + } +} diff --git a/Tanshu.Accounts.PointOfSale/CustomerForm.Designer.cs b/Tanshu.Accounts.PointOfSale/CustomerForm.Designer.cs new file mode 100644 index 0000000..cfc6786 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/CustomerForm.Designer.cs @@ -0,0 +1,392 @@ +namespace Accounts.PointOfSale +{ + partial class CustomerForm + { + /// + /// 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(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(CustomerForm)); + this.bsMain = new System.Windows.Forms.BindingSource(this.components); + this.txtName = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.cmbLedger = new System.Windows.Forms.ComboBox(); + this.bsLedger = new System.Windows.Forms.BindingSource(this.components); + this.label3 = new System.Windows.Forms.Label(); + this.txtAddress = new System.Windows.Forms.TextBox(); + this.txtPhone = new System.Windows.Forms.TextBox(); + this.label4 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.txtRemarks = new System.Windows.Forms.TextBox(); + this.bnMain = new System.Windows.Forms.BindingNavigator(this.components); + this.bindingNavigatorAddNewItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorCountItem = new System.Windows.Forms.ToolStripLabel(); + this.bindingNavigatorMoveFirstItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorMovePreviousItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorSeparator = new System.Windows.Forms.ToolStripSeparator(); + this.bindingNavigatorPositionItem = new System.Windows.Forms.ToolStripTextBox(); + this.bindingNavigatorSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.bindingNavigatorMoveNextItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorMoveLastItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.bindingNavigatorDeleteItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorSaveItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorCancelItem = new System.Windows.Forms.ToolStripButton(); + this.bindingNavigatorEditItem = new System.Windows.Forms.ToolStripButton(); + this.chkImportant = new System.Windows.Forms.CheckBox(); + ((System.ComponentModel.ISupportInitialize)(this.bsMain)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsLedger)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bnMain)).BeginInit(); + this.bnMain.SuspendLayout(); + this.SuspendLayout(); + // + // bsMain + // + this.bsMain.DataSource = typeof(Accounts.Proxy.Customer); + // + // txtName + // + this.txtName.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bsMain, "Name", true)); + this.txtName.Location = new System.Drawing.Point(72, 12); + this.txtName.Name = "txtName"; + this.txtName.Size = new System.Drawing.Size(291, 20); + this.txtName.TabIndex = 0; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(31, 12); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(35, 13); + this.label2.TabIndex = 4; + this.label2.Text = "Name"; + // + // cmbLedger + // + this.cmbLedger.DataBindings.Add(new System.Windows.Forms.Binding("SelectedValue", this.bsMain, "LedgerID", true)); + this.cmbLedger.DataSource = this.bsLedger; + this.cmbLedger.DisplayMember = "Name"; + this.cmbLedger.FormattingEnabled = true; + this.cmbLedger.Location = new System.Drawing.Point(72, 45); + this.cmbLedger.Name = "cmbLedger"; + this.cmbLedger.Size = new System.Drawing.Size(291, 21); + this.cmbLedger.TabIndex = 1; + this.cmbLedger.ValueMember = "LedgerID"; + // + // bsLedger + // + this.bsLedger.DataSource = typeof(Accounts.Proxy.Ledger); + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(26, 45); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(40, 13); + this.label3.TabIndex = 6; + this.label3.Text = "Ledger"; + // + // txtAddress + // + this.txtAddress.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bsMain, "Address", true)); + this.txtAddress.Location = new System.Drawing.Point(72, 119); + this.txtAddress.Multiline = true; + this.txtAddress.Name = "txtAddress"; + this.txtAddress.Size = new System.Drawing.Size(291, 85); + this.txtAddress.TabIndex = 3; + // + // txtPhone + // + this.txtPhone.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bsMain, "Phone", true)); + this.txtPhone.Location = new System.Drawing.Point(72, 80); + this.txtPhone.Name = "txtPhone"; + this.txtPhone.Size = new System.Drawing.Size(291, 20); + this.txtPhone.TabIndex = 2; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(17, 210); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(49, 13); + this.label4.TabIndex = 9; + this.label4.Text = "Remarks"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(21, 122); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(45, 13); + this.label5.TabIndex = 10; + this.label5.Text = "Address"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(8, 80); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(58, 13); + this.label6.TabIndex = 11; + this.label6.Text = "Phone No."; + // + // txtRemarks + // + this.txtRemarks.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bsMain, "Remarks", true)); + this.txtRemarks.Location = new System.Drawing.Point(72, 210); + this.txtRemarks.Multiline = true; + this.txtRemarks.Name = "txtRemarks"; + this.txtRemarks.Size = new System.Drawing.Size(291, 78); + this.txtRemarks.TabIndex = 4; + // + // bnMain + // + this.bnMain.AddNewItem = this.bindingNavigatorAddNewItem; + this.bnMain.BindingSource = this.bsMain; + this.bnMain.CountItem = this.bindingNavigatorCountItem; + this.bnMain.DeleteItem = null; + this.bnMain.Dock = System.Windows.Forms.DockStyle.Bottom; + this.bnMain.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.bindingNavigatorMoveFirstItem, + this.bindingNavigatorMovePreviousItem, + this.bindingNavigatorSeparator, + this.bindingNavigatorPositionItem, + this.bindingNavigatorCountItem, + this.bindingNavigatorSeparator1, + this.bindingNavigatorMoveNextItem, + this.bindingNavigatorMoveLastItem, + this.bindingNavigatorSeparator2, + this.bindingNavigatorAddNewItem, + this.bindingNavigatorDeleteItem, + this.bindingNavigatorSaveItem, + this.bindingNavigatorCancelItem, + this.bindingNavigatorEditItem}); + this.bnMain.Location = new System.Drawing.Point(0, 314); + this.bnMain.MoveFirstItem = this.bindingNavigatorMoveFirstItem; + this.bnMain.MoveLastItem = this.bindingNavigatorMoveLastItem; + this.bnMain.MoveNextItem = this.bindingNavigatorMoveNextItem; + this.bnMain.MovePreviousItem = this.bindingNavigatorMovePreviousItem; + this.bnMain.Name = "bnMain"; + this.bnMain.PositionItem = this.bindingNavigatorPositionItem; + this.bnMain.Size = new System.Drawing.Size(386, 25); + this.bnMain.TabIndex = 13; + // + // bindingNavigatorAddNewItem + // + this.bindingNavigatorAddNewItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorAddNewItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorAddNewItem.Image"))); + this.bindingNavigatorAddNewItem.Name = "bindingNavigatorAddNewItem"; + this.bindingNavigatorAddNewItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorAddNewItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorAddNewItem.Text = "Add new"; + this.bindingNavigatorAddNewItem.Click += new System.EventHandler(this.bindingNavigatorAddNewItem_Click); + // + // bindingNavigatorCountItem + // + this.bindingNavigatorCountItem.Name = "bindingNavigatorCountItem"; + this.bindingNavigatorCountItem.Size = new System.Drawing.Size(36, 22); + this.bindingNavigatorCountItem.Text = "of {0}"; + this.bindingNavigatorCountItem.ToolTipText = "Total number of items"; + // + // bindingNavigatorMoveFirstItem + // + this.bindingNavigatorMoveFirstItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMoveFirstItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveFirstItem.Image"))); + this.bindingNavigatorMoveFirstItem.Name = "bindingNavigatorMoveFirstItem"; + this.bindingNavigatorMoveFirstItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMoveFirstItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMoveFirstItem.Text = "Move first"; + // + // bindingNavigatorMovePreviousItem + // + this.bindingNavigatorMovePreviousItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMovePreviousItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMovePreviousItem.Image"))); + this.bindingNavigatorMovePreviousItem.Name = "bindingNavigatorMovePreviousItem"; + this.bindingNavigatorMovePreviousItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMovePreviousItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMovePreviousItem.Text = "Move previous"; + // + // bindingNavigatorSeparator + // + this.bindingNavigatorSeparator.Name = "bindingNavigatorSeparator"; + this.bindingNavigatorSeparator.Size = new System.Drawing.Size(6, 25); + // + // bindingNavigatorPositionItem + // + this.bindingNavigatorPositionItem.AccessibleName = "Position"; + this.bindingNavigatorPositionItem.AutoSize = false; + this.bindingNavigatorPositionItem.Name = "bindingNavigatorPositionItem"; + this.bindingNavigatorPositionItem.Size = new System.Drawing.Size(50, 23); + this.bindingNavigatorPositionItem.Text = "0"; + this.bindingNavigatorPositionItem.ToolTipText = "Current position"; + // + // bindingNavigatorSeparator1 + // + this.bindingNavigatorSeparator1.Name = "bindingNavigatorSeparator1"; + this.bindingNavigatorSeparator1.Size = new System.Drawing.Size(6, 25); + // + // bindingNavigatorMoveNextItem + // + this.bindingNavigatorMoveNextItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMoveNextItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveNextItem.Image"))); + this.bindingNavigatorMoveNextItem.Name = "bindingNavigatorMoveNextItem"; + this.bindingNavigatorMoveNextItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMoveNextItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMoveNextItem.Text = "Move next"; + // + // bindingNavigatorMoveLastItem + // + this.bindingNavigatorMoveLastItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorMoveLastItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorMoveLastItem.Image"))); + this.bindingNavigatorMoveLastItem.Name = "bindingNavigatorMoveLastItem"; + this.bindingNavigatorMoveLastItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorMoveLastItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorMoveLastItem.Text = "Move last"; + // + // bindingNavigatorSeparator2 + // + this.bindingNavigatorSeparator2.Name = "bindingNavigatorSeparator2"; + this.bindingNavigatorSeparator2.Size = new System.Drawing.Size(6, 25); + // + // bindingNavigatorDeleteItem + // + this.bindingNavigatorDeleteItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bindingNavigatorDeleteItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorDeleteItem.Image"))); + this.bindingNavigatorDeleteItem.Name = "bindingNavigatorDeleteItem"; + this.bindingNavigatorDeleteItem.RightToLeftAutoMirrorImage = true; + this.bindingNavigatorDeleteItem.Size = new System.Drawing.Size(23, 22); + this.bindingNavigatorDeleteItem.Text = "Delete"; + // + // bindingNavigatorSaveItem + // + this.bindingNavigatorSaveItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; + this.bindingNavigatorSaveItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorSaveItem.Image"))); + this.bindingNavigatorSaveItem.ImageTransparentColor = System.Drawing.Color.Magenta; + this.bindingNavigatorSaveItem.Name = "bindingNavigatorSaveItem"; + this.bindingNavigatorSaveItem.Size = new System.Drawing.Size(35, 22); + this.bindingNavigatorSaveItem.Text = "Save"; + this.bindingNavigatorSaveItem.Click += new System.EventHandler(this.bindingNavigatorSaveItem_Click); + // + // bindingNavigatorCancelItem + // + this.bindingNavigatorCancelItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; + this.bindingNavigatorCancelItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorCancelItem.Image"))); + this.bindingNavigatorCancelItem.ImageTransparentColor = System.Drawing.Color.Magenta; + this.bindingNavigatorCancelItem.Name = "bindingNavigatorCancelItem"; + this.bindingNavigatorCancelItem.Size = new System.Drawing.Size(43, 22); + this.bindingNavigatorCancelItem.Text = "Cancel"; + this.bindingNavigatorCancelItem.Click += new System.EventHandler(this.bindingNavigatorCancelItem_Click); + // + // bindingNavigatorEditItem + // + this.bindingNavigatorEditItem.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text; + this.bindingNavigatorEditItem.Image = ((System.Drawing.Image)(resources.GetObject("bindingNavigatorEditItem.Image"))); + this.bindingNavigatorEditItem.ImageTransparentColor = System.Drawing.Color.Magenta; + this.bindingNavigatorEditItem.Name = "bindingNavigatorEditItem"; + this.bindingNavigatorEditItem.Size = new System.Drawing.Size(29, 22); + this.bindingNavigatorEditItem.Text = "Edit"; + this.bindingNavigatorEditItem.Click += new System.EventHandler(this.bindingNavigatorEditItem_Click); + // + // chkImportant + // + this.chkImportant.AutoSize = true; + this.chkImportant.CheckAlign = System.Drawing.ContentAlignment.MiddleRight; + this.chkImportant.DataBindings.Add(new System.Windows.Forms.Binding("Checked", this.bsMain, "Important", true)); + this.chkImportant.Location = new System.Drawing.Point(20, 294); + this.chkImportant.Name = "chkImportant"; + this.chkImportant.Size = new System.Drawing.Size(70, 17); + this.chkImportant.TabIndex = 14; + this.chkImportant.Text = "Important"; + this.chkImportant.UseVisualStyleBackColor = true; + // + // CustomerForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(386, 339); + this.Controls.Add(this.chkImportant); + this.Controls.Add(this.bnMain); + this.Controls.Add(this.txtRemarks); + this.Controls.Add(this.label6); + this.Controls.Add(this.label5); + this.Controls.Add(this.label4); + this.Controls.Add(this.txtPhone); + this.Controls.Add(this.txtAddress); + this.Controls.Add(this.label3); + this.Controls.Add(this.cmbLedger); + this.Controls.Add(this.label2); + this.Controls.Add(this.txtName); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.KeyPreview = true; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "CustomerForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Customers"; + this.Load += new System.EventHandler(this.CustomerForm_Load); + ((System.ComponentModel.ISupportInitialize)(this.bsMain)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsLedger)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bnMain)).EndInit(); + this.bnMain.ResumeLayout(false); + this.bnMain.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TextBox txtName; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.ComboBox cmbLedger; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox txtAddress; + private System.Windows.Forms.TextBox txtPhone; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.TextBox txtRemarks; + private System.Windows.Forms.BindingNavigator bnMain; + private System.Windows.Forms.ToolStripButton bindingNavigatorAddNewItem; + private System.Windows.Forms.ToolStripLabel bindingNavigatorCountItem; + private System.Windows.Forms.ToolStripButton bindingNavigatorMoveFirstItem; + private System.Windows.Forms.ToolStripButton bindingNavigatorMovePreviousItem; + private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator; + private System.Windows.Forms.ToolStripTextBox bindingNavigatorPositionItem; + private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator1; + private System.Windows.Forms.ToolStripButton bindingNavigatorMoveNextItem; + private System.Windows.Forms.ToolStripButton bindingNavigatorMoveLastItem; + private System.Windows.Forms.ToolStripSeparator bindingNavigatorSeparator2; + private System.Windows.Forms.ToolStripButton bindingNavigatorDeleteItem; + private System.Windows.Forms.ToolStripButton bindingNavigatorSaveItem; + private System.Windows.Forms.ToolStripButton bindingNavigatorCancelItem; + private System.Windows.Forms.ToolStripButton bindingNavigatorEditItem; + private System.Windows.Forms.BindingSource bsMain; + private System.Windows.Forms.BindingSource bsLedger; + private System.Windows.Forms.CheckBox chkImportant; + } +} \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/CustomerForm.cs b/Tanshu.Accounts.PointOfSale/CustomerForm.cs new file mode 100644 index 0000000..325e1bd --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/CustomerForm.cs @@ -0,0 +1,138 @@ +using System; +using System.Windows.Forms; +using Accounts.Proxy; + +namespace Accounts.PointOfSale +{ + public partial class CustomerForm : Form + { + Nullable customerID; + FormMode formMode; + FormMode editMode; + public CustomerForm(FormMode mode, Nullable customerID) + { + InitializeComponent(); + formMode = mode; + this.customerID = customerID; + bsLedger.DataSource = DataAccess.GetCustomerLedgers(); + if (formMode == FormMode.Edit) + bsMain.DataSource = CustomerProxy.GetSingleCustomerList(customerID.Value); + else + bsMain.DataSource = CustomerProxy.GetCustomers(null); + } + + private void CustomerForm_Load(object sender, EventArgs e) + { + SetFormMode(); + SetNavigation(editMode); + } + private void SetFormMode() + { + if (formMode == FormMode.Edit) + { + bsMain.Position = 0; + bindingNavigatorSaveItem.Enabled = true; + editMode = formMode; + } + else if (formMode == FormMode.AddNew) + { + bsMain.AddNew(); + bindingNavigatorEditItem.Enabled = false; + editMode = formMode; + } + else + { + editMode = FormMode.Normal; + } + } + + private void SetNavigation(FormMode mode) + { + bool enableEdit; + if (mode == FormMode.Normal) + enableEdit = false; + else //FormMode.AddNew || FormMode.Edit + enableEdit = true; + // Controls + txtName.ReadOnly = !enableEdit; + cmbLedger.Enabled = enableEdit; + txtPhone.ReadOnly = !enableEdit; + txtAddress.ReadOnly = !enableEdit; + txtRemarks.ReadOnly = !enableEdit; + chkImportant.Enabled = enableEdit; + // Other Controls + bnMain.AddNewItem.Enabled = !enableEdit; + bindingNavigatorDeleteItem.Enabled = !enableEdit; + bindingNavigatorSaveItem.Visible = enableEdit; + bindingNavigatorCancelItem.Visible = enableEdit; + bindingNavigatorEditItem.Visible = !enableEdit; + // Move Controls + bnMain.MoveFirstItem.Enabled = !enableEdit; + bnMain.MoveLastItem.Enabled = !enableEdit; + bnMain.MoveNextItem.Enabled = !enableEdit; + bnMain.MovePreviousItem.Enabled = !enableEdit; + bnMain.PositionItem.Enabled = !enableEdit; + } + + private void bindingNavigatorSaveItem_Click(object sender, EventArgs e) + { + this.Validate(); + Customer customer = new Customer(); + if (formMode == FormMode.AddNew) + customer.CustomerID = Guid.NewGuid(); + else + customer.CustomerID = customerID.Value; + customer.Name = txtName.Text; + customer.LedgerID = ((Ledger)bsLedger.Current).LedgerID; + customer.Phone = txtPhone.Text; + customer.Address = txtAddress.Text; + customer.Remarks = txtRemarks.Text; + customer.Important = chkImportant.Checked; + customer.CompanyID = Accounts.Security.CurrentUser.user.CompanyID; + if (formMode == FormMode.AddNew) + { + customer.Code = CustomerProxy.MaxCode; + CustomerProxy.AddCustomer(customer); + MessageBox.Show("Record Saved"); + } + else + { + CustomerProxy.UpdateCustomer(customer); + MessageBox.Show("Record updated"); + } + txtName.Text = ""; + txtAddress.Text = ""; + txtRemarks.Text = ""; + txtPhone.Text = ""; + chkImportant.Checked = false; + this.Dispose(); + } + + private void bindingNavigatorAddNewItem_Click(object sender, EventArgs e) + { + + } + + private void bindingNavigatorCancelItem_Click(object sender, EventArgs e) + { + if (formMode != FormMode.Normal) + this.Close(); + } + + private void bindingNavigatorEditItem_Click(object sender, EventArgs e) + { + Customer customer = new Customer(); + customer.Name = txtName.Text; + customer.CustomerID = (Guid)customerID; + customer.LedgerID = ((Ledger)bsLedger.Current).LedgerID; + customer.Phone = txtPhone.Text; + customer.Address = txtAddress.Text; + customer.Remarks = txtRemarks.Text; + customer.Important = chkImportant.Checked; + customer.CompanyID = Accounts.Security.CurrentUser.user.CompanyID; + CustomerProxy.UpdateCustomer(customer); + MessageBox.Show("Record Updated"); + } + + } +} diff --git a/Tanshu.Accounts.PointOfSale/CustomerForm.resx b/Tanshu.Accounts.PointOfSale/CustomerForm.resx new file mode 100644 index 0000000..5d59d84 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/CustomerForm.resx @@ -0,0 +1,244 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 110, 17 + + + 201, 17 + + + 17, 17 + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAU1JREFUOE9jYBi0 + 4O4C9v+35nH+vzqH6//FGbz/SXbodaDGP48a//952PD/5GQB0g04P50XbsDBHhHSDTg+SRBoe93/Pw+q + /u9oFydswKWZPP/PTuX7fxKo8Ui/0P993SJAzeX//94r+r++Qeb/qhq5/0srFf/PL1X+P6tIFdPAU0B/ + /nlYD9RUC8SV///cKwHivP9/72b+/3sn+f/f23H//92MAOKQ/5NyNDENONQrDHbu3/ulQI0FQI3ZQI2p + QI0J///digZqDPv/70bQ/3/X/f53peliGrCzXeL/lmap/+vAzpX/v6RC8f/fWzFAjeH/p+Zp/J+QpfW/ + O0P3f3uq/v/mREPCYTIb6E+Qc//dCPjfk6FDWAN6QgH5898NfyD2+9+arE+6Ad3pumD/gnB9nBHpBrQk + GfxviDf8XxNr/L8y2oR0A0hO++RqAAAkI9ieo+gjUwAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAStJREFUOE9jYBg0 + oHDW8/9NC57/z5z4+D8uR4W3P8Apx5A789n/VUfe/8elKL77wf/ghmu4DciY8vT/wn0fsCqK73n4f+n+ + ///9qy/gNiCh58n/aVveYyiKaL8P1pw56/9/r9ITuA2I7Hr0v3f1BxRFoa33wJpb1wFt7/z73yX/AG4D + Apsf/q+b/w6uKLjl7v9Fe///7wBqzpjz879d3c//9hnbcRvgUXX/f/60NyiK7Ipv/0+f8/u/f9e3/zqF + 7/5bJKzHbYB96d3/2ZNfYyjSTzn/36ToxX+VrE//jSOX4TbAIu/O/9T+11gVGSSd+C+b9vW/bvA83AYY + Zt3+H9byEqci/dTL/zV8p+E2QCftxn+/6od4Fal4TMBtgFPulf8gBXgVDZqMh+wQAPB2wKsSwCgmAAAA + AElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAL1JREFUOE9jYBgy + ILz9wX+yHRvf/eB/cMM18gyI73n4f+n+///9qy+QbkBE+32w5sxZ//97lZ4gzYDQ1ntgza3rgLZ3/v3v + kn+AeAOCW+7+X7T3//8OoOaMOT//29X9/G+fsZ14A0ChbVd8+3/6nN///bu+/dcpfPffImE9aQaADNFP + Of/fpOjFf5WsT/+NI5eRbgDIEIOkE/9l077+1w2eR54BYJekXv6v4TuNfANAhqh4TKDMALKTMc01AgDQ + FGCYkuTLEQAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAKtJREFUOE9jYBh0 + oHDW8/8UOSp35rP/Cd33yDckY8rT//P2//6f0HWHPEMSep78n73v1//OrX//u5VeJt2QyK5H/6ds+/W/ + ZOnf/wnT//63yT1LmiGBzQ//t659D9ZsXPLlv3T0tf/GkcuIN8Sj6v7/krnv4JoVXXqI1wyKPvvSu/8D + W56BbSZZM8gAi7w7/20KrpCnGWSAYdZt8jWDDNBJu0GanylKtoNCMwCgfl+gC2KedgAAAABJRU5ErkJg + gg== + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAATBJREFUOE9jYBhU + oHDW8/+4HASSa1rw/H/mxMc41TDkznz2P6H7HlYFILlVR97/D29/gNuAjClP/8/b//t/QtcdDEUguYX7 + PvwPbriG24CEnif/Z+/79b9z69//bqWXURSC5KZtef/fv/oCbgMiux79n7Lt1/+SpX//J0z/+98m9yxc + MUiud/WH/16lJ3AbENj88H/r2vdgzcYlX/5LR1/7bxy5DKwBJFc3/91/l/wDuA3wqLr/v2TuO7hmRZce + uGKQXP60N//tM7bjNsC+9O7/wJZnYJuRNYNcAJLLnvz6v0XCetwGWOTd+W9TcAVDM8gAkFxq/2u4l7Cm + F8Os21g1gxSD5MJaXv7XDZ6H2wU6aTdwSoLk/Kof/tfwnYbbAHz5yin3yn8VjwlgPKjyHwMAvtG/s0Vm + x8MAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 + YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAW9JREFUOE+tkk0o + w3EYx3dV3kq5uKBWDiPT8hISMiQsMiEyQ9qBg0hoFwcHUi7kgIvkQFJSTrQ4zdvmrTW1/kuT0i74x+X3 + MRal/fEnv8tz+H2fz/N8vz0azX88PG6wmcDp4E881hYR3VUIixF2Nr+FcO2DlbnPGjaWoM+M6DAiOitg + YUoR8rqhsJTBWG/kP6fOMKTegGjKh/7mTyIx0oUw58C0/XubLM8iKtPeQIx2gfcMJgbD0FBVlRE+D7QU + hS2ZshANuTDQqq75fQIHe6GVcxHV6VCr/2VzQIKmAshOQNbHc6+PhTqDOggBP5jzoDCJoLUaLo7fwr3V + hSCr8z8EeHcLbSU8FCfjLU0nuL/70cB4Py5tDLL7UBnC8xMMW6EkhRNdIsGt9QjhTXkGUnsN8rVf4Q72 + tpFzEnGlRiH1NIL8qDjJoY1DdjkVADNjSGnReI2ZIF196VW22+D8SAFw6YLJITjaV5e2qotSIXoBiiMD + HEVvQ/IAAAAASUVORK5CYII= + + + + + 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 + + + \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/Logging/LogViewerForm.Designer.cs b/Tanshu.Accounts.PointOfSale/Logging/LogViewerForm.Designer.cs new file mode 100644 index 0000000..e5d4304 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Logging/LogViewerForm.Designer.cs @@ -0,0 +1,232 @@ +namespace Tanshu.Accounts.PointOfSale +{ + partial class LogViewerForm + { + /// + /// 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.Label6 = new System.Windows.Forms.Label(); + this.Label2 = new System.Windows.Forms.Label(); + this.Label1 = new System.Windows.Forms.Label(); + this.cmbType = new System.Windows.Forms.ComboBox(); + this.dtpTo = new System.Windows.Forms.DateTimePicker(); + this.dtpFrom = new System.Windows.Forms.DateTimePicker(); + this.dgvPayments = new System.Windows.Forms.DataGridView(); + this.bindingSource = new System.Windows.Forms.BindingSource(this.components); + this.idDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.dateDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.messageDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.levelDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.loggerDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.exceptionDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + ((System.ComponentModel.ISupportInitialize)(this.dgvPayments)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bindingSource)).BeginInit(); + this.SuspendLayout(); + // + // Label6 + // + this.Label6.AutoSize = true; + this.Label6.Location = new System.Drawing.Point(12, 41); + this.Label6.Name = "Label6"; + this.Label6.Size = new System.Drawing.Size(33, 13); + this.Label6.TabIndex = 104; + this.Label6.Text = "Level"; + // + // Label2 + // + this.Label2.AutoSize = true; + this.Label2.Location = new System.Drawing.Point(219, 16); + this.Label2.Name = "Label2"; + this.Label2.Size = new System.Drawing.Size(20, 13); + this.Label2.TabIndex = 97; + this.Label2.Text = "To"; + // + // Label1 + // + this.Label1.AutoSize = true; + this.Label1.Location = new System.Drawing.Point(12, 16); + this.Label1.Name = "Label1"; + this.Label1.Size = new System.Drawing.Size(30, 13); + this.Label1.TabIndex = 95; + this.Label1.Text = "From"; + // + // cmbType + // + this.cmbType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbType.Items.AddRange(new object[] { + "Opening", + "Receipt", + "Payment", + "Additional Void", + "Retained at Night"}); + this.cmbType.Location = new System.Drawing.Point(68, 38); + this.cmbType.Name = "cmbType"; + this.cmbType.Size = new System.Drawing.Size(322, 21); + this.cmbType.TabIndex = 105; + // + // dtpTo + // + this.dtpTo.CustomFormat = "dd-MMM-yyyy"; + this.dtpTo.Format = System.Windows.Forms.DateTimePickerFormat.Custom; + this.dtpTo.Location = new System.Drawing.Point(245, 12); + this.dtpTo.Name = "dtpTo"; + this.dtpTo.Size = new System.Drawing.Size(145, 20); + this.dtpTo.TabIndex = 98; + this.dtpTo.ValueChanged += new System.EventHandler(this.dtpTo_ValueChanged); + // + // dtpFrom + // + this.dtpFrom.CustomFormat = "dd-MMM-yyyy"; + this.dtpFrom.Format = System.Windows.Forms.DateTimePickerFormat.Custom; + this.dtpFrom.Location = new System.Drawing.Point(68, 12); + this.dtpFrom.Name = "dtpFrom"; + this.dtpFrom.Size = new System.Drawing.Size(132, 20); + this.dtpFrom.TabIndex = 96; + this.dtpFrom.ValueChanged += new System.EventHandler(this.dtpFrom_ValueChanged); + // + // dgvPayments + // + this.dgvPayments.AllowUserToAddRows = false; + this.dgvPayments.AllowUserToDeleteRows = false; + this.dgvPayments.AllowUserToResizeRows = false; + this.dgvPayments.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.dgvPayments.AutoGenerateColumns = false; + this.dgvPayments.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.DisplayedCells; + this.dgvPayments.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dgvPayments.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.idDataGridViewTextBoxColumn, + this.dateDataGridViewTextBoxColumn, + this.messageDataGridViewTextBoxColumn, + this.levelDataGridViewTextBoxColumn, + this.loggerDataGridViewTextBoxColumn, + this.exceptionDataGridViewTextBoxColumn}); + this.dgvPayments.DataSource = this.bindingSource; + this.dgvPayments.EditMode = System.Windows.Forms.DataGridViewEditMode.EditProgrammatically; + this.dgvPayments.Location = new System.Drawing.Point(12, 65); + this.dgvPayments.Name = "dgvPayments"; + this.dgvPayments.ReadOnly = true; + this.dgvPayments.RowHeadersVisible = false; + this.dgvPayments.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.dgvPayments.Size = new System.Drawing.Size(378, 459); + this.dgvPayments.TabIndex = 110; + // + // bindingSource + // + this.bindingSource.DataSource = typeof(Tanshu.Logging.SqlLog); + // + // idDataGridViewTextBoxColumn + // + this.idDataGridViewTextBoxColumn.DataPropertyName = "Id"; + this.idDataGridViewTextBoxColumn.HeaderText = "Id"; + this.idDataGridViewTextBoxColumn.Name = "idDataGridViewTextBoxColumn"; + this.idDataGridViewTextBoxColumn.ReadOnly = true; + this.idDataGridViewTextBoxColumn.Width = 41; + // + // dateDataGridViewTextBoxColumn + // + this.dateDataGridViewTextBoxColumn.DataPropertyName = "Date"; + this.dateDataGridViewTextBoxColumn.HeaderText = "Date"; + this.dateDataGridViewTextBoxColumn.Name = "dateDataGridViewTextBoxColumn"; + this.dateDataGridViewTextBoxColumn.ReadOnly = true; + this.dateDataGridViewTextBoxColumn.Width = 55; + // + // messageDataGridViewTextBoxColumn + // + this.messageDataGridViewTextBoxColumn.DataPropertyName = "Message"; + this.messageDataGridViewTextBoxColumn.HeaderText = "Message"; + this.messageDataGridViewTextBoxColumn.Name = "messageDataGridViewTextBoxColumn"; + this.messageDataGridViewTextBoxColumn.ReadOnly = true; + this.messageDataGridViewTextBoxColumn.Width = 75; + // + // levelDataGridViewTextBoxColumn + // + this.levelDataGridViewTextBoxColumn.DataPropertyName = "Level"; + this.levelDataGridViewTextBoxColumn.HeaderText = "Level"; + this.levelDataGridViewTextBoxColumn.Name = "levelDataGridViewTextBoxColumn"; + this.levelDataGridViewTextBoxColumn.ReadOnly = true; + this.levelDataGridViewTextBoxColumn.Width = 58; + // + // loggerDataGridViewTextBoxColumn + // + this.loggerDataGridViewTextBoxColumn.DataPropertyName = "Logger"; + this.loggerDataGridViewTextBoxColumn.HeaderText = "Logger"; + this.loggerDataGridViewTextBoxColumn.Name = "loggerDataGridViewTextBoxColumn"; + this.loggerDataGridViewTextBoxColumn.ReadOnly = true; + this.loggerDataGridViewTextBoxColumn.Width = 65; + // + // exceptionDataGridViewTextBoxColumn + // + this.exceptionDataGridViewTextBoxColumn.DataPropertyName = "Exception"; + this.exceptionDataGridViewTextBoxColumn.HeaderText = "Exception"; + this.exceptionDataGridViewTextBoxColumn.Name = "exceptionDataGridViewTextBoxColumn"; + this.exceptionDataGridViewTextBoxColumn.ReadOnly = true; + this.exceptionDataGridViewTextBoxColumn.Width = 79; + // + // LogViewerForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(402, 536); + this.Controls.Add(this.dgvPayments); + this.Controls.Add(this.Label6); + this.Controls.Add(this.Label2); + this.Controls.Add(this.Label1); + this.Controls.Add(this.cmbType); + this.Controls.Add(this.dtpTo); + this.Controls.Add(this.dtpFrom); + this.MaximizeBox = false; + this.Name = "LogViewerForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Payments"; + this.Load += new System.EventHandler(this.PaymentForm_Load); + ((System.ComponentModel.ISupportInitialize)(this.dgvPayments)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bindingSource)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + internal System.Windows.Forms.Label Label6; + internal System.Windows.Forms.Label Label2; + internal System.Windows.Forms.Label Label1; + internal System.Windows.Forms.ComboBox cmbType; + internal System.Windows.Forms.DateTimePicker dtpTo; + internal System.Windows.Forms.DateTimePicker dtpFrom; + private System.Windows.Forms.DataGridView dgvPayments; + private System.Windows.Forms.BindingSource bindingSource; + private System.Windows.Forms.DataGridViewTextBoxColumn idDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn dateDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn messageDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn levelDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn loggerDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn exceptionDataGridViewTextBoxColumn; + } +} \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/Logging/LogViewerForm.cs b/Tanshu.Accounts.PointOfSale/Logging/LogViewerForm.cs new file mode 100644 index 0000000..e0c8e8a --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Logging/LogViewerForm.cs @@ -0,0 +1,43 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using System.Windows.Forms; +using Tanshu.Accounts.BI; +using Tanshu.Accounts.Contracts; +using Tanshu.Accounts.Helpers; + +namespace Tanshu.Accounts.PointOfSale +{ + public partial class LogViewerForm : Form + { + private static readonly Tanshu.Logging.SqlLogger log = new Tanshu.Logging.SqlLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + public LogViewerForm() + { + InitializeComponent(); + } + + private void PaymentForm_Load(object sender, EventArgs e) + { + dtpFrom.Value = DateTime.Now; + dtpTo.Value = DateTime.Now; + GridBind(); + } + + private void GridBind() + { + DateTime startDate = Convert.ToDateTime(string.Format("{0:dd-MMM-yyyy 00:00:00}", dtpFrom.Value)); + DateTime endDate = Convert.ToDateTime(string.Format("{0:dd-MMM-yyyy 23:59:59}", dtpTo.Value)); + bindingSource.DataSource = log.GetLog(startDate, endDate, Tanshu.Logging.LogType.Info); + } + + private void dtpFrom_ValueChanged(object sender, EventArgs e) + { + GridBind(); + } + + private void dtpTo_ValueChanged(object sender, EventArgs e) + { + GridBind(); + } + } +} diff --git a/Tanshu.Accounts.PointOfSale/Logging/LogViewerForm.resx b/Tanshu.Accounts.PointOfSale/Logging/LogViewerForm.resx new file mode 100644 index 0000000..62ea5eb --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Logging/LogViewerForm.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 17, 17 + + \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/LoginForm.Designer.cs b/Tanshu.Accounts.PointOfSale/LoginForm.Designer.cs new file mode 100644 index 0000000..b8589f8 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/LoginForm.Designer.cs @@ -0,0 +1,123 @@ +namespace Tanshu.Accounts.PointOfSale +{ + partial class LoginForm + { + /// + /// 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.btnExit = new System.Windows.Forms.Button(); + this.btnLogin = new System.Windows.Forms.Button(); + this.txtPassword = new System.Windows.Forms.TextBox(); + this.Label2 = new System.Windows.Forms.Label(); + this.txtUserName = new System.Windows.Forms.TextBox(); + this.Label1 = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // btnExit + // + this.btnExit.DialogResult = System.Windows.Forms.DialogResult.Cancel; + this.btnExit.Location = new System.Drawing.Point(203, 64); + this.btnExit.Name = "btnExit"; + this.btnExit.Size = new System.Drawing.Size(75, 23); + this.btnExit.TabIndex = 3; + this.btnExit.Text = "E&xit"; + this.btnExit.UseVisualStyleBackColor = true; + this.btnExit.Click += new System.EventHandler(this.btnExit_Click); + // + // btnLogin + // + this.btnLogin.Location = new System.Drawing.Point(78, 64); + this.btnLogin.Name = "btnLogin"; + this.btnLogin.Size = new System.Drawing.Size(75, 23); + this.btnLogin.TabIndex = 2; + this.btnLogin.Text = "&Login"; + this.btnLogin.UseVisualStyleBackColor = true; + this.btnLogin.Click += new System.EventHandler(this.btnLogin_Click); + // + // txtPassword + // + this.txtPassword.Location = new System.Drawing.Point(78, 38); + this.txtPassword.Name = "txtPassword"; + this.txtPassword.PasswordChar = '*'; + this.txtPassword.Size = new System.Drawing.Size(200, 20); + this.txtPassword.TabIndex = 1; + this.txtPassword.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtPassword_KeyDown); + // + // Label2 + // + this.Label2.Location = new System.Drawing.Point(12, 41); + this.Label2.Name = "Label2"; + this.Label2.Size = new System.Drawing.Size(60, 20); + this.Label2.TabIndex = 5; + this.Label2.Text = "Password"; + // + // txtUserName + // + this.txtUserName.Location = new System.Drawing.Point(78, 12); + this.txtUserName.Name = "txtUserName"; + this.txtUserName.Size = new System.Drawing.Size(200, 20); + this.txtUserName.TabIndex = 0; + this.txtUserName.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtUserName_KeyDown); + // + // Label1 + // + this.Label1.Location = new System.Drawing.Point(12, 15); + this.Label1.Name = "Label1"; + this.Label1.Size = new System.Drawing.Size(60, 20); + this.Label1.TabIndex = 4; + this.Label1.Text = "Username"; + // + // LoginForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.btnExit; + this.ClientSize = new System.Drawing.Size(290, 99); + this.Controls.Add(this.txtPassword); + this.Controls.Add(this.Label2); + this.Controls.Add(this.txtUserName); + this.Controls.Add(this.Label1); + this.Controls.Add(this.btnLogin); + this.Controls.Add(this.btnExit); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedToolWindow; + this.Name = "LoginForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Login"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Button btnExit; + private System.Windows.Forms.Button btnLogin; + internal System.Windows.Forms.TextBox txtPassword; + internal System.Windows.Forms.Label Label2; + internal System.Windows.Forms.TextBox txtUserName; + internal System.Windows.Forms.Label Label1; + } +} \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/LoginForm.cs b/Tanshu.Accounts.PointOfSale/LoginForm.cs new file mode 100644 index 0000000..50ac118 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/LoginForm.cs @@ -0,0 +1,56 @@ +using System; +using System.Threading; +using System.Windows.Forms; +using Tanshu.Accounts.BI; +using Tanshu.Accounts.Helpers; + +namespace Tanshu.Accounts.PointOfSale +{ + public partial class LoginForm : Form + { + private static readonly Tanshu.Logging.SqlLogger log = new Tanshu.Logging.SqlLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + private bool isAuthenticated; + private string userName; + public LoginForm() + { + InitializeComponent(); + isAuthenticated = false; + userName = null; + } + + private void txtUserName_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Return) + txtPassword.Focus(); + } + + private void txtPassword_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.Return) + btnLogin_Click(sender, e); + } + + private void btnLogin_Click(object sender, EventArgs e) + { + userName = txtUserName.Text.Trim(); + isAuthenticated = new MembershipBI().ValidateUser(userName, Tanshu.Common.Md5.Hash(txtPassword.Text, "Salt")); + + if (isAuthenticated) + this.Close(); + else + MessageBox.Show("Username or password is not valid"); + + } + + public bool UserName(out string userName) + { + userName = this.userName; + return isAuthenticated; + } + + private void btnExit_Click(object sender, EventArgs e) + { + this.Close(); + } + } +} diff --git a/Tanshu.Accounts.PointOfSale/LoginForm.resx b/Tanshu.Accounts.PointOfSale/LoginForm.resx new file mode 100644 index 0000000..19dc0dd --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/LoginForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/MainForm.cs b/Tanshu.Accounts.PointOfSale/MainForm.cs new file mode 100644 index 0000000..848a272 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/MainForm.cs @@ -0,0 +1,325 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using System.Windows.Forms; +using Tanshu.Accounts.BI; +using Tanshu.Accounts.Contracts; +using Tanshu.Accounts.Helpers; +using Tanshu.Accounts.PointOfSale.Updates; + +namespace Tanshu.Accounts.PointOfSale +{ + public partial class MainForm : Form + { + public MainForm() + { + InitializeComponent(); + } + + private void btnPrint_Click(object sender, EventArgs e) + { + MessageBox.Show(CurrentUser.user.Name); + using (RoleBI roleBI = RoleFactoryBI.GetRoleBI("Sales/Checkout")) + { + if (roleBI.IsAllowed) + using (Cashier_Checkout_Form frmChashierCheckOut = new Cashier_Checkout_Form()) + { + frmChashierCheckOut.ShowDialog(); + } + } + + //Dictionary amounts = new Dictionary(); + //if (txt1000.Text != "") amounts.Add(1000, Convert.ToInt32(txt1000.Text)); + //if (txt500.Text != "") amounts.Add(500, Convert.ToInt32(txt500.Text)); + //if (txt100.Text != "") amounts.Add(100, Convert.ToInt32(txt100.Text)); + //if (txt50.Text != "") amounts.Add(50, Convert.ToInt32(txt50.Text)); + //if (txt20.Text != "") amounts.Add(20, Convert.ToInt32(txt20.Text)); + //if (txt10.Text != "") amounts.Add(10, Convert.ToInt32(txt10.Text)); + //if (txt5.Text != "") amounts.Add(5, Convert.ToInt32(txt5.Text)); + //if (txt2.Text != "") amounts.Add(2, Convert.ToInt32(txt2.Text)); + //if (txt1.Text != "") amounts.Add(1, Convert.ToInt32(txt1.Text)); + //Accounts.Print.Thermal.PrintCash(amounts); + } + + private void saleToolStripMenuItem_Click(object sender, EventArgs e) + { + if (!Thread.CurrentPrincipal.IsInRole("Sales/SalesBill")) + { + MessageBox.Show("You are not authorized to access"); + } + else + { + new ProductBI().UpdateShortName(); + using (SalesForm frmSale = new SalesForm()) + frmSale.ShowDialog(); + } + } + + private void txt1000_TextChanged(object sender, EventArgs e) + { + try + { + int Amount = 0; + Amount += 1000 * Convert.ToInt16(txt1000.Text); + Amount += 500 * (txt500.Text == "" ? 0 : Convert.ToInt16(txt500.Text)); + Amount += 100 * (txt100.Text == "" ? 0 : Convert.ToInt16(txt100.Text)); + Amount += 50 * (txt50.Text == "" ? 0 : Convert.ToInt16(txt50.Text)); + Amount += 20 * (txt20.Text == "" ? 0 : Convert.ToInt16(txt20.Text)); + Amount += 10 * (txt10.Text == "" ? 0 : Convert.ToInt16(txt10.Text)); + Amount += 5 * (txt5.Text == "" ? 0 : Convert.ToInt16(txt5.Text)); + Amount += 2 * (txt2.Text == "" ? 0 : Convert.ToInt16(txt2.Text)); + Amount += 1 * (txt1.Text == "" ? 0 : Convert.ToInt16(txt1.Text)); + txtTotal.Text = Amount.ToString(); + } + catch (Exception ex) + { + System.Windows.Forms.MessageBox.Show("Error Number " + ex.Source + "\n\r" + ex.Message); + } + } + + private void advancesToolStripMenuItem_Click(object sender, EventArgs e) + { + RecieveAdvanceForm frmReceivedAdvance = new RecieveAdvanceForm(); + frmReceivedAdvance.ShowDialog(); + frmReceivedAdvance.Dispose(); + } + + private void paymentsToolStripMenuItem_Click(object sender, EventArgs e) + { + AdjustAdvanceForm frmAdjustAdvancesForm = new AdjustAdvanceForm(); + frmAdjustAdvancesForm.ShowDialog(); + frmAdjustAdvancesForm.Dispose(); + } + + private void paymentsToolStripMenuItem1_Click(object sender, EventArgs e) + { + LogViewerForm frmPayments = new LogViewerForm(); + frmPayments.ShowDialog(); + frmPayments.Dispose(); + } + + private void exitToolStripMenuItem_Click(object sender, EventArgs e) + { + this.Close(); + } + + private void createNewUserToolStripMenuItem_Click(object sender, EventArgs e) + { + if (!Thread.CurrentPrincipal.IsInRole("Security/ManageRoles")) + MessageBox.Show("You are not authorized to access"); + else + { + using (SelectUser form = new SelectUser(new UserBI().GetFilteredUsers, true)) + { + form.userEvent += new UserEventHandler(form_userEvent); + form.ShowDialog(); + } + } + } + + UserBO form_userEvent(object sender, UserEventArgs e) + { + UserBO user = e.User; + + if (user == null) + { + using (UserForm form = new UserForm(null)) + { + form.ShowDialog(); + } + } + else + { + using (UserForm form = new UserForm(user.UserID)) + { + form.ShowDialog(); + } + } + e.Handled = true; + return new UserBO(); + } + + private void changePasswordToolStripMenuItem_Click(object sender, EventArgs e) + { + ChangePassword frm = new ChangePassword(); + frm.ShowDialog(); + frm.Dispose(); + } + + private void assignRolesToolStripMenuItem_Click(object sender, EventArgs e) + { + if (!Thread.CurrentPrincipal.IsInRole("Security/ManageRoles")) + MessageBox.Show("You are not authorized to access"); + else + { + AssignRoles frm = new AssignRoles(); + frm.ShowDialog(); + frm.Dispose(); + } + } + + private void paymentsToolStripMenuItem1_Click_1(object sender, EventArgs e) + { + using (PaymentForm frm = new PaymentForm()) + { + frm.ShowDialog(); + } + } + + private void MainForm_Load(object sender, EventArgs e) + { + this.Text = "Main Menu - User: " + CurrentUser.user.Name; + } + + private void salesAnalysisToolStripMenuItem1_Click(object sender, EventArgs e) + { + if (!Thread.CurrentPrincipal.IsInRole("Sales/SaleDetail")) + MessageBox.Show("You are not authorized to access"); + else + { + frmSaleAnalysisForm frmSalesAnalysis = new frmSaleAnalysisForm(); + frmSalesAnalysis.ShowDialog(); + frmSalesAnalysis.Dispose(); + } + } + + private void cashierCheckoutToolStripMenuItem1_Click(object sender, EventArgs e) + { + if (!Thread.CurrentPrincipal.IsInRole("Sales/Checkout")) + MessageBox.Show("You are not authorized to access"); + else + { + Cashier_Checkout_Form frmChashierCheckOut = new Cashier_Checkout_Form(); + frmChashierCheckOut.ShowDialog(); + frmChashierCheckOut.Dispose(); + } + + } + + private void customersToolStripMenuItem_Click(object sender, EventArgs e) + { + //Guid c=new Guid("28BFB512-6B92-4AA1-A931-7993593B8E07"); + using (CustomersForm Customer = new CustomersForm(null, "")) + { + Customer.ShowDialog(); + } + } + + private void productsToolStripMenuItem_Click(object sender, EventArgs e) + { + if (!Thread.CurrentPrincipal.IsInRole("Master/Products")) + { + MessageBox.Show("You are not authorized to access"); + } + else + { + ProductsForm form = new ProductsForm(); + form.ShowDialog(); + form.Dispose(); + } + } + + private void prToolStripMenuItem_Click(object sender, EventArgs e) + { + ProductTypes ProductType = new ProductTypes(); + ProductType.ShowDialog(); + ProductType.Dispose(); + } + + private void toolStripMenuItem1_Click(object sender, EventArgs e) + { + //ProductNewRates ProductRates = new ProductNewRates(); + //ProductRates.ShowDialog(); + //ProductRates.Dispose(); + } + + private void applyNewRatesToolStripMenuItem_Click(object sender, EventArgs e) + { + //ApplyRates ApplyRate = new ApplyRates(); + //ApplyRate.ShowDialog(); + //ApplyRate.Dispose(); + } + + private void masterToolStripMenuItem_Click(object sender, EventArgs e) + { + + } + + private void complexProductsToolStripMenuItem_Click(object sender, EventArgs e) + { + if (!Thread.CurrentPrincipal.IsInRole("Master/Products")) + { + MessageBox.Show("You are not authorized to access"); + } + else + { + //ComplexProductForm form = new ComplexProductForm(); + //form.ShowDialog(); + //form.Dispose(); + } + } + + private void viewLogToolStripMenuItem_Click(object sender, EventArgs e) + { + if (!Thread.CurrentPrincipal.IsInRole("Log/View")) + MessageBox.Show("You are not authorized to access"); + else + using (LogViewerForm form = new LogViewerForm()) + form.ShowDialog(); + } + + private void updateToolStripMenuItem_Click(object sender, EventArgs e) + { + if (!Thread.CurrentPrincipal.IsInRole("Master/Products")) + { + MessageBox.Show("You are not authorized to access"); + } + else + { + using (UpdateForm form = new UpdateForm()) + { + form.ShowDialog(); + } + } + } + + private void reportToolStripMenuItem_Click(object sender, EventArgs e) + { + if (!Thread.CurrentPrincipal.IsInRole("Master/Products")) + { + MessageBox.Show("You are not authorized to access"); + } + else + { + using (SaleTaxReportForm form = new SaleTaxReportForm()) + { + form.ShowDialog(); + } + } + } + + private void updateBillsToolStripMenuItem_Click(object sender, EventArgs e) + { + if (!Thread.CurrentPrincipal.IsInRole("Master/Products")) + { + MessageBox.Show("You are not authorized to access"); + } + else + { + using (UpdateSales form = new UpdateSales()) + { + form.ShowDialog(); + } + } + } + + private void autoToolStripMenuItem_Click(object sender, EventArgs e) + { + if (!Thread.CurrentPrincipal.IsInRole("Master/Products")) + MessageBox.Show("You are not authorized to access"); + else + using (ReplaceForm form = new ReplaceForm()) + form.ShowDialog(); + } + } +} diff --git a/Tanshu.Accounts.PointOfSale/MainForm.designer.cs b/Tanshu.Accounts.PointOfSale/MainForm.designer.cs new file mode 100644 index 0000000..caec151 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/MainForm.designer.cs @@ -0,0 +1,566 @@ +namespace Tanshu.Accounts.PointOfSale +{ + partial class MainForm + { + /// + /// 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.CashCalculator = new System.Windows.Forms.GroupBox(); + this.txtTotal = new System.Windows.Forms.TextBox(); + this.txt1 = new System.Windows.Forms.TextBox(); + this.txt2 = new System.Windows.Forms.TextBox(); + this.txt5 = new System.Windows.Forms.TextBox(); + this.txt10 = new System.Windows.Forms.TextBox(); + this.txt20 = new System.Windows.Forms.TextBox(); + this.txt50 = new System.Windows.Forms.TextBox(); + this.txt100 = new System.Windows.Forms.TextBox(); + this.txt500 = new System.Windows.Forms.TextBox(); + this.txt1000 = new System.Windows.Forms.TextBox(); + this.btnPrint = new System.Windows.Forms.Button(); + this.lblTotal = new System.Windows.Forms.Label(); + this.label10 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.menuStrip1 = new System.Windows.Forms.MenuStrip(); + this.masterToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.prToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.productsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.complexProductsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.customersToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.updateToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.reportToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.autoToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.updateBillsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.transactionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.saleToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.advancesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.paymentsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.paymentsToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + this.permissionsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.createNewUserToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.changePasswordToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.assignRolesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.reportsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.cashierCheckoutToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + this.salesAnalysisToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + this.viewLogToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.exitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.CashCalculator.SuspendLayout(); + this.menuStrip1.SuspendLayout(); + this.SuspendLayout(); + // + // CashCalculator + // + this.CashCalculator.Controls.Add(this.txtTotal); + this.CashCalculator.Controls.Add(this.txt1); + this.CashCalculator.Controls.Add(this.txt2); + this.CashCalculator.Controls.Add(this.txt5); + this.CashCalculator.Controls.Add(this.txt10); + this.CashCalculator.Controls.Add(this.txt20); + this.CashCalculator.Controls.Add(this.txt50); + this.CashCalculator.Controls.Add(this.txt100); + this.CashCalculator.Controls.Add(this.txt500); + this.CashCalculator.Controls.Add(this.txt1000); + this.CashCalculator.Controls.Add(this.btnPrint); + this.CashCalculator.Controls.Add(this.lblTotal); + this.CashCalculator.Controls.Add(this.label10); + this.CashCalculator.Controls.Add(this.label9); + this.CashCalculator.Controls.Add(this.label8); + this.CashCalculator.Controls.Add(this.label7); + this.CashCalculator.Controls.Add(this.label6); + this.CashCalculator.Controls.Add(this.label5); + this.CashCalculator.Controls.Add(this.label4); + this.CashCalculator.Controls.Add(this.label3); + this.CashCalculator.Controls.Add(this.label2); + this.CashCalculator.Controls.Add(this.label1); + this.CashCalculator.Location = new System.Drawing.Point(13, 33); + this.CashCalculator.Name = "CashCalculator"; + this.CashCalculator.Size = new System.Drawing.Size(174, 346); + this.CashCalculator.TabIndex = 25; + this.CashCalculator.TabStop = false; + // + // txtTotal + // + this.txtTotal.Location = new System.Drawing.Point(51, 286); + this.txtTotal.Name = "txtTotal"; + this.txtTotal.ReadOnly = true; + this.txtTotal.Size = new System.Drawing.Size(100, 20); + this.txtTotal.TabIndex = 21; + // + // txt1 + // + this.txt1.Location = new System.Drawing.Point(51, 256); + this.txt1.Name = "txt1"; + this.txt1.Size = new System.Drawing.Size(100, 20); + this.txt1.TabIndex = 20; + this.txt1.TextChanged += new System.EventHandler(this.txt1000_TextChanged); + // + // txt2 + // + this.txt2.Location = new System.Drawing.Point(51, 226); + this.txt2.Name = "txt2"; + this.txt2.Size = new System.Drawing.Size(100, 20); + this.txt2.TabIndex = 19; + this.txt2.TextChanged += new System.EventHandler(this.txt1000_TextChanged); + // + // txt5 + // + this.txt5.Location = new System.Drawing.Point(51, 196); + this.txt5.Name = "txt5"; + this.txt5.Size = new System.Drawing.Size(100, 20); + this.txt5.TabIndex = 18; + this.txt5.TextChanged += new System.EventHandler(this.txt1000_TextChanged); + // + // txt10 + // + this.txt10.Location = new System.Drawing.Point(51, 166); + this.txt10.Name = "txt10"; + this.txt10.Size = new System.Drawing.Size(100, 20); + this.txt10.TabIndex = 17; + this.txt10.TextChanged += new System.EventHandler(this.txt1000_TextChanged); + // + // txt20 + // + this.txt20.Location = new System.Drawing.Point(51, 136); + this.txt20.Name = "txt20"; + this.txt20.Size = new System.Drawing.Size(100, 20); + this.txt20.TabIndex = 16; + this.txt20.TextChanged += new System.EventHandler(this.txt1000_TextChanged); + // + // txt50 + // + this.txt50.Location = new System.Drawing.Point(51, 106); + this.txt50.Name = "txt50"; + this.txt50.Size = new System.Drawing.Size(100, 20); + this.txt50.TabIndex = 15; + this.txt50.TextChanged += new System.EventHandler(this.txt1000_TextChanged); + // + // txt100 + // + this.txt100.Location = new System.Drawing.Point(51, 76); + this.txt100.Name = "txt100"; + this.txt100.Size = new System.Drawing.Size(100, 20); + this.txt100.TabIndex = 14; + this.txt100.TextChanged += new System.EventHandler(this.txt1000_TextChanged); + // + // txt500 + // + this.txt500.Location = new System.Drawing.Point(51, 46); + this.txt500.Name = "txt500"; + this.txt500.Size = new System.Drawing.Size(100, 20); + this.txt500.TabIndex = 13; + this.txt500.TextChanged += new System.EventHandler(this.txt1000_TextChanged); + // + // txt1000 + // + this.txt1000.Location = new System.Drawing.Point(51, 16); + this.txt1000.Name = "txt1000"; + this.txt1000.Size = new System.Drawing.Size(100, 20); + this.txt1000.TabIndex = 12; + this.txt1000.TextChanged += new System.EventHandler(this.txt1000_TextChanged); + // + // btnPrint + // + this.btnPrint.Location = new System.Drawing.Point(51, 317); + this.btnPrint.Name = "btnPrint"; + this.btnPrint.Size = new System.Drawing.Size(100, 20); + this.btnPrint.TabIndex = 11; + this.btnPrint.Text = "Print"; + this.btnPrint.UseVisualStyleBackColor = true; + this.btnPrint.Click += new System.EventHandler(this.btnPrint_Click); + // + // lblTotal + // + this.lblTotal.AutoSize = true; + this.lblTotal.Location = new System.Drawing.Point(13, 289); + this.lblTotal.Name = "lblTotal"; + this.lblTotal.Size = new System.Drawing.Size(31, 13); + this.lblTotal.TabIndex = 10; + this.lblTotal.Text = "Total"; + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Location = new System.Drawing.Point(26, 262); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(18, 13); + this.label10.TabIndex = 9; + this.label10.Text = "1x"; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Location = new System.Drawing.Point(25, 231); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(18, 13); + this.label9.TabIndex = 8; + this.label9.Text = "2x"; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(25, 201); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(18, 13); + this.label8.TabIndex = 7; + this.label8.Text = "5x"; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(19, 171); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(24, 13); + this.label7.TabIndex = 6; + this.label7.Text = "10x"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(19, 141); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(24, 13); + this.label6.TabIndex = 5; + this.label6.Text = "20x"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(18, 112); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(24, 13); + this.label5.TabIndex = 4; + this.label5.Text = "50x"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(6, 93); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(0, 13); + this.label4.TabIndex = 3; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(14, 79); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(30, 13); + this.label3.TabIndex = 2; + this.label3.Text = "100x"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(15, 50); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(30, 13); + this.label2.TabIndex = 1; + this.label2.Text = "500x"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(9, 21); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(36, 13); + this.label1.TabIndex = 0; + this.label1.Text = "1000x"; + // + // menuStrip1 + // + this.menuStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.masterToolStripMenuItem, + this.transactionsToolStripMenuItem, + this.permissionsToolStripMenuItem, + this.reportsToolStripMenuItem, + this.exitToolStripMenuItem}); + this.menuStrip1.Location = new System.Drawing.Point(0, 0); + this.menuStrip1.Name = "menuStrip1"; + this.menuStrip1.Size = new System.Drawing.Size(792, 24); + this.menuStrip1.TabIndex = 26; + this.menuStrip1.Text = "menuStrip1"; + // + // masterToolStripMenuItem + // + this.masterToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.prToolStripMenuItem, + this.productsToolStripMenuItem, + this.complexProductsToolStripMenuItem, + this.customersToolStripMenuItem, + this.updateToolStripMenuItem, + this.reportToolStripMenuItem, + this.autoToolStripMenuItem, + this.updateBillsToolStripMenuItem}); + this.masterToolStripMenuItem.Name = "masterToolStripMenuItem"; + this.masterToolStripMenuItem.Size = new System.Drawing.Size(55, 20); + this.masterToolStripMenuItem.Text = "Master"; + this.masterToolStripMenuItem.Click += new System.EventHandler(this.masterToolStripMenuItem_Click); + // + // prToolStripMenuItem + // + this.prToolStripMenuItem.Name = "prToolStripMenuItem"; + this.prToolStripMenuItem.Size = new System.Drawing.Size(171, 22); + this.prToolStripMenuItem.Text = "Product Type"; + this.prToolStripMenuItem.Click += new System.EventHandler(this.prToolStripMenuItem_Click); + // + // productsToolStripMenuItem + // + this.productsToolStripMenuItem.Name = "productsToolStripMenuItem"; + this.productsToolStripMenuItem.Size = new System.Drawing.Size(171, 22); + this.productsToolStripMenuItem.Text = "Products"; + this.productsToolStripMenuItem.Click += new System.EventHandler(this.productsToolStripMenuItem_Click); + // + // complexProductsToolStripMenuItem + // + this.complexProductsToolStripMenuItem.Name = "complexProductsToolStripMenuItem"; + this.complexProductsToolStripMenuItem.Size = new System.Drawing.Size(171, 22); + this.complexProductsToolStripMenuItem.Text = "Complex Products"; + this.complexProductsToolStripMenuItem.Click += new System.EventHandler(this.complexProductsToolStripMenuItem_Click); + // + // customersToolStripMenuItem + // + this.customersToolStripMenuItem.Name = "customersToolStripMenuItem"; + this.customersToolStripMenuItem.Size = new System.Drawing.Size(171, 22); + this.customersToolStripMenuItem.Text = "Customers"; + this.customersToolStripMenuItem.Click += new System.EventHandler(this.customersToolStripMenuItem_Click); + // + // updateToolStripMenuItem + // + this.updateToolStripMenuItem.Name = "updateToolStripMenuItem"; + this.updateToolStripMenuItem.Size = new System.Drawing.Size(171, 22); + this.updateToolStripMenuItem.Text = "Update"; + this.updateToolStripMenuItem.Click += new System.EventHandler(this.updateToolStripMenuItem_Click); + // + // reportToolStripMenuItem + // + this.reportToolStripMenuItem.Name = "reportToolStripMenuItem"; + this.reportToolStripMenuItem.Size = new System.Drawing.Size(171, 22); + this.reportToolStripMenuItem.Text = "Report"; + this.reportToolStripMenuItem.Click += new System.EventHandler(this.reportToolStripMenuItem_Click); + // + // autoToolStripMenuItem + // + this.autoToolStripMenuItem.Name = "autoToolStripMenuItem"; + this.autoToolStripMenuItem.Size = new System.Drawing.Size(171, 22); + this.autoToolStripMenuItem.Text = "Auto"; + this.autoToolStripMenuItem.Click += new System.EventHandler(this.autoToolStripMenuItem_Click); + // + // updateBillsToolStripMenuItem + // + this.updateBillsToolStripMenuItem.Name = "updateBillsToolStripMenuItem"; + this.updateBillsToolStripMenuItem.Size = new System.Drawing.Size(171, 22); + this.updateBillsToolStripMenuItem.Text = "Update Bills"; + this.updateBillsToolStripMenuItem.Click += new System.EventHandler(this.updateBillsToolStripMenuItem_Click); + // + // transactionsToolStripMenuItem + // + this.transactionsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.saleToolStripMenuItem, + this.advancesToolStripMenuItem, + this.paymentsToolStripMenuItem, + this.paymentsToolStripMenuItem1}); + this.transactionsToolStripMenuItem.Name = "transactionsToolStripMenuItem"; + this.transactionsToolStripMenuItem.Size = new System.Drawing.Size(86, 20); + this.transactionsToolStripMenuItem.Text = "Transactions"; + // + // saleToolStripMenuItem + // + this.saleToolStripMenuItem.Name = "saleToolStripMenuItem"; + this.saleToolStripMenuItem.Size = new System.Drawing.Size(170, 22); + this.saleToolStripMenuItem.Text = "Sale"; + this.saleToolStripMenuItem.Click += new System.EventHandler(this.saleToolStripMenuItem_Click); + // + // advancesToolStripMenuItem + // + this.advancesToolStripMenuItem.Name = "advancesToolStripMenuItem"; + this.advancesToolStripMenuItem.Size = new System.Drawing.Size(170, 22); + this.advancesToolStripMenuItem.Text = "Received Advance"; + this.advancesToolStripMenuItem.Click += new System.EventHandler(this.advancesToolStripMenuItem_Click); + // + // paymentsToolStripMenuItem + // + this.paymentsToolStripMenuItem.Name = "paymentsToolStripMenuItem"; + this.paymentsToolStripMenuItem.Size = new System.Drawing.Size(170, 22); + this.paymentsToolStripMenuItem.Text = "Adjust Advance"; + this.paymentsToolStripMenuItem.Click += new System.EventHandler(this.paymentsToolStripMenuItem_Click); + // + // paymentsToolStripMenuItem1 + // + this.paymentsToolStripMenuItem1.Name = "paymentsToolStripMenuItem1"; + this.paymentsToolStripMenuItem1.Size = new System.Drawing.Size(170, 22); + this.paymentsToolStripMenuItem1.Text = "Payments"; + this.paymentsToolStripMenuItem1.Click += new System.EventHandler(this.paymentsToolStripMenuItem1_Click_1); + // + // permissionsToolStripMenuItem + // + this.permissionsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.createNewUserToolStripMenuItem, + this.changePasswordToolStripMenuItem, + this.assignRolesToolStripMenuItem}); + this.permissionsToolStripMenuItem.Name = "permissionsToolStripMenuItem"; + this.permissionsToolStripMenuItem.Size = new System.Drawing.Size(82, 20); + this.permissionsToolStripMenuItem.Text = "Permissions"; + // + // createNewUserToolStripMenuItem + // + this.createNewUserToolStripMenuItem.Name = "createNewUserToolStripMenuItem"; + this.createNewUserToolStripMenuItem.Size = new System.Drawing.Size(168, 22); + this.createNewUserToolStripMenuItem.Text = "Create New User"; + this.createNewUserToolStripMenuItem.Click += new System.EventHandler(this.createNewUserToolStripMenuItem_Click); + // + // changePasswordToolStripMenuItem + // + this.changePasswordToolStripMenuItem.Name = "changePasswordToolStripMenuItem"; + this.changePasswordToolStripMenuItem.Size = new System.Drawing.Size(168, 22); + this.changePasswordToolStripMenuItem.Text = "Change Password"; + this.changePasswordToolStripMenuItem.Click += new System.EventHandler(this.changePasswordToolStripMenuItem_Click); + // + // assignRolesToolStripMenuItem + // + this.assignRolesToolStripMenuItem.Name = "assignRolesToolStripMenuItem"; + this.assignRolesToolStripMenuItem.Size = new System.Drawing.Size(168, 22); + this.assignRolesToolStripMenuItem.Text = "Assign Roles"; + this.assignRolesToolStripMenuItem.Click += new System.EventHandler(this.assignRolesToolStripMenuItem_Click); + // + // reportsToolStripMenuItem + // + this.reportsToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.cashierCheckoutToolStripMenuItem1, + this.salesAnalysisToolStripMenuItem1, + this.viewLogToolStripMenuItem}); + this.reportsToolStripMenuItem.Name = "reportsToolStripMenuItem"; + this.reportsToolStripMenuItem.Size = new System.Drawing.Size(59, 20); + this.reportsToolStripMenuItem.Text = "Reports"; + // + // cashierCheckoutToolStripMenuItem1 + // + this.cashierCheckoutToolStripMenuItem1.Name = "cashierCheckoutToolStripMenuItem1"; + this.cashierCheckoutToolStripMenuItem1.Size = new System.Drawing.Size(167, 22); + this.cashierCheckoutToolStripMenuItem1.Text = "Cashier Checkout"; + this.cashierCheckoutToolStripMenuItem1.Click += new System.EventHandler(this.cashierCheckoutToolStripMenuItem1_Click); + // + // salesAnalysisToolStripMenuItem1 + // + this.salesAnalysisToolStripMenuItem1.Name = "salesAnalysisToolStripMenuItem1"; + this.salesAnalysisToolStripMenuItem1.Size = new System.Drawing.Size(167, 22); + this.salesAnalysisToolStripMenuItem1.Text = "Sales Analysis"; + this.salesAnalysisToolStripMenuItem1.Click += new System.EventHandler(this.salesAnalysisToolStripMenuItem1_Click); + // + // viewLogToolStripMenuItem + // + this.viewLogToolStripMenuItem.Name = "viewLogToolStripMenuItem"; + this.viewLogToolStripMenuItem.Size = new System.Drawing.Size(167, 22); + this.viewLogToolStripMenuItem.Text = "View Log"; + this.viewLogToolStripMenuItem.Click += new System.EventHandler(this.viewLogToolStripMenuItem_Click); + // + // exitToolStripMenuItem + // + this.exitToolStripMenuItem.Name = "exitToolStripMenuItem"; + this.exitToolStripMenuItem.Size = new System.Drawing.Size(37, 20); + this.exitToolStripMenuItem.Text = "Exit"; + this.exitToolStripMenuItem.Click += new System.EventHandler(this.exitToolStripMenuItem_Click); + // + // MainForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(792, 537); + this.Controls.Add(this.CashCalculator); + this.Controls.Add(this.menuStrip1); + this.MainMenuStrip = this.menuStrip1; + this.Name = "MainForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "MainForm"; + this.WindowState = System.Windows.Forms.FormWindowState.Maximized; + this.Load += new System.EventHandler(this.MainForm_Load); + this.CashCalculator.ResumeLayout(false); + this.CashCalculator.PerformLayout(); + this.menuStrip1.ResumeLayout(false); + this.menuStrip1.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.GroupBox CashCalculator; + private System.Windows.Forms.Label lblTotal; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox txtTotal; + private System.Windows.Forms.TextBox txt1; + private System.Windows.Forms.TextBox txt2; + private System.Windows.Forms.TextBox txt5; + private System.Windows.Forms.TextBox txt10; + private System.Windows.Forms.TextBox txt20; + private System.Windows.Forms.TextBox txt50; + private System.Windows.Forms.TextBox txt100; + private System.Windows.Forms.TextBox txt500; + private System.Windows.Forms.TextBox txt1000; + private System.Windows.Forms.Button btnPrint; + private System.Windows.Forms.MenuStrip menuStrip1; + private System.Windows.Forms.ToolStripMenuItem masterToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem transactionsToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem permissionsToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem exitToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem saleToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem advancesToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem paymentsToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem createNewUserToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem changePasswordToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem assignRolesToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem paymentsToolStripMenuItem1; + private System.Windows.Forms.ToolStripMenuItem reportsToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem productsToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem customersToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem salesAnalysisToolStripMenuItem1; + private System.Windows.Forms.ToolStripMenuItem cashierCheckoutToolStripMenuItem1; + private System.Windows.Forms.ToolStripMenuItem prToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem complexProductsToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem updateToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem reportToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem autoToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem viewLogToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem updateBillsToolStripMenuItem; + } +} \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/MainForm.resx b/Tanshu.Accounts.PointOfSale/MainForm.resx new file mode 100644 index 0000000..541af56 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/MainForm.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 17, 17 + + \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/ProductNewRates.Designer.cs b/Tanshu.Accounts.PointOfSale/ProductNewRates.Designer.cs new file mode 100644 index 0000000..9cfd0b6 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/ProductNewRates.Designer.cs @@ -0,0 +1,243 @@ +namespace Accounts.PointOfSale +{ + partial class ProductNewRates + { + /// + /// 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.txtNewRate = new System.Windows.Forms.TextBox(); + this.label6 = new System.Windows.Forms.Label(); + this.cmbItem = new System.Windows.Forms.ComboBox(); + this.label3 = new System.Windows.Forms.Label(); + this.dgvItems = new System.Windows.Forms.DataGridView(); + this.btnSave = new System.Windows.Forms.Button(); + this.label1 = new System.Windows.Forms.Label(); + this.txtOldRate = new System.Windows.Forms.TextBox(); + this.bsNewProductRates = new System.Windows.Forms.BindingSource(this.components); + this.idDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.productIDDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.productNameDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.oldRateDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.newRateDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.timestampDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + ((System.ComponentModel.ISupportInitialize)(this.dgvItems)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsNewProductRates)).BeginInit(); + this.SuspendLayout(); + // + // txtNewRate + // + this.txtNewRate.Location = new System.Drawing.Point(473, 25); + this.txtNewRate.Name = "txtNewRate"; + this.txtNewRate.Size = new System.Drawing.Size(66, 20); + this.txtNewRate.TabIndex = 28; + this.txtNewRate.Text = "0.00"; + this.txtNewRate.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(470, 8); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(55, 13); + this.label6.TabIndex = 27; + this.label6.Text = "New Rate"; + // + // cmbItem + // + this.cmbItem.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbItem.FormattingEnabled = true; + this.cmbItem.Location = new System.Drawing.Point(12, 25); + this.cmbItem.Name = "cmbItem"; + this.cmbItem.Size = new System.Drawing.Size(379, 21); + this.cmbItem.TabIndex = 26; + this.cmbItem.SelectedIndexChanged += new System.EventHandler(this.cmbItem_SelectedIndexChanged); + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(9, 9); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(27, 13); + this.label3.TabIndex = 25; + this.label3.Text = "Item"; + // + // dgvItems + // + this.dgvItems.AllowUserToAddRows = false; + this.dgvItems.AllowUserToDeleteRows = false; + this.dgvItems.AllowUserToResizeRows = false; + this.dgvItems.AutoGenerateColumns = false; + this.dgvItems.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.DisplayedCells; + this.dgvItems.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dgvItems.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.idDataGridViewTextBoxColumn, + this.productIDDataGridViewTextBoxColumn, + this.productNameDataGridViewTextBoxColumn, + this.oldRateDataGridViewTextBoxColumn, + this.newRateDataGridViewTextBoxColumn, + this.timestampDataGridViewTextBoxColumn}); + this.dgvItems.DataSource = this.bsNewProductRates; + this.dgvItems.EditMode = System.Windows.Forms.DataGridViewEditMode.EditProgrammatically; + this.dgvItems.Location = new System.Drawing.Point(12, 62); + this.dgvItems.MultiSelect = false; + this.dgvItems.Name = "dgvItems"; + this.dgvItems.ReadOnly = true; + this.dgvItems.RowHeadersVisible = false; + this.dgvItems.RowTemplate.Height = 19; + this.dgvItems.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.dgvItems.ShowRowErrors = false; + this.dgvItems.Size = new System.Drawing.Size(602, 317); + this.dgvItems.TabIndex = 24; + // + // btnSave + // + this.btnSave.Location = new System.Drawing.Point(547, 24); + this.btnSave.Name = "btnSave"; + this.btnSave.Size = new System.Drawing.Size(67, 23); + this.btnSave.TabIndex = 29; + this.btnSave.Text = "Add"; + this.btnSave.UseVisualStyleBackColor = true; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(394, 8); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(49, 13); + this.label1.TabIndex = 30; + this.label1.Text = "Old Rate"; + // + // txtOldRate + // + this.txtOldRate.Enabled = false; + this.txtOldRate.Location = new System.Drawing.Point(397, 25); + this.txtOldRate.Name = "txtOldRate"; + this.txtOldRate.Size = new System.Drawing.Size(70, 20); + this.txtOldRate.TabIndex = 31; + this.txtOldRate.Text = "0.00"; + this.txtOldRate.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + // + // bsNewProductRates + // + this.bsNewProductRates.DataSource = typeof(Accounts.Proxy.NewProductRates); + // + // idDataGridViewTextBoxColumn + // + this.idDataGridViewTextBoxColumn.DataPropertyName = "Id"; + this.idDataGridViewTextBoxColumn.HeaderText = "Id"; + this.idDataGridViewTextBoxColumn.Name = "idDataGridViewTextBoxColumn"; + this.idDataGridViewTextBoxColumn.ReadOnly = true; + this.idDataGridViewTextBoxColumn.Visible = false; + this.idDataGridViewTextBoxColumn.Width = 22; + // + // productIDDataGridViewTextBoxColumn + // + this.productIDDataGridViewTextBoxColumn.DataPropertyName = "ProductID"; + this.productIDDataGridViewTextBoxColumn.HeaderText = "ProductID"; + this.productIDDataGridViewTextBoxColumn.Name = "productIDDataGridViewTextBoxColumn"; + this.productIDDataGridViewTextBoxColumn.ReadOnly = true; + this.productIDDataGridViewTextBoxColumn.Visible = false; + this.productIDDataGridViewTextBoxColumn.Width = 61; + // + // productNameDataGridViewTextBoxColumn + // + this.productNameDataGridViewTextBoxColumn.DataPropertyName = "ProductName"; + this.productNameDataGridViewTextBoxColumn.HeaderText = "Product Name"; + this.productNameDataGridViewTextBoxColumn.Name = "productNameDataGridViewTextBoxColumn"; + this.productNameDataGridViewTextBoxColumn.ReadOnly = true; + // + // oldRateDataGridViewTextBoxColumn + // + this.oldRateDataGridViewTextBoxColumn.DataPropertyName = "OldRate"; + this.oldRateDataGridViewTextBoxColumn.HeaderText = "Old Rate"; + this.oldRateDataGridViewTextBoxColumn.Name = "oldRateDataGridViewTextBoxColumn"; + this.oldRateDataGridViewTextBoxColumn.ReadOnly = true; + this.oldRateDataGridViewTextBoxColumn.Width = 74; + // + // newRateDataGridViewTextBoxColumn + // + this.newRateDataGridViewTextBoxColumn.DataPropertyName = "NewRate"; + this.newRateDataGridViewTextBoxColumn.HeaderText = "New Rate"; + this.newRateDataGridViewTextBoxColumn.Name = "newRateDataGridViewTextBoxColumn"; + this.newRateDataGridViewTextBoxColumn.ReadOnly = true; + this.newRateDataGridViewTextBoxColumn.Width = 80; + // + // timestampDataGridViewTextBoxColumn + // + this.timestampDataGridViewTextBoxColumn.DataPropertyName = "timestamp"; + this.timestampDataGridViewTextBoxColumn.HeaderText = "timestamp"; + this.timestampDataGridViewTextBoxColumn.Name = "timestampDataGridViewTextBoxColumn"; + this.timestampDataGridViewTextBoxColumn.ReadOnly = true; + this.timestampDataGridViewTextBoxColumn.Visible = false; + this.timestampDataGridViewTextBoxColumn.Width = 79; + // + // ProductNewRates + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(626, 391); + this.Controls.Add(this.txtOldRate); + this.Controls.Add(this.label1); + this.Controls.Add(this.btnSave); + this.Controls.Add(this.txtNewRate); + this.Controls.Add(this.label6); + this.Controls.Add(this.cmbItem); + this.Controls.Add(this.label3); + this.Controls.Add(this.dgvItems); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "ProductNewRates"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "New Product Rates"; + this.Load += new System.EventHandler(this.ProductNewRates_Load); + this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.ProductNewRates_KeyDown); + ((System.ComponentModel.ISupportInitialize)(this.dgvItems)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsNewProductRates)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TextBox txtNewRate; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.ComboBox cmbItem; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.DataGridView dgvItems; + private System.Windows.Forms.Button btnSave; + private System.Windows.Forms.BindingSource bsNewProductRates; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox txtOldRate; + private System.Windows.Forms.DataGridViewTextBoxColumn idDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn productIDDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn productNameDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn oldRateDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn newRateDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn timestampDataGridViewTextBoxColumn; + } +} \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/ProductNewRates.cs b/Tanshu.Accounts.PointOfSale/ProductNewRates.cs new file mode 100644 index 0000000..8c02238 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/ProductNewRates.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using Accounts.Proxy; +using Tanshu.Common; +using Accounts.BusinessObjects; + +namespace Accounts.PointOfSale +{ + public partial class ProductNewRates : Form + { + public ProductNewRates() + { + InitializeComponent(); + } + + private void ProductNewRates_Load(object sender, EventArgs e) + { + UserBO user = Accounts.Security.CurrentUser.user; + cmbItem.DataSource = Accounts.Proxy.ProductProxy.GetProducts("", 0, 0, user.CompanyID, true, false); + cmbItem.DisplayMember = "Name"; + cmbItem.ValueMember = "ProductID"; + } + + private void ProductNewRates_KeyDown(object sender, KeyEventArgs e) + { + if (e.KeyCode == Keys.F7) + { + using (SelectProduct selectProduct = new SelectProduct(Accounts.Proxy.ProductProxy.GetPurchaseProductList(), true)) + { + selectProduct.ShowDialog(); + if (selectProduct.SelectedItem != null) + { + cmbItem.SelectedValue = selectProduct.SelectedItem.productID; + txtNewRate.Tag = selectProduct.SelectedItem.Price.ToString(); + btnSave.Focus(); + } + } + } + } + + private void cmbItem_SelectedIndexChanged(object sender, EventArgs e) + { + + } + } +} diff --git a/Tanshu.Accounts.PointOfSale/ProductNewRates.resx b/Tanshu.Accounts.PointOfSale/ProductNewRates.resx new file mode 100644 index 0000000..df3b277 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/ProductNewRates.resx @@ -0,0 +1,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 17, 17 + + \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/ProductTypes.Designer.cs b/Tanshu.Accounts.PointOfSale/ProductTypes.Designer.cs new file mode 100644 index 0000000..55c75c4 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/ProductTypes.Designer.cs @@ -0,0 +1,255 @@ +namespace Tanshu.Accounts.PointOfSale +{ + partial class ProductTypes + { + /// + /// 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.chkMaintainStock = new System.Windows.Forms.CheckBox(); + this.chkInUse = new System.Windows.Forms.CheckBox(); + this.btnAdd = new System.Windows.Forms.Button(); + this.btnDelete = new System.Windows.Forms.Button(); + this.btnNavFirst = new System.Windows.Forms.Button(); + this.btnNavPrev = new System.Windows.Forms.Button(); + this.lblNavLocation = new System.Windows.Forms.Label(); + this.btnNavNext = new System.Windows.Forms.Button(); + this.btnLast = new System.Windows.Forms.Button(); + this.txtName = new System.Windows.Forms.TextBox(); + this.btnUpdate = new System.Windows.Forms.Button(); + this.btnExit = new System.Windows.Forms.Button(); + this.txtUniqueID = new System.Windows.Forms.TextBox(); + this.Label2 = new System.Windows.Forms.Label(); + this.Label1 = new System.Windows.Forms.Label(); + this.txtTaxRate = new System.Windows.Forms.TextBox(); + this.Label5 = new System.Windows.Forms.Label(); + this.SuspendLayout(); + // + // chkMaintainStock + // + this.chkMaintainStock.AutoSize = true; + this.chkMaintainStock.Location = new System.Drawing.Point(259, 85); + this.chkMaintainStock.Name = "chkMaintainStock"; + this.chkMaintainStock.Size = new System.Drawing.Size(89, 17); + this.chkMaintainStock.TabIndex = 71; + this.chkMaintainStock.Text = "For Purchase"; + this.chkMaintainStock.UseVisualStyleBackColor = true; + // + // chkInUse + // + this.chkInUse.AutoSize = true; + this.chkInUse.Location = new System.Drawing.Point(178, 86); + this.chkInUse.Name = "chkInUse"; + this.chkInUse.Size = new System.Drawing.Size(65, 17); + this.chkInUse.TabIndex = 70; + this.chkInUse.Text = "For Sale"; + this.chkInUse.UseVisualStyleBackColor = true; + // + // btnAdd + // + this.btnAdd.Location = new System.Drawing.Point(35, 117); + this.btnAdd.Name = "btnAdd"; + this.btnAdd.Size = new System.Drawing.Size(75, 23); + this.btnAdd.TabIndex = 68; + this.btnAdd.Text = "&Add"; + this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click); + // + // btnDelete + // + this.btnDelete.Location = new System.Drawing.Point(115, 117); + this.btnDelete.Name = "btnDelete"; + this.btnDelete.Size = new System.Drawing.Size(75, 23); + this.btnDelete.TabIndex = 69; + this.btnDelete.Text = "&Delete"; + // + // btnNavFirst + // + this.btnNavFirst.Location = new System.Drawing.Point(67, 147); + this.btnNavFirst.Name = "btnNavFirst"; + this.btnNavFirst.Size = new System.Drawing.Size(40, 23); + this.btnNavFirst.TabIndex = 63; + this.btnNavFirst.Text = "<<"; + // + // btnNavPrev + // + this.btnNavPrev.Location = new System.Drawing.Point(107, 147); + this.btnNavPrev.Name = "btnNavPrev"; + this.btnNavPrev.Size = new System.Drawing.Size(35, 23); + this.btnNavPrev.TabIndex = 64; + this.btnNavPrev.Text = "<"; + // + // lblNavLocation + // + this.lblNavLocation.BackColor = System.Drawing.Color.White; + this.lblNavLocation.Location = new System.Drawing.Point(139, 147); + this.lblNavLocation.Name = "lblNavLocation"; + this.lblNavLocation.Size = new System.Drawing.Size(95, 23); + this.lblNavLocation.TabIndex = 65; + this.lblNavLocation.Text = "No Records"; + this.lblNavLocation.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // btnNavNext + // + this.btnNavNext.Location = new System.Drawing.Point(235, 147); + this.btnNavNext.Name = "btnNavNext"; + this.btnNavNext.Size = new System.Drawing.Size(35, 23); + this.btnNavNext.TabIndex = 66; + this.btnNavNext.Text = ">"; + // + // btnLast + // + this.btnLast.Location = new System.Drawing.Point(275, 147); + this.btnLast.Name = "btnLast"; + this.btnLast.Size = new System.Drawing.Size(40, 23); + this.btnLast.TabIndex = 67; + this.btnLast.Text = ">>"; + // + // txtName + // + this.txtName.AccessibleName = ""; + this.txtName.Location = new System.Drawing.Point(94, 48); + this.txtName.Name = "txtName"; + this.txtName.Size = new System.Drawing.Size(254, 20); + this.txtName.TabIndex = 57; + // + // btnUpdate + // + this.btnUpdate.AccessibleName = "Done"; + this.btnUpdate.Location = new System.Drawing.Point(195, 117); + this.btnUpdate.Name = "btnUpdate"; + this.btnUpdate.Size = new System.Drawing.Size(72, 24); + this.btnUpdate.TabIndex = 62; + this.btnUpdate.Text = "&Update"; + // + // btnExit + // + this.btnExit.AccessibleName = "Done"; + this.btnExit.Location = new System.Drawing.Point(273, 117); + this.btnExit.Name = "btnExit"; + this.btnExit.Size = new System.Drawing.Size(72, 24); + this.btnExit.TabIndex = 61; + this.btnExit.Text = "E&xit"; + // + // txtUniqueID + // + this.txtUniqueID.AccessibleName = "Unique ID"; + this.txtUniqueID.Enabled = false; + this.txtUniqueID.Location = new System.Drawing.Point(94, 13); + this.txtUniqueID.Name = "txtUniqueID"; + this.txtUniqueID.Size = new System.Drawing.Size(254, 20); + this.txtUniqueID.TabIndex = 60; + this.txtUniqueID.Text = "UniqueID"; + this.txtUniqueID.WordWrap = false; + // + // Label2 + // + this.Label2.AutoSize = true; + this.Label2.Location = new System.Drawing.Point(53, 48); + this.Label2.Name = "Label2"; + this.Label2.Size = new System.Drawing.Size(35, 13); + this.Label2.TabIndex = 58; + this.Label2.Text = "Name"; + // + // Label1 + // + this.Label1.AutoSize = true; + this.Label1.Location = new System.Drawing.Point(33, 13); + this.Label1.Name = "Label1"; + this.Label1.Size = new System.Drawing.Size(55, 13); + this.Label1.TabIndex = 59; + this.Label1.Text = "Unique ID"; + // + // txtTaxRate + // + this.txtTaxRate.AccessibleName = "Phone 1"; + this.txtTaxRate.Location = new System.Drawing.Point(94, 83); + this.txtTaxRate.Name = "txtTaxRate"; + this.txtTaxRate.Size = new System.Drawing.Size(65, 20); + this.txtTaxRate.TabIndex = 72; + this.txtTaxRate.Text = "0"; + this.txtTaxRate.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + // + // Label5 + // + this.Label5.AutoSize = true; + this.Label5.Location = new System.Drawing.Point(15, 83); + this.Label5.Name = "Label5"; + this.Label5.Size = new System.Drawing.Size(73, 13); + this.Label5.TabIndex = 73; + this.Label5.Text = "Discount Limit"; + // + // ProductTypes + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(373, 180); + this.Controls.Add(this.txtTaxRate); + this.Controls.Add(this.Label5); + this.Controls.Add(this.chkMaintainStock); + this.Controls.Add(this.chkInUse); + this.Controls.Add(this.btnAdd); + this.Controls.Add(this.btnDelete); + this.Controls.Add(this.btnNavFirst); + this.Controls.Add(this.btnNavPrev); + this.Controls.Add(this.lblNavLocation); + this.Controls.Add(this.btnNavNext); + this.Controls.Add(this.btnLast); + this.Controls.Add(this.txtName); + this.Controls.Add(this.btnUpdate); + this.Controls.Add(this.btnExit); + this.Controls.Add(this.txtUniqueID); + this.Controls.Add(this.Label2); + this.Controls.Add(this.Label1); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "ProductTypes"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Product Types"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + internal System.Windows.Forms.CheckBox chkMaintainStock; + internal System.Windows.Forms.CheckBox chkInUse; + internal System.Windows.Forms.Button btnAdd; + internal System.Windows.Forms.Button btnDelete; + internal System.Windows.Forms.Button btnNavFirst; + internal System.Windows.Forms.Button btnNavPrev; + internal System.Windows.Forms.Label lblNavLocation; + internal System.Windows.Forms.Button btnNavNext; + internal System.Windows.Forms.Button btnLast; + internal System.Windows.Forms.TextBox txtName; + internal System.Windows.Forms.Button btnUpdate; + internal System.Windows.Forms.Button btnExit; + internal System.Windows.Forms.TextBox txtUniqueID; + internal System.Windows.Forms.Label Label2; + internal System.Windows.Forms.Label Label1; + internal System.Windows.Forms.TextBox txtTaxRate; + internal System.Windows.Forms.Label Label5; + } +} \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/ProductTypes.cs b/Tanshu.Accounts.PointOfSale/ProductTypes.cs new file mode 100644 index 0000000..2b52561 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/ProductTypes.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; + +namespace Tanshu.Accounts.PointOfSale +{ + public partial class ProductTypes : Form + { + public ProductTypes() + { + InitializeComponent(); + } + + private void btnAdd_Click(object sender, EventArgs e) + { + + } + } +} diff --git a/Tanshu.Accounts.PointOfSale/ProductTypes.resx b/Tanshu.Accounts.PointOfSale/ProductTypes.resx new file mode 100644 index 0000000..19dc0dd --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/ProductTypes.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/ProductsForm.Designer.cs b/Tanshu.Accounts.PointOfSale/ProductsForm.Designer.cs new file mode 100644 index 0000000..23c346d --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/ProductsForm.Designer.cs @@ -0,0 +1,578 @@ +namespace Tanshu.Accounts.PointOfSale +{ + partial class ProductsForm + { + /// + /// 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.Label4 = new System.Windows.Forms.Label(); + this.txtSalePrice = new System.Windows.Forms.TextBox(); + this.bsProducts = new System.Windows.Forms.BindingSource(this.components); + this.GroupBox1 = new System.Windows.Forms.GroupBox(); + this.btnAddCategory = new System.Windows.Forms.Button(); + this.cmbProductTypes = new System.Windows.Forms.ComboBox(); + this.bsTypes = new System.Windows.Forms.BindingSource(this.components); + this.cmbUnits = new System.Windows.Forms.ComboBox(); + this.bsUnits = new System.Windows.Forms.BindingSource(this.components); + this.Label7 = new System.Windows.Forms.Label(); + this.Label3 = new System.Windows.Forms.Label(); + this.txtName = new System.Windows.Forms.TextBox(); + this.Label2 = new System.Windows.Forms.Label(); + this.btnNavFirst = new System.Windows.Forms.Button(); + this.btnNavPrev = new System.Windows.Forms.Button(); + this.lblNavLocation = new System.Windows.Forms.Label(); + this.btnNavNext = new System.Windows.Forms.Button(); + this.btnLast = new System.Windows.Forms.Button(); + this.txtUniqueID = new System.Windows.Forms.TextBox(); + this.Label1 = new System.Windows.Forms.Label(); + this.btnAdd = new System.Windows.Forms.Button(); + this.btnDelete = new System.Windows.Forms.Button(); + this.btnUpdate = new System.Windows.Forms.Button(); + this.btnExit = new System.Windows.Forms.Button(); + this.txtMinimumLevel = new System.Windows.Forms.TextBox(); + this.label6 = new System.Windows.Forms.Label(); + this.txtMaximumLevel = new System.Windows.Forms.TextBox(); + this.label9 = new System.Windows.Forms.Label(); + this.chkDiscontinued = new System.Windows.Forms.CheckBox(); + this.cmbSalesLedger = new System.Windows.Forms.ComboBox(); + this.bsSalesLedgers = new System.Windows.Forms.BindingSource(this.components); + this.label5 = new System.Windows.Forms.Label(); + this.cmbSalesTax = new System.Windows.Forms.ComboBox(); + this.bsSalesTax = new System.Windows.Forms.BindingSource(this.components); + this.label10 = new System.Windows.Forms.Label(); + this.cmbPurchaseTax = new System.Windows.Forms.ComboBox(); + this.bsPurchaseTax = new System.Windows.Forms.BindingSource(this.components); + this.label11 = new System.Windows.Forms.Label(); + this.cmbPurchaseLedger = new System.Windows.Forms.ComboBox(); + this.bsPurchaseLedgers = new System.Windows.Forms.BindingSource(this.components); + this.label12 = new System.Windows.Forms.Label(); + this.label13 = new System.Windows.Forms.Label(); + this.txtPurchasePrice = new System.Windows.Forms.TextBox(); + ((System.ComponentModel.ISupportInitialize)(this.bsProducts)).BeginInit(); + this.GroupBox1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.bsTypes)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsUnits)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsSalesLedgers)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsSalesTax)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsPurchaseTax)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsPurchaseLedgers)).BeginInit(); + this.SuspendLayout(); + // + // Label4 + // + this.Label4.AutoSize = true; + this.Label4.Location = new System.Drawing.Point(13, 148); + this.Label4.Name = "Label4"; + this.Label4.Size = new System.Drawing.Size(60, 13); + this.Label4.TabIndex = 59; + this.Label4.Text = "Sales Price"; + // + // txtSalePrice + // + this.txtSalePrice.AccessibleName = "Phone 1"; + this.txtSalePrice.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bsProducts, "SalePrice", true)); + this.txtSalePrice.Location = new System.Drawing.Point(13, 164); + this.txtSalePrice.Name = "txtSalePrice"; + this.txtSalePrice.Size = new System.Drawing.Size(74, 20); + this.txtSalePrice.TabIndex = 53; + this.txtSalePrice.Text = "0"; + // + // bsProducts + // + this.bsProducts.DataSource = typeof(Tanshu.Accounts.Contracts.ProductBO); + this.bsProducts.AddingNew += new System.ComponentModel.AddingNewEventHandler(this.bsProducts_AddingNew); + this.bsProducts.PositionChanged += new System.EventHandler(this.bsProducts_PositionChanged); + // + // GroupBox1 + // + this.GroupBox1.Controls.Add(this.btnAddCategory); + this.GroupBox1.Controls.Add(this.cmbProductTypes); + this.GroupBox1.Controls.Add(this.cmbUnits); + this.GroupBox1.Controls.Add(this.Label7); + this.GroupBox1.Controls.Add(this.Label3); + this.GroupBox1.Controls.Add(this.txtName); + this.GroupBox1.Controls.Add(this.Label2); + this.GroupBox1.Location = new System.Drawing.Point(12, 37); + this.GroupBox1.Name = "GroupBox1"; + this.GroupBox1.Size = new System.Drawing.Size(312, 102); + this.GroupBox1.TabIndex = 52; + this.GroupBox1.TabStop = false; + // + // btnAddCategory + // + this.btnAddCategory.Location = new System.Drawing.Point(281, 72); + this.btnAddCategory.Name = "btnAddCategory"; + this.btnAddCategory.Size = new System.Drawing.Size(25, 21); + this.btnAddCategory.TabIndex = 37; + this.btnAddCategory.Text = "+"; + this.btnAddCategory.Click += new System.EventHandler(this.btnAddCategory_Click); + // + // cmbProductTypes + // + this.cmbProductTypes.DataBindings.Add(new System.Windows.Forms.Binding("SelectedValue", this.bsProducts, "ProductTypeID", true)); + this.cmbProductTypes.DataSource = this.bsTypes; + this.cmbProductTypes.DisplayMember = "Name"; + this.cmbProductTypes.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbProductTypes.Location = new System.Drawing.Point(94, 72); + this.cmbProductTypes.Name = "cmbProductTypes"; + this.cmbProductTypes.Size = new System.Drawing.Size(181, 21); + this.cmbProductTypes.TabIndex = 35; + this.cmbProductTypes.ValueMember = "ProductTypeID"; + // + // bsTypes + // + this.bsTypes.DataSource = typeof(Tanshu.Accounts.Contracts.ProductTypeBO); + // + // cmbUnits + // + this.cmbUnits.DataBindings.Add(new System.Windows.Forms.Binding("SelectedValue", this.bsProducts, "Units", true)); + this.cmbUnits.DataSource = this.bsUnits; + this.cmbUnits.DisplayMember = "Description"; + this.cmbUnits.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbUnits.Location = new System.Drawing.Point(94, 45); + this.cmbUnits.Name = "cmbUnits"; + this.cmbUnits.Size = new System.Drawing.Size(212, 21); + this.cmbUnits.TabIndex = 34; + this.cmbUnits.ValueMember = "Description"; + // + // bsUnits + // + this.bsUnits.DataSource = typeof(Tanshu.Accounts.Helpers.StringType); + // + // Label7 + // + this.Label7.AutoSize = true; + this.Label7.Location = new System.Drawing.Point(12, 75); + this.Label7.Name = "Label7"; + this.Label7.Size = new System.Drawing.Size(76, 13); + this.Label7.TabIndex = 33; + this.Label7.Text = "Product Types"; + // + // Label3 + // + this.Label3.AutoSize = true; + this.Label3.Location = new System.Drawing.Point(57, 48); + this.Label3.Name = "Label3"; + this.Label3.Size = new System.Drawing.Size(31, 13); + this.Label3.TabIndex = 30; + this.Label3.Text = "Units"; + // + // txtName + // + this.txtName.AccessibleName = ""; + this.txtName.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bsProducts, "Name", true)); + this.txtName.Location = new System.Drawing.Point(94, 19); + this.txtName.Name = "txtName"; + this.txtName.Size = new System.Drawing.Size(212, 20); + this.txtName.TabIndex = 0; + // + // Label2 + // + this.Label2.AutoSize = true; + this.Label2.Location = new System.Drawing.Point(53, 22); + this.Label2.Name = "Label2"; + this.Label2.Size = new System.Drawing.Size(35, 13); + this.Label2.TabIndex = 28; + this.Label2.Text = "Name"; + // + // btnNavFirst + // + this.btnNavFirst.Location = new System.Drawing.Point(40, 334); + this.btnNavFirst.Name = "btnNavFirst"; + this.btnNavFirst.Size = new System.Drawing.Size(40, 23); + this.btnNavFirst.TabIndex = 44; + this.btnNavFirst.Text = "<<"; + this.btnNavFirst.Click += new System.EventHandler(this.btnNavFirst_Click); + // + // btnNavPrev + // + this.btnNavPrev.Location = new System.Drawing.Point(86, 334); + this.btnNavPrev.Name = "btnNavPrev"; + this.btnNavPrev.Size = new System.Drawing.Size(35, 23); + this.btnNavPrev.TabIndex = 45; + this.btnNavPrev.Text = "<"; + this.btnNavPrev.Click += new System.EventHandler(this.btnNavPrev_Click); + // + // lblNavLocation + // + this.lblNavLocation.BackColor = System.Drawing.Color.White; + this.lblNavLocation.Location = new System.Drawing.Point(118, 334); + this.lblNavLocation.Name = "lblNavLocation"; + this.lblNavLocation.Size = new System.Drawing.Size(95, 23); + this.lblNavLocation.TabIndex = 46; + this.lblNavLocation.Text = "No Records"; + this.lblNavLocation.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + this.lblNavLocation.Click += new System.EventHandler(this.lblNavLocation_Click); + // + // btnNavNext + // + this.btnNavNext.Location = new System.Drawing.Point(214, 334); + this.btnNavNext.Name = "btnNavNext"; + this.btnNavNext.Size = new System.Drawing.Size(35, 23); + this.btnNavNext.TabIndex = 47; + this.btnNavNext.Text = ">"; + this.btnNavNext.Click += new System.EventHandler(this.btnNavNext_Click); + // + // btnLast + // + this.btnLast.Location = new System.Drawing.Point(254, 334); + this.btnLast.Name = "btnLast"; + this.btnLast.Size = new System.Drawing.Size(40, 23); + this.btnLast.TabIndex = 48; + this.btnLast.Text = ">>"; + this.btnLast.Click += new System.EventHandler(this.btnLast_Click); + // + // txtUniqueID + // + this.txtUniqueID.AccessibleName = "Unique ID"; + this.txtUniqueID.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bsProducts, "Code", true)); + this.txtUniqueID.DataBindings.Add(new System.Windows.Forms.Binding("Tag", this.bsProducts, "ProductID", true)); + this.txtUniqueID.Enabled = false; + this.txtUniqueID.Location = new System.Drawing.Point(75, 12); + this.txtUniqueID.Name = "txtUniqueID"; + this.txtUniqueID.Size = new System.Drawing.Size(249, 20); + this.txtUniqueID.TabIndex = 37; + this.txtUniqueID.Text = "UniqueID"; + this.txtUniqueID.WordWrap = false; + // + // Label1 + // + this.Label1.AutoSize = true; + this.Label1.Location = new System.Drawing.Point(37, 15); + this.Label1.Name = "Label1"; + this.Label1.Size = new System.Drawing.Size(32, 13); + this.Label1.TabIndex = 36; + this.Label1.Text = "Code"; + this.Label1.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // btnAdd + // + this.btnAdd.Location = new System.Drawing.Point(9, 300); + this.btnAdd.Name = "btnAdd"; + this.btnAdd.Size = new System.Drawing.Size(75, 23); + this.btnAdd.TabIndex = 72; + this.btnAdd.Text = "&Add"; + this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click); + // + // btnDelete + // + this.btnDelete.Location = new System.Drawing.Point(91, 300); + this.btnDelete.Name = "btnDelete"; + this.btnDelete.Size = new System.Drawing.Size(75, 23); + this.btnDelete.TabIndex = 73; + this.btnDelete.Text = "&Delete"; + this.btnDelete.Click += new System.EventHandler(this.btnDelete_Click); + // + // btnUpdate + // + this.btnUpdate.AccessibleName = "Done"; + this.btnUpdate.Location = new System.Drawing.Point(173, 300); + this.btnUpdate.Name = "btnUpdate"; + this.btnUpdate.Size = new System.Drawing.Size(72, 24); + this.btnUpdate.TabIndex = 71; + this.btnUpdate.Text = "&Update"; + this.btnUpdate.Click += new System.EventHandler(this.btnUpdate_Click); + // + // btnExit + // + this.btnExit.AccessibleName = "Done"; + this.btnExit.Location = new System.Drawing.Point(252, 300); + this.btnExit.Name = "btnExit"; + this.btnExit.Size = new System.Drawing.Size(72, 24); + this.btnExit.TabIndex = 70; + this.btnExit.Text = "E&xit"; + this.btnExit.Click += new System.EventHandler(this.btnExit_Click); + // + // txtMinimumLevel + // + this.txtMinimumLevel.AccessibleName = "Phone 1"; + this.txtMinimumLevel.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bsProducts, "MinimumLevel", true)); + this.txtMinimumLevel.Location = new System.Drawing.Point(10, 264); + this.txtMinimumLevel.Name = "txtMinimumLevel"; + this.txtMinimumLevel.Size = new System.Drawing.Size(77, 20); + this.txtMinimumLevel.TabIndex = 75; + this.txtMinimumLevel.Text = "0"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(10, 248); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(77, 13); + this.label6.TabIndex = 74; + this.label6.Text = "Minimum Level"; + // + // txtMaximumLevel + // + this.txtMaximumLevel.AccessibleName = "Phone 1"; + this.txtMaximumLevel.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bsProducts, "MaximumLevel", true)); + this.txtMaximumLevel.Location = new System.Drawing.Point(96, 264); + this.txtMaximumLevel.Name = "txtMaximumLevel"; + this.txtMaximumLevel.Size = new System.Drawing.Size(85, 20); + this.txtMaximumLevel.TabIndex = 77; + this.txtMaximumLevel.Text = "0"; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Location = new System.Drawing.Point(93, 249); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(80, 13); + this.label9.TabIndex = 76; + this.label9.Text = "Maximum Level"; + // + // chkDiscontinued + // + this.chkDiscontinued.AutoSize = true; + this.chkDiscontinued.DataBindings.Add(new System.Windows.Forms.Binding("Checked", this.bsProducts, "Discontinued", true)); + this.chkDiscontinued.Location = new System.Drawing.Point(233, 272); + this.chkDiscontinued.Name = "chkDiscontinued"; + this.chkDiscontinued.Size = new System.Drawing.Size(88, 17); + this.chkDiscontinued.TabIndex = 78; + this.chkDiscontinued.Text = "Discontinued"; + this.chkDiscontinued.UseVisualStyleBackColor = true; + // + // cmbSalesLedger + // + this.cmbSalesLedger.DataBindings.Add(new System.Windows.Forms.Binding("SelectedValue", this.bsProducts, "SaleLedgerID", true)); + this.cmbSalesLedger.DataSource = this.bsSalesLedgers; + this.cmbSalesLedger.DisplayMember = "Name"; + this.cmbSalesLedger.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbSalesLedger.Location = new System.Drawing.Point(93, 163); + this.cmbSalesLedger.Name = "cmbSalesLedger"; + this.cmbSalesLedger.Size = new System.Drawing.Size(137, 21); + this.cmbSalesLedger.TabIndex = 80; + this.cmbSalesLedger.ValueMember = "LedgerID"; + // + // bsSalesLedgers + // + this.bsSalesLedgers.DataSource = typeof(Tanshu.Accounts.Contracts.LedgerBO); + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(98, 148); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(69, 13); + this.label5.TabIndex = 79; + this.label5.Text = "Sales Ledger"; + // + // cmbSalesTax + // + this.cmbSalesTax.DataBindings.Add(new System.Windows.Forms.Binding("SelectedValue", this.bsProducts, "SaleTaxID", true)); + this.cmbSalesTax.DataSource = this.bsSalesTax; + this.cmbSalesTax.DisplayMember = "Name"; + this.cmbSalesTax.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbSalesTax.Location = new System.Drawing.Point(236, 163); + this.cmbSalesTax.Name = "cmbSalesTax"; + this.cmbSalesTax.Size = new System.Drawing.Size(91, 21); + this.cmbSalesTax.TabIndex = 82; + this.cmbSalesTax.ValueMember = "LedgerID"; + // + // bsSalesTax + // + this.bsSalesTax.DataSource = typeof(Tanshu.Accounts.Contracts.LedgerBO); + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Location = new System.Drawing.Point(241, 148); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(54, 13); + this.label10.TabIndex = 81; + this.label10.Text = "Sales Tax"; + // + // cmbPurchaseTax + // + this.cmbPurchaseTax.DataBindings.Add(new System.Windows.Forms.Binding("SelectedValue", this.bsProducts, "PurchaseTaxID", true)); + this.cmbPurchaseTax.DataSource = this.bsPurchaseTax; + this.cmbPurchaseTax.DisplayMember = "Name"; + this.cmbPurchaseTax.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbPurchaseTax.Location = new System.Drawing.Point(233, 214); + this.cmbPurchaseTax.Name = "cmbPurchaseTax"; + this.cmbPurchaseTax.Size = new System.Drawing.Size(91, 21); + this.cmbPurchaseTax.TabIndex = 88; + this.cmbPurchaseTax.ValueMember = "LedgerID"; + // + // bsPurchaseTax + // + this.bsPurchaseTax.DataSource = typeof(Tanshu.Accounts.Contracts.LedgerBO); + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Location = new System.Drawing.Point(233, 198); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(73, 13); + this.label11.TabIndex = 87; + this.label11.Text = "Purchase Tax"; + // + // cmbPurchaseLedger + // + this.cmbPurchaseLedger.DataBindings.Add(new System.Windows.Forms.Binding("SelectedValue", this.bsProducts, "PurchaseLedgerID", true)); + this.cmbPurchaseLedger.DataSource = this.bsPurchaseLedgers; + this.cmbPurchaseLedger.DisplayMember = "Name"; + this.cmbPurchaseLedger.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbPurchaseLedger.Location = new System.Drawing.Point(90, 214); + this.cmbPurchaseLedger.Name = "cmbPurchaseLedger"; + this.cmbPurchaseLedger.Size = new System.Drawing.Size(137, 21); + this.cmbPurchaseLedger.TabIndex = 86; + this.cmbPurchaseLedger.ValueMember = "LedgerID"; + // + // bsPurchaseLedgers + // + this.bsPurchaseLedgers.DataSource = typeof(Tanshu.Accounts.Contracts.LedgerBO); + // + // label12 + // + this.label12.AutoSize = true; + this.label12.Location = new System.Drawing.Point(95, 198); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(88, 13); + this.label12.TabIndex = 85; + this.label12.Text = "Purchase Ledger"; + // + // label13 + // + this.label13.AutoSize = true; + this.label13.Location = new System.Drawing.Point(10, 198); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(79, 13); + this.label13.TabIndex = 84; + this.label13.Text = "Purchase Price"; + // + // txtPurchasePrice + // + this.txtPurchasePrice.AccessibleName = "Phone 1"; + this.txtPurchasePrice.DataBindings.Add(new System.Windows.Forms.Binding("Text", this.bsProducts, "PurchasePrice", true)); + this.txtPurchasePrice.Location = new System.Drawing.Point(10, 214); + this.txtPurchasePrice.Name = "txtPurchasePrice"; + this.txtPurchasePrice.Size = new System.Drawing.Size(74, 20); + this.txtPurchasePrice.TabIndex = 83; + this.txtPurchasePrice.Text = "0"; + // + // ProductsForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(336, 365); + this.Controls.Add(this.cmbPurchaseTax); + this.Controls.Add(this.label11); + this.Controls.Add(this.cmbPurchaseLedger); + this.Controls.Add(this.label12); + this.Controls.Add(this.label13); + this.Controls.Add(this.txtPurchasePrice); + this.Controls.Add(this.cmbSalesTax); + this.Controls.Add(this.Label1); + this.Controls.Add(this.label10); + this.Controls.Add(this.cmbSalesLedger); + this.Controls.Add(this.label5); + this.Controls.Add(this.chkDiscontinued); + this.Controls.Add(this.txtMaximumLevel); + this.Controls.Add(this.label9); + this.Controls.Add(this.txtMinimumLevel); + this.Controls.Add(this.label6); + this.Controls.Add(this.btnAdd); + this.Controls.Add(this.btnDelete); + this.Controls.Add(this.btnUpdate); + this.Controls.Add(this.btnExit); + this.Controls.Add(this.Label4); + this.Controls.Add(this.txtSalePrice); + this.Controls.Add(this.GroupBox1); + this.Controls.Add(this.btnNavFirst); + this.Controls.Add(this.btnNavPrev); + this.Controls.Add(this.lblNavLocation); + this.Controls.Add(this.btnNavNext); + this.Controls.Add(this.btnLast); + this.Controls.Add(this.txtUniqueID); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "ProductsForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Products"; + this.Load += new System.EventHandler(this.Products_Load); + ((System.ComponentModel.ISupportInitialize)(this.bsProducts)).EndInit(); + this.GroupBox1.ResumeLayout(false); + this.GroupBox1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.bsTypes)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsUnits)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsSalesLedgers)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsSalesTax)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsPurchaseTax)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsPurchaseLedgers)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + internal System.Windows.Forms.Label Label4; + internal System.Windows.Forms.TextBox txtSalePrice; + internal System.Windows.Forms.GroupBox GroupBox1; + internal System.Windows.Forms.Button btnAddCategory; + internal System.Windows.Forms.ComboBox cmbProductTypes; + internal System.Windows.Forms.ComboBox cmbUnits; + internal System.Windows.Forms.Label Label7; + internal System.Windows.Forms.Label Label3; + internal System.Windows.Forms.TextBox txtName; + internal System.Windows.Forms.Label Label2; + internal System.Windows.Forms.Button btnNavFirst; + internal System.Windows.Forms.Button btnNavPrev; + internal System.Windows.Forms.Label lblNavLocation; + internal System.Windows.Forms.Button btnNavNext; + internal System.Windows.Forms.Button btnLast; + internal System.Windows.Forms.TextBox txtUniqueID; + internal System.Windows.Forms.Label Label1; + internal System.Windows.Forms.Button btnAdd; + internal System.Windows.Forms.Button btnDelete; + internal System.Windows.Forms.Button btnUpdate; + internal System.Windows.Forms.Button btnExit; + internal System.Windows.Forms.TextBox txtMinimumLevel; + internal System.Windows.Forms.Label label6; + internal System.Windows.Forms.TextBox txtMaximumLevel; + internal System.Windows.Forms.Label label9; + private System.Windows.Forms.CheckBox chkDiscontinued; + internal System.Windows.Forms.ComboBox cmbSalesLedger; + internal System.Windows.Forms.Label label5; + internal System.Windows.Forms.ComboBox cmbSalesTax; + internal System.Windows.Forms.Label label10; + internal System.Windows.Forms.ComboBox cmbPurchaseTax; + internal System.Windows.Forms.Label label11; + internal System.Windows.Forms.ComboBox cmbPurchaseLedger; + internal System.Windows.Forms.Label label12; + internal System.Windows.Forms.Label label13; + internal System.Windows.Forms.TextBox txtPurchasePrice; + private System.Windows.Forms.BindingSource bsProducts; + private System.Windows.Forms.BindingSource bsUnits; + private System.Windows.Forms.BindingSource bsTypes; + private System.Windows.Forms.BindingSource bsSalesLedgers; + private System.Windows.Forms.BindingSource bsSalesTax; + private System.Windows.Forms.BindingSource bsPurchaseLedgers; + private System.Windows.Forms.BindingSource bsPurchaseTax; + } +} \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/ProductsForm.cs b/Tanshu.Accounts.PointOfSale/ProductsForm.cs new file mode 100644 index 0000000..7a2521e --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/ProductsForm.cs @@ -0,0 +1,256 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Windows.Forms; +using Tanshu.Accounts.Helpers; +using Tanshu.Accounts.Contracts; +using Tanshu.Accounts.BI; + +namespace Tanshu.Accounts.PointOfSale +{ + public partial class ProductsForm : Form + { + bool createOnly = false; + List productList = new List(); + + #region Form Load + public ProductsForm() + { + InitializeComponent(); + } + + private void Products_Load(object sender, EventArgs e) + { + productList = new ProductBI().GetProducts(); + bsProducts.DataSource = productList; + FillCombos(); + bsProducts.MoveFirst(); + } + + private void FillCombos() + { + bsUnits.DataSource = new StringType[17] {new StringType ( "Cms"), + new StringType ("Meter"), + new StringType ("Quintal"), + new StringType ("Can"), + new StringType ("Gms"), + new StringType ("Rs."), + new StringType ("Piece"), + new StringType ("Petti"), + new StringType ("No.'s"), + new StringType ("Liter"), + new StringType ("Box"), + new StringType ("Tin"), + new StringType ("Dibbi"), + new StringType ("Plate"), + new StringType ("Kg."), + new StringType ("Bottle"), + new StringType ("Pack" )}; + + bsTypes.DataSource = new ProductBI().GetProductTypes(); + bsPurchaseLedgers.DataSource = new LedgerBI().GetLedgersOfType('P'); + bsSalesLedgers.DataSource = new LedgerBI().GetLedgersOfType('X'); + bsSalesTax.DataSource = new LedgerBI().GetLedgersOfType('T'); + bsPurchaseTax.DataSource = new LedgerBI().GetLedgersOfType('T'); + } + #endregion + + #region Buttons + private void btnAdd_Click(object sender, EventArgs e) + { + if (btnAdd.Text == "&Add") + { + bsProducts.AddNew(); + LockControls(true); + this.lblNavLocation.Text = "Add New"; + txtName.Select(); + } + else + { + if (!ValidateValues()) + { + MessageBox.Show("Missing Information: Please check the form."); + bsProducts.CancelEdit(); + } + else + { + bsProducts.EndEdit(); + Save(true); + if (createOnly) + btnExit_Click(sender, e); + else + { + productList = new ProductBI().GetProducts(); + bsProducts.DataSource = productList; + LockControls(false); + } + } + } + } + + private void btnDelete_Click(object sender, EventArgs e) + { + if (btnDelete.Text == "&Delete") + { + if (productList.Count() > 0) + { + if (MessageBox.Show("Are you sure?", "Delete", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes) + { + if (new ProductBI().Delete(productList.Single(p => p.Code == Convert.ToInt32(txtUniqueID.Text)).ProductID)) + { + productList = new ProductBI().GetProducts(); + btnNavFirst_Click(sender, e); + } + } + } + } + + else + { + LockControls(false); + bsProducts.CancelEdit(); + } + + } + + private void btnUpdate_Click(object sender, EventArgs e) + { + if (MessageBox.Show("Are you sure?", "Update", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes) + { + Save(false); + bsProducts.ResetItem(bsProducts.Position); + } + } + #endregion + + #region Add / Edit / Delete + private bool ValidateValues() + { + bool returnType; + returnType = (bool)(txtName.Text.Trim().Length > 0 ? true : false); + returnType = (cmbSalesLedger.SelectedValue == null ? false : true); + returnType = (cmbSalesTax.SelectedValue == null ? false : true); + returnType = (cmbPurchaseLedger.SelectedValue == null ? false : true); + returnType = (cmbPurchaseTax.SelectedValue == null ? false : true); + return returnType; + } + + private bool Save(bool addNew) + { + #region Setup Products + UserBO user = CurrentUser.user; + ProductBO product = new ProductBO(); + if (!addNew) + product = new ProductBI().GetProduct(productList.ElementAt(bsProducts.Position).ProductID); + product.Name = txtName.Text; + product.MinimumLevel = Convert.ToDecimal(txtMinimumLevel.Text); + product.MaximumLevel = Convert.ToDecimal(txtMaximumLevel.Text); + product.Units = cmbUnits.Text; + product.ProductTypeID = new Guid(cmbProductTypes.SelectedValue.ToString()); + product.SalePrice = Convert.ToDecimal(txtSalePrice.Text); + if (cmbPurchaseLedger.SelectedValue != null) + product.PurchaseLedgerID = new Guid(cmbPurchaseLedger.SelectedValue.ToString()); + product.SaleLedgerID = new Guid(cmbSalesLedger.SelectedValue.ToString()); + if (cmbPurchaseTax.SelectedValue != null) + product.PurchaseTaxID = new Guid(cmbPurchaseTax.SelectedValue.ToString()); + product.Discontinued = chkDiscontinued.Checked; + product.PurchasePrice = Convert.ToDecimal(txtPurchasePrice.Text); + product.SaleTaxID = new Guid(cmbSalesTax.SelectedValue.ToString()); + if (addNew) + new ProductBI().Insert(product); + else + new ProductBI().Update(product); + + return true; + #endregion + } + #endregion + + private void btnExit_Click(object sender, EventArgs e) + { + this.Close(); + } + + private void LockControls(bool enable) + { + if (enable) + { + btnAdd.Text = "&Save"; + btnDelete.Text = "&Cancel"; + } + else + { + btnAdd.Text = "&Add"; + btnDelete.Text = "&Delete"; + } + btnExit.Enabled = !enable; + btnLast.Enabled = !enable; + btnNavPrev.Enabled = !enable; + btnNavNext.Enabled = !enable; + btnUpdate.Enabled = !enable; + btnNavFirst.Enabled = !enable; + } + + private void btnAddCategory_Click(object sender, EventArgs e) + { + ProductTypes frm = new ProductTypes(); + frm.ShowDialog(); + frm.Dispose(); + FillCombos(); + cmbProductTypes.SelectedIndex = 0; + } + + + #region Move Buttons + private void btnNavFirst_Click(object sender, EventArgs e) + { + this.bsProducts.MoveFirst(); + } + private void btnNavPrev_Click(object sender, EventArgs e) + { + this.bsProducts.MovePrevious(); + } + private void btnNavNext_Click(object sender, EventArgs e) + { + this.bsProducts.MoveNext(); + } + private void btnLast_Click(object sender, EventArgs e) + { + this.bsProducts.MoveLast(); + } + private void lblNavLocation_Click(object sender, EventArgs e) + { + using (SelectProduct selectProduct = new SelectProduct(new ProductBI().GetFilteredProducts, true)) + { + selectProduct.ShowDialog(); + if (selectProduct.SelectedItem != null) + { + bsProducts.Position = GetPosition(productList, selectProduct.SelectedItem.ProductID); + } + } + } + #endregion + #region Binding Source Events + private void bsProducts_AddingNew(object sender, AddingNewEventArgs e) + { + e.NewObject = new ProductBO(); + } + + private void bsProducts_PositionChanged(object sender, EventArgs e) + { + this.lblNavLocation.Text = string.Format("{0} of {1}", bsProducts.Position + 1, bsProducts.Count); + } + #endregion + private int GetPosition(List list, Guid id) + { + for (int i = 0; i < list.Count; i++) + { + if (list[i].ProductID == id) + return i; + } + return 0; + + } + } +} \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/ProductsForm.resx b/Tanshu.Accounts.PointOfSale/ProductsForm.resx new file mode 100644 index 0000000..5753dce --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/ProductsForm.resx @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 17, 17 + + + 251, 17 + + + 123, 17 + + + 17, 54 + + + 145, 54 + + + 438, 54 + + + 273, 54 + + + 102 + + \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/Program.cs b/Tanshu.Accounts.PointOfSale/Program.cs new file mode 100644 index 0000000..4a1f5f5 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Program.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Windows.Forms; +using System.Threading; +using Tanshu.Accounts.Helpers; +using Tanshu.Accounts.BI; + +namespace Tanshu.Accounts.PointOfSale +{ + static class Program + { + private static readonly Tanshu.Logging.SqlLogger log = new Tanshu.Logging.SqlLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + + string userName; + bool isAuthenticated; + using (LoginForm login = new LoginForm()) + { + login.ShowDialog(); + isAuthenticated = login.UserName(out userName); + } + if (isAuthenticated) + { + SetThreadPrincipal(userName); + + Application.Run(new MainForm()); + log.Warn(string.Format("User Logout: {0}", CurrentUser.user.Name)); + } + else + { + log.Warn(string.Format("User Login Failed: '{0}'", userName)); + } + + } + static void SetThreadPrincipal(string userName) + { + log.Warn(string.Format("User Login: '{0}'", userName)); + if (userName.Contains(":")) + userName = userName.Substring(userName.IndexOf(":") + 1); + + AccountsPrincipal principal = AccountsPrincipal.CreateAccountsPrincipal(new Tanshu.Accounts.BI.MembershipBI().GetRolesForUser(userName), + new MembershipBI().GetUserFromName(userName)); + + // bind the generic principal to the thread + Thread.CurrentPrincipal = principal; + } + } +} diff --git a/Tanshu.Accounts.PointOfSale/Properties/AssemblyInfo.cs b/Tanshu.Accounts.PointOfSale/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..9324e60 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Tanshu.Accounts.PointOfSale")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Tanshu.Accounts.PointOfSale")] +[assembly: AssemblyCopyright("Copyright © 2008")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("1c4c4c08-bc34-4a44-8e59-f112a16eb073")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.5.*")] +[assembly: AssemblyFileVersion("1.5.0.0")] diff --git a/Tanshu.Accounts.PointOfSale/Resources/burger.ico b/Tanshu.Accounts.PointOfSale/Resources/burger.ico new file mode 100644 index 0000000000000000000000000000000000000000..2ed507b41b828a5631aeb9b218efe479f6c45f0e GIT binary patch literal 22486 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 literal 0 HcmV?d00001 diff --git a/Tanshu.Accounts.PointOfSale/Sales/AdjustAdvanceForm.cs b/Tanshu.Accounts.PointOfSale/Sales/AdjustAdvanceForm.cs new file mode 100644 index 0000000..1c4ee70 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Sales/AdjustAdvanceForm.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; +using System.Windows.Forms; +using Tanshu.Accounts.Helpers; +using System.Data.SqlClient; +using System.Configuration; +using Tanshu.Accounts.BI; +using Tanshu.Accounts.Contracts; + +namespace Tanshu.Accounts.PointOfSale +{ + public partial class AdjustAdvanceForm : Form + { + bool loading = true; + public AdjustAdvanceForm() + { + InitializeComponent(); + } + private void AdjustAdvancesForm_Load(object sender, EventArgs e) + { + dtpFrom.Format = DateTimePickerFormat.Custom; + dtpFrom.CustomFormat = "dd-MMM-yyyy"; + dtpFrom.Value = DateTime.Now; + dtpTo.Format = DateTimePickerFormat.Custom; + dtpTo.CustomFormat = "dd-MMM-yyyy"; + dtpTo.Value = DateTime.Now; + loading = false; + FillDataGrid(); + } + private void FillDataGrid() + { + dgExpenses.DataSource = new AdvanceBI().GetAdvances(dtpFrom.Value, dtpTo.Value, false); + } + private void dtpFrom_ValueChanged(object sender, EventArgs e) + { + if (!loading) + FillDataGrid(); + } + + private void btnSelect_Click(object sender, EventArgs e) + { + try + { + AdvanceDisplayBO item = (AdvanceDisplayBO)dgExpenses.SelectedRows[0].DataBoundItem; + txtCashier.Text = item.Cashier; + txtNarration.Tag = item.AdvanceID; + txtNarration.Text = item.Narration; + txtAmount.Text = item.Amount.ToString(); + } + catch { } + } + + private void btnAdjust_Click(object sender, EventArgs e) + { + new AdvanceBI().Adjust((Guid)txtNarration.Tag, CurrentUser.user.UserID); + FillDataGrid(); + } + } +} diff --git a/Tanshu.Accounts.PointOfSale/Sales/AdjustAdvanceForm.designer.cs b/Tanshu.Accounts.PointOfSale/Sales/AdjustAdvanceForm.designer.cs new file mode 100644 index 0000000..12a4082 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Sales/AdjustAdvanceForm.designer.cs @@ -0,0 +1,270 @@ +namespace Tanshu.Accounts.PointOfSale +{ + partial class AdjustAdvanceForm + { + /// + /// 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.btnAdjust = new System.Windows.Forms.Button(); + this.btnSelect = new System.Windows.Forms.Button(); + this.Label7 = new System.Windows.Forms.Label(); + this.txtNarration = new System.Windows.Forms.TextBox(); + this.txtAmount = new System.Windows.Forms.TextBox(); + this.lblAmount = new System.Windows.Forms.Label(); + this.txtCashier = new System.Windows.Forms.TextBox(); + this.Label5 = new System.Windows.Forms.Label(); + this.txtVoid = new System.Windows.Forms.TextBox(); + this.txtAmt = new System.Windows.Forms.TextBox(); + this.Label4 = new System.Windows.Forms.Label(); + this.Label3 = new System.Windows.Forms.Label(); + this.Label2 = new System.Windows.Forms.Label(); + this.Label1 = new System.Windows.Forms.Label(); + this.dtpTo = new System.Windows.Forms.DateTimePicker(); + this.dtpFrom = new System.Windows.Forms.DateTimePicker(); + this.dgExpenses = new System.Windows.Forms.DataGridView(); + ((System.ComponentModel.ISupportInitialize)(this.dgExpenses)).BeginInit(); + this.SuspendLayout(); + // + // btnAdjust + // + this.btnAdjust.Location = new System.Drawing.Point(142, 113); + this.btnAdjust.Name = "btnAdjust"; + this.btnAdjust.Size = new System.Drawing.Size(75, 21); + this.btnAdjust.TabIndex = 111; + this.btnAdjust.Text = "&Adjust"; + this.btnAdjust.Click += new System.EventHandler(this.btnAdjust_Click); + // + // btnSelect + // + this.btnSelect.Location = new System.Drawing.Point(61, 113); + this.btnSelect.Name = "btnSelect"; + this.btnSelect.Size = new System.Drawing.Size(75, 21); + this.btnSelect.TabIndex = 110; + this.btnSelect.Text = "&Select"; + this.btnSelect.Click += new System.EventHandler(this.btnSelect_Click); + // + // Label7 + // + this.Label7.AutoSize = true; + this.Label7.Location = new System.Drawing.Point(6, 92); + this.Label7.Name = "Label7"; + this.Label7.Size = new System.Drawing.Size(50, 13); + this.Label7.TabIndex = 109; + this.Label7.Text = "Narration"; + // + // txtNarration + // + this.txtNarration.Location = new System.Drawing.Point(61, 90); + this.txtNarration.Name = "txtNarration"; + this.txtNarration.ReadOnly = true; + this.txtNarration.Size = new System.Drawing.Size(330, 20); + this.txtNarration.TabIndex = 108; + // + // txtAmount + // + this.txtAmount.Location = new System.Drawing.Point(61, 68); + this.txtAmount.Name = "txtAmount"; + this.txtAmount.ReadOnly = true; + this.txtAmount.Size = new System.Drawing.Size(100, 20); + this.txtAmount.TabIndex = 107; + // + // lblAmount + // + this.lblAmount.AutoSize = true; + this.lblAmount.Location = new System.Drawing.Point(11, 71); + this.lblAmount.Name = "lblAmount"; + this.lblAmount.Size = new System.Drawing.Size(43, 13); + this.lblAmount.TabIndex = 106; + this.lblAmount.Text = "Amount"; + // + // txtCashier + // + this.txtCashier.Location = new System.Drawing.Point(61, 47); + this.txtCashier.Name = "txtCashier"; + this.txtCashier.ReadOnly = true; + this.txtCashier.Size = new System.Drawing.Size(330, 20); + this.txtCashier.TabIndex = 105; + // + // Label5 + // + this.Label5.AutoSize = true; + this.Label5.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label5.Location = new System.Drawing.Point(56, 501); + this.Label5.Name = "Label5"; + this.Label5.Size = new System.Drawing.Size(40, 16); + this.Label5.TabIndex = 104; + this.Label5.Text = "Void"; + // + // txtVoid + // + this.txtVoid.BackColor = System.Drawing.Color.Black; + this.txtVoid.ForeColor = System.Drawing.Color.Lime; + this.txtVoid.Location = new System.Drawing.Point(112, 499); + this.txtVoid.Name = "txtVoid"; + this.txtVoid.ReadOnly = true; + this.txtVoid.Size = new System.Drawing.Size(100, 20); + this.txtVoid.TabIndex = 103; + this.txtVoid.Text = "0.00"; + this.txtVoid.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + // + // txtAmt + // + this.txtAmt.BackColor = System.Drawing.Color.Black; + this.txtAmt.ForeColor = System.Drawing.Color.Lime; + this.txtAmt.Location = new System.Drawing.Point(281, 500); + this.txtAmt.Name = "txtAmt"; + this.txtAmt.ReadOnly = true; + this.txtAmt.Size = new System.Drawing.Size(110, 20); + this.txtAmt.TabIndex = 102; + this.txtAmt.Text = "0.00"; + this.txtAmt.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + // + // Label4 + // + this.Label4.AutoSize = true; + this.Label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label4.Location = new System.Drawing.Point(232, 502); + this.Label4.Name = "Label4"; + this.Label4.Size = new System.Drawing.Size(44, 16); + this.Label4.TabIndex = 101; + this.Label4.Text = "Total"; + // + // Label3 + // + this.Label3.AutoSize = true; + this.Label3.Location = new System.Drawing.Point(13, 52); + this.Label3.Name = "Label3"; + this.Label3.Size = new System.Drawing.Size(42, 13); + this.Label3.TabIndex = 100; + this.Label3.Text = "Cashier"; + // + // Label2 + // + this.Label2.AutoSize = true; + this.Label2.Location = new System.Drawing.Point(171, 18); + this.Label2.Name = "Label2"; + this.Label2.Size = new System.Drawing.Size(20, 13); + this.Label2.TabIndex = 97; + this.Label2.Text = "To"; + // + // Label1 + // + this.Label1.AutoSize = true; + this.Label1.Location = new System.Drawing.Point(21, 18); + this.Label1.Name = "Label1"; + this.Label1.Size = new System.Drawing.Size(30, 13); + this.Label1.TabIndex = 95; + this.Label1.Text = "From"; + // + // dtpTo + // + this.dtpTo.Location = new System.Drawing.Point(191, 18); + this.dtpTo.Name = "dtpTo"; + this.dtpTo.Size = new System.Drawing.Size(90, 20); + this.dtpTo.TabIndex = 98; + // + // dtpFrom + // + this.dtpFrom.Location = new System.Drawing.Point(61, 18); + this.dtpFrom.Name = "dtpFrom"; + this.dtpFrom.Size = new System.Drawing.Size(90, 20); + this.dtpFrom.TabIndex = 96; + this.dtpFrom.ValueChanged += new System.EventHandler(this.dtpFrom_ValueChanged); + // + // dgExpenses + // + this.dgExpenses.AllowUserToAddRows = false; + this.dgExpenses.AllowUserToDeleteRows = false; + this.dgExpenses.AllowUserToResizeRows = false; + this.dgExpenses.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.dgExpenses.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dgExpenses.Location = new System.Drawing.Point(13, 140); + this.dgExpenses.Name = "dgExpenses"; + this.dgExpenses.ReadOnly = true; + this.dgExpenses.RowHeadersVisible = false; + this.dgExpenses.RowTemplate.Height = 19; + this.dgExpenses.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.dgExpenses.Size = new System.Drawing.Size(378, 356); + this.dgExpenses.TabIndex = 112; + // + // AdjustAdvanceForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(402, 536); + this.Controls.Add(this.dgExpenses); + this.Controls.Add(this.btnAdjust); + this.Controls.Add(this.btnSelect); + this.Controls.Add(this.Label7); + this.Controls.Add(this.txtNarration); + this.Controls.Add(this.txtAmount); + this.Controls.Add(this.lblAmount); + this.Controls.Add(this.txtCashier); + this.Controls.Add(this.Label5); + this.Controls.Add(this.txtVoid); + this.Controls.Add(this.txtAmt); + this.Controls.Add(this.Label4); + this.Controls.Add(this.Label3); + this.Controls.Add(this.Label2); + this.Controls.Add(this.Label1); + this.Controls.Add(this.dtpTo); + this.Controls.Add(this.dtpFrom); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "AdjustAdvanceForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Payment Details"; + this.Load += new System.EventHandler(this.AdjustAdvancesForm_Load); + ((System.ComponentModel.ISupportInitialize)(this.dgExpenses)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + internal System.Windows.Forms.Button btnAdjust; + internal System.Windows.Forms.Button btnSelect; + internal System.Windows.Forms.Label Label7; + internal System.Windows.Forms.TextBox txtNarration; + internal System.Windows.Forms.TextBox txtAmount; + internal System.Windows.Forms.Label lblAmount; + internal System.Windows.Forms.TextBox txtCashier; + internal System.Windows.Forms.Label Label5; + internal System.Windows.Forms.TextBox txtVoid; + internal System.Windows.Forms.TextBox txtAmt; + internal System.Windows.Forms.Label Label4; + internal System.Windows.Forms.Label Label3; + internal System.Windows.Forms.Label Label2; + internal System.Windows.Forms.Label Label1; + internal System.Windows.Forms.DateTimePicker dtpTo; + internal System.Windows.Forms.DateTimePicker dtpFrom; + private System.Windows.Forms.DataGridView dgExpenses; + + } +} \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/Sales/AdjustAdvanceForm.resx b/Tanshu.Accounts.PointOfSale/Sales/AdjustAdvanceForm.resx new file mode 100644 index 0000000..19dc0dd --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Sales/AdjustAdvanceForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/Sales/BillHelperFunctions.cs b/Tanshu.Accounts.PointOfSale/Sales/BillHelperFunctions.cs new file mode 100644 index 0000000..6fcf67c --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Sales/BillHelperFunctions.cs @@ -0,0 +1,236 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Tanshu.Common; +using Tanshu.Accounts.BI; +using Tanshu.Accounts.Contracts; +using System.Windows.Forms; +using System.Threading; + +namespace Tanshu.Accounts.PointOfSale +{ + public static class BillHelperFunctions + { + #region Discount + public static void SetDiscount(Guid productID, decimal discount, CustomerBO customer, Dictionary bill) + { + #region InputBox + if (discount == -1) + { + InputBoxResult result = InputBox.Show("Discount Rate", "Discount", "0", InputBox_Validating); + if (result.OK) + { + if (!decimal.TryParse(result.Text, out discount)) + return; + discount /= 100; + } + } + if (discount == -1) + return; + #endregion + + #region Max Discount + decimal maxDiscount = new SaleVoucherBI().GetProductDiscountLimit(productID); + if ((discount > maxDiscount) && customer.CustomerID != new Guid("F016CBAD-206C-42C0-BB1D-6006CE57BAB5")) + { + MessageBox.Show(string.Format("Maximum discount for this product is {0:P}", maxDiscount), "Excessive Discount", MessageBoxButtons.OK, MessageBoxIcon.Warning); + } + else if ((discount > maxDiscount) && customer.CustomerID == new Guid("F016CBAD-206C-42C0-BB1D-6006CE57BAB5")) + { + MessageBox.Show(string.Format("Maximum discount for this product is {0:P} Discount Disallowed", maxDiscount), "Excessive Discount", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + #endregion + + if (bill.ContainsKey(new BillItemKey(productID, true))) + SetDiscount(bill[new BillItemKey(productID, true)], discount); + if (bill.ContainsKey(new BillItemKey(productID, false))) + SetDiscount(bill[new BillItemKey(productID, false)], discount); + return; + } + private static void SetDiscount(SalesBillItemBO product, decimal discount) + { + product.Discount = discount; + } + #endregion + #region Add Product + public static SalesBillItemBO AddProductToGrid(Guid productID, BindingSource bindingSource, Dictionary bill) + { + SalesBillItemBO product; + if ((!bill.ContainsKey(new BillItemKey(productID, true))) && (!bill.ContainsKey(new BillItemKey(productID, false)))) + { + //No new or old + product = AddNewProduct(productID, bindingSource, bill); + } + else if (bill.ContainsKey(new BillItemKey(productID, true))) + { + //Has new or both + BillItemKey key = new BillItemKey(productID, true); + bindingSource.CurrencyManager.Position = ProductPosition(key, bill); + product = bill[key]; + SetQuantity(product, 1, false); + } + else + { + //Has only old + product = bill[new BillItemKey(productID, false)]; + if (product.Additional <= -1) + SetQuantity(product, 1, false); + else if (product.Additional < 0) + { + decimal quantity = 1 + product.Additional; + SetQuantity(product, 1, false); + + decimal rate = bill[new BillItemKey(productID, false)].Discount; + decimal discount = bill[new BillItemKey(productID, false)].Price; + product = AddNewProduct(productID, bindingSource, bill); + SetDiscount(product, discount); + SetRate(productID, rate, bill); + + SetQuantity(product, quantity, true); + + } + else + { + decimal discount = bill[new BillItemKey(productID, false)].Discount; + decimal rate = bill[new BillItemKey(productID, false)].Price; + product = AddNewProduct(productID, bindingSource, bill); + SetDiscount(product, discount); + SetRate(productID, rate, bill); + } + } + return product; + } + private static SalesBillItemBO AddNewProduct(Guid productID, BindingSource bindingSource, Dictionary bill) + { + BillItemKey key = new BillItemKey(productID, true); + SalesBillItemBO product = new SaleVoucherBI().GetDefaultSaleBillItem(productID); + product.Quantity = 1; + bill.Add(key, product); + bindingSource.DataSource = bill.Values; + bindingSource.CurrencyManager.Position = bindingSource.CurrencyManager.Count + 1; + return product; + + } + private static int ProductPosition(BillItemKey key, Dictionary bill) + { + for (int i = 0; i < bill.Count; i++) + { + if (bill.Keys.ElementAt(i) == key) + return i; + } + return 0; + } + + #endregion + #region Quantity + public static void SetQuantity(SalesBillItemBO product, decimal quantity, bool absolute, bool prompt, BindingSource bindingSource, Dictionary bill) + { + #region Prompt + if (prompt) + { + InputBoxResult result = InputBox.Show("Enter Quantity", "Quantity", (product.Quantity + 1).ToString(), InputBox_Validating); + if (result.OK) + { + if (!decimal.TryParse(result.Text, out quantity)) + return; + absolute = true; + } + } + if (quantity == 0) + return; + #endregion + + CheckQuantity(product, quantity, absolute); + + if (product.Printed == 0) + { + SetQuantity(product, quantity, absolute); + } + else if (bill.ContainsKey(new BillItemKey(product.productID, true))) + { + SalesBillItemBO otherProduct = bill[new BillItemKey(product.productID, true)]; + if (absolute) + SetQuantity(otherProduct, quantity - product.Printed, absolute); + else + SetQuantity(otherProduct, quantity, absolute); + } + else + { + if (product.Additional < 0) + { + if (!absolute) + quantity += product.Additional; + product.Quantity = product.Printed; + } + if (absolute) + quantity -= product.Quantity; + if (quantity > 0) + { + SalesBillItemBO otherProduct = AddProductToGrid(product.productID, bindingSource, bill); + SetQuantity(otherProduct, quantity, true); + } + else if ((quantity < 0) && (Thread.CurrentPrincipal.IsInRole("Sales/EditPrintedProduct"))) + { + SetQuantity(product, quantity, false); + } + } + + } + private static bool CheckQuantity(SalesBillItemBO product, decimal quantity, bool absolute) + { + if (!absolute) + quantity = product.Quantity + quantity; + if (quantity < 0) + return false; + else if ((quantity < product.Printed) && (!Thread.CurrentPrincipal.IsInRole("Sales/EditPrintedProduct"))) + return false; + else + return true; + } + private static void SetQuantity(SalesBillItemBO product, decimal quantity, bool absolute) + { + if (!absolute) + { + quantity = product.Quantity + quantity; + } + if (quantity <= 0) + return; + product.Quantity = quantity; + } + #endregion + #region Amount + public static void SetAmount(SalesBillItemBO product, decimal amount, BindingSource bindingSource, Dictionary bill) + { + if (amount == -1) + { + InputBoxResult result = InputBox.Show("Enter Amount", "Amount", (product.Value).ToString(), InputBox_Validating); + if (result.OK) + { + amount = Convert.ToDecimal(result.Text); + } + } + if (amount == -1) + return; + else + { + SetQuantity(product, amount / (product.Price * (1 + product.Tax) * (1 - product.Discount)), true, false, bindingSource, bill); + } + } + #endregion + #region Rate + public static void SetRate(Guid productID, decimal rate, Dictionary bill) + { + if (bill.ContainsKey(new BillItemKey(productID, true))) + bill[new BillItemKey(productID, true)].Price = rate; + if (bill.ContainsKey(new BillItemKey(productID, false))) + bill[new BillItemKey(productID, false)].Price = rate; + } + #endregion + private static void InputBox_Validating(object sender, InputBoxValidatingArgs e) + { + } + + } +} diff --git a/Tanshu.Accounts.PointOfSale/Sales/CheckoutForm.Designer.cs b/Tanshu.Accounts.PointOfSale/Sales/CheckoutForm.Designer.cs new file mode 100644 index 0000000..211b40d --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Sales/CheckoutForm.Designer.cs @@ -0,0 +1,481 @@ +namespace Tanshu.Accounts.PointOfSale +{ + partial class Cashier_Checkout_Form + { + /// + /// 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.label18 = new System.Windows.Forms.Label(); + this.txtClosingCash = new System.Windows.Forms.TextBox(); + this.dtpFinish = new System.Windows.Forms.DateTimePicker(); + this.dtpStart = new System.Windows.Forms.DateTimePicker(); + this.label17 = new System.Windows.Forms.Label(); + this.label16 = new System.Windows.Forms.Label(); + this.label15 = new System.Windows.Forms.Label(); + this.label14 = new System.Windows.Forms.Label(); + this.label13 = new System.Windows.Forms.Label(); + this.label12 = new System.Windows.Forms.Label(); + this.btnCalculate = new System.Windows.Forms.Button(); + this.btnPrint = new System.Windows.Forms.Button(); + this.txtStatus = new System.Windows.Forms.TextBox(); + this.txtSales = new System.Windows.Forms.TextBox(); + this.txtDeposited = new System.Windows.Forms.TextBox(); + this.txtPending = new System.Windows.Forms.TextBox(); + this.cmbCashier = new System.Windows.Forms.ComboBox(); + this.label10 = new System.Windows.Forms.Label(); + this.label9 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.label7 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.txtPayments = new System.Windows.Forms.TextBox(); + this.txtAdvanceAdjusted = new System.Windows.Forms.TextBox(); + this.txtCCReceipts = new System.Windows.Forms.TextBox(); + this.txtAdditionalVoids = new System.Windows.Forms.TextBox(); + this.txtVoidsInSystem = new System.Windows.Forms.TextBox(); + this.txtDiscounts = new System.Windows.Forms.TextBox(); + this.txtRates = new System.Windows.Forms.TextBox(); + this.txtAdvanceReceived = new System.Windows.Forms.TextBox(); + this.txtReceipts = new System.Windows.Forms.TextBox(); + this.txtOpening = new System.Windows.Forms.TextBox(); + this.SuspendLayout(); + // + // label18 + // + this.label18.AutoSize = true; + this.label18.Location = new System.Drawing.Point(12, 380); + this.label18.Name = "label18"; + this.label18.Size = new System.Drawing.Size(68, 13); + this.label18.TabIndex = 71; + this.label18.Text = "Closing Cash"; + // + // txtClosingCash + // + this.txtClosingCash.Location = new System.Drawing.Point(99, 377); + this.txtClosingCash.Name = "txtClosingCash"; + this.txtClosingCash.ReadOnly = true; + this.txtClosingCash.Size = new System.Drawing.Size(200, 20); + this.txtClosingCash.TabIndex = 55; + // + // dtpFinish + // + this.dtpFinish.Location = new System.Drawing.Point(189, 12); + this.dtpFinish.Name = "dtpFinish"; + this.dtpFinish.Size = new System.Drawing.Size(110, 20); + this.dtpFinish.TabIndex = 42; + this.dtpFinish.ValueChanged += new System.EventHandler(this.dtpFinish_ValueChanged); + // + // dtpStart + // + this.dtpStart.Location = new System.Drawing.Point(15, 11); + this.dtpStart.Name = "dtpStart"; + this.dtpStart.Size = new System.Drawing.Size(110, 20); + this.dtpStart.TabIndex = 41; + this.dtpStart.ValueChanged += new System.EventHandler(this.dtpStart_ValueChanged); + // + // label17 + // + this.label17.AutoSize = true; + this.label17.Location = new System.Drawing.Point(12, 276); + this.label17.Name = "label17"; + this.label17.Size = new System.Drawing.Size(85, 13); + this.label17.TabIndex = 67; + this.label17.Text = "Discounts Given"; + // + // label16 + // + this.label16.AutoSize = true; + this.label16.Location = new System.Drawing.Point(12, 302); + this.label16.Name = "label16"; + this.label16.Size = new System.Drawing.Size(81, 13); + this.label16.TabIndex = 68; + this.label16.Text = "Rates Changed"; + // + // label15 + // + this.label15.AutoSize = true; + this.label15.Location = new System.Drawing.Point(12, 354); + this.label15.Name = "label15"; + this.label15.Size = new System.Drawing.Size(53, 13); + this.label15.TabIndex = 70; + this.label15.Text = "Net Sales"; + // + // label14 + // + this.label14.AutoSize = true; + this.label14.Location = new System.Drawing.Point(12, 406); + this.label14.Name = "label14"; + this.label14.Size = new System.Drawing.Size(82, 13); + this.label14.TabIndex = 72; + this.label14.Text = "Cash Deposited"; + // + // label13 + // + this.label13.AutoSize = true; + this.label13.Location = new System.Drawing.Point(12, 432); + this.label13.Name = "label13"; + this.label13.Size = new System.Drawing.Size(37, 13); + this.label13.TabIndex = 73; + this.label13.Text = "Status"; + // + // label12 + // + this.label12.AutoSize = true; + this.label12.Location = new System.Drawing.Point(12, 328); + this.label12.Name = "label12"; + this.label12.Size = new System.Drawing.Size(62, 13); + this.label12.TabIndex = 69; + this.label12.Text = "Bill Pending"; + // + // btnCalculate + // + this.btnCalculate.Location = new System.Drawing.Point(12, 455); + this.btnCalculate.Name = "btnCalculate"; + this.btnCalculate.Size = new System.Drawing.Size(287, 23); + this.btnCalculate.TabIndex = 39; + this.btnCalculate.Text = "&Calculate"; + this.btnCalculate.UseVisualStyleBackColor = true; + this.btnCalculate.Click += new System.EventHandler(this.btnCalculate_Click); + // + // btnPrint + // + this.btnPrint.Location = new System.Drawing.Point(12, 484); + this.btnPrint.Name = "btnPrint"; + this.btnPrint.Size = new System.Drawing.Size(287, 23); + this.btnPrint.TabIndex = 40; + this.btnPrint.Text = "&Print"; + this.btnPrint.UseVisualStyleBackColor = true; + this.btnPrint.Click += new System.EventHandler(this.btnPrint_Click); + // + // txtStatus + // + this.txtStatus.Location = new System.Drawing.Point(99, 429); + this.txtStatus.Name = "txtStatus"; + this.txtStatus.ReadOnly = true; + this.txtStatus.Size = new System.Drawing.Size(200, 20); + this.txtStatus.TabIndex = 56; + // + // txtSales + // + this.txtSales.Location = new System.Drawing.Point(99, 351); + this.txtSales.Name = "txtSales"; + this.txtSales.ReadOnly = true; + this.txtSales.Size = new System.Drawing.Size(200, 20); + this.txtSales.TabIndex = 54; + this.txtSales.TextChanged += new System.EventHandler(this.txtSales_TextChanged); + // + // txtDeposited + // + this.txtDeposited.Location = new System.Drawing.Point(99, 403); + this.txtDeposited.Name = "txtDeposited"; + this.txtDeposited.Size = new System.Drawing.Size(200, 20); + this.txtDeposited.TabIndex = 38; + // + // txtPending + // + this.txtPending.Location = new System.Drawing.Point(99, 325); + this.txtPending.Name = "txtPending"; + this.txtPending.ReadOnly = true; + this.txtPending.Size = new System.Drawing.Size(200, 20); + this.txtPending.TabIndex = 53; + // + // cmbCashier + // + this.cmbCashier.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbCashier.FormattingEnabled = true; + this.cmbCashier.Location = new System.Drawing.Point(99, 38); + this.cmbCashier.Name = "cmbCashier"; + this.cmbCashier.Size = new System.Drawing.Size(200, 21); + this.cmbCashier.TabIndex = 37; + this.cmbCashier.SelectedIndexChanged += new System.EventHandler(this.cmbCashier_SelectedIndexChanged); + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Location = new System.Drawing.Point(128, 15); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(54, 13); + this.label10.TabIndex = 57; + this.label10.Text = "<- Date ->"; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Location = new System.Drawing.Point(12, 41); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(42, 13); + this.label9.TabIndex = 58; + this.label9.Text = "Cashier"; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(12, 250); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(81, 13); + this.label8.TabIndex = 66; + this.label8.Text = "Voids in System"; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(12, 224); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(82, 13); + this.label7.TabIndex = 65; + this.label7.Text = "Additional Voids"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(12, 198); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(53, 13); + this.label6.TabIndex = 64; + this.label6.Text = "Payments"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(12, 172); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(73, 13); + this.label5.TabIndex = 63; + this.label5.Text = "Adv. Adjusted"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(12, 146); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(66, 13); + this.label4.TabIndex = 62; + this.label4.Text = "CC Receipts"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(12, 120); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(78, 13); + this.label3.TabIndex = 61; + this.label3.Text = "Adv. Received"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(12, 94); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(49, 13); + this.label2.TabIndex = 60; + this.label2.Text = "Receipts"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(12, 68); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(47, 13); + this.label1.TabIndex = 59; + this.label1.Text = "Opening"; + // + // txtPayments + // + this.txtPayments.Location = new System.Drawing.Point(99, 195); + this.txtPayments.Name = "txtPayments"; + this.txtPayments.ReadOnly = true; + this.txtPayments.Size = new System.Drawing.Size(200, 20); + this.txtPayments.TabIndex = 48; + // + // txtAdvanceAdjusted + // + this.txtAdvanceAdjusted.Location = new System.Drawing.Point(99, 169); + this.txtAdvanceAdjusted.Name = "txtAdvanceAdjusted"; + this.txtAdvanceAdjusted.ReadOnly = true; + this.txtAdvanceAdjusted.Size = new System.Drawing.Size(200, 20); + this.txtAdvanceAdjusted.TabIndex = 47; + // + // txtCCReceipts + // + this.txtCCReceipts.Location = new System.Drawing.Point(99, 143); + this.txtCCReceipts.Name = "txtCCReceipts"; + this.txtCCReceipts.ReadOnly = true; + this.txtCCReceipts.Size = new System.Drawing.Size(200, 20); + this.txtCCReceipts.TabIndex = 46; + // + // txtAdditionalVoids + // + this.txtAdditionalVoids.Location = new System.Drawing.Point(99, 221); + this.txtAdditionalVoids.Name = "txtAdditionalVoids"; + this.txtAdditionalVoids.ReadOnly = true; + this.txtAdditionalVoids.Size = new System.Drawing.Size(200, 20); + this.txtAdditionalVoids.TabIndex = 49; + // + // txtVoidsInSystem + // + this.txtVoidsInSystem.Location = new System.Drawing.Point(99, 247); + this.txtVoidsInSystem.Name = "txtVoidsInSystem"; + this.txtVoidsInSystem.ReadOnly = true; + this.txtVoidsInSystem.Size = new System.Drawing.Size(200, 20); + this.txtVoidsInSystem.TabIndex = 50; + // + // txtDiscounts + // + this.txtDiscounts.Location = new System.Drawing.Point(99, 273); + this.txtDiscounts.Name = "txtDiscounts"; + this.txtDiscounts.ReadOnly = true; + this.txtDiscounts.Size = new System.Drawing.Size(200, 20); + this.txtDiscounts.TabIndex = 51; + // + // txtRates + // + this.txtRates.Location = new System.Drawing.Point(99, 299); + this.txtRates.Name = "txtRates"; + this.txtRates.ReadOnly = true; + this.txtRates.Size = new System.Drawing.Size(200, 20); + this.txtRates.TabIndex = 52; + // + // txtAdvanceReceived + // + this.txtAdvanceReceived.Location = new System.Drawing.Point(99, 117); + this.txtAdvanceReceived.Name = "txtAdvanceReceived"; + this.txtAdvanceReceived.ReadOnly = true; + this.txtAdvanceReceived.Size = new System.Drawing.Size(200, 20); + this.txtAdvanceReceived.TabIndex = 45; + // + // txtReceipts + // + this.txtReceipts.Location = new System.Drawing.Point(99, 91); + this.txtReceipts.Name = "txtReceipts"; + this.txtReceipts.ReadOnly = true; + this.txtReceipts.Size = new System.Drawing.Size(200, 20); + this.txtReceipts.TabIndex = 44; + // + // txtOpening + // + this.txtOpening.Location = new System.Drawing.Point(99, 65); + this.txtOpening.Name = "txtOpening"; + this.txtOpening.ReadOnly = true; + this.txtOpening.Size = new System.Drawing.Size(200, 20); + this.txtOpening.TabIndex = 43; + // + // Cashier_Checkout_Form + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(311, 519); + this.Controls.Add(this.label18); + this.Controls.Add(this.txtClosingCash); + this.Controls.Add(this.dtpFinish); + this.Controls.Add(this.dtpStart); + this.Controls.Add(this.label17); + this.Controls.Add(this.label16); + this.Controls.Add(this.label15); + this.Controls.Add(this.label14); + this.Controls.Add(this.label13); + this.Controls.Add(this.label12); + this.Controls.Add(this.btnCalculate); + this.Controls.Add(this.btnPrint); + this.Controls.Add(this.txtStatus); + this.Controls.Add(this.txtSales); + this.Controls.Add(this.txtDeposited); + this.Controls.Add(this.txtPending); + this.Controls.Add(this.cmbCashier); + this.Controls.Add(this.label10); + this.Controls.Add(this.label9); + this.Controls.Add(this.label8); + this.Controls.Add(this.label7); + this.Controls.Add(this.label6); + this.Controls.Add(this.label5); + this.Controls.Add(this.label4); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Controls.Add(this.txtPayments); + this.Controls.Add(this.txtAdvanceAdjusted); + this.Controls.Add(this.txtCCReceipts); + this.Controls.Add(this.txtAdditionalVoids); + this.Controls.Add(this.txtVoidsInSystem); + this.Controls.Add(this.txtDiscounts); + this.Controls.Add(this.txtRates); + this.Controls.Add(this.txtAdvanceReceived); + this.Controls.Add(this.txtReceipts); + this.Controls.Add(this.txtOpening); + this.MaximizeBox = false; + this.Name = "Cashier_Checkout_Form"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Cashier Checkout Form"; + this.Load += new System.EventHandler(this.Cashier_Checkout_Form_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label18; + private System.Windows.Forms.TextBox txtClosingCash; + private System.Windows.Forms.DateTimePicker dtpFinish; + private System.Windows.Forms.DateTimePicker dtpStart; + private System.Windows.Forms.Label label17; + private System.Windows.Forms.Label label16; + private System.Windows.Forms.Label label15; + private System.Windows.Forms.Label label14; + private System.Windows.Forms.Label label13; + private System.Windows.Forms.Label label12; + private System.Windows.Forms.Button btnCalculate; + private System.Windows.Forms.Button btnPrint; + private System.Windows.Forms.TextBox txtStatus; + private System.Windows.Forms.TextBox txtSales; + private System.Windows.Forms.TextBox txtDeposited; + private System.Windows.Forms.TextBox txtPending; + private System.Windows.Forms.ComboBox cmbCashier; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label7; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox txtPayments; + private System.Windows.Forms.TextBox txtAdvanceAdjusted; + private System.Windows.Forms.TextBox txtCCReceipts; + private System.Windows.Forms.TextBox txtAdditionalVoids; + private System.Windows.Forms.TextBox txtVoidsInSystem; + private System.Windows.Forms.TextBox txtDiscounts; + private System.Windows.Forms.TextBox txtRates; + private System.Windows.Forms.TextBox txtAdvanceReceived; + private System.Windows.Forms.TextBox txtReceipts; + private System.Windows.Forms.TextBox txtOpening; + } +} \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/Sales/CheckoutForm.cs b/Tanshu.Accounts.PointOfSale/Sales/CheckoutForm.cs new file mode 100644 index 0000000..ea9ca38 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Sales/CheckoutForm.cs @@ -0,0 +1,94 @@ +using System; +using System.Windows.Forms; +using Tanshu.Accounts.BI; +using Tanshu.Accounts.Print; +using Tanshu.Accounts.Helpers; + +namespace Tanshu.Accounts.PointOfSale +{ + public partial class Cashier_Checkout_Form : Form + { + CheckoutBI coProxy; + private static readonly Tanshu.Logging.SqlLogger log = new Tanshu.Logging.SqlLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + public Cashier_Checkout_Form() + { + InitializeComponent(); + } + + private void Cashier_Checkout_Form_Load(object sender, EventArgs e) + { + dtpStart.Format = DateTimePickerFormat.Custom; + dtpStart.CustomFormat = "dd-MMM-yyyy HH:mm:ss"; + dtpStart.Value = DateTime.Now; + dtpFinish.Format = DateTimePickerFormat.Custom; + dtpFinish.CustomFormat = "dd-MMM-yyyy HH:mm:ss"; + dtpFinish.Value = DateTime.Now; + FillUsers(); + } + + private void FillUsers() + { + cmbCashier.DisplayMember = "Name"; + cmbCashier.ValueMember = "UserID"; + cmbCashier.DataSource = new UserBI().GetUsers(); + } + + private void cmbCashier_SelectedIndexChanged(object sender, EventArgs e) + { + EmployeeStatus(); + log.Warn(string.Format("User Checkout: {0} by {1}", coProxy.Cashier, CurrentUser.user.Name)); + } + + private void EmployeeStatus() + { + if (cmbCashier.SelectedValue == null) + return; + dtpStart.Value = Convert.ToDateTime(String.Format("{0:dd-MMM-yyyy} 00:00:00", dtpStart.Value)); + dtpFinish.Value = Convert.ToDateTime(String.Format("{0:dd-MMM-yyyy} 23:59:59", dtpFinish.Value)); + + coProxy = new CheckoutBI((Guid)cmbCashier.SelectedValue, dtpStart.Value, dtpFinish.Value); + txtOpening.Text = coProxy.Opening.ToString(); + txtReceipts.Text = coProxy.Receipts.ToString(); + txtAdvanceReceived.Text = coProxy.AdvanceReceipts.ToString(); + txtCCReceipts.Text = coProxy.CCReceipts.ToString(); + txtAdvanceAdjusted.Text = coProxy.AdvanceAdjusted.ToString(); + txtPayments.Text = coProxy.CashPayments.ToString(); + txtAdditionalVoids.Text = coProxy.AdditionalVoids.ToString(); + txtVoidsInSystem.Text = coProxy.VoidsInSystem.ToString(); + txtPending.Text = coProxy.PendingBills.ToString(); + txtSales.Text = coProxy.NetSales.ToString(); + txtClosingCash.Text = coProxy.ClosingBalance.ToString(); + txtStatus.Text = coProxy.Status; + } + + private void dtpStart_ValueChanged(object sender, EventArgs e) + { + EmployeeStatus(); + } + + private void dtpFinish_ValueChanged(object sender, EventArgs e) + { + EmployeeStatus(); + } + + private void btnCalculate_Click(object sender, EventArgs e) + { + decimal deposited = 0; + if (!decimal.TryParse(txtDeposited.Text, out deposited)) + deposited = 0; + + coProxy.Calculate(deposited, 0); + txtStatus.Text = coProxy.Status; + } + + private void btnPrint_Click(object sender, EventArgs e) + { + Thermal.PrintClosing(coProxy); + } + + private void txtSales_TextChanged(object sender, EventArgs e) + { + + } + } +} \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/Sales/CheckoutForm.resx b/Tanshu.Accounts.PointOfSale/Sales/CheckoutForm.resx new file mode 100644 index 0000000..19dc0dd --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Sales/CheckoutForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/Sales/CustomersForm.Designer.cs b/Tanshu.Accounts.PointOfSale/Sales/CustomersForm.Designer.cs new file mode 100644 index 0000000..e544dec --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Sales/CustomersForm.Designer.cs @@ -0,0 +1,259 @@ + namespace Tanshu.Accounts.PointOfSale +{ + partial class CustomersForm + { + /// + /// 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.chkImportant = new System.Windows.Forms.CheckBox(); + this.txtRemarks = new System.Windows.Forms.TextBox(); + this.label6 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.txtPhone = new System.Windows.Forms.TextBox(); + this.txtAddress = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.cmbLedger = new System.Windows.Forms.ComboBox(); + this.bsLedgers = new System.Windows.Forms.BindingSource(this.components); + this.label2 = new System.Windows.Forms.Label(); + this.txtName = new System.Windows.Forms.TextBox(); + this.btnSave = new System.Windows.Forms.Button(); + this.btnDelete = new System.Windows.Forms.Button(); + this.btnCancel = new System.Windows.Forms.Button(); + this.Label1 = new System.Windows.Forms.Label(); + this.txtUniqueID = new System.Windows.Forms.TextBox(); + ((System.ComponentModel.ISupportInitialize)(this.bsLedgers)).BeginInit(); + this.SuspendLayout(); + // + // chkImportant + // + this.chkImportant.AutoSize = true; + this.chkImportant.CheckAlign = System.Drawing.ContentAlignment.MiddleRight; + this.chkImportant.Location = new System.Drawing.Point(29, 292); + this.chkImportant.Name = "chkImportant"; + this.chkImportant.Size = new System.Drawing.Size(70, 17); + this.chkImportant.TabIndex = 4; + this.chkImportant.Text = "Important"; + this.chkImportant.UseVisualStyleBackColor = true; + // + // txtRemarks + // + this.txtRemarks.Location = new System.Drawing.Point(81, 208); + this.txtRemarks.Multiline = true; + this.txtRemarks.Name = "txtRemarks"; + this.txtRemarks.Size = new System.Drawing.Size(292, 78); + this.txtRemarks.TabIndex = 3; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(18, 94); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(58, 13); + this.label6.TabIndex = 11; + this.label6.Text = "Phone No."; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(30, 120); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(45, 13); + this.label5.TabIndex = 12; + this.label5.Text = "Address"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(26, 211); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(49, 13); + this.label4.TabIndex = 13; + this.label4.Text = "Remarks"; + // + // txtPhone + // + this.txtPhone.Location = new System.Drawing.Point(81, 91); + this.txtPhone.Name = "txtPhone"; + this.txtPhone.Size = new System.Drawing.Size(292, 20); + this.txtPhone.TabIndex = 1; + // + // txtAddress + // + this.txtAddress.Location = new System.Drawing.Point(81, 117); + this.txtAddress.Multiline = true; + this.txtAddress.Name = "txtAddress"; + this.txtAddress.Size = new System.Drawing.Size(292, 85); + this.txtAddress.TabIndex = 2; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(35, 67); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(40, 13); + this.label3.TabIndex = 10; + this.label3.Text = "Ledger"; + // + // cmbLedger + // + this.cmbLedger.DataSource = this.bsLedgers; + this.cmbLedger.DisplayMember = "Name"; + this.cmbLedger.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbLedger.FormattingEnabled = true; + this.cmbLedger.Location = new System.Drawing.Point(81, 64); + this.cmbLedger.Name = "cmbLedger"; + this.cmbLedger.Size = new System.Drawing.Size(292, 21); + this.cmbLedger.TabIndex = 15; + this.cmbLedger.ValueMember = "LedgerID"; + // + // bsLedgers + // + this.bsLedgers.DataSource = typeof(Tanshu.Accounts.Contracts.LedgerBO); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(40, 41); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(35, 13); + this.label2.TabIndex = 9; + this.label2.Text = "Name"; + // + // txtName + // + this.txtName.Location = new System.Drawing.Point(81, 38); + this.txtName.Name = "txtName"; + this.txtName.Size = new System.Drawing.Size(292, 20); + this.txtName.TabIndex = 0; + // + // btnSave + // + this.btnSave.Location = new System.Drawing.Point(12, 315); + this.btnSave.Name = "btnSave"; + this.btnSave.Size = new System.Drawing.Size(75, 23); + this.btnSave.TabIndex = 5; + this.btnSave.Text = "&Save"; + this.btnSave.Click += new System.EventHandler(this.btnSave_Click); + // + // btnDelete + // + this.btnDelete.Location = new System.Drawing.Point(93, 315); + this.btnDelete.Name = "btnDelete"; + this.btnDelete.Size = new System.Drawing.Size(75, 23); + this.btnDelete.TabIndex = 6; + this.btnDelete.Text = "&Delete"; + this.btnDelete.Click += new System.EventHandler(this.btnDelete_Click); + // + // btnCancel + // + this.btnCancel.AccessibleName = "Done"; + this.btnCancel.Location = new System.Drawing.Point(301, 315); + this.btnCancel.Name = "btnCancel"; + this.btnCancel.Size = new System.Drawing.Size(72, 24); + this.btnCancel.TabIndex = 7; + this.btnCancel.Text = "&Cancel"; + this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); + // + // Label1 + // + this.Label1.AutoSize = true; + this.Label1.Location = new System.Drawing.Point(43, 15); + this.Label1.Name = "Label1"; + this.Label1.Size = new System.Drawing.Size(32, 13); + this.Label1.TabIndex = 8; + this.Label1.Text = "Code"; + this.Label1.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // txtUniqueID + // + this.txtUniqueID.AccessibleName = "Unique ID"; + this.txtUniqueID.Enabled = false; + this.txtUniqueID.Location = new System.Drawing.Point(81, 12); + this.txtUniqueID.Name = "txtUniqueID"; + this.txtUniqueID.ReadOnly = true; + this.txtUniqueID.Size = new System.Drawing.Size(292, 20); + this.txtUniqueID.TabIndex = 14; + this.txtUniqueID.Text = "UniqueID"; + this.txtUniqueID.WordWrap = false; + // + // CustomersForm + // + this.AcceptButton = this.btnSave; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.CancelButton = this.btnCancel; + this.ClientSize = new System.Drawing.Size(385, 346); + this.Controls.Add(this.Label1); + this.Controls.Add(this.txtUniqueID); + this.Controls.Add(this.btnSave); + this.Controls.Add(this.btnDelete); + this.Controls.Add(this.btnCancel); + this.Controls.Add(this.chkImportant); + this.Controls.Add(this.txtRemarks); + this.Controls.Add(this.label6); + this.Controls.Add(this.label5); + this.Controls.Add(this.label4); + this.Controls.Add(this.txtPhone); + this.Controls.Add(this.txtAddress); + this.Controls.Add(this.label3); + this.Controls.Add(this.cmbLedger); + this.Controls.Add(this.label2); + this.Controls.Add(this.txtName); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "CustomersForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Customers"; + this.Load += new System.EventHandler(this.CustomersForm_Load); + ((System.ComponentModel.ISupportInitialize)(this.bsLedgers)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.CheckBox chkImportant; + private System.Windows.Forms.TextBox txtRemarks; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.TextBox txtPhone; + private System.Windows.Forms.TextBox txtAddress; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.ComboBox cmbLedger; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox txtName; + internal System.Windows.Forms.Button btnSave; + internal System.Windows.Forms.Button btnDelete; + internal System.Windows.Forms.Button btnCancel; + private System.Windows.Forms.BindingSource bsLedgers; + internal System.Windows.Forms.Label Label1; + internal System.Windows.Forms.TextBox txtUniqueID; + } +} \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/Sales/CustomersForm.cs b/Tanshu.Accounts.PointOfSale/Sales/CustomersForm.cs new file mode 100644 index 0000000..ad81caf --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Sales/CustomersForm.cs @@ -0,0 +1,110 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Linq; +using System.Windows.Forms; +using Tanshu.Accounts.Helpers; +using Tanshu.Accounts.BI; +using Tanshu.Accounts.Contracts; + +namespace Tanshu.Accounts.PointOfSale +{ + public partial class CustomersForm : Form + { + private Guid? customerID; + private CustomerBO customer; + private string phone; + #region Form Load + public CustomersForm(Guid? customerID, string phone) + { + InitializeComponent(); + this.customerID = customerID; + this.phone = phone; + } + private void CustomersForm_Load(object sender, EventArgs e) + { + bsLedgers.DataSource = new CustomerBI().GetCustomerLedgers(); + if (customerID.HasValue) + { + customer = new CustomerBI().GetCustomer(customerID.Value); + btnDelete.Enabled = true; + txtName.Text = customer.Name; + cmbLedger.SelectedValue = customer.LedgerID; + txtPhone.Text = customer.Phone; + txtAddress.Text = customer.Address; + txtRemarks.Text = customer.Remarks; + chkImportant.Checked = customer.Important; + } + else + txtPhone.Text = phone; + + btnSave.Text = customerID.HasValue ? "&Update" : "&Save"; + } + #endregion + + #region Buttons + private void btnSave_Click(object sender, EventArgs e) + { + if (!ValidateValues()) + { + MessageBox.Show("Missing Information: Please check the form."); + txtName.Focus(); + } + else + { + Save(); + btnCancel_Click(sender, e); + } + } + private void btnDelete_Click(object sender, EventArgs e) + { + new CustomerBI().Delete(customer.CustomerID); + btnCancel_Click(sender, e); + } + private void btnCancel_Click(object sender, EventArgs e) + { + this.Close(); + } + #endregion + + #region Add / Edit / Delete + private bool ValidateValues() + { + bool returnType = true; + if (txtName.Text.Trim().Length > 0) + { + if (cmbLedger.SelectedValue == null) + return false; + } + else + return false; + return returnType; + } + private void Save() + { + if (customer == null) + customer = new CustomerBO(); + UserBO user = CurrentUser.user; + customer.Name = txtName.Text; + customer.LedgerID = (Guid)cmbLedger.SelectedValue; + customer.Phone = txtPhone.Text; + customer.Address = txtAddress.Text; + customer.Remarks = txtRemarks.Text; + customer.Important = chkImportant.Checked; + if (customer.CustomerID == new Guid()) + new CustomerBI().Insert(customer); + else + new CustomerBI().Update(customer); + } + private bool Delete(Guid customerID) + { + return new CustomerBI().Delete(customerID); + } + #endregion + + public CustomerBO Customer + { + get { return customer; } + } + } +} diff --git a/Tanshu.Accounts.PointOfSale/Sales/CustomersForm.resx b/Tanshu.Accounts.PointOfSale/Sales/CustomersForm.resx new file mode 100644 index 0000000..cb9f9cf --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Sales/CustomersForm.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 17, 17 + + + 17, 17 + + \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/Sales/PaymentForm.Designer.cs b/Tanshu.Accounts.PointOfSale/Sales/PaymentForm.Designer.cs new file mode 100644 index 0000000..cb4f3b4 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Sales/PaymentForm.Designer.cs @@ -0,0 +1,318 @@ +namespace Tanshu.Accounts.PointOfSale +{ + partial class PaymentForm + { + /// + /// 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(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); + this.btnAdd = new System.Windows.Forms.Button(); + this.Label7 = new System.Windows.Forms.Label(); + this.txtNarration = new System.Windows.Forms.TextBox(); + this.Label6 = new System.Windows.Forms.Label(); + this.txtAmount = new System.Windows.Forms.TextBox(); + this.lblAmount = new System.Windows.Forms.Label(); + this.txtCashier = new System.Windows.Forms.TextBox(); + this.Label3 = new System.Windows.Forms.Label(); + this.Label2 = new System.Windows.Forms.Label(); + this.Label1 = new System.Windows.Forms.Label(); + this.cmbType = new System.Windows.Forms.ComboBox(); + this.dtpTo = new System.Windows.Forms.DateTimePicker(); + this.dtpFrom = new System.Windows.Forms.DateTimePicker(); + this.dgvPayments = new System.Windows.Forms.DataGridView(); + this.dateDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.typeDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.amountDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Narration = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.Cashier = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.bindingSource = new System.Windows.Forms.BindingSource(this.components); + this.btnDelete = new System.Windows.Forms.Button(); + ((System.ComponentModel.ISupportInitialize)(this.dgvPayments)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bindingSource)).BeginInit(); + this.SuspendLayout(); + // + // btnAdd + // + this.btnAdd.Location = new System.Drawing.Point(68, 117); + this.btnAdd.Name = "btnAdd"; + this.btnAdd.Size = new System.Drawing.Size(75, 21); + this.btnAdd.TabIndex = 108; + this.btnAdd.Text = "&Add"; + this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click); + // + // Label7 + // + this.Label7.AutoSize = true; + this.Label7.Location = new System.Drawing.Point(12, 94); + this.Label7.Name = "Label7"; + this.Label7.Size = new System.Drawing.Size(50, 13); + this.Label7.TabIndex = 107; + this.Label7.Text = "Narration"; + // + // txtNarration + // + this.txtNarration.Location = new System.Drawing.Point(68, 91); + this.txtNarration.Name = "txtNarration"; + this.txtNarration.Size = new System.Drawing.Size(322, 20); + this.txtNarration.TabIndex = 106; + // + // Label6 + // + this.Label6.AutoSize = true; + this.Label6.Location = new System.Drawing.Point(195, 67); + this.Label6.Name = "Label6"; + this.Label6.Size = new System.Drawing.Size(44, 13); + this.Label6.TabIndex = 104; + this.Label6.Text = "Reason"; + // + // txtAmount + // + this.txtAmount.Location = new System.Drawing.Point(68, 64); + this.txtAmount.Name = "txtAmount"; + this.txtAmount.Size = new System.Drawing.Size(121, 20); + this.txtAmount.TabIndex = 103; + // + // lblAmount + // + this.lblAmount.AutoSize = true; + this.lblAmount.Location = new System.Drawing.Point(12, 67); + this.lblAmount.Name = "lblAmount"; + this.lblAmount.Size = new System.Drawing.Size(43, 13); + this.lblAmount.TabIndex = 102; + this.lblAmount.Text = "Amount"; + // + // txtCashier + // + this.txtCashier.Location = new System.Drawing.Point(68, 38); + this.txtCashier.Name = "txtCashier"; + this.txtCashier.ReadOnly = true; + this.txtCashier.Size = new System.Drawing.Size(322, 20); + this.txtCashier.TabIndex = 101; + // + // Label3 + // + this.Label3.AutoSize = true; + this.Label3.Location = new System.Drawing.Point(12, 41); + this.Label3.Name = "Label3"; + this.Label3.Size = new System.Drawing.Size(42, 13); + this.Label3.TabIndex = 100; + this.Label3.Text = "Cashier"; + // + // Label2 + // + this.Label2.AutoSize = true; + this.Label2.Location = new System.Drawing.Point(219, 16); + this.Label2.Name = "Label2"; + this.Label2.Size = new System.Drawing.Size(20, 13); + this.Label2.TabIndex = 97; + this.Label2.Text = "To"; + // + // Label1 + // + this.Label1.AutoSize = true; + this.Label1.Location = new System.Drawing.Point(12, 16); + this.Label1.Name = "Label1"; + this.Label1.Size = new System.Drawing.Size(30, 13); + this.Label1.TabIndex = 95; + this.Label1.Text = "From"; + // + // cmbType + // + this.cmbType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbType.Items.AddRange(new object[] { + "Opening", + "Receipt", + "Payment", + "Additional Void", + "Retained at Night", + "Own in Pocket"}); + this.cmbType.Location = new System.Drawing.Point(245, 64); + this.cmbType.Name = "cmbType"; + this.cmbType.Size = new System.Drawing.Size(145, 21); + this.cmbType.TabIndex = 105; + // + // dtpTo + // + this.dtpTo.CustomFormat = "dd-MMM-yyyy"; + this.dtpTo.Format = System.Windows.Forms.DateTimePickerFormat.Custom; + this.dtpTo.Location = new System.Drawing.Point(245, 12); + this.dtpTo.Name = "dtpTo"; + this.dtpTo.Size = new System.Drawing.Size(145, 20); + this.dtpTo.TabIndex = 98; + this.dtpTo.ValueChanged += new System.EventHandler(this.dtpTo_ValueChanged); + // + // dtpFrom + // + this.dtpFrom.CustomFormat = "dd-MMM-yyyy"; + this.dtpFrom.Format = System.Windows.Forms.DateTimePickerFormat.Custom; + this.dtpFrom.Location = new System.Drawing.Point(68, 12); + this.dtpFrom.Name = "dtpFrom"; + this.dtpFrom.Size = new System.Drawing.Size(132, 20); + this.dtpFrom.TabIndex = 96; + this.dtpFrom.ValueChanged += new System.EventHandler(this.dtpFrom_ValueChanged); + // + // dgvPayments + // + this.dgvPayments.AllowUserToAddRows = false; + this.dgvPayments.AllowUserToDeleteRows = false; + this.dgvPayments.AllowUserToResizeRows = false; + this.dgvPayments.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.dgvPayments.AutoGenerateColumns = false; + this.dgvPayments.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.DisplayedCells; + this.dgvPayments.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dgvPayments.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.dateDataGridViewTextBoxColumn, + this.typeDataGridViewTextBoxColumn, + this.amountDataGridViewTextBoxColumn, + this.Narration, + this.Cashier}); + this.dgvPayments.DataSource = this.bindingSource; + this.dgvPayments.EditMode = System.Windows.Forms.DataGridViewEditMode.EditProgrammatically; + this.dgvPayments.Location = new System.Drawing.Point(12, 144); + this.dgvPayments.Name = "dgvPayments"; + this.dgvPayments.ReadOnly = true; + this.dgvPayments.RowHeadersVisible = false; + this.dgvPayments.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.dgvPayments.Size = new System.Drawing.Size(378, 380); + this.dgvPayments.TabIndex = 110; + // + // dateDataGridViewTextBoxColumn + // + this.dateDataGridViewTextBoxColumn.DataPropertyName = "Date"; + this.dateDataGridViewTextBoxColumn.HeaderText = "Date"; + this.dateDataGridViewTextBoxColumn.Name = "dateDataGridViewTextBoxColumn"; + this.dateDataGridViewTextBoxColumn.ReadOnly = true; + this.dateDataGridViewTextBoxColumn.Width = 55; + // + // typeDataGridViewTextBoxColumn + // + this.typeDataGridViewTextBoxColumn.DataPropertyName = "Type"; + this.typeDataGridViewTextBoxColumn.HeaderText = "Type"; + this.typeDataGridViewTextBoxColumn.Name = "typeDataGridViewTextBoxColumn"; + this.typeDataGridViewTextBoxColumn.ReadOnly = true; + this.typeDataGridViewTextBoxColumn.Width = 56; + // + // amountDataGridViewTextBoxColumn + // + this.amountDataGridViewTextBoxColumn.DataPropertyName = "Amount"; + dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleRight; + dataGridViewCellStyle1.Format = "N2"; + dataGridViewCellStyle1.NullValue = "-"; + this.amountDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle1; + this.amountDataGridViewTextBoxColumn.HeaderText = "Amount"; + this.amountDataGridViewTextBoxColumn.Name = "amountDataGridViewTextBoxColumn"; + this.amountDataGridViewTextBoxColumn.ReadOnly = true; + this.amountDataGridViewTextBoxColumn.Width = 68; + // + // Narration + // + this.Narration.DataPropertyName = "Narration"; + this.Narration.HeaderText = "Narration"; + this.Narration.Name = "Narration"; + this.Narration.ReadOnly = true; + this.Narration.Width = 75; + // + // Cashier + // + this.Cashier.DataPropertyName = "Cashier"; + this.Cashier.HeaderText = "Cashier"; + this.Cashier.Name = "Cashier"; + this.Cashier.ReadOnly = true; + this.Cashier.Width = 67; + // + // bindingSource + // + this.bindingSource.DataSource = typeof(Tanshu.Accounts.Contracts.PaymentDisplayBO); + // + // btnDelete + // + this.btnDelete.Location = new System.Drawing.Point(315, 117); + this.btnDelete.Name = "btnDelete"; + this.btnDelete.Size = new System.Drawing.Size(75, 21); + this.btnDelete.TabIndex = 109; + this.btnDelete.Text = "&Delete"; + this.btnDelete.Click += new System.EventHandler(this.btnDelete_Click); + // + // PaymentFrom + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(402, 536); + this.Controls.Add(this.dgvPayments); + this.Controls.Add(this.btnDelete); + this.Controls.Add(this.btnAdd); + this.Controls.Add(this.Label7); + this.Controls.Add(this.txtNarration); + this.Controls.Add(this.Label6); + this.Controls.Add(this.txtAmount); + this.Controls.Add(this.lblAmount); + this.Controls.Add(this.txtCashier); + this.Controls.Add(this.Label3); + this.Controls.Add(this.Label2); + this.Controls.Add(this.Label1); + this.Controls.Add(this.cmbType); + this.Controls.Add(this.dtpTo); + this.Controls.Add(this.dtpFrom); + this.MaximizeBox = false; + this.Name = "PaymentFrom"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Payments"; + this.Load += new System.EventHandler(this.PaymentForm_Load); + ((System.ComponentModel.ISupportInitialize)(this.dgvPayments)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bindingSource)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + internal System.Windows.Forms.Button btnAdd; + internal System.Windows.Forms.Label Label7; + internal System.Windows.Forms.TextBox txtNarration; + internal System.Windows.Forms.Label Label6; + internal System.Windows.Forms.TextBox txtAmount; + internal System.Windows.Forms.Label lblAmount; + internal System.Windows.Forms.TextBox txtCashier; + internal System.Windows.Forms.Label Label3; + internal System.Windows.Forms.Label Label2; + internal System.Windows.Forms.Label Label1; + internal System.Windows.Forms.ComboBox cmbType; + internal System.Windows.Forms.DateTimePicker dtpTo; + internal System.Windows.Forms.DateTimePicker dtpFrom; + private System.Windows.Forms.DataGridView dgvPayments; + private System.Windows.Forms.BindingSource bindingSource; + internal System.Windows.Forms.Button btnDelete; + private System.Windows.Forms.DataGridViewTextBoxColumn dateDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn typeDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn amountDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn Narration; + private System.Windows.Forms.DataGridViewTextBoxColumn Cashier; + } +} \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/Sales/PaymentForm.cs b/Tanshu.Accounts.PointOfSale/Sales/PaymentForm.cs new file mode 100644 index 0000000..688d696 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Sales/PaymentForm.cs @@ -0,0 +1,84 @@ +using System; +using System.Collections.Generic; +using System.Threading; +using System.Windows.Forms; +using Tanshu.Accounts.BI; +using Tanshu.Accounts.Contracts; +using Tanshu.Accounts.Helpers; + +namespace Tanshu.Accounts.PointOfSale +{ + public partial class PaymentForm : Form + { + List paymentList = new List(); + public PaymentForm() + { + InitializeComponent(); + } + private void btnAdd_Click(object sender, EventArgs e) + { + UserBO user = CurrentUser.user; + if (txtAmount.Text == "0" || cmbType.Text == "") + { + System.Windows.Forms.MessageBox.Show("Amount can't be blank", "Blank not Allowed"); + } + else + { + PaymentBO paymentEntry = new PaymentBO(); + paymentEntry.Date = DateTime.Now; + paymentEntry.Type = cmbType.Text; + paymentEntry.CashierID = user.UserID; + paymentEntry.Amount = Convert.ToDecimal(txtAmount.Text); + paymentEntry.Narration = txtNarration.Text; + new PaymentBI().Insert(paymentEntry); + } + GridBind(); + } + + private void PaymentForm_Load(object sender, EventArgs e) + { + UserBO user = CurrentUser.user; + dtpFrom.Value = DateTime.Today; + dtpTo.Value = DateTime.Today; + GridBind(); + txtCashier.Text = user.Name; + txtCashier.Tag = user.UserID; + } + private void btnDelete_Click(object sender, EventArgs e) + { + if (!Thread.CurrentPrincipal.IsInRole("Payment/Delete")) + MessageBox.Show("You are not authorized to access"); + else + { + UserBO user = CurrentUser.user; + if (dgvPayments.SelectedRows.Count <= 0) + return; + Guid paymentID = ((PaymentDisplayBO)bindingSource.Current).PaymentID; + new PaymentBI().Delete(paymentID); + GridBind(); + } + } + private void GridBind() + { + Guid? userID; + if (!Thread.CurrentPrincipal.IsInRole("Payment/SeeAll")) + userID = null; + else + { + userID = CurrentUser.user.UserID; + } + paymentList = new PaymentBI().GetPayments(userID, dtpFrom.Value, dtpTo.Value); + bindingSource.DataSource = paymentList; + } + + private void dtpFrom_ValueChanged(object sender, EventArgs e) + { + GridBind(); + } + + private void dtpTo_ValueChanged(object sender, EventArgs e) + { + GridBind(); + } + } +} diff --git a/Tanshu.Accounts.PointOfSale/Sales/PaymentForm.resx b/Tanshu.Accounts.PointOfSale/Sales/PaymentForm.resx new file mode 100644 index 0000000..8d369f1 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Sales/PaymentForm.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 17, 17 + + \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/Sales/RecieveAdvanceForm.cs b/Tanshu.Accounts.PointOfSale/Sales/RecieveAdvanceForm.cs new file mode 100644 index 0000000..42b4e90 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Sales/RecieveAdvanceForm.cs @@ -0,0 +1,82 @@ +using System; +using System.Collections.Generic; +using System.Windows.Forms; +using Tanshu.Accounts.Helpers; +using Tanshu.Accounts.Print; +using Tanshu.Accounts.Contracts; +using Tanshu.Accounts.BI; + +namespace Tanshu.Accounts.PointOfSale +{ + public partial class RecieveAdvanceForm : Form + { + bool loading = true; + public RecieveAdvanceForm() + { + InitializeComponent(); + } + + private void btnAdd_Click(object sender, EventArgs e) + { + if (Convert.ToDecimal(txtAmount.Text) == 0) + return; + AdvanceBO adv = new AdvanceBO(); + adv.Narration = txtNarration.Text; + adv.Amount = Convert.ToDecimal(txtAmount.Text.Trim()); + adv.CashierIn = new Guid(txtCashier.Tag.ToString()); + adv.DateIn = DateTime.Now; + new AdvanceBI().Insert(adv); + GridBind(); + PrintAdvances(); + } + + + private void RecieveAdvanceForm_Load(object sender, EventArgs e) + { + dtpFrom.Format = DateTimePickerFormat.Custom; + dtpFrom.CustomFormat = "dd-MMM-yyyy"; + dtpFrom.Value = DateTime.Now; + dtpTo.Format = DateTimePickerFormat.Custom; + dtpTo.CustomFormat = "dd-MMM-yyyy"; + dtpTo.Value = DateTime.Now; + txtCashier.Text = CurrentUser.user.Name; + txtCashier.Tag = CurrentUser.user.UserID; + loading = false; + GridBind(); + } + + private void GridBind() + { + List advance = new AdvanceBI().GetAdvances(dtpFrom.Value, dtpTo.Value, true); + dgExpenses.DataSource = advance; + } + + private void dtpFrom_ValueChanged(object sender, EventArgs e) + { + if (!loading) + GridBind(); + } + private void PrintAdvances() + { + Thermal.PrintAdvance(txtAmount.Text.Trim(), txtNarration.Text.Trim()); + } + private string AddDate(string SqlStringP, DateTime FromDate, DateTime ToDate) + { + return SqlStringP.Replace("$From$", string.Format(FromDate.ToString(), "dd-MMM-yyyy" + " 05:00:00")).Replace("$To$", string.Format(ToDate.ToString(), "dd-MMM-yyyy" + " 23:59:59")); + } + + private void txtAmount_TextChanged(object sender, EventArgs e) + { + + } + + private void txtAmount_Leave(object sender, EventArgs e) + { + if (txtAmount.Text.Trim() == "") + { + txtAmount.Focus(); + } + } + + } +} diff --git a/Tanshu.Accounts.PointOfSale/Sales/RecieveAdvanceForm.designer.cs b/Tanshu.Accounts.PointOfSale/Sales/RecieveAdvanceForm.designer.cs new file mode 100644 index 0000000..cbadb7f --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Sales/RecieveAdvanceForm.designer.cs @@ -0,0 +1,258 @@ +namespace Tanshu.Accounts.PointOfSale +{ + partial class RecieveAdvanceForm + { + /// + /// 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.btnAdd = new System.Windows.Forms.Button(); + this.Label7 = new System.Windows.Forms.Label(); + this.txtNarration = new System.Windows.Forms.TextBox(); + this.txtAmount = new System.Windows.Forms.TextBox(); + this.lblAmount = new System.Windows.Forms.Label(); + this.txtCashier = new System.Windows.Forms.TextBox(); + this.Label5 = new System.Windows.Forms.Label(); + this.txtVoid = new System.Windows.Forms.TextBox(); + this.txtAmt = new System.Windows.Forms.TextBox(); + this.Label4 = new System.Windows.Forms.Label(); + this.Label3 = new System.Windows.Forms.Label(); + this.Label2 = new System.Windows.Forms.Label(); + this.Label1 = new System.Windows.Forms.Label(); + this.dtpTo = new System.Windows.Forms.DateTimePicker(); + this.dtpFrom = new System.Windows.Forms.DateTimePicker(); + this.dgExpenses = new System.Windows.Forms.DataGridView(); + ((System.ComponentModel.ISupportInitialize)(this.dgExpenses)).BeginInit(); + this.SuspendLayout(); + // + // btnAdd + // + this.btnAdd.Location = new System.Drawing.Point(60, 115); + this.btnAdd.Name = "btnAdd"; + this.btnAdd.Size = new System.Drawing.Size(75, 21); + this.btnAdd.TabIndex = 109; + this.btnAdd.Text = "&Add"; + this.btnAdd.Click += new System.EventHandler(this.btnAdd_Click); + // + // Label7 + // + this.Label7.AutoSize = true; + this.Label7.Location = new System.Drawing.Point(12, 92); + this.Label7.Name = "Label7"; + this.Label7.Size = new System.Drawing.Size(50, 13); + this.Label7.TabIndex = 108; + this.Label7.Text = "Narration"; + // + // txtNarration + // + this.txtNarration.Location = new System.Drawing.Point(68, 89); + this.txtNarration.Name = "txtNarration"; + this.txtNarration.Size = new System.Drawing.Size(322, 20); + this.txtNarration.TabIndex = 107; + // + // txtAmount + // + this.txtAmount.Location = new System.Drawing.Point(68, 64); + this.txtAmount.Name = "txtAmount"; + this.txtAmount.Size = new System.Drawing.Size(92, 20); + this.txtAmount.TabIndex = 106; + this.txtAmount.Text = "0"; + this.txtAmount.TextChanged += new System.EventHandler(this.txtAmount_TextChanged); + this.txtAmount.Leave += new System.EventHandler(this.txtAmount_Leave); + // + // lblAmount + // + this.lblAmount.AutoSize = true; + this.lblAmount.Location = new System.Drawing.Point(19, 67); + this.lblAmount.Name = "lblAmount"; + this.lblAmount.Size = new System.Drawing.Size(43, 13); + this.lblAmount.TabIndex = 105; + this.lblAmount.Text = "Amount"; + // + // txtCashier + // + this.txtCashier.Location = new System.Drawing.Point(68, 38); + this.txtCashier.Name = "txtCashier"; + this.txtCashier.ReadOnly = true; + this.txtCashier.Size = new System.Drawing.Size(322, 20); + this.txtCashier.TabIndex = 104; + // + // Label5 + // + this.Label5.AutoSize = true; + this.Label5.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label5.Location = new System.Drawing.Point(78, 505); + this.Label5.Name = "Label5"; + this.Label5.Size = new System.Drawing.Size(40, 16); + this.Label5.TabIndex = 103; + this.Label5.Text = "Void"; + // + // txtVoid + // + this.txtVoid.BackColor = System.Drawing.Color.Black; + this.txtVoid.ForeColor = System.Drawing.Color.Lime; + this.txtVoid.Location = new System.Drawing.Point(124, 504); + this.txtVoid.Name = "txtVoid"; + this.txtVoid.ReadOnly = true; + this.txtVoid.Size = new System.Drawing.Size(100, 20); + this.txtVoid.TabIndex = 102; + this.txtVoid.Text = "0.00"; + this.txtVoid.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + // + // txtAmt + // + this.txtAmt.BackColor = System.Drawing.Color.Black; + this.txtAmt.ForeColor = System.Drawing.Color.Lime; + this.txtAmt.Location = new System.Drawing.Point(280, 504); + this.txtAmt.Name = "txtAmt"; + this.txtAmt.ReadOnly = true; + this.txtAmt.Size = new System.Drawing.Size(110, 20); + this.txtAmt.TabIndex = 101; + this.txtAmt.Text = "0.00"; + this.txtAmt.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + // + // Label4 + // + this.Label4.AutoSize = true; + this.Label4.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label4.Location = new System.Drawing.Point(230, 505); + this.Label4.Name = "Label4"; + this.Label4.Size = new System.Drawing.Size(44, 16); + this.Label4.TabIndex = 100; + this.Label4.Text = "Total"; + // + // Label3 + // + this.Label3.AutoSize = true; + this.Label3.Location = new System.Drawing.Point(20, 41); + this.Label3.Name = "Label3"; + this.Label3.Size = new System.Drawing.Size(42, 13); + this.Label3.TabIndex = 99; + this.Label3.Text = "Cashier"; + // + // Label2 + // + this.Label2.AutoSize = true; + this.Label2.Location = new System.Drawing.Point(197, 18); + this.Label2.Name = "Label2"; + this.Label2.Size = new System.Drawing.Size(20, 13); + this.Label2.TabIndex = 96; + this.Label2.Text = "To"; + // + // Label1 + // + this.Label1.AutoSize = true; + this.Label1.Location = new System.Drawing.Point(32, 18); + this.Label1.Name = "Label1"; + this.Label1.Size = new System.Drawing.Size(30, 13); + this.Label1.TabIndex = 94; + this.Label1.Text = "From"; + // + // dtpTo + // + this.dtpTo.Location = new System.Drawing.Point(223, 12); + this.dtpTo.Name = "dtpTo"; + this.dtpTo.Size = new System.Drawing.Size(167, 20); + this.dtpTo.TabIndex = 97; + // + // dtpFrom + // + this.dtpFrom.Location = new System.Drawing.Point(68, 11); + this.dtpFrom.Name = "dtpFrom"; + this.dtpFrom.Size = new System.Drawing.Size(121, 20); + this.dtpFrom.TabIndex = 95; + this.dtpFrom.ValueChanged += new System.EventHandler(this.dtpFrom_ValueChanged); + // + // dgExpenses + // + this.dgExpenses.AllowUserToAddRows = false; + this.dgExpenses.AllowUserToDeleteRows = false; + this.dgExpenses.AllowUserToResizeRows = false; + this.dgExpenses.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.dgExpenses.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.DisplayedCells; + this.dgExpenses.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dgExpenses.Location = new System.Drawing.Point(12, 142); + this.dgExpenses.Name = "dgExpenses"; + this.dgExpenses.ReadOnly = true; + this.dgExpenses.RowHeadersVisible = false; + this.dgExpenses.RowTemplate.Height = 19; + this.dgExpenses.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.dgExpenses.Size = new System.Drawing.Size(378, 356); + this.dgExpenses.TabIndex = 110; + // + // RecieveAdvanceForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(402, 536); + this.Controls.Add(this.dgExpenses); + this.Controls.Add(this.btnAdd); + this.Controls.Add(this.Label7); + this.Controls.Add(this.txtNarration); + this.Controls.Add(this.txtAmount); + this.Controls.Add(this.lblAmount); + this.Controls.Add(this.txtCashier); + this.Controls.Add(this.Label5); + this.Controls.Add(this.txtVoid); + this.Controls.Add(this.txtAmt); + this.Controls.Add(this.Label4); + this.Controls.Add(this.Label3); + this.Controls.Add(this.Label2); + this.Controls.Add(this.Label1); + this.Controls.Add(this.dtpTo); + this.Controls.Add(this.dtpFrom); + this.MaximizeBox = false; + this.Name = "RecieveAdvanceForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Received Advance"; + this.Load += new System.EventHandler(this.RecieveAdvanceForm_Load); + ((System.ComponentModel.ISupportInitialize)(this.dgExpenses)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + internal System.Windows.Forms.Button btnAdd; + internal System.Windows.Forms.Label Label7; + internal System.Windows.Forms.TextBox txtNarration; + internal System.Windows.Forms.TextBox txtAmount; + internal System.Windows.Forms.Label lblAmount; + internal System.Windows.Forms.TextBox txtCashier; + internal System.Windows.Forms.Label Label5; + internal System.Windows.Forms.TextBox txtVoid; + internal System.Windows.Forms.TextBox txtAmt; + internal System.Windows.Forms.Label Label4; + internal System.Windows.Forms.Label Label3; + internal System.Windows.Forms.Label Label2; + internal System.Windows.Forms.Label Label1; + internal System.Windows.Forms.DateTimePicker dtpTo; + internal System.Windows.Forms.DateTimePicker dtpFrom; + private System.Windows.Forms.DataGridView dgExpenses; + } +} \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/Sales/RecieveAdvanceForm.resx b/Tanshu.Accounts.PointOfSale/Sales/RecieveAdvanceForm.resx new file mode 100644 index 0000000..19dc0dd --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Sales/RecieveAdvanceForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/Sales/SaleAnalysisForm.cs b/Tanshu.Accounts.PointOfSale/Sales/SaleAnalysisForm.cs new file mode 100644 index 0000000..755c7f6 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Sales/SaleAnalysisForm.cs @@ -0,0 +1,98 @@ +using System; +using System.Collections.Generic; +using System.Windows.Forms; +using Tanshu.Accounts.BI; +using Tanshu.Accounts.Contracts; +using Tanshu.Accounts.Helpers; + +namespace Tanshu.Accounts.PointOfSale +{ + public partial class frmSaleAnalysisForm : Form + { + Guid? details = null; + List det; + private static readonly Tanshu.Logging.SqlLogger log = new Tanshu.Logging.SqlLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); + public frmSaleAnalysisForm() + { + InitializeComponent(); + log.Warn(string.Format("Sales Analysis by: {0}", CurrentUser.user.Name)); + } + + private void dtpStart_ValueChanged(object sender, EventArgs e) + { + ShowStatement(); + } + + private void ShowStatement() + { + DateTime startDate = Convert.ToDateTime(String.Format("{0:dd-MMM-yyyy} 00:00:00", dtpStart.Value)); + DateTime finishDate = Convert.ToDateTime(String.Format("{0:dd-MMM-yyyy} 23:59:59", dtpFinish.Value)); + + if (details.HasValue) + { + List list = new SalesAnalysisBI().GetSaleDetail(startDate, finishDate, details.Value); + dgvSale.AutoGenerateColumns = true; + dgvSale.DataSource = list; + dgvSale.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells; + dgvSale.Columns[2].DefaultCellStyle.Format = "#,##0.00;(#,##0.00);0"; + dgvSale.Columns[3].DefaultCellStyle.Format = "#,##0.00;(#,##0.00);0"; + } + else + { + det = new SalesAnalysisBI().GetSale(startDate, finishDate); + dgvSale.AutoGenerateColumns = true; + dgvSale.DataSource = det; + dgvSale.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells; + dgvSale.Columns[0].Visible = false; + dgvSale.Columns[2].DefaultCellStyle.Format = "#,##0.00;(#,##0.00);0"; + dgvSale.Columns[3].DefaultCellStyle.Format = "#,##0.00;(#,##0.00);0"; + } + + + decimal freeSale = 0, voids = 0, pending = 0, net = 0, tax = 0; + new SalesAnalysisBI().GetAdditionalInfo(ref freeSale, ref voids, ref pending, ref net, ref tax, startDate, finishDate); + + txtVoid.Text = String.Format("{0:#,##0.00;(#,##0.00);0}", voids); + txtPending.Text = String.Format("{0:#,##0.00;(#,##0.00);0}", pending); + txtNet.Text = String.Format("{0:#,##0.00;(#,##0.00);0}", net); + txtTax.Text = String.Format("{0:#,##0.00;(#,##0.00);0}", tax); + txtGross.Text = String.Format("{0:#,##0.00;(#,##0.00);0}", net + tax); + } + + private void dtpFinish_ValueChanged(object sender, EventArgs e) + { + ShowStatement(); + } + + private void Sale_Analysis_Form_Load(object sender, EventArgs e) + { + dtpStart.Value = DateTime.Today; + dtpFinish.Value = DateTime.Today; + ShowStatement(); + } + + private void dgvSale_CellDoubleClick(object sender, DataGridViewCellEventArgs e) + { + try + { + if (!details.HasValue) + details = ((SalesAnalysisBO)dgvSale.SelectedRows[0].DataBoundItem).TypeID; + else + details = null; + ShowStatement(); + } + catch (Exception ex) + { throw ex; } + } + + private void btnPrint_Click(object sender, EventArgs e) + { + if (det != null) + { + DateTime startDate = Convert.ToDateTime(String.Format("{0:dd-MMM-yyyy} 00:00:00", dtpStart.Value)); + DateTime finishDate = Convert.ToDateTime(String.Format("{0:dd-MMM-yyyy} 23:59:59", dtpFinish.Value)); + Accounts.Print.Thermal.PrintSale(det, startDate, finishDate); + } + } + } +} diff --git a/Tanshu.Accounts.PointOfSale/Sales/SaleAnalysisForm.designer.cs b/Tanshu.Accounts.PointOfSale/Sales/SaleAnalysisForm.designer.cs new file mode 100644 index 0000000..f987f2d --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Sales/SaleAnalysisForm.designer.cs @@ -0,0 +1,240 @@ +namespace Tanshu.Accounts.PointOfSale +{ + partial class frmSaleAnalysisForm + { + /// + /// 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.txtNet = new System.Windows.Forms.TextBox(); + this.txtTax = new System.Windows.Forms.TextBox(); + this.txtGross = new System.Windows.Forms.TextBox(); + this.txtPending = new System.Windows.Forms.TextBox(); + this.txtVoid = new System.Windows.Forms.TextBox(); + this.label5 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.dgvSale = new System.Windows.Forms.DataGridView(); + this.dtpFinish = new System.Windows.Forms.DateTimePicker(); + this.dtpStart = new System.Windows.Forms.DateTimePicker(); + this.label10 = new System.Windows.Forms.Label(); + this.btnPrint = new System.Windows.Forms.Button(); + ((System.ComponentModel.ISupportInitialize)(this.dgvSale)).BeginInit(); + this.SuspendLayout(); + // + // txtNet + // + this.txtNet.Location = new System.Drawing.Point(224, 487); + this.txtNet.Name = "txtNet"; + this.txtNet.ReadOnly = true; + this.txtNet.Size = new System.Drawing.Size(100, 20); + this.txtNet.TabIndex = 17; + // + // txtTax + // + this.txtTax.Location = new System.Drawing.Point(330, 487); + this.txtTax.Name = "txtTax"; + this.txtTax.ReadOnly = true; + this.txtTax.Size = new System.Drawing.Size(100, 20); + this.txtTax.TabIndex = 18; + // + // txtGross + // + this.txtGross.Location = new System.Drawing.Point(436, 487); + this.txtGross.Name = "txtGross"; + this.txtGross.ReadOnly = true; + this.txtGross.Size = new System.Drawing.Size(100, 20); + this.txtGross.TabIndex = 19; + // + // txtPending + // + this.txtPending.Location = new System.Drawing.Point(118, 487); + this.txtPending.Name = "txtPending"; + this.txtPending.ReadOnly = true; + this.txtPending.Size = new System.Drawing.Size(100, 20); + this.txtPending.TabIndex = 16; + // + // txtVoid + // + this.txtVoid.Location = new System.Drawing.Point(12, 487); + this.txtVoid.Name = "txtVoid"; + this.txtVoid.ReadOnly = true; + this.txtVoid.Size = new System.Drawing.Size(100, 20); + this.txtVoid.TabIndex = 15; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(115, 471); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(70, 13); + this.label5.TabIndex = 24; + this.label5.Text = "Pending Sale"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(12, 471); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(52, 13); + this.label4.TabIndex = 23; + this.label4.Text = "Void Sale"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(327, 471); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(25, 13); + this.label3.TabIndex = 26; + this.label3.Text = "Tax"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(433, 471); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(58, 13); + this.label2.TabIndex = 27; + this.label2.Text = "Gross Sale"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(221, 471); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(48, 13); + this.label1.TabIndex = 25; + this.label1.Text = "Net Sale"; + // + // dgvSale + // + this.dgvSale.AllowUserToAddRows = false; + this.dgvSale.AllowUserToDeleteRows = false; + this.dgvSale.AllowUserToResizeRows = false; + this.dgvSale.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dgvSale.Location = new System.Drawing.Point(12, 41); + this.dgvSale.MultiSelect = false; + this.dgvSale.Name = "dgvSale"; + this.dgvSale.ReadOnly = true; + this.dgvSale.RowHeadersVisible = false; + this.dgvSale.RowTemplate.Height = 19; + this.dgvSale.RowTemplate.ReadOnly = true; + this.dgvSale.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.dgvSale.Size = new System.Drawing.Size(524, 427); + this.dgvSale.TabIndex = 14; + this.dgvSale.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvSale_CellDoubleClick); + // + // dtpFinish + // + this.dtpFinish.CustomFormat = "dd-MMM-yyyy"; + this.dtpFinish.Format = System.Windows.Forms.DateTimePickerFormat.Custom; + this.dtpFinish.Location = new System.Drawing.Point(168, 12); + this.dtpFinish.Name = "dtpFinish"; + this.dtpFinish.Size = new System.Drawing.Size(90, 20); + this.dtpFinish.TabIndex = 21; + this.dtpFinish.ValueChanged += new System.EventHandler(this.dtpFinish_ValueChanged); + // + // dtpStart + // + this.dtpStart.CustomFormat = "dd-MMM-yyyy"; + this.dtpStart.Format = System.Windows.Forms.DateTimePickerFormat.Custom; + this.dtpStart.Location = new System.Drawing.Point(12, 12); + this.dtpStart.Name = "dtpStart"; + this.dtpStart.Size = new System.Drawing.Size(90, 20); + this.dtpStart.TabIndex = 20; + this.dtpStart.ValueChanged += new System.EventHandler(this.dtpStart_ValueChanged); + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Location = new System.Drawing.Point(108, 16); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(54, 13); + this.label10.TabIndex = 22; + this.label10.Text = "<- Date ->"; + // + // btnPrint + // + this.btnPrint.Location = new System.Drawing.Point(461, 12); + this.btnPrint.Name = "btnPrint"; + this.btnPrint.Size = new System.Drawing.Size(75, 23); + this.btnPrint.TabIndex = 28; + this.btnPrint.Text = "Print"; + this.btnPrint.UseVisualStyleBackColor = true; + this.btnPrint.Click += new System.EventHandler(this.btnPrint_Click); + // + // frmSaleAnalysisForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(548, 519); + this.Controls.Add(this.btnPrint); + this.Controls.Add(this.txtNet); + this.Controls.Add(this.txtTax); + this.Controls.Add(this.txtGross); + this.Controls.Add(this.txtPending); + this.Controls.Add(this.txtVoid); + this.Controls.Add(this.label5); + this.Controls.Add(this.label4); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Controls.Add(this.dgvSale); + this.Controls.Add(this.dtpFinish); + this.Controls.Add(this.dtpStart); + this.Controls.Add(this.label10); + this.MaximizeBox = false; + this.Name = "frmSaleAnalysisForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Sale Analysis Form"; + this.Load += new System.EventHandler(this.Sale_Analysis_Form_Load); + ((System.ComponentModel.ISupportInitialize)(this.dgvSale)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TextBox txtNet; + private System.Windows.Forms.TextBox txtTax; + private System.Windows.Forms.TextBox txtGross; + private System.Windows.Forms.TextBox txtPending; + private System.Windows.Forms.TextBox txtVoid; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.DataGridView dgvSale; + private System.Windows.Forms.DateTimePicker dtpFinish; + private System.Windows.Forms.DateTimePicker dtpStart; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Button btnPrint; + } +} \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/Sales/SaleAnalysisForm.resx b/Tanshu.Accounts.PointOfSale/Sales/SaleAnalysisForm.resx new file mode 100644 index 0000000..19dc0dd --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Sales/SaleAnalysisForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/Sales/SalesForm.Designer.cs b/Tanshu.Accounts.PointOfSale/Sales/SalesForm.Designer.cs new file mode 100644 index 0000000..fd4d90f --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Sales/SalesForm.Designer.cs @@ -0,0 +1,990 @@ +namespace Tanshu.Accounts.PointOfSale +{ + partial class SalesForm + { + /// + /// 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(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); + this.bindingSource = new System.Windows.Forms.BindingSource(this.components); + this.bsWaiter = new System.Windows.Forms.BindingSource(this.components); + this.bsPending = new System.Windows.Forms.BindingSource(this.components); + this.tmrPending = new System.Windows.Forms.Timer(this.components); + this.label7 = new System.Windows.Forms.Label(); + this.txtDiscount = new System.Windows.Forms.TextBox(); + this.Label12 = new System.Windows.Forms.Label(); + this.txtGrossAmount = new System.Windows.Forms.TextBox(); + this.txtAmount = new System.Windows.Forms.TextBox(); + this.label6 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.txtNarration = new System.Windows.Forms.TextBox(); + this.txtGrossTax = new System.Windows.Forms.TextBox(); + this.dgvProducts = new System.Windows.Forms.DataGridView(); + this.Display = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.printedDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.additionalDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.pnlBilling = new System.Windows.Forms.Panel(); + this.btnWaiter = new System.Windows.Forms.Button(); + this.txtCode = new System.Windows.Forms.TextBox(); + this.btnClear = new System.Windows.Forms.Button(); + this.btnMultiPrint = new System.Windows.Forms.Button(); + this.btnRate = new System.Windows.Forms.Button(); + this.btnPrintKot = new System.Windows.Forms.Button(); + this.btnPrintBill = new System.Windows.Forms.Button(); + this.btnVoid = new System.Windows.Forms.Button(); + this.btnDiscount = new System.Windows.Forms.Button(); + this.btnQuantity = new System.Windows.Forms.Button(); + this.txtTableID = new System.Windows.Forms.TextBox(); + this.label11 = new System.Windows.Forms.Label(); + this.label10 = new System.Windows.Forms.Label(); + this.txtUserID = new System.Windows.Forms.TextBox(); + this.label9 = new System.Windows.Forms.Label(); + this.label8 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.txtDate = new System.Windows.Forms.TextBox(); + this.txtLastEditDate = new System.Windows.Forms.TextBox(); + this.txtCreationDate = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.txtBillID = new System.Windows.Forms.TextBox(); + this.txtKotID = new System.Windows.Forms.TextBox(); + this.btnCustomer = new System.Windows.Forms.Button(); + this.pnlWaiting = new System.Windows.Forms.Panel(); + this.btnImportant = new System.Windows.Forms.Button(); + this.dgvPending = new System.Windows.Forms.DataGridView(); + this.selectDataGridViewCheckBoxColumn = new System.Windows.Forms.DataGridViewCheckBoxColumn(); + this.billNoDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.kotDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.TableID = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.amountDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.importantDataGridViewCheckBoxColumn = new System.Windows.Forms.DataGridViewCheckBoxColumn(); + this.alarmDataGridViewCheckBoxColumn = new System.Windows.Forms.DataGridViewCheckBoxColumn(); + this.bookingTimeDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.lastEditedDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.waiterDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.cashierDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.printedDataGridViewCheckBoxColumn = new System.Windows.Forms.DataGridViewCheckBoxColumn(); + this.alarmTimeDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.btnAlarm = new System.Windows.Forms.Button(); + this.chkRefresh = new System.Windows.Forms.CheckBox(); + this.btnRefresh = new System.Windows.Forms.Button(); + this.btnPaidCC = new System.Windows.Forms.Button(); + this.btnPaidCash = new System.Windows.Forms.Button(); + this.btnBillList = new System.Windows.Forms.Button(); + this.btnSelectBill = new System.Windows.Forms.Button(); + this.btnStartBill = new System.Windows.Forms.Button(); + this.tcPending = new System.Windows.Forms.TabControl(); + this.tpToday = new System.Windows.Forms.TabPage(); + this.tpWeek = new System.Windows.Forms.TabPage(); + this.tpAll = new System.Windows.Forms.TabPage(); + this.tpImportant = new System.Windows.Forms.TabPage(); + this.tpAlarm = new System.Windows.Forms.TabPage(); + this.lblUser = new System.Windows.Forms.Label(); + ((System.ComponentModel.ISupportInitialize)(this.bindingSource)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsWaiter)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsPending)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.dgvProducts)).BeginInit(); + this.pnlBilling.SuspendLayout(); + this.pnlWaiting.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dgvPending)).BeginInit(); + this.tcPending.SuspendLayout(); + this.SuspendLayout(); + // + // bindingSource + // + this.bindingSource.DataSource = typeof(Tanshu.Accounts.Contracts.SalesBillItemBO); + // + // bsWaiter + // + this.bsWaiter.DataSource = typeof(Tanshu.Accounts.Contracts.WaiterBO); + // + // bsPending + // + this.bsPending.DataSource = typeof(Tanshu.Accounts.Contracts.PendingBillsBO); + // + // tmrPending + // + this.tmrPending.Enabled = true; + this.tmrPending.Interval = 5000; + this.tmrPending.Tick += new System.EventHandler(this.tmrPending_Tick); + // + // label7 + // + this.label7.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(795, 517); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(49, 13); + this.label7.TabIndex = 112; + this.label7.Text = "Discount"; + this.label7.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // txtDiscount + // + this.txtDiscount.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.txtDiscount.Location = new System.Drawing.Point(850, 514); + this.txtDiscount.Name = "txtDiscount"; + this.txtDiscount.ReadOnly = true; + this.txtDiscount.Size = new System.Drawing.Size(120, 20); + this.txtDiscount.TabIndex = 113; + this.txtDiscount.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + // + // Label12 + // + this.Label12.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.Label12.AutoSize = true; + this.Label12.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.Label12.Location = new System.Drawing.Point(808, 569); + this.Label12.Name = "Label12"; + this.Label12.Size = new System.Drawing.Size(36, 13); + this.Label12.TabIndex = 116; + this.Label12.Text = "Total"; + this.Label12.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // txtGrossAmount + // + this.txtGrossAmount.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.txtGrossAmount.Location = new System.Drawing.Point(850, 540); + this.txtGrossAmount.Name = "txtGrossAmount"; + this.txtGrossAmount.ReadOnly = true; + this.txtGrossAmount.Size = new System.Drawing.Size(120, 20); + this.txtGrossAmount.TabIndex = 109; + this.txtGrossAmount.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + // + // txtAmount + // + this.txtAmount.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.txtAmount.BackColor = System.Drawing.Color.Black; + this.txtAmount.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.txtAmount.ForeColor = System.Drawing.Color.Transparent; + this.txtAmount.Location = new System.Drawing.Point(850, 566); + this.txtAmount.Name = "txtAmount"; + this.txtAmount.ReadOnly = true; + this.txtAmount.Size = new System.Drawing.Size(120, 22); + this.txtAmount.TabIndex = 107; + this.txtAmount.Text = "0.00"; + this.txtAmount.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + // + // label6 + // + this.label6.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(800, 543); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(46, 13); + this.label6.TabIndex = 108; + this.label6.Text = "Subtotal"; + this.label6.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // label5 + // + this.label5.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(808, 488); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(36, 13); + this.label5.TabIndex = 110; + this.label5.Text = "Taxes"; + this.label5.TextAlign = System.Drawing.ContentAlignment.TopRight; + // + // txtNarration + // + this.txtNarration.Location = new System.Drawing.Point(12, 482); + this.txtNarration.Multiline = true; + this.txtNarration.Name = "txtNarration"; + this.txtNarration.Size = new System.Drawing.Size(216, 106); + this.txtNarration.TabIndex = 4; + // + // txtGrossTax + // + this.txtGrossTax.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.txtGrossTax.Location = new System.Drawing.Point(850, 488); + this.txtGrossTax.Name = "txtGrossTax"; + this.txtGrossTax.ReadOnly = true; + this.txtGrossTax.Size = new System.Drawing.Size(120, 20); + this.txtGrossTax.TabIndex = 111; + this.txtGrossTax.TextAlign = System.Windows.Forms.HorizontalAlignment.Right; + // + // dgvProducts + // + this.dgvProducts.AllowUserToAddRows = false; + this.dgvProducts.AllowUserToDeleteRows = false; + this.dgvProducts.AllowUserToOrderColumns = true; + this.dgvProducts.AllowUserToResizeRows = false; + this.dgvProducts.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.dgvProducts.AutoGenerateColumns = false; + this.dgvProducts.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.DisplayedCellsExceptHeader; + this.dgvProducts.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dgvProducts.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.Display, + this.printedDataGridViewTextBoxColumn, + this.additionalDataGridViewTextBoxColumn}); + this.dgvProducts.DataSource = this.bindingSource; + this.dgvProducts.EditMode = System.Windows.Forms.DataGridViewEditMode.EditProgrammatically; + this.dgvProducts.Location = new System.Drawing.Point(12, 90); + this.dgvProducts.MultiSelect = false; + this.dgvProducts.Name = "dgvProducts"; + this.dgvProducts.RowHeadersVisible = false; + this.dgvProducts.RowTemplate.Height = 19; + this.dgvProducts.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.dgvProducts.Size = new System.Drawing.Size(471, 386); + this.dgvProducts.TabIndex = 0; + this.dgvProducts.VirtualMode = true; + this.dgvProducts.CellFormatting += new System.Windows.Forms.DataGridViewCellFormattingEventHandler(this.dgvProducts_CellFormatting); + // + // Display + // + this.Display.DataPropertyName = "Display"; + this.Display.HeaderText = "Display"; + this.Display.Name = "Display"; + this.Display.ReadOnly = true; + this.Display.Width = 5; + // + // printedDataGridViewTextBoxColumn + // + this.printedDataGridViewTextBoxColumn.DataPropertyName = "Printed"; + dataGridViewCellStyle1.Format = "N2"; + this.printedDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle1; + this.printedDataGridViewTextBoxColumn.HeaderText = "Printed"; + this.printedDataGridViewTextBoxColumn.Name = "printedDataGridViewTextBoxColumn"; + this.printedDataGridViewTextBoxColumn.ReadOnly = true; + this.printedDataGridViewTextBoxColumn.Width = 5; + // + // additionalDataGridViewTextBoxColumn + // + this.additionalDataGridViewTextBoxColumn.DataPropertyName = "Additional"; + dataGridViewCellStyle2.Format = "N2"; + dataGridViewCellStyle2.NullValue = null; + this.additionalDataGridViewTextBoxColumn.DefaultCellStyle = dataGridViewCellStyle2; + this.additionalDataGridViewTextBoxColumn.HeaderText = "Additional"; + this.additionalDataGridViewTextBoxColumn.Name = "additionalDataGridViewTextBoxColumn"; + this.additionalDataGridViewTextBoxColumn.ReadOnly = true; + this.additionalDataGridViewTextBoxColumn.Width = 5; + // + // pnlBilling + // + this.pnlBilling.AutoSize = true; + this.pnlBilling.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.pnlBilling.Controls.Add(this.btnWaiter); + this.pnlBilling.Controls.Add(this.txtCode); + this.pnlBilling.Controls.Add(this.btnClear); + this.pnlBilling.Controls.Add(this.btnMultiPrint); + this.pnlBilling.Controls.Add(this.btnRate); + this.pnlBilling.Controls.Add(this.btnPrintKot); + this.pnlBilling.Controls.Add(this.btnPrintBill); + this.pnlBilling.Controls.Add(this.btnVoid); + this.pnlBilling.Controls.Add(this.btnDiscount); + this.pnlBilling.Controls.Add(this.btnQuantity); + this.pnlBilling.Controls.Add(this.txtTableID); + this.pnlBilling.Controls.Add(this.label11); + this.pnlBilling.Controls.Add(this.label10); + this.pnlBilling.Controls.Add(this.txtUserID); + this.pnlBilling.Controls.Add(this.label9); + this.pnlBilling.Controls.Add(this.label8); + this.pnlBilling.Controls.Add(this.label4); + this.pnlBilling.Controls.Add(this.txtDate); + this.pnlBilling.Controls.Add(this.txtLastEditDate); + this.pnlBilling.Controls.Add(this.txtCreationDate); + this.pnlBilling.Controls.Add(this.label3); + this.pnlBilling.Controls.Add(this.label2); + this.pnlBilling.Controls.Add(this.txtBillID); + this.pnlBilling.Controls.Add(this.txtKotID); + this.pnlBilling.Controls.Add(this.btnCustomer); + this.pnlBilling.Controls.Add(this.dgvProducts); + this.pnlBilling.Controls.Add(this.txtGrossTax); + this.pnlBilling.Controls.Add(this.txtNarration); + this.pnlBilling.Controls.Add(this.label5); + this.pnlBilling.Controls.Add(this.label6); + this.pnlBilling.Controls.Add(this.txtAmount); + this.pnlBilling.Controls.Add(this.txtGrossAmount); + this.pnlBilling.Controls.Add(this.Label12); + this.pnlBilling.Controls.Add(this.txtDiscount); + this.pnlBilling.Controls.Add(this.label7); + this.pnlBilling.Dock = System.Windows.Forms.DockStyle.Fill; + this.pnlBilling.Location = new System.Drawing.Point(0, 0); + this.pnlBilling.Name = "pnlBilling"; + this.pnlBilling.Size = new System.Drawing.Size(982, 662); + this.pnlBilling.TabIndex = 121; + // + // btnWaiter + // + this.btnWaiter.Location = new System.Drawing.Point(341, 482); + this.btnWaiter.Name = "btnWaiter"; + this.btnWaiter.Size = new System.Drawing.Size(101, 106); + this.btnWaiter.TabIndex = 150; + this.btnWaiter.Text = "Select Waiter - F5"; + this.btnWaiter.UseVisualStyleBackColor = true; + this.btnWaiter.Click += new System.EventHandler(this.btnWaiter_Click); + // + // txtCode + // + this.txtCode.Location = new System.Drawing.Point(489, 54); + this.txtCode.Name = "txtCode"; + this.txtCode.Size = new System.Drawing.Size(481, 20); + this.txtCode.TabIndex = 149; + // + // btnClear + // + this.btnClear.Location = new System.Drawing.Point(234, 482); + this.btnClear.Name = "btnClear"; + this.btnClear.Size = new System.Drawing.Size(101, 106); + this.btnClear.TabIndex = 148; + this.btnClear.Text = "Clear - Esc"; + this.btnClear.UseVisualStyleBackColor = true; + this.btnClear.Click += new System.EventHandler(this.btnClear_Click); + // + // btnMultiPrint + // + this.btnMultiPrint.Location = new System.Drawing.Point(773, 485); + this.btnMultiPrint.Name = "btnMultiPrint"; + this.btnMultiPrint.Size = new System.Drawing.Size(21, 106); + this.btnMultiPrint.TabIndex = 147; + this.btnMultiPrint.Text = "Multi Print"; + this.btnMultiPrint.UseVisualStyleBackColor = true; + this.btnMultiPrint.Click += new System.EventHandler(this.btnMultiPrint_Click); + // + // btnRate + // + this.btnRate.Location = new System.Drawing.Point(663, 566); + this.btnRate.Name = "btnRate"; + this.btnRate.Size = new System.Drawing.Size(104, 23); + this.btnRate.TabIndex = 146; + this.btnRate.Text = "&Rate"; + this.btnRate.UseVisualStyleBackColor = true; + this.btnRate.Click += new System.EventHandler(this.btnRate_Click); + // + // btnPrintKot + // + this.btnPrintKot.Location = new System.Drawing.Point(555, 482); + this.btnPrintKot.Name = "btnPrintKot"; + this.btnPrintKot.Size = new System.Drawing.Size(102, 106); + this.btnPrintKot.TabIndex = 145; + this.btnPrintKot.Text = "Print KOT - F12"; + this.btnPrintKot.UseVisualStyleBackColor = true; + this.btnPrintKot.Click += new System.EventHandler(this.btnPrintKot_Click); + // + // btnPrintBill + // + this.btnPrintBill.Location = new System.Drawing.Point(448, 482); + this.btnPrintBill.Name = "btnPrintBill"; + this.btnPrintBill.Size = new System.Drawing.Size(101, 106); + this.btnPrintBill.TabIndex = 144; + this.btnPrintBill.Text = "Print Bill - F11"; + this.btnPrintBill.UseVisualStyleBackColor = true; + this.btnPrintBill.Click += new System.EventHandler(this.btnPrintBill_Click); + // + // btnVoid + // + this.btnVoid.Location = new System.Drawing.Point(663, 485); + this.btnVoid.Name = "btnVoid"; + this.btnVoid.Size = new System.Drawing.Size(104, 23); + this.btnVoid.TabIndex = 143; + this.btnVoid.Text = "Cancel Current Bill"; + this.btnVoid.UseVisualStyleBackColor = true; + this.btnVoid.Click += new System.EventHandler(this.btnVoid_Click); + // + // btnDiscount + // + this.btnDiscount.Location = new System.Drawing.Point(663, 514); + this.btnDiscount.Name = "btnDiscount"; + this.btnDiscount.Size = new System.Drawing.Size(104, 23); + this.btnDiscount.TabIndex = 142; + this.btnDiscount.Text = "Discount - F3"; + this.btnDiscount.UseVisualStyleBackColor = true; + this.btnDiscount.Click += new System.EventHandler(this.btnDiscount_Click); + // + // btnQuantity + // + this.btnQuantity.Location = new System.Drawing.Point(663, 537); + this.btnQuantity.Name = "btnQuantity"; + this.btnQuantity.Size = new System.Drawing.Size(104, 23); + this.btnQuantity.TabIndex = 141; + this.btnQuantity.Text = "Quantity - F2"; + this.btnQuantity.UseVisualStyleBackColor = true; + this.btnQuantity.Click += new System.EventHandler(this.btnQuantity_Click); + // + // txtTableID + // + this.txtTableID.Location = new System.Drawing.Point(390, 28); + this.txtTableID.Name = "txtTableID"; + this.txtTableID.ReadOnly = true; + this.txtTableID.Size = new System.Drawing.Size(93, 20); + this.txtTableID.TabIndex = 140; + // + // label11 + // + this.label11.AutoSize = true; + this.label11.Location = new System.Drawing.Point(387, 12); + this.label11.Name = "label11"; + this.label11.Size = new System.Drawing.Size(34, 13); + this.label11.TabIndex = 139; + this.label11.Text = "Table"; + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Location = new System.Drawing.Point(804, 12); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(73, 13); + this.label10.TabIndex = 138; + this.label10.Text = "Last Edit User"; + // + // txtUserID + // + this.txtUserID.Location = new System.Drawing.Point(807, 28); + this.txtUserID.Name = "txtUserID"; + this.txtUserID.ReadOnly = true; + this.txtUserID.Size = new System.Drawing.Size(163, 20); + this.txtUserID.TabIndex = 137; + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Location = new System.Drawing.Point(259, 12); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(72, 13); + this.label9.TabIndex = 136; + this.label9.Text = "Booking Time"; + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(486, 12); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(84, 13); + this.label8.TabIndex = 135; + this.label8.Text = "Bill Printing Time"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(645, 12); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(74, 13); + this.label4.TabIndex = 134; + this.label4.Text = "Last Edit Time"; + // + // txtDate + // + this.txtDate.Location = new System.Drawing.Point(489, 28); + this.txtDate.Name = "txtDate"; + this.txtDate.ReadOnly = true; + this.txtDate.Size = new System.Drawing.Size(153, 20); + this.txtDate.TabIndex = 133; + // + // txtLastEditDate + // + this.txtLastEditDate.Location = new System.Drawing.Point(648, 28); + this.txtLastEditDate.Name = "txtLastEditDate"; + this.txtLastEditDate.ReadOnly = true; + this.txtLastEditDate.Size = new System.Drawing.Size(153, 20); + this.txtLastEditDate.TabIndex = 132; + // + // txtCreationDate + // + this.txtCreationDate.Location = new System.Drawing.Point(262, 28); + this.txtCreationDate.Name = "txtCreationDate"; + this.txtCreationDate.ReadOnly = true; + this.txtCreationDate.Size = new System.Drawing.Size(122, 20); + this.txtCreationDate.TabIndex = 131; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(124, 12); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(69, 13); + this.label3.TabIndex = 130; + this.label3.Text = "KOT Number"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(9, 12); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(60, 13); + this.label2.TabIndex = 129; + this.label2.Text = "Bill Number"; + // + // txtBillID + // + this.txtBillID.Location = new System.Drawing.Point(12, 28); + this.txtBillID.Name = "txtBillID"; + this.txtBillID.ReadOnly = true; + this.txtBillID.Size = new System.Drawing.Size(109, 20); + this.txtBillID.TabIndex = 128; + // + // txtKotID + // + this.txtKotID.Location = new System.Drawing.Point(127, 28); + this.txtKotID.Name = "txtKotID"; + this.txtKotID.ReadOnly = true; + this.txtKotID.Size = new System.Drawing.Size(129, 20); + this.txtKotID.TabIndex = 127; + // + // btnCustomer + // + this.btnCustomer.Font = new System.Drawing.Font("Microsoft Sans Serif", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnCustomer.ForeColor = System.Drawing.Color.Red; + this.btnCustomer.Location = new System.Drawing.Point(12, 54); + this.btnCustomer.Name = "btnCustomer"; + this.btnCustomer.Size = new System.Drawing.Size(471, 34); + this.btnCustomer.TabIndex = 126; + this.btnCustomer.UseVisualStyleBackColor = true; + this.btnCustomer.Click += new System.EventHandler(this.btnCustomer_Click); + // + // pnlWaiting + // + this.pnlWaiting.AutoSize = true; + this.pnlWaiting.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.pnlWaiting.Controls.Add(this.btnImportant); + this.pnlWaiting.Controls.Add(this.dgvPending); + this.pnlWaiting.Controls.Add(this.btnAlarm); + this.pnlWaiting.Controls.Add(this.chkRefresh); + this.pnlWaiting.Controls.Add(this.btnRefresh); + this.pnlWaiting.Controls.Add(this.btnPaidCC); + this.pnlWaiting.Controls.Add(this.btnPaidCash); + this.pnlWaiting.Controls.Add(this.btnBillList); + this.pnlWaiting.Controls.Add(this.btnSelectBill); + this.pnlWaiting.Controls.Add(this.btnStartBill); + this.pnlWaiting.Controls.Add(this.tcPending); + this.pnlWaiting.Controls.Add(this.lblUser); + this.pnlWaiting.Dock = System.Windows.Forms.DockStyle.Fill; + this.pnlWaiting.Location = new System.Drawing.Point(0, 0); + this.pnlWaiting.Name = "pnlWaiting"; + this.pnlWaiting.Size = new System.Drawing.Size(982, 662); + this.pnlWaiting.TabIndex = 121; + this.pnlWaiting.Paint += new System.Windows.Forms.PaintEventHandler(this.pnlWaiting_Paint); + // + // btnImportant + // + this.btnImportant.Location = new System.Drawing.Point(850, 459); + this.btnImportant.Name = "btnImportant"; + this.btnImportant.Size = new System.Drawing.Size(120, 62); + this.btnImportant.TabIndex = 137; + this.btnImportant.Text = "Mark / UnMark Important"; + this.btnImportant.UseVisualStyleBackColor = true; + this.btnImportant.Click += new System.EventHandler(this.btnImportant_Click); + // + // dgvPending + // + this.dgvPending.AllowUserToAddRows = false; + this.dgvPending.AllowUserToDeleteRows = false; + this.dgvPending.AllowUserToOrderColumns = true; + this.dgvPending.AllowUserToResizeRows = false; + this.dgvPending.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.dgvPending.AutoGenerateColumns = false; + this.dgvPending.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.DisplayedCells; + this.dgvPending.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dgvPending.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.selectDataGridViewCheckBoxColumn, + this.billNoDataGridViewTextBoxColumn, + this.kotDataGridViewTextBoxColumn, + this.TableID, + this.amountDataGridViewTextBoxColumn, + this.importantDataGridViewCheckBoxColumn, + this.alarmDataGridViewCheckBoxColumn, + this.bookingTimeDataGridViewTextBoxColumn, + this.lastEditedDataGridViewTextBoxColumn, + this.waiterDataGridViewTextBoxColumn, + this.cashierDataGridViewTextBoxColumn, + this.printedDataGridViewCheckBoxColumn, + this.alarmTimeDataGridViewTextBoxColumn}); + this.dgvPending.DataSource = this.bsPending; + this.dgvPending.Location = new System.Drawing.Point(12, 40); + this.dgvPending.MultiSelect = false; + this.dgvPending.Name = "dgvPending"; + this.dgvPending.RowHeadersVisible = false; + this.dgvPending.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.dgvPending.Size = new System.Drawing.Size(696, 487); + this.dgvPending.TabIndex = 0; + this.dgvPending.VirtualMode = true; + this.dgvPending.CellDoubleClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvPending_CellDoubleClick); + this.dgvPending.CellValueNeeded += new System.Windows.Forms.DataGridViewCellValueEventHandler(this.dgvPending_CellValueNeeded); + this.dgvPending.CellFormatting += new System.Windows.Forms.DataGridViewCellFormattingEventHandler(this.dgvPending_CellFormatting); + this.dgvPending.CellValuePushed += new System.Windows.Forms.DataGridViewCellValueEventHandler(this.dgvPending_CellValuePushed); + // + // selectDataGridViewCheckBoxColumn + // + this.selectDataGridViewCheckBoxColumn.HeaderText = "Select"; + this.selectDataGridViewCheckBoxColumn.Name = "selectDataGridViewCheckBoxColumn"; + this.selectDataGridViewCheckBoxColumn.Width = 43; + // + // billNoDataGridViewTextBoxColumn + // + this.billNoDataGridViewTextBoxColumn.DataPropertyName = "BillNo"; + this.billNoDataGridViewTextBoxColumn.HeaderText = "BillNo"; + this.billNoDataGridViewTextBoxColumn.Name = "billNoDataGridViewTextBoxColumn"; + this.billNoDataGridViewTextBoxColumn.Width = 59; + // + // kotDataGridViewTextBoxColumn + // + this.kotDataGridViewTextBoxColumn.DataPropertyName = "Kot"; + this.kotDataGridViewTextBoxColumn.HeaderText = "Kot"; + this.kotDataGridViewTextBoxColumn.Name = "kotDataGridViewTextBoxColumn"; + this.kotDataGridViewTextBoxColumn.Width = 48; + // + // TableID + // + this.TableID.DataPropertyName = "TableID"; + this.TableID.HeaderText = "TableID"; + this.TableID.Name = "TableID"; + this.TableID.Width = 70; + // + // amountDataGridViewTextBoxColumn + // + this.amountDataGridViewTextBoxColumn.DataPropertyName = "Amount"; + this.amountDataGridViewTextBoxColumn.HeaderText = "Amount"; + this.amountDataGridViewTextBoxColumn.Name = "amountDataGridViewTextBoxColumn"; + this.amountDataGridViewTextBoxColumn.Width = 68; + // + // importantDataGridViewCheckBoxColumn + // + this.importantDataGridViewCheckBoxColumn.DataPropertyName = "Important"; + this.importantDataGridViewCheckBoxColumn.HeaderText = "Important"; + this.importantDataGridViewCheckBoxColumn.Name = "importantDataGridViewCheckBoxColumn"; + this.importantDataGridViewCheckBoxColumn.Width = 57; + // + // alarmDataGridViewCheckBoxColumn + // + this.alarmDataGridViewCheckBoxColumn.DataPropertyName = "Alarm"; + this.alarmDataGridViewCheckBoxColumn.HeaderText = "Alarm"; + this.alarmDataGridViewCheckBoxColumn.Name = "alarmDataGridViewCheckBoxColumn"; + this.alarmDataGridViewCheckBoxColumn.Width = 39; + // + // bookingTimeDataGridViewTextBoxColumn + // + this.bookingTimeDataGridViewTextBoxColumn.DataPropertyName = "BookingTime"; + this.bookingTimeDataGridViewTextBoxColumn.HeaderText = "BookingTime"; + this.bookingTimeDataGridViewTextBoxColumn.Name = "bookingTimeDataGridViewTextBoxColumn"; + this.bookingTimeDataGridViewTextBoxColumn.Width = 94; + // + // lastEditedDataGridViewTextBoxColumn + // + this.lastEditedDataGridViewTextBoxColumn.DataPropertyName = "LastEdited"; + this.lastEditedDataGridViewTextBoxColumn.HeaderText = "LastEdited"; + this.lastEditedDataGridViewTextBoxColumn.Name = "lastEditedDataGridViewTextBoxColumn"; + this.lastEditedDataGridViewTextBoxColumn.Width = 82; + // + // waiterDataGridViewTextBoxColumn + // + this.waiterDataGridViewTextBoxColumn.DataPropertyName = "Waiter"; + this.waiterDataGridViewTextBoxColumn.HeaderText = "Waiter"; + this.waiterDataGridViewTextBoxColumn.Name = "waiterDataGridViewTextBoxColumn"; + this.waiterDataGridViewTextBoxColumn.Width = 63; + // + // cashierDataGridViewTextBoxColumn + // + this.cashierDataGridViewTextBoxColumn.DataPropertyName = "Cashier"; + this.cashierDataGridViewTextBoxColumn.HeaderText = "Cashier"; + this.cashierDataGridViewTextBoxColumn.Name = "cashierDataGridViewTextBoxColumn"; + this.cashierDataGridViewTextBoxColumn.Width = 67; + // + // printedDataGridViewCheckBoxColumn + // + this.printedDataGridViewCheckBoxColumn.DataPropertyName = "Printed"; + this.printedDataGridViewCheckBoxColumn.HeaderText = "Printed"; + this.printedDataGridViewCheckBoxColumn.Name = "printedDataGridViewCheckBoxColumn"; + this.printedDataGridViewCheckBoxColumn.Width = 46; + // + // alarmTimeDataGridViewTextBoxColumn + // + this.alarmTimeDataGridViewTextBoxColumn.DataPropertyName = "AlarmTime"; + this.alarmTimeDataGridViewTextBoxColumn.HeaderText = "AlarmTime"; + this.alarmTimeDataGridViewTextBoxColumn.Name = "alarmTimeDataGridViewTextBoxColumn"; + this.alarmTimeDataGridViewTextBoxColumn.Width = 81; + // + // btnAlarm + // + this.btnAlarm.Location = new System.Drawing.Point(850, 393); + this.btnAlarm.Name = "btnAlarm"; + this.btnAlarm.Size = new System.Drawing.Size(120, 64); + this.btnAlarm.TabIndex = 136; + this.btnAlarm.Text = "Alarm"; + this.btnAlarm.UseVisualStyleBackColor = true; + this.btnAlarm.Click += new System.EventHandler(this.btnAlarm_Click); + // + // chkRefresh + // + this.chkRefresh.AutoSize = true; + this.chkRefresh.Checked = true; + this.chkRefresh.CheckState = System.Windows.Forms.CheckState.Checked; + this.chkRefresh.Location = new System.Drawing.Point(714, 40); + this.chkRefresh.Name = "chkRefresh"; + this.chkRefresh.Size = new System.Drawing.Size(121, 17); + this.chkRefresh.TabIndex = 134; + this.chkRefresh.Text = "Keep refreshing Bills"; + this.chkRefresh.UseVisualStyleBackColor = true; + // + // btnRefresh + // + this.btnRefresh.Location = new System.Drawing.Point(9, 527); + this.btnRefresh.Name = "btnRefresh"; + this.btnRefresh.Size = new System.Drawing.Size(129, 117); + this.btnRefresh.TabIndex = 133; + this.btnRefresh.Text = "Refresh - F5"; + this.btnRefresh.UseVisualStyleBackColor = true; + this.btnRefresh.Click += new System.EventHandler(this.btnRefresh_Click); + // + // btnPaidCC + // + this.btnPaidCC.Location = new System.Drawing.Point(850, 527); + this.btnPaidCC.Name = "btnPaidCC"; + this.btnPaidCC.Size = new System.Drawing.Size(120, 117); + this.btnPaidCC.TabIndex = 6; + this.btnPaidCC.Text = "Paid By CC"; + this.btnPaidCC.UseVisualStyleBackColor = true; + this.btnPaidCC.Click += new System.EventHandler(this.btnPaidCC_Click); + // + // btnPaidCash + // + this.btnPaidCash.Location = new System.Drawing.Point(714, 527); + this.btnPaidCash.Name = "btnPaidCash"; + this.btnPaidCash.Size = new System.Drawing.Size(130, 117); + this.btnPaidCash.TabIndex = 5; + this.btnPaidCash.Text = "Paid"; + this.btnPaidCash.UseVisualStyleBackColor = true; + this.btnPaidCash.Click += new System.EventHandler(this.btnPaidCash_Click); + // + // btnBillList + // + this.btnBillList.Location = new System.Drawing.Point(714, 393); + this.btnBillList.Name = "btnBillList"; + this.btnBillList.Size = new System.Drawing.Size(130, 128); + this.btnBillList.TabIndex = 4; + this.btnBillList.Text = "List Of Bills to Cancel"; + this.btnBillList.UseVisualStyleBackColor = true; + this.btnBillList.Click += new System.EventHandler(this.btnBillList_Click); + // + // btnSelectBill + // + this.btnSelectBill.Location = new System.Drawing.Point(714, 239); + this.btnSelectBill.Name = "btnSelectBill"; + this.btnSelectBill.Size = new System.Drawing.Size(256, 148); + this.btnSelectBill.TabIndex = 3; + this.btnSelectBill.Text = "Select Bill"; + this.btnSelectBill.UseVisualStyleBackColor = true; + this.btnSelectBill.Click += new System.EventHandler(this.btnSelectBill_Click); + // + // btnStartBill + // + this.btnStartBill.Location = new System.Drawing.Point(714, 63); + this.btnStartBill.Name = "btnStartBill"; + this.btnStartBill.Size = new System.Drawing.Size(256, 170); + this.btnStartBill.TabIndex = 2; + this.btnStartBill.Text = "New Bill - F6"; + this.btnStartBill.UseVisualStyleBackColor = true; + this.btnStartBill.Click += new System.EventHandler(this.btnStartBill_Click); + // + // tcPending + // + this.tcPending.Controls.Add(this.tpToday); + this.tcPending.Controls.Add(this.tpWeek); + this.tcPending.Controls.Add(this.tpAll); + this.tcPending.Controls.Add(this.tpImportant); + this.tcPending.Controls.Add(this.tpAlarm); + this.tcPending.Location = new System.Drawing.Point(192, 12); + this.tcPending.Name = "tcPending"; + this.tcPending.SelectedIndex = 0; + this.tcPending.Size = new System.Drawing.Size(271, 20); + this.tcPending.TabIndex = 1; + this.tcPending.SelectedIndexChanged += new System.EventHandler(this.tcPending_SelectedIndexChanged); + // + // tpToday + // + this.tpToday.Location = new System.Drawing.Point(4, 22); + this.tpToday.Name = "tpToday"; + this.tpToday.Padding = new System.Windows.Forms.Padding(3); + this.tpToday.Size = new System.Drawing.Size(263, 0); + this.tpToday.TabIndex = 1; + this.tpToday.Text = "Today"; + this.tpToday.UseVisualStyleBackColor = true; + // + // tpWeek + // + this.tpWeek.Location = new System.Drawing.Point(4, 22); + this.tpWeek.Name = "tpWeek"; + this.tpWeek.Padding = new System.Windows.Forms.Padding(3); + this.tpWeek.Size = new System.Drawing.Size(263, 0); + this.tpWeek.TabIndex = 2; + this.tpWeek.Text = "Week"; + this.tpWeek.UseVisualStyleBackColor = true; + // + // tpAll + // + this.tpAll.Location = new System.Drawing.Point(4, 22); + this.tpAll.Name = "tpAll"; + this.tpAll.Padding = new System.Windows.Forms.Padding(3); + this.tpAll.Size = new System.Drawing.Size(263, 0); + this.tpAll.TabIndex = 3; + this.tpAll.Text = "All"; + this.tpAll.UseVisualStyleBackColor = true; + // + // tpImportant + // + this.tpImportant.Location = new System.Drawing.Point(4, 22); + this.tpImportant.Name = "tpImportant"; + this.tpImportant.Padding = new System.Windows.Forms.Padding(3); + this.tpImportant.Size = new System.Drawing.Size(263, 0); + this.tpImportant.TabIndex = 4; + this.tpImportant.Text = "Important"; + this.tpImportant.UseVisualStyleBackColor = true; + // + // tpAlarm + // + this.tpAlarm.Location = new System.Drawing.Point(4, 22); + this.tpAlarm.Name = "tpAlarm"; + this.tpAlarm.Padding = new System.Windows.Forms.Padding(3); + this.tpAlarm.Size = new System.Drawing.Size(263, 0); + this.tpAlarm.TabIndex = 5; + this.tpAlarm.Text = "Alarms"; + this.tpAlarm.UseVisualStyleBackColor = true; + // + // lblUser + // + this.lblUser.Font = new System.Drawing.Font("Microsoft Sans Serif", 48F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.lblUser.ForeColor = System.Drawing.Color.Red; + this.lblUser.Location = new System.Drawing.Point(144, 530); + this.lblUser.Name = "lblUser"; + this.lblUser.Size = new System.Drawing.Size(564, 114); + this.lblUser.TabIndex = 135; + this.lblUser.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; + // + // SalesForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(982, 662); + this.Controls.Add(this.pnlWaiting); + this.Controls.Add(this.pnlBilling); + this.KeyPreview = true; + 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.Load += new System.EventHandler(this.SalesForm_Load); + this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.SalesForm_KeyDown); + ((System.ComponentModel.ISupportInitialize)(this.bindingSource)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsWaiter)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsPending)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.dgvProducts)).EndInit(); + this.pnlBilling.ResumeLayout(false); + this.pnlBilling.PerformLayout(); + this.pnlWaiting.ResumeLayout(false); + this.pnlWaiting.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.dgvPending)).EndInit(); + this.tcPending.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.BindingSource bindingSource; + private System.Windows.Forms.BindingSource bsWaiter; + private System.Windows.Forms.BindingSource bsPending; + private System.Windows.Forms.Timer tmrPending; + internal System.Windows.Forms.Label label7; + internal System.Windows.Forms.TextBox txtDiscount; + internal System.Windows.Forms.Label Label12; + internal System.Windows.Forms.TextBox txtGrossAmount; + internal System.Windows.Forms.TextBox txtAmount; + internal System.Windows.Forms.Label label6; + internal System.Windows.Forms.Label label5; + private System.Windows.Forms.TextBox txtNarration; + internal System.Windows.Forms.TextBox txtGrossTax; + private System.Windows.Forms.DataGridView dgvProducts; + private System.Windows.Forms.Panel pnlBilling; + private System.Windows.Forms.Panel pnlWaiting; + private System.Windows.Forms.Button btnRefresh; + private System.Windows.Forms.Button btnPaidCC; + private System.Windows.Forms.Button btnPaidCash; + private System.Windows.Forms.Button btnBillList; + private System.Windows.Forms.Button btnSelectBill; + private System.Windows.Forms.Button btnStartBill; + private System.Windows.Forms.TabControl tcPending; + private System.Windows.Forms.TabPage tpToday; + private System.Windows.Forms.TabPage tpWeek; + private System.Windows.Forms.TabPage tpAll; + private System.Windows.Forms.TabPage tpImportant; + private System.Windows.Forms.TabPage tpAlarm; + private System.Windows.Forms.DataGridView dgvPending; + private System.Windows.Forms.Button btnCustomer; + private System.Windows.Forms.TextBox txtBillID; + private System.Windows.Forms.TextBox txtKotID; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.TextBox txtDate; + private System.Windows.Forms.TextBox txtLastEditDate; + private System.Windows.Forms.TextBox txtCreationDate; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.TextBox txtUserID; + private System.Windows.Forms.TextBox txtTableID; + private System.Windows.Forms.Label label11; + private System.Windows.Forms.Button btnDiscount; + private System.Windows.Forms.Button btnQuantity; + private System.Windows.Forms.CheckBox chkRefresh; + private System.Windows.Forms.Button btnPrintKot; + private System.Windows.Forms.Button btnPrintBill; + private System.Windows.Forms.Button btnVoid; + private System.Windows.Forms.Button btnMultiPrint; + private System.Windows.Forms.Button btnRate; + private System.Windows.Forms.Button btnClear; + private System.Windows.Forms.Label lblUser; + private System.Windows.Forms.Button btnAlarm; + private System.Windows.Forms.DataGridViewCheckBoxColumn selectDataGridViewCheckBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn billNoDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn kotDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn TableID; + private System.Windows.Forms.DataGridViewTextBoxColumn amountDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewCheckBoxColumn importantDataGridViewCheckBoxColumn; + private System.Windows.Forms.DataGridViewCheckBoxColumn alarmDataGridViewCheckBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn bookingTimeDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn lastEditedDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn waiterDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn cashierDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewCheckBoxColumn printedDataGridViewCheckBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn alarmTimeDataGridViewTextBoxColumn; + private System.Windows.Forms.Button btnImportant; + private System.Windows.Forms.TextBox txtCode; + private System.Windows.Forms.DataGridViewTextBoxColumn Display; + private System.Windows.Forms.DataGridViewTextBoxColumn printedDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn additionalDataGridViewTextBoxColumn; + private System.Windows.Forms.Button btnWaiter; + } +} + diff --git a/Tanshu.Accounts.PointOfSale/Sales/SalesForm.cs b/Tanshu.Accounts.PointOfSale/Sales/SalesForm.cs new file mode 100644 index 0000000..0bd568e --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Sales/SalesForm.cs @@ -0,0 +1,934 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Globalization; +using System.Linq; +using System.Threading; +using System.Windows.Forms; +using Tanshu.Accounts.BI; +using Tanshu.Accounts.Contracts; +using Tanshu.Accounts.Helpers; +using Tanshu.Common; + + +namespace Tanshu.Accounts.PointOfSale +{ + public partial class SalesForm : Form + { + #region Waiting + private List selectedBills = new List(); + private List pendingBills = new List(); + private PendingType pendingList = PendingType.Today; + #endregion + private SaleFormState formState = SaleFormState.Waiting; + #region Billing + private Dictionary bill = new Dictionary(); + private CustomerBO customer = new CustomerBI().GetCustomer(new Guid("F016CBAD-206C-42C0-BB1D-6006CE57BAB5")); + #endregion + private SaleVoucherBO billInfo; + object lockObject = new object(); + Guid? newBillID; + + public SalesForm() + { + InitializeComponent(); + btnCustomer.Text = customer.Name; + lblUser.Text = CurrentUser.user.Name; + } + + public SalesForm(Guid voucherID) + : this() + { + newBillID = voucherID; + } + + private void SalesForm_KeyDown(object sender, KeyEventArgs e) + { + if (formState == SaleFormState.Billing) + { + #region Billing KeyDown + switch (e.KeyCode) + { + case Keys.F2: + { + if (dgvProducts.Rows.Count > 0) + SetQuantity(CurrentProduct, 0, false, true); + break; + } + case Keys.F3: + { + btnDiscount_Click(sender, new EventArgs()); + break; + } + case Keys.F4: + { + if (!e.Alt) + ShowCustomerList(false); + break; + } + case Keys.F5: + { + btnWaiter_Click(sender, new EventArgs()); + break; + } + case Keys.F7: + { + using (SelectProduct selectProduct = new SelectProduct(new ProductBI().GetFilteredProducts, true)) + { + selectProduct.ShowDialog(); + if (selectProduct.SelectedItem != null) + AddProductToGrid(selectProduct.SelectedItem.ProductID); + } + break; + } + case Keys.F8: + { + LoadBillFromTable(); + break; + } + case Keys.F9: + { + if (dgvProducts.Rows.Count > 0) + SetAmount(CurrentProduct, -1); + break; + } + case Keys.F11: + { + btnPrintBill_Click(sender, e); + break; + } + case Keys.F12: + { + btnPrintKot_Click(sender, e); + break; + } + case Keys.Delete: + { + if (dgvProducts.Rows.Count > 0) + ProductRemove(CurrentProduct); + break; + } + case Keys.Add: + { + if (dgvProducts.Rows.Count > 0) + SetQuantity(CurrentProduct, 1, false, false); + break; + } + case Keys.Subtract: + { + if (dgvProducts.Rows.Count > 0) + SetQuantity(CurrentProduct, -1, false, false); + break; + } + case Keys.Up: + { + if ((bindingSource.Position >= 1) && (!dgvProducts.Focused)) + bindingSource.Position -= 1; + break; + } + case Keys.Down: + { + if ((bindingSource.Position < bindingSource.Count - 1) && (!dgvProducts.Focused)) + bindingSource.Position += 1; + break; + } + case Keys.Escape: + { + if (bill.Count != 0) + if (MessageBox.Show("Cancel current bill?", "Cancel bill", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.No) + return; + ClearBill(); + break; + } + } + #endregion + } + else + { + #region Waiting KeyDown + switch (e.KeyCode) + { + case Keys.F6: + { + ChangeFormState(SaleFormState.Billing); + break; + } + case Keys.F8: + { + LoadBillFromTable(); + break; + } + } + + #endregion + } + } + + #region Helper Functions + private void ClearBill() + { + ShowCustomerList(true); + this.billInfo = null; + this.txtBillID.Text = ""; + this.txtKotID.Text = ""; + this.txtCreationDate.Text = ""; + this.txtDate.Text = ""; + this.txtLastEditDate.Text = ""; + this.txtNarration.Text = ""; + this.txtUserID.Text = ""; + this.txtTableID.Text = ""; + this.btnWaiter.Text = "Waiter - F5"; + this.btnWaiter.Tag = null; + txtGrossTax.Text = "0.00"; + txtDiscount.Text = "0.00"; + txtGrossAmount.Text = "0.00"; + txtAmount.Text = "0.00"; + bill.Clear(); + bindingSource.DataSource = bill.Values; + ChangeFormState(SaleFormState.Waiting); + } + private void AddProductToGrid(Guid productID) + { + BillHelperFunctions.AddProductToGrid(productID, bindingSource, bill); + calculateAmount(); + } + + private void SetQuantity(SalesBillItemBO product, decimal quantity, bool absolute, bool prompt) + { + if (product == null) + return; + BillHelperFunctions.SetQuantity(product, quantity, absolute, prompt, bindingSource, bill); + calculateAmount(); + } + private void SetAmount(SalesBillItemBO product, decimal amount) + { + if (product == null) + return; + BillHelperFunctions.SetAmount(product, amount, bindingSource, bill); + calculateAmount(); + } + private void SetDiscount(SalesBillItemBO product, decimal discount) + { + if (product == null) + return; + BillHelperFunctions.SetDiscount(product.productID, discount, customer, bill); + calculateAmount(); + return; + } + private bool ProductRemove(SalesBillItemBO product) + { + if (product == null) + return false; + if (product.Printed > 0) + { + if (!Thread.CurrentPrincipal.IsInRole("Sales/EditPrintedProduct")) + { + MessageBox.Show("You are not allowed to delete already printed products"); + return false; + } + if (MessageBox.Show(string.Format("Already {0} items have been printed.\n\rAre you sure you want to delete this item?", product.Printed), "Delete", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) + return false; + //If BillList(Location).Printed <> 0 Then ItemsDeleted.Add("Deleted " & BillList(Location).Printed & " " & BillList(Location).Name & " from Bill No " & mBillNo) + } + bill.Remove(new BillItemKey(product.productID, product.Printed == 0)); + calculateAmount(); + return true; + } + private void InputBox_Validating(object sender, InputBoxValidatingArgs e) + { + } + + private void button_Click(object sender, EventArgs e) + { + Button button = sender as Button; + if (button == null) + return; + Guid tag = (Guid)button.Tag; + AddProductToGrid(tag); + } + private void calculateAmount() + { + txtGrossTax.Text = string.Format("{0:#0.00}", bill.Values.Sum(b => b.TaxAmount)); + txtDiscount.Text = string.Format("{0:#0.00}", bill.Values.Sum(b => b.DiscountAmount)); + txtGrossAmount.Text = string.Format("{0:#0.00}", bill.Values.Sum(b => b.GrossAmount)); + txtAmount.Text = string.Format("{0:#0.00}", Math.Round(bill.Values.Sum(b => b.Value))); + bindingSource.DataSource = bill.Values.ToList(); + dgvProducts.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.DisplayedCells); + } + + private void btnPrintBill_Click(object sender, EventArgs e) + { + Save(true); + } + private void btnPrintKot_Click(object sender, EventArgs e) + { + Save(false); + } + private void btnMultiPrint_Click(object sender, EventArgs e) + { + Save(true); + } + private void btnCancel_Click(object sender, EventArgs e) + { + if (bill.Count != 0) + if (MessageBox.Show("Cancel current bill?", "Cancel bill", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.No) + return; + ClearBill(); + } + + private SalesBillItemBO CurrentProduct + { + get + { + if (dgvProducts.Rows.Count == 0) + return null; + SalesBillItemBO product = bill.ElementAt(dgvProducts.CurrentRow.Index).Value; + return product; + } + } + private void btnQuantity_Click(object sender, EventArgs e) + { + if (dgvProducts.Rows.Count > 0) + SetQuantity(CurrentProduct, 0, false, true); + } + private void btnDiscount_Click(object sender, EventArgs e) + { + if (dgvProducts.Rows.Count > 0) + SetDiscount(CurrentProduct, -1); + } + #endregion + + private void SalesForm_Load(object sender, EventArgs e) + { + ChangeFormState(SaleFormState.Waiting); + if (newBillID.HasValue) + { + LoadBill(newBillID.Value); + ChangeFormState(SaleFormState.Billing); + } + ControlFactory.GenerateButtons(ref pnlBilling, new Rectangle(489, 94, 481, 385), 6, 6, 2, new ProductBI().GetUnFilteredProducts(), new ButtonClickDelegate(button_Click)); + } + + private void ChangeFormState(SaleFormState state) + { + formState = state; + if (state == SaleFormState.Billing) + { + pnlWaiting.Visible = false; + pnlBilling.Visible = true; + } + else + { + pnlWaiting.Visible = true; + pnlBilling.Visible = false; + ListUnpaidBills(); + } + } + + #region Save Bill + private void Save(bool print) + { + if ((billInfo != null) && (new SaleVoucherBI().IsBillPrinted(billInfo.VoucherID)) && (!Thread.CurrentPrincipal.IsInRole("Sales/EditBill"))) + MessageBox.Show("You are not authorized to access"); + else + { + if (bill.Count != 0) + { + Guid? saved; + if (billInfo == null) + saved = AddNewSale(print); + else + saved = UpdateSale(print); + if (saved.HasValue) + { + if (newBillID.HasValue) + this.Close(); + else + PrintBill(print, saved.Value); + } + ClearBill(); + } + } + } + + private void PrintBill(bool finalBill, Guid voucherID) + { + if (!Thread.CurrentPrincipal.IsInRole("Sales/PrintKOT")) + { + MessageBox.Show("You are not authorized to access"); + return; + } + if (!finalBill) + Accounts.Print.Thermal.PrintWaiterKot("KOT", voucherID, bill.Values.ToList()); + else + { + if (!Thread.CurrentPrincipal.IsInRole("Sales/PrintBill")) + { + MessageBox.Show("You are not authorized to access"); + return; + } + else + { + Accounts.Print.Thermal.PrintBill(true, voucherID, bill.Values.ToList()); + Accounts.Print.Thermal.PrintCustomerKot("KOT", voucherID, bill.Values.ToList()); + } + } + } + private Guid? AddNewSale(bool finalBill) + { + if (billInfo != null) + { + MessageBox.Show("Error in AddNewSale, there is a previous sale in memory", "Error"); + return null; + } + + if (btnWaiter.Tag == null) + btnWaiter.Tag = new WaiterBI().GetWaiters()[0].WaiterID; + + #region SaleVoucher + UserBO user = CurrentUser.user; + SaleVoucherBO saleVoucher = new SaleVoucherBO + { + CustomerID = customer.CustomerID, + Paid = false, + //Paid = finalBill, + TableID = txtTableID.Text, + WaiterID = (Guid)btnWaiter.Tag, + Printed = finalBill, + Void = false, + Date = DateTime.Now, + Narration = txtNarration.Text, + Ref = "", + Type = 'S', + UserID = user.UserID + }; + #endregion + #region Inventories + List iList = new SaleVoucherBI().SaleInventory(bill.Values, null); + #endregion + new SaleVoucherBI().Insert(saleVoucher, iList); + return saleVoucher.VoucherID; + + } + #region TransactionUpdate + private Guid? UpdateSale(bool finalBill) + { + if (btnWaiter.Tag == null) + btnWaiter.Tag = new WaiterBI().GetWaiters()[0].WaiterID; + + UserBO user = CurrentUser.user; + #region Voucher and SaleVoucher + SaleVoucherBO saleVoucher = new SaleVoucherBO + { + VoucherID = billInfo.VoucherID, + timestamp = (byte[])billInfo.timestamp, + UserID = billInfo.UserID, + Date = billInfo.Date, + CreationDate = DateTime.Now, + LastEditDate = DateTime.Now, + Narration = billInfo.Narration, + Ref = "", + Type = 'S', + Alarm = billInfo.Alarm, + BillID = billInfo.BillID, + CustomerID = customer.CustomerID, + KotID = billInfo.KotID, + Paid = billInfo.Paid, + Printed = billInfo.Printed || finalBill, + TableID = txtTableID.Text, + Void = billInfo.Void, + VoidReason = billInfo.VoidReason, + WaiterID = (Guid)btnWaiter.Tag, + SaleTimestamp = (byte[])billInfo.SaleTimestamp + }; + if ((!billInfo.Printed) && finalBill) + saleVoucher.Date = null; + #endregion + #region Inventory + List iList = new SaleVoucherBI().SaleInventory(bill.Values, billInfo.VoucherID); + #endregion + new SaleVoucherBI().Update(saleVoucher, iList); + return saleVoucher.VoucherID; + } + + #endregion + #endregion + + + private void LoadBillFromTable() + { + InputBoxResult result = InputBox.Show("Enter Table Number", "Table", "0", InputBox_Validating); + if (result.OK) + { + txtTableID.Text = result.Text.Trim(); + if ((txtTableID.Text != "C") && (txtTableID.Text != "") && (!txtTableID.Text.Contains("."))) + { + Guid? tID = new SaleVoucherBI().GetPendingVoucherID(txtTableID.Text); + if (tID.HasValue) + { + LoadBill(tID.Value); + ChangeFormState(SaleFormState.Billing); + } + } + else + ClearBill(); + } + } + + private void LoadBill(Guid voucherID) + { + ClearBill(); + List iList = new List(); + new SaleVoucherBI().GetSaleVoucher(voucherID, ref billInfo, ref iList); + + this.txtBillID.Text = billInfo.BillID; + this.txtKotID.Text = billInfo.KotID; + this.txtCreationDate.Text = billInfo.CreationDate.ToString("HH:mm dd-MMM-yyyy"); + this.txtDate.Text = billInfo.Date.Value.ToString("HH:mm dd-MMM-yyyy"); + this.txtLastEditDate.Text = billInfo.LastEditDate.ToString("HH:mm dd-MMM-yyyy"); + this.txtNarration.Text = billInfo.Narration; + this.txtUserID.Text = new UserBI().GetUser(billInfo.UserID).Name; + this.customer = new CustomerBI().GetCustomer(billInfo.CustomerID); + this.btnCustomer.Text = this.customer.Name; + this.txtTableID.Text = billInfo.TableID; + this.btnWaiter.Tag = billInfo.WaiterID; + this.btnWaiter.Text = string.Format("{0} - F5", new WaiterBI().GetWaiter(billInfo.WaiterID).Name); + + foreach (InventoryDisplayBO inventory in iList) + { + if (inventory.ComplexProductID.HasValue) + { + BillItemKey key = new BillItemKey(inventory.ComplexProductID.Value, inventory.Quantity == 0); + if (!bill.ContainsKey(key)) + { + decimal rate = 0, quantity = 0; + string name = ""; + new SaleVoucherBI().GetComplexBillInformation(voucherID, inventory.ComplexProductID.Value, ref rate, ref quantity, ref name); + bill.Add(key, new SalesBillItemBO + { + productID = inventory.ComplexProductID.Value, + Discount = inventory.Discount, + Name = name, + Price = rate, + Printed = quantity, + Quantity = quantity, + Tax = inventory.Tax, + }); + + } + } + else + { + BillItemKey key = new BillItemKey(inventory.ProductID, inventory.Quantity == 0); + bill.Add(key, new SalesBillItemBO + { + productID = inventory.ProductID, + Discount = inventory.Discount, + Name = inventory.ProductName, + Price = inventory.Rate, + Printed = inventory.Quantity, + Quantity = inventory.Quantity, + Tax = inventory.Tax, + }); + } + } + calculateAmount(); + + } + + #region Waiting + + private void btnStartBill_Click(object sender, EventArgs e) + { + ChangeFormState(SaleFormState.Billing); + } + + private void btnSelectBill_Click(object sender, EventArgs e) + { + if (bsPending.Current != null) + { + LoadBill(((PendingBillsBO)bsPending.Current).voucherID); + ChangeFormState(SaleFormState.Billing); + } + } + + private void tmrPending_Tick(object sender, EventArgs e) + { + if (chkRefresh.Checked) + ListUnpaidBills(); + } + + private void ListUnpaidBills() + { + lock (lockObject) + { + pendingBills = new SaleVoucherBI().GetPendingBills(pendingList); + bsPending.DataSource = pendingBills; + List alarmBills = new SaleVoucherBI().GetPendingBills(PendingType.Alarms).OrderBy(b => b.AlarmTime).ToList(); + if (alarmBills.Count > 0) + { + PendingBillsBO al = alarmBills.First(); + double seconds = al.AlarmTime.Value.Subtract(DateTime.Now).TotalSeconds; + if (seconds <= 0) + lblUser.Text = string.Format("Alarm {0:hh:MM}", al.AlarmTime); + else + lblUser.Text = CurrentUser.user.Name; + } + else + { + lblUser.Text = CurrentUser.user.Name; + } + } + } + + private void dgvPending_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) + { + try + { + DataGridView dgv = sender as DataGridView; + PendingBillsBO data = dgv.Rows[e.RowIndex].DataBoundItem as PendingBillsBO; + if (data.Printed) + e.CellStyle.BackColor = Color.LightSlateGray; + } + catch + { + // Catch and swallow exception when DataGridView attemps to get values for removed rows. + } + } + + private void tcPending_SelectedIndexChanged(object sender, EventArgs e) + { + switch (tcPending.SelectedTab.Text) + { + case "Today": + pendingList = PendingType.Today; + break; + case "Week": + pendingList = PendingType.Week; + break; + case "All": + pendingList = PendingType.All; + break; + case "Important": + pendingList = PendingType.Important; + break; + case "Alarms": + pendingList = PendingType.Alarms; + break; + } + ListUnpaidBills(); + } + + private void dgvPending_CellValuePushed(object sender, DataGridViewCellValueEventArgs e) + { + if (e.ColumnIndex != 0) return; + if ((bool)e.Value) + selectedBills.Add(pendingBills[e.RowIndex].voucherID); + else + selectedBills.Remove(pendingBills[e.RowIndex].voucherID); + } + + private void dgvPending_CellValueNeeded(object sender, DataGridViewCellValueEventArgs e) + { + if (e.ColumnIndex != 0) return; + if (e.RowIndex > pendingBills.Count - 1) return; + e.Value = selectedBills.Contains(pendingBills.ElementAt(e.RowIndex).voucherID); + } + #endregion + + #region Billing + private void btnCustomer_Click(object sender, EventArgs e) + { + ShowCustomerList(false); + } + + private void ShowCustomerList(bool reset) + { + if ((customer.CustomerID == new Guid("F016CBAD-206C-42C0-BB1D-6006CE57BAB5")) && (!reset)) + { + using (SelectCustomer selectCustomer = new SelectCustomer(new CustomerBI().GetFilteredCustomers, true)) + { + selectCustomer.customerEvent += new CustomerEventHandler(selectCustomer_customerEvent); + selectCustomer.ShowDialog(); + if (selectCustomer.SelectedItem != null) + { + customer = selectCustomer.SelectedItem; + btnCustomer.Text = customer.Name; + } + else + { + customer = new CustomerBI().GetCustomer(new Guid("F016CBAD-206C-42C0-BB1D-6006CE57BAB5")); + } + } + } + else + { + customer = new CustomerBI().GetCustomer(new Guid("F016CBAD-206C-42C0-BB1D-6006CE57BAB5")); + btnCustomer.Text = customer.Name; + } + } + + CustomerBO selectCustomer_customerEvent(object sender, CustomerEventArgs e) + { + using (CustomersForm form = new CustomersForm(e.CustomerID, e.Phone)) + { + form.ShowDialog(); + return form.Customer; + } + } + + #endregion + + + private void dgvPending_CellDoubleClick(object sender, DataGridViewCellEventArgs e) + { + if ((dgvProducts.Rows.Count > 0) && (dgvPending.CurrentRow != null)) + { + LoadBill(((PendingBillsBO)bsPending.Current).voucherID); + ChangeFormState(SaleFormState.Billing); + } + } + + private void btnRefresh_Click(object sender, EventArgs e) + { + ListUnpaidBills(); + } + + private void btnVoid_Click(object sender, EventArgs e) + { + if (billInfo != null) + { + if ((billInfo.Printed) && (!Thread.CurrentPrincipal.IsInRole("Sales/VoidPrintedBill"))) + MessageBox.Show("Cannot void a paid bill"); + else if (MessageBox.Show("Are you sure you want to void this bill?", "Void Bill", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes) + { + SelectVoidReason voidReason = new SelectVoidReason(GetVoidReason, true); + voidReason.ShowDialog(); + if (voidReason.SelectedItem != null) + { + new SaleVoucherBI().VoidBill(billInfo.VoucherID, voidReason.SelectedItem.Description); + ClearBill(); + } + else + { + MessageBox.Show("Please Select a reason if you want to void the bill", "Bill NOT Voided", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); + } + } + } + } + + private List GetVoidReason(Dictionary filter) + { + List list = new List(); + list.Add(new StringType("Discount")); + list.Add(new StringType("Printing Fault")); + list.Add(new StringType("Item Changed")); + list.Add(new StringType("Quantity Reduced")); + list.Add(new StringType("Costing Bill for Party")); + list.Add(new StringType("Cashier Mistake")); + list.Add(new StringType("Management Freesale")); + list.Add(new StringType("Other")); + return list.Where(i => i.Description.ToLower().Contains(filter["Name"].ToLower().Trim())).ToList(); + } + private void btnRate_Click(object sender, EventArgs e) + { + if (!Thread.CurrentPrincipal.IsInRole("Sales/ChangeRate")) + MessageBox.Show("You are not authorized to access"); + else + { + if (dgvProducts.Rows.Count > 0) + { + SalesBillItemBO product = bill.ElementAt(dgvProducts.CurrentRow.Index).Value; + decimal rate = 0; + InputBoxResult result = InputBox.Show("Enter Rate", "Rate", product.Price.ToString(), InputBox_Validating); + if (result.OK) + rate = Convert.ToDecimal(result.Text); + if (rate != 0) + { + BillHelperFunctions.SetRate(product.productID, rate, bill); + calculateAmount(); + } + } + } + } + + private void btnClear_Click(object sender, EventArgs e) + { + ClearBill(); + } + + private void btnPaidCash_Click(object sender, EventArgs e) + { + UserBO user = CurrentUser.user; + new SaleVoucherBI().DeclareBillsPaid(user.UserID, selectedBills, false); + ListUnpaidBills(); + } + + private void btnPaidCC_Click(object sender, EventArgs e) + { + UserBO user = CurrentUser.user; + new SaleVoucherBI().DeclareBillsPaid(user.UserID, selectedBills, true); + ListUnpaidBills(); + } + + private void btnAlarm_Click(object sender, EventArgs e) + { + if (bsPending.Current != null) + { + PendingBillsBO billAlarm = (PendingBillsBO)bsPending.Current; + InputBoxResult result = InputBox.Show( + string.Format("Alarm for Bill {0} Rs. {1}", billAlarm.BillNo, billAlarm.Amount), + "Alarm", + string.Format("{0:dd-MMM-yyy HH:mm}", billAlarm.LastEdited), + InputBox_Validating); + if (result.OK) + { + DateTime alarmTime; + if (result.Text == string.Empty) + { + new SaleVoucherBI().SetAlarm(billAlarm.voucherID, null); + MessageBox.Show("Alarm Cleared", "Alarm Cleared", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + else if (DateTime.TryParseExact(result.Text, "dd-MMM-yyyy HH:mm", new CultureInfo("en-US"), DateTimeStyles.None, out alarmTime)) + { + new SaleVoucherBI().SetAlarm(billAlarm.voucherID, alarmTime); + MessageBox.Show("Alarm set", "Alarm Set", MessageBoxButtons.OK, MessageBoxIcon.Information); + } + else + { + MessageBox.Show("Alarm NOT set, please try again", "Alarm NOT Set", MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } + } + } + + private void btnBillList_Click(object sender, EventArgs e) + { + //if (!Thread.CurrentPrincipal.IsInRole("Security/CreateUser")) + // return; + //#region Filters + //decimal? minValue = 0, maxValue = 0; + //decimal valTemp; + //DateTime? fromDate = DateTime.Now, toDate = DateTime.Now; // used in filters + //DateTime dateTemp; + //bool? showVoided; + + //InputBoxResult result = InputBox.Show("Start Date", "Start Date", string.Format("{0:dd-MMM-yyy}", fromDate), InputBox_Validating); + //if ((result.OK) && (DateTime.TryParseExact(result.Text, "dd-MMM-yyyy", new CultureInfo("en-US"), DateTimeStyles.None, out dateTemp))) + //{ + // fromDate = dateTemp; + //} + //result = InputBox.Show("Finish Date", "Finish Date", string.Format("{0:dd-MMM-yyy}", toDate), InputBox_Validating); + //if ((result.OK) && (DateTime.TryParseExact(result.Text, "dd-MMM-yyyy", new CultureInfo("en-US"), DateTimeStyles.None, out dateTemp))) + //{ + // toDate = dateTemp; + //} + //result = InputBox.Show("Minimum Value", "Minimum Value", "0", InputBox_Validating); + //if ((result.OK) && (decimal.TryParse(result.Text, out valTemp))) + //{ + // minValue = valTemp; + //} + //result = InputBox.Show("Maximum Value", "Maximum Value", "0", InputBox_Validating); + //if ((result.OK) && (decimal.TryParse(result.Text, out valTemp))) + //{ + // maxValue = valTemp; + //} + //DialogResult dResult = MessageBox.Show("Show Un-Voided Bills only", "Un-Voided", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question); + //if (dResult == DialogResult.Yes) + // showVoided = false; + //else if (dResult == DialogResult.No) + // showVoided = true; + //else + // showVoided = null; + //#endregion + //List billList = ManagementBI.GetBillList(fromDate, toDate, minValue, maxValue, showVoided); + //using (SelectBill selectBill = new SelectBill(billList, true)) + //{ + // selectBill.ShowDialog(); + // if (selectBill.SelectedItem != null) + // { + // LoadBill(selectBill.SelectedItem.voucherID); + // ChangeFormState(SaleFormState.Billing); + + // } + //} + } + + private void btnImportant_Click(object sender, EventArgs e) + { + if (bsPending.Current == null) + return; + if (MessageBox.Show("Are you sure?", "Mark / UnMark Important", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.Yes) + return; + PendingBillsBO billAlarm = (PendingBillsBO)bsPending.Current; + new SaleVoucherBI().ToggleImportant(billAlarm.voucherID); + ListUnpaidBills(); + } + + private void dgvProducts_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) + { + DataGridView dgv = sender as DataGridView; + SalesBillItemBO data = dgv.Rows[e.RowIndex].DataBoundItem as SalesBillItemBO; + + if (data.Printed > 0) + { + e.CellStyle.SelectionBackColor = Color.HotPink; + e.CellStyle.BackColor = Color.LightPink; + } + else + { + e.CellStyle.SelectionBackColor = Color.Green; + e.CellStyle.BackColor = Color.LightGreen; + } + } + + private void btnWaiter_Click(object sender, EventArgs e) + { + using (SelectWaiter selectWaiter = new SelectWaiter(new WaiterBI().GetFilteredWaiters, true)) + { + selectWaiter.waiterEvent += new WaiterEventHandler(selectWaiter_waiterEvent); + selectWaiter.ShowDialog(); + if (selectWaiter.SelectedItem != null) + { + btnWaiter.Text = string.Format("{0} - F5", selectWaiter.SelectedItem.Name); + btnWaiter.Tag = selectWaiter.SelectedItem.WaiterID; + } + else + { + btnWaiter.Text = "Select Waiter - F5"; + btnWaiter.Tag = new WaiterBI().GetWaiters()[0].WaiterID; + } + } + } + WaiterBO selectWaiter_waiterEvent(object sender, WaiterEventArgs e) + { + WaiterBO waiter = e.Waiter; + if (!Thread.CurrentPrincipal.IsInRole("Waiter/Master")) + return waiter; + + switch (e.Action) + { + case 1: // Add + new WaiterBI().Insert(waiter); + e.Handled = true; + return waiter; + case 2: // Edit + new WaiterBI().Update(waiter); + e.Handled = true; + return waiter; + case 3: // Delete + e.Handled = new WaiterBI().Delete(waiter.WaiterID); + return new WaiterBI().GetWaiter(1); + default: + throw new ArgumentException(); + } + } + + private void pnlWaiting_Paint(object sender, PaintEventArgs e) + { + + } + } +} + + diff --git a/Tanshu.Accounts.PointOfSale/Sales/SalesForm.resx b/Tanshu.Accounts.PointOfSale/Sales/SalesForm.resx new file mode 100644 index 0000000..bd67484 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Sales/SalesForm.resx @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + + 17, 17 + + + 148, 17 + + + 248, 17 + + + 357, 17 + + + True + + + True + + + True + + + 81 + + \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/Script.txt b/Tanshu.Accounts.PointOfSale/Script.txt new file mode 100644 index 0000000..e749bef --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Script.txt @@ -0,0 +1,154 @@ +CREATE TABLE [dbo].[ComplexProducts]( + [ComplexProductID] [uniqueidentifier] NOT NULL, + [ProductID] [uniqueidentifier] NOT NULL, + [ChildID] [uniqueidentifier] NOT NULL, + [Quantity] [decimal](18, 5) NOT NULL, + [timestamp] [timestamp] NOT NULL, + CONSTRAINT [PK_ComplexProducts] PRIMARY KEY CLUSTERED +( + [ComplexProductID] ASC +)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] +) ON [PRIMARY] + + + + + + +CREATE TABLE [dbo].[ComplexProducts_tracking]( + [ComplexProductID] [uniqueidentifier] NOT NULL, + [sync_row_is_tombstone] [int] NULL DEFAULT ((0)), + [sync_row_timestamp] [timestamp] NOT NULL, + [sync_update_peer_key] [int] NULL DEFAULT ((0)), + [sync_update_peer_timestamp] [bigint] NULL, + [sync_create_peer_key] [int] NULL DEFAULT ((0)), + [sync_create_peer_timestamp] [bigint] NULL, + [last_change_datetime] [datetime] NULL DEFAULT (getdate()), +PRIMARY KEY CLUSTERED +( + [ComplexProductID] ASC +)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] +) ON [PRIMARY] + +Alter table Products add [IsComplex] [bit] NOT NULL DEFAULT((0)) + +---------------- Before 18 Jul 2008 --------------------- + +Insert into Roles (Role, Description, CompanyID) Values('Master/Products','Allow user to access product form','7860acfb-e03e-4af5-8a5f-91186921da2d') + + +CREATE TABLE [dbo].[ProductRates]( + [Id] [uniqueidentifier] NOT NULL CONSTRAINT [DF_ProductRates_Id] DEFAULT (newid()), + [ProductID] [uniqueidentifier] NULL, + [NewRate] [decimal](18, 5) NULL, + [UserID] [uniqueidentifier] NULL, + [Date] [datetime] NULL, + [timestamp] [timestamp] NULL, + CONSTRAINT [PK_ProductRates] PRIMARY KEY CLUSTERED +( + [Id] ASC +)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] +) ON [PRIMARY] + + + +CREATE TABLE [dbo].[ProductRates_tracking]( + [ID] [uniqueidentifier] NOT NULL, + [sync_row_is_tombstone] [int] NULL DEFAULT ((0)), + [sync_row_timestamp] [timestamp] NOT NULL, + [sync_update_peer_key] [int] NULL DEFAULT ((0)), + [sync_update_peer_timestamp] [bigint] NULL, + [sync_create_peer_key] [int] NULL DEFAULT ((0)), + [sync_create_peer_timestamp] [bigint] NULL, + [last_change_datetime] [datetime] NULL DEFAULT (getdate()), +PRIMARY KEY CLUSTERED +( + [ID] ASC +)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY] +) ON [PRIMARY] + + + + +Alter Table TransactionSale Add [CreditCard] [bit] NOT NULL CONSTRAINT [DF_TransactionSale_CreditCard] DEFAULT ((0)) + + + + + + + + + + + + + + + + + + + + + + +-----------Paid Update-------------------- + + + + +set ANSI_NULLS ON +set QUOTED_IDENTIFIER ON +go + + +ALTER PROCEDURE [dbo].[TransactionSale_Update] +( + @TransactionID uniqueidentifier, + @BillID nvarchar(10) OUTPUT, + @TableID nvarchar(10), + @WaiterID uniqueidentifier, + @CustomerID uniqueidentifier, + @Paid bit, + @Void bit, + @VoidReason nvarchar(50), + @Printed bit OUTPUT, + @Alarm datetime, + @KotID nvarchar(10) OUTPUT, + @CompanyID uniqueidentifier, + @timestamp timestamp OUTPUT + ) +AS +BEGIN + IF @Printed = 1 AND (SELECT Printed FROM TransactionSale WHERE TransactionID = @TransactionID) = 0 + BEGIN + SELECT @BillID = ISNULL(CAST(MAX(CAST(REPLACE(BillID, '-', '') AS int)) + 1 AS nvarchar(9)), '010001') FROM TransactionSale WHERE BillID LIKE '__-____' + IF LEN(@BillID) = 5 + SET @BillID = '0' + @BillID + SET @BillID = SUBSTRING(@BillID, 1, 2) + '-' + SUBSTRING(@BillID, 3, 7) + IF SUBSTRING(@BillID,3,7) = '-0000' + SET @BillID = SUBSTRING(@BillID, 1, 2) + '-0001' + END + IF (SELECT Printed FROM TransactionSale WHERE TransactionID = @TransactionID) = 1 + SET @Printed = 1 + UPDATE [dbo].[TransactionSale] SET + [BillID] = @BillID, + [TableID] = @TableID, + [WaiterID] = @WaiterID, + [CustomerID] = @CustomerID, + [Paid] = @Paid, + [Void] = @Void, + [VoidReason] = @VoidReason, + [Printed] = @Printed, + [Alarm] = @Alarm, + [KotID] = @KotID, + [CompanyID] = @CompanyID + WHERE TransactionID = @TransactionID + +Update BasicTransactions Set LastEditDate=GetDate() WHERE TransactionID = @TransactionID + + SELECT @timestamp = timestamp FROM [dbo].[TransactionSale] WHERE TransactionID = @TransactionID +END + + diff --git a/Tanshu.Accounts.PointOfSale/Tanshu.Accounts.PointOfSale.csproj b/Tanshu.Accounts.PointOfSale/Tanshu.Accounts.PointOfSale.csproj new file mode 100644 index 0000000..e33a00f --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Tanshu.Accounts.PointOfSale.csproj @@ -0,0 +1,334 @@ + + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {16FC8CDC-B535-4CB5-92D9-AA901E0A4AA4} + WinExe + Properties + Tanshu.Accounts.PointOfSale + Tanshu.Accounts.PointOfSale + v3.5 + 512 + Resources\burger.ico + false + publish\ + true + Disk + false + Foreground + 7 + Days + false + false + true + 0 + 1.0.0.%2a + false + true + + + true + full + false + ..\Bin\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + ..\Bin\ + TRACE + prompt + 4 + + + + + + 3.5 + + + 3.5 + + + 3.5 + + + 3.5 + + + 3.5 + + + + + + + + False + ..\Include\Tanshu.Common.dll + + + False + ..\Include\Tanshu.Data.dll + + + False + ..\Include\Tanshu.Logging.dll + + + + + + Form + + + PaymentForm.cs + + + Form + + + AdjustAdvanceForm.cs + + + Form + + + ReplaceForm.cs + + + Form + + + SaleTaxReportForm.cs + + + Form + + + UpdateForm.cs + + + Form + + + UpdateSales.cs + + + Form + + + AssignRoles.cs + + + Form + + + ChangePassword.cs + + + Form + + + CheckoutForm.cs + + + + Form + + + CustomersForm.cs + + + Form + + + LoginForm.cs + + + Form + + + MainForm.cs + + + + Form + + + UserForm.cs + + + Form + + + LogViewerForm.cs + + + Form + + + ProductsForm.cs + + + Form + + + ProductTypes.cs + + + + + PaymentForm.cs + Designer + + + AdjustAdvanceForm.cs + Designer + + + ReplaceForm.cs + Designer + + + SaleTaxReportForm.cs + Designer + + + UpdateForm.cs + Designer + + + UpdateSales.cs + Designer + + + AssignRoles.cs + Designer + + + ChangePassword.cs + Designer + + + CheckoutForm.cs + Designer + + + CustomersForm.cs + Designer + + + LoginForm.cs + Designer + + + MainForm.cs + Designer + + + UserForm.cs + Designer + + + LogViewerForm.cs + Designer + + + ProductsForm.cs + Designer + + + ProductTypes.cs + Designer + + + RecieveAdvanceForm.cs + Designer + + + SaleAnalysisForm.cs + Designer + + + SalesForm.cs + Designer + + + + Form + + + RecieveAdvanceForm.cs + + + Form + + + SaleAnalysisForm.cs + + + Form + + + SalesForm.cs + + + + + + + + False + .NET Framework 2.0 %28x86%29 + false + + + False + .NET Framework 3.0 %28x86%29 + false + + + False + .NET Framework 3.5 + true + + + False + Windows Installer 3.1 + true + + + + + {59A6F8B8-12EE-4D8E-BEBB-61CB665A2C17} + Tanshu.Accounts.Contracts + + + {0B43ECD4-3701-4CD3-82EC-617D7D590BBB} + Tanshu.Accounts.BI + + + {3E28AAA5-A493-4446-8188-C615245943B4} + Tanshu.Accounts.Helpers + + + {90C9D02C-91AF-4529-86BE-28320332DDB5} + Tanshu.Accounts.Print + + + + + \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/Tanshu.Accounts.PointOfSale.csproj.user b/Tanshu.Accounts.PointOfSale/Tanshu.Accounts.PointOfSale.csproj.user new file mode 100644 index 0000000..a1d742b --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Tanshu.Accounts.PointOfSale.csproj.user @@ -0,0 +1,5 @@ + + + ProjectFiles + + \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/Updates/AutoUpdateForm.Designer.cs b/Tanshu.Accounts.PointOfSale/Updates/AutoUpdateForm.Designer.cs new file mode 100644 index 0000000..892f979 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Updates/AutoUpdateForm.Designer.cs @@ -0,0 +1,183 @@ +namespace Accounts.PointOfSale +{ + partial class AutoUpdateForm + { + /// + /// 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.dtpFrom = new System.Windows.Forms.DateTimePicker(); + this.dtpTo = new System.Windows.Forms.DateTimePicker(); + this.btnGo = new System.Windows.Forms.Button(); + this.txtTwelve = new System.Windows.Forms.TextBox(); + this.txtFour = new System.Windows.Forms.TextBox(); + this.txtZero = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.txtFourSize = new System.Windows.Forms.TextBox(); + this.txtZeroSize = new System.Windows.Forms.TextBox(); + this.txtTwelveSize = new System.Windows.Forms.TextBox(); + this.SuspendLayout(); + // + // dtpFrom + // + this.dtpFrom.Location = new System.Drawing.Point(12, 12); + this.dtpFrom.Name = "dtpFrom"; + this.dtpFrom.Size = new System.Drawing.Size(268, 20); + this.dtpFrom.TabIndex = 0; + // + // dtpTo + // + this.dtpTo.Location = new System.Drawing.Point(12, 38); + this.dtpTo.Name = "dtpTo"; + this.dtpTo.Size = new System.Drawing.Size(268, 20); + this.dtpTo.TabIndex = 1; + // + // btnGo + // + this.btnGo.Location = new System.Drawing.Point(12, 142); + this.btnGo.Name = "btnGo"; + this.btnGo.Size = new System.Drawing.Size(268, 23); + this.btnGo.TabIndex = 5; + this.btnGo.Text = "Go"; + this.btnGo.UseVisualStyleBackColor = true; + this.btnGo.Click += new System.EventHandler(this.btnGo_Click); + // + // txtTwelve + // + this.txtTwelve.Location = new System.Drawing.Point(50, 116); + this.txtTwelve.Name = "txtTwelve"; + this.txtTwelve.Size = new System.Drawing.Size(152, 20); + this.txtTwelve.TabIndex = 4; + this.txtTwelve.Text = "0"; + // + // txtFour + // + this.txtFour.Location = new System.Drawing.Point(50, 90); + this.txtFour.Name = "txtFour"; + this.txtFour.Size = new System.Drawing.Size(152, 20); + this.txtFour.TabIndex = 3; + this.txtFour.Text = "0"; + // + // txtZero + // + this.txtZero.Location = new System.Drawing.Point(50, 64); + this.txtZero.Name = "txtZero"; + this.txtZero.Size = new System.Drawing.Size(152, 20); + this.txtZero.TabIndex = 2; + this.txtZero.Text = "0"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(12, 67); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(21, 13); + this.label1.TabIndex = 6; + this.label1.Text = "0%"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(12, 93); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(21, 13); + this.label2.TabIndex = 7; + this.label2.Text = "4%"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(12, 119); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(36, 13); + this.label3.TabIndex = 8; + this.label3.Text = "12.5%"; + // + // txtFourSize + // + this.txtFourSize.Location = new System.Drawing.Point(208, 90); + this.txtFourSize.Name = "txtFourSize"; + this.txtFourSize.Size = new System.Drawing.Size(72, 20); + this.txtFourSize.TabIndex = 9; + this.txtFourSize.Text = "3000"; + // + // txtZeroSize + // + this.txtZeroSize.Location = new System.Drawing.Point(208, 64); + this.txtZeroSize.Name = "txtZeroSize"; + this.txtZeroSize.Size = new System.Drawing.Size(72, 20); + this.txtZeroSize.TabIndex = 10; + this.txtZeroSize.Text = "5000"; + // + // txtTwelveSize + // + this.txtTwelveSize.Location = new System.Drawing.Point(208, 116); + this.txtTwelveSize.Name = "txtTwelveSize"; + this.txtTwelveSize.Size = new System.Drawing.Size(72, 20); + this.txtTwelveSize.TabIndex = 11; + this.txtTwelveSize.Text = "2000"; + // + // AutoUpdateForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(292, 177); + this.Controls.Add(this.txtTwelveSize); + this.Controls.Add(this.txtZeroSize); + this.Controls.Add(this.txtFourSize); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Controls.Add(this.txtZero); + this.Controls.Add(this.txtFour); + this.Controls.Add(this.txtTwelve); + this.Controls.Add(this.btnGo); + this.Controls.Add(this.dtpTo); + this.Controls.Add(this.dtpFrom); + this.Name = "AutoUpdateForm"; + this.Text = "UpdateForm"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.DateTimePicker dtpFrom; + private System.Windows.Forms.DateTimePicker dtpTo; + private System.Windows.Forms.Button btnGo; + private System.Windows.Forms.TextBox txtTwelve; + private System.Windows.Forms.TextBox txtFour; + private System.Windows.Forms.TextBox txtZero; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox txtFourSize; + private System.Windows.Forms.TextBox txtZeroSize; + private System.Windows.Forms.TextBox txtTwelveSize; + } +} \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/Updates/AutoUpdateForm.cs b/Tanshu.Accounts.PointOfSale/Updates/AutoUpdateForm.cs new file mode 100644 index 0000000..6a4d3b4 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Updates/AutoUpdateForm.cs @@ -0,0 +1,62 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using Tanshu.Accounts.Helpers; +using System.Threading; +using Tanshu.Accounts.BI; + +namespace Accounts.PointOfSale +{ + public partial class AutoUpdateForm : Form + { + public AutoUpdateForm() + { + InitializeComponent(); + } + + private void btnGo_Click(object sender, EventArgs e) + { + if (!Thread.CurrentPrincipal.IsInRole("Security/CreateUser")) + return; + decimal myDecimal; + if (decimal.TryParse(txtTwelve.Text, out myDecimal)) + Process(myDecimal, .125M, Convert.ToDecimal(txtTwelveSize.Text)); + if (decimal.TryParse(txtFour.Text, out myDecimal)) + Process(myDecimal, .04M, Convert.ToDecimal(txtFourSize.Text)); + if (decimal.TryParse(txtZero.Text, out myDecimal)) + Process(myDecimal, 0M, Convert.ToDecimal(txtZeroSize.Text)); + } + private void Process(decimal target, decimal tax, decimal averageSize) + { + return; + //if (target == 0) + // return; + //decimal existing; + //int work, runner = 0; + + //ManagementBI man = new ManagementBI(); + ////dc.CommandTimeout = 5000; + //List list = man.GetBillList(dtpFrom.Value, dtpTo.Value); + //existing = man.GetBalance(tax, dtpFrom.Value, dtpTo.Value); + //work = Convert.ToInt32(Math.Floor((list.Count() * averageSize) / (target - existing))); + //while (existing < target) + //{ + // if (MessageBox.Show(string.Format("Total Increase needed is {0}", target - existing), "Balance", MessageBoxButtons.OKCancel) == DialogResult.OK) + // { + // runner += 1; + // SalesForm mySaleForm = new SalesForm(list[(runner * work) + 1]); + // mySaleForm.ShowDialog(); + // mySaleForm.Dispose(); + // } + // else + // return; + // existing = man.GetBalance(target, tax); + //} + } + } +} diff --git a/Tanshu.Accounts.PointOfSale/Updates/AutoUpdateForm.resx b/Tanshu.Accounts.PointOfSale/Updates/AutoUpdateForm.resx new file mode 100644 index 0000000..19dc0dd --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Updates/AutoUpdateForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/Updates/ReplaceForm.Designer.cs b/Tanshu.Accounts.PointOfSale/Updates/ReplaceForm.Designer.cs new file mode 100644 index 0000000..95f058d --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Updates/ReplaceForm.Designer.cs @@ -0,0 +1,254 @@ +namespace Tanshu.Accounts.PointOfSale +{ + partial class ReplaceForm + { + /// + /// 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.dtpFrom = new System.Windows.Forms.DateTimePicker(); + this.dtpTo = new System.Windows.Forms.DateTimePicker(); + this.btnGo = new System.Windows.Forms.Button(); + this.txtTwelve1 = new System.Windows.Forms.TextBox(); + this.txtFour1 = new System.Windows.Forms.TextBox(); + this.txtZero1 = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.txtStatus = new System.Windows.Forms.TextBox(); + this.label4 = new System.Windows.Forms.Label(); + this.label5 = new System.Windows.Forms.Label(); + this.label6 = new System.Windows.Forms.Label(); + this.txtZero2 = new System.Windows.Forms.TextBox(); + this.txtFour2 = new System.Windows.Forms.TextBox(); + this.txtTwelve2 = new System.Windows.Forms.TextBox(); + this.txtOne = new System.Windows.Forms.TextBox(); + this.txtTwo = new System.Windows.Forms.TextBox(); + this.SuspendLayout(); + // + // dtpFrom + // + this.dtpFrom.Location = new System.Drawing.Point(12, 12); + this.dtpFrom.Name = "dtpFrom"; + this.dtpFrom.Size = new System.Drawing.Size(268, 20); + this.dtpFrom.TabIndex = 0; + this.dtpFrom.Value = new System.DateTime(2009, 12, 1, 0, 0, 0, 0); + // + // dtpTo + // + this.dtpTo.Location = new System.Drawing.Point(286, 12); + this.dtpTo.Name = "dtpTo"; + this.dtpTo.Size = new System.Drawing.Size(268, 20); + this.dtpTo.TabIndex = 1; + this.dtpTo.Value = new System.DateTime(2009, 12, 31, 23, 59, 59, 0); + // + // btnGo + // + this.btnGo.Location = new System.Drawing.Point(12, 142); + this.btnGo.Name = "btnGo"; + this.btnGo.Size = new System.Drawing.Size(542, 23); + this.btnGo.TabIndex = 5; + this.btnGo.Text = "Go"; + this.btnGo.UseVisualStyleBackColor = true; + this.btnGo.Click += new System.EventHandler(this.btnGo_Click); + // + // txtTwelve1 + // + this.txtTwelve1.Location = new System.Drawing.Point(50, 116); + this.txtTwelve1.Name = "txtTwelve1"; + this.txtTwelve1.Size = new System.Drawing.Size(230, 20); + this.txtTwelve1.TabIndex = 4; + this.txtTwelve1.Text = "0"; + // + // txtFour1 + // + this.txtFour1.Location = new System.Drawing.Point(50, 90); + this.txtFour1.Name = "txtFour1"; + this.txtFour1.Size = new System.Drawing.Size(230, 20); + this.txtFour1.TabIndex = 3; + this.txtFour1.Text = "0"; + // + // txtZero1 + // + this.txtZero1.Location = new System.Drawing.Point(50, 64); + this.txtZero1.Name = "txtZero1"; + this.txtZero1.Size = new System.Drawing.Size(230, 20); + this.txtZero1.TabIndex = 2; + this.txtZero1.Text = "0"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(12, 67); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(21, 13); + this.label1.TabIndex = 6; + this.label1.Text = "0%"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(12, 93); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(21, 13); + this.label2.TabIndex = 7; + this.label2.Text = "4%"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(12, 119); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(36, 13); + this.label3.TabIndex = 8; + this.label3.Text = "12.5%"; + // + // txtStatus + // + this.txtStatus.Location = new System.Drawing.Point(12, 171); + this.txtStatus.Name = "txtStatus"; + this.txtStatus.ReadOnly = true; + this.txtStatus.Size = new System.Drawing.Size(542, 20); + this.txtStatus.TabIndex = 9; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(286, 119); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(36, 13); + this.label4.TabIndex = 15; + this.label4.Text = "12.5%"; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(286, 93); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(21, 13); + this.label5.TabIndex = 14; + this.label5.Text = "4%"; + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(286, 67); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(21, 13); + this.label6.TabIndex = 13; + this.label6.Text = "0%"; + // + // txtZero2 + // + this.txtZero2.Location = new System.Drawing.Point(324, 64); + this.txtZero2.Name = "txtZero2"; + this.txtZero2.Size = new System.Drawing.Size(230, 20); + this.txtZero2.TabIndex = 10; + this.txtZero2.Text = "0"; + // + // txtFour2 + // + this.txtFour2.Location = new System.Drawing.Point(324, 90); + this.txtFour2.Name = "txtFour2"; + this.txtFour2.Size = new System.Drawing.Size(230, 20); + this.txtFour2.TabIndex = 11; + this.txtFour2.Text = "0"; + // + // txtTwelve2 + // + this.txtTwelve2.Location = new System.Drawing.Point(324, 116); + this.txtTwelve2.Name = "txtTwelve2"; + this.txtTwelve2.Size = new System.Drawing.Size(230, 20); + this.txtTwelve2.TabIndex = 12; + this.txtTwelve2.Text = "0"; + // + // txtOne + // + this.txtOne.Location = new System.Drawing.Point(12, 38); + this.txtOne.Name = "txtOne"; + this.txtOne.Size = new System.Drawing.Size(268, 20); + this.txtOne.TabIndex = 16; + this.txtOne.Text = "AccountsGF"; + // + // txtTwo + // + this.txtTwo.Location = new System.Drawing.Point(286, 38); + this.txtTwo.Name = "txtTwo"; + this.txtTwo.Size = new System.Drawing.Size(268, 20); + this.txtTwo.TabIndex = 17; + this.txtTwo.Text = "AccountsFF"; + // + // ReplaceForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(566, 203); + this.Controls.Add(this.txtTwo); + this.Controls.Add(this.txtOne); + this.Controls.Add(this.label4); + this.Controls.Add(this.label5); + this.Controls.Add(this.label6); + this.Controls.Add(this.txtZero2); + this.Controls.Add(this.txtFour2); + this.Controls.Add(this.txtTwelve2); + this.Controls.Add(this.txtStatus); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Controls.Add(this.txtZero1); + this.Controls.Add(this.txtFour1); + this.Controls.Add(this.txtTwelve1); + this.Controls.Add(this.btnGo); + this.Controls.Add(this.dtpTo); + this.Controls.Add(this.dtpFrom); + this.Name = "ReplaceForm"; + this.Text = "UpdateForm"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.DateTimePicker dtpFrom; + private System.Windows.Forms.DateTimePicker dtpTo; + private System.Windows.Forms.Button btnGo; + private System.Windows.Forms.TextBox txtTwelve1; + private System.Windows.Forms.TextBox txtFour1; + private System.Windows.Forms.TextBox txtZero1; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox txtStatus; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.TextBox txtZero2; + private System.Windows.Forms.TextBox txtFour2; + private System.Windows.Forms.TextBox txtTwelve2; + private System.Windows.Forms.TextBox txtOne; + private System.Windows.Forms.TextBox txtTwo; + } +} \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/Updates/ReplaceForm.cs b/Tanshu.Accounts.PointOfSale/Updates/ReplaceForm.cs new file mode 100644 index 0000000..bba3eba --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Updates/ReplaceForm.cs @@ -0,0 +1,71 @@ +using System; +using System.Linq; +using System.Threading; +using System.Windows.Forms; +using Tanshu.Accounts.Helpers; +using System.Collections.Generic; +using Tanshu.Accounts.BI; +using Tanshu.Accounts.Contracts; +using System.Data.SqlClient; +using System.Configuration; + +namespace Tanshu.Accounts.PointOfSale +{ + public partial class ReplaceForm : Form + { + public ReplaceForm() + { + InitializeComponent(); + } + + private void btnGo_Click(object sender, EventArgs e) + { + if (!Thread.CurrentPrincipal.IsInRole("Security/CreateUser")) + return; + dtpFrom.Value = Convert.ToDateTime(string.Format("{0:dd-MMM-yyyy} 00:00:00", dtpFrom.Value)); + dtpTo.Value = Convert.ToDateTime(string.Format("{0:dd-MMM-yyyy} 23:59:59", dtpTo.Value)); + + string query = string.Empty; + if (txtStatus.Text == "") + { + txtZero1.Text = GetBalance(0M, txtOne.Text, dtpFrom.Value, dtpTo.Value).ToString(); + txtFour1.Text = GetBalance(.04M, txtOne.Text, dtpFrom.Value, dtpTo.Value).ToString(); + txtTwelve1.Text = GetBalance(0.125M, txtOne.Text, dtpFrom.Value, dtpTo.Value).ToString(); + + txtZero2.Text = GetBalance(0M, txtTwo.Text, dtpFrom.Value, dtpTo.Value).ToString(); + txtFour2.Text = GetBalance(.04M, txtTwo.Text, dtpFrom.Value, dtpTo.Value).ToString(); + txtTwelve2.Text = GetBalance(0.125M, txtTwo.Text, dtpFrom.Value, dtpTo.Value).ToString(); + txtStatus.Text = "Initial Values Loaded"; + } + else + { + Update(txtOne.Text, txtTwo.Text, dtpFrom.Value, dtpTo.Value); + MessageBox.Show("Data Merged"); + } + } + private decimal GetBalance(decimal tax, string database, DateTime startDate, DateTime finishDate) + { + string query = @" +SELECT ISNULL(SUM(i.Amount), 0) FROM {0}.dbo.Vouchers t INNER JOIN {0}.dbo.SaleVoucher s ON t.VoucherID = s.VoucherID +INNER JOIN {0}.dbo.Inventory i ON t.VoucherID = i.VoucherID +WHERE t.Type = 'S' AND t.Date BETWEEN @StartDate AND @FinishDate AND s.Void = 0 AND s.Paid = 1 +AND i.Tax = @Tax +"; + using (SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["connection"].ConnectionString)) + { + con.Open(); + using (SqlCommand cmd = new SqlCommand(string.Format(query, database), con)) + { + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@FinishDate", finishDate); + cmd.Parameters.AddWithValue("@Tax", tax); + return (decimal)cmd.ExecuteScalar(); + } + } + } + private bool Update(string sourceDB, string targetDB, DateTime startDate, DateTime finishDate) + { + return new ManagementBI().MergeData(startDate, finishDate, sourceDB, targetDB); + } + } +} \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/Updates/ReplaceForm.resx b/Tanshu.Accounts.PointOfSale/Updates/ReplaceForm.resx new file mode 100644 index 0000000..19dc0dd --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Updates/ReplaceForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/Updates/SaleTaxReportForm.cs b/Tanshu.Accounts.PointOfSale/Updates/SaleTaxReportForm.cs new file mode 100644 index 0000000..08f724f --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Updates/SaleTaxReportForm.cs @@ -0,0 +1,78 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using System.Data.SqlClient; +using System.Configuration; +using Tanshu.Accounts.Helpers; +using Tanshu.Accounts.Contracts; +using Tanshu.Accounts.BI; + +namespace Tanshu.Accounts.PointOfSale +{ + public partial class SaleTaxReportForm : Form + { + List det; + public SaleTaxReportForm() + { + InitializeComponent(); + } + + private void dtpStart_ValueChanged(object sender, EventArgs e) + { + ShowStatement(); + } + + private void ShowStatement() + { + DateTime startDate = Convert.ToDateTime(String.Format("{0:dd-MMM-yyyy} 00:00:00", dtpStart.Value)); + DateTime finishDate = Convert.ToDateTime(String.Format("{0:dd-MMM-yyyy} 23:59:59", dtpFinish.Value)); + + decimal freeSale = 0, voids = 0, pending = 0, net = 0, tax = 0; + det = new SalesAnalysisBI().GetSalesTaxReturn(startDate, finishDate, ref freeSale, ref voids, ref pending, ref net, ref tax); + + //dc.CommandTimeout = 50000; + dgvSale.AutoGenerateColumns = true; + dgvSale.DataSource = det; + dgvSale.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells; + dgvSale.Columns[0].Visible = false; + dgvSale.Columns[1].DefaultCellStyle.Format = "%"; + dgvSale.Columns[2].DefaultCellStyle.Format = "#,##0.00;(#,##0.00);0"; + dgvSale.Columns[3].DefaultCellStyle.Format = "#,##0.00;(#,##0.00);0"; + dgvSale.Columns[4].DefaultCellStyle.Format = "#,##0.00;(#,##0.00);0"; + + // txtFreeSale.Text = String.Format("{0:#,##0.00;(#,##0.00);0}", freeSale); + txtVoid.Text = String.Format("{0:#,##0.00;(#,##0.00);0}", voids); + txtPending.Text = String.Format("{0:#,##0.00;(#,##0.00);0}", pending); + txtNet.Text = String.Format("{0:#,##0.00;(#,##0.00);0}", net); + txtTax.Text = String.Format("{0:#,##0.00;(#,##0.00);0}", tax); + txtGross.Text = String.Format("{0:#,##0.00;(#,##0.00);0}", net + tax); + } + + private void dtpFinish_ValueChanged(object sender, EventArgs e) + { + ShowStatement(); + } + + private void Sale_Analysis_Form_Load(object sender, EventArgs e) + { + dtpStart.Value = DateTime.Now; + dtpFinish.Value = DateTime.Now; + ShowStatement(); + } + + private void btnPrint_Click(object sender, EventArgs e) + { + if (det != null) + { + DateTime startDate = Convert.ToDateTime(String.Format("{0:dd-MMM-yyyy} 00:00:00", dtpStart.Value)); + DateTime finishDate = Convert.ToDateTime(String.Format("{0:dd-MMM-yyyy} 23:59:59", dtpFinish.Value)); + Tanshu.Accounts.Print.Thermal.PrintSale(det, startDate, finishDate); + } + } + } +} diff --git a/Tanshu.Accounts.PointOfSale/Updates/SaleTaxReportForm.designer.cs b/Tanshu.Accounts.PointOfSale/Updates/SaleTaxReportForm.designer.cs new file mode 100644 index 0000000..df26e9f --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Updates/SaleTaxReportForm.designer.cs @@ -0,0 +1,239 @@ +namespace Tanshu.Accounts.PointOfSale +{ + partial class SaleTaxReportForm + { + /// + /// 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.txtNet = new System.Windows.Forms.TextBox(); + this.txtTax = new System.Windows.Forms.TextBox(); + this.txtGross = new System.Windows.Forms.TextBox(); + this.txtPending = new System.Windows.Forms.TextBox(); + this.txtVoid = new System.Windows.Forms.TextBox(); + this.label5 = new System.Windows.Forms.Label(); + this.label4 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.dgvSale = new System.Windows.Forms.DataGridView(); + this.dtpFinish = new System.Windows.Forms.DateTimePicker(); + this.dtpStart = new System.Windows.Forms.DateTimePicker(); + this.label10 = new System.Windows.Forms.Label(); + this.btnPrint = new System.Windows.Forms.Button(); + ((System.ComponentModel.ISupportInitialize)(this.dgvSale)).BeginInit(); + this.SuspendLayout(); + // + // txtNet + // + this.txtNet.Location = new System.Drawing.Point(224, 487); + this.txtNet.Name = "txtNet"; + this.txtNet.ReadOnly = true; + this.txtNet.Size = new System.Drawing.Size(100, 20); + this.txtNet.TabIndex = 17; + // + // txtTax + // + this.txtTax.Location = new System.Drawing.Point(330, 487); + this.txtTax.Name = "txtTax"; + this.txtTax.ReadOnly = true; + this.txtTax.Size = new System.Drawing.Size(100, 20); + this.txtTax.TabIndex = 18; + // + // txtGross + // + this.txtGross.Location = new System.Drawing.Point(436, 487); + this.txtGross.Name = "txtGross"; + this.txtGross.ReadOnly = true; + this.txtGross.Size = new System.Drawing.Size(100, 20); + this.txtGross.TabIndex = 19; + // + // txtPending + // + this.txtPending.Location = new System.Drawing.Point(118, 487); + this.txtPending.Name = "txtPending"; + this.txtPending.ReadOnly = true; + this.txtPending.Size = new System.Drawing.Size(100, 20); + this.txtPending.TabIndex = 16; + // + // txtVoid + // + this.txtVoid.Location = new System.Drawing.Point(12, 487); + this.txtVoid.Name = "txtVoid"; + this.txtVoid.ReadOnly = true; + this.txtVoid.Size = new System.Drawing.Size(100, 20); + this.txtVoid.TabIndex = 15; + // + // label5 + // + this.label5.AutoSize = true; + this.label5.Location = new System.Drawing.Point(115, 471); + this.label5.Name = "label5"; + this.label5.Size = new System.Drawing.Size(70, 13); + this.label5.TabIndex = 24; + this.label5.Text = "Pending Sale"; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(12, 471); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(52, 13); + this.label4.TabIndex = 23; + this.label4.Text = "Void Sale"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(327, 471); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(25, 13); + this.label3.TabIndex = 26; + this.label3.Text = "Tax"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(433, 471); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(58, 13); + this.label2.TabIndex = 27; + this.label2.Text = "Gross Sale"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(221, 471); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(48, 13); + this.label1.TabIndex = 25; + this.label1.Text = "Net Sale"; + // + // dgvSale + // + this.dgvSale.AllowUserToAddRows = false; + this.dgvSale.AllowUserToDeleteRows = false; + this.dgvSale.AllowUserToResizeRows = false; + this.dgvSale.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dgvSale.Location = new System.Drawing.Point(12, 41); + this.dgvSale.MultiSelect = false; + this.dgvSale.Name = "dgvSale"; + this.dgvSale.ReadOnly = true; + this.dgvSale.RowHeadersVisible = false; + this.dgvSale.RowTemplate.Height = 19; + this.dgvSale.RowTemplate.ReadOnly = true; + this.dgvSale.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.dgvSale.Size = new System.Drawing.Size(524, 427); + this.dgvSale.TabIndex = 14; + // + // dtpFinish + // + this.dtpFinish.CustomFormat = "dd-MMM-yyyy"; + this.dtpFinish.Format = System.Windows.Forms.DateTimePickerFormat.Custom; + this.dtpFinish.Location = new System.Drawing.Point(168, 12); + this.dtpFinish.Name = "dtpFinish"; + this.dtpFinish.Size = new System.Drawing.Size(90, 20); + this.dtpFinish.TabIndex = 21; + this.dtpFinish.ValueChanged += new System.EventHandler(this.dtpFinish_ValueChanged); + // + // dtpStart + // + this.dtpStart.CustomFormat = "dd-MMM-yyyy"; + this.dtpStart.Format = System.Windows.Forms.DateTimePickerFormat.Custom; + this.dtpStart.Location = new System.Drawing.Point(12, 12); + this.dtpStart.Name = "dtpStart"; + this.dtpStart.Size = new System.Drawing.Size(90, 20); + this.dtpStart.TabIndex = 20; + this.dtpStart.ValueChanged += new System.EventHandler(this.dtpStart_ValueChanged); + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Location = new System.Drawing.Point(108, 16); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(54, 13); + this.label10.TabIndex = 22; + this.label10.Text = "<- Date ->"; + // + // btnPrint + // + this.btnPrint.Location = new System.Drawing.Point(461, 12); + this.btnPrint.Name = "btnPrint"; + this.btnPrint.Size = new System.Drawing.Size(75, 23); + this.btnPrint.TabIndex = 28; + this.btnPrint.Text = "Print"; + this.btnPrint.UseVisualStyleBackColor = true; + this.btnPrint.Click += new System.EventHandler(this.btnPrint_Click); + // + // frmSaleAnalysisForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(548, 519); + this.Controls.Add(this.btnPrint); + this.Controls.Add(this.txtNet); + this.Controls.Add(this.txtTax); + this.Controls.Add(this.txtGross); + this.Controls.Add(this.txtPending); + this.Controls.Add(this.txtVoid); + this.Controls.Add(this.label5); + this.Controls.Add(this.label4); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Controls.Add(this.dgvSale); + this.Controls.Add(this.dtpFinish); + this.Controls.Add(this.dtpStart); + this.Controls.Add(this.label10); + this.MaximizeBox = false; + this.Name = "frmSaleAnalysisForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Sale Analysis Form"; + this.Load += new System.EventHandler(this.Sale_Analysis_Form_Load); + ((System.ComponentModel.ISupportInitialize)(this.dgvSale)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TextBox txtNet; + private System.Windows.Forms.TextBox txtTax; + private System.Windows.Forms.TextBox txtGross; + private System.Windows.Forms.TextBox txtPending; + private System.Windows.Forms.TextBox txtVoid; + private System.Windows.Forms.Label label5; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.DataGridView dgvSale; + private System.Windows.Forms.DateTimePicker dtpFinish; + private System.Windows.Forms.DateTimePicker dtpStart; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Button btnPrint; + } +} \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/Updates/SaleTaxReportForm.resx b/Tanshu.Accounts.PointOfSale/Updates/SaleTaxReportForm.resx new file mode 100644 index 0000000..19dc0dd --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Updates/SaleTaxReportForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/Updates/UpdateForm.Designer.cs b/Tanshu.Accounts.PointOfSale/Updates/UpdateForm.Designer.cs new file mode 100644 index 0000000..573f855 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Updates/UpdateForm.Designer.cs @@ -0,0 +1,161 @@ +namespace Tanshu.Accounts.PointOfSale +{ + partial class UpdateForm + { + /// + /// 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.dtpFrom = new System.Windows.Forms.DateTimePicker(); + this.dtpTo = new System.Windows.Forms.DateTimePicker(); + this.btnGo = new System.Windows.Forms.Button(); + this.txtTwelve = new System.Windows.Forms.TextBox(); + this.txtFour = new System.Windows.Forms.TextBox(); + this.txtZero = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.txtStatus = new System.Windows.Forms.TextBox(); + this.SuspendLayout(); + // + // dtpFrom + // + this.dtpFrom.Location = new System.Drawing.Point(12, 12); + this.dtpFrom.Name = "dtpFrom"; + this.dtpFrom.Size = new System.Drawing.Size(268, 20); + this.dtpFrom.TabIndex = 0; + // + // dtpTo + // + this.dtpTo.Location = new System.Drawing.Point(12, 38); + this.dtpTo.Name = "dtpTo"; + this.dtpTo.Size = new System.Drawing.Size(268, 20); + this.dtpTo.TabIndex = 1; + // + // btnGo + // + this.btnGo.Location = new System.Drawing.Point(12, 142); + this.btnGo.Name = "btnGo"; + this.btnGo.Size = new System.Drawing.Size(268, 23); + this.btnGo.TabIndex = 5; + this.btnGo.Text = "Go"; + this.btnGo.UseVisualStyleBackColor = true; + this.btnGo.Click += new System.EventHandler(this.btnGo_Click); + // + // txtTwelve + // + this.txtTwelve.Location = new System.Drawing.Point(50, 116); + this.txtTwelve.Name = "txtTwelve"; + this.txtTwelve.Size = new System.Drawing.Size(230, 20); + this.txtTwelve.TabIndex = 4; + this.txtTwelve.Text = "0"; + // + // txtFour + // + this.txtFour.Location = new System.Drawing.Point(50, 90); + this.txtFour.Name = "txtFour"; + this.txtFour.Size = new System.Drawing.Size(230, 20); + this.txtFour.TabIndex = 3; + this.txtFour.Text = "0"; + // + // txtZero + // + this.txtZero.Location = new System.Drawing.Point(50, 64); + this.txtZero.Name = "txtZero"; + this.txtZero.Size = new System.Drawing.Size(230, 20); + this.txtZero.TabIndex = 2; + this.txtZero.Text = "0"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(12, 67); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(21, 13); + this.label1.TabIndex = 6; + this.label1.Text = "0%"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(12, 93); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(21, 13); + this.label2.TabIndex = 7; + this.label2.Text = "4%"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(12, 119); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(36, 13); + this.label3.TabIndex = 8; + this.label3.Text = "12.5%"; + // + // txtStatus + // + this.txtStatus.Location = new System.Drawing.Point(12, 171); + this.txtStatus.Name = "txtStatus"; + this.txtStatus.ReadOnly = true; + this.txtStatus.Size = new System.Drawing.Size(268, 20); + this.txtStatus.TabIndex = 9; + // + // UpdateForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(292, 203); + this.Controls.Add(this.txtStatus); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Controls.Add(this.txtZero); + this.Controls.Add(this.txtFour); + this.Controls.Add(this.txtTwelve); + this.Controls.Add(this.btnGo); + this.Controls.Add(this.dtpTo); + this.Controls.Add(this.dtpFrom); + this.Name = "UpdateForm"; + this.Text = "UpdateForm"; + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.DateTimePicker dtpFrom; + private System.Windows.Forms.DateTimePicker dtpTo; + private System.Windows.Forms.Button btnGo; + private System.Windows.Forms.TextBox txtTwelve; + private System.Windows.Forms.TextBox txtFour; + private System.Windows.Forms.TextBox txtZero; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox txtStatus; + } +} \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/Updates/UpdateForm.cs b/Tanshu.Accounts.PointOfSale/Updates/UpdateForm.cs new file mode 100644 index 0000000..fb166b5 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Updates/UpdateForm.cs @@ -0,0 +1,107 @@ +using System; +using System.Linq; +using System.Threading; +using System.Windows.Forms; +using Tanshu.Accounts.Helpers; +using System.Collections.Generic; +using Tanshu.Accounts.BI; +using Tanshu.Accounts.Contracts; + +namespace Tanshu.Accounts.PointOfSale +{ + public partial class UpdateForm : Form + { + private delegate decimal GetTextboxValueDelegate(TextBox textbox); + private delegate decimal ProcessDelegate(DateTime startDate, DateTime endDate, decimal target, decimal tax); + ProcessDelegate processDelegate; + public UpdateForm() + { + InitializeComponent(); + } + public void ShowProgress(decimal minimum, decimal total, decimal current, string message) + { + if (!txtStatus.InvokeRequired) + { + txtStatus.Text = string.Format("{0:#,###} / {1:#,###} :: {2}", current, total, message); + } + else + { + ShowProgessDelegate showProgress = new ShowProgessDelegate(ShowProgress); + BeginInvoke(showProgress, new object[] { minimum, total, current, message }); + } + } + + private void btnGo_Click(object sender, EventArgs e) + { + dtpFrom.Value = Convert.ToDateTime(string.Format("{0:dd-MMM-yyyy} 00:00:00", dtpFrom.Value)); + dtpTo.Value = Convert.ToDateTime(string.Format("{0:dd-MMM-yyyy} 23:59:59", dtpTo.Value)); + + if (!Thread.CurrentPrincipal.IsInRole("Security/CreateUser")) + return; + RunUpdate(-1); + } + private void RunUpdate(decimal last) + { + processDelegate = new ProcessDelegate(Process); + if (last == -1) + processDelegate.BeginInvoke(dtpFrom.Value, dtpTo.Value, GetTextboxValue(txtTwelve), .125M, new AsyncCallback(CallbackMethod), null); + if (last == .125M) + processDelegate.BeginInvoke(dtpFrom.Value, dtpTo.Value, GetTextboxValue(txtFour), .04M, new AsyncCallback(CallbackMethod), null); + if (last == .04M) + processDelegate.BeginInvoke(dtpFrom.Value, dtpTo.Value, GetTextboxValue(txtZero), 0M, new AsyncCallback(CallbackMethod), null); + if (last == 0M) + new ManagementBI().Reorder(dtpFrom.Value, dtpTo.Value, ShowProgress); + } + private void CallbackMethod(IAsyncResult ar) + { + decimal tax = processDelegate.EndInvoke(ar); + RunUpdate(tax); + } + private decimal GetTextboxValue(TextBox textbox) + { + if (!textbox.InvokeRequired) + { + decimal value; + if (!decimal.TryParse(textbox.Text, out value)) + value = 0; + return value; + } + else + { + GetTextboxValueDelegate getTextboxValueDelegate = new GetTextboxValueDelegate(GetTextboxValue); + return (decimal)Invoke(getTextboxValueDelegate, new object[] { textbox }); + } + } + private decimal Process(DateTime startDate, DateTime endDate, decimal target, decimal tax) + { + ShowProgress(0, 0, 0, string.Format("Starting work on {0:00.00%}. Target : {1:#,###}", tax, target)); + if (target == 0) + return tax; + ManagementBI man = new ManagementBI(); + List list = man.GetUpdateBillList(tax, false, true, false, dtpFrom.Value, dtpTo.Value); + int totalBills = list.Count; + decimal existing = man.GetBalance(tax, dtpFrom.Value, dtpTo.Value); + int i = 0; + decimal work = existing / (existing - target); + while ((existing > target) && (totalBills > 0)) + { + int runner = Convert.ToInt32(Math.Floor(work * (i + 1) - i)); + if (runner < totalBills - 1) + { + existing -= man.Update(list[runner + 1], tax, dtpFrom.Value, dtpTo.Value); + totalBills--; + i++; + list.Remove(list[runner + 1]); + } + else + { + i = -1; + work = existing / (existing - target); + } + ShowProgress(0, target, existing, string.Format("Working on {0:00.00%}", tax)); + } + ShowProgress(0, target, existing, string.Format("Finished {0:00.00%}", tax)); + return tax; + } + } +} diff --git a/Tanshu.Accounts.PointOfSale/Updates/UpdateForm.resx b/Tanshu.Accounts.PointOfSale/Updates/UpdateForm.resx new file mode 100644 index 0000000..19dc0dd --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Updates/UpdateForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/Updates/UpdateSales.Designer.cs b/Tanshu.Accounts.PointOfSale/Updates/UpdateSales.Designer.cs new file mode 100644 index 0000000..f27cf5e --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Updates/UpdateSales.Designer.cs @@ -0,0 +1,404 @@ +namespace Tanshu.Accounts.PointOfSale.Updates +{ + partial class UpdateSales + { + /// + /// 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(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle(); + this.label1 = new System.Windows.Forms.Label(); + this.txtDiff = new System.Windows.Forms.TextBox(); + this.dgvPending = new System.Windows.Forms.DataGridView(); + this.selectDataGridViewItem = new System.Windows.Forms.DataGridViewButtonColumn(); + this.TableID = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.voucherIDDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.billNoDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.kotDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.tableIDDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.amountDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.importantDataGridViewCheckBoxColumn = new System.Windows.Forms.DataGridViewCheckBoxColumn(); + this.alarmDataGridViewCheckBoxColumn = new System.Windows.Forms.DataGridViewCheckBoxColumn(); + this.bookingTimeDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.lastEditedDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.waiterDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.cashierDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.printedDataGridViewCheckBoxColumn = new System.Windows.Forms.DataGridViewCheckBoxColumn(); + this.alarmTimeDataGridViewTextBoxColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.bsPending = new System.Windows.Forms.BindingSource(this.components); + this.dtpFinish = new System.Windows.Forms.DateTimePicker(); + this.dtpStart = new System.Windows.Forms.DateTimePicker(); + this.label10 = new System.Windows.Forms.Label(); + this.btnShowBill = new System.Windows.Forms.Button(); + this.bindingSource = new System.Windows.Forms.BindingSource(this.components); + this.label2 = new System.Windows.Forms.Label(); + this.txtTarget = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.cmbTax = new System.Windows.Forms.ComboBox(); + ((System.ComponentModel.ISupportInitialize)(this.dgvPending)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsPending)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.bindingSource)).BeginInit(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(600, 18); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(23, 13); + this.label1.TabIndex = 8; + this.label1.Text = "Diff"; + // + // txtDiff + // + this.txtDiff.Location = new System.Drawing.Point(629, 12); + this.txtDiff.Name = "txtDiff"; + this.txtDiff.ReadOnly = true; + this.txtDiff.Size = new System.Drawing.Size(126, 20); + this.txtDiff.TabIndex = 10; + // + // dgvPending + // + this.dgvPending.AllowUserToAddRows = false; + this.dgvPending.AllowUserToDeleteRows = false; + this.dgvPending.AllowUserToOrderColumns = true; + this.dgvPending.AllowUserToResizeRows = false; + this.dgvPending.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.dgvPending.AutoGenerateColumns = false; + this.dgvPending.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.DisplayedCells; + dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle4.BackColor = System.Drawing.SystemColors.Control; + dataGridViewCellStyle4.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + dataGridViewCellStyle4.ForeColor = System.Drawing.SystemColors.WindowText; + dataGridViewCellStyle4.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle4.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.dgvPending.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle4; + this.dgvPending.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.dgvPending.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.selectDataGridViewItem, + this.TableID, + this.voucherIDDataGridViewTextBoxColumn, + this.billNoDataGridViewTextBoxColumn, + this.kotDataGridViewTextBoxColumn, + this.tableIDDataGridViewTextBoxColumn, + this.amountDataGridViewTextBoxColumn, + this.importantDataGridViewCheckBoxColumn, + this.alarmDataGridViewCheckBoxColumn, + this.bookingTimeDataGridViewTextBoxColumn, + this.lastEditedDataGridViewTextBoxColumn, + this.waiterDataGridViewTextBoxColumn, + this.cashierDataGridViewTextBoxColumn, + this.printedDataGridViewCheckBoxColumn, + this.alarmTimeDataGridViewTextBoxColumn}); + this.dgvPending.DataSource = this.bsPending; + dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle5.BackColor = System.Drawing.SystemColors.Window; + dataGridViewCellStyle5.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + dataGridViewCellStyle5.ForeColor = System.Drawing.SystemColors.ControlText; + dataGridViewCellStyle5.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle5.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dgvPending.DefaultCellStyle = dataGridViewCellStyle5; + this.dgvPending.Location = new System.Drawing.Point(12, 38); + this.dgvPending.MultiSelect = false; + this.dgvPending.Name = "dgvPending"; + dataGridViewCellStyle6.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle6.BackColor = System.Drawing.SystemColors.Control; + dataGridViewCellStyle6.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + dataGridViewCellStyle6.ForeColor = System.Drawing.SystemColors.WindowText; + dataGridViewCellStyle6.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle6.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle6.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.dgvPending.RowHeadersDefaultCellStyle = dataGridViewCellStyle6; + this.dgvPending.RowHeadersVisible = false; + this.dgvPending.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.dgvPending.Size = new System.Drawing.Size(743, 500); + this.dgvPending.TabIndex = 9; + this.dgvPending.VirtualMode = true; + this.dgvPending.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvPending_CellContentClick); + // + // selectDataGridViewItem + // + this.selectDataGridViewItem.HeaderText = "Select"; + this.selectDataGridViewItem.Name = "selectDataGridViewItem"; + this.selectDataGridViewItem.Resizable = System.Windows.Forms.DataGridViewTriState.True; + this.selectDataGridViewItem.Text = "Select"; + this.selectDataGridViewItem.UseColumnTextForButtonValue = true; + this.selectDataGridViewItem.Width = 43; + // + // TableID + // + this.TableID.DataPropertyName = "TableID"; + this.TableID.HeaderText = "TableID"; + this.TableID.Name = "TableID"; + this.TableID.Width = 70; + // + // voucherIDDataGridViewTextBoxColumn + // + this.voucherIDDataGridViewTextBoxColumn.DataPropertyName = "voucherID"; + this.voucherIDDataGridViewTextBoxColumn.HeaderText = "voucherID"; + this.voucherIDDataGridViewTextBoxColumn.Name = "voucherIDDataGridViewTextBoxColumn"; + this.voucherIDDataGridViewTextBoxColumn.Visible = false; + this.voucherIDDataGridViewTextBoxColumn.Width = 82; + // + // billNoDataGridViewTextBoxColumn + // + this.billNoDataGridViewTextBoxColumn.DataPropertyName = "BillNo"; + this.billNoDataGridViewTextBoxColumn.HeaderText = "BillNo"; + this.billNoDataGridViewTextBoxColumn.Name = "billNoDataGridViewTextBoxColumn"; + this.billNoDataGridViewTextBoxColumn.Width = 59; + // + // kotDataGridViewTextBoxColumn + // + this.kotDataGridViewTextBoxColumn.DataPropertyName = "Kot"; + this.kotDataGridViewTextBoxColumn.HeaderText = "Kot"; + this.kotDataGridViewTextBoxColumn.Name = "kotDataGridViewTextBoxColumn"; + this.kotDataGridViewTextBoxColumn.Width = 48; + // + // tableIDDataGridViewTextBoxColumn + // + this.tableIDDataGridViewTextBoxColumn.DataPropertyName = "TableID"; + this.tableIDDataGridViewTextBoxColumn.HeaderText = "TableID"; + this.tableIDDataGridViewTextBoxColumn.Name = "tableIDDataGridViewTextBoxColumn"; + this.tableIDDataGridViewTextBoxColumn.Width = 70; + // + // amountDataGridViewTextBoxColumn + // + this.amountDataGridViewTextBoxColumn.DataPropertyName = "Amount"; + this.amountDataGridViewTextBoxColumn.HeaderText = "Amount"; + this.amountDataGridViewTextBoxColumn.Name = "amountDataGridViewTextBoxColumn"; + this.amountDataGridViewTextBoxColumn.Width = 68; + // + // importantDataGridViewCheckBoxColumn + // + this.importantDataGridViewCheckBoxColumn.DataPropertyName = "Important"; + this.importantDataGridViewCheckBoxColumn.HeaderText = "Important"; + this.importantDataGridViewCheckBoxColumn.Name = "importantDataGridViewCheckBoxColumn"; + this.importantDataGridViewCheckBoxColumn.Visible = false; + this.importantDataGridViewCheckBoxColumn.Width = 57; + // + // alarmDataGridViewCheckBoxColumn + // + this.alarmDataGridViewCheckBoxColumn.DataPropertyName = "Alarm"; + this.alarmDataGridViewCheckBoxColumn.HeaderText = "Alarm"; + this.alarmDataGridViewCheckBoxColumn.Name = "alarmDataGridViewCheckBoxColumn"; + this.alarmDataGridViewCheckBoxColumn.Visible = false; + this.alarmDataGridViewCheckBoxColumn.Width = 39; + // + // bookingTimeDataGridViewTextBoxColumn + // + this.bookingTimeDataGridViewTextBoxColumn.DataPropertyName = "BookingTime"; + this.bookingTimeDataGridViewTextBoxColumn.HeaderText = "BookingTime"; + this.bookingTimeDataGridViewTextBoxColumn.Name = "bookingTimeDataGridViewTextBoxColumn"; + this.bookingTimeDataGridViewTextBoxColumn.Width = 94; + // + // lastEditedDataGridViewTextBoxColumn + // + this.lastEditedDataGridViewTextBoxColumn.DataPropertyName = "LastEdited"; + this.lastEditedDataGridViewTextBoxColumn.HeaderText = "LastEdited"; + this.lastEditedDataGridViewTextBoxColumn.Name = "lastEditedDataGridViewTextBoxColumn"; + this.lastEditedDataGridViewTextBoxColumn.Width = 82; + // + // waiterDataGridViewTextBoxColumn + // + this.waiterDataGridViewTextBoxColumn.DataPropertyName = "Waiter"; + this.waiterDataGridViewTextBoxColumn.HeaderText = "Waiter"; + this.waiterDataGridViewTextBoxColumn.Name = "waiterDataGridViewTextBoxColumn"; + this.waiterDataGridViewTextBoxColumn.Width = 63; + // + // cashierDataGridViewTextBoxColumn + // + this.cashierDataGridViewTextBoxColumn.DataPropertyName = "Cashier"; + this.cashierDataGridViewTextBoxColumn.HeaderText = "Cashier"; + this.cashierDataGridViewTextBoxColumn.Name = "cashierDataGridViewTextBoxColumn"; + this.cashierDataGridViewTextBoxColumn.Width = 67; + // + // printedDataGridViewCheckBoxColumn + // + this.printedDataGridViewCheckBoxColumn.DataPropertyName = "Printed"; + this.printedDataGridViewCheckBoxColumn.HeaderText = "Printed"; + this.printedDataGridViewCheckBoxColumn.Name = "printedDataGridViewCheckBoxColumn"; + this.printedDataGridViewCheckBoxColumn.Visible = false; + this.printedDataGridViewCheckBoxColumn.Width = 46; + // + // alarmTimeDataGridViewTextBoxColumn + // + this.alarmTimeDataGridViewTextBoxColumn.DataPropertyName = "AlarmTime"; + this.alarmTimeDataGridViewTextBoxColumn.HeaderText = "AlarmTime"; + this.alarmTimeDataGridViewTextBoxColumn.Name = "alarmTimeDataGridViewTextBoxColumn"; + this.alarmTimeDataGridViewTextBoxColumn.Visible = false; + this.alarmTimeDataGridViewTextBoxColumn.Width = 81; + // + // bsPending + // + this.bsPending.DataSource = typeof(Tanshu.Accounts.Contracts.PendingBillsBO); + // + // dtpFinish + // + this.dtpFinish.CustomFormat = "dd-MMM-yyyy"; + this.dtpFinish.Format = System.Windows.Forms.DateTimePickerFormat.Custom; + this.dtpFinish.Location = new System.Drawing.Point(168, 12); + this.dtpFinish.Name = "dtpFinish"; + this.dtpFinish.Size = new System.Drawing.Size(90, 20); + this.dtpFinish.TabIndex = 2; + // + // dtpStart + // + this.dtpStart.CustomFormat = "dd-MMM-yyyy"; + this.dtpStart.Format = System.Windows.Forms.DateTimePickerFormat.Custom; + this.dtpStart.Location = new System.Drawing.Point(12, 12); + this.dtpStart.Name = "dtpStart"; + this.dtpStart.Size = new System.Drawing.Size(90, 20); + this.dtpStart.TabIndex = 0; + // + // label10 + // + this.label10.AutoSize = true; + this.label10.Location = new System.Drawing.Point(108, 18); + this.label10.Name = "label10"; + this.label10.Size = new System.Drawing.Size(54, 13); + this.label10.TabIndex = 1; + this.label10.Text = "<- Date ->"; + // + // btnShowBill + // + this.btnShowBill.Location = new System.Drawing.Point(264, 12); + this.btnShowBill.Name = "btnShowBill"; + this.btnShowBill.Size = new System.Drawing.Size(70, 20); + this.btnShowBill.TabIndex = 3; + this.btnShowBill.Text = "Show List"; + this.btnShowBill.UseVisualStyleBackColor = true; + this.btnShowBill.Click += new System.EventHandler(this.btnShowBill_Click); + // + // bindingSource + // + this.bindingSource.DataSource = typeof(Tanshu.Accounts.Contracts.SalesBillItemBO); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(340, 18); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(25, 13); + this.label2.TabIndex = 4; + this.label2.Text = "Tax"; + // + // txtTarget + // + this.txtTarget.Location = new System.Drawing.Point(474, 12); + this.txtTarget.Name = "txtTarget"; + this.txtTarget.Size = new System.Drawing.Size(120, 20); + this.txtTarget.TabIndex = 7; + this.txtTarget.Text = "0"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(430, 18); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(38, 13); + this.label3.TabIndex = 6; + this.label3.Text = "Target"; + // + // cmbTax + // + this.cmbTax.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbTax.FormattingEnabled = true; + this.cmbTax.Items.AddRange(new object[] { + "0%", + "4%", + "12.5%"}); + this.cmbTax.Location = new System.Drawing.Point(371, 10); + this.cmbTax.Name = "cmbTax"; + this.cmbTax.Size = new System.Drawing.Size(53, 21); + this.cmbTax.TabIndex = 5; + // + // UpdateSales + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(767, 544); + this.Controls.Add(this.cmbTax); + this.Controls.Add(this.label3); + this.Controls.Add(this.txtTarget); + this.Controls.Add(this.label2); + this.Controls.Add(this.btnShowBill); + this.Controls.Add(this.dtpFinish); + this.Controls.Add(this.dtpStart); + this.Controls.Add(this.label10); + this.Controls.Add(this.dgvPending); + this.Controls.Add(this.txtDiff); + this.Controls.Add(this.label1); + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "UpdateSales"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Update Sales"; + ((System.ComponentModel.ISupportInitialize)(this.dgvPending)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bsPending)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.bindingSource)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox txtDiff; + private System.Windows.Forms.DataGridView dgvPending; + private System.Windows.Forms.DateTimePicker dtpFinish; + private System.Windows.Forms.DateTimePicker dtpStart; + private System.Windows.Forms.Label label10; + private System.Windows.Forms.Button btnShowBill; + private System.Windows.Forms.BindingSource bsPending; + private System.Windows.Forms.BindingSource bindingSource; + private System.Windows.Forms.DataGridViewButtonColumn selectDataGridViewItem; + private System.Windows.Forms.DataGridViewTextBoxColumn TableID; + private System.Windows.Forms.DataGridViewTextBoxColumn voucherIDDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn billNoDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn kotDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn tableIDDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn amountDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewCheckBoxColumn importantDataGridViewCheckBoxColumn; + private System.Windows.Forms.DataGridViewCheckBoxColumn alarmDataGridViewCheckBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn bookingTimeDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn lastEditedDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn waiterDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn cashierDataGridViewTextBoxColumn; + private System.Windows.Forms.DataGridViewCheckBoxColumn printedDataGridViewCheckBoxColumn; + private System.Windows.Forms.DataGridViewTextBoxColumn alarmTimeDataGridViewTextBoxColumn; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox txtTarget; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.ComboBox cmbTax; + } +} \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/Updates/UpdateSales.cs b/Tanshu.Accounts.PointOfSale/Updates/UpdateSales.cs new file mode 100644 index 0000000..455987b --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Updates/UpdateSales.cs @@ -0,0 +1,53 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Globalization; +using System.Linq; +using System.Threading; +using System.Windows.Forms; +using Tanshu.Accounts.BI; +using Tanshu.Accounts.Contracts; +using Tanshu.Accounts.Helpers; +using Tanshu.Common; + +namespace Tanshu.Accounts.PointOfSale.Updates +{ + public partial class UpdateSales : Form + { + private List pendingBills = new List(); + public UpdateSales() + { + InitializeComponent(); + } + + private void btnShowBill_Click(object sender, EventArgs e) + { + dtpStart.Value = dtpStart.Value.Date; + dtpFinish.Value = dtpFinish.Value.Date.AddDays(1).AddSeconds(-1); + pendingBills = new ManagementBI().GetPaidBills(dtpStart.Value, dtpFinish.Value); + bsPending.DataSource = pendingBills; + decimal? tax = null; + if (cmbTax.Text == "0%") + tax = 0; + else if (cmbTax.Text == "4%") + tax = .04M; + else if (cmbTax.Text == "12.5%") + tax = .125M; + decimal target = Convert.ToDecimal(txtTarget.Text); + decimal existing = new ManagementBI().GetBalance(tax, dtpStart.Value, dtpFinish.Value); + txtDiff.Text = (target - existing).ToString("#,##.00"); + } + + private void dgvPending_CellContentClick(object sender, DataGridViewCellEventArgs e) + { + if (bsPending.Current != null) + { + //Guid gd = new Guid(dgvPending.Rows[e.RowIndex].Cells[2].Value.ToString()); + PendingBillsBO current = (PendingBillsBO)bsPending.Current; + using (SalesForm frmSale = new SalesForm(current.voucherID)) + frmSale.ShowDialog(); + btnShowBill_Click(this, null); + } + } + } +} diff --git a/Tanshu.Accounts.PointOfSale/Updates/UpdateSales.resx b/Tanshu.Accounts.PointOfSale/Updates/UpdateSales.resx new file mode 100644 index 0000000..bc3583c --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/Updates/UpdateSales.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 + + + 36, 6 + + + 145, 6 + + \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/User Management/AssignRoles.Designer.cs b/Tanshu.Accounts.PointOfSale/User Management/AssignRoles.Designer.cs new file mode 100644 index 0000000..27ce76f --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/User Management/AssignRoles.Designer.cs @@ -0,0 +1,179 @@ +namespace Tanshu.Accounts.PointOfSale +{ + partial class AssignRoles + { + /// + /// 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.lstRoles = new System.Windows.Forms.ListBox(); + this.lstUserRoles = new System.Windows.Forms.ListBox(); + this.cmbUsers = new System.Windows.Forms.ComboBox(); + this.label1 = new System.Windows.Forms.Label(); + this.label2 = new System.Windows.Forms.Label(); + this.label3 = new System.Windows.Forms.Label(); + this.btnAddSelected = new System.Windows.Forms.Button(); + this.btnAddAll = new System.Windows.Forms.Button(); + this.btnRemoveSelected = new System.Windows.Forms.Button(); + this.btnRemoveAll = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // lstRoles + // + this.lstRoles.FormattingEnabled = true; + this.lstRoles.Location = new System.Drawing.Point(12, 59); + this.lstRoles.Name = "lstRoles"; + this.lstRoles.Size = new System.Drawing.Size(183, 225); + this.lstRoles.TabIndex = 0; + // + // lstUserRoles + // + this.lstUserRoles.FormattingEnabled = true; + this.lstUserRoles.Location = new System.Drawing.Point(274, 59); + this.lstUserRoles.Name = "lstUserRoles"; + this.lstUserRoles.Size = new System.Drawing.Size(183, 225); + this.lstUserRoles.TabIndex = 1; + // + // cmbUsers + // + this.cmbUsers.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbUsers.FormattingEnabled = true; + this.cmbUsers.Location = new System.Drawing.Point(72, 12); + this.cmbUsers.Name = "cmbUsers"; + this.cmbUsers.Size = new System.Drawing.Size(276, 21); + this.cmbUsers.TabIndex = 2; + this.cmbUsers.SelectedIndexChanged += new System.EventHandler(this.cmbUsers_SelectedIndexChanged); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(9, 12); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(60, 13); + this.label1.TabIndex = 4; + this.label1.Text = "User Name"; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(12, 43); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(76, 13); + this.label2.TabIndex = 5; + this.label2.Text = "Pending Roles"; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(271, 43); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(80, 13); + this.label3.TabIndex = 6; + this.label3.Text = "Assigned Roles"; + // + // btnAddSelected + // + this.btnAddSelected.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnAddSelected.Location = new System.Drawing.Point(201, 105); + this.btnAddSelected.Name = "btnAddSelected"; + this.btnAddSelected.Size = new System.Drawing.Size(67, 25); + this.btnAddSelected.TabIndex = 7; + this.btnAddSelected.Text = ">"; + this.btnAddSelected.UseVisualStyleBackColor = true; + this.btnAddSelected.Click += new System.EventHandler(this.btnAddSelected_Click); + // + // btnAddAll + // + this.btnAddAll.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnAddAll.Location = new System.Drawing.Point(201, 136); + this.btnAddAll.Name = "btnAddAll"; + this.btnAddAll.Size = new System.Drawing.Size(67, 25); + this.btnAddAll.TabIndex = 8; + this.btnAddAll.Text = ">>"; + this.btnAddAll.UseVisualStyleBackColor = true; + this.btnAddAll.Click += new System.EventHandler(this.btnAddAll_Click); + // + // btnRemoveSelected + // + this.btnRemoveSelected.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnRemoveSelected.Location = new System.Drawing.Point(201, 167); + this.btnRemoveSelected.Name = "btnRemoveSelected"; + this.btnRemoveSelected.Size = new System.Drawing.Size(67, 25); + this.btnRemoveSelected.TabIndex = 9; + this.btnRemoveSelected.Text = "<"; + this.btnRemoveSelected.UseVisualStyleBackColor = true; + this.btnRemoveSelected.Click += new System.EventHandler(this.btnRemoveSelected_Click); + // + // btnRemoveAll + // + this.btnRemoveAll.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.btnRemoveAll.Location = new System.Drawing.Point(201, 198); + this.btnRemoveAll.Name = "btnRemoveAll"; + this.btnRemoveAll.Size = new System.Drawing.Size(67, 25); + this.btnRemoveAll.TabIndex = 10; + this.btnRemoveAll.Text = "<<"; + this.btnRemoveAll.UseVisualStyleBackColor = true; + this.btnRemoveAll.Click += new System.EventHandler(this.btnRemoveAll_Click); + // + // AssignRoles + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(469, 323); + this.Controls.Add(this.btnRemoveAll); + this.Controls.Add(this.btnRemoveSelected); + this.Controls.Add(this.btnAddAll); + this.Controls.Add(this.btnAddSelected); + this.Controls.Add(this.label3); + this.Controls.Add(this.label2); + this.Controls.Add(this.label1); + this.Controls.Add(this.cmbUsers); + this.Controls.Add(this.lstUserRoles); + this.Controls.Add(this.lstRoles); + this.MaximizeBox = false; + this.Name = "AssignRoles"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "AssignRoles"; + this.Load += new System.EventHandler(this.AssignRoles_Load); + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.AssignRoles_FormClosing); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.ListBox lstRoles; + private System.Windows.Forms.ListBox lstUserRoles; + private System.Windows.Forms.ComboBox cmbUsers; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.Button btnAddSelected; + private System.Windows.Forms.Button btnAddAll; + private System.Windows.Forms.Button btnRemoveSelected; + private System.Windows.Forms.Button btnRemoveAll; + } +} \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/User Management/AssignRoles.cs b/Tanshu.Accounts.PointOfSale/User Management/AssignRoles.cs new file mode 100644 index 0000000..e30d451 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/User Management/AssignRoles.cs @@ -0,0 +1,120 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using Tanshu.Accounts.Helpers; +using System.Threading; +using Tanshu.Accounts.BI; + +namespace Tanshu.Accounts.PointOfSale +{ + public partial class AssignRoles : Form + { + public AssignRoles() + { + InitializeComponent(); + } + + private void AssignRoles_Load(object sender, EventArgs e) + { + FillUsers(); + } + + private void FillUsers() + { + cmbUsers.DisplayMember = "Name"; + cmbUsers.ValueMember = "UserID"; + cmbUsers.DataSource = new UserBI().GetUsers(); + } + + private void cmbUsers_SelectedIndexChanged(object sender, EventArgs e) + { + RefreshRoles(); + } + + private void RefreshRoles() + { + if (cmbUsers.SelectedValue == null) + { + string[] roles = new MembershipBI().GetAllRoles(); + lstRoles.DataSource = roles; + // lstRoles.DataBind(); + string[] userRoles = new string[0]; + lstUserRoles.DataSource = userRoles; + // lstUserRoles.DataBind(); + + btnAddAll.Enabled = false; + btnAddSelected.Enabled = false; + btnRemoveAll.Enabled = false; + btnRemoveSelected.Enabled = false; + } + else + { + string[] roles = new MembershipBI().GetAllRoles(); + string[] userRoles = new MembershipBI().GetRolesForUser(cmbUsers.Text.Trim()); + roles = roles.Where(r => !userRoles.Contains(r)).ToArray(); + lstRoles.DataSource = roles; + // lstRoles.DataBind(); + + lstUserRoles.DataSource = userRoles; + // lstUserRoles.DataBind(); + + btnAddAll.Enabled = true; + btnAddSelected.Enabled = true; + btnRemoveAll.Enabled = true; + btnRemoveSelected.Enabled = true; + + } + } + + private void btnAddSelected_Click(object sender, EventArgs e) + { + if (lstRoles.SelectedItem != null) + { + new MembershipBI().AddUsersToRoles(new string[] { cmbUsers.Text.Trim() }, new string[] { lstRoles.SelectedItem.ToString() }); + RefreshRoles(); + } + } + + private void btnRemoveSelected_Click(object sender, EventArgs e) + { + if (lstUserRoles.SelectedItem != null) + { + new MembershipBI().RemoveUsersFromRoles(new string[] { cmbUsers.Text.Trim() }, new string[] { lstUserRoles.SelectedItem.ToString() }); + RefreshRoles(); + } + } + + private void btnAddAll_Click(object sender, EventArgs e) + { + for (int i = 0; i <= lstRoles.Items.Count - 1; i++) + { + new MembershipBI().AddUsersToRoles(new string[] { cmbUsers.Text.Trim() }, new string[] { lstRoles.Items[i].ToString() }); + } + RefreshRoles(); + + } + + private void btnRemoveAll_Click(object sender, EventArgs e) + { + for (int i = 0; i <= lstUserRoles.Items.Count - 1; i++) + { + new MembershipBI().RemoveUsersFromRoles(new string[] { cmbUsers.Text.Trim() }, new string[] { lstUserRoles.Items[i].ToString() }); + } + RefreshRoles(); + } + + private void AssignRoles_FormClosing(object sender, FormClosingEventArgs e) + { + string userName = Thread.CurrentPrincipal.Identity.Name; + AccountsPrincipal principal = AccountsPrincipal.CreateAccountsPrincipal(new MembershipBI().GetRolesForUser(userName), new MembershipBI().GetUserFromName(userName)); + + // bind the generic principal to the thread + Thread.CurrentPrincipal = principal; + } + } +} diff --git a/Tanshu.Accounts.PointOfSale/User Management/AssignRoles.resx b/Tanshu.Accounts.PointOfSale/User Management/AssignRoles.resx new file mode 100644 index 0000000..19dc0dd --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/User Management/AssignRoles.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/User Management/ChangePassword.Designer.cs b/Tanshu.Accounts.PointOfSale/User Management/ChangePassword.Designer.cs new file mode 100644 index 0000000..18ecabc --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/User Management/ChangePassword.Designer.cs @@ -0,0 +1,173 @@ +namespace Tanshu.Accounts.PointOfSale +{ + partial class ChangePassword + { + /// + /// 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.txtPassword = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.txtUsername = new System.Windows.Forms.TextBox(); + this.label1 = new System.Windows.Forms.Label(); + this.txtnewPassword = new System.Windows.Forms.TextBox(); + this.label3 = new System.Windows.Forms.Label(); + this.txtConfirmPassword = new System.Windows.Forms.TextBox(); + this.label4 = new System.Windows.Forms.Label(); + this.button2 = new System.Windows.Forms.Button(); + this.btnCreateUSer = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // txtPassword + // + this.txtPassword.Location = new System.Drawing.Point(104, 38); + this.txtPassword.Name = "txtPassword"; + this.txtPassword.PasswordChar = '/'; + this.txtPassword.Size = new System.Drawing.Size(162, 20); + this.txtPassword.TabIndex = 5; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(28, 38); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(70, 13); + this.label2.TabIndex = 6; + this.label2.Text = "old Password"; + this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // txtUsername + // + this.txtUsername.Enabled = false; + this.txtUsername.Location = new System.Drawing.Point(104, 12); + this.txtUsername.Name = "txtUsername"; + this.txtUsername.Size = new System.Drawing.Size(162, 20); + this.txtUsername.TabIndex = 3; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(38, 12); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(60, 13); + this.label1.TabIndex = 4; + this.label1.Text = "User Name"; + this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // txtnewPassword + // + this.txtnewPassword.Location = new System.Drawing.Point(104, 64); + this.txtnewPassword.Name = "txtnewPassword"; + this.txtnewPassword.PasswordChar = '/'; + this.txtnewPassword.Size = new System.Drawing.Size(162, 20); + this.txtnewPassword.TabIndex = 7; + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(20, 64); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(78, 13); + this.label3.TabIndex = 8; + this.label3.Text = "New Password"; + this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // txtConfirmPassword + // + this.txtConfirmPassword.Location = new System.Drawing.Point(104, 90); + this.txtConfirmPassword.Name = "txtConfirmPassword"; + this.txtConfirmPassword.PasswordChar = '/'; + this.txtConfirmPassword.Size = new System.Drawing.Size(162, 20); + this.txtConfirmPassword.TabIndex = 9; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(7, 90); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(91, 13); + this.label4.TabIndex = 10; + this.label4.Text = "Confirm Password"; + this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + // + // button2 + // + this.button2.Location = new System.Drawing.Point(220, 116); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(46, 23); + this.button2.TabIndex = 12; + this.button2.Text = "Ca&ncel"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.button2_Click); + // + // btnCreateUSer + // + this.btnCreateUSer.Location = new System.Drawing.Point(104, 116); + this.btnCreateUSer.Name = "btnCreateUSer"; + this.btnCreateUSer.Size = new System.Drawing.Size(110, 23); + this.btnCreateUSer.TabIndex = 11; + this.btnCreateUSer.Text = "&Change Password"; + this.btnCreateUSer.UseVisualStyleBackColor = true; + this.btnCreateUSer.Click += new System.EventHandler(this.btnCreateUSer_Click); + // + // ChangePassword + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(287, 145); + this.Controls.Add(this.button2); + this.Controls.Add(this.btnCreateUSer); + this.Controls.Add(this.txtConfirmPassword); + this.Controls.Add(this.label4); + this.Controls.Add(this.txtnewPassword); + this.Controls.Add(this.label3); + this.Controls.Add(this.txtPassword); + this.Controls.Add(this.label2); + this.Controls.Add(this.txtUsername); + this.Controls.Add(this.label1); + this.MaximizeBox = false; + this.Name = "ChangePassword"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "ChangePassword"; + this.Load += new System.EventHandler(this.ChangePassword_Load); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TextBox txtPassword; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.TextBox txtUsername; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox txtnewPassword; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.TextBox txtConfirmPassword; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.Button btnCreateUSer; + } +} \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/User Management/ChangePassword.cs b/Tanshu.Accounts.PointOfSale/User Management/ChangePassword.cs new file mode 100644 index 0000000..d193250 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/User Management/ChangePassword.cs @@ -0,0 +1,64 @@ +using System; +using System.Windows.Forms; +using Tanshu.Accounts.BI; +using Tanshu.Accounts.Contracts; +using Tanshu.Accounts.Helpers; + +namespace Tanshu.Accounts.PointOfSale +{ + public partial class ChangePassword : Form + { + public ChangePassword() + { + InitializeComponent(); + } + + private void ChangePassword_Load(object sender, EventArgs e) + { + txtUsername.Text = CurrentUser.user.Name; + } + + private void button2_Click(object sender, EventArgs e) + { + this.Close(); + } + + private void btnCreateUSer_Click(object sender, EventArgs e) + { + if (txtPassword.Text.Trim() == "") + MessageBox.Show("Old password can not be blank", "Blank not allowed"); + else + { + if (txtnewPassword.Text.Trim() == "") + MessageBox.Show("New password can not be blank", "Blank not allowed"); + else + { + if (txtnewPassword.Text.Trim() != txtConfirmPassword.Text.Trim()) + MessageBox.Show("New password not matched to confirm password", "Password not matched"); + else + { + if (ChangeUserPassword()) + { + MessageBox.Show("Password changed", "Confirm"); + this.Close(); + } + else + MessageBox.Show("old Password not matched for user", "Wrong Password"); + } + } + } + } + + private bool ChangeUserPassword() + { + UserBO userEntity = new UserBO(); + userEntity.Name = txtUsername.Text.Trim(); + userEntity.Password = Tanshu.Common.Md5.Hash(txtPassword.Text.Trim(), "Salt"); + + if (new MembershipBI().ValidateUser(userEntity.Name, userEntity.Password)) + return new UserBI().ChangePassword(userEntity, Tanshu.Common.Md5.Hash(txtnewPassword.Text.Trim(), "Salt")); + else + return false; + } + } +} diff --git a/Tanshu.Accounts.PointOfSale/User Management/ChangePassword.resx b/Tanshu.Accounts.PointOfSale/User Management/ChangePassword.resx new file mode 100644 index 0000000..19dc0dd --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/User Management/ChangePassword.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/User Management/RoleFactoryBI.cs b/Tanshu.Accounts.PointOfSale/User Management/RoleFactoryBI.cs new file mode 100644 index 0000000..a63f874 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/User Management/RoleFactoryBI.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading; +using Tanshu.Accounts.BI; + +namespace Tanshu.Accounts.PointOfSale +{ + public class RoleFactoryBI + { + private RoleFactoryBI() + { } + public static RoleBI GetRoleBI(string roleID) + { + RoleBI roleBI = new RoleBI(roleID, CurrentUser.user.UserID); + if (!roleBI.IsAllowed) + { + using (LoginForm frm = new LoginForm()) + { + frm.ShowDialog(); + roleBI.Evelvate(frm.UserName); + } + } + return roleBI; + } + } +} diff --git a/Tanshu.Accounts.PointOfSale/User Management/UserForm.Designer.cs b/Tanshu.Accounts.PointOfSale/User Management/UserForm.Designer.cs new file mode 100644 index 0000000..2a5da21 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/User Management/UserForm.Designer.cs @@ -0,0 +1,147 @@ +namespace Tanshu.Accounts.PointOfSale +{ + partial class UserForm + { + /// + /// 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.label1 = new System.Windows.Forms.Label(); + this.txtUsername = new System.Windows.Forms.TextBox(); + this.txtPassword = new System.Windows.Forms.TextBox(); + this.label2 = new System.Windows.Forms.Label(); + this.chkLocked = new System.Windows.Forms.CheckBox(); + this.btnDelete = new System.Windows.Forms.Button(); + this.btnCancel = new System.Windows.Forms.Button(); + this.btnSave = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(12, 13); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(60, 13); + this.label1.TabIndex = 0; + this.label1.Text = "User Name"; + // + // txtUsername + // + this.txtUsername.Location = new System.Drawing.Point(78, 12); + this.txtUsername.Name = "txtUsername"; + this.txtUsername.Size = new System.Drawing.Size(188, 20); + this.txtUsername.TabIndex = 0; + // + // txtPassword + // + 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; + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(12, 39); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(53, 13); + this.label2.TabIndex = 2; + this.label2.Text = "Password"; + // + // chkLocked + // + this.chkLocked.AutoSize = true; + this.chkLocked.Location = new System.Drawing.Point(78, 65); + this.chkLocked.Name = "chkLocked"; + this.chkLocked.Size = new System.Drawing.Size(82, 17); + this.chkLocked.TabIndex = 2; + this.chkLocked.Text = "Locked Out"; + this.chkLocked.UseVisualStyleBackColor = true; + // + // btnDelete + // + this.btnDelete.Location = new System.Drawing.Point(96, 88); + this.btnDelete.Name = "btnDelete"; + this.btnDelete.Size = new System.Drawing.Size(78, 23); + this.btnDelete.TabIndex = 9; + this.btnDelete.Text = "&Delete"; + this.btnDelete.UseVisualStyleBackColor = true; + this.btnDelete.Click += new System.EventHandler(this.btnCreateUSer_Click); + // + // btnCancel + // + this.btnCancel.Location = new System.Drawing.Point(180, 88); + this.btnCancel.Name = "btnCancel"; + this.btnCancel.Size = new System.Drawing.Size(85, 23); + this.btnCancel.TabIndex = 10; + this.btnCancel.Text = "&Cancel"; + this.btnCancel.UseVisualStyleBackColor = true; + // + // btnSave + // + this.btnSave.Location = new System.Drawing.Point(12, 88); + this.btnSave.Name = "btnSave"; + this.btnSave.Size = new System.Drawing.Size(78, 23); + this.btnSave.TabIndex = 11; + this.btnSave.Text = "&Save"; + this.btnSave.UseVisualStyleBackColor = true; + this.btnSave.Click += new System.EventHandler(this.btnSave_Click); + // + // 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.Controls.Add(this.btnSave); + this.Controls.Add(this.btnCancel); + this.Controls.Add(this.btnDelete); + this.Controls.Add(this.chkLocked); + this.Controls.Add(this.txtPassword); + this.Controls.Add(this.label2); + this.Controls.Add(this.txtUsername); + this.Controls.Add(this.label1); + 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.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.Label label1; + private System.Windows.Forms.TextBox txtUsername; + private System.Windows.Forms.TextBox txtPassword; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.CheckBox chkLocked; + private System.Windows.Forms.Button btnDelete; + private System.Windows.Forms.Button btnCancel; + private System.Windows.Forms.Button btnSave; + } +} \ No newline at end of file diff --git a/Tanshu.Accounts.PointOfSale/User Management/UserForm.cs b/Tanshu.Accounts.PointOfSale/User Management/UserForm.cs new file mode 100644 index 0000000..72c04a8 --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/User Management/UserForm.cs @@ -0,0 +1,84 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using Tanshu.Accounts.Helpers; +using Tanshu.Accounts.BI; +using Tanshu.Accounts.Contracts; + +namespace Tanshu.Accounts.PointOfSale +{ + public partial class UserForm : Form + { + UserBO user; + public UserForm( Guid? userID) + { + InitializeComponent(); + if (userID.HasValue) + user = new UserBI().GetUser(userID.Value); + } + + private void btnCancel_Click(object sender, EventArgs e) + { + this.Close(); + } + + private void btnCreateUSer_Click(object sender, EventArgs e) + { + new UserBI().Delete(user.UserID); + btnCancel_Click(sender, e); + } + + private void NewUser_Load(object sender, EventArgs e) + { + if (user != null) + { + txtUsername.Text = user.Name; + txtPassword.Text = user.Password; + chkLocked.Checked = user.LockedOut; + } + } + + private bool Save() + { + if (user == null) + user = new UserBO(); + user.Name = txtUsername.Text.Trim(); + user.Password = Tanshu.Common.Md5.Hash(txtPassword.Text.Trim(), "Salt"); + user.LockedOut = (chkLocked.Checked == true ? true : false); + if (user.UserID == new Guid()) + new UserBI().Insert(user); + else + new UserBI().Update(user); + return true; + } + + private void btnSave_Click(object sender, EventArgs e) + { + if (!ValidateValues()) + { + MessageBox.Show("Missing Information: Please check the form."); + txtUsername.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/UserForm.resx b/Tanshu.Accounts.PointOfSale/User Management/UserForm.resx new file mode 100644 index 0000000..19dc0dd --- /dev/null +++ b/Tanshu.Accounts.PointOfSale/User Management/UserForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + + \ No newline at end of file diff --git a/Tanshu.Accounts.Print/Properties/AssemblyInfo.cs b/Tanshu.Accounts.Print/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..5bffc89 --- /dev/null +++ b/Tanshu.Accounts.Print/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Accounts.Print")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Accounts.Print")] +[assembly: AssemblyCopyright("Copyright © 2008")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("f0e88c74-f972-4264-b181-b753a792eb1b")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.*")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Tanshu.Accounts.Print/RawPrinterHelper.cs b/Tanshu.Accounts.Print/RawPrinterHelper.cs new file mode 100644 index 0000000..0b3cc98 --- /dev/null +++ b/Tanshu.Accounts.Print/RawPrinterHelper.cs @@ -0,0 +1,103 @@ +using System; +using System.IO; +using System.Runtime.InteropServices; +using System.Collections.Generic; +using System.Text; + +namespace Tanshu.Accounts.Print +{ + internal class RawPrinterHelper + { + // Cut Code for the printer Alt-29, Alt-86, Alt-49 + #region API Declarations + // Structure and API declarions: + [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)] + internal class DOCINFOA + { + [MarshalAs(UnmanagedType.LPStr)] + public string pDocName; + [MarshalAs(UnmanagedType.LPStr)] + public string pOutputFile; + [MarshalAs(UnmanagedType.LPStr)] + public string pDataType; + } + [DllImport("winspool.Drv", EntryPoint = "OpenPrinterA", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] + internal static extern bool OpenPrinter([MarshalAs(UnmanagedType.LPStr)] string szPrinter, out IntPtr hPrinter, IntPtr pd); + + [DllImport("winspool.Drv", EntryPoint = "ClosePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] + internal static extern bool ClosePrinter(IntPtr hPrinter); + + [DllImport("winspool.Drv", EntryPoint = "StartDocPrinterA", SetLastError = true, CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] + internal static extern bool StartDocPrinter(IntPtr hPrinter, Int32 level, [In, MarshalAs(UnmanagedType.LPStruct)] DOCINFOA di); + + [DllImport("winspool.Drv", EntryPoint = "EndDocPrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] + internal static extern bool EndDocPrinter(IntPtr hPrinter); + + [DllImport("winspool.Drv", EntryPoint = "StartPagePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] + internal static extern bool StartPagePrinter(IntPtr hPrinter); + + [DllImport("winspool.Drv", EntryPoint = "EndPagePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] + internal static extern bool EndPagePrinter(IntPtr hPrinter); + + [DllImport("winspool.Drv", EntryPoint = "WritePrinter", SetLastError = true, ExactSpelling = true, CallingConvention = CallingConvention.StdCall)] + internal static extern bool WritePrinter(IntPtr hPrinter, IntPtr pBytes, Int32 dwCount, out Int32 dwWritten); + #endregion + + internal static bool PrintString(string printerName, string documentName, string printingText, char[] lineBreakChars) + { + string[] PageText; + IntPtr hPrinter = new IntPtr(0); + // The printer handle. + Int32 dwError; + // Last error -incase there was trouble. + DOCINFOA di = new DOCINFOA(); + // Describes your document(name, port, data type). + bool bSuccess = false; // Your success code. + + // Set up the DOCINFO structure. + di.pDocName = documentName; + di.pDataType = "RAW"; + PageText = printingText.Split(lineBreakChars ); + + if (OpenPrinter(printerName.Normalize(), out hPrinter, System.IntPtr.Zero)) + { + if (StartDocPrinter(hPrinter, 1, di)) + { + for (int i = 0; i < PageText.Length; i++) + { + if (StartPagePrinter(hPrinter)) + { + //Write your printer - specific bytes to the printer. + bSuccess = SendLine(PageText[i], hPrinter); + EndPagePrinter(hPrinter); + } + } + EndDocPrinter(hPrinter); + } + ClosePrinter(hPrinter); + } + // If you did not succeed, GetLastError may give more information about why not. + if (bSuccess == false) + { + dwError = Marshal.GetLastWin32Error(); + } + return bSuccess; + }// SendBytesToPrinter() + + internal static bool SendLine(string szString, IntPtr hPrinter) + { + bool bSuccess = false; + Int32 dwWritten = 0; + Int32 dwCount = szString.Length; // How many characters are in the string? + + IntPtr pBytes = Marshal.StringToCoTaskMemAnsi(szString); + // Assume that the printer is expecting ANSI text, and then convert + // the string to ANSI text. + + // Write your bytes. + bSuccess = WritePrinter(hPrinter, pBytes, dwCount, out dwWritten); + + return bSuccess; + } + } +} diff --git a/Tanshu.Accounts.Print/Tanshu.Accounts.Print.csproj b/Tanshu.Accounts.Print/Tanshu.Accounts.Print.csproj new file mode 100644 index 0000000..1b15a6b --- /dev/null +++ b/Tanshu.Accounts.Print/Tanshu.Accounts.Print.csproj @@ -0,0 +1,79 @@ + + + + Debug + AnyCPU + 9.0.21022 + 2.0 + {90C9D02C-91AF-4529-86BE-28320332DDB5} + Library + Properties + Tanshu.Accounts.Print + Tanshu.Accounts.Print + v3.5 + 512 + + + true + full + false + ..\Bin\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + ..\Bin\ + TRACE + prompt + 4 + + + + + + 3.5 + + + 3.5 + + + + 3.5 + + + 3.5 + + + + + + + + + + + + {59A6F8B8-12EE-4D8E-BEBB-61CB665A2C17} + Tanshu.Accounts.Contracts + + + {0B43ECD4-3701-4CD3-82EC-617D7D590BBB} + Tanshu.Accounts.BI + + + {3E28AAA5-A493-4446-8188-C615245943B4} + Tanshu.Accounts.Helpers + + + + + \ No newline at end of file diff --git a/Tanshu.Accounts.Print/Thermal.cs b/Tanshu.Accounts.Print/Thermal.cs new file mode 100644 index 0000000..a9e820c --- /dev/null +++ b/Tanshu.Accounts.Print/Thermal.cs @@ -0,0 +1,440 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Tanshu.Accounts.Contracts; +using Tanshu.Accounts.BI; +using Tanshu.Accounts.Helpers; + +namespace Tanshu.Accounts.Print +{ + enum Align + { + None = 0, + Left = 1, + Centre = 2, + Right = 4 + } + + public static class Thermal + { + private static string CutPrinter = System.Configuration.ConfigurationManager.AppSettings["Printer"].ToString().Trim().EndsWith("Epson") ? "\n\r\n\r\n\r\n\r\n\r\n\r" + (char)29 + (char)86 + (char)49 : "\n\r" + (char)29 + (char)86 + (char)49; + private const string DrawLine = "\n\r------------------------------------------"; + private const string DrawEqual = "\n\r=========================================="; + private static string DesignWaiterKot(SaleVoucherBO trans, List billItems) + { + WaiterBO waiter = new WaiterBI().GetWaiter(trans.WaiterID); + string BillText; + try + { + BillText = string.Format("\n\rWAITER WAITER WAITER WAITER WAITER"); + BillText += string.Format("\n\rWAITER WAITER WAITER WAITER WAITER"); + BillText += DrawLine; + BillText += string.Format("\n\rKOT ID : {0,-13} {1:dd-MMM-yyyy HH:mm}", trans.KotID, trans.Date); + BillText += string.Format("\n\rTable No.: {0} / {1}", trans.TableID, waiter.Name); + BillText += DrawLine; + BillText += "\n\r Qty. x Name "; + BillText += DrawLine; + foreach (SalesBillItemBO item in billItems) + { + Decimal additional = item.Quantity - item.Printed; + if (additional > 0) + { + BillText += string.Format("\n\r{0,6} x {1,-33}", additional, item.Name); + } + } + BillText += DrawLine; + if (trans.Narration != "") + { + BillText += "\n\r" + FormatText(trans.Narration, 42, false, Align.Centre); + BillText += DrawLine; + } + BillText += CutPrinter; + return BillText; + } + catch (Exception ex) + { + throw ex; + } + } + private static string DesignPickupKot(SaleVoucherBO trans, List billItems) + { + WaiterBO waiter = new WaiterBI().GetWaiter(trans.WaiterID); + string BillText; + try + { + BillText = string.Format("\n\rPICK-UP PICK-UP PICK-UP PICK-UP PICK-UP"); + BillText += string.Format("\n\rPICK-UP PICK-UP PICK-UP PICK-UP PICK-UP"); + BillText += DrawLine; + BillText += string.Format("\n\rBill No: {0,-13}{0:dd-MMM-yyyy HH:mm}" + trans.KotID, trans.Date); + BillText += string.Format("\n\rTable No.: {0} / {1}", trans.TableID, waiter.Name); + BillText += DrawLine; + BillText += "\n\r Qty. x Name "; + BillText += DrawLine; + foreach (SalesBillItemBO item in billItems) + { + Decimal additional = item.Quantity - item.Printed; + if (additional > 0) + { + BillText += string.Format("\n\r{0,6} x {1,-33}", additional, item.Name); + } + } + BillText += DrawLine; + if (trans.Narration != "") + { + BillText += "\n\r" + FormatText(trans.Narration, 42, false, Align.Centre); + BillText += DrawLine; + } + BillText += CutPrinter; + return BillText; + } + catch (Exception ex) + { + throw ex; + } + } + private static string DesignCustomerKot(SaleVoucherBO trans, List billItems) + { + WaiterBO waiter = new WaiterBI().GetWaiter(trans.WaiterID); + string BillText; + try + { + BillText = string.Format("\n\r Counter / Order Slip "); + BillText += DrawLine; + BillText += string.Format("\n\rBill No: {0,-13}{0:dd-MMM-yyyy HH:mm}" + trans.KotID, trans.Date); + BillText += string.Format("\n\rTable No.: {0} / {1}", trans.TableID, waiter.Name); + BillText += DrawLine; + BillText += "\n\r Qty. x Name "; + BillText += DrawLine; + foreach (SalesBillItemBO item in billItems) + { + Decimal additional = item.Quantity - item.Printed; + if (additional > 0) + { + BillText += string.Format("\n\r{0,6} x {1,-33}", additional, item.Name); + } + } + BillText += DrawLine; + if (trans.Narration != "") + { + BillText += "\n\r" + FormatText(trans.Narration, 42, false, Align.Centre); + BillText += DrawLine; + } + BillText += CutPrinter; + return BillText; + } + catch (Exception ex) + { + throw ex; + } + } + + private static string DesignBill(SaleVoucherBO trans, List billItems) + { + UserBO cashier = new UserBI().GetUser(trans.UserID); + WaiterBO waiter = new WaiterBI().GetWaiter(trans.WaiterID); + CustomerBO customer = new CustomerBI().GetCustomer(trans.CustomerID); + String billNo = trans.BillID.Substring(trans.BillID.IndexOf("-") + 1); + String BillText = ""; + BillText = "\n\r" + FormatText("Bengali Sweet House", 42, false, Align.Centre); + BillText += "\n\r" + FormatText("+ V2C Multi Cuisine", 42, false, Align.Centre); + BillText += "\n\r" + FormatText("SCO 1, Pocket 1, Manimajra, Chandigarh", 42, false, Align.Centre); + BillText += "\n\r" + FormatText("A Unit of AA Herbal Biotech Pvt. Ltd.", 42, false, Align.Centre); + BillText += "\n\r" + FormatText("TIN: 04400023630", 42, false, Align.Centre); + BillText += "\n\r" + FormatText("Retail Invoice", 42, false, Align.Centre); + BillText += "\n\r"; + BillText += "\n\r" + "Bill No: " + FormatText(billNo, 13, false, Align.Centre) + string.Format("{0:dd-MMM-yyyy HH:mm:ss}", trans.Date); + BillText += "\n\r" + "Table No.: " + trans.TableID; + BillText += "\n\r" + "------------------------------------------"; + BillText += "\n\r" + "Qty. Particulars Price Amount"; + BillText += "\n\r" + "------------------------------------------"; + foreach (SalesBillItemBO item in billItems) + { + if (Math.Round((item.Price * (1 + item.Tax)), 0) == 1) + { + BillText += "\n\r" + " "; + BillText += FormatText(item.Name, 22, false, Align.Left) + " "; + BillText += " "; + BillText += FormatBillNum(item.Price * item.Quantity, 6); + } + else + { + BillText += "\n\r" + FormatBillNum(item.Quantity, 5) + " "; + BillText += FormatText(item.Name, 22, false, Align.Left) + " "; + BillText += FormatBillNum(item.Price, 6) + " "; + BillText += FormatBillNum(item.Price * item.Quantity, 6); + } + } + BillText += "\n\r" + "------------------------------------------"; + if (billItems.Sum(b => b.TaxAmount) != 0) + { + BillText += "\n\r" + FormatText("VAT : ", 33, false, Align.Right) + FormatBillNum(billItems.Sum(b => b.TaxAmount), 9); + } + if (billItems.Sum(b => b.DiscountAmount) != 0) + { + BillText += "\n\r" + FormatText("Discount : ", 33, false, Align.Right) + FormatBillNum(billItems.Sum(b => b.DiscountAmount), 9); + } + + BillText += string.Format("\n\r Final Amount : {0,9:#,##0.00;(#,##0.00);0}", Math.Round(billItems.Sum(b => b.Value), 0)); + BillText += DrawLine; + if (trans.Narration != "") + { + BillText += "\n\r" + FormatText(trans.Narration, 42, false, Align.Centre); + BillText += DrawLine; + } + if (customer.Name != "Cash") + { + BillText += "\n\r" + customer.Name; + BillText += string.Format("\n\r{0}\n\r{1}", customer.Phone, customer.Address); + BillText += DrawLine; + } + BillText += "\n\r" + "Cashier : " + cashier.Name + " / " + waiter.Name; + BillText += "\n\r" + " For Home Delivery: 0172-3242030, 3243040 "; + BillText += CutPrinter; + return BillText; + } + + private static string FormatText(string inputString, int width, Boolean multiline, Align alignment) + { + if ((multiline) && (inputString.Length > width)) + { + string newString = ""; + int lines = Convert.ToInt32(Math.Floor(Convert.ToDecimal(inputString.Length / width))); + for (int i = 0; i < lines; i++) + newString += inputString.Substring(i * width, width) + "\n\r"; + newString += FormatText(inputString.Substring(lines * width), width, multiline, alignment); + return newString; + } + else if (inputString.Length > width) + return inputString.Substring(0, width); + else if (alignment == Align.None) + return inputString; + else if (alignment == Align.Left) + return string.Format("{0,-" + width.ToString() + "}", inputString); + else if (alignment == Align.Centre) + { + int left; + left = Convert.ToInt32(Math.Ceiling(Convert.ToDouble((width - inputString.Length) / 2))) + inputString.Length; + inputString = string.Format("{0,-" + left.ToString() + "}", inputString); + return string.Format("{0," + width.ToString() + "}", inputString); + } + else if (alignment == Align.Right) + return string.Format("{0," + width.ToString() + "}", inputString); + else + return inputString; + } + + private static string FormatBillNum(decimal Amount, int Length) + { + string Temp = String.Format("{0:#,##0.00;(#,##0.00);0}", Amount); + return string.Format("{0," + Length.ToString() + "}", Temp); + } + + private static bool PrintRAW(string Text, string DocumentName) + { + string printerName = System.Configuration.ConfigurationManager.AppSettings["Printer"].ToString().Trim(); + try + { + if (!RawPrinterHelper.PrintString(printerName, DocumentName, Text, new char[] { ';' })) + { + GC.Collect(); + System.Windows.Forms.MessageBox.Show("Error in PrintRAW Function. Please Report immediately"); + } + } + catch (Exception ex) + { + throw ex; + } + return true; + } + + #region Print Cash Total + public static Boolean PrintCash(Dictionary amount) + { + string printText; + int total = 0; + try + { + printText = FormatText(CurrentUser.user.Name, 42, false, Align.Centre); + printText += DrawLine; + printText += "\n\r" + FormatText(string.Format("{0:dd-MMM-yyyy HH:mm:ss}", DateTime.Now), 42, false, Align.Centre); + foreach (int key in amount.Keys.OrderByDescending(k => k)) + { + printText += CashLine(amount, key); + total += amount[key] * key; + } + printText += "\n\r" + DrawEqual; + printText += string.Format("\n\r Total = {0,10:#,##0}", total); + printText += DrawLine; + printText += CutPrinter; + return PrintRAW(printText, "Closing/Opening for " + CurrentUser.user.Name); + } + catch (Exception ex) + { + throw ex; + } + + } + public static Boolean PrintSale(List det, DateTime startDate, DateTime endDate) + { + string printText; + try + { + printText = FormatText(CurrentUser.user.Name, 42, false, Align.Centre); + printText += DrawLine; + printText += "\n\r" + FormatText(string.Format("{0:dd-MMM-yyyy HH:mm:ss}", DateTime.Now), 42, false, Align.Centre); + printText += "\n\r" + FormatText(string.Format("{0:dd-MMM-yyyy} to {1:dd-MMM-yyyy}", startDate, endDate), 42, false, Align.Centre); + printText += DrawLine; + foreach (SalesAnalysisBO d in det) + { + if (d.Section.Length > 30) + d.Section = d.Section.Substring(0, 30); + printText += string.Format("\n\r{0,-22} {1,9:#,##0} {2,9:#,##0}", d.Section, d.Net, d.Gross); + printText += DrawLine; + } + printText += DrawEqual; + printText += CutPrinter; + return PrintRAW(printText, "Sale Detail " + CurrentUser.user.Name); + } + catch (Exception ex) + { + throw ex; + } + + } + + private static string CashLine(Dictionary amount, int key) + { + if (amount.ContainsKey(key)) + return string.Format("\n\r{0,5:#,##0} x {1,10:#,##0} = {2,10:#,##0}", key, amount[key], key * amount[key]); + else + return string.Empty; + } + #endregion + + public static Boolean PrintAdvance(string Advance, string Narration) + { + String BillText; + try + { + BillText = "\n\r" + FormatText("Bengali Sweet House", 42, false, Align.Centre); + BillText += "\n\r" + FormatText("+ V2C Multi Cuisine", 42, false, Align.Centre); + BillText += "\n\r" + FormatText("SCO 1, Pocket 1, Manimajra, Chandigarh", 42, false, Align.Centre); + BillText += "\n\r" + FormatText("A Unit of AA Herbal Biotech Pvt. Ltd.", 42, false, Align.Centre); + BillText += DrawLine; + BillText += "\n\r" + FormatText(string.Format("{0:dd-MMM-yyyy HH:mm:ss}", DateTime.Now), 42, false, Align.Centre); + BillText += "\n\r" + FormatText("Received Rs. " + Advance + " as advance.", 42, false, Align.Centre); + BillText += DrawLine; + if (Narration != "") BillText += "\n\r" + FormatText(Narration, 42, false, Align.Centre); + BillText += DrawLine; + BillText += "\n\r" + FormatText("Thanking you " + CurrentUser.user.Name, 42, false, Align.Left); + BillText += "\n\r"; + BillText += "\n\r"; + BillText += "\n\r"; + BillText += "\n\r"; + BillText += "\n\r"; + BillText += "Signed" + "\n\r"; + BillText += "\n\r"; + BillText += CutPrinter; + BillText += "\n\r" + BillText; + return PrintRAW(BillText, "Closing/Opening for " + CurrentUser.user.Name); + } + catch (Exception ex) + { + throw ex; + } + + } + + public static Boolean PrintClosing(CheckoutBI details) + { + string BillText; + try + { + BillText = FormatText(string.Format("{0} Checkout By {1}", details.Cashier, details.Manager), 42, false, Align.Centre); + BillText += string.Format("{0:dd-MMM-yy} To {1:dd-MMM-yy} @ {2:dd-MMM-yyyy HH:mm}", details.StartDate, details.FinishDate, DateTime.Now); + BillText += DrawLine; + BillText += string.Format("\n\rOpening : {0,26:#,##0.00}", details.Opening); + BillText += string.Format("\n\rReceipts : {0,26:#,##0.00}", details.Receipts); + BillText += string.Format("\n\rAdvance Rcv. : {0,26:#,##0.00}", details.AdvanceReceipts); + BillText += string.Format("\n\rCC Receipts : {0,26:#,##0.00}", details.CCReceipts); + BillText += string.Format("\n\rAdvance Adj. : {0,26:#,##0.00}", details.AdvanceAdjusted); + BillText += string.Format("\n\rPayments : {0,26:#,##0.00}", details.CashPayments); + BillText += string.Format("\n\rAddl. Voids : {0,26:#,##0.00}", details.AdditionalVoids); + BillText += string.Format("\n\rVoids in Sys. : {0,26:#,##0.00}", details.VoidsInSystem); + BillText += string.Format("\n\rPending Bills : {0,26:#,##0.00}", details.PendingBills); + BillText += string.Format("\n\rNet Sales : {0,26:#,##0.00}", details.NetSales); + BillText += string.Format("\n\rClosing Bal. : {0,26:#,##0.00}", details.ClosingBalance); + BillText += string.Format("\n\rCash Dep. : {0,26:#,##0.00}", details.CashDeposited); + BillText += DrawLine; + BillText += string.Format("\n\rOld Pending : {0,26:#,##0.00}", details.OldPending); + BillText += string.Format("\n\rOld Receipts : {0,26:#,##0.00}", details.OldReceipts); + BillText += string.Format("\n\rOld Voided : {0,26:#,##0.00}", details.OldVoided); + BillText += DrawEqual; + BillText += "\n\r" + FormatText(details.Status, 42, false, Align.Centre); + BillText += DrawEqual; + BillText += string.Format("\n\rActive Cashiers : {0}", details.Cashiers); + + if (details.PendingString.Length > 0) + BillText += details.PendingString; + + if (details.CCString.Length > 0) + BillText += details.CCString; + + if (details.VoidsString.Length > 0) + BillText += details.VoidsString; + + if (details.PaymentString.Length > 0) + BillText += details.PaymentString; + + if (details.DiscountString.Length > 0) + BillText += details.DiscountString; + BillText += CutPrinter; + return PrintRAW(BillText, "Closing"); + } + catch (Exception ex) + { + throw ex; + } + } + + public static string FormatPrintNum(string InputString) + { + if (InputString == "") return "0.00"; + //return FormatText(FormatNumber(InputString.Trim, 2, TriState.UseDefault, TriState.True, TriState.True), 24, False, Align.Right); + return FormatText(InputString, 24, false, Align.Right); + } + + public static void PrintBill(bool bill, Guid voucherID, List list) + { + SaleVoucherBO trans = new SaleVoucherBO(); + List iList = new List(); + new SaleVoucherBI().GetSaleVoucher(voucherID, ref trans, ref iList); + PrintRAW(DesignBill(trans, list), "Bill"); + } + + public static void PrintWaiterKot(string p, Guid voucherID, List list) + { + SaleVoucherBO trans = new SaleVoucherBO(); + List iList = new List(); + new SaleVoucherBI().GetSaleVoucher(voucherID, ref trans, ref iList); + if (list.Count(i => (i.Quantity - i.Printed) > 0) > 0) + { + PrintRAW(DesignWaiterKot(trans, list), "KOT"); + PrintRAW(DesignPickupKot(trans, list), "KOT"); + } + } + public static void PrintCustomerKot(string p, Guid voucherID, List list) + { + SaleVoucherBO trans = new SaleVoucherBO(); + List iList = new List(); + new SaleVoucherBI().GetSaleVoucher(voucherID, ref trans, ref iList); + if (list.Count(i => (i.Quantity - i.Printed) > 0) > 0) + { + PrintRAW(DesignCustomerKot(trans, list), "KOT"); + } + } + + + } +} diff --git a/Tanshu.Accounts.SqlDAO/AdvanceDAO.cs b/Tanshu.Accounts.SqlDAO/AdvanceDAO.cs new file mode 100644 index 0000000..38616a8 --- /dev/null +++ b/Tanshu.Accounts.SqlDAO/AdvanceDAO.cs @@ -0,0 +1,59 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Data.SqlClient; +using Tanshu.Accounts.Contracts; +using Tanshu.Data.DAO; +using Tanshu.Accounts.DAOFactory; + +namespace Tanshu.Accounts.SqlDAO +{ + public class AdvanceDAO : BaseDAO, IAdvanceDAO + { + public AdvanceDAO(IConnectionDAO connection) + : base(connection) + { } + + public void Insert(AdvanceBO advance) + { + SqlCommand cmd = new SqlCommand(@" +SET @AdvanceID = NEWID(); +INSERT INTO Advances (AdvanceID, Amount, Narration, CashierIn, DateIn, CashierOut, DateOut) +VALUES (@AdvanceID, @Amount, @Narration, @CashierIn, @DateIn, @CashierOut, @DateOut) +"); + cmd.Parameters.Add("@AdvanceID", System.Data.SqlDbType.UniqueIdentifier); + cmd.Parameters["@AdvanceID"].Direction = System.Data.ParameterDirection.Output; + cmd.Parameters.AddWithValue("@Amount", advance.Amount); + cmd.Parameters.AddWithValue("@Narration", advance.Narration); + cmd.Parameters.AddWithValue("@CashierIn", advance.CashierIn); + cmd.Parameters.AddWithValue("@DateIn", advance.DateIn); + if (advance.CashierOut.HasValue) + cmd.Parameters.AddWithValue("@CashierOut", advance.CashierOut); + else + cmd.Parameters.AddWithValue("@CashierOut", DBNull.Value); + if (advance.DateOut.HasValue) + cmd.Parameters.AddWithValue("@DateOut", advance.DateOut); + else + cmd.Parameters.AddWithValue("@DateOut", DBNull.Value); + connection.ExecuteNonQuery(cmd); + advance.AdvanceID = (Guid)cmd.Parameters["@AdvanceID"].Value; + } + public List GetAdvances(DateTime fromDate, DateTime toDate, bool all) + { + string query = "SELECT a.*, u.Name AS Cashier FROM Advances a INNER JOIN Users u ON a.CashierIn = u.UserID WHERE DateIn BETWEEN @StartDate AND @FinishDate"; + if (!all) + query += " AND CashierOut IS NULL"; + SqlCommand cmd = new SqlCommand(query); + cmd.Parameters.AddWithValue("@StartDate", fromDate); + cmd.Parameters.AddWithValue("@FinishDate", toDate); + return BusinessObjectDAO.GetBusinessObjects(connection.ExecuteReader(cmd)); + } + public void Adjust(Guid advanceID, Guid userID) + { + SqlCommand cmd = new SqlCommand("UPDATE Advances SET CashierOut = @CashierOut, DateOut = GETDATE() WHERE AdvanceID = @AdvanceID"); + cmd.Parameters.AddWithValue("@AdvanceID", advanceID); + cmd.Parameters.AddWithValue("@CashierOut", userID); + connection.ExecuteNonQuery(cmd); + } + } +} diff --git a/Tanshu.Accounts.SqlDAO/BaseDAO.cs b/Tanshu.Accounts.SqlDAO/BaseDAO.cs new file mode 100644 index 0000000..525832b --- /dev/null +++ b/Tanshu.Accounts.SqlDAO/BaseDAO.cs @@ -0,0 +1,65 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Diagnostics; +using Tanshu.Data.DAO; + +namespace Tanshu.Accounts.SqlDAO +{ + public abstract class BaseDAO : IDisposable + { + protected IConnectionDAO connection; + protected BaseDAO(IConnectionDAO connection) + { + this.connection = connection; + } + + + #region IDisposable Members + private bool disposed = false; + ~BaseDAO() + { + // call Dispose with false. Since we're in the + // destructor call, the managed resources will be + // disposed of anyways. + Dispose(false); + } + public void Dispose() + { + // dispose of the managed and unmanaged resources + Dispose(true); + // tell the GC that the Finalize process no longer needs + // to be run for this object. + GC.SuppressFinalize(this); + } + protected virtual void Dispose(bool disposeManagedResources) + { + // process only if mananged and unmanaged resources have + // not been disposed of. + if (!this.disposed) + { + Trace.WriteLine("Tanshu.WebAccounts.SqlDAO.BaseDAO: Resources not disposed"); + if (disposeManagedResources) + { + Trace.WriteLine("Tanshu.WebAccounts.SqlDAO.BaseDAO: Disposing managed resources"); + // dispose managed resources + //if (connection != null) + //{ + // connection.Dispose(); + // connection = null; + //} + } + // dispose unmanaged resources + + Trace.WriteLine("Tanshu.WebAccounts.SqlDAO.BaseDAO: Disposing unmanaged resouces"); + disposed = true; + } + else + { + Trace.WriteLine("Tanshu.WebAccounts.SqlDAO.BaseDAO: Resources already disposed"); + } + } + + #endregion + } +} diff --git a/Tanshu.Accounts.SqlDAO/CheckoutDAO.cs b/Tanshu.Accounts.SqlDAO/CheckoutDAO.cs new file mode 100644 index 0000000..e836015 --- /dev/null +++ b/Tanshu.Accounts.SqlDAO/CheckoutDAO.cs @@ -0,0 +1,377 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Data.SqlClient; +using Tanshu.Accounts.Contracts; +using System.Data; +using Tanshu.Accounts.DAOFactory; +using Tanshu.Data.DAO; + +namespace Tanshu.Accounts.SqlDAO +{ + public class CheckoutDAO : BaseDAO, ICheckoutDAO + { + private DateTime startDate; + private DateTime finishDate; + private Guid userID; + public CheckoutDAO(DateTime startDate, DateTime finishDate, Guid userID, IConnectionDAO connection) + : base(connection) + { + this.startDate = startDate; + this.finishDate = finishDate; + this.userID = userID; + } + public decimal GetPending(ref string info) + { + decimal amount = 0; + info = ""; + + string query = @" +SELECT t.Date, s.BillID, c.Name, SUM(i.Amount) AS Amount, SUM(Quantity * Rate * Discount) AS Discount FROM Vouchers t INNER JOIN SaleVoucher s ON t.VoucherID = s.VoucherID +INNER JOIN Inventory i ON t.VoucherID = i.VoucherID +INNER JOIN Customers c ON s.CustomerID = c.CustomerID +WHERE t.Type = 'S' +AND t.LastEditDate BETWEEN @StartDate AND @FinishDate AND t.UserID = @UserID +AND s.Void = 0 AND s.Paid = 0 +GROUP BY t.Date, c.Name, s.BillID +"; + using (SqlCommand cmd = new SqlCommand(query)) + { + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@FinishDate", finishDate); + cmd.Parameters.AddWithValue("@UserID", userID); + + using (IDataReader dr = connection.ExecuteReader(cmd)) + { + if (dr.Read()) + { + info = "\n\r--- Pending Bills ------------------------"; + + do + { + amount += dr.GetDecimal(3); + info += string.Format("\n\r{0:dd-MMM-yyyy HH:mm:ss} {1} {2}", dr.GetDateTime(0), dr.GetString(1), dr.GetString(2)); + info += string.Format("\n\rAmount: {0:#0.00} :: Discount: {1:#0.00}", dr.GetDecimal(3), dr.GetDecimal(4)); + info += "\n\r------------------------------------------"; + } while (dr.Read()); + } + } + } + return amount; + } + public decimal GetCreditCard(ref string info) + { + decimal amount = 0; + info = ""; + + string query = @" +SELECT t.Date, s.BillID, c.Name, SUM(i.Amount) AS Amount, SUM(Quantity * Rate * Discount) AS Discount FROM Vouchers t INNER JOIN SaleVoucher s ON t.VoucherID = s.VoucherID +INNER JOIN Inventory i ON t.VoucherID = i.VoucherID +INNER JOIN Customers c ON s.CustomerID = c.CustomerID +WHERE t.Type = 'S' +AND t.LastEditDate BETWEEN @StartDate AND @FinishDate AND t.UserID = @UserID +AND s.Void = 0 AND s.Paid = 1 AND s.CreditCard = 1 +GROUP BY t.Date, c.Name, s.BillID +"; + using (SqlCommand cmd = new SqlCommand(query)) + { + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@FinishDate", finishDate); + cmd.Parameters.AddWithValue("@UserID", userID); + + using (IDataReader dr = connection.ExecuteReader(cmd)) + { + if (dr.Read()) + { + info = "\n\r--- Credit Card Bills --------------------"; + + do + { + amount += dr.GetDecimal(3); + info += string.Format("\n\r{0:dd-MMM-yyyy HH:mm:ss} {1} {2}", dr.GetDateTime(0), dr.GetString(1), dr.GetString(2)); + info += string.Format("\n\rAmount: {0:#0.00} :: Discount: {1:#0.00}", dr.GetDecimal(3), dr.GetDecimal(4)); + info += "\n\r------------------------------------------"; + } while (dr.Read()); + } + } + } + return amount; + } + public decimal GetVoids(ref string info) + { + decimal amount = 0; + info = ""; + + string query = @" +SELECT t.Date, s.BillID, c.Name, SUM(i.Amount) AS Amount, SUM(Quantity * Rate * Discount) AS Discount FROM Vouchers t INNER JOIN SaleVoucher s ON t.VoucherID = s.VoucherID +INNER JOIN Inventory i ON t.VoucherID = i.VoucherID +INNER JOIN Customers c ON s.CustomerID = c.CustomerID +WHERE t.Type = 'S' +AND t.LastEditDate BETWEEN @StartDate AND @FinishDate AND t.UserID = @UserID +AND s.Void = 1 +GROUP BY t.Date, c.Name, s.BillID +"; + using (SqlCommand cmd = new SqlCommand(query)) + { + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@FinishDate", finishDate); + cmd.Parameters.AddWithValue("@UserID", userID); + using (IDataReader dr = connection.ExecuteReader(cmd)) + { + if (dr.Read()) + { + info = "\n\r--- Void Bills ---------------------------"; + + do + { + amount += dr.GetDecimal(3); + info += string.Format("\n\r{0:dd-MMM-yyyy HH:mm:ss} {1} {2}", dr.GetDateTime(0), dr.GetString(1), dr.GetString(2)); + info += string.Format("\n\rAmount: {0:#0.00} :: Discount: {1:#0.00}", dr.GetDecimal(3), dr.GetDecimal(4)); + info += "\n\r------------------------------------------"; + } while (dr.Read()); + } + } + } + return amount; + } + public decimal GetOpenings() + { + string query = "SELECT ISNULL(SUM(Amount), 0) FROM Payments WHERE Type = 'Opening' AND Date BETWEEN @StartDate AND @FinishDate AND CashierID = @UserID"; + using (SqlCommand cmd = new SqlCommand(query)) + { + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@FinishDate", finishDate); + cmd.Parameters.AddWithValue("@UserID", userID); + return (decimal)connection.ExecuteScalar(cmd); + } + } + public decimal GetReceipts() + { + string query = "SELECT ISNULL(SUM(Amount), 0) FROM Payments WHERE Type = 'Receipt' AND Date BETWEEN @StartDate AND @FinishDate AND CashierID = @UserID"; + using (SqlCommand cmd = new SqlCommand(query)) + { + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@FinishDate", finishDate); + cmd.Parameters.AddWithValue("@UserID", userID); + return (decimal)connection.ExecuteScalar(cmd); + } + } + public decimal GetPayments() + { + string query = "SELECT ISNULL(SUM(Amount), 0) FROM Payments WHERE Type = 'Payment' AND Date BETWEEN @StartDate AND @FinishDate AND CashierID = @UserID"; + using (SqlCommand cmd = new SqlCommand(query)) + { + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@FinishDate", finishDate); + cmd.Parameters.AddWithValue("@UserID", userID); + return (decimal)connection.ExecuteScalar(cmd); + } + } + public decimal GetAdditionalVoids() + { + string query = "SELECT ISNULL(SUM(Amount), 0) FROM Payments WHERE Type = 'Additional Void' AND Date BETWEEN @StartDate AND @FinishDate AND CashierID = @UserID"; + using (SqlCommand cmd = new SqlCommand(query)) + { + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@FinishDate", finishDate); + cmd.Parameters.AddWithValue("@UserID", userID); + return (decimal)connection.ExecuteScalar(cmd); + } + } + public decimal GetRetainedOvernight() + { + string query = "SELECT ISNULL(SUM(Amount), 0) FROM Payments WHERE Type = 'Retained at Night' AND Date BETWEEN @StartDate AND @FinishDate AND CashierID = @UserID"; + using (SqlCommand cmd = new SqlCommand(query)) + { + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@FinishDate", finishDate); + cmd.Parameters.AddWithValue("@UserID", userID); + return (decimal)connection.ExecuteScalar(cmd); + } + } + public decimal GetAdvancesReceived() + { + string query = "SELECT ISNULL(SUM(Amount), 0) FROM Advances WHERE DateIn BETWEEN @StartDate AND @FinishDate AND CashierIn = @UserID"; + using (SqlCommand cmd = new SqlCommand(query)) + { + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@FinishDate", finishDate); + cmd.Parameters.AddWithValue("@UserID", userID); + return (decimal)connection.ExecuteScalar(cmd); + } + } + public decimal GetAdvancesAdjusted() + { + string query = "SELECT ISNULL(SUM(Amount), 0) FROM Advances WHERE DateOut BETWEEN @StartDate AND @FinishDate AND CashierOut = @UserID"; + using (SqlCommand cmd = new SqlCommand(query)) + { + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@FinishDate", finishDate); + cmd.Parameters.AddWithValue("@UserID", userID); + return (decimal)connection.ExecuteScalar(cmd); + } + } + public string GetPaymentString() + { + string paymentString = ""; + string query = "SELECT Date, Type, Amount, Narration FROM Payments WHERE Date BETWEEN @StartDate AND @FinishDate AND CashierID = @UserID ORDER BY Type"; + using (SqlCommand cmd = new SqlCommand(query)) + { + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@FinishDate", finishDate); + cmd.Parameters.AddWithValue("@UserID", userID); + using (IDataReader dr = connection.ExecuteReader(cmd)) + { + string currentType = ""; + while (dr.Read()) + { + if (currentType != dr.GetString(1)) + { + paymentString += string.Format("\n\r--- {0,-30} -------", dr.GetString(1)); + currentType = dr.GetString(1); + } + paymentString += string.Format("\n\r{0:HH:mm} => {1:#0.00} => {2}", dr.GetDateTime(0), dr.GetDecimal(2), dr.GetString(3)); + } + } + } + return paymentString; + } + public string GetActiveCashiers() + { + string cashiers = ""; + string query = @" +SELECT Name FROM Users WHERE UserID IN +( +SELECT DISTINCT UserID FROM Vouchers WHERE Date BETWEEN @StartDate AND @FinishDate +UNION +SELECT DISTINCT CashierID FROM Payments WHERE Date BETWEEN @StartDate AND @FinishDate +UNION +SELECT DISTINCT CashierIn FROM Advances WHERE DateIn BETWEEN @StartDate AND @FinishDate +UNION +SELECT DISTINCT CashierOut FROM Advances WHERE DateOut BETWEEN @StartDate AND @FinishDate +)"; + + using (SqlCommand cmd = new SqlCommand(query)) + { + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@FinishDate", finishDate); + + using (IDataReader dr = connection.ExecuteReader(cmd)) + { + while (dr.Read()) + { + cashiers += string.Format("{0}, ", dr.GetString(0)); + } + } + } + return cashiers; + } + public decimal GetNetSales() + { + string query = @" +SELECT ISNULL(SUM(i.Amount), 0) AS Amount FROM Vouchers t INNER JOIN SaleVoucher s ON t.VoucherID = s.VoucherID +INNER JOIN Inventory i ON t.VoucherID = i.VoucherID +INNER JOIN Customers c ON s.CustomerID = c.CustomerID +WHERE t.Type = 'S' +AND t.LastEditDate BETWEEN @StartDate AND @FinishDate AND t.UserID = @UserID +AND s.Void = 0 AND s.Paid = 1 +"; + using (SqlCommand cmd = new SqlCommand(query)) + { + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@FinishDate", finishDate); + cmd.Parameters.AddWithValue("@UserID", userID); + return (decimal)connection.ExecuteScalar(cmd); + } + } + public decimal GetDiscountsBills(ref string info) + { + decimal amount = 0; + info = ""; + + string query = @" +SELECT t.Date, s.BillID, c.Name, SUM(i.Amount) AS Amount, SUM(Quantity * Rate * Discount) AS Discount FROM Vouchers t INNER JOIN SaleVoucher s ON t.VoucherID = s.VoucherID +INNER JOIN Inventory i ON t.VoucherID = i.VoucherID +INNER JOIN Customers c ON s.CustomerID = c.CustomerID +WHERE t.Type = 'S' +AND t.LastEditDate BETWEEN @StartDate AND @FinishDate AND t.UserID = @UserID +AND s.Void = 1 +GROUP BY t.Date, c.Name, s.BillID, i.Discount +HAVING i.Discount > .2 +"; + using (SqlCommand cmd = new SqlCommand(query)) + { + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@FinishDate", finishDate); + cmd.Parameters.AddWithValue("@UserID", userID); + using (IDataReader dr = connection.ExecuteReader(cmd)) + { + if (dr.Read()) + { + info = "\n\r--- High Discounts Bills -----------------"; + + do + { + amount += dr.GetDecimal(3); + info += string.Format("\n\r{0:dd-MMM-yyyy HH:mm:ss} {1} {2}", dr.GetDateTime(0), dr.GetString(1), dr.GetString(2)); + info += string.Format("\n\rAmount: {0:#0.00} :: Discount: {1:#0.00}", dr.GetDecimal(3), dr.GetDecimal(4)); + info += "\n\r------------------------------------------"; + } while (dr.Read()); + } + } + } + return amount; + } + + public decimal GetOldPending() + { + string query = @" +SELECT ISNULL(SUM(i.Amount), 0) FROM Vouchers t INNER JOIN SaleVoucher s ON t.VoucherID = s.VoucherID +INNER JOIN Inventory i ON t.VoucherID = i.VoucherID +WHERE t.Type = 'S' +AND s.Void = 0 +AND s.Paid = 0 +AND t.LastEditDate < @StartDate AND t.UserID = @UserID +"; + using (SqlCommand cmd = new SqlCommand(query)) + { + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@UserID", userID); + return (decimal)connection.ExecuteScalar(cmd); + } + } + public decimal GetOldReceipts() + { + string query = @" +SELECT ISNULL(SUM(i.Amount), 0) FROM Vouchers t INNER JOIN SaleVoucher s ON t.VoucherID = s.VoucherID +INNER JOIN Inventory i ON t.VoucherID = i.VoucherID +WHERE t.Type = 'S' +AND s.Void = 0 +AND s.Paid = 1 +AND t.CreationDate < @StartDate AND t.LastEditDate >= @StartDate AND t.UserID = @UserID +"; + using (SqlCommand cmd = new SqlCommand(query)) + { + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@UserID", userID); + return (decimal)connection.ExecuteScalar(cmd); + } + } + public decimal GetOldVoided() + { + string query = @" +SELECT ISNULL(SUM(i.Amount), 0) FROM Vouchers t INNER JOIN SaleVoucher s ON t.VoucherID = s.VoucherID +INNER JOIN Inventory i ON t.VoucherID = i.VoucherID +WHERE t.Type = 'S' +AND s.Void = 1 +AND t.CreationDate < @StartDate AND t.LastEditDate >= @StartDate AND t.UserID = @UserID +"; + using (SqlCommand cmd = new SqlCommand(query)) + { + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@UserID", userID); + return (decimal)connection.ExecuteScalar(cmd); + } + } + } +} diff --git a/Tanshu.Accounts.SqlDAO/CustomerDAO.cs b/Tanshu.Accounts.SqlDAO/CustomerDAO.cs new file mode 100644 index 0000000..229ffc5 --- /dev/null +++ b/Tanshu.Accounts.SqlDAO/CustomerDAO.cs @@ -0,0 +1,109 @@ +using System; +using System.Collections.Generic; +using System.Data.SqlClient; +using Tanshu.Accounts.Contracts; +using Tanshu.Data.DAO; +using Tanshu.Accounts.DAOFactory; + +namespace Tanshu.Accounts.SqlDAO +{ + public class CustomerDAO : BaseDAO, ICustomerDAO + { + public CustomerDAO(IConnectionDAO connection) + : base(connection) + { } + + public void Insert(CustomerBO customer) + { + using (SqlCommand cmd = new SqlCommand(@" +SET @CustomerID = NEWID(); +SELECT @Code = ISNULL(MAX(Code), 0) + 1 FROM Customers; +INSERT INTO Customers (CustomerID, Code, Name, LedgerID, Address, Important, Phone, Remarks) VALUES (@CustomerID, @Code, @Name, @LedgerID, @Address, @Important, @Phone, @Remarks)")) + { + cmd.Parameters.Add("@CustomerID", System.Data.SqlDbType.UniqueIdentifier); + cmd.Parameters["@CustomerID"].Direction = System.Data.ParameterDirection.Output; + cmd.Parameters.Add("@Code", System.Data.SqlDbType.Int); + cmd.Parameters["@Code"].Direction = System.Data.ParameterDirection.Output; + + cmd.Parameters.AddWithValue("@Name", customer.Name); + cmd.Parameters.AddWithValue("@LedgerID", customer.LedgerID); + cmd.Parameters.AddWithValue("@Address", customer.Address); + cmd.Parameters.AddWithValue("@Important", customer.Important); + cmd.Parameters.AddWithValue("@Phone", customer.Phone); + cmd.Parameters.AddWithValue("@Remarks", customer.Remarks); + connection.ExecuteNonQuery(cmd); + customer.CustomerID = (Guid)cmd.Parameters["@CustomerID"].Value; + customer.Code = (int)cmd.Parameters["@Code"].Value; + } + } + public void Update(CustomerBO customer) + { + using (SqlCommand cmd = new SqlCommand(@"UPDATE Customers SET Code = @Code, Name = @Name, LedgerID = @LedgerID, Address = @Address, Important = @Important, Phone = @Phone, Remarks = @Remarks WHERE CustomerID = @CustomerID")) + { + cmd.Parameters.AddWithValue("@CustomerID", customer.CustomerID); + cmd.Parameters.AddWithValue("@Code", customer.Code); + cmd.Parameters.AddWithValue("@Name", customer.Name); + cmd.Parameters.AddWithValue("@LedgerID", customer.LedgerID); + cmd.Parameters.AddWithValue("@Address", customer.Address); + cmd.Parameters.AddWithValue("@Important", customer.Important); + cmd.Parameters.AddWithValue("@Phone", customer.Phone); + cmd.Parameters.AddWithValue("@Remarks", customer.Remarks); + connection.ExecuteNonQuery(cmd); + } + } + public void Delete(Guid customerID) + { + using (SqlCommand cmd = new SqlCommand("DELETE FROM Customers WHERE CustomerID = @CustomerID")) + { + cmd.Parameters.AddWithValue("@CustomerID", customerID); + connection.ExecuteNonQuery(cmd); + } + } + + public CustomerBO GetCustomer(Guid customerID) + { + SqlCommand cmd = new SqlCommand("SELECT * FROM Customers Where CustomerID=@CustomerID "); + cmd.Parameters.AddWithValue("@CustomerID", customerID); + return BusinessObjectDAO.GetBusinessObject(connection.ExecuteReader(cmd)); + } + public List GetFilteredCustomers(Dictionary filter) + { + string query = ""; + string[] filters = filter["Universal"].Split(' '); + if ((filters != null) && (filters.Length > 0)) + { + query = "SELECT CustomerID, Code, Name, LedgerID, Address, Important, Phone, Remarks FROM Customers WHERE "; + foreach (string fil in filters) + { + query += string.Format("(Name LIKE '%{0}%' OR Address LIKE '%{0}%' OR Phone LIKE '%{0}%' OR Remarks LIKE '%{0}%') AND ", fil); + } + query = query.Substring(0, query.Length - 5); + } + else + { + query = "SELECT CustomerID, Code, Name, LedgerID, Address, Important, Phone, Remarks FROM Customers"; + } + return BusinessObjectDAO.GetBusinessObjects(connection.ExecuteReader(query)); + } + public List GetCustomerLedgers() + { + return BusinessObjectDAO.GetBusinessObjects(connection.ExecuteReader("SELECT * FROM Ledgers WHERE Type IN ('B', 'D') ORDER BY Name")); + } + public List GetCustomers() + { + Dictionary filter = new Dictionary(); + filter.Add("Universal", ""); + return GetFilteredCustomers(filter); + } + public List GetCustomers(Guid customerID) + { + string query = "SELECT CustomerID, Code, Name, LedgerID, Address, Important, Phone, Remarks FROM Customers WHERE CustomerID = @CustomerID"; + using (SqlCommand cmd = new SqlCommand(query)) + { + cmd.Parameters.AddWithValue("@CustomerID", customerID); + return BusinessObjectDAO.GetBusinessObjects(connection.ExecuteReader(cmd)); + } + + } + } +} diff --git a/Tanshu.Accounts.SqlDAO/Database.cs b/Tanshu.Accounts.SqlDAO/Database.cs new file mode 100644 index 0000000..82ee6a3 --- /dev/null +++ b/Tanshu.Accounts.SqlDAO/Database.cs @@ -0,0 +1,10 @@ +using System.Configuration; + +namespace Tanshu.Accounts.SqlDAO +{ + internal static class Database + { + internal static string ConnectionString + { get { return ConfigurationManager.ConnectionStrings["connection"].ConnectionString; } } + } +} diff --git a/Tanshu.Accounts.SqlDAO/InventoryDAO.cs b/Tanshu.Accounts.SqlDAO/InventoryDAO.cs new file mode 100644 index 0000000..04617b9 --- /dev/null +++ b/Tanshu.Accounts.SqlDAO/InventoryDAO.cs @@ -0,0 +1,102 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Data.SqlClient; +using Tanshu.Accounts.Contracts; +using Tanshu.Data.DAO; +using Tanshu.Accounts.DAOFactory; + +namespace Tanshu.Accounts.SqlDAO +{ + public class InventoryDAO : BaseDAO, IInventoryDAO + { + public InventoryDAO(IConnectionDAO connection) + : base(connection) + { } + + public bool Insert(InventoryBO inventory) + { + using (SqlCommand cmd = new SqlCommand(@" +SET @InventoryID = NEWID(); +INSERT INTO Inventory (InventoryID, VoucherID, ProductID, ComplexProductID, Quantity, Rate, Tax, Discount, IsRateFinal) VALUES (@InventoryID, @VoucherID, @ProductID, @ComplexProductID, @Quantity, @Rate, @Tax, @Discount, @IsRateFinal); +SELECT @timestamp = timestamp, @Amount = Amount FROM Inventory WHERE InventoryID = @InventoryID; +")) + { + cmd.Parameters.Add("@InventoryID", System.Data.SqlDbType.UniqueIdentifier); + cmd.Parameters["@InventoryID"].Direction = System.Data.ParameterDirection.Output; + cmd.Parameters.AddWithValue("@VoucherID", inventory.VoucherID); + cmd.Parameters.AddWithValue("@ProductID", inventory.ProductID); + if (inventory.ComplexProductID.HasValue) + cmd.Parameters.AddWithValue("@ComplexProductID", inventory.ComplexProductID); + else + cmd.Parameters.AddWithValue("@ComplexProductID", DBNull.Value); + cmd.Parameters.AddWithValue("@Quantity", inventory.Quantity); + cmd.Parameters.AddWithValue("@Rate", inventory.Rate); + cmd.Parameters.AddWithValue("@Tax", inventory.Tax); + cmd.Parameters.AddWithValue("@Discount", inventory.Discount); + cmd.Parameters.Add("@Amount", System.Data.SqlDbType.Decimal); + cmd.Parameters["@Amount"].Direction = System.Data.ParameterDirection.Output; + cmd.Parameters.AddWithValue("@IsRateFinal", inventory.IsRateFinal); + cmd.Parameters.Add("@timestamp", System.Data.SqlDbType.Timestamp); + cmd.Parameters["@timestamp"].Direction = System.Data.ParameterDirection.Output; + connection.ExecuteNonQuery(cmd); + inventory.InventoryID = (Guid)cmd.Parameters["@InventoryID"].Value; + inventory.timestamp = (byte[])cmd.Parameters["@timestamp"].Value; + return true; + } + } + public bool Update(InventoryBO inventory) + { + using (SqlCommand cmd = new SqlCommand(@" +UPDATE Inventory SET VoucherID = @VoucherID, ProductID = @ProductID, ComplexProductID = @ComplexProductID, Quantity = @Quantity, Rate = @Rate, Tax = @Tax, Discount = @Discount, IsRateFinal = @IsRateFinal WHERE InventoryID = @InventoryID; +SELECT @timestamp = timestamp, @Amount = Amount FROM Inventory WHERE InventoryID = @InventoryID;")) + { + cmd.Parameters.AddWithValue("@InventoryID", inventory.InventoryID); + cmd.Parameters.AddWithValue("@VoucherID", inventory.VoucherID); + cmd.Parameters.AddWithValue("@ProductID", inventory.ProductID); + if (inventory.ComplexProductID.HasValue) + cmd.Parameters.AddWithValue("@ComplexProductID", inventory.ComplexProductID); + else + cmd.Parameters.AddWithValue("@ComplexProductID", DBNull.Value); + cmd.Parameters.AddWithValue("@Quantity", inventory.Quantity); + cmd.Parameters.AddWithValue("@Rate", inventory.Rate); + cmd.Parameters.AddWithValue("@Tax", inventory.Tax); + cmd.Parameters.AddWithValue("@Discount", inventory.Discount); + cmd.Parameters.Add("@Amount", System.Data.SqlDbType.Decimal); + cmd.Parameters["@Amount"].Direction = System.Data.ParameterDirection.Output; + cmd.Parameters.AddWithValue("@IsRateFinal", inventory.IsRateFinal); + cmd.Parameters.Add("@timestamp", System.Data.SqlDbType.Timestamp); + cmd.Parameters["@timestamp"].Direction = System.Data.ParameterDirection.Output; + connection.ExecuteNonQuery(cmd); + inventory.timestamp = (byte[])cmd.Parameters["@timestamp"].Value; + return true; + } + } + public bool Delete(Guid voucherID) + { + using (SqlCommand cmd = new SqlCommand("DELETE from Inventory where VoucherID = @VoucherID")) + { + cmd.Parameters.AddWithValue("@VoucherID", voucherID); + connection.ExecuteNonQuery(cmd); + return true; + } + } + public bool Delete(Guid voucherID, Guid productID) + { + using (SqlCommand cmd = new SqlCommand("DELETE from Inventory where VoucherID = @VoucherID and ProductID = @ProductID")) + { + cmd.Parameters.AddWithValue("@VoucherID", voucherID); + cmd.Parameters.AddWithValue("@InventoryID", productID); + connection.ExecuteNonQuery(cmd); + return true; + } + } + + public List GetInventories(Guid voucherID) + { + SqlCommand cmd = new SqlCommand("SELECT p.Name + ' (' + p.Units +')' AS ProductName, i.* FROM Inventory i INNER JOIN Products p ON i.ProductID = p.ProductID WHERE VoucherID = @VoucherID ORDER BY timestamp"); + cmd.Parameters.AddWithValue("@VoucherID", voucherID); + return BusinessObjectDAO.GetBusinessObjects(connection.ExecuteReader(cmd)); + } + } +} diff --git a/Tanshu.Accounts.SqlDAO/LedgerDAO.cs b/Tanshu.Accounts.SqlDAO/LedgerDAO.cs new file mode 100644 index 0000000..7fbc597 --- /dev/null +++ b/Tanshu.Accounts.SqlDAO/LedgerDAO.cs @@ -0,0 +1,102 @@ + using System; +using System.Collections.Generic; +using System.Text; +using System.Data.SqlClient; +using Tanshu.Accounts.Contracts; +using Tanshu.Data.DAO; +using Tanshu.Accounts.DAOFactory; + +namespace Tanshu.Accounts.SqlDAO +{ + public class LedgerDAO : BaseDAO , ILedgerDAO + { + public LedgerDAO(IConnectionDAO connection) + : base(connection) + { } + + public bool Insert(LedgerBO ledger) + { + ledger.LedgerID = Guid.NewGuid(); + using (SqlCommand cmd = new SqlCommand(@" +SELECT @Code = ISNULL(MAX(Code),0) + 1 FROM Ledgers WHERE Type = @Type; +INSERT INTO Ledgers (LedgerID, Code, Name, Type, ParentLedgerID, CostCenterID) VALUES (@LedgerID, @Code, @Name, @Type, @ParentLedgerID, @CostCenterID); +SELECT @timestamp = timestamp FROM Ledgers WHERE LedgerID = @LedgerID; +")) + { + cmd.Parameters.AddWithValue("@LedgerID", ledger.LedgerID); + cmd.Parameters.Add("@Code", System.Data.SqlDbType.Int); + cmd.Parameters["@Code"].Direction = System.Data.ParameterDirection.Output; + cmd.Parameters.AddWithValue("@Name", ledger.Name); + cmd.Parameters.AddWithValue("@Type", ledger.Type); + if (ledger.ParentLedgerID != new Guid()) + cmd.Parameters.AddWithValue("@ParentLedgerID", ledger.ParentLedgerID); + else + cmd.Parameters.AddWithValue("@ParentLedgerID", DBNull.Value); + cmd.Parameters.AddWithValue("@CostCenterID", ledger.CostCenterID); + cmd.Parameters.Add("@timestamp", System.Data.SqlDbType.Timestamp); + cmd.Parameters["@timestamp"].Direction = System.Data.ParameterDirection.Output; + connection.ExecuteNonQuery(cmd); + ledger.Code = (int)cmd.Parameters["@Code"].Value; + ledger.timestamp = (byte[])cmd.Parameters["@timestamp"].Value; + return true; + } + } + public LedgerBO GetLedger(Guid ledgerID) + { + SqlCommand cmd = new SqlCommand("SELECT * FROM Ledgers WHERE LedgerID = @LedgerID"); + cmd.Parameters.AddWithValue("@LedgerID", ledgerID); + return BusinessObjectDAO.GetBusinessObject(connection.ExecuteReader(cmd)); + } + public LedgerBO GetLedger(string name) + { + SqlCommand cmd = new SqlCommand("SELECT * FROM Ledgers WHERE Name = @Name"); + cmd.Parameters.AddWithValue("@Name", name); + return BusinessObjectDAO.GetBusinessObject(connection.ExecuteReader(cmd)); + } + public List GetLedgers(char type) + { + SqlCommand cmd = new SqlCommand("SELECT c.Name as CostCenter, l.* FROM CostCenters c INNER JOIN Ledgers l ON c.CostCenterID = l.CostCenterID WHERE Type = @Type"); + cmd.Parameters.AddWithValue("@Type", type); + return BusinessObjectDAO.GetBusinessObjects(connection.ExecuteReader(cmd)); + } + public bool Delete(Guid ledgerID) + { + using (SqlCommand cmd = new SqlCommand("DELETE FROM Ledgers WHERE LedgerID = @LedgerID")) + { + cmd.Parameters.AddWithValue("@LedgerID", ledgerID); + connection.ExecuteNonQuery(cmd); + return true; + } + } + public bool Update(LedgerBO ledger) + { + + using (SqlCommand cmd = new SqlCommand(@" +UPDATE Ledgers SET Code = @Code, Name = @Name, Type = @Type, ParentLedgerID = @ParentLedgerID, CostCenterID = @CostCenterID WHERE LedgerID = @LedgerID +SELECT @timestamp = timestamp FROM Ledgers WHERE LedgerID = @LedgerID; +")) + { + cmd.Parameters.AddWithValue("@LedgerID", ledger.LedgerID); + cmd.Parameters.AddWithValue("@Code", ledger.Code); + cmd.Parameters.AddWithValue("@Name", ledger.Name); + cmd.Parameters.AddWithValue("@Type", ledger.Type); + if (ledger.ParentLedgerID != new Guid()) + cmd.Parameters.AddWithValue("@ParentLedgerID", ledger.ParentLedgerID); + else + cmd.Parameters.AddWithValue("@ParentLedgerID", DBNull.Value); + cmd.Parameters.AddWithValue("@CostCenterID", ledger.CostCenterID); + cmd.Parameters.Add("@timestamp", System.Data.SqlDbType.Timestamp); + cmd.Parameters["@timestamp"].Direction = System.Data.ParameterDirection.Output; + connection.ExecuteNonQuery(cmd); + ledger.timestamp = (byte[])cmd.Parameters["@timestamp"].Value; + return true; + } + } + public List GetLedgers() + { + string query = "SELECT c.Name as CostCenter, l.* FROM CostCenters c INNER JOIN Ledgers l ON c.CostCenterID = l.CostCenterID WHERE Type <> 'S'"; + return BusinessObjectDAO.GetBusinessObjects(connection.ExecuteReader(query)); + } + + } +} diff --git a/Tanshu.Accounts.SqlDAO/ManagementDAO.cs b/Tanshu.Accounts.SqlDAO/ManagementDAO.cs new file mode 100644 index 0000000..6b58822 --- /dev/null +++ b/Tanshu.Accounts.SqlDAO/ManagementDAO.cs @@ -0,0 +1,355 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Data.SqlClient; +using Tanshu.Accounts.Contracts; +using Tanshu.Data.DAO; +using System.Data; +using Tanshu.Accounts.DAOFactory; + +namespace Tanshu.Accounts.SqlDAO +{ + public class ManagementDAO : BaseDAO, IManagementDAO + { + private DateTime startDate; + private DateTime finishDate; + public ManagementDAO(DateTime startDate, DateTime finishDate, IConnectionDAO connection) + : base(connection) + { + this.startDate = Convert.ToDateTime(string.Format("{0:dd-MMM-yyyy} 00:00:00", startDate)); + this.finishDate = Convert.ToDateTime(string.Format("{0:dd-MMM-yyyy} 23:59:59", finishDate)); + } + public decimal GetBalance(decimal? tax) + { + string query; + if (tax.HasValue) + query = @" +SELECT ISNULL(SUM(i.Amount), 0) FROM Vouchers t INNER JOIN SaleVoucher s ON t.VoucherID = s.VoucherID +INNER JOIN Inventory i ON t.VoucherID = i.VoucherID +WHERE t.Type = 'S' AND t.Date BETWEEN @StartDate AND @FinishDate AND s.Void = 0 +AND i.Tax = @Tax +"; + else + query = @" +SELECT ISNULL(SUM(i.Amount), 0) FROM Vouchers t INNER JOIN SaleVoucher s ON t.VoucherID = s.VoucherID +INNER JOIN Inventory i ON t.VoucherID = i.VoucherID +WHERE t.Type = 'S' AND t.Date BETWEEN @StartDate AND @FinishDate AND s.Void = 0 +"; + using (SqlCommand cmd = new SqlCommand(query)) + { + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@FinishDate", finishDate); + if (tax.HasValue) cmd.Parameters.AddWithValue("@Tax", tax); + return (decimal)connection.ExecuteScalar(cmd); + } + + } + public List GetUpdateBillList(decimal tax, bool voided, bool paid, bool creditCard) + { + //Paid = 1, CC = 0, Void = 0 + List list = new List(); + string query = @" +SELECT DISTINCT t.VoucherID +FROM Vouchers t INNER JOIN SaleVoucher s ON t.VoucherID = s.VoucherID +INNER JOIN Inventory i ON t.VoucherID = i.VoucherID +WHERE t.Date BETWEEN @StartDate AND @FinishDate AND t.Type = 'S' +AND s.Void = @Void and s.Paid = @Paid AND s.CreditCard = @CreditCard AND i.Tax = @Tax"; + using (SqlCommand cmd = new SqlCommand(query)) + { + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@FinishDate", finishDate); + cmd.Parameters.AddWithValue("@Tax", tax); + cmd.Parameters.AddWithValue("@Void", voided); + cmd.Parameters.AddWithValue("@Paid", paid); + cmd.Parameters.AddWithValue("CreditCard", creditCard); + + using (IDataReader dr = connection.ExecuteReader(cmd)) + { + while (dr.Read()) + list.Add(dr.GetGuid(0)); + } + } + return list; + } + + public List GetPaidBills() + { + string query = @" + SELECT t.VoucherID, s.TableID AS TableID, + (SELECT SUM(Amount) FROM Inventory WHERE VoucherID = t.VoucherID) AS Amount, + s.BillID, t.CreationDate, u.Name, CAST(0 AS bit), s.KotID, t.LastEditDate, s.Printed + FROM Vouchers t INNER JOIN SaleVoucher s ON t.VoucherID = s.VoucherID AND s.Paid = 1 AND s.Void = 0 + INNER JOIN Users u ON t.UserID = u.UserID WHERE + t.LastEditDate BETWEEN @StartDate AND @FinishDate ORDER BY t.CreationDate "; + using (SqlCommand cmd = new SqlCommand(query)) + { + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@FinishDate", finishDate); + using (IDataReader dr = connection.ExecuteReader(cmd)) + { + List outList = new List(); + while (dr.Read()) + { + PendingBillsBO local = new PendingBillsBO(); + + local.voucherID = dr.GetGuid(0); + local.TableID = dr.GetString(1); + if (!dr.IsDBNull(2)) + local.Amount = dr.GetDecimal(2); + local.BillNo = dr.GetString(3); + local.BookingTime = dr.GetDateTime(4); + local.Cashier = dr.GetString(5); + local.Important = dr.GetBoolean(6); + local.Kot = dr.GetString(7); + local.LastEdited = dr.GetDateTime(8); + local.Printed = dr.GetBoolean(9); + outList.Add(local); + } + return outList; + } + } + } + + public decimal Update(Guid voucherID, decimal tax) + { + decimal amt; + using (SqlCommand cmd = new SqlCommand("SELECT ISNULL(SUM(Amount), 0) FROM Inventory WHERE VoucherID = @VoucherID AND Tax = @Tax")) + { + cmd.Parameters.AddWithValue("@VoucherID", voucherID); + cmd.Parameters.AddWithValue("@Tax", tax); + amt = (decimal)connection.ExecuteScalar(cmd); + } + using (SqlCommand cmd = new SqlCommand(@" +DELETE FROM Inventory WHERE VoucherID = @VoucherID; +DELETE FROM SaleVoucher WHERE VoucherID = @VoucherID; +DELETE FROM Vouchers WHERE VoucherID = @VoucherID;")) + { + cmd.Parameters.AddWithValue("@VoucherID", voucherID); + connection.ExecuteNonQuery(cmd); + } + return amt; + } + // public static List GetBillList(DateTime? fromDate, DateTime? toDate, decimal? minValue, decimal? maxValue, bool? showVoided) + // { + + // using (ConnectionDAO connection = new ConnectionDAO()) + // { + // string add = " WHERE "; + // string query = @" + //SELECT t.TransactionID AS transactionID, CAST (CASE WHEN Alarm IS NULL THEN 0 ELSE 1 END AS bit) AS Alarm, + //s.Alarm AS AlarmTime, s.TableID, (SELECT SUM(Amount) FROM Inventory i WHERE i.TransactionID = t.TransactionID) AS Amount, + //s.BillID, t.CreationDate AS BookingTime, u.Name AS Cashier, s.Void AS Important, + //s.KotID AS Kot, t.LastEditDate AS LastEdited, s.Printed AS Printed + //FROM BasicTransactions t INNER JOIN TransactionSale s ON t.TransactionID = s.TransactionID + //INNER JOIN Users u ON t.UserID = u.UserID"; + // if (fromDate.HasValue) + // { + // query += add + "t.Date >= @StartDate"; + // add = " AND "; + // } + // if (toDate.HasValue) + // { + // query += add + "t.Date <= @FinishDate"; + // add = " AND "; + // } + // if (minValue.HasValue) + // { + // query += add + "Amount >= @MinValue"; + // add = " AND "; + // } + // if (maxValue.HasValue) + // { + // query += add + "Amount <= @MaxValue"; + // add = " AND "; + // } + // if (showVoided.HasValue) + // { + // query += add + "s.Void = @Void"; + // } + // using (SqlCommand cmd = new SqlCommand(query)) + // { + // if (fromDate.HasValue) + // cmd.Parameters.AddWithValue("@StartDate", fromDate.Value); + // if (toDate.HasValue) + // cmd.Parameters.AddWithValue("@FinishDate", toDate.Value); + // if (minValue.HasValue) + // cmd.Parameters.AddWithValue("@MinValue", minValue.Value); + // if (maxValue.HasValue) + // cmd.Parameters.AddWithValue("@MaxValue", maxValue.Value); + // if (showVoided.HasValue) + // cmd.Parameters.AddWithValue("@Void", showVoided.Value); + // return BusinessObjectDAO.GetBusinessObjects(connection.ExecuteReader(cmd)); + // } + // } + // } + + public void Reorder(ShowProgessDelegate showProgressDelegate) + { + showProgressDelegate(0, 0, 0, "Cleaning up Void Bills"); + using (SqlCommand cmd = new SqlCommand(@" +DELETE FROM Inventory WHERE VoucherID IN ( +SELECT v.VoucherID FROM SaleVoucher s INNER JOIN Vouchers v ON s.VoucherID = v.VoucherID +WHERE s.Void = 1 AND v.Date BETWEEN @StartDate AND @EndDate) + +DELETE FROM SaleVoucher WHERE VoucherID IN ( +SELECT v.VoucherID FROM SaleVoucher s INNER JOIN Vouchers v ON s.VoucherID = v.VoucherID +WHERE s.Void = 1 AND v.Date BETWEEN @StartDate AND @EndDate) + +DELETE FROM Vouchers WHERE VoucherID NOT IN (SELECT VoucherID FROM SaleVoucher) +AND Type = 'S' +")) + { + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@EndDate", finishDate); + connection.ExecuteNonQuery(cmd); + } + List list = new List(); + using (SqlCommand cmd = new SqlCommand(@" +SELECT v.VoucherID, s.BillID, v.Date +FROM Vouchers v INNER JOIN SaleVoucher s ON v.VoucherID = s.VoucherID +WHERE v.Date >= @StartDate AND s.Printed = 1 +ORDER BY Date")) + { + cmd.Parameters.AddWithValue("@StartDate", startDate); + using (IDataReader dr = connection.ExecuteReader(cmd)) + { + while (dr.Read()) + { + list.Add(new SaleVoucherBO { VoucherID = dr.GetGuid(0), BillID = dr.GetString(1), Date = dr.GetDateTime(2) }); + } + } + } + if (list.Count == 0) + return; + connection.ExecuteNonQuery("ALTER INDEX [IX_TransactionSale] ON [dbo].[SaleVoucher] DISABLE"); + string billID = list[0].BillID; + for (int i = 1; i < list.Count; i++) + { + billID = GetBillID(billID); + showProgressDelegate(0, list.Count, i, string.Format("Fixing bill no {0}", billID)); + using (SqlCommand cmd = new SqlCommand("UPDATE SaleVoucher SET BillID = @BillID WHERE VoucherID = @VoucherID")) + { + cmd.Parameters.AddWithValue("@VoucherID", list[i].VoucherID); + cmd.Parameters.AddWithValue("@BillID", billID); + connection.ExecuteNonQuery(cmd); + } + } + connection.ExecuteNonQuery("ALTER INDEX [IX_TransactionSale] ON [dbo].[SaleVoucher] REBUILD"); + showProgressDelegate(0, list.Count, list.Count, "Cleanup finished"); + + } + private string GetBillID(string billID) + { + decimal id = Convert.ToDecimal(billID.Replace("-", "")); + id++; + billID = id.ToString(); + if (billID.EndsWith("0000")) + billID = (id + 1).ToString(); + if (billID.Length == 5) + billID = "0" + billID; + return billID.Substring(0, 2) + "-" + billID.Substring(2, 4); + } + + + #region Merge Data + public bool MergeData(string sourceDB, string targetDB) + { + DeleteTarget(sourceDB, targetDB); + DateTime lastBillDateTime = GetBillDateTime(sourceDB, targetDB); + connection.ExecuteNonQuery(string.Format("ALTER INDEX [IX_TransactionSale] ON [{0}].[dbo].[SaleVoucher] DISABLE", targetDB)); + CopyData(sourceDB, targetDB); + Clean(sourceDB, targetDB, lastBillDateTime); + connection.ExecuteNonQuery(string.Format("ALTER INDEX [IX_TransactionSale] ON [{0}].[dbo].[SaleVoucher] REBUILD", targetDB)); + return true; + } + private void DeleteTarget(string sourceDB, string targetDB) + { + string query = @" +DELETE FROM {0}.dbo.Inventory WHERE VoucherID IN ( +SELECT v.VoucherID FROM {0}.dbo.SaleVoucher s INNER JOIN {0}.dbo.Vouchers v ON s.VoucherID = v.VoucherID +WHERE v.Date BETWEEN @StartDate AND @EndDate) + +DELETE FROM {0}.dbo.SaleVoucher WHERE VoucherID IN ( +SELECT v.VoucherID FROM {0}.dbo.SaleVoucher s INNER JOIN {0}.dbo.Vouchers v ON s.VoucherID = v.VoucherID +WHERE v.Date BETWEEN @StartDate AND @EndDate) + +DELETE FROM {0}.dbo.Vouchers WHERE VoucherID NOT IN (SELECT VoucherID FROM {0}.dbo.SaleVoucher) +AND Type = 'S' +"; + using (SqlCommand cmd = new SqlCommand(string.Format(query, targetDB))) + { + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@EndDate", finishDate); + connection.ExecuteNonQuery(cmd); + } + } + private DateTime GetBillDateTime(string sourceDB, string targetDB) + { + string query = @" +SELECT TOP 1 v.Date +FROM {0}.dbo.Vouchers v INNER JOIN {0}.dbo.SaleVoucher s ON v.VoucherID = s.VoucherID +WHERE v.Date < @StartDate +ORDER BY Date DESC"; + using (SqlCommand cmd = new SqlCommand(string.Format(query, targetDB))) + { + cmd.Parameters.AddWithValue("@StartDate", startDate); + return (DateTime)connection.ExecuteScalar(cmd); + } + } + private void CopyData(string sourceDB, string targetDB) + { + string query = @" +INSERT INTO {0}.dbo.Vouchers (VoucherID, Code, Ref, Date, Narration, UserID, CreationDate, LastEditDate, Type) +SELECT VoucherID, Code, Ref, Date, Narration, UserID, CreationDate, LastEditDate, Type +FROM {1}.dbo.Vouchers WHERE Date BETWEEN @StartDate AND @EndDate; + +INSERT INTO {0}.dbo.SaleVoucher (VoucherID, BillID, TableID, WaiterID, CustomerID, Paid, Void, VoidReason, Printed, Alarm, KotID, CreditCard, IsImportant) +SELECT VoucherID, BillID, TableID, WaiterID, CustomerID, Paid, Void, VoidReason, Printed, Alarm, KotID, CreditCard, IsImportant +FROM {1}.dbo.SaleVoucher WHERE VoucherID IN ( +SELECT v.VoucherID FROM {1}.dbo.Vouchers v WHERE v.Date BETWEEN @StartDate AND @EndDate) + +INSERT INTO {0}.dbo.Inventory (InventoryID, VoucherID, ProductID, ComplexProductID, Quantity, Rate, Tax, Discount, IsRateFinal) +SELECT InventoryID, VoucherID, ProductID, ComplexProductID, Quantity, Rate, Tax, Discount, IsRateFinal +FROM {1}.dbo.Inventory WHERE VoucherID IN ( +SELECT v.VoucherID FROM {1}.dbo.Vouchers v WHERE v.Date BETWEEN @StartDate AND @EndDate) +"; + using (SqlCommand cmd = new SqlCommand(string.Format(query, targetDB, sourceDB))) + { + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@EndDate", finishDate); + connection.ExecuteNonQuery(cmd); + } + } + private void Clean(string sourceDB, string targetDB, DateTime lastBillDateTime) + { + List list = new List(); + using (SqlCommand cmd = new SqlCommand(string.Format(@" +SELECT v.VoucherID, s.BillID, v.Date +FROM {0}.dbo.Vouchers v INNER JOIN {0}.dbo.SaleVoucher s ON v.VoucherID = s.VoucherID +WHERE v.Date >= @StartDate AND s.Printed = 1 +ORDER BY Date", targetDB))) + { + cmd.Parameters.AddWithValue("@StartDate", lastBillDateTime); + using (IDataReader dr = connection.ExecuteReader(cmd)) + { + while (dr.Read()) + { + list.Add(new SaleVoucherBO { VoucherID = dr.GetGuid(0), BillID = dr.GetString(1), Date = dr.GetDateTime(2) }); + } + } + } + string billID = list[0].BillID; + for (int i = 1; i < list.Count; i++) + { + billID = GetBillID(billID); + using (SqlCommand cmd = new SqlCommand(string.Format("UPDATE {0}.dbo.SaleVoucher SET BillID = @BillID WHERE VoucherID = @VoucherID", targetDB))) + { + cmd.Parameters.AddWithValue("@VoucherID", list[i].VoucherID); + cmd.Parameters.AddWithValue("@BillID", billID); + connection.ExecuteNonQuery(cmd); + } + } + } + #endregion + } +} diff --git a/Tanshu.Accounts.SqlDAO/MembershipDAO.cs b/Tanshu.Accounts.SqlDAO/MembershipDAO.cs new file mode 100644 index 0000000..735f40a --- /dev/null +++ b/Tanshu.Accounts.SqlDAO/MembershipDAO.cs @@ -0,0 +1,151 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Data.SqlClient; +using Tanshu.Accounts.Contracts; +using Tanshu.Data.DAO; +using System.Data; +using Tanshu.Accounts.DAOFactory; + +namespace Tanshu.Accounts.SqlDAO +{ + public class MembershipDAO : BaseDAO, IMembershipDAO + { + public MembershipDAO(IConnectionDAO connection) + : base(connection) + { } + + public bool ValidateUser(string name, string password) + { + string name2 = string.Empty; + if (name.Contains(":")) + { + name2 = name.Substring(name.IndexOf(":") + 1); + name = name.Substring(0, name.IndexOf(":")); + if (!IsUserInRole(name, "Security/CreateUser")) + return false; + SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM Users WHERE LockedOut = 0 AND (Name = @Name AND Password = @Password) OR Name = @Name2"); + cmd.Parameters.AddWithValue("@Name", name); + cmd.Parameters.AddWithValue("@Name2", name2); + cmd.Parameters.AddWithValue("@Password", password); + return (int)connection.ExecuteScalar(cmd) == 2; + + } + else + { + SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM Users WHERE LockedOut = 0 AND Name = @Name AND Password = @Password"); + cmd.Parameters.AddWithValue("@Name", name); + cmd.Parameters.AddWithValue("@Password", password); + return (int)connection.ExecuteScalar(cmd) == 1; + } + } + + public bool IsUserInRole(string username, string roleName) + { + SqlCommand cmd = new SqlCommand("SELECT Count(*) FROM UserRoles ur INNER JOIN Users u ON u.UserID = ur.UserID WHERE u.Name = @UserName AND ur.Role = @Role"); + cmd.Parameters.AddWithValue("@UserName", username); + cmd.Parameters.AddWithValue("@Role", roleName); + + return (int)connection.ExecuteScalar(cmd) >= 0 ? true : false; + } + + public bool IsUserInRole(Guid userID, string roleName) + { + SqlCommand cmd = new SqlCommand("SELECT Count(*) FROM UserRoles ur WHERE ur.UserID = @UserID AND ur.Role = @Role"); + cmd.Parameters.AddWithValue("@UserID", userID); + cmd.Parameters.AddWithValue("@Role", roleName); + + return (int)connection.ExecuteScalar(cmd) >= 1 ? true : false; + } + + public string[] GetRolesForUser(string username) + { + List roles = new List(); + using (SqlCommand cmd = new SqlCommand("SELECT ur.Role FROM UserRoles ur INNER JOIN Users u ON ur.UserID = u.UserID WHERE u.Name = @Name")) + { + cmd.Parameters.AddWithValue("@Name", username); + using (IDataReader dr = connection.ExecuteReader(cmd)) + { + while (dr.Read()) + roles.Add(dr.GetString(0)); + } + } + + string[] outRoles = new string[roles.Count]; + for (int i = 0; i < roles.Count; i++) + { + outRoles[i] = roles[i]; + } + return outRoles; + } + + public UserBO GetUserFromName(string name) + { + SqlCommand cmd = new SqlCommand("SELECT * FROM Users WHERE Name = @Name"); + cmd.Parameters.AddWithValue("@Name", name); + return BusinessObjectDAO.GetBusinessObject(connection.ExecuteReader(cmd)); + } + + public string[] GetAllRoles() + { + List roles = new List(); + using (IDataReader dr = connection.ExecuteReader("SELECT Role FROM Roles")) + { + while (dr.Read()) + { + roles.Add(dr.GetString(0)); + } + } + string[] outRoles = new string[roles.Count]; + for (int i = 0; i < roles.Count; i++) + { + outRoles[i] = roles[i]; + } + return outRoles; + } + + public void AddUsersToRoles(string[] usernames, string[] roleNames) + { + foreach (string user in usernames) + { + UserBO currentUser = GetUserFromName(user); + foreach (string role in roleNames) + { + using (SqlCommand cmd = new SqlCommand("INSERT INTO UserRoles (UserRoleID, UserID, Role) VALUES (NEWID(), @UserID, @Role)")) + { + cmd.Parameters.AddWithValue("@UserID", currentUser.UserID); + cmd.Parameters.AddWithValue("@Role", role); + connection.ExecuteNonQuery(cmd); + } + } + } + } + + public void RemoveUsersFromRoles(string[] usernames, string[] roleNames) + { + string query = "DELETE FROM UserRoles WHERE UserID IN ("; + + foreach (string user in usernames) + { + UserBO cUser = GetUserFromName(user); + query += string.Format("'{0}', ", cUser.UserID); + } + query = query.Substring(0, query.Length - 2) + ") AND Role IN ("; + foreach (string role in roleNames) + { + query += string.Format("'{0}', ", role); + } + query = query.Substring(0, query.Length - 2) + ")"; + connection.ExecuteNonQuery(query); + } + + public bool RoleExists(string roleID) + { + using (SqlCommand cmd = new SqlCommand("IF EXISTS(SELECT * FROM Roles WHERE Role = @RoleID) SELECT CAST(1 AS bit) ELSE SELECT CAST(0 AS bit)")) + { + cmd.Parameters.AddWithValue("@RoleID", roleID); + return (bool)connection.ExecuteScalar(cmd); + } + } + } +} diff --git a/Tanshu.Accounts.SqlDAO/PaymentDAO.cs b/Tanshu.Accounts.SqlDAO/PaymentDAO.cs new file mode 100644 index 0000000..f80107d --- /dev/null +++ b/Tanshu.Accounts.SqlDAO/PaymentDAO.cs @@ -0,0 +1,57 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Data.SqlClient; +using Tanshu.Accounts.Contracts; +using Tanshu.Data.DAO; +using Tanshu.Accounts.DAOFactory; + +namespace Tanshu.Accounts.SqlDAO +{ + public class PaymentDAO : BaseDAO, IPaymentDAO + { + public PaymentDAO(IConnectionDAO connection) + : base(connection) + { } + + public void Insert(PaymentBO payment) + { + using (SqlCommand cmd = new SqlCommand(@" +SET @PaymentID = NEWID(); +INSERT INTO Payments (PaymentID, Date, Type, CashierID, Amount, Narration) +VALUES (@PaymentID, @Date, @Type, @CashierID, @Amount, @Narration) +")) + { + cmd.Parameters.Add("@PaymentID", System.Data.SqlDbType.UniqueIdentifier); + cmd.Parameters["@PaymentID"].Direction = System.Data.ParameterDirection.Output; + cmd.Parameters.AddWithValue("@Date", payment.Date); + cmd.Parameters.AddWithValue("@Type", payment.Type); + cmd.Parameters.AddWithValue("@CashierID", payment.CashierID); + cmd.Parameters.AddWithValue("@Amount", payment.Amount); + cmd.Parameters.AddWithValue("@Narration", payment.Narration); + connection.ExecuteNonQuery(cmd); + payment.PaymentID = (Guid)cmd.Parameters["@PaymentID"].Value; + } + } + public List GetPayments(Guid? userID, DateTime fromDate, DateTime toDate) + { + string query = "SELECT p.*, u.Name AS Cashier FROM Payments p INNER JOIN Users u ON p.CashierID = u.UserID WHERE Date BETWEEN @StartDate AND @FinishDate"; + if (userID.HasValue) + query += " AND CashierID = @CashierID"; + SqlCommand cmd = new SqlCommand(query); + cmd.Parameters.AddWithValue("@StartDate", fromDate); + cmd.Parameters.AddWithValue("@FinishDate", toDate); + if (userID.HasValue) + cmd.Parameters.AddWithValue("@CashierID", userID.Value); + return BusinessObjectDAO.GetBusinessObjects(connection.ExecuteReader(cmd)); + } + public void Delete(Guid paymentID) + { + using (SqlCommand cmd = new SqlCommand("DELETE FROM Payments WHERE PaymentID = @PaymentID")) + { + cmd.Parameters.AddWithValue("@PaymentID", paymentID); + connection.ExecuteNonQuery(cmd); + } + } + } +} diff --git a/Tanshu.Accounts.SqlDAO/ProductDAO.cs b/Tanshu.Accounts.SqlDAO/ProductDAO.cs new file mode 100644 index 0000000..bde8e2e --- /dev/null +++ b/Tanshu.Accounts.SqlDAO/ProductDAO.cs @@ -0,0 +1,220 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Data.SqlClient; +using Tanshu.Accounts.Contracts; +using Tanshu.Data.DAO; +using System.Data; +using Tanshu.Accounts.DAOFactory; + + +namespace Tanshu.Accounts.SqlDAO +{ + public class ProductDAO : BaseDAO, IProductDAO + { + public ProductDAO(IConnectionDAO connection) + : base(connection) + { } + + public bool Insert(ProductBO product) + { + product.ProductID = Guid.NewGuid(); + SqlCommand cmd = new SqlCommand(@" +SELECT @Code = ISNULL(MAX(Code), 0) + 1 FROM Products; +INSERT INTO Products (ProductID, Code, Name, Units, ProductTypeID, SaleLedgerID, SaleTaxID ,SalePrice , PurchaseLedgerID ,PurchaseTaxID , PurchasePrice, Discontinued, MinimumLevel, MaximumLevel, SortOrder) VALUES (@ProductID, @Code, @Name, @Units, @ProductTypeID, @SaleLedgerID, @SaleTaxID, @SalePrice ,@PurchaseLedgerID ,@PurchaseTaxID , @PurchasePrice, @Discontinued, @MinimumLevel, @MaximumLevel, @SortOrder); +SELECT @timestamp = timestamp FROM Products WHERE ProductID = @ProductID;"); + { + cmd.Parameters.AddWithValue("@ProductID", product.ProductID); + cmd.Parameters.Add("@Code", System.Data.SqlDbType.Int); + cmd.Parameters["@Code"].Direction = System.Data.ParameterDirection.Output; + cmd.Parameters.AddWithValue("@Code", product.Code); + cmd.Parameters.AddWithValue("@Name", product.Name); + cmd.Parameters.AddWithValue("@Units", product.Units); + cmd.Parameters.AddWithValue("@ProductTypeID", product.ProductTypeID); + cmd.Parameters.AddWithValue("@SaleLedgerID", product.SaleLedgerID); + cmd.Parameters.AddWithValue("@SaleTaxID", product.SaleTaxID); + cmd.Parameters.AddWithValue("@SalePrice", product.SalePrice); + cmd.Parameters.AddWithValue("@PurchaseLedgerID", product.PurchaseLedgerID); + cmd.Parameters.AddWithValue("@PurchaseTaxID", product.PurchaseTaxID); + cmd.Parameters.AddWithValue("@PurchasePrice", product.PurchasePrice); + cmd.Parameters.AddWithValue("@Discontinued", product.Discontinued); + cmd.Parameters.AddWithValue("@MinimumLevel", product.MinimumLevel); + cmd.Parameters.AddWithValue("@MaximumLevel", product.MaximumLevel); + cmd.Parameters.Add("@timestamp", System.Data.SqlDbType.Timestamp); + cmd.Parameters.AddWithValue("@SortOrder", product.SortOrder); + cmd.Parameters["@timestamp"].Direction = System.Data.ParameterDirection.Output; + connection.ExecuteNonQuery(cmd); + product.timestamp = (byte[])cmd.Parameters["@timestamp"].Value; + product.Code = (int)cmd.Parameters["@Code"].Value; + return true; + } + } + public ProductBO GetProduct(Guid productID) + { + SqlCommand cmd = new SqlCommand("SELECT * FROM Products WHERE ProductID = @ProductID"); + cmd.Parameters.AddWithValue("@ProductID", productID); + return BusinessObjectDAO.GetBusinessObject(connection.ExecuteReader(cmd)); + } + public bool Delete(Guid productID) + { + SqlCommand cmd = new SqlCommand("DELETE FROM Products WHERE ProductID = @ProductID"); + cmd.Parameters.AddWithValue("@ProductID", productID); + connection.ExecuteNonQuery(cmd); + return true; + } + public bool Update(ProductBO product) + { + SqlCommand cmd = new SqlCommand(@"UPDATE Products SET Code = @Code ,Name = @Name ,Units = @Units ,ProductTypeID = @ProductTypeID ,SaleLedgerID = @SaleLedgerID ,SaleTaxID = @SaleTaxID ,SalePrice = @SalePrice ,PurchaseLedgerID = @PurchaseLedgerID ,PurchaseTaxID = @PurchaseTaxID ,PurchasePrice = @PurchasePrice ,Discontinued = @Discontinued ,MinimumLevel = @MinimumLevel ,MaximumLevel = @MaximumLevel, SortOrder=@SortOrder WHERE ProductID = @ProductID SELECT @timestamp = timestamp FROM Products WHERE ProductID = @ProductID;"); + cmd.Parameters.AddWithValue("@ProductID", product.ProductID); + cmd.Parameters.AddWithValue("@Code", product.Code); + cmd.Parameters.AddWithValue("@Name", product.Name); + cmd.Parameters.AddWithValue("@Units", product.Units); + cmd.Parameters.AddWithValue("@ProductTypeID", product.ProductTypeID); + cmd.Parameters.AddWithValue("@SaleLedgerID", product.SaleLedgerID); + cmd.Parameters.AddWithValue("@SaleTaxID", product.SaleTaxID); + cmd.Parameters.AddWithValue("@SalePrice", product.SalePrice); + cmd.Parameters.AddWithValue("@PurchaseLedgerID", product.PurchaseLedgerID); + cmd.Parameters.AddWithValue("@PurchaseTaxID", product.PurchaseTaxID); + cmd.Parameters.AddWithValue("@PurchasePrice", product.PurchasePrice); + cmd.Parameters.AddWithValue("@Discontinued", product.Discontinued); + cmd.Parameters.AddWithValue("@MinimumLevel", product.MinimumLevel); + cmd.Parameters.AddWithValue("@MaximumLevel", product.MaximumLevel); + cmd.Parameters.Add("@timestamp", System.Data.SqlDbType.Timestamp); + cmd.Parameters.AddWithValue("@SortOrder", product.SortOrder); + cmd.Parameters["@timestamp"].Direction = System.Data.ParameterDirection.Output; + connection.ExecuteNonQuery(cmd); + product.timestamp = (byte[])cmd.Parameters["@timestamp"].Value; + return true; + } + public ProductBO GetProduct(string nameAndUnits) + { + SqlCommand cmd = new SqlCommand("SELECT * FROM Products WHERE Name + ' (' + Units + ')' = @Name"); + cmd.Parameters.AddWithValue("@Name", nameAndUnits); + return BusinessObjectDAO.GetBusinessObject(connection.ExecuteReader(cmd)); + } + public decimal GetProductStock(DateTime date, Guid productID, Guid? voucherID) + { + // Add this to get product rate as well + // , CASE WHEN SUM(CASE WHEN t.Type IN ('P', 'Z') THEN i.Quantity ELSE 0 END) = 0 THEN (SELECT PurchasePrice FROM Products p WHERE p.ProductID = i.ProductID) ELSE SUM(CASE WHEN t.Type IN ('P', 'Z') THEN i.Quantity * i.Rate ELSE 0 END) / SUM(CASE WHEN t.Type IN ('P', 'Z') THEN i.Quantity ELSE 0 END) END AS Rate + string query; + if (voucherID.HasValue) + query = @" +SELECT SUM(i.Quantity * j.Debit) AS Quantity +FROM Vouchers t INNER JOIN Inventory i ON t.VoucherID = i.VoucherID INNER JOIN Journal j ON t.VoucherID = j.VoucherID INNER JOIN Products p ON p.ProductID = i.ProductID +WHERE j.CostCenterID = '955F847B-EFDF-4AFA-897C-F0BAF15284A3' AND i.ProductID = @ProductID AND t.Date < @Date +AND t.VoucherID <> @VoucherID +GROUP BY i.ProductID"; + else + query = @" +SELECT SUM(i.Quantity * j.Debit) AS Quantity +FROM Vouchers t INNER JOIN Inventory i ON t.VoucherID = i.VoucherID INNER JOIN Journal j ON t.VoucherID = j.VoucherID INNER JOIN Products p ON p.ProductID = i.ProductID +WHERE j.CostCenterID = '955F847B-EFDF-4AFA-897C-F0BAF15284A3' AND i.ProductID = @ProductID AND t.Date < @Date +GROUP BY i.ProductID"; + SqlCommand cmd = new SqlCommand(query); + cmd.Parameters.AddWithValue("@Date", date); + cmd.Parameters.AddWithValue("@ProductID", productID); + if (voucherID.HasValue) + cmd.Parameters.AddWithValue("@VoucherID", voucherID.Value); + return (decimal)connection.ExecuteScalar(cmd); + } + + public List GetProducts() + { + //SELECT p.ProductID, p.Picture, p.Code, p.Name, p.Units, p.ProductTypeID, p.SaleLedgerID, p.SaleTaxID, p.SalePrice, p.PurchaseLedgerID, p.PurchaseTaxID, p.PurchasePrice, p.Discontinued, p.MinimumLevel, p.MaximumLevel, p.timestamp, p.SortOrder, pt.Name AS Type FROM Products p INNER JOIN ProductTypes pt ON p.ProductTypeID = pt.ProductTypeID ORDER BY p.Name + SqlCommand cmd = new SqlCommand("SELECT p.ProductID, p.Picture, p.Code, p.Name, p.Units, p.ProductTypeID, p.SaleLedgerID, p.SaleTaxID, p.SalePrice, p.PurchaseLedgerID, p.PurchaseTaxID, p.PurchasePrice, p.Discontinued, p.MinimumLevel, p.MaximumLevel, p.SortOrder, pt.Name AS Type FROM Products p INNER JOIN ProductTypes pt ON p.ProductTypeID = pt.ProductTypeID ORDER BY p.Name"); + return BusinessObjectDAO.GetBusinessObjects(connection.ExecuteReader(cmd)); + } + + public List GetFilteredProducts(Dictionary filter) + { + List list = new List(); + string query = GetProductQuery(filter); + using (IDataReader dr = connection.ExecuteReader(query)) + { + while (dr.Read()) + { + list.Add(new ProductDisplaySmallBO + { + Category = dr.GetString(4), + Code = dr.GetInt32(1), + Name = dr.GetString(2), + Price = dr.GetDecimal(3), + ProductID = dr.GetGuid(0) + + }); + } + dr.Close(); + } + return list; + } + private string GetProductQuery(Dictionary filter) + { + string query = @" +SELECT p.ProductID, p.Code, p.Name + ' (' + p.Units + ') ' + ShortName AS Name, +p.SalePrice * (1 + t.Rate) AS Price, +pt.Name AS Category +FROM Products p INNER JOIN Tax t ON p.SaleTaxID = t.TaxID +INNER JOIN ProductTypes pt ON p.ProductTypeID = pt.ProductTypeID +WHERE pt.IsForSale = 1 AND p.SalePrice > 0 AND p.Discontinued = 0 +"; + string[] n = filter["Name"].Split(" ".ToCharArray()); + + foreach (string n1 in n) + if (n1 != null && n1 != string.Empty) + query += string.Format("AND p.Name + ' (' + p.Units + ') ' + ShortName LIKE '%{0}%' \r\n", n1); + + n = filter["Type"].ToLower().Split(" ".ToCharArray()); + foreach (string n1 in n) + if (n1 != null && n1 != string.Empty) + query += string.Format("AND pt.Name LIKE '%{0}%' \r\n", n1); + + query += "ORDER BY p.SortOrder DESC;"; + return query; + } + public void UpdateShortName() + { + List list = BusinessObjectDAO.GetBusinessObjects(connection.ExecuteReader("SELECT * FROM Products")); + foreach (var item in list) + { + using (SqlCommand cmd = new SqlCommand("UPDATE Products SET ShortName = @ShortName WHERE ProductID = @ProductID AND ShortName <> @ShortName")) + { + cmd.Parameters.AddWithValue("@ShortName", GetShortName(item.Name)); + cmd.Parameters.AddWithValue("@ProductID", item.ProductID); + connection.ExecuteScalar(cmd); + } + } + } + private string GetShortName(string name) + { + string[] t1 = name.Split(" ".ToCharArray()); + if (t1.Length == 0) + return ""; + name = ""; + foreach (string t in t1) + { + if ((!t.StartsWith("(")) && (t != "")) + name += t.Substring(0, 1); + } + return name; + } + + public List GetProductTypes() + { + SqlCommand cmd = new SqlCommand("SELECT * FROM ProductTypes ORDER BY Name"); + return BusinessObjectDAO.GetBusinessObjects(connection.ExecuteReader(cmd)); + + } + + public List GetProducts(string name, int skip, int count) + { + string query = @" +WITH ProductsRN AS +(SELECT *, ROW_NUMBER() OVER(ORDER BY Name) AS RowNum FROM Products WHERE Name LIKE '%{0}%') +SELECT TOP {1} p.*, pt.Name AS Type FROM ProductsRN p INNER JOIN ProductTypes pt ON p.ProductTypeID = pt.ProductTypeID WHERE RowNum > {2} +"; + query = string.Format(query, name, count, skip); + return BusinessObjectDAO.GetBusinessObjects(connection.ExecuteReader(query)); + + } + } +} diff --git a/Tanshu.Accounts.SqlDAO/Properties/AssemblyInfo.cs b/Tanshu.Accounts.SqlDAO/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..9914087 --- /dev/null +++ b/Tanshu.Accounts.SqlDAO/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// General Information about an assembly is controlled through the following +// set of attributes. Change these attribute values to modify the information +// associated with an assembly. +[assembly: AssemblyTitle("Tanshu.Accounts.LiteDAO")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Tanshu.Accounts.LiteDAO")] +[assembly: AssemblyCopyright("Copyright © 2009")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Setting ComVisible to false makes the types in this assembly not visible +// to COM components. If you need to access a type in this assembly from +// COM, set the ComVisible attribute to true on that type. +[assembly: ComVisible(false)] + +// The following GUID is for the ID of the typelib if this project is exposed to COM +[assembly: Guid("963961fa-6172-4cfb-8a96-723501c064a5")] + +// Version information for an assembly consists of the following four values: +// +// Major Version +// Minor Version +// Build Number +// Revision +// +// You can specify all the values or you can default the Build and Revision Numbers +// by using the '*' as shown below: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Tanshu.Accounts.SqlDAO/SaleVoucherDAO.cs b/Tanshu.Accounts.SqlDAO/SaleVoucherDAO.cs new file mode 100644 index 0000000..b3683f0 --- /dev/null +++ b/Tanshu.Accounts.SqlDAO/SaleVoucherDAO.cs @@ -0,0 +1,112 @@ +using System; +using System.Data.SqlClient; +using Tanshu.Accounts.Contracts; +using Tanshu.Data.DAO; +using Tanshu.Accounts.DAOFactory; + +namespace Tanshu.Accounts.SqlDAO +{ + public class SaleVoucherDAO : BaseDAO, ISaleVoucherDAO + { + public SaleVoucherDAO(IConnectionDAO connection) + : base(connection) + { } + + public bool Insert(SaleVoucherBO saleVoucher) + { + using (SqlCommand cmd = new SqlCommand("SaleVoucher_Insert")) + { + cmd.CommandType = System.Data.CommandType.StoredProcedure; + cmd.Parameters.AddWithValue("@VoucherID", saleVoucher.VoucherID); + cmd.Parameters.Add("@BillID", System.Data.SqlDbType.NVarChar, 10); + cmd.Parameters["@BillID"].Direction = System.Data.ParameterDirection.Output; + cmd.Parameters.AddWithValue("@TableID", saleVoucher.TableID); + cmd.Parameters.AddWithValue("@WaiterID", saleVoucher.WaiterID); + cmd.Parameters.AddWithValue("@CustomerID", saleVoucher.CustomerID); + cmd.Parameters.AddWithValue("@Paid", saleVoucher.Paid); + cmd.Parameters.AddWithValue("@Void", saleVoucher.Void); + if (saleVoucher.VoidReason == null) + saleVoucher.VoidReason = string.Empty; + cmd.Parameters.AddWithValue("@VoidReason", saleVoucher.VoidReason); + cmd.Parameters.AddWithValue("@Printed", saleVoucher.Printed); + if (saleVoucher.Alarm.HasValue) + cmd.Parameters.AddWithValue("@Alarm", saleVoucher.Alarm); + else + cmd.Parameters.AddWithValue("@Alarm", DBNull.Value); + cmd.Parameters.Add("@KotID", System.Data.SqlDbType.NVarChar, 10); + cmd.Parameters["@KotID"].Direction = System.Data.ParameterDirection.Output; + cmd.Parameters.Add("@timestamp", System.Data.SqlDbType.Timestamp); + cmd.Parameters["@timestamp"].Direction = System.Data.ParameterDirection.Output; + cmd.Parameters.AddWithValue("@CreditCard", saleVoucher.CreditCard); + cmd.Parameters.AddWithValue("@IsImportant", saleVoucher.IsImportant); + connection.ExecuteNonQuery(cmd); + saleVoucher.SaleTimestamp = (byte[])cmd.Parameters["@timestamp"].Value; + saleVoucher.BillID = (string)cmd.Parameters["@BillID"].Value; + saleVoucher.KotID = (string)cmd.Parameters["@KotID"].Value; + return true; + } + } + public bool Update(SaleVoucherBO saleVoucher) + { + using (SqlCommand cmd = new SqlCommand("SaleVoucher_Update")) + { + cmd.CommandType = System.Data.CommandType.StoredProcedure; + cmd.Parameters.AddWithValue("@VoucherID", saleVoucher.VoucherID); + + cmd.Parameters.Add("@BillID", System.Data.SqlDbType.NVarChar, 10); + cmd.Parameters["@BillID"].Direction = System.Data.ParameterDirection.Output; + + cmd.Parameters.AddWithValue("@TableID", saleVoucher.TableID); + cmd.Parameters.AddWithValue("@WaiterID", saleVoucher.WaiterID); + cmd.Parameters.AddWithValue("@CustomerID", saleVoucher.CustomerID); + cmd.Parameters.AddWithValue("@Paid", saleVoucher.Paid); + cmd.Parameters.AddWithValue("@Void", saleVoucher.Void); + if (saleVoucher.VoidReason == null) + saleVoucher.VoidReason = string.Empty; + cmd.Parameters.AddWithValue("@VoidReason", saleVoucher.VoidReason); + cmd.Parameters.AddWithValue("@Printed", saleVoucher.Printed); + if (saleVoucher.Alarm.HasValue) + cmd.Parameters.AddWithValue("@Alarm", saleVoucher.Alarm); + else + cmd.Parameters.AddWithValue("@Alarm", DBNull.Value); + cmd.Parameters.Add("@KotID", System.Data.SqlDbType.NVarChar, 10); + cmd.Parameters["@KotID"].Direction = System.Data.ParameterDirection.Output; + cmd.Parameters.Add("@timestamp", System.Data.SqlDbType.Timestamp); + cmd.Parameters["@timestamp"].Direction = System.Data.ParameterDirection.Output; + cmd.Parameters.AddWithValue("@CreditCard", saleVoucher.CreditCard); + cmd.Parameters.AddWithValue("@IsImportant", saleVoucher.IsImportant); + connection.ExecuteNonQuery(cmd); + saleVoucher.timestamp = (byte[])cmd.Parameters["@timestamp"].Value; + saleVoucher.SaleTimestamp = (byte[])cmd.Parameters["@timestamp"].Value; + saleVoucher.BillID = (string)cmd.Parameters["@BillID"].Value; + saleVoucher.KotID = (string)cmd.Parameters["@KotID"].Value; + return true; + } + } + public void SetAlarm(Guid voucherID, DateTime? alarmTime) + { + using (SqlCommand cmd = new SqlCommand(@"UPDATE SaleVoucher SET Alarm = @Alarm WHERE VoucherID = @VoucherID")) + { + cmd.Parameters.AddWithValue("@VoucherID", voucherID); + cmd.Parameters.AddWithValue("@Alarm", alarmTime); + connection.ExecuteNonQuery(cmd); + } + } + public void VoidBill(Guid voucherID, string reason) + { + using (SqlCommand cmd = new SqlCommand(@"UPDATE SaleVoucher SET Void = @Void, VoidReason = @VoidReason WHERE VoucherID = @VoucherID")) + { + cmd.Parameters.AddWithValue("@VoucherID", voucherID); + cmd.Parameters.AddWithValue("@Void", true); + cmd.Parameters.AddWithValue("@VoidReason", reason); + connection.ExecuteNonQuery(cmd); + } + } + public SaleVoucherBO GetVoucherSale(Guid voucherID) + { + SqlCommand cmd = new SqlCommand("SELECT b.*, ts.BillID, ts.TableID, ts.WaiterID ,ts.CustomerID ,ts.Paid ,ts.Void ,ts.VoidReason ,ts.Printed ,ts.Alarm ,ts.KotID ,ts.timestamp AS SaleTimestamp ,ts.CreditCard FROM SaleVoucher ts INNER JOIN Vouchers b ON ts.VoucherID = b.VoucherID WHERE ts.VoucherID = @VoucherID"); + cmd.Parameters.AddWithValue("@VoucherID", voucherID); + return BusinessObjectDAO.GetBusinessObject(connection.ExecuteReader(cmd)); + } + } +} diff --git a/Tanshu.Accounts.SqlDAO/SaleVoucherMixDAO.cs b/Tanshu.Accounts.SqlDAO/SaleVoucherMixDAO.cs new file mode 100644 index 0000000..0e79e00 --- /dev/null +++ b/Tanshu.Accounts.SqlDAO/SaleVoucherMixDAO.cs @@ -0,0 +1,351 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Tanshu.Accounts.Contracts; +using System.Data.SqlClient; +using System.Data; +//using System.Windows.Forms; +using Tanshu.Data.DAO; +using Tanshu.Accounts.DAOFactory; + + +namespace Tanshu.Accounts.SqlDAO +{ + public class SaleVoucherMixDAO : BaseDAO, ISaleVoucherMixDAO + { + public SaleVoucherMixDAO(IConnectionDAO connection) + :base (connection) + {} + public SalesBillItemBO GetDefaultSaleBillItem(Guid productID) + { + bool isComplex; + using (SqlCommand cmd = new SqlCommand("SELECT Count(*) FROM Products WHERE ProductID = @ProductID")) + { + cmd.Parameters.AddWithValue("@ProductID", productID); + if ((int)connection.ExecuteScalar(cmd) != 0) + isComplex = false; + else + isComplex = true; + } + if (!isComplex) + { + string query = @" +SELECT p.ProductID, p.Name + ' (' + p.Units +')', +p.SalePrice, p.SaleTaxID, t.Rate AS TaxRate, +p.SaleLedgerID, l.CostCenterID +FROM Products p INNER JOIN Tax t ON p.SaleTaxID = t.TaxID INNER JOIN Ledgers l ON p.SaleLedgerID = l.LedgerID +WHERE p.ProductID = @ProductID +"; + using (SqlCommand cmd = new SqlCommand(query)) + { + cmd.Parameters.AddWithValue("@ProductID", productID); + using (IDataReader dr = connection.ExecuteReader(cmd)) + { + dr.Read(); + SalesBillItemBO mySale = new SalesBillItemBO + { + productID = dr.GetGuid(0), + Name = dr.GetString(1), + Price = dr.GetDecimal(2), + Tax = dr.GetDecimal(4), + Discount = 0, + location = "", + Printed = 0, + Quantity = 1 + }; + return mySale; + } + } + } + else + { + string query = @" +SELECT c.ComplexProductID, c.Name + ' (' + c.Units +')' AS Name, +c.SalePrice, c.SaleTaxID, t.Rate AS TaxRate +FROM ComplexProducts c INNER JOIN Tax t ON c.SaleTaxID = t.TaxID +WHERE c.ComplexProductID = @ProductID +GROUP BY c.ComplexProductID, c.Name + ' (' + c.Units +')' , +c.SalePrice, c.SaleTaxID, t.Rate +"; + using (SqlCommand cmd = new SqlCommand(query)) + { + cmd.Parameters.AddWithValue("@ProductID", productID); + using (IDataReader dr = connection.ExecuteReader(cmd)) + { + dr.Read(); + SalesBillItemBO mySale = new SalesBillItemBO + { + productID = dr.GetGuid(0), + Name = dr.GetString(1), + Price = dr.GetDecimal(2), + Tax = dr.GetDecimal(4), + Discount = 0, + location = "complex", + Printed = 0, + Quantity = 1 + }; + return mySale; + } + } + } + + } + public decimal GetProductDiscountLimit(Guid productID) + { + string query = @"SELECT t.DiscountLimit FROM ProductTypes t INNER JOIN Products p +ON t.ProductTypeID = p.ProductTypeID WHERE p.ProductID = @ProductID"; + + decimal discountLimit = 0; + using (SqlCommand cmd = new SqlCommand(query)) + { + cmd.Parameters.AddWithValue("@ProductID", productID); + discountLimit = (decimal)connection.ExecuteScalar(cmd); + } + + return discountLimit; + } + public bool IsBillPrinted(Guid voucherID) + { + string query = @"SELECT Printed FROM SaleVoucher WHERE VoucherID = @VoucherID"; + bool printed = true; + using (SqlCommand cmd = new SqlCommand(query)) + { + cmd.Parameters.AddWithValue("@VoucherID", voucherID); + printed = (bool)connection.ExecuteScalar(cmd); + } + return printed; + } + + + + public List GetPendingBills(PendingType list) + { + string query = @" + SELECT t.VoucherID, s.Alarm AS Alarm, s.TableID AS TableID, + (SELECT SUM(Amount) FROM Inventory WHERE VoucherID = t.VoucherID) AS Amount, + s.BillID, t.CreationDate, u.Name, CAST(0 AS bit), s.KotID, t.LastEditDate, s.Printed + FROM Vouchers t INNER JOIN SaleVoucher s ON t.VoucherID = s.VoucherID AND s.Paid = 0 AND s.Void = 0 + INNER JOIN Users u ON t.UserID = u.UserID + "; + if (list == PendingType.Alarms) + query += "WHERE s.Alarm IS NOT NULL "; + else + query += "WHERE s.Alarm IS NULL "; + if (list == PendingType.Important) + query += "AND s.IsImportant = 1 "; + else + query += "AND s.IsImportant = 0 "; + if (list == PendingType.Today) + query += string.Format("AND t.LastEditDate >= '{0:dd-MMM-yyyy} 00:00:00' ", DateTime.Now); + else if (list == PendingType.Week) + query += string.Format("AND t.LastEditDate >= '{0:dd-MMM-yyyy} 00:00:00' ", DateTime.Now.AddDays(-7)); + query += "ORDER BY t.CreationDate "; + using (IDataReader dr = connection.ExecuteReader(query)) + { + List outList = new List(); + while (dr.Read()) + { + PendingBillsBO local = new PendingBillsBO(); + local.voucherID = dr.GetGuid(0); + local.Alarm = !dr.IsDBNull(1); + if (local.Alarm) + local.AlarmTime = dr.GetDateTime(1); + local.TableID = dr.GetString(2); + if (!dr.IsDBNull(3)) + local.Amount = dr.GetDecimal(3); + local.BillNo = dr.GetString(4); + local.BookingTime = dr.GetDateTime(5); + local.Cashier = dr.GetString(6); + local.Important = dr.GetBoolean(7); + local.Kot = dr.GetString(8); + local.LastEdited = dr.GetDateTime(9); + local.Printed = dr.GetBoolean(10); + outList.Add(local); + } + return outList; + } + + } + public Nullable GetPendingVoucherID(string tableID) + { + + string query = "SELECT VoucherID FROM SaleVoucher where TableID = @TableID and Paid = 0 and Void = 0"; + Guid? voucherID; + using (SqlCommand cmd = new SqlCommand(query)) + { + cmd.Parameters.AddWithValue("@TableID", tableID); + using (IDataReader dr = connection.ExecuteReader(cmd)) + { + if (dr.Read()) + { + voucherID = dr.GetGuid(0); + dr.Close(); + dr.Dispose(); + return voucherID; + } + return null; + } + } + } + public List SaleInventory(Dictionary.ValueCollection list, Guid? voucherID) + { + Dictionary localList = new Dictionary(); + foreach (SalesBillItemBO item in list) + { + InventoryBO temp = new InventoryBO(); + #region Complex + //if (item.location == "complex") + //{ + // decimal balance; + // string query = "SELECT SUM(Quantity * p.SalePrice) FROM ComplexProducts c INNER JOIN Products p ON c.ProductID = p.ProductID WHERE ComplexProductID = @ComplexProductID"; + // using (SqlCommand cmd = new SqlCommand(query)) + // { + // cmd.Parameters.AddWithValue("@ComplexProductID", item.productID); + // balance = (decimal)connection.ExecuteScalar(cmd); + // balance = (item.Price - balance) / balance; + // } + // query = "SELECT c.ProductID, c.Quantity, p.SalePrice FROM ComplexProducts c INNER JOIN Products p ON c.ProductID = p.ProductID WHERE ComplexProductID = @ComplexProductID"; + // using (SqlCommand cmd = new SqlCommand(query)) + // { + // cmd.Parameters.AddWithValue("@ComplexProductID", item.productID); + // SqlDataReader dr = connection.ExecuteReader(cmd); + // while (dr.Read()) + // { + // InventoryBO temp = new InventoryBO(); + // if (voucherID.HasValue) + // temp.VoucherID = voucherID.Value; + // temp.InventoryID = Guid.NewGuid(); + // temp.Discount = item.Discount; + // temp.IsRateFinal = true; + // temp.ComplexProductID = item.productID; + // temp.ProductID = dr.GetGuid(0); + // temp.Quantity = item.Quantity * dr.GetDecimal(1); + // temp.Rate = dr.GetDecimal(2) * (1 + balance); + // temp.Tax = item.Tax; + // localList.Add(temp); + // } + // dr.Close(); + // dr.Dispose(); + // } + + //} + //else + //{ + // Add the lower loop here + //} + #endregion + if (localList.ContainsKey(item.productID)) + { + temp = localList[item.productID]; + temp.Quantity += item.Quantity; + } + else + { + if (voucherID.HasValue) + temp.VoucherID = voucherID.Value; + temp.InventoryID = Guid.NewGuid(); + temp.Discount = item.Discount; + temp.IsRateFinal = true; + temp.ComplexProductID = null; + temp.ProductID = item.productID; + temp.Quantity = item.Quantity; + temp.Rate = item.Price; + temp.Tax = item.Tax; + localList.Add(item.productID, temp); + } + } + List outList = new List(); + foreach (var item in localList) + outList.Add(item.Value); + return outList; + } + public void GetComplexBillInformation(Guid voucherID, Guid complexProductID, ref decimal rate, ref decimal quantity, ref string name) + { + + string query = @" +SELECT TOP 1 i.Quantity / c.Quantity FROM Inventory i INNER JOIN ComplexProducts c ON i.ComplexProductID = c.ComplexProductID AND i.ProductID = c.ProductID +WHERE i.VoucherID = @VoucherID +AND c.ComplexProductID = @ComplexProductID +"; + using (SqlCommand cmd = new SqlCommand(query)) + { + cmd.Parameters.AddWithValue("@VoucherID", voucherID); + cmd.Parameters.AddWithValue("@ComplexProductID", complexProductID); + quantity = (decimal)connection.ExecuteScalar(cmd); + } + using (SqlCommand cmd = new SqlCommand("SELECT TOP 1 SalePrice, Name FROM ComplexProducts WHERE ComplexProductID = @ComplexProductID")) + { + cmd.Parameters.AddWithValue("@VoucherID", voucherID); + cmd.Parameters.AddWithValue("@ComplexProductID", complexProductID); + using (IDataReader dr = connection.ExecuteReader(cmd)) + { + dr.Read(); + rate = dr.GetDecimal(0); + name = dr.GetString(1); + } + } + + } + + private class BillPaidClass + { + public Guid VoucherID { get; set; } + public string KotID { get; set; } + public bool Printed { get; set; } + } + public void DeclareBillsPaid(Guid userID, List billList, bool creditCard) + { + List removeItems = new List(); + string query = "SELECT VoucherID, KotID, Printed FROM SaleVoucher WHERE VoucherID IN ("; + foreach (Guid voucherID in billList) + { + query += string.Format("'{0}', ", voucherID); + } + query = query.Substring(0, query.Length - 2) + ")"; + + List pbc = new List(); + using (SqlCommand cmd = new SqlCommand(query)) + { + using (IDataReader dr = connection.ExecuteReader(cmd)) + { + while (dr.Read()) + { + pbc.Add(new BillPaidClass + { + VoucherID = dr.GetGuid(0), + KotID = dr.GetString(1), + Printed = dr.GetBoolean(2) + }); + } + } + } + foreach (BillPaidClass item in pbc) + { + //if ((item.Printed != false) || (MessageBox.Show("Pay unprinted bill No.: " + item.KotID + " ?", "Pay unprinted bill", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) == DialogResult.Yes)) + if (item.Printed != false) + { + using (SqlCommand cmd = new SqlCommand("UPDATE SaleVoucher SET Paid = 1, CreditCard = @CreditCard WHERE VoucherID = @VoucherID; UPDATE Vouchers SET UserID = @UserID, LastEditDate = GETDATE() WHERE VoucherID = @VoucherID")) + { + cmd.Parameters.AddWithValue("@VoucherID", item.VoucherID); + cmd.Parameters.AddWithValue("@UserID", userID); + cmd.Parameters.AddWithValue("@CreditCard", creditCard); + connection.ExecuteNonQuery(cmd); + } + removeItems.Add(item.VoucherID); + } + } + + foreach (Guid item in removeItems) + billList.Remove(item); + } + + public void ToggleImportant(Guid voucherID) + { + using (SqlCommand cmd = new SqlCommand("UPDATE SaleVoucher SET IsImportant= CASE WHEN IsImportant = 0 THEN 1 ELSE 0 END FROM SaleVoucher WHERE VoucherID = @VoucherID")) + { + cmd.Parameters.AddWithValue("@VoucherID", voucherID); + connection.ExecuteNonQuery(cmd); + } + } + } +} diff --git a/Tanshu.Accounts.SqlDAO/SalesAnalysisDAO.cs b/Tanshu.Accounts.SqlDAO/SalesAnalysisDAO.cs new file mode 100644 index 0000000..be14259 --- /dev/null +++ b/Tanshu.Accounts.SqlDAO/SalesAnalysisDAO.cs @@ -0,0 +1,239 @@ +using System.Collections.Generic; +using System.Data.SqlClient; +using Tanshu.Accounts.Contracts; +using System; +using Tanshu.Data.DAO; +using Tanshu.Accounts.DAOFactory; + +namespace Tanshu.Accounts.SqlDAO +{ + public class SalesAnalysisDAO : BaseDAO, ISalesAnalysisDAO + { + public SalesAnalysisDAO(IConnectionDAO connection) + : base(connection) + { } + + public List GetSalesTaxReturn(DateTime startDate, DateTime finishDate, ref decimal freeSale, ref decimal voids, ref decimal pending, ref decimal net, ref decimal tax) + { + List list = new List(); + using (SqlCommand cmd = new SqlCommand()) + { + string query = @" +SELECT NEWID(), +CAST(i.Tax AS nvarchar(10)) AS Section, +SUM(i.Quantity * i.Rate * (1 - i.Discount) * (i.Tax)) AS Quantity, +SUM(i.Quantity * i.Rate * (1 - i.Discount)) AS Net, +SUM(i.Amount) AS Gross +FROM Vouchers t INNER JOIN SaleVoucher s ON t.VoucherID = s.VoucherID +INNER JOIN Inventory i ON t.VoucherID = i.VoucherID +WHERE t.Type = 'S' AND s.Paid = 1 AND s.Void = 0 +AND t.Date BETWEEN @StartDate AND @FinishDate +GROUP BY i.Tax +ORDER BY Section DESC;"; + cmd.CommandText = query; + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@FinishDate", finishDate); + list = BusinessObjectDAO.GetBusinessObjects(connection.ExecuteReader(cmd)); + } + + + using (SqlCommand cmd = new SqlCommand()) + { + string query = @" +SELECT ISNULL(SUM(Quantity * Rate), 0) AS Amount +FROM Vouchers t INNER JOIN SaleVoucher s ON t.VoucherID = s.VoucherID +INNER JOIN Inventory i ON t.VoucherID = i.VoucherID +WHERE t.Type = 's' AND s.Paid = 1 AND s.Void = 0 +AND t.Date BETWEEN @StartDate AND @FinishDate +AND i.Amount = 0"; + cmd.CommandText = query; + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@FinishDate", finishDate); + freeSale = Math.Round((decimal)connection.ExecuteScalar(cmd)); + } + using (SqlCommand cmd = new SqlCommand()) + { + string query = @" +SELECT ISNULL(SUM(Amount), 0) AS Amount +FROM Vouchers t INNER JOIN SaleVoucher s ON t.VoucherID = s.VoucherID +INNER JOIN Inventory i ON t.VoucherID = i.VoucherID +WHERE t.Type = 's' +AND t.Date BETWEEN @StartDate AND @FinishDate +AND s.Void = 1"; + cmd.CommandText = query; + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@FinishDate", finishDate); + voids = Math.Round((decimal)connection.ExecuteScalar(cmd)); + } + using (SqlCommand cmd = new SqlCommand()) + { + string query = @" +SELECT ISNULL(SUM(Amount), 0) AS Amount +FROM Vouchers t INNER JOIN SaleVoucher s ON t.VoucherID = s.VoucherID +INNER JOIN Inventory i ON t.VoucherID = i.VoucherID +WHERE t.Type = 's' AND s.Paid = 0 AND s.Void = 0 +AND t.Date BETWEEN @StartDate AND @FinishDate"; + cmd.CommandText = query; + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@FinishDate", finishDate); + pending = Math.Round((decimal)connection.ExecuteScalar(cmd)); + } + using (SqlCommand cmd = new SqlCommand()) + { + string query = @" +SELECT ISNULL(SUM(Quantity * Rate * (1 - Discount )), 0) AS Amount +FROM Vouchers t INNER JOIN SaleVoucher s ON t.VoucherID = s.VoucherID +INNER JOIN Inventory i ON t.VoucherID = i.VoucherID +WHERE t.Type = 's' AND s.Paid = 1 AND s.Void = 0 +AND t.Date BETWEEN @StartDate AND @FinishDate"; + cmd.CommandText = query; + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@FinishDate", finishDate); + net = Math.Round((decimal)connection.ExecuteScalar(cmd)); + } + using (SqlCommand cmd = new SqlCommand()) + { + string query = @" +SELECT ISNULL(SUM(Amount), 0) AS Amount +FROM Vouchers t INNER JOIN SaleVoucher s ON t.VoucherID = s.VoucherID +INNER JOIN Inventory i ON t.VoucherID = i.VoucherID +WHERE t.Type = 's' AND s.Paid = 1 AND s.Void = 0 +AND t.Date BETWEEN @StartDate AND @FinishDate"; + cmd.CommandText = query; + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@FinishDate", finishDate); + tax = Math.Round((decimal)connection.ExecuteScalar(cmd)); + } + return list; + } + public void GetAdditionalInfo(ref decimal freeSale, ref decimal voids, ref decimal pending, ref decimal net, ref decimal tax, DateTime startDate, DateTime finishDate) + { + using (SqlCommand cmd = new SqlCommand()) + { + string query = @" +SELECT ISNULL(SUM(Quantity * Rate), 0) AS Amount +FROM Vouchers t INNER JOIN SaleVoucher s ON t.VoucherID = s.VoucherID +INNER JOIN Inventory i ON t.VoucherID = i.VoucherID +WHERE t.Type = 's' AND s.Paid = 1 AND s.Void = 0 +AND t.LastEditDate BETWEEN @StartDate AND @FinishDate +AND i.Amount = 0"; + cmd.CommandText = query; + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@FinishDate", finishDate); + freeSale = Math.Round((decimal)connection.ExecuteScalar(cmd)); + } + using (SqlCommand cmd = new SqlCommand()) + { + string query = @" +SELECT ISNULL(SUM(Amount), 0) AS Amount +FROM Vouchers t INNER JOIN SaleVoucher s ON t.VoucherID = s.VoucherID +INNER JOIN Inventory i ON t.VoucherID = i.VoucherID +WHERE t.Type = 's' +AND t.LastEditDate BETWEEN @StartDate AND @FinishDate +AND s.Void = 1"; + cmd.CommandText = query; + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@FinishDate", finishDate); + voids = Math.Round((decimal)connection.ExecuteScalar(cmd)); + } + using (SqlCommand cmd = new SqlCommand()) + { + string query = @" +SELECT ISNULL(SUM(Amount), 0) AS Amount +FROM Vouchers t INNER JOIN SaleVoucher s ON t.VoucherID = s.VoucherID +INNER JOIN Inventory i ON t.VoucherID = i.VoucherID +WHERE t.Type = 's' AND s.Paid = 0 AND s.Void = 0 +AND t.LastEditDate BETWEEN @StartDate AND @FinishDate +ORDER BY Amount DESC;"; + cmd.CommandText = query; + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@FinishDate", finishDate); + pending = Math.Round((decimal)connection.ExecuteScalar(cmd)); + } + using (SqlCommand cmd = new SqlCommand()) + { + string query = @" +SELECT ISNULL(SUM(Quantity * Rate * (1 - Discount )), 0) AS Amount +FROM Vouchers t INNER JOIN SaleVoucher s ON t.VoucherID = s.VoucherID +INNER JOIN Inventory i ON t.VoucherID = i.VoucherID +WHERE t.Type = 's' AND s.Paid = 1 AND s.Void = 0 +AND t.LastEditDate BETWEEN @StartDate AND @FinishDate"; + cmd.CommandText = query; + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@FinishDate", finishDate); + net = Math.Round((decimal)connection.ExecuteScalar(cmd)); + } + using (SqlCommand cmd = new SqlCommand()) + { + string query = @" +SELECT ISNULL(SUM(Amount), 0) AS Amount +FROM Vouchers t INNER JOIN SaleVoucher s ON t.VoucherID = s.VoucherID +INNER JOIN Inventory i ON t.VoucherID = i.VoucherID +WHERE t.Type = 's' AND s.Paid = 1 AND s.Void = 0 +AND t.LastEditDate BETWEEN @StartDate AND @FinishDate"; + cmd.CommandText = query; + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@FinishDate", finishDate); + tax = Math.Round((decimal)connection.ExecuteScalar(cmd)); + } + } + public List GetSaleDetail(DateTime startDate, DateTime finishDate, Guid costCenterID) + { + using (SqlCommand cmd = new SqlCommand()) + { + string query = @" +SELECT p.Name AS Product, pt.Name AS Section, SUM(i.Quantity) AS Quantity, SUM(Amount) AS Amount +FROM Vouchers t INNER JOIN SaleVoucher s ON t.VoucherID = s.VoucherID +INNER JOIN Inventory i ON t.VoucherID = i.VoucherID +INNER JOIN Products p ON i.ProductID = p.ProductID +INNER JOIN ProductTypes pt ON p.ProductTypeID = pt.ProductTypeID +INNER JOIN Ledgers l ON p.SaleLedgerID = l.LedgerID +WHERE t.Type = 's' AND s.Paid = 1 AND s.Void = 0 +AND t.LastEditDate BETWEEN @StartDate AND @FinishDate AND l.CostCenterID = @CostCenterID +GROUP BY p.Name, pt.Name +ORDER BY Amount DESC;"; + cmd.CommandText = query; + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@FinishDate", finishDate); + cmd.Parameters.AddWithValue("@CostCenterID", costCenterID); + return BusinessObjectDAO.GetBusinessObjects(connection.ExecuteReader(cmd)); + + } + } + public List GetSale(DateTime startDate, DateTime finishDate) + { + using (SqlCommand cmd = new SqlCommand()) + { + string query = @" +SELECT c.CostCenterID AS TypeID, c.Name AS Section, SUM(i.Quantity) AS Quantity, SUM(Amount) AS Gross, SUM(i.Quantity * i.Rate * (1 - Discount)) AS Net +FROM Vouchers t INNER JOIN SaleVoucher s ON t.VoucherID = s.VoucherID +INNER JOIN Inventory i ON t.VoucherID = i.VoucherID +INNER JOIN Products p ON i.ProductID = p.ProductID +INNER JOIN Ledgers l ON p.SaleLedgerID = l.LedgerID +INNER JOIN CostCenters c ON l.CostCenterID = c.CostCenterID +WHERE t.Type = 's' AND s.Paid = 1 AND s.Void = 0 +AND t.LastEditDate BETWEEN @StartDate AND @FinishDate +GROUP BY c.CostCenterID, c.Name +ORDER BY Net DESC;"; + cmd.CommandText = query; + cmd.Parameters.AddWithValue("@StartDate", startDate); + cmd.Parameters.AddWithValue("@FinishDate", finishDate); + List list = BusinessObjectDAO.GetBusinessObjects(connection.ExecuteReader(cmd)); + decimal gross = 0, net = 0; + foreach (SalesAnalysisBO i in list) + { + gross += i.Gross; + net += i.Net; + } + SalesAnalysisBO item = new SalesAnalysisBO + { + Gross = gross, + Net = net, + }; + item.Section = string.Format("Total: {0:#,##0.00;(#,##0.00);0}", item.Gross - item.Net); + list.Add(item); + return list; + } + } + } +} diff --git a/Tanshu.Accounts.SqlDAO/SqlConnectionDAO.cs b/Tanshu.Accounts.SqlDAO/SqlConnectionDAO.cs new file mode 100644 index 0000000..9e528c5 --- /dev/null +++ b/Tanshu.Accounts.SqlDAO/SqlConnectionDAO.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Data.SqlClient; +using System.Diagnostics; + +namespace Tanshu.Accounts.SqlDAO +{ + public class SqlConnectionDAO : Tanshu.Data.DAO.SqlConnectionDAO + { + public SqlConnectionDAO() + : base(Database.ConnectionString) + { + } + } +} diff --git a/Tanshu.Accounts.SqlDAO/Tanshu.Accounts.SqlDAO.csproj b/Tanshu.Accounts.SqlDAO/Tanshu.Accounts.SqlDAO.csproj new file mode 100644 index 0000000..a42afa7 --- /dev/null +++ b/Tanshu.Accounts.SqlDAO/Tanshu.Accounts.SqlDAO.csproj @@ -0,0 +1,95 @@ + + + + Debug + AnyCPU + 9.0.30729 + 2.0 + {B755D152-37C3-47D6-A721-3AD17A8EF316} + Library + Properties + Tanshu.Accounts.SqlDAO + Tanshu.Accounts.SqlDAO + v3.5 + 512 + + + true + full + false + ..\Bin\ + DEBUG;TRACE + prompt + 4 + + + pdbonly + true + ..\Bin\ + TRACE + prompt + 4 + + + + + + 3.5 + + + 3.5 + + + 3.5 + + + + + False + ..\Include\Tanshu.Common.dll + + + False + ..\Include\Tanshu.Data.dll + + + False + ..\Include\Tanshu.Logging.dll + + + + + + + + + + + + + + + + + + + + + + + + + + {59A6F8B8-12EE-4D8E-BEBB-61CB665A2C17} + Tanshu.Accounts.Contracts + + + + + \ No newline at end of file diff --git a/Tanshu.Accounts.SqlDAO/UserDAO.cs b/Tanshu.Accounts.SqlDAO/UserDAO.cs new file mode 100644 index 0000000..bbd1ead --- /dev/null +++ b/Tanshu.Accounts.SqlDAO/UserDAO.cs @@ -0,0 +1,122 @@ +using System; +using System.Collections.Generic; +using System.Data.SqlClient; +using Tanshu.Accounts.Contracts; +using Tanshu.Data.DAO; +using Tanshu.Accounts.DAOFactory; + +namespace Tanshu.Accounts.SqlDAO +{ + public class UserDAO : BaseDAO, IUserDAO + { + public UserDAO(IConnectionDAO connection) + : base(connection) + { } + + public UserBO GetUser(Guid userID) + { + SqlCommand cmd = new SqlCommand("SELECT * FROM Users WHERE UserID = @UserID"); + cmd.Parameters.AddWithValue("@UserID", userID); + return BusinessObjectDAO.GetBusinessObject(connection.ExecuteReader(cmd)); + } + public List GetUsers() + { + return BusinessObjectDAO.GetBusinessObjects(connection.ExecuteReader("SELECT * FROM Users")); + } + public List GetFilteredUsers(Dictionary filter) + { + string name = string.Format("%{0}%", filter["Name"]); + using (SqlCommand cmd = new SqlCommand("SELECT * FROM Users WHERE Name LIKE @Name ORDER BY Name")) + { + cmd.Parameters.AddWithValue("@Name", name); + return BusinessObjectDAO.GetBusinessObjects(connection.ExecuteReader(cmd)); + } + } + public bool UserExists(string userName) + { + using (SqlCommand cmd = new SqlCommand("SELECT Count(*) FROM Users WHERE Name = @Name")) + { + cmd.Parameters.AddWithValue("@Name", userName); + return (int)connection.ExecuteScalar(cmd) == 1; + } + } + public bool Insert(UserBO user) + { + using (SqlCommand cmd = new SqlCommand(@" +SELECT @UserID = NEWID() +INSERT INTO Users (UserID, Name, Password, LockedOut) +VALUES (@UserID, @Name, @Password, @LockedOut) +SELECT @timestamp = timestamp FROM Users WHERE UserID = @UserID +")) + { + cmd.Parameters.Add("@UserID", System.Data.SqlDbType.UniqueIdentifier); + cmd.Parameters["@UserID"].Direction = System.Data.ParameterDirection.Output; + cmd.Parameters.AddWithValue("@Name", user.Name); + cmd.Parameters.AddWithValue("@Password", user.Password); + cmd.Parameters.AddWithValue("@LockedOut", user.LockedOut); + cmd.Parameters.Add("@timestamp", System.Data.SqlDbType.Timestamp); + cmd.Parameters["@timestamp"].Direction = System.Data.ParameterDirection.Output; + connection.ExecuteNonQuery(cmd); + user.UserID = (Guid)cmd.Parameters["@UserID"].Value; + user.timestamp = (byte[])cmd.Parameters["@timestamp"].Value; + return true; + } + } + //public bool CheckPassword(string userName, string password) + //{ + // using (SqlCommand cmd = new SqlCommand("SELECT Count(*) FROM Users WHERE Name = @Name AND Password = @Password")) + // { + // cmd.Parameters.AddWithValue("@Name", userName); + // cmd.Parameters.AddWithValue("@Password", password); + // return (int)connection.ExecuteScalar(cmd) == 1; + // } + //} + public bool ChangePassword(UserBO userData, string newPassword) + { + using (SqlCommand cmd = new SqlCommand("UPDATE Users SET Password = @NewPassword WHERE Name = @Name AND Password = @Password; SELECT @@rowcount")) + { + cmd.Parameters.AddWithValue("@Name", userData.Name); + cmd.Parameters.AddWithValue("@Password", userData.Password); + cmd.Parameters.AddWithValue("@NewPassword", newPassword); + return (int)connection.ExecuteScalar(cmd) == 1; + } + } + + public bool Update(UserBO user) + { + using (SqlCommand cmd = new SqlCommand(@" +UPDATE Users SET + Name = @Name, + Password = @Password, + LockedOut = @LockedOut +WHERE UserID = @UserID; +SELECT @timestamp = timestamp FROM Users WHERE UserID = @UserID +")) + { + cmd.Parameters.AddWithValue("@UserID", user.UserID); + cmd.Parameters.AddWithValue("@Name", user.Name); + cmd.Parameters.AddWithValue("@Password", user.Password); + cmd.Parameters.AddWithValue("@LockedOut", user.LockedOut); + cmd.Parameters.Add("@timestamp", System.Data.SqlDbType.Timestamp); + cmd.Parameters["@timestamp"].Direction = System.Data.ParameterDirection.Output; + connection.ExecuteNonQuery(cmd); + user.timestamp = (byte[])cmd.Parameters["@timestamp"].Value; + return true; + } + } + + public bool Delete(Guid userID) + { + using (SqlCommand cmd = new SqlCommand("DELETE FROM Users WHERE UserID = @UserID")) + { + cmd.Parameters.AddWithValue("@UserID", userID); + connection.ExecuteNonQuery(cmd); + return true; + } + } + } +} + +//private static log4net.ILog log +//= log4net.LogManager.GetLogger( +// System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); \ No newline at end of file diff --git a/Tanshu.Accounts.SqlDAO/VoucherDAO.cs b/Tanshu.Accounts.SqlDAO/VoucherDAO.cs new file mode 100644 index 0000000..fd8ce3d --- /dev/null +++ b/Tanshu.Accounts.SqlDAO/VoucherDAO.cs @@ -0,0 +1,131 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Data.SqlClient; +using Tanshu.Accounts.Contracts; +using Tanshu.Data.DAO; +using Tanshu.Accounts.DAOFactory; + +namespace Tanshu.Accounts.SqlDAO +{ + public class VoucherDAO : BaseDAO, IVoucherDAO + { + public VoucherDAO(IConnectionDAO connection) + : base(connection) + { } + + public bool Insert(VoucherBO voucher) + { + using (SqlCommand cmd = new SqlCommand(@" + SELECT @Code = ISNULL(MAX(Code), 0) + 1 FROM Vouchers WHERE Type = @Type + + SELECT @VoucherID = NEWID(), + @CreationDate = GETDATE(), + @LastEditDate = GETDATE(), + @Date = COALESCE(@Date, GETDATE()) + + INSERT INTO [Vouchers] ([VoucherID], [Code], [Ref], [Date], [Narration], [UserID], [CreationDate], [LastEditDate], [Type]) + VALUES (@VoucherID, @Code, @Ref, @Date, @Narration, @UserID, @CreationDate, @LastEditDate, @Type) + + SELECT @timestamp = timestamp FROM [dbo].[Vouchers] WHERE VoucherID = @VoucherID +")) + { + cmd.Parameters.Add("@VoucherID", System.Data.SqlDbType.UniqueIdentifier); + cmd.Parameters["@VoucherID"].Direction = System.Data.ParameterDirection.Output; + cmd.Parameters.Add("@Code", System.Data.SqlDbType.Int); + cmd.Parameters["@Code"].Direction = System.Data.ParameterDirection.Output; + cmd.Parameters.AddWithValue("@Ref", voucher.Ref); + + cmd.Parameters.Add("@Date", System.Data.SqlDbType.DateTime); + if (voucher.Date.HasValue) + cmd.Parameters["@Date"].Value = voucher.Date.Value; + else + cmd.Parameters["@Date"].Value = DBNull.Value; + cmd.Parameters["@Date"].Direction = System.Data.ParameterDirection.InputOutput; + + cmd.Parameters.AddWithValue("@Narration", voucher.Narration); + cmd.Parameters.AddWithValue("@UserID", voucher.UserID); + cmd.Parameters.Add("@CreationDate", System.Data.SqlDbType.DateTime); + cmd.Parameters["@CreationDate"].Direction = System.Data.ParameterDirection.Output; + cmd.Parameters.Add("@LastEditDate", System.Data.SqlDbType.DateTime); + cmd.Parameters["@LastEditDate"].Direction = System.Data.ParameterDirection.Output; + cmd.Parameters.AddWithValue("@Type", voucher.Type); + cmd.Parameters.Add("@timestamp", System.Data.SqlDbType.Timestamp); + cmd.Parameters["@timestamp"].Direction = System.Data.ParameterDirection.Output; + connection.ExecuteNonQuery(cmd); + voucher.VoucherID = (Guid)cmd.Parameters["@VoucherID"].Value; + voucher.Code = (int)cmd.Parameters["@Code"].Value; + voucher.CreationDate = (DateTime)cmd.Parameters["@CreationDate"].Value; + voucher.LastEditDate = (DateTime)cmd.Parameters["@LastEditDate"].Value; + voucher.Date = (DateTime)cmd.Parameters["@Date"].Value; + voucher.timestamp = (byte[])cmd.Parameters["@timestamp"].Value; + + return true; + } + } + public VoucherBO GetVoucher(Guid voucherID) + { + SqlCommand cmd = new SqlCommand("SELECT * FROM Vouchers WHERE VoucherID = @VoucherID"); + cmd.Parameters.AddWithValue("@VoucherID", voucherID); + return BusinessObjectDAO.GetBusinessObject(connection.ExecuteReader(cmd)); + } + public bool Delete(Guid voucherID) + { + using (SqlCommand cmd = new SqlCommand("DELETE from Vouchers where VoucherID = @VoucherID")) + { + cmd.Parameters.AddWithValue("@VoucherID", voucherID); + connection.ExecuteNonQuery(cmd); + return true; + } + } + public bool Update(VoucherBO voucher) + { + using (SqlCommand cmd = new SqlCommand(@" + SELECT @LastEditDate = GETDATE(), + @Date = COALESCE(@Date, GETDATE()) + + UPDATE [Vouchers] + SET [Ref] = @Ref, + [Date] = @Date, + [Narration] = @Narration, + [UserID] = @UserID, + [LastEditDate] = @LastEditDate, + [Type] = @Type + WHERE [VoucherID] = @VoucherID + + SELECT @Code = Code, @CreationDate = CreationDate, @timestamp = timestamp + FROM [Vouchers] + WHERE [VoucherID] = @VoucherID +")) + { + cmd.Parameters.AddWithValue("@VoucherID", voucher.VoucherID); + cmd.Parameters.AddWithValue("@Code", voucher.Code); + cmd.Parameters["@Code"].Direction = System.Data.ParameterDirection.Output; + cmd.Parameters.AddWithValue("@Ref", voucher.Ref); + + cmd.Parameters.Add("@Date", System.Data.SqlDbType.DateTime); + if (voucher.Date.HasValue) + cmd.Parameters["@Date"].Value = voucher.Date.Value; + else + cmd.Parameters["@Date"].Value = DBNull.Value; + cmd.Parameters["@Date"].Direction = System.Data.ParameterDirection.InputOutput; + + cmd.Parameters.AddWithValue("@Narration", voucher.Narration); + cmd.Parameters.AddWithValue("@UserID", voucher.UserID); + cmd.Parameters.Add("@CreationDate", System.Data.SqlDbType.DateTime); + cmd.Parameters["@CreationDate"].Direction = System.Data.ParameterDirection.Output; + cmd.Parameters.Add("@LastEditDate", System.Data.SqlDbType.DateTime); + cmd.Parameters["@LastEditDate"].Direction = System.Data.ParameterDirection.Output; + cmd.Parameters.AddWithValue("@Type", voucher.Type); + cmd.Parameters.AddWithValue("@timestamp", voucher.timestamp); + connection.ExecuteNonQuery(cmd); + voucher.Code = (int)cmd.Parameters["@Code"].Value; + voucher.CreationDate = (DateTime)cmd.Parameters["@CreationDate"].Value; + voucher.LastEditDate = (DateTime)cmd.Parameters["@LastEditDate"].Value; + voucher.Date = (DateTime)cmd.Parameters["@Date"].Value; + voucher.timestamp = (byte[])cmd.Parameters["@timestamp"].Value; + return true; + } + } + } +} diff --git a/Tanshu.Accounts.SqlDAO/WaiterDAO.cs b/Tanshu.Accounts.SqlDAO/WaiterDAO.cs new file mode 100644 index 0000000..384b5d0 --- /dev/null +++ b/Tanshu.Accounts.SqlDAO/WaiterDAO.cs @@ -0,0 +1,101 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Data.SqlClient; +using Tanshu.Accounts.Contracts; +using Tanshu.Data.DAO; +using Tanshu.Accounts.DAOFactory; + +namespace Tanshu.Accounts.SqlDAO +{ + public class WaiterDAO : BaseDAO, IWaiterDAO + { + public WaiterDAO(IConnectionDAO connection) + + : base(connection) + { } + public bool Insert(WaiterBO waiter) + { + using (SqlCommand cmd = new SqlCommand(@" +SELECT @WaiterID = NEWID(), @Code = ISNULL(MAX(Code), 0) + 1 FROM Waiters; +INSERT INTO Waiters (WaiterID, Code, Name) VALUES (@WaiterID, @Code, @Name); +SELECT @timestamp = timestamp FROM Waiters WHERE WaiterID = @WaiterID; +")) + { + cmd.Parameters.Add("@WaiterID", System.Data.SqlDbType.UniqueIdentifier); + cmd.Parameters["@WaiterID"].Direction = System.Data.ParameterDirection.Output; + cmd.Parameters.Add("@Code", System.Data.SqlDbType.Int); + cmd.Parameters["@Code"].Direction = System.Data.ParameterDirection.Output; + cmd.Parameters.AddWithValue("@Name", waiter.Name); + cmd.Parameters.Add("@timestamp", System.Data.SqlDbType.Timestamp); + cmd.Parameters["@timestamp"].Direction = System.Data.ParameterDirection.Output; + connection.ExecuteNonQuery(cmd); + waiter.WaiterID = (Guid)cmd.Parameters["@WaiterID"].Value; + waiter.Code = (int)cmd.Parameters["@Code"].Value; + waiter.timestamp = (byte[])cmd.Parameters["@timestamp"].Value; + return true; + } + } + public bool Update(WaiterBO waiter) + { + using (SqlCommand cmd = new SqlCommand(@" +UPDATE Waiters SET Name = @Name, Code = @Code WHERE WaiterID = @WaiterID; +SELECT @timestamp = timestamp FROM Waiters WHERE WaiterID = @WaiterID; +")) + { + cmd.Parameters.AddWithValue("@WaiterID", waiter.WaiterID); + cmd.Parameters.AddWithValue("@Code", waiter.Code); + cmd.Parameters.AddWithValue("@Name", waiter.Name); + cmd.Parameters.Add("@timestamp", System.Data.SqlDbType.Timestamp); + cmd.Parameters["@timestamp"].Direction = System.Data.ParameterDirection.Output; + connection.ExecuteNonQuery(cmd); + waiter.timestamp = (byte[])cmd.Parameters["@timestamp"].Value; + return true; + } + } + public bool Delete(Guid waiterID) + { + bool result; + using (SqlCommand cmd = new SqlCommand("SELECT Count(*) FROM SaleVoucher WHERE WaiterID = @WaiterID")) + { + cmd.Parameters.AddWithValue("@WaiterID", waiterID); + result = 0 == (int)connection.ExecuteScalar(cmd); + } + if (result == false) + return false; + using (SqlCommand cmd = new SqlCommand("DELETE FROM Waiters WHERE WaiterID = @WaiterID")) + { + cmd.Parameters.AddWithValue("@WaiterID", waiterID); + connection.ExecuteNonQuery(cmd); + return true; + } + } + + public WaiterBO GetWaiter(Guid waiterID) + { + SqlCommand cmd = new SqlCommand("SELECT * FROM Waiters WHERE WaiterID = @WaiterID"); + cmd.Parameters.AddWithValue("@WaiterID", waiterID); + return BusinessObjectDAO.GetBusinessObject(connection.ExecuteReader(cmd)); + } + public WaiterBO GetWaiter(int code) + { + SqlCommand cmd = new SqlCommand("SELECT * FROM Waiters WHERE Code = @Code"); + cmd.Parameters.AddWithValue("@Code", code); + return BusinessObjectDAO.GetBusinessObject(connection.ExecuteReader(cmd)); + } + + public List GetWaiters() + { + return BusinessObjectDAO.GetBusinessObjects(connection.ExecuteReader("SELECT * FROM Waiters ORDER BY Name")); + } + public List GetFilteredWaiters(Dictionary filter) + { + string name = string.Format("%{0}%", filter["Name"].Trim()); + using (SqlCommand cmd = new SqlCommand("SELECT * FROM Waiters WHERE Name LIKE @Name ORDER BY Name")) + { + cmd.Parameters.AddWithValue("@Name", name); + return BusinessObjectDAO.GetBusinessObjects(connection.ExecuteReader(cmd)); + } + } + } +} diff --git a/Tanshu.Accounts.sln b/Tanshu.Accounts.sln new file mode 100644 index 0000000..489b0ef --- /dev/null +++ b/Tanshu.Accounts.sln @@ -0,0 +1,56 @@ + +Microsoft Visual Studio Solution File, Format Version 10.00 +# Visual Studio 2008 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tanshu.Accounts.BI", "Tanshu.Accounts.BI\Tanshu.Accounts.BI.csproj", "{0B43ECD4-3701-4CD3-82EC-617D7D590BBB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tanshu.Accounts.Contracts", "Tanshu.Accounts.Contracts\Tanshu.Accounts.Contracts.csproj", "{59A6F8B8-12EE-4D8E-BEBB-61CB665A2C17}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tanshu.Accounts.PointOfSale", "Tanshu.Accounts.PointOfSale\Tanshu.Accounts.PointOfSale.csproj", "{16FC8CDC-B535-4CB5-92D9-AA901E0A4AA4}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tanshu.Accounts.Helpers", "Tanshu.Accounts.Helpers\Tanshu.Accounts.Helpers.csproj", "{3E28AAA5-A493-4446-8188-C615245943B4}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tanshu.Accounts.Print", "Tanshu.Accounts.Print\Tanshu.Accounts.Print.csproj", "{90C9D02C-91AF-4529-86BE-28320332DDB5}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tanshu.Accounts.SqlDAO", "Tanshu.Accounts.SqlDAO\Tanshu.Accounts.SqlDAO.csproj", "{B755D152-37C3-47D6-A721-3AD17A8EF316}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tanshu.Accounts.DAOFactory", "Tanshu.Accounts.DAOFactory\Tanshu.Accounts.DAOFactory.csproj", "{AC7AA7C5-4712-4992-B733-092D703E7AA9}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {0B43ECD4-3701-4CD3-82EC-617D7D590BBB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0B43ECD4-3701-4CD3-82EC-617D7D590BBB}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0B43ECD4-3701-4CD3-82EC-617D7D590BBB}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0B43ECD4-3701-4CD3-82EC-617D7D590BBB}.Release|Any CPU.Build.0 = Release|Any CPU + {59A6F8B8-12EE-4D8E-BEBB-61CB665A2C17}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {59A6F8B8-12EE-4D8E-BEBB-61CB665A2C17}.Debug|Any CPU.Build.0 = Debug|Any CPU + {59A6F8B8-12EE-4D8E-BEBB-61CB665A2C17}.Release|Any CPU.ActiveCfg = Release|Any CPU + {59A6F8B8-12EE-4D8E-BEBB-61CB665A2C17}.Release|Any CPU.Build.0 = Release|Any CPU + {16FC8CDC-B535-4CB5-92D9-AA901E0A4AA4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {16FC8CDC-B535-4CB5-92D9-AA901E0A4AA4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {16FC8CDC-B535-4CB5-92D9-AA901E0A4AA4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {16FC8CDC-B535-4CB5-92D9-AA901E0A4AA4}.Release|Any CPU.Build.0 = Release|Any CPU + {3E28AAA5-A493-4446-8188-C615245943B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {3E28AAA5-A493-4446-8188-C615245943B4}.Debug|Any CPU.Build.0 = Debug|Any CPU + {3E28AAA5-A493-4446-8188-C615245943B4}.Release|Any CPU.ActiveCfg = Release|Any CPU + {3E28AAA5-A493-4446-8188-C615245943B4}.Release|Any CPU.Build.0 = Release|Any CPU + {90C9D02C-91AF-4529-86BE-28320332DDB5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {90C9D02C-91AF-4529-86BE-28320332DDB5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {90C9D02C-91AF-4529-86BE-28320332DDB5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {90C9D02C-91AF-4529-86BE-28320332DDB5}.Release|Any CPU.Build.0 = Release|Any CPU + {B755D152-37C3-47D6-A721-3AD17A8EF316}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B755D152-37C3-47D6-A721-3AD17A8EF316}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B755D152-37C3-47D6-A721-3AD17A8EF316}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B755D152-37C3-47D6-A721-3AD17A8EF316}.Release|Any CPU.Build.0 = Release|Any CPU + {AC7AA7C5-4712-4992-B733-092D703E7AA9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {AC7AA7C5-4712-4992-B733-092D703E7AA9}.Debug|Any CPU.Build.0 = Debug|Any CPU + {AC7AA7C5-4712-4992-B733-092D703E7AA9}.Release|Any CPU.ActiveCfg = Release|Any CPU + {AC7AA7C5-4712-4992-B733-092D703E7AA9}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal

a-LnuUO_7Tbp1V0*gQo#) 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