/// <summary> /// Disables all tabs in the Dynamic Tabs list, then reenables tabs according to the users role /// </summary> private void SetTabVisibility() { try { // Get the current record using the entity context service. if (EntityService != null) { if (EntityService.EntityID != null) { ISalesOrder salesOrder = EntityFactory.GetById<ISalesOrder>(EntityService.EntityID.ToString()); if (salesOrder != null) { if (PageWorkItemLocator != null) { // These 2 lines get the tab collection for the page. PageWorkItem workItem = PageWorkItemLocator.GetPageWorkItem(); if (workItem != null) { TabWorkspace tabWorkspace = workItem.Workspaces["TabControl"] as TabWorkspace; if (tabWorkspace != null) { if (salesOrder.Account != null) { if (salesOrder.Account.Type == "Distributor") { //Show the Reciept of goods tab tabWorkspace.Hide("ReceiptOfGoodsGrid", false); } else { //Hide the Reciept of goods tab tabWorkspace.Hide("ReceiptOfGoodsGrid", true); } } //show/hide the product tabs switch (salesOrder.OrderType) { case ("Sales Order"): tabWorkspace.Hide("SalesOrderProducts", false); tabWorkspace.Hide("ReturnProductsGrid", true); tabWorkspace.Hide("TransferProductsGrid", true); break; case ("Purchase Order"): tabWorkspace.Hide("SalesOrderProducts", false); tabWorkspace.Hide("ReturnProductsGrid", true); tabWorkspace.Hide("TransferProductsGrid", true); break; case ("Transfer Order"): tabWorkspace.Hide("SalesOrderProducts", true); tabWorkspace.Hide("ReturnProductsGrid", true); tabWorkspace.Hide("TransferProductsGrid", false); break; case ("Return Order"): tabWorkspace.Hide("SalesOrderProducts", true); tabWorkspace.Hide("ReturnProductsGrid", false); tabWorkspace.Hide("TransferProductsGrid", true); break; case ("Inventory Order"): tabWorkspace.Hide("SalesOrderProducts", false); tabWorkspace.Hide("ReturnProductsGrid", true); tabWorkspace.Hide("TransferProductsGrid", true); break; default: break; } } } } } } } } catch (Exception e) { Sage.Platform.Application.Exceptions.EventLogExceptionHandler eh = new Sage.Platform.Application.Exceptions.EventLogExceptionHandler(); eh.HandleException(e, false); } }
public static void AddStockcardProducts(ISalesOrder salesorder) { try { //Only add products if the account is specified if (salesorder.Account != null) { //save the salesorder salesorder.Save(); //get the user's warehouseid, the id may not match the object reference, use the id as correct String userWarehouseID = ""; if (String.IsNullOrEmpty(salesorder.UserWHSEID) && salesorder.UserWareHouse != null) { userWarehouseID = salesorder.UserWareHouse.SiteCodeId; } else if (salesorder.UserWHSEID == salesorder.UserWareHouse.Id.ToString()) { userWarehouseID = salesorder.UserWareHouse.SiteCodeId; } else { //lookup id from site Sage.Entity.Interfaces.ISLXSite _UserWareHouse = Sage.Platform.EntityFactory.GetById<Sage.Entity.Interfaces.ISLXSite>(salesorder.UserWHSEID); if (_UserWareHouse != null) { userWarehouseID = _UserWareHouse.SiteCodeId; } } //List the stock card items Sage.Platform.RepositoryHelper<Sage.Entity.Interfaces.IStockCardItems> f = Sage.Platform.EntityFactory.GetRepositoryHelper<Sage.Entity.Interfaces.IStockCardItems>(); Sage.Platform.Repository.ICriteria crit = f.CreateCriteria(); crit.Add(f.EF.Eq("Accountid", salesorder.Account.Id.ToString())); crit.CreateAlias("Product", "p"); crit.Add(f.EF.Eq("p.WarehouseID", userWarehouseID)); crit.Add(f.EF.Ne("p.Status", "Deleted")); //result = crit.List<Sage.Entity.Interfaces.IPickingList>(); foreach (IStockCardItems scitem in crit.List<IStockCardItems>()) { if (scitem.Product != null) { ////Only add products in the selected warehouse //if (!String.IsNullOrEmpty(userWarehouseID) && userWarehouseID == scitem.Product.WarehouseID) { try { //add the products to the salesorder Sage.Entity.Interfaces.ISalesOrderItem item = Sage.Platform.EntityFactory.Create(typeof(Sage.Entity.Interfaces.ISalesOrderItem), Sage.Platform.EntityCreationOption.DoNotExecuteBusinessRules) as Sage.Entity.Interfaces.ISalesOrderItem; //use common function to add salesorderitem item.SalesOrder = salesorder; item.Product = scitem.Product; item.MaxStockLevel = scitem.MaxStockLevel; //ssommerfeldt Nov 2 2012 item.SaveProductToSalesOrderItem(); item.Save(); salesorder.SalesOrderItems.Add(item); } catch (Exception ex) { //handle errors to allow other items to process Sage.Platform.Application.Exceptions.EventLogExceptionHandler eh = new Sage.Platform.Application.Exceptions.EventLogExceptionHandler(); eh.HandleException(new Exception("Order (" + salesorder.SalesOrderNumber + "): " + ex.Message, ex), false); } ////get msrp price //double listPrice = 0; //try { // if (scitem.Product.Vproductpricesheet != null) { // listPrice = (double)scitem.Product.Vproductpricesheet.Listprice; // } else { // //price not found // } //} catch (Exception ex) { // //vproductpricesheet record not found // Sage.Platform.Application.Exceptions.EventLogExceptionHandler eh = new Sage.Platform.Application.Exceptions.EventLogExceptionHandler(); // eh.HandleException(new Exception("Order (" + item.SalesOrder.SalesOrderNumber + "): " + ex.Message, ex), false); //} ////item.Price = Math.Round((Double)scitem.Product.Price, 2, MidpointRounding.AwayFromZero); //item.Price = listPrice; ////get the margin //item.Discount = scitem.Margin; //item.ExtendedPrice = 0; //due to quantity 0 //item.Quantity = 0; //set to 0 initially //item.ActualID = scitem.Product.ActualId; //item.UPC = scitem.Product.UPC; //item.Description = scitem.ProductDescription; //item.Family = scitem.Product.Family; //item.ProductName = scitem.Product.Name; //item.Program = scitem.Product.Program; //item.Case = scitem.Product.Unit; //item.Product = scitem.Product; //item.UnitOfMeasureId = scitem.Product.UnitOfMeasureId.Trim(); //item.MaxStockLevel = scitem.MaxStockLevel; //ssommerfeldt Nov 2 2012 //salesorder.SalesOrderItems.Add(item); //item.Save(); } } } } catch (Exception e) { throw new Exception("Order (" + salesorder.SalesOrderNumber + "): " + e.Message, e); } }
public static void GetStockCardPricing(ISalesOrderItem salesorderitem) { try { // Set the pricing from stock card double listPrice = 0; try { if (salesorderitem.Product != null) { if (salesorderitem.Product.Vproductpricesheet != null) { listPrice = (double)salesorderitem.Product.Vproductpricesheet.Listprice; } else { //price not found } } } catch (Exception ex) { //vproductpricesheet record not found Sage.Platform.Application.Exceptions.EventLogExceptionHandler eh = new Sage.Platform.Application.Exceptions.EventLogExceptionHandler(); eh.HandleException(new Exception("Order (" + salesorderitem.SalesOrder.SalesOrderNumber + "): " + ex.Message, ex), false); } Sage.Platform.RepositoryHelper<IStockCardItems> rep1 = Sage.Platform.EntityFactory.GetRepositoryHelper<IStockCardItems>(); Sage.Platform.Repository.ICriteria crit1 = rep1.CreateCriteria(); if (salesorderitem.SalesOrder != null) { if (salesorderitem.SalesOrder.Account != null) { crit1.Add(rep1.EF.Eq("Accountid", salesorderitem.SalesOrder.Account.Id)); if (salesorderitem.Product != null) { crit1.Add(rep1.EF.Eq("Productid", salesorderitem.Product.Id)); double margin = 0; foreach (IStockCardItems scard in crit1.List<IStockCardItems>()) { margin = scard.Margin ?? 0; break; } salesorderitem.Price = Math.Round(listPrice, 2); salesorderitem.Discount = margin; salesorderitem.CalculatedPrice = Math.Round((Decimal)listPrice - ((Decimal)listPrice * (Decimal)margin), 2, MidpointRounding.AwayFromZero); salesorderitem.ExtendedPrice = Math.Round((Double)salesorderitem.CalculatedPrice * (Double)salesorderitem.Quantity, 2, MidpointRounding.AwayFromZero); salesorderitem.UPC = salesorderitem.Product.UPC; //Set a value on salesorder to recalculate totals on save salesorderitem.SalesOrder.Tick = salesorderitem.SalesOrder.Tick + 1 ?? 1; } } } } catch (Exception e) { throw new Exception("Order (" + salesorderitem.SalesOrder.SalesOrderNumber + "): " + e.Message, e); } }
public static void SaveProductToSalesOrderItem(ISalesOrderItem salesorderitem) { try { if (salesorderitem.Product != null) { //exclude products that are already in the order, this is used for add only var existsInOrder = from p in salesorderitem.SalesOrder.SalesOrderItems where p.ActualID.Equals(salesorderitem.Product.ActualId) select p; if (existsInOrder.Count() > 0) { // //throw new Exception("Order already contains this product, use the edit function instead."); // //Modified 2014-1-10 PG // //If an existing item is requested, load values from salesorder //salesorderitem.Quantity = 0; //don't change quantity } else { salesorderitem.Quantity = 0; //set to 0 initially } //item.SalesOrder = salesorder; salesorderitem.ActualID = salesorderitem.Product.ActualId; salesorderitem.Description = salesorderitem.Product.Description; salesorderitem.Family = salesorderitem.Product.Family; salesorderitem.UPC = salesorderitem.Product.UPC; salesorderitem.ProductName = salesorderitem.Product.Name; salesorderitem.Program = salesorderitem.Product.Program; salesorderitem.UnitOfMeasureId = salesorderitem.Product.UnitOfMeasureId.Trim(); salesorderitem.Case = salesorderitem.Product.Unit; ////get margin from category //salesorderitem.Discount = 0; //if (salesorderitem.SalesOrder != null) { // if (salesorderitem.SalesOrder.Account != null) { // String sql = "SELECT ACCOUNTPRODUCTCATEGORY.MARGIN"; // sql += " FROM PRODUCT"; // sql += " INNER JOIN TIMPRODCATITEM ON PRODUCT.MASITEMKEY = TIMPRODCATITEM.ITEMKEY"; // sql += " INNER JOIN TIMPRODCATEGORY ON TIMPRODCATITEM.PRODCATEGORYKEY = TIMPRODCATEGORY.PRODCATEGORYKEY"; // sql += " INNER JOIN ACCOUNTPRODUCTCATEGORY ON TIMPRODCATEGORY.TIMPRODCATEGORYID = ACCOUNTPRODUCTCATEGORY.PRODUCTCATEGORYID"; // sql += " Where ProductId = '" + salesorderitem.Product.Id.ToString() + "'"; // sql += " And AccountId = '" + salesorderitem.SalesOrder.Account.Id.ToString() + "'"; // Sage.Platform.Data.IDataService datasvc = Sage.Platform.Application.ApplicationContext.Current.Services.Get<Sage.Platform.Data.IDataService>(); // using (System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(datasvc.GetConnectionString())) { // conn.Open(); // using (System.Data.OleDb.OleDbCommand cmd = new System.Data.OleDb.OleDbCommand(sql, conn)) { // OleDbDataReader reader = cmd.ExecuteReader(); // //loop through the reader // while (reader.Read()) { // try { // salesorderitem.Discount = (Double)reader["MARGIN"]; // } catch (Exception) { // //no catch? // salesorderitem.Discount = 0; // } // } // reader.Close(); // } // } // } //} //Get margin from extension method double margin = 0; if (salesorderitem.Product.Timprodpricegroup != null && salesorderitem.SalesOrder != null && salesorderitem.SalesOrder.Account != null) { Extentions.GetDefaultMargin(null, salesorderitem.Product.Timprodpricegroup.Id.ToString(), salesorderitem.SalesOrder.Account, out margin); } salesorderitem.Discount = margin; //get msrp price double listPrice = 0; try { if (salesorderitem.Product != null) { if (salesorderitem.Product.Vproductpricesheet != null) { listPrice = (double)salesorderitem.Product.Vproductpricesheet.Listprice; } else { //price not found } } } catch (Exception ex) { //vproductpricesheet record not found Sage.Platform.Application.Exceptions.EventLogExceptionHandler eh = new Sage.Platform.Application.Exceptions.EventLogExceptionHandler(); eh.HandleException(new Exception("Order (" + salesorderitem.SalesOrder.SalesOrderNumber + "): " + ex.Message, ex), false); } salesorderitem.Price = Math.Round(listPrice, 2); if (salesorderitem.SalesOrder.OrderType == "Return Order") { if (salesorderitem.SalesOrder.Account != null) { //find the new item, id is the same as return except last char double newProductPrice = 0; double returnmargin = 0; try { IProduct newProduct = FindProductByReturnProduct(salesorderitem.Product, salesorderitem.SalesOrder.Account); if (newProduct.Vproductpricesheet != null) { newProductPrice = (double)newProduct.Vproductpricesheet.Listprice; } else { //price not found } if (newProduct.Timprodpricegroup != null && salesorderitem.SalesOrder != null && salesorderitem.SalesOrder.Account != null) { Extentions.GetDefaultMargin(null, newProduct.Timprodpricegroup.Id.ToString(), salesorderitem.SalesOrder.Account, out returnmargin); } } catch (Exception ex) { //vproductpricesheet record not found Sage.Platform.Application.Exceptions.EventLogExceptionHandler eh = new Sage.Platform.Application.Exceptions.EventLogExceptionHandler(); eh.HandleException(new Exception("Order (" + salesorderitem.SalesOrder.SalesOrderNumber + "): " + ex.Message, ex), false); } //return item price is new item price - return item price salesorderitem.OrigProductPrice = Math.Round(newProductPrice, 2); //Get return margin from extension method salesorderitem.OrigProductDiscount = returnmargin; } } //calculate the adjusted and extended prices salesorderitem.CalculatedPrice = CalculateAdjustedPrice(salesorderitem); CalculateExtendedPrice(salesorderitem); } //} } catch (Exception e) { throw new Exception("Order (" + salesorderitem.SalesOrder.SalesOrderNumber + "): " + e.Message, e); } }
private void AddExpensesToAttendees() { try { //Add expenses to the attendees listed. Expenses are split equally. int attendeeCount = 0; if (Activity.ActivityAttendees != null) { attendeeCount = Activity.ActivityAttendees.Count; } bool isContactIncluded = false; if (String.IsNullOrEmpty(Activity.ContactId) == false) { attendeeCount += 1; isContactIncluded = true; } foreach (IActivityExpense exp in Activity.ActivityExpenses) { //determine the expense amount decimal dividedAmount = 0; decimal originalAmount = exp.Amount ?? 0; if (attendeeCount > 1) { dividedAmount = originalAmount / attendeeCount; } else { dividedAmount = originalAmount; } foreach (IActivityAttendee a in Activity.ActivityAttendees) { //create expense record Sage.Entity.Interfaces.IContactExpenses newExpense = Sage.Platform.EntityFactory.Create(typeof(Sage.Entity.Interfaces.IContactExpenses), Sage.Platform.EntityCreationOption.ExecuteBusinessRules) as Sage.Entity.Interfaces.IContactExpenses; newExpense.Ah_rep = exp.AHRep; newExpense.ExpenseAmount = (double)dividedAmount; newExpense.ExpenseDate = exp.ExpenseDate; newExpense.ExpenseType = exp.ExpenseType; newExpense.ExpenseLocation = exp.Location; newExpense.ExpenseNote = exp.Notes; newExpense.PortfolioManager = exp.PortfolioManager; newExpense.Contactid = a.ContactId; newExpense.Save(); } //create expense for activity contact if (isContactIncluded == true) { //create expense record Sage.Entity.Interfaces.IContactExpenses newExpense = Sage.Platform.EntityFactory.Create(typeof(Sage.Entity.Interfaces.IContactExpenses), Sage.Platform.EntityCreationOption.ExecuteBusinessRules) as Sage.Entity.Interfaces.IContactExpenses; newExpense.Ah_rep = exp.AHRep; newExpense.ExpenseAmount = (double)dividedAmount; newExpense.ExpenseDate = exp.ExpenseDate; newExpense.ExpenseType = exp.ExpenseType; newExpense.ExpenseLocation = exp.Location; newExpense.ExpenseNote = exp.Notes; newExpense.PortfolioManager = exp.PortfolioManager; newExpense.Contactid = Activity.ContactId; newExpense.Save(); } } } catch (Exception ex) { Sage.Platform.Application.Exceptions.EventLogExceptionHandler eh = new Sage.Platform.Application.Exceptions.EventLogExceptionHandler(); eh.HandleException(ex, false); } }