public ActionResult Create(SalesOrderDetail salesorderdetail) { if (ModelState.IsValid) { db.SalesOrderDetails.Add(salesorderdetail); db.SaveChanges(); return RedirectToAction("Index"); } return View(salesorderdetail); }
private bool CreateSalesOrderRecords(int nCustomerId, string[] szDetailsIds, string tradeId, ref int nSalesOrderIdHlp, ref string szError) { bool bStatus = false; int nQuoteid = 0; int nItemPos = 1; int nSalesOrderId = 0; int nQuoteDetailsId = 0; int nSubItemid = 0; int nPos = -1; int nTradeid = 0; int nSalesOrderNo = 0; double dOnHand = 0; double dQtyQuote = 0; double dReqQty = 0; double dShipQty = 0; double dPOQty = 0; double dUnitPrice = 0; double dTaxRate = 0; string szDetailsId = ""; string szDescription = ""; string szSalesOrderIdHlp = ""; string szItemIdHlp = ""; List<String> quotedetailsList = null; IQueryable<SUB_ITEM> qySubItem = null; SUB_ITEM subitem = null; UserQuotation quotation = null; UserQuotationDetail quotationdetail = null; SalesOrderDetail salesorderdetail = null; InitialInfo initialinfo = null; Trade trade = null; SetupChargeDetail setupcharge = null; try { if (string.IsNullOrEmpty(tradeId)) { trade = db.Trades.FirstOrDefault<Trade>(); if (trade != null) { nTradeid = trade.TradeId; } } else { nTradeid = Convert.ToInt32(tradeId); } //Get the sales order no initialinfo = db.InitialInfoes.FirstOrDefault<InitialInfo>(); if (initialinfo == null) { initialinfo = new InitialInfo(); initialinfo.InvoiceNo = 0; initialinfo.PaymentNo = 0; initialinfo.PurchaseOrderNo = 0; initialinfo.SalesOrderNo = 1; nSalesOrderNo = 1; initialinfo.TaxRate = 0; db.InitialInfoes.Add(initialinfo); } else { nSalesOrderNo = initialinfo.SalesOrderNo; nSalesOrderNo++; initialinfo.SalesOrderNo = nSalesOrderNo; dTaxRate = initialinfo.TaxRate; db.Entry(initialinfo).State = EntityState.Modified; } quotedetailsList = szDetailsIds.ToList<string>(); SalesOrder salesorder = new SalesOrder(); salesorder.CustomerId = nCustomerId; salesorder.SODate = DateTime.Now; salesorder.IsBlindShip = false; salesorder.TradeId = nTradeid; salesorder.SalesOrderNo = nSalesOrderNo.ToString(); salesorder.Tax_rate = Convert.ToDouble(dTaxRate); salesorder.Invs_Tax = Convert.ToDouble(dTaxRate); db.SalesOrders.Add(salesorder); db.SaveChanges(); nSalesOrderIdHlp = salesorder.SalesOrderId; nSalesOrderId = salesorder.SalesOrderId; // // Con szDetailsIds leer UserQuotationDetails, luego leer el inventario para establecer las cantidades disponible y // luego crear el detalle de la Sales Order, lee el inventario e incluye setup charge y runcharge foreach (var item in quotedetailsList) { nPos = -1; nPos = item.IndexOf("chk_"); if (nPos != -1) { szDetailsId = item.Replace("chk_", ""); nQuoteDetailsId = Convert.ToInt16(szDetailsId); quotationdetail = db.UserQuotationDetails.Find(nQuoteDetailsId); if (quotationdetail != null) { if (quotationdetail.Status == 0) { if (nQuoteid == 0) { nQuoteid = Convert.ToInt32(quotationdetail.DetailId); } dQtyQuote = Convert.ToDouble(quotationdetail.Quantity) - Convert.ToDouble(quotationdetail.ShippedQuantity); dReqQty = Convert.ToDouble(quotationdetail.Quantity); dShipQty = 0; dPOQty = 0; quotation = db.UserQuotations.Find(quotationdetail.DetailId); if (quotation != null) { subitem = db.SUB_ITEM.Where(sbit => sbit.ItemID == quotation.ProductId && sbit.Description == quotationdetail.ProductType).FirstOrDefault<SUB_ITEM>(); } else { nSubItemid = Convert.ToInt32(quotationdetail.ItemID); subitem = db.SUB_ITEM.Find(nSubItemid); } if (subitem != null) { szDescription = subitem.Description; //Get OnHand inventory dOnHand = Convert.ToDouble(subitem.OnHand_Db) - Convert.ToDouble(subitem.OnHand_Cr); if (dQtyQuote >= dOnHand) { if (dOnHand == 0) { dPOQty = dQtyQuote; } else { dPOQty = dQtyQuote - dOnHand; dShipQty = dOnHand; } } else { } //Create sales order detail salesorderdetail = new SalesOrderDetail(); salesorderdetail.SalesOrderId = nSalesOrderId; salesorderdetail.ItemID = subitem.ItemID; salesorderdetail.Sub_ItemID = subitem.Sub_ItemID; salesorderdetail.Description = szDescription; salesorderdetail.Quantity = dReqQty; salesorderdetail.ShipQuantity = dShipQty; salesorderdetail.BackOrderQuantity = dPOQty; salesorderdetail.Tax = 0; salesorderdetail.UnitPrice = quotationdetail.Amount; salesorderdetail.ItemPosition = nItemPos; salesorderdetail.ItemOrder = 0; salesorderdetail.Tax = Convert.ToDouble(dTaxRate); db.SalesOrderDetails.Add(salesorderdetail); db.SaveChanges(); nItemPos++; szSalesOrderIdHlp = salesorderdetail.SalesOrderId.ToString(); szItemIdHlp = salesorderdetail.ItemID; //Create setup charge setupcharge = db.SetupChargeDetails.Where(stup => stup.itemid == subitem.ItemID).FirstOrDefault<SetupChargeDetail>(); if (setupcharge != null) { salesorderdetail = new SalesOrderDetail(); salesorderdetail.SalesOrderId = nSalesOrderId; salesorderdetail.ItemID = string.Empty; salesorderdetail.Sub_ItemID = string.Empty; salesorderdetail.Description = string.Format("Set up Charge {0} {1}", szSalesOrderIdHlp, szItemIdHlp); salesorderdetail.Quantity = dReqQty; salesorderdetail.ShipQuantity = 0; salesorderdetail.BackOrderQuantity = 0; salesorderdetail.Tax = 0; salesorderdetail.UnitPrice = setupcharge.SetUpCharge; salesorderdetail.ItemPosition = 0; salesorderdetail.ItemOrder = 0; salesorderdetail.Tax = Convert.ToDouble(dTaxRate); db.SalesOrderDetails.Add(salesorderdetail); //Create run charge salesorderdetail = new SalesOrderDetail(); salesorderdetail.SalesOrderId = nSalesOrderId; salesorderdetail.ItemID = string.Empty; salesorderdetail.Sub_ItemID = string.Empty; salesorderdetail.Description = string.Format("Run Charge {0} {1}", szSalesOrderIdHlp, szItemIdHlp); salesorderdetail.Quantity = dReqQty; salesorderdetail.ShipQuantity = 0; salesorderdetail.BackOrderQuantity = 0; salesorderdetail.Tax = 0; salesorderdetail.UnitPrice = setupcharge.RunCharge; salesorderdetail.ItemPosition = 0; salesorderdetail.ItemOrder = 0; salesorderdetail.Tax = Convert.ToDouble(dTaxRate); db.SalesOrderDetails.Add(salesorderdetail); } //Update Quote Details quotationdetail.ShippedQuantity = dShipQty; quotationdetail.BOQuantity = dPOQty; if (dShipQty >= Convert.ToDouble(quotationdetail.Quantity)) { quotationdetail.Status = 1; } else { quotationdetail.Status = 1; } } else { //szDescription = quotationdetail.ProductType; ////Create sales order detail //salesorderdetail = new SalesOrderDetail(); //salesorderdetail.SalesOrderId = nSalesOrderId; //salesorderdetail.Description = szDescription; //salesorderdetail.Quantity = dReqQty; ////salesorderdetail.ShipQuantity = dShipQty; ////salesorderdetail.BackOrderQuantity = dPOQty; //salesorderdetail.Tax = 0; //salesorderdetail.UnitPrice = quotationdetail.Amount; //salesorderdetail.ItemPosition = nItemPos; //salesorderdetail.ItemOrder = 0; //db.SalesOrderDetails.Add(salesorderdetail); //nItemPos++; //quotationdetail.Status = 1; } //Update Sub Item Inventory } } } } //Update the sales order record with the quoteid if (nQuoteid != 0) { SalesOrder salesorderHlp = db.SalesOrders.Find(nSalesOrderId); if (salesorderHlp != null) { salesorderHlp.QuoteId = nQuoteid; db.Entry(salesorderHlp).State = EntityState.Modified; } } //Save all changes db.SaveChanges(); bStatus = true; } catch (Exception err) { szError = err.Message; } return bStatus; }
public ActionResult AddSalesOrderDetails(string itemOrder, int id = 0, int salesorderId = 0, int itemPos = 0) { int nitemPosNext = 0; int nItemPos = 0; int nCurrentItemPos = 0; int nNextItemPos = 0; int nSalesOrderId = 0; double nItemOrder = 0; double dItemOrder = 0; double dCurrentItemOrder = 0; double dNextItemOrder = 0; double dQty = 0; decimal dPrice = 0; string szCurentItemId = ""; string szNextItemId = ""; string szSalesOrderIdHlp = ""; string szItemId = ""; SalesOrderDetail salesdetail = null; SalesOrderDetail salesdetailcurrent = null; SalesOrderDetail salesdetailnext = null; SalesOrderDetail salesorderdetail = null; SetupChargeDetail setupcharge = null; IQueryable<PRICE> qryPrice = null; TimelyDepotContext db01 = new TimelyDepotContext(); SUB_ITEM subitem = db.SUB_ITEM.Find(id); if (subitem != null) { if (!string.IsNullOrEmpty(itemOrder)) { //itemOrder = itemOrder.Replace(".", ","); nItemOrder = Convert.ToDouble(itemOrder); } //Get the current salesorderdetail salesdetailcurrent = db.SalesOrderDetails.Where(sldt => sldt.SalesOrderId == salesorderId && sldt.ItemPosition == itemPos && sldt.ItemOrder == nItemOrder).FirstOrDefault<SalesOrderDetail>(); if (salesdetailcurrent != null) { nCurrentItemPos = Convert.ToInt32(salesdetailcurrent.ItemPosition); dCurrentItemOrder = Convert.ToDouble(salesdetailcurrent.ItemOrder); szCurentItemId = salesdetailcurrent.ItemID; } //Get the next salesorderdetail salesdetailnext = db.SalesOrderDetails.Where(sldt => sldt.SalesOrderId == salesorderId && sldt.ItemPosition == nCurrentItemPos && sldt.ItemOrder > dCurrentItemOrder).OrderBy(sldt => sldt.ItemOrder).FirstOrDefault<SalesOrderDetail>(); if (salesdetailnext != null) { nNextItemPos = Convert.ToInt32(salesdetailnext.ItemPosition); szNextItemId = salesdetailnext.ItemID; dNextItemOrder = Convert.ToDouble(salesdetailnext.ItemOrder); } if (subitem.ItemID == szNextItemId) { nItemPos = nCurrentItemPos; dItemOrder = (dCurrentItemOrder + dNextItemOrder) / 2; } else { nItemPos = nCurrentItemPos; dItemOrder = dCurrentItemOrder + 1; } // // Set the price and qty search to the lowest price for this item double dDiscountPrc = 0; qryPrice = db.PRICEs.Where(prc => prc.Item == subitem.ItemID).OrderBy(prc => prc.Qty); if (qryPrice.Count() > 0) { foreach (var item in qryPrice) { dQty = item.Qty; dPrice = item.thePrice; dDiscountPrc = TimelyDepotMVC.Controllers.InventoryController.GetDiscount(db01, item.Discount_Code); break; } } salesdetail = new SalesOrderDetail(); salesdetail.SalesOrderId = salesorderId; salesdetail.ItemID = subitem.ItemID; salesdetail.Sub_ItemID = subitem.Sub_ItemID; salesdetail.BackOrderQuantity = 0; salesdetail.Description = subitem.Description; salesdetail.Quantity = dQty; salesdetail.ShipQuantity = 0; salesdetail.Tax = 0; salesdetail.UnitPrice = dPrice * (1 - Convert.ToDecimal(dDiscountPrc)); salesdetail.ItemPosition = nItemPos; salesdetail.ItemOrder = dItemOrder; db.SalesOrderDetails.Add(salesdetail); db.SaveChanges(); szSalesOrderIdHlp = salesdetail.SalesOrderId.ToString(); nSalesOrderId = Convert.ToInt32(szSalesOrderIdHlp); szItemId = salesdetail.ItemID; //Create setup charge setupcharge = db.SetupChargeDetails.Where(stup => stup.itemid == subitem.ItemID).FirstOrDefault<SetupChargeDetail>(); if (setupcharge != null) { // Setup charge double dDiscount = TimelyDepotMVC.Controllers.InventoryController.GetDiscount(db, setupcharge.SetupChargeDiscountCode); salesorderdetail = new SalesOrderDetail(); salesorderdetail.SalesOrderId = nSalesOrderId; salesorderdetail.ItemID = string.Empty; salesorderdetail.Sub_ItemID = string.Empty; salesorderdetail.Description = string.Format("Set up Charge {0} {1}", szSalesOrderIdHlp, szItemId); salesorderdetail.Quantity = 0; salesorderdetail.ShipQuantity = 0; salesorderdetail.BackOrderQuantity = 0; salesorderdetail.Tax = 0; salesorderdetail.UnitPrice = setupcharge.SetUpCharge * (1 - Convert.ToDecimal(dDiscount)); salesorderdetail.ItemPosition = 0; salesorderdetail.ItemOrder = 0; salesorderdetail.Tax = 0; db.SalesOrderDetails.Add(salesorderdetail); //Create run charge dDiscount = TimelyDepotMVC.Controllers.InventoryController.GetDiscount(db, setupcharge.RunChargeDiscountCode); salesorderdetail = new SalesOrderDetail(); salesorderdetail.SalesOrderId = nSalesOrderId; salesorderdetail.ItemID = string.Empty; salesorderdetail.Sub_ItemID = string.Empty; salesorderdetail.Description = string.Format("Run Charge {0} {1}", szSalesOrderIdHlp, szItemId); salesorderdetail.Quantity = 0; salesorderdetail.ShipQuantity = 0; salesorderdetail.BackOrderQuantity = 0; salesorderdetail.Tax = 0; salesorderdetail.UnitPrice = setupcharge.RunCharge * (1 - Convert.ToDecimal(dDiscount)); salesorderdetail.ItemPosition = 0; salesorderdetail.ItemOrder = 0; salesorderdetail.Tax = 0; db.SalesOrderDetails.Add(salesorderdetail); db.SaveChanges(); } } return RedirectToAction("Edit", new { id = salesorderId }); }
// // POST: /SalesOrder/UpdateSalesOrderDetail public ActionResult UpdateSalesOrderDetail(SalesOrderDetail salesorderdetail) { if (ModelState.IsValid) { db.Entry(salesorderdetail).State = EntityState.Modified; db.SaveChanges(); } return RedirectToAction("Edit", new { id = salesorderdetail.SalesOrderId }); }
// // GET: /SalesOrder/InsertItem public ActionResult InsertItem(string salesorderid, string itemOrder, int itemPos = 0) { double nItemOrder = 0; int nitemPosNext = 0; int nItemPos = 0; int nCurrentItemPos = 0; int nNextItemPos = 0; double dItemOrder = 0; double dCurrentItemOrder = 0; double dNextItemOrder = 0; string szCurentItemId = ""; string szNextItemId = ""; SalesOrderDetail salesdetailcurrent = null; SalesOrderDetail salesdetailnext = null; int nSalesOrderId = Convert.ToInt32(salesorderid); if (!string.IsNullOrEmpty(itemOrder)) { //itemOrder = itemOrder.Replace(".", ","); nItemOrder = Convert.ToDouble(itemOrder); } //Get the current salesorderdetail salesdetailcurrent = db.SalesOrderDetails.Where(sldt => sldt.SalesOrderId == nSalesOrderId && sldt.ItemPosition == itemPos && sldt.ItemOrder == nItemOrder).FirstOrDefault<SalesOrderDetail>(); if (salesdetailcurrent != null) { nCurrentItemPos = Convert.ToInt32(salesdetailcurrent.ItemPosition); dCurrentItemOrder = Convert.ToDouble(salesdetailcurrent.ItemOrder); szCurentItemId = salesdetailcurrent.ItemID; } //Get the next salesorderdetail salesdetailnext = db.SalesOrderDetails.Where(sldt => sldt.SalesOrderId == nSalesOrderId && sldt.ItemPosition == nCurrentItemPos && sldt.ItemOrder > dCurrentItemOrder).OrderBy(sldt => sldt.ItemOrder).FirstOrDefault<SalesOrderDetail>(); if (salesdetailnext != null) { nNextItemPos = Convert.ToInt32(salesdetailnext.ItemPosition); szNextItemId = salesdetailnext.ItemID; dNextItemOrder = Convert.ToDouble(salesdetailnext.ItemOrder); nItemPos = nCurrentItemPos; dItemOrder = (dCurrentItemOrder + dNextItemOrder) / 2; } else { nItemPos = nCurrentItemPos; dItemOrder = dCurrentItemOrder + 1; } //if (subitem.ItemID == szNextItemId) //{ // nItemPos = nCurrentItemPos; // dItemOrder = (dCurrentItemOrder + dNextItemOrder) / 2; //} //else //{ // nItemPos = nCurrentItemPos; // dItemOrder = dCurrentItemOrder + 1; //} SalesOrderDetail salesdetail = null; salesdetail = new SalesOrderDetail(); salesdetail.SalesOrderId = nSalesOrderId; salesdetail.ItemID = string.Empty; salesdetail.Sub_ItemID = string.Empty; salesdetail.BackOrderQuantity = 0; salesdetail.Description = string.Empty; salesdetail.Quantity = 0; salesdetail.ShipQuantity = 0; salesdetail.Tax = 0; salesdetail.UnitPrice = 0; salesdetail.ItemPosition = nItemPos; salesdetail.ItemOrder = dItemOrder; db.SalesOrderDetails.Add(salesdetail); db.SaveChanges(); return RedirectToAction("Edit", new { id = nSalesOrderId }); }
public ActionResult Edit(SalesOrderDetail salesorderdetail) { if (ModelState.IsValid) { db.Entry(salesorderdetail).State = EntityState.Modified; db.SaveChanges(); return RedirectToAction("Index"); } return View(salesorderdetail); }