From fe4b5b1df73ad44086df009e147f5b1759dff83e Mon Sep 17 00:00:00 2001 From: binodnp Date: Thu, 19 Sep 2013 00:58:55 +0545 Subject: [PATCH] Updates on ProductControl and ProductViewControl. --- .../Helpers/DropDownListHelper.cs | 22 ++++ .../Transactions/NonGlStockTransaction.cs | 4 +- MixERP.Net.Common/MixERP.Net.Common.csproj | 4 + .../Models/Transactions/ProductModel.cs | 11 +- .../Models/Transactions/SubTranBook.cs | 24 +++++ .../Models/Transactions/TranBook.cs | 20 ++++ .../Models/Transactions/TranType.cs | 20 ++++ .../Transactions/TransactionTypeDomain.cs | 2 - .../Models/Transactions/VerificationDomain.cs | 2 - .../Models/Transactions/VerificationType.cs | 23 +++++ .../Transactions/NonGlStockTransaction.cs | 3 + .../Purchase/DirectPurchase.aspx | 4 +- MixERP.Net.FrontEnd/Purchase/GRN.aspx | 11 +- MixERP.Net.FrontEnd/Purchase/Order.aspx | 4 +- .../Sales/DeliveryWithoutOrder.aspx | 4 +- MixERP.Net.FrontEnd/Sales/DirectSales.aspx | 4 +- .../Sales/Entry/Quotation.aspx | 4 +- MixERP.Net.FrontEnd/Sales/Order.aspx | 4 +- .../UserControls/Products/ProductControl.ascx | 3 +- .../Products/ProductControl.ascx.cs | 94 +++++++++++++----- MixERP.Net.v11.suo | Bin 678400 -> 678400 bytes 21 files changed, 212 insertions(+), 55 deletions(-) create mode 100644 MixERP.Net.Common/Models/Transactions/SubTranBook.cs create mode 100644 MixERP.Net.Common/Models/Transactions/TranBook.cs create mode 100644 MixERP.Net.Common/Models/Transactions/TranType.cs create mode 100644 MixERP.Net.Common/Models/Transactions/VerificationType.cs diff --git a/MixERP.Net.BusinessLayer/Helpers/DropDownListHelper.cs b/MixERP.Net.BusinessLayer/Helpers/DropDownListHelper.cs index 3d3de6a0f..ca20969e8 100644 --- a/MixERP.Net.BusinessLayer/Helpers/DropDownListHelper.cs +++ b/MixERP.Net.BusinessLayer/Helpers/DropDownListHelper.cs @@ -54,5 +54,27 @@ public static void BindDropDownList(ListControl list, DataTable table, string va list.DataBind(); } + /// + /// Selects the item in the list control that contains the specified value, if it exists. + /// + /// + /// The value of the item in the list control to select + /// Returns true if the value exists in the list control, false otherwise + public static bool SetSelectedValue(DropDownList dropDownList, String selectedValue) + { + dropDownList.ClearSelection(); + + ListItem selectedListItem = dropDownList.Items.FindByValue(selectedValue); + + if(selectedListItem != null) + { + selectedListItem.Selected = true; + return true; + } + else + { + return false; + } + } } } diff --git a/MixERP.Net.BusinessLayer/Transactions/NonGlStockTransaction.cs b/MixERP.Net.BusinessLayer/Transactions/NonGlStockTransaction.cs index 80f68d05c..3d26b6edc 100644 --- a/MixERP.Net.BusinessLayer/Transactions/NonGlStockTransaction.cs +++ b/MixERP.Net.BusinessLayer/Transactions/NonGlStockTransaction.cs @@ -65,7 +65,7 @@ public static bool TransactionIdsBelongToSameParty(Collection ids) public static void MergeSalesQuotationToSalesOrder(Collection ids) { - MixERP.Net.Common.Models.Transactions.ProductModel model = new Common.Models.Transactions.ProductModel(); + MixERP.Net.Common.Models.Transactions.MergeModel model = new Common.Models.Transactions.MergeModel(); Collection products = new Collection(); using(DataTable table = MixERP.Net.DatabaseLayer.Transactions.NonGLStockTransaction.GetSalesQuotationView(ids)) @@ -76,7 +76,7 @@ public static void MergeSalesQuotationToSalesOrder(Collection ids) } model.ValueDate = MixERP.Net.Common.Conversion.TryCastDate(table.Rows[0]["value_date"]); - model.PartyId = MixERP.Net.Common.Conversion.TryCastInteger(table.Rows[0]["party_id"]); + model.PartyCode = MixERP.Net.Common.Conversion.TryCastString(table.Rows[0]["party_code"]); model.PriceTypeId = MixERP.Net.Common.Conversion.TryCastInteger(table.Rows[0]["price_type_id"]); model.ReferenceNumber = MixERP.Net.Common.Conversion.TryCastString(table.Rows[0]["reference_number"]); model.StatementReference = MixERP.Net.Common.Conversion.TryCastString(table.Rows[0]["statement_reference"]); diff --git a/MixERP.Net.Common/MixERP.Net.Common.csproj b/MixERP.Net.Common/MixERP.Net.Common.csproj index 5a83367d6..a1e41442f 100644 --- a/MixERP.Net.Common/MixERP.Net.Common.csproj +++ b/MixERP.Net.Common/MixERP.Net.Common.csproj @@ -68,10 +68,14 @@ + + + + diff --git a/MixERP.Net.Common/Models/Transactions/ProductModel.cs b/MixERP.Net.Common/Models/Transactions/ProductModel.cs index f46259813..58bb8ac60 100644 --- a/MixERP.Net.Common/Models/Transactions/ProductModel.cs +++ b/MixERP.Net.Common/Models/Transactions/ProductModel.cs @@ -6,21 +6,22 @@ http://mozilla.org/MPL/2.0/. ***********************************************************************************/ using System; -using System.Collections.Generic; using System.Collections.ObjectModel; -using System.Linq; -using System.Text; namespace MixERP.Net.Common.Models.Transactions { - public class ProductModel + public class MergeModel { public DateTime ValueDate { get; set; } - public int PartyId { get; set; } + public string PartyCode { get; set; } public int PriceTypeId { get; set; } public string ReferenceNumber { get; set; } public int AgentId { get; set; } public Collection View { get; set; } public string StatementReference { get; set; } + + public MixERP.Net.Common.Models.Transactions.TranBook Book { get; set; } + public MixERP.Net.Common.Models.Transactions.SubTranBook SubBook { get; set; } + public Collection transactionIdCollection { get; set; } } } diff --git a/MixERP.Net.Common/Models/Transactions/SubTranBook.cs b/MixERP.Net.Common/Models/Transactions/SubTranBook.cs new file mode 100644 index 000000000..0283c86a2 --- /dev/null +++ b/MixERP.Net.Common/Models/Transactions/SubTranBook.cs @@ -0,0 +1,24 @@ +/******************************************************************************** +Copyright (C) Binod Nepal, Mix Open Foundation (http://mixof.org). + +This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. +If a copy of the MPL was not distributed with this file, You can obtain one at +http://mozilla.org/MPL/2.0/. +***********************************************************************************/ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace MixERP.Net.Common.Models.Transactions +{ + public enum SubTranBook + { + Direct, + Quotation, + Order, /*Readonly*/ + Delivery,/*Readonly*/ + Receipt, /*Readonly*/ + Invoice + } +} diff --git a/MixERP.Net.Common/Models/Transactions/TranBook.cs b/MixERP.Net.Common/Models/Transactions/TranBook.cs new file mode 100644 index 000000000..36616ffee --- /dev/null +++ b/MixERP.Net.Common/Models/Transactions/TranBook.cs @@ -0,0 +1,20 @@ +/******************************************************************************** +Copyright (C) Binod Nepal, Mix Open Foundation (http://mixof.org). + +This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. +If a copy of the MPL was not distributed with this file, You can obtain one at +http://mozilla.org/MPL/2.0/. +***********************************************************************************/ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace MixERP.Net.Common.Models.Transactions +{ + public enum TranBook + { + Sales, + Purchase + } +} diff --git a/MixERP.Net.Common/Models/Transactions/TranType.cs b/MixERP.Net.Common/Models/Transactions/TranType.cs new file mode 100644 index 000000000..7874f2d69 --- /dev/null +++ b/MixERP.Net.Common/Models/Transactions/TranType.cs @@ -0,0 +1,20 @@ +/******************************************************************************** +Copyright (C) Binod Nepal, Mix Open Foundation (http://mixof.org). + +This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. +If a copy of the MPL was not distributed with this file, You can obtain one at +http://mozilla.org/MPL/2.0/. +***********************************************************************************/ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace MixERP.Net.Common.Models.Transactions +{ + public enum TransactionType + { + Debit, + Credit + } +} diff --git a/MixERP.Net.Common/Models/Transactions/TransactionTypeDomain.cs b/MixERP.Net.Common/Models/Transactions/TransactionTypeDomain.cs index ba8197302..90ba9191d 100644 --- a/MixERP.Net.Common/Models/Transactions/TransactionTypeDomain.cs +++ b/MixERP.Net.Common/Models/Transactions/TransactionTypeDomain.cs @@ -12,8 +12,6 @@ namespace MixERP.Net.Common.Models.Transactions { - public enum TransactionType { Debit, Credit } - public static class TransactionTypeDomain { public static string GetDomain(TransactionType type) diff --git a/MixERP.Net.Common/Models/Transactions/VerificationDomain.cs b/MixERP.Net.Common/Models/Transactions/VerificationDomain.cs index 9d4333a39..51af15576 100644 --- a/MixERP.Net.Common/Models/Transactions/VerificationDomain.cs +++ b/MixERP.Net.Common/Models/Transactions/VerificationDomain.cs @@ -12,8 +12,6 @@ namespace MixERP.Net.Common.Models.Transactions { - public enum VerificationType { Rejected, Closed, Withdrawn, Unapproved, Approved } - public static class VerificationDomain { public static short GetVerification(VerificationType type) diff --git a/MixERP.Net.Common/Models/Transactions/VerificationType.cs b/MixERP.Net.Common/Models/Transactions/VerificationType.cs new file mode 100644 index 000000000..fcb1eb5b3 --- /dev/null +++ b/MixERP.Net.Common/Models/Transactions/VerificationType.cs @@ -0,0 +1,23 @@ +/******************************************************************************** +Copyright (C) Binod Nepal, Mix Open Foundation (http://mixof.org). + +This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. +If a copy of the MPL was not distributed with this file, You can obtain one at +http://mozilla.org/MPL/2.0/. +***********************************************************************************/ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace MixERP.Net.Common.Models.Transactions +{ + public enum VerificationType + { + Rejected, + Closed, + Withdrawn, + Unapproved, + Approved + } +} diff --git a/MixERP.Net.DatabaseLayer/Transactions/NonGlStockTransaction.cs b/MixERP.Net.DatabaseLayer/Transactions/NonGlStockTransaction.cs index 09191408b..57a4fa7b8 100644 --- a/MixERP.Net.DatabaseLayer/Transactions/NonGlStockTransaction.cs +++ b/MixERP.Net.DatabaseLayer/Transactions/NonGlStockTransaction.cs @@ -182,6 +182,7 @@ public static DataTable GetSalesQuotationView(Collection ids) string sql = @"SELECT transactions.non_gl_stock_master.value_date, transactions.non_gl_stock_master.party_id, + core.parties.party_code, transactions.non_gl_stock_master.price_type_id, transactions.non_gl_stock_master.reference_number, core.items.item_code, @@ -202,6 +203,8 @@ INNER JOIN core.items ON transactions.non_gl_stock_details.item_id = core.items.item_id INNER JOIN core.units ON transactions.non_gl_stock_details.unit_id = core.units.unit_id + INNER JOIN core.parties + ON transactions.non_gl_stock_master.party_id = core.parties.party_id WHERE transactions.non_gl_stock_master.non_gl_stock_master_id IN(" + string.Join(",", parameters) + ");"; //Create a PostgreSQL command object from the SQL string. diff --git a/MixERP.Net.FrontEnd/Purchase/DirectPurchase.aspx b/MixERP.Net.FrontEnd/Purchase/DirectPurchase.aspx index 7d41e8869..0abc12850 100644 --- a/MixERP.Net.FrontEnd/Purchase/DirectPurchase.aspx +++ b/MixERP.Net.FrontEnd/Purchase/DirectPurchase.aspx @@ -14,8 +14,8 @@ http://mozilla.org/MPL/2.0/. + <%@ Page Title="" Language="C#" MasterPageFile="~/ContentMaster.Master" AutoEventWireup="true" CodeBehind="GRN.aspx.cs" Inherits="MixERP.Net.FrontEnd.Purchase.GRN" %> + - + DisplayTransactionTypeRadioButtonList="false" /> diff --git a/MixERP.Net.FrontEnd/Purchase/Order.aspx b/MixERP.Net.FrontEnd/Purchase/Order.aspx index 9c08ff529..aca9962ab 100644 --- a/MixERP.Net.FrontEnd/Purchase/Order.aspx +++ b/MixERP.Net.FrontEnd/Purchase/Order.aspx @@ -15,8 +15,8 @@ http://mozilla.org/MPL/2.0/. diff --git a/MixERP.Net.FrontEnd/Sales/Order.aspx b/MixERP.Net.FrontEnd/Sales/Order.aspx index 3b32c9b94..b092c749b 100644 --- a/MixERP.Net.FrontEnd/Sales/Order.aspx +++ b/MixERP.Net.FrontEnd/Sales/Order.aspx @@ -15,8 +15,8 @@ http://mozilla.org/MPL/2.0/. diff --git a/MixERP.Net.FrontEnd/UserControls/Products/ProductControl.ascx.cs b/MixERP.Net.FrontEnd/UserControls/Products/ProductControl.ascx.cs index 3976db0b4..b852642fc 100644 --- a/MixERP.Net.FrontEnd/UserControls/Products/ProductControl.ascx.cs +++ b/MixERP.Net.FrontEnd/UserControls/Products/ProductControl.ascx.cs @@ -20,16 +20,19 @@ namespace MixERP.Net.FrontEnd.UserControls.Products { public partial class ProductControl : System.Web.UI.UserControl { - public enum TranType { Sales, Purchase } - public TranType TransactionType { get; set; } - public enum SubTranType { Direct, Quotation, Order, /*Readonly*/ Delivery,/*Readonly*/ Receipt, /*Readonly*/ Invoice } - public SubTranType SubType { get; set; } + public MixERP.Net.Common.Models.Transactions.TranBook Book { get; set; } + public MixERP.Net.Common.Models.Transactions.SubTranBook SubBook { get; set; } public string Text { get; set; } public GridView Grid { get { return ProductGridView; } } public bool DisplayTransactionTypeRadioButtonList { get; set; } public bool VerifyStock { get; set; } public bool ShowCashRepository { get; set; } + /// + /// Representation of pre assigned data for presentation. + /// + private MixERP.Net.Common.Models.Transactions.MergeModel model = new Common.Models.Transactions.MergeModel(); + public ControlCollection GetForm { get @@ -119,7 +122,7 @@ protected void SaveButton_Click(object sender, EventArgs e) return; } - if(this.TransactionType == TranType.Purchase && CashRepositoryRow.Visible) + if(this.Book == Common.Models.Transactions.TranBook.Purchase && CashRepositoryRow.Visible) { this.UpdateRepositoryBalance(); @@ -177,13 +180,14 @@ protected void Page_Init(object sender, EventArgs e) { this.ClearSession(this.ID); } - - this.LoadValuesFromSession(); + this.InitializeControls(); + this.LoadValuesFromSession(); this.BindGridView(); ScriptManager1.RegisterAsyncPostBackControl(ProductGridView); } + private void LoadValuesFromSession() { if(Session["Product"] == null) @@ -191,21 +195,18 @@ private void LoadValuesFromSession() return; } - MixERP.Net.Common.Models.Transactions.ProductModel model = Session["Product"] as MixERP.Net.Common.Models.Transactions.ProductModel; + model = Session["Product"] as MixERP.Net.Common.Models.Transactions.MergeModel; if(model == null) { return; } - if(PartyDropDownList.SelectedItem != null) - { - PartyDropDownList.SelectedItem.Value = model.PartyId.ToString(); - } + PartyDropDownListCascadingDropDown.SelectedValue = model.PartyCode.ToString(); if(PriceTypeDropDownList.SelectedItem != null) { - PriceTypeDropDownList.SelectedItem.Value = model.PriceTypeId.ToString(); + MixERP.Net.BusinessLayer.Helpers.DropDownListHelper.SetSelectedValue(PriceTypeDropDownList, model.PriceTypeId.ToString()); } ReferenceNumberTextBox.Text = model.ReferenceNumber; @@ -225,7 +226,7 @@ private void ClearSession(string key) private void LoadCostCenters() { - if(this.SubType == SubTranType.Direct || this.SubType == SubTranType.Invoice || this.SubType == SubTranType.Delivery || this.SubType == SubTranType.Receipt) + if(this.SubBook == Common.Models.Transactions.SubTranBook.Direct || this.SubBook == Common.Models.Transactions.SubTranBook.Invoice || this.SubBook == Common.Models.Transactions.SubTranBook.Delivery || this.SubBook == Common.Models.Transactions.SubTranBook.Receipt) { MixERP.Net.BusinessLayer.Helpers.DropDownListHelper.BindDropDownList(CostCenterDropDownList, "office", "cost_centers", "cost_center_id", MixERP.Net.BusinessLayer.Office.CostCenters.GetDisplayField()); } @@ -237,7 +238,7 @@ private void LoadCostCenters() private void LoadStores() { - if(this.SubType == SubTranType.Direct || this.SubType == SubTranType.Invoice || this.SubType == SubTranType.Delivery || this.SubType == SubTranType.Receipt) + if(this.SubBook == Common.Models.Transactions.SubTranBook.Direct || this.SubBook == Common.Models.Transactions.SubTranBook.Invoice || this.SubBook == Common.Models.Transactions.SubTranBook.Delivery || this.SubBook == Common.Models.Transactions.SubTranBook.Receipt) { MixERP.Net.BusinessLayer.Helpers.DropDownListHelper.BindDropDownList(StoreDropDownList, "office", "stores", "store_id", MixERP.Net.BusinessLayer.Office.Stores.GetDisplayField()); } @@ -289,7 +290,7 @@ private void LoadLabels() private void LoadTransactionTypeLabel() { - if(this.TransactionType == TranType.Sales) + if(this.Book == Common.Models.Transactions.TranBook.Sales) { TransactionTypeLiteral.Text = ""; } @@ -301,7 +302,7 @@ private void LoadTransactionTypeLabel() private void LoadItems() { - if(this.TransactionType == TranType.Sales) + if(this.Book == Common.Models.Transactions.TranBook.Sales) { ItemDropDownListCascadingDropDown.ServiceMethod = "GetItems"; } @@ -313,7 +314,7 @@ private void LoadItems() private void LoadPriceTypes() { - if(this.TransactionType == TranType.Sales) + if(this.Book == Common.Models.Transactions.TranBook.Sales) { MixERP.Net.BusinessLayer.Helpers.DropDownListHelper.BindDropDownList(PriceTypeDropDownList, "core", "price_types", "price_type_id", MixERP.Net.BusinessLayer.Core.PriceTypes.GetDisplayField()); } @@ -333,7 +334,7 @@ private void LoadSalesPerson() { SalesPersonRow.Visible = false; - if(this.TransactionType == TranType.Sales) + if(this.Book == Common.Models.Transactions.TranBook.Sales) { MixERP.Net.BusinessLayer.Helpers.DropDownListHelper.BindDropDownList(SalesPersonDropDownList, "core", "agents", "agent_id", MixERP.Net.BusinessLayer.Core.Agents.GetDisplayField()); SalesPersonRow.Visible = true; @@ -346,9 +347,9 @@ private void LoadShippers() ShippingChargeRow.Visible = false; ShippingCompanyRow.Visible = false; - if(this.TransactionType == TranType.Sales) + if(this.Book == Common.Models.Transactions.TranBook.Sales) { - if(this.SubType == SubTranType.Direct || this.SubType == SubTranType.Delivery) + if(this.SubBook == Common.Models.Transactions.SubTranBook.Direct || this.SubBook == Common.Models.Transactions.SubTranBook.Delivery) { MixERP.Net.BusinessLayer.Helpers.DropDownListHelper.BindDropDownList(ShippingCompanyDropDownList, "core", "shippers", "shipper_id", MixERP.Net.BusinessLayer.Core.Shippers.GetDisplayField()); @@ -600,7 +601,7 @@ protected void AddButton_Click(object sender, EventArgs e) if(this.VerifyStock) { - if(this.TransactionType == TranType.Sales) + if(this.Book == Common.Models.Transactions.TranBook.Sales) { if(MixERP.Net.BusinessLayer.Core.Items.IsStockItem(itemCode)) { @@ -657,12 +658,55 @@ private void AddRowToTable(string itemCode, string itemName, int quantity, strin { if(Session[this.ID] != null) { - return (Collection)Session[this.ID]; + //Get an instance of the ProductDetailsModel collection stored in session. + var productCollection = (Collection)Session[this.ID]; + + //Summate the collection. + productCollection = SummateProducts(productCollection); + + //Store the summated table in session. + Session[this.ID] = productCollection; + + return productCollection; } return new Collection(); } + private Collection SummateProducts(Collection productCollection) + { + //Create a new collection of products. + Collection collection = new Collection(); + + //Iterate through the supplied product collection. + foreach(MixERP.Net.Common.Models.Transactions.ProductDetailsModel product in productCollection) + { + //Create a product + MixERP.Net.Common.Models.Transactions.ProductDetailsModel productInCollection = null; + + if(collection.Count > 0) + { + productInCollection = collection.Where(x => x.ItemCode == product.ItemCode && x.ItemName == product.ItemName && x.Unit == product.Unit && x.Price == product.Price && x.Rate == product.Rate).FirstOrDefault(); + } + + if(productInCollection == null) + { + collection.Add(product); + } + else + { + productInCollection.Quantity += product.Quantity; + productInCollection.Amount += product.Amount; + productInCollection.Discount += product.Discount; + productInCollection.Subtotal += product.Subtotal; + productInCollection.Tax += product.Tax; + productInCollection.Total += product.Total; + } + } + + return collection; + } + void UnitDropDownList_SelectedIndexChanged(object sender, EventArgs e) { this.DisplayPrice(); @@ -678,7 +722,7 @@ private void DisplayPrice() decimal price = 0; - if(this.TransactionType == TranType.Sales) + if(this.Book == Common.Models.Transactions.TranBook.Sales) { party = PartyDropDownList.SelectedItem.Value; short priceTypeId = MixERP.Net.Common.Conversion.TryCastShort(PriceTypeDropDownList.SelectedItem.Value); @@ -744,7 +788,7 @@ protected void OKButton_Click(object sender, EventArgs e) return; } - if(this.TransactionType == TranType.Sales) + if(this.Book == Common.Models.Transactions.TranBook.Sales) { if(StoreDropDownList.Visible) { diff --git a/MixERP.Net.v11.suo b/MixERP.Net.v11.suo index 3ec566d437f0fbc4caa544ecf81b8d1eacf165ea..7c320576754aa922606ca722c8c8f2b1c285b5b2 100644 GIT binary patch delta 41664 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