public RedirectToRouteResult SaveEdit(string[] arrQty, string taData) { Session["poDetailsEditMode"] = false; List <POFullDetail> poFullDetailList = (List <POFullDetail>)Session["POItems"]; string poNumber = (string)Session["poNumber"]; int arrayCount = 0; using (SSISdbEntities m = new SSISdbEntities()) { foreach (POFullDetail p in poFullDetailList) { PODetail pod = m.PODetails.Where(x => x.ItemCode == p.ItemCode && x.PONumber == p.PONumber).FirstOrDefault(); pod.QuantityBackOrdered = Convert.ToInt32(arrQty[arrayCount]); pod.QuantityOrdered = pod.QuantityBackOrdered; m.SaveChanges(); arrayCount++; p.QuantityOrdered = pod.QuantityBackOrdered; } if (taData != null) { POHeader ph = m.POHeaders.Where(x => x.PONumber == poNumber).FirstOrDefault(); ph.Remarks = taData; m.SaveChanges(); Session["PORemarks"] = taData; } } Session["POItems"] = poFullDetailList; Session["POListPage"] = "2"; return(RedirectToAction("Purchase", "Store")); }
public static PurchaseOrder UpdatePO(Dictionary <string, string> keyvalues) { try { string PONumber = keyvalues["ponumber"]; PurchaseOrder PO = GetPO(PONumber); PO.Lead = UserManager.GetUserRef(keyvalues["Lead"]); PO.PODate = keyvalues.ContainsKey("PODate") ? DateTime.Parse(keyvalues["PODate"]) : DateTime.Now; PO.Origin = Common.GetOrigin(keyvalues["Origin"]); PO.Size = Common.GetSize(keyvalues["Size"]); PO.Vessel = Common.GetVessel(keyvalues["Vessel"]); PO.TargetDays = keyvalues.ContainsKey("TargetDays") ? int.Parse(keyvalues["TargetDays"]) : 0; PO.Supplier = Common.GetSupplier(keyvalues["Supplier"]); PO.TermsOfPayment = keyvalues["PaymentTerms"]; PO.BufferQuantityMin = keyvalues.ContainsKey("BufferMin") ? decimal.Parse(keyvalues["BufferMin"]) : 10; PO.BufferQuantityMax = keyvalues.ContainsKey("BufferMax") ? decimal.Parse(keyvalues["BufferMax"]) : 10; List <PODetail> updatedPOD = new List <PODetail>(); for (int i = 1; i <= 10; i++) { if (keyvalues.ContainsKey("Customer_" + i.ToString())) { if (keyvalues["Customer_" + i.ToString()] != "0") { PODetail pod = null; if (keyvalues.ContainsKey("PODetailId_" + i.ToString()) && keyvalues["PODetailId_" + i.ToString()] != "") { foreach (PODetail pd in PO.PODetailsList) { if (pd.Id == new Guid(keyvalues["PODetailId_" + i.ToString()])) { pod = pd; } } } if (pod == null) { pod = NewPODetail(PO); } pod.Customer = CustomerManager.GetCustomerRef(keyvalues["Customer_" + i.ToString()]); pod.Quantity = keyvalues.ContainsKey("Quantity_" + i.ToString()) ? decimal.Parse(keyvalues["Quantity_" + i.ToString()]) : 0; pod.Rate = keyvalues.ContainsKey("Rate_" + i.ToString()) ? decimal.Parse(keyvalues["Rate_" + i.ToString()]) : 0; pod.AllowedWaistage = keyvalues.ContainsKey("AllowedWastage_" + i.ToString()) ? decimal.Parse(keyvalues["AllowedWastage_" + i.ToString()]) : 0; pod.CostPerTon = keyvalues.ContainsKey("CostPerTon_" + i.ToString()) ? decimal.Parse(keyvalues["CostPerTon_" + i.ToString()]) : 0; pod.TargetDate = keyvalues.ContainsKey("TargetDate_" + i.ToString()) ? DateTime.Parse(keyvalues["TargetDate_" + i.ToString()]) : DateTime.MaxValue; updatedPOD.Add(pod); } } } PO.PODetailsList = updatedPOD; PO.ModifiedOn = DateTime.Now; PO.ModifiedBy = UserManager.GetUserRef(Common.CurrentUser.Id.ToString()); SavePO(PO); return(PO); } catch (Exception ex) { ExceptionHandler.Error("Something went wrong. Details: " + ex.Message, ex); } return(null); }
public static void Main(String[] args) { TestPODetailsDAO testDAO = new TestPODetailsDAO(); Console.WriteLine("\nListing all PODetails"); foreach (PODetail pod in testDAO.ListAllPODetails()) { Console.WriteLine(testDAO.PODToString(pod)); } Console.WriteLine("\nListing all PODetails by ItemCode"); foreach (PODetail pod in testDAO.ListPODetailsByItemCode("C001")) { Console.WriteLine(testDAO.PODToString(pod)); } Console.WriteLine("\nListing all PODetails by PODetails"); foreach (PODetail pod in testDAO.ListPODetailsByPOCode("ALPA180116234406038")) { Console.WriteLine(testDAO.PODToString(pod)); } Console.WriteLine("\nGet PODetail"); Console.WriteLine(testDAO.PODToString(testDAO.GetPODetail("ALPA180116234406038", "C001"))); Console.WriteLine("\nUpdate PODetail"); PODetail poDetail = testDAO.GetPODetail("ALPA180116234406038", "C001"); poDetail.Quantity = 999; testDAO.UpdatePODetail(poDetail); Console.WriteLine(testDAO.PODToString(testDAO.GetPODetail("ALPA180116234406038", "C001"))); }
public int UpdatePODetail(PODetail poDetail) { using (EntityModel em = new EntityModel()) { em.Entry(poDetail).State = EntityState.Modified; return(em.SaveChanges()); } }
public List <PurchaseOrder> CreatePurchaseOrders(List <PurchaseItem> purchaseItems, string username) { int rows = 0; var purchaseOrders = new List <PurchaseOrder>(); foreach (PurchaseItem pi in purchaseItems) { bool hasPurchaseOrder = false; PurchaseOrder purchaseOrder = new PurchaseOrder(); DateTime now = DateTime.Now; foreach (PurchaseOrder po in purchaseOrders) { if (pi.SupplierCode == po.SupplierCode) { hasPurchaseOrder = true; purchaseOrder = po; break; } } if (!hasPurchaseOrder) { var po = new PurchaseOrder(); po.DateCreated = now; po.PurchaseOrderCode = pi.SupplierCode + now.ToString("yyMMddHHmmssfff"); //po.Notes = txtNotes.Value; po.Status = "PENDING"; po.SupplierCode = pi.SupplierCode; po.UserName = username; purchaseOrder = po; purchaseOrders.Add(po); } var pod = new PODetail(); pod.ItemCode = pi.Stationery.ItemCode; pod.Price = GetSupplierItemPrice(pi.SupplierCode, pi.Stationery.ItemCode); pod.Quantity = pi.OrderQuantity; pod.PurchaseOrderCode = purchaseOrder.PurchaseOrderCode; pod.Notes = pi.Notes; purchaseOrder.PODetails.Add(pod); } foreach (PurchaseOrder po in purchaseOrders) { try { purchaseOrderDAO.AddPurchaseOrder(po); rows++; } catch (Exception ex) { throw ex; } } return(purchaseOrders); }
public void Should_Success_Instantiate() { PODetail pODetail = new PODetail() { PONo = "PONo", Price = 1 }; Assert.Equal("PONo", pODetail.PONo); Assert.Equal(1, pODetail.Price); }
public string POSave([FromBody] PurchaseOrderItemDTO input) { var newPo = new PO(); newPo.OrderDate = input.OrderDate; newPo.POStatus = POStatus.Processing; var supplier = _context.Suppliers.FirstOrDefault(s => s.Id == input.supplierID); newPo.Supplier = supplier; _context.Add(newPo); foreach (PODetailsDTO pd in input.poDetailsList) { PODetail poD = new PODetail(); poD.SupplierDetail = _context.SupplierDetails.FirstOrDefault(s => s.Id == pd.supplierDetailId); poD.PO = newPo; _context.Add(poD); } _context.SaveChanges(); //sending mail String items = ""; foreach (PODetailsDTO p in input.poDetailsList) { PODetail poD = new PODetail(); poD.SupplierDetail = _context.SupplierDetails.FirstOrDefault(s => s.Id == p.supplierDetailId); poD.PO = newPo; items += poD.SupplierDetail.Stationery.Description.ToString() + ": " + p.Qty + " \n"; } int poId = _context.SupplierDetails.OrderByDescending(p => p.Id).First().Id; MailAddress FromEmail = new MailAddress("*****@*****.**", "Store"); MailAddress ToEmail = new MailAddress("*****@*****.**", "Supplier"); string Subject = "Purchase Order"; string MessageBody = "Title: PO Number " + poId + "\n\n" + "You have orders from Store. The items list are:\n\n" + items + "\n\n" + "Regards,\n Store Clerk"; EmailService.SendEmail(FromEmail, ToEmail, Subject, MessageBody); //(Mail fromMail, Mail toMail, String acknowledgementCode, String flag) //Json Response var response = new ResponseDTO(); response.Message = "Create Successfully"; return(JsonSerializer.Serialize(new { result = response })); }
public ActionResult Adddetail(string ma_phieu_header, List <PODetail> details) { using (var dbConn = Helpers.OrmliteConnection.openConn()) { try { if (accessDetail.sua) { foreach (var item in details) { PODetail newdata = new PODetail(); newdata.ma_phieu_header = ma_phieu_header; newdata.ma_san_pham = item.ma_san_pham; newdata.so_luong = item.so_luong; newdata.thong_so_ky_thuat = item.thong_so_ky_thuat; newdata.muc_dich_su_dung = ""; newdata.nguoi_tao = currentUser.ma_nguoi_dung; newdata.ma_to_trinh = item.ma_to_trinh; newdata.id_StatementDetail = item.id_StatementDetail; newdata.don_gia_vat = item.don_gia_vat; newdata.don_gia = item.don_gia; newdata.thue_vat = item.thue_vat; newdata.don_vi_tinh = item.don_vi_tinh; newdata.chi_phi = item.chi_phi; newdata.ma_don_vi = item.ma_don_vi; newdata.ma_chi_nhanh = item.ma_chi_nhanh; newdata.thong_tin_noi_bo = item.thong_tin_noi_bo; newdata.ngay_tao = DateTime.Now; newdata.ngay_cap_nhat = DateTime.Parse("1900-01-01"); newdata.nguoi_cap_nhat = ""; newdata.trang_thai = ""; dbConn.Insert <PODetail>(newdata); StatementDetail detail = dbConn.FirstOrDefault <StatementDetail>(s => s.id == item.id_StatementDetail); detail.ma_don_dat_hang = ma_phieu_header; dbConn.Update(detail); } } else { return(Json(new { success = false, error = "Bạn không có quyền sửa dữ liệu" })); } return(Json(new { success = true, ma_phieu_header = ma_phieu_header })); } catch (Exception ex) { return(Json(new { success = false, error = ex.Message })); } } }
public void SaveDetail() { PurchaseOrderDetail pod = PODetails.Where(x => x.ProductId == PODetail.ProductId).FirstOrDefault(); if (pod == null) { pod = new PurchaseOrderDetail(); PODetails.Add(pod); } else { PODetail.Quantity += pod.Quantity; } PODetail.toCopy <PurchaseOrderDetail>(pod); ClearDetail(); ItemAmount = PODetails.Sum(x => x.Amount); }
protected void listDetails_ItemUpdating(object sender, ListViewUpdateEventArgs e) { Validate(); if (!Page.IsValid) { return; } PODetail poDetail = poDetails[e.ItemIndex]; poDetail.Quantity = Convert.ToInt32(e.NewValues["Quantity"]); poDetail.Notes = Convert.ToString(e.NewValues["Notes"]); scController.UpdatePODetail(poDetail); //scController.FinishEditingPurchaseOrder(po); listDetails.EditIndex = -1; BindData(); }
public static Dictionary <string, object> reMapPODetailData(PODetail PODetail) { Dictionary <string, object> keyValues = new Dictionary <string, object>(); if (PODetail.Id != Guid.Empty) { keyValues.Add("@id", PODetail.Id); } keyValues.Add("@POId", PODetail.PO == null ? Guid.Empty : PODetail.PO.Id); keyValues.Add("@CustomerId", PODetail.Customer == null ? Guid.Empty : PODetail.Customer.Id); keyValues.Add("@Quantity", PODetail.Quantity); keyValues.Add("@Rate", PODetail.Rate); keyValues.Add("@CostPerTon", PODetail.CostPerTon); keyValues.Add("@AllowedWastage", PODetail.AllowedWaistage); keyValues.Add("@TargetDate", PODetail.TargetDate); keyValues.Add("@Remarks", PODetail.Remarks); return(keyValues); }
public DBPOCollection() { _currentpoentitiyItem = new POEntity(); _poentityItems = new List <POEntity>(); _currentpoentityviewItem = new POEntity_View(); _poentityviewItems = new List <POEntity_View>(); _currentpodetailviewItem = new PODetail_View(); _podetailviewItems = new List <PODetail_View>(); _currentpodetailItem = new PODetail(); _podetailItems = new List <PODetail>(); _currentaccountItem = new Account(); _accountItems = new List <Account>(); _currentdepartmentItem = new Department(); _departmentItems = new List <Department>(); _currentpartsmasterItem = new PartsMaster(); _partsmasterItems = new List <PartsMaster>(); _currentmasterItem = new OrgMaster(); _masterItemsList = new List <OrgMaster>(); }
private static PODetail NewPODetail(PurchaseOrder PO) { PODetail pod = new PODetail(); pod.Id = Guid.Empty; pod.PO = new Reference() { Id = PO.Id, Name = PO.PONumber }; pod.Customer = new Reference() { Id = Guid.Empty, Name = "" }; pod.Quantity = 0; pod.Rate = 0; pod.CostPerTon = 0; pod.AllowedWaistage = 0; pod.TargetDate = DateTime.MaxValue; pod.Remarks = ""; pod.GRNsList = new List <GRN>(); pod.DutyClearsList = new List <DutyClear>(); return(pod); }
public PODetailModel Create(PODetail pODetail) { if (pODetail == null) { return(null); } return(new PODetailModel() { Company = pODetail.Company, PONum = pODetail.PONum, POLine = pODetail.POLine, PartNum = pODetail.PartNum, PartDesc = pODetail.PartDesc, TrackLot = pODetail.TrackLot, XOrdQty = pODetail.XOrdQty, IUM = pODetail.IUM, OrdQty = pODetail.OrdQty, PUM = pODetail.PUM, PrevRcvQty = pODetail.PrevRcvQty, Qty = pODetail.Qty, TuConv = pODetail.TuConv, UomCode = pODetail.UomCode, WarehouseCode = pODetail.WarehouseCode, BinNum = pODetail.BinNum, JobNum = pODetail.JobNum, Assembly = pODetail.Assembly, Sequence = pODetail.Sequence, IsReceivedFull = pODetail.IsReceivedFull, ReceiveStatus = pODetail.ReceiveStatus, LotAttribute = Create(pODetail.LotAttribute), PrintTag = Create(pODetail.PrintTag), NumOfDecPUM = pODetail.NumOfDecPUM, NumOfDecIUM = pODetail.NumOfDecIUM, LotShelfLife = pODetail.LotShelfLife }); }
public Boolean SaveData() { try { if (gvPODetail.IsEditing) { gvPODetail.CloseEditor(); } if (gvPODetail.FocusedRowModified) { gvPODetail.UpdateCurrentRow(); } Cursor.Current = Cursors.WaitCursor; intPOHeaderID = Convert.ToInt16(txtPOHeaderID.Text); int intCustomerID; string strCustomerCode = lueCustomer.EditValue.ToString(); string strPOType = lueSearchPOType.EditValue.ToString(); string strPONumber = txtPONumber.Text.Trim(); if (string.IsNullOrEmpty(strPONumber)) { XtraMessageBox.Show("Please, input P/O Number first.", "Warning!", MessageBoxButtons.OK, MessageBoxIcon.Warning); txtPONumber.Focus(); return(false); } DateTime dtOrderDate = Convert.ToDateTime(deOrderDate.EditValue.ToString()); //string strOrderDate = deOrderDate.EditValue.ToString(); //DateTime dtOrderDate; //if (DateTime.TryParseExact(strOrderDate, "M/d/yyyy", null, System.Globalization.DateTimeStyles.None, out dtOrderDate) == false) //{ // XtraMessageBox.Show("Order Date is not valid", "Warning!", MessageBoxButtons.OK, MessageBoxIcon.Warning); // deOrderDate.Focus(); // return false; //} Boolean blnStatus = Convert.ToBoolean(lueStatus.Properties.GetKeyValueByDisplayText(lueStatus.Text).ToString()); string strRemark = txtRemark.Text; using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required, new TransactionOptions { IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted })) { using (eSolutionDataContext db = new eSolutionDataContext()) { DateTime dtServerDate = Convert.ToDateTime(db.fn_ServerDateTime().ToString()); var qryPOHeader = (from poh in db.POHeaders from cst in db.Customers where cst.CustomerID == poh.CustomerID && cst.CustomerCode == strCustomerCode && poh.PONumber == strPONumber select poh).FirstOrDefault(); if (qryPOHeader == null) { // new add row var qryCount = (from poh in db.POHeaders from cst in db.Customers where cst.CustomerID == poh.CustomerID && cst.CustomerCode == strCustomerCode && poh.PONumber == strPONumber select poh).Count(); if (qryCount > 0) { MessageBox.Show("Already regist PO Number." + Environment.NewLine + "Please, check the PO Number!", "Warning!", MessageBoxButtons.OK, MessageBoxIcon.Warning); txtPONumber.Focus(); return(false); } POHeader poheader = new POHeader(); intCustomerID = (from obj in db.Customers where obj.CustomerCode == strCustomerCode select obj.CustomerID).FirstOrDefault(); poheader.CustomerID = intCustomerID; poheader.PONumber = strPONumber; poheader.POType = strPOType; poheader.OrderDate = dtOrderDate; poheader.Status = blnStatus; if (blnStatus == true) { poheader.ClosedDate = dtServerDate; } poheader.CreateDate = dtServerDate; poheader.CreateCompName = Environment.MachineName; poheader.ModifiedDate = dtServerDate; poheader.ModifiedCompName = Environment.MachineName; db.POHeaders.InsertOnSubmit(poheader); } else { intCustomerID = (from obj in db.Customers where obj.CustomerCode == strCustomerCode select obj.CustomerID).FirstOrDefault(); qryPOHeader.CustomerID = intCustomerID; qryPOHeader.POType = strPOType; qryPOHeader.PONumber = strPONumber; qryPOHeader.OrderDate = dtOrderDate; qryPOHeader.Status = blnStatus; qryPOHeader.Remark = strRemark; qryPOHeader.ModifiedCompName = Environment.MachineName; qryPOHeader.ModifiedDate = dtServerDate; } db.SubmitChanges(); intPOHeaderID = (from obj in db.POHeaders where obj.CustomerID == intCustomerID && obj.PONumber == strPONumber select obj.POHeaderID).FirstOrDefault(); // PO Detail delete for (int i = 0; i < gvPODetail.DataRowCount; i++) { int intPODetailID = Convert.ToInt16(gvPODetail.GetRowCellValue(i, "PODetailID").ToString()); int intPOLineNumber; try { intPOLineNumber = Convert.ToInt16(gvPODetail.GetRowCellValue(i, "POLineNumber").ToString()); } catch { intPOLineNumber = 1; } string strItemNumber = gvPODetail.GetRowCellValue(i, "ItemNumber").ToString(); var qryItem = (from itm in db.ItemMasters from itd in db.ItemByCustomers where itd.ItemID == itm.ItemID && itd.CustomerID == intCustomerID && itd.ItemNumber == strItemNumber && itd.ItemType.Contains("R") select new { ItemID = itm.ItemID, ItemCode = itm.ItemCode } ).FirstOrDefault(); int intItemID = qryItem.ItemID; string strItemCode = qryItem.ItemCode; DateTime?dtDueDate; try { dtDueDate = Convert.ToDateTime(gvPODetail.GetRowCellValue(i, "DueDate").ToString()); } catch { dtDueDate = null; } int intReceivingQty = Convert.ToInt16(gvPODetail.GetRowCellValue(i, "ReceiveQty").ToString()); //int intShipGoodQty = Convert.ToInt16(gvPODetail.GetRowCellValue(i, "ShipGoodQty").ToString()); //int intShipFunctionFailQty = Convert.ToInt16(gvPODetail.GetRowCellValue(i, "ShipFunctionFailQty").ToString()); //int intShipDIPQty = Convert.ToInt16(gvPODetail.GetRowCellValue(i, "ShipDIPQty").ToString()); string strStatus = gvPODetail.GetRowCellValue(i, "Status").ToString(); Boolean blnStatusDetail = Convert.ToBoolean(gvPODetail.GetRowCellValue(i, "Status").ToString()); var qryDetail = (from obj in db.PODetails where obj.PODetailID == intPODetailID select obj).FirstOrDefault(); if (qryDetail == null) { PODetail dtl = new PODetail(); dtl.POHeaderID = intPOHeaderID; dtl.POLineNumber = intPOLineNumber; dtl.PONumber = strPONumber; dtl.ItemID = intItemID; dtl.ItemCode = strItemCode; dtl.ItemNumber = strItemNumber; dtl.ReceiveQty = intReceivingQty; dtl.DueDate = dtDueDate; //dtl.ShipGoodQty = intShipGoodQty; //dtl.ShipDIPQty = intShipDIPQty; //dtl.ShipFunctionFailQty = intShipFunctionFailQty; //dtl.ShipDIPQty = intShipDIPQty; dtl.Status = blnStatusDetail; dtl.CreatedDate = dtServerDate; dtl.CreatedHostName = Environment.MachineName; db.PODetails.InsertOnSubmit(dtl); } else { if (!(qryDetail.POHeaderID == intPOHeaderID && qryDetail.POLineNumber == intPOLineNumber && qryDetail.PONumber == strPONumber && qryDetail.ItemID == intItemID && qryDetail.ItemCode == strItemCode && qryDetail.ItemNumber == strItemNumber && qryDetail.ReceiveQty == intReceivingQty //&& qryDetail.ShipGoodQty == intShipGoodQty //&& qryDetail.ShipFunctionFailQty == intShipFunctionFailQty //&& qryDetail.ShipDIPQty == intShipDIPQty && qryDetail.DueDate == dtDueDate && qryDetail.Status == blnStatusDetail)) { qryDetail.POHeaderID = intPOHeaderID; qryDetail.PONumber = strPONumber; qryDetail.POLineNumber = intPOLineNumber; qryDetail.ItemID = intItemID; qryDetail.ItemCode = strItemCode; qryDetail.ItemNumber = strItemNumber; qryDetail.ReceiveQty = intReceivingQty; qryDetail.DueDate = dtDueDate; //qryDetail.ShipGoodQty = intShipGoodQty; //qryDetail.ShipDIPQty = intShipDIPQty; //qryDetail.ShipFunctionFailQty = intShipFunctionFailQty; //qryDetail.ShipDIPQty = intShipDIPQty; qryDetail.Status = blnStatus; qryDetail.CreatedDate = dtServerDate; qryDetail.CreatedHostName = Environment.MachineName; } } db.SubmitChanges(); if (strEntryStatus == "A") { txtPOHeaderID.Text = intPOHeaderID.ToString(); strEntryStatus = "E"; } } } scope.Complete(); } MessageBox.Show("Completed Saved!", "Success!", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { MessageBox.Show("Exception Error!" + Environment.NewLine + ex.Message.ToString(), "Error!", MessageBoxButtons.OK, MessageBoxIcon.Error); } finally { SearchData(); Cursor.Current = Cursors.Default; } return(false); }
public static List <PurchaseOrder> MapPOData(DataTable DTpo, DataTable dTpod, DataTable dTgrn, DataTable dTdcl) { List <PurchaseOrder> AllPOs = new List <PurchaseOrder>(); foreach (DataRow DRpo in DTpo.Rows) { PurchaseOrder PO = new PurchaseOrder(); PO.Id = DRpo["Id"] != null ? new Guid(DRpo["Id"].ToString()) : Guid.Empty; PO.Status = DRpo["Status"] != null?MapPOStatus(DRpo["Status"].ToString()) : POStatus.Created; PO.CreatedOn = DRpo["CreatedOn"] != DBNull.Value ? DateTime.Parse(DRpo["CreatedOn"].ToString()) : DateTime.MinValue; PO.CreatedBy = DRpo["CreatedBy"] != null?UserManager.GetUserRef(DRpo["CreatedBy"].ToString()) : UserManager.GetDefaultRef(); PO.ModifiedOn = DRpo["ModifiedOn"] != DBNull.Value ? DateTime.Parse(DRpo["ModifiedOn"].ToString()) : DateTime.MinValue; PO.ModifiedBy = DRpo["ModifiedBy"] != null?UserManager.GetUserRef(DRpo["ModifiedBy"].ToString()) : UserManager.GetDefaultRef(); PO.CompletedOn = DRpo["CompletedOn"] != DBNull.Value ? DateTime.Parse(DRpo["CompletedOn"].ToString()) : DateTime.MinValue; PO.Lead = DRpo["LeadId"] != null?UserManager.GetUserRef(DRpo["LeadId"].ToString()) : UserManager.GetDefaultRef(); PO.ApprovedDate = DRpo["ApprovedDate"] != DBNull.Value ? DateTime.Parse(DRpo["ApprovedDate"].ToString()) : DateTime.MinValue; PO.ApprovedBy = DRpo["ApprovedBy"] != null?UserManager.GetUserRef(DRpo["LeadId"].ToString()) : UserManager.GetDefaultRef(); PO.PONumber = DRpo["PONumber"] != null ? DRpo["PONumber"].ToString() : ""; PO.PODate = DRpo["PODate"] != DBNull.Value ? DateTime.Parse(DRpo["PODate"].ToString()) : DateTime.MinValue; PO.Origin = DRpo["Origin"] != null?CommonDataManager.GetOrigin(DRpo["Origin"].ToString()) : CommonDataManager.GetDefaultRef(); PO.Size = DRpo["Size"] != null?CommonDataManager.GetSize(DRpo["Size"].ToString()) : CommonDataManager.GetDefaultRef(); PO.Vessel = DRpo["Vessel"] != null?CommonDataManager.GetVessel(DRpo["Vessel"].ToString()) : CommonDataManager.GetDefaultRef(); PO.TargetDays = DRpo["TargetDays"] != null?int.Parse(DRpo["TargetDays"].ToString()) : 0; PO.Supplier = DRpo["Supplier"] != null?CommonDataManager.GetSupplier(DRpo["Supplier"].ToString()) : CommonDataManager.GetDefaultRef(); PO.TermsOfPayment = DRpo["TermsOfPayment"] != null ? DRpo["TermsOfPayment"].ToString() : ""; PO.BufferQuantityMax = DRpo["BufferQuantityMax"] != null?decimal.Parse(DRpo["BufferQuantityMax"].ToString()) : 10; PO.BufferQuantityMin = DRpo["BufferQuantityMin"] != null?decimal.Parse(DRpo["BufferQuantityMin"].ToString()) : 10; PO.PODetailsList = new List <PODetail>(); foreach (DataRow DRpod in dTpod.Rows) { Guid poId = DRpod["POId"] != null ? new Guid(DRpod["POId"].ToString()) : Guid.Empty; if (poId != Guid.Empty && poId == PO.Id) { PODetail PODetail = new PODetail(); PODetail.Id = DRpod["Id"] != null ? new Guid(DRpod["Id"].ToString()) : Guid.Empty; PODetail.PO = new Reference() { Id = PO.Id, Name = PO.PONumber }; PODetail.Customer = DRpod["CustomerId"] != null?CustomerManager.GetCustomerRef(DRpod["CustomerId"].ToString()) : CustomerManager.GetDefaultRef(); PODetail.Quantity = DRpod["Quantity"] != null?decimal.Parse(DRpod["Quantity"].ToString()) : 0; PODetail.Rate = DRpod["Rate"] != null?decimal.Parse(DRpod["Rate"].ToString()) : 0; PODetail.CostPerTon = DRpod["CostPerTon"] != null?decimal.Parse(DRpod["CostPerTon"].ToString()) : 0; PODetail.AllowedWaistage = DRpod["AllowedWastage"] != null?decimal.Parse(DRpod["AllowedWastage"].ToString()) : 0; PODetail.TargetDate = DRpod["TargetDate"] != DBNull.Value ? DateTime.Parse(DRpod["TargetDate"].ToString()) : DateTime.MinValue; PODetail.Remarks = DRpod["Remarks"] != null ? DRpod["Remarks"].ToString() : ""; PODetail.GRNsList = new List <GRN>(); foreach (DataRow DRgrn in dTgrn.Rows) { Guid podId = DRgrn["PODetailId"] != null ? new Guid(DRgrn["PODetailId"].ToString()) : Guid.Empty; if (podId != Guid.Empty && podId == PODetail.Id) { GRN Grn = new GRN(); Grn.Id = DRgrn["Id"] != null ? new Guid(DRgrn["Id"].ToString()) : Guid.Empty; Grn.Status = DRgrn["Status"] != null?MapGRNStatus(DRgrn["Status"].ToString()) : GRNStatus.Recieved; Grn.CreatedOn = DRgrn["CreatedOn"] != DBNull.Value ? DateTime.Parse(DRgrn["CreatedOn"].ToString()) : DateTime.MinValue; Grn.CreatedBy = DRgrn["CreatedBy"] != null?UserManager.GetUserRef(DRgrn["CreatedBy"].ToString()) : UserManager.GetDefaultRef(); Grn.ModifiedOn = DRgrn["ModifiedOn"] != DBNull.Value ? DateTime.Parse(DRgrn["ModifiedOn"].ToString()) : DateTime.MinValue; Grn.ModifiedBy = DRgrn["ModifiedBy"] != null?UserManager.GetUserRef(DRgrn["ModifiedBy"].ToString()) : UserManager.GetDefaultRef(); Grn.CompletedOn = DRgrn["CompletedOn"] != DBNull.Value ? DateTime.Parse(DRgrn["CompletedOn"].ToString()) : DateTime.MinValue; Grn.GRNNumber = DRgrn["GRNNumber"] != null ? DRgrn["GRNNumber"].ToString() : ""; Grn.GRNDate = DRgrn["GRNDate"] != DBNull.Value ? DateTime.Parse(DRgrn["GRNDate"].ToString()) : DateTime.MinValue; Grn.PO = new Reference() { Id = PO.Id, Name = PO.PONumber }; Grn.PODetail = new Reference() { Id = PODetail.Id, Name = PO.PONumber }; Grn.Store = DRgrn["Store"] != null?StoreManager.GetStoreRef(DRgrn["Store"].ToString()) : StoreManager.GetDefaultRef(); Grn.InvoiceNo = DRgrn["InvoiceNo"] != null ? DRgrn["InvoiceNo"].ToString() : ""; Grn.AdjPrice = DRgrn["AdjPrice"] != null?decimal.Parse(DRgrn["AdjPrice"].ToString()) : 0; Grn.Quantity = DRgrn["Quantity"] != null?decimal.Parse(DRgrn["Quantity"].ToString()) : 0; Grn.Remarks = DRpod["Remarks"] != null ? DRpod["Remarks"].ToString() : ""; PODetail.GRNsList.Add(Grn); } } PODetail.DutyClearsList = new List <DutyClear>(); foreach (DataRow DRdcl in dTdcl.Rows) { Guid podId = DRdcl["PODetailId"] != null ? new Guid(DRdcl["PODetailId"].ToString()) : Guid.Empty; if (podId != Guid.Empty && podId == PODetail.Id) { DutyClear Dcl = new DutyClear(); Dcl.Id = DRdcl["Id"] != null ? new Guid(DRdcl["Id"].ToString()) : Guid.Empty; Dcl.CreatedOn = DRdcl["CreatedOn"] != DBNull.Value ? DateTime.Parse(DRdcl["CreatedOn"].ToString()) : DateTime.MinValue; Dcl.CreatedBy = DRdcl["CreatedBy"] != null?UserManager.GetUserRef(DRdcl["CreatedBy"].ToString()) : UserManager.GetDefaultRef(); Dcl.ModifiedOn = DRdcl["ModifiedOn"] != DBNull.Value ? DateTime.Parse(DRdcl["ModifiedOn"].ToString()) : DateTime.MinValue; Dcl.ModifiedBy = DRdcl["ModifiedBy"] != null?UserManager.GetUserRef(DRdcl["ModifiedBy"].ToString()) : UserManager.GetDefaultRef(); Dcl.DCLNumber = DRdcl["DCLNumber"] != null ? DRdcl["DCLNumber"].ToString() : ""; Dcl.DCLDate = DRdcl["DCLDate"] != DBNull.Value ? DateTime.Parse(DRdcl["DCLDate"].ToString()) : DateTime.MinValue; Dcl.PO = new Reference() { Id = PO.Id, Name = PO.PONumber }; Dcl.PODetail = new Reference() { Id = PODetail.Id, Name = PO.PONumber }; Dcl.Store = DRdcl["Store"] != null?StoreManager.GetStoreRef(DRdcl["Store"].ToString()) : StoreManager.GetDefaultRef(); Dcl.Quantity = DRdcl["Quantity"] != null?decimal.Parse(DRdcl["Quantity"].ToString()) : 0; Dcl.Remarks = DRpod["Remarks"] != null ? DRpod["Remarks"].ToString() : ""; PODetail.DutyClearsList.Add(Dcl); } } PO.PODetailsList.Add(PODetail); } } AllPOs.Add(PO); } return(AllPOs); }
public RedirectToRouteResult SavePO(string[] arrQty, string[] arrSupplier, string taData) { // To ensure no empty Entries try { int enteredQty = 0; if (arrQty.Count() > 0) { for (int i = 0; i < arrQty.Length; i++) { enteredQty += Convert.ToInt32(arrQty[i]); } } if (enteredQty > 0) { List <POFullDetail> poDetailsList = (List <POFullDetail>)Session["newPOList"]; List <Supplier> supplierList = new List <Supplier>(); List <Item> itemAdded = new List <Item>(); int arrayCount = 0; using (SSISdbEntities m = new SSISdbEntities()) { // Checking for number of suppliers to Iterate & later used for creating no. of PO for (int i = 0; i < arrSupplier.Length; i++) { string supCode = arrSupplier[i]; Supplier supplier = m.Suppliers.Where(x => x.SupplierCode == supCode).FirstOrDefault(); if (!supplierList.Contains(supplier)) { supplierList.Add(supplier); } } // Change Item Supplier in PODetails for retrieving in list and adding into database later foreach (POFullDetail p in poDetailsList) { string coy = arrSupplier[arrayCount]; Supplier sup = m.Suppliers.Where(x => x.SupplierCode == coy).FirstOrDefault(); p.CompanyName = sup.CompanyName; arrayCount++; } // Each Supplier iterates once such that only 1 PO is created for each of them foreach (Supplier s in supplierList) { // Create new PO based on supplier int count = m.POHeaders.Count() + 1; string poId = CommonLogic.SerialNo(count, "PO"); POHeader newPOHeader = new POHeader(); newPOHeader.PONumber = poId; newPOHeader.Date = DateTime.Now; newPOHeader.SupplierCode = s.SupplierCode; newPOHeader.ContactName = s.ContactName; newPOHeader.DeliverTo = "Logic University"; newPOHeader.EmployeeID = (string)Session["LoginEmployeeID"]; newPOHeader.Remarks = taData; newPOHeader.Status = "Open"; newPOHeader.TransactionType = "PO"; m.POHeaders.Add(newPOHeader); m.SaveChanges(); // Loop through PODetails to add items based on selected supplier suppliers foreach (POFullDetail pod in poDetailsList) { // Only add if the item is belonging to the supplier / PO string supCode = m.Suppliers.Where(x => x.CompanyName == pod.CompanyName).Select(x => x.SupplierCode).FirstOrDefault(); Supplier supplier = m.Suppliers.Where(x => x.SupplierCode == supCode).FirstOrDefault(); if (supplier == s) { // Only add if the item has not been added PODetail poDetailToAdd = new PODetail(); float itemUnitPrice = m.SupplierPriceLists.Where(x => x.SupplierCode == s.SupplierCode && x.ItemCode == pod.ItemCode).Select(y => y.UnitCost).FirstOrDefault(); poDetailToAdd.PONumber = poId; poDetailToAdd.ItemCode = pod.ItemCode; int qty = Convert.ToInt32(arrQty[poDetailsList.IndexOf(pod)]); poDetailToAdd.QuantityOrdered = qty; poDetailToAdd.QuantityBackOrdered = qty; poDetailToAdd.QuantityDelivered = 0; poDetailToAdd.UnitCost = itemUnitPrice; poDetailToAdd.CancelledBackOrdered = 0; m.PODetails.Add(poDetailToAdd); m.SaveChanges(); Item item = new Item(); item = m.Items.Where(x => x.ItemCode == pod.ItemCode && pod.CompanyName == supplier.CompanyName).FirstOrDefault(); itemAdded.Add(item); } } } } } } catch (FormatException fe) { Debug.WriteLine(fe.Message); }catch (Exception e) { Debug.WriteLine(e.Message); } //add to list meant for already added items List <String> tempList = (List <String>)Session["tempList"]; tempList.Clear(); Session["tempList"] = tempList; Session["newPOList"] = new List <POFullDetail>(); Session["POListPage"] = "1"; return(RedirectToAction("POList", "StorePurchase")); }
public ActionResult CreateUpdate(POHeader data, List <PODetail> details) { using (var dbConn = Helpers.OrmliteConnection.openConn()) { try { int id = 0; if (accessDetail.them) { string ma_phieu = ""; var loai = "PO"; //var ma_don_vi = currentUser.ma_don_vi; var yyMMdd = DateTime.Now.ToString("yyMMdd"); var existLast = dbConn.SingleOrDefault <POHeader>("SELECT TOP 1 * FROM POHeader ORDER BY id DESC"); var nextNo = 0; var yearNow = int.Parse(DateTime.Now.Year.ToString().Substring(2, 2)); if (existLast != null) { nextNo = int.Parse(existLast.ma_phieu.Substring(8, existLast.ma_phieu.Length - 8)) + 1; var yearOld = int.Parse(existLast.ma_phieu.Substring(2, 2)); if (yearOld == yearNow) { ma_phieu = loai + yyMMdd + String.Format("{0:00000}", nextNo); } else { ma_phieu = loai + yyMMdd + "00001"; } } else { ma_phieu = loai + yyMMdd + "00001"; } data.ma_phieu = ma_phieu; //data.ngay_tao_yeu_cau = !string.IsNullOrEmpty(Request["ngay_tao_yeu_cau"]) ? DateTime.Parse(DateTime.ParseExact(Request["ngay_tao_yeu_cau"], "dd/MM/yyyy", CultureInfo.InvariantCulture).ToString("yyyy-MM-dd")) : DateTime.Parse("1900-01-01"); //data.ngay_cap_thiet_bi = !string.IsNullOrEmpty(Request["ngay_cap_thiet_bi"]) ? DateTime.Parse(DateTime.ParseExact(Request["ngay_cap_thiet_bi"], "dd/MM/yyyy", CultureInfo.InvariantCulture).ToString("yyyy-MM-dd")) : DateTime.Parse("1900-01-01"); //data.ten_phieu = data.ma_phieu; data.ngay_tao = DateTime.Now; data.nguoi_tao = currentUser.ma_nguoi_dung; data.ngay_cap_nhat = DateTime.Parse("1900-01-01"); data.nguoi_cap_nhat = ""; data.trang_thai = "MOI"; dbConn.Insert(data); id = (int)dbConn.GetLastInsertId(); foreach (var item in details) { PODetail newdata = new PODetail(); newdata.ma_phieu_header = data.ma_phieu; newdata.ma_san_pham = item.ma_san_pham; newdata.so_luong = item.so_luong; newdata.thong_so_ky_thuat = item.thong_so_ky_thuat; newdata.muc_dich_su_dung = ""; newdata.nguoi_tao = currentUser.ma_nguoi_dung; newdata.ma_to_trinh = item.ma_to_trinh; newdata.id_StatementDetail = item.id_StatementDetail; newdata.don_gia_vat = item.don_gia_vat; newdata.don_gia = item.don_gia; newdata.thue_vat = item.thue_vat; newdata.don_vi_tinh = item.don_vi_tinh; newdata.chi_phi = item.chi_phi; newdata.ma_don_vi = item.ma_don_vi; newdata.ma_chi_nhanh = item.ma_chi_nhanh; newdata.thong_tin_noi_bo = item.thong_tin_noi_bo; newdata.ngay_tao = DateTime.Now; newdata.ngay_cap_nhat = DateTime.Parse("1900-01-01"); newdata.nguoi_cap_nhat = ""; newdata.trang_thai = ""; dbConn.Insert <PODetail>(newdata); StatementDetail detail = dbConn.FirstOrDefault <StatementDetail>(s => s.id == item.id_StatementDetail); detail.ma_don_dat_hang = ma_phieu; dbConn.Update(detail); } } else { return(Json(new { success = false, error = "Bạn không có quyền thêm dữ liệu" })); } return(Json(new { success = true, id = id })); } catch (Exception ex) { return(Json(new { success = false, error = ex.Message })); } } }
private string PODToString(PODetail pod) { return("POCode: " + pod.PurchaseOrderCode + ", ItemCode: " + pod.ItemCode + ", Quantity: " + pod.Quantity + ", Price: " + pod.Price + ", Notes: " + pod.Notes); }
public CustomList <PODetail> GetAllPODetail(Int64 POID) { return(PODetail.GetAllPODetail(POID)); }
public RedirectToRouteResult AddPOItem(PODetail item2) { Item itemToAdd = new Item(); bool existingItem = false; using (SSISdbEntities m = new SSISdbEntities()) { // Get Item to add into Datatable string itemCode = Request.Form["SelectItemChose"].ToString(); List <POFullDetail> poFullDetailsList = (List <POFullDetail>)Session["newPOList"]; POFullDetail pod = new POFullDetail(); POFullDetail existingPoD = new POFullDetail(); pod.PONumber = (string)Session["newPoId"]; // Checking if Item is already in list foreach (POFullDetail p in poFullDetailsList.ToList()) { // Iterate through whole list to check for itemcode if (p.ItemCode == itemCode) { // Combine 2 same items (Adding new qty to exisiting qty) existingItem = true; // Create new item so that we can remove old qty & add back new qty existingPoD = p; existingPoD.QuantityOrdered += item2.QuantityOrdered; poFullDetailsList.Remove(p); poFullDetailsList.Add(existingPoD); } } // Execute when item is not in the list if (existingItem == false) { // Creating the new item with these itemToAdd = m.Items.Where(x => x.ItemCode == itemCode).FirstOrDefault(); pod.ItemCode = itemToAdd.ItemCode; pod.QuantityOrdered = item2.QuantityOrdered; pod.Description = itemToAdd.Description; pod.UoM = itemToAdd.UoM; pod.CompanyName = itemToAdd.Supplier1; //default ddl at supplier 1's pod.UnitCost = itemToAdd.AvgUnitCost; pod.Supplier1Code = itemToAdd.Supplier1; pod.Supplier2Code = itemToAdd.Supplier2; pod.Supplier3Code = itemToAdd.Supplier3; pod.Supplier1UnitCost = m.SupplierPriceLists.Where(x => x.SupplierCode == itemToAdd.Supplier1 && x.ItemCode == itemToAdd.ItemCode).Select(x => x.UnitCost).FirstOrDefault(); pod.Supplier2UnitCost = m.SupplierPriceLists.Where(x => x.SupplierCode == itemToAdd.Supplier2 && x.ItemCode == itemToAdd.ItemCode).Select(x => x.UnitCost).FirstOrDefault(); pod.Supplier3UnitCost = m.SupplierPriceLists.Where(x => x.SupplierCode == itemToAdd.Supplier3 && x.ItemCode == itemToAdd.ItemCode).Select(x => x.UnitCost).FirstOrDefault(); poFullDetailsList.Add(pod); } Session["newPOList"] = poFullDetailsList; //add to list meant for already added items List <String> tempList = (List <String>)Session["tempList"]; tempList.Add(itemToAdd.ItemCode); Session["tempList"] = tempList; return(RedirectToAction("Purchase", "Store")); } }
public ActionResult GoodsReceipt(string[] arrQty) { List <POFullDetail> poFullDetailList = (List <POFullDetail>)Session["POItems"]; string poNumber = (string)Session["poNumber"]; int arrayCount = 0; float totalInventoryValue = 0; string receiptNo = null; bool invalid = false; int c = 0; try { using (SSISdbEntities m = new SSISdbEntities()) { foreach (POFullDetail p in poFullDetailList) { if ((p.QuantityOrdered - p.QuantityDelivered) < Convert.ToInt32(arrQty[c]) || Convert.ToInt32(arrQty[c]) < 0) { invalid = true; } if (Convert.ToInt32(arrQty[c]) < 0) { invalid = true; } c++; } if (invalid == false) { int newId = m.POReceiptHeaders.Count() + 1; receiptNo = CommonLogic.SerialNo(newId, "POR"); int countQty = 0; int countInventory = 0; // Tabulate all qty, to ensure total is not 0 (Prevent empty entries) for (int i = 0; i < arrQty.Length; i++) { countQty += Convert.ToInt32(arrQty[i]); } // Create New PO Receipt Header if (countQty > 0) { // Preparation for database update foreach (POFullDetail p in poFullDetailList) { PODetail pod = m.PODetails.Where(x => x.ItemCode == p.ItemCode && x.PONumber == p.PONumber).FirstOrDefault(); totalInventoryValue += pod.UnitCost; } // Create PO Receipt Header first POReceiptHeader porh = new POReceiptHeader(); porh.ReceiptNo = receiptNo; porh.PONumber = poNumber; porh.DeliveryOrderNo = ""; porh.ReceivedDate = DateTime.Now; porh.Receiver = (string)Session["LoginEmployeeID"]; porh.Remarks = ""; porh.TransactionType = "PO Receipt"; porh.TotalAmount = totalInventoryValue; m.POReceiptHeaders.Add(porh); m.SaveChanges(); TempData["ReceiptNo"] = receiptNo; // Adding into Database based on Items foreach (POFullDetail p in poFullDetailList) { PODetail pod = m.PODetails.Where(x => x.ItemCode == p.ItemCode && x.PONumber == p.PONumber).FirstOrDefault(); int qty = Convert.ToInt32(arrQty[arrayCount]); // Only execute if qty > 0, meaning there's good received. if (qty > 0 && (pod.QuantityOrdered - pod.QuantityDelivered) != 0) { // Update PO Details Table if (pod.QuantityBackOrdered == qty) { pod.QuantityBackOrdered = 0; } else { pod.QuantityBackOrdered = pod.QuantityBackOrdered - qty; } pod.QuantityDelivered += qty; m.SaveChanges(); // Update Item on Hand Item item = m.Items.Where(x => x.ItemCode == p.ItemCode).FirstOrDefault(); item.Quantity += qty; m.SaveChanges(); // Update Item Transaction ItemTransaction itemTransaction = new ItemTransaction(); itemTransaction.TransDateTime = DateTime.Now; itemTransaction.DocumentRefNo = poNumber; itemTransaction.ItemCode = item.ItemCode; itemTransaction.TransactionType = "PO Receipt"; itemTransaction.Quantity = qty; itemTransaction.UnitCost = pod.UnitCost; itemTransaction.Amount = pod.UnitCost * qty; m.ItemTransactions.Add(itemTransaction); m.SaveChanges(); // Update POReceipt Details POReceiptDetail pord = new POReceiptDetail(); pord.ReceiptNo = receiptNo; pord.PONumber = poNumber; pord.ItemCode = item.ItemCode; pord.QuantityReceived = qty; pord.UnitCost = pod.UnitCost; pord.Amount = pod.UnitCost * qty; m.POReceiptDetails.Add(pord); m.SaveChanges(); p.QuantityOrdered = pod.QuantityBackOrdered; p.QuantityDelivered = pod.QuantityDelivered; } arrayCount++; } // Checking for completion of PO foreach (POFullDetail p in poFullDetailList) { PODetail pod = m.PODetails.Where(x => x.ItemCode == p.ItemCode && x.PONumber == p.PONumber).FirstOrDefault(); countInventory += pod.QuantityBackOrdered; } POHeader poh = m.POHeaders.Where(x => x.PONumber == poNumber).FirstOrDefault(); // Completed PO if (countInventory == 0) { poh.Status = "Completed"; } else { poh.Status = "Outstanding"; } m.SaveChanges(); Session["GRListPage"] = "2"; Session["poStatus"] = "Completed"; } } else { Debug.WriteLine("invalid qty"); ViewBag.ErrorAmt = "Invalid Quantity!"; Session["StorePurchaseTabIndex"] = "2"; return(View("DisplayPO")); } } } catch (Exception) { TempData["ErrorMsg"] = "Please enter a valid number!"; Session["StorePurchaseTabIndex"] = "2"; return(View("DisplayPO")); } Session["POItems"] = poFullDetailList; Session["poDetailsEditMode"] = false; Session["grId"] = receiptNo; Session["StorePurchaseTabIndex"] = "3"; return(RedirectToAction("DisplayGR", "StorePurchase")); }
public int UpdatePODetail(PODetail poDetail) { return(poDetailsDAO.UpdatePODetail(poDetail)); }
/// <summary> /// 获取滚动排期表数据 /// </summary> /// <param name="factoryID">工厂id</param> /// <param name="poCode">生产单号</param> /// <param name="startDate"></param> /// <param name="endDate"></param> /// <param name="orderType">Eric添加 生产单类型:实单1,非实单0 </param> private void InitData(int factoryID, string poCode, DateTime startDate, DateTime endDate, int orderType, string lotNO) { //客户信息 this.DicAllCustomers = Customer.GetDictionary(null); //产品分类 this.DicProductType = ProductType.GetDictionary(null); this.InitLstReportSetting(); //返回选中的工厂ID字符串 /// 多个用逗号隔开,默认全选 /// 格式:"1,2,3,4,5,6" //string FactorySelectIDsStr = "1,2,3,12,14,15,16,17"; string FactorySelectIDsStr = factoryID.ToString(); this.DicSimulation.Clear(); this.DicVirProdEvent.Clear(); // 目标生产线集合 Filter filter = new Filter(); filter.AddSort("FactoryID"); filter.AddSort("ID"); //if (!string.IsNullOrEmpty(groupNames)) // filter.Add("GroupName", groupNames, RELEATTION_TYPE.IN, LOGIC_TYPE.AND); filter.Add("FactoryID", FactorySelectIDsStr, RELEATTION_TYPE.IN, LOGIC_TYPE.AND); List <Facility> lstFacility = Facility.GetList(filter); this.LstVirtualFacility = new List <VirtualFacility>(); List <int> ids = new List <int>(); // // 相关的生产计划 foreach (Facility fa in lstFacility) { if (!AMOData.Settings.ImpSetting.IsOutsourcedScheduling && fa.IsSubCon)//外发不排产需过滤外发线 { continue; } ids.Add(fa.ID); LstVirtualFacility.Add(new VirtualFacility(fa)); } string wherein = string.Join(",", (from p in ids.Distinct() select p.ToString()).ToArray()); if (string.IsNullOrEmpty(wherein)) { return; } filter = new Filter(); filter.Add(AMODataHelper.GetStringFromList(ids, 1000, "FacilityID"), LOGIC_TYPE.AND); filter.Add("StartTime", endDate.Date.AddDays(1), RELEATTION_TYPE.LESS, LOGIC_TYPE.AND); filter.Add("EndTime", startDate.Date, RELEATTION_TYPE.GREATEREQUAL, LOGIC_TYPE.AND); /* * if (orderType > -1) * filter.Add("ISFIRMORDER", orderType, RELEATTION_TYPE.EQUAL, LOGIC_TYPE.AND); */ if (orderType > -1) { filter.AddFrom("productioneventdetail", "ProductionEvent.ID=productioneventdetail.ProductionEventID", JOIN_TYPE.LEFT); filter.AddFrom("PO", "PO.ID = productioneventdetail.POID", JOIN_TYPE.LEFT); filter.Add("PO.ISFIRMORDER", orderType, RELEATTION_TYPE.EQUAL, LOGIC_TYPE.AND); } if (string.IsNullOrEmpty(lotNO) == false) { string sql = string.Format("(select id from po where LotNO like '%{0}%')", lotNO); filter.Add("ProductionEvent.POID", sql, RELEATTION_TYPE.IN, LOGIC_TYPE.AND); } filter.AddSort("StartTime"); this.LstProdEvent = ProductionEvent.GetList(filter); this.DicFaProdEvent = new Dictionary <int, IEnumerable <ProductionEvent> >(); foreach (var g in this.LstProdEvent.GroupBy(x => x.FacilityID)) { this.DicFaProdEvent[g.Key] = g.ToList(); } //获取计划完成日期 var peFilter = new Filter(); peFilter.Add(AMODataHelper.GetStringFromList(ids, 1000, "PRODUCTIONEVENT.FacilityID"), LOGIC_TYPE.AND); peFilter.Add("PRODUCTIONEVENT.StartTime", endDate.Date.AddDays(1), RELEATTION_TYPE.LESS, LOGIC_TYPE.AND); peFilter.Add("PRODUCTIONEVENT.EndTime", startDate.Date, RELEATTION_TYPE.GREATEREQUAL, LOGIC_TYPE.AND); peFilter.Add("PRODUCTIONEVENT.STATUS", 1, RELEATTION_TYPE.EQUAL, LOGIC_TYPE.AND); this.DicProdFinishDates = ProductionSchedule.GetProductionFinishedDate(peFilter); //动态人数 Filter fwnFilter = new Filter(); string idStr = string.Join(",", (from p in ids.Distinct() select p.ToString()).ToArray()); fwnFilter.Add("FacilityID", idStr, RELEATTION_TYPE.IN, LOGIC_TYPE.AND); var lstFwn = FacilityWorkerNumber.GetList(fwnFilter); this.DicFwn = new Dictionary <int, IEnumerable <FacilityWorkerNumber> >(); foreach (var g in lstFwn.GroupBy(x => x.FacilityID)) { DicFwn[g.Key] = g.ToList(); } //ids = new List<int>(); //ids = (from item in this.LstProdEvent select item.POID).ToList(); //this.LstProdEvent = ProductionEvent.GetList(filter); if (this.LstProdEvent.Count > 0) { var mylist = this.LstProdEvent.Where(x => !string.IsNullOrEmpty(x.GroupID)); if (mylist.Any()) { var gids = mylist.Select(x => x.GroupID).Distinct(); var lst = gids.ToList(); groupIdCodes = AMO.BLL.ProductionEvent.GetAboutGroupIdList(lst); //获取与组ID关联的POCODE列表 } } //生产计划细分 ids = new List <int>(); filter = new Filter(); ids = (from item in this.LstProdEvent select item.ID).ToList(); this.DicProdEventDetail = new Dictionary <int, List <ProductionEventDetail> >(); List <ProductionEventDetail> lstProdEventDetail = new List <ProductionEventDetail>(); if (ids.Count > 0) { filter.Add(AMODataHelper.GetStringFromList(ids, 1000, "ProductionEventID"), LOGIC_TYPE.AND); if (!string.IsNullOrEmpty(poCode)) { filter.Add("POID", string.Format("SELECT id FROM dbo.PO WHERE CODE LIKE '%{0}%'", poCode), RELEATTION_TYPE.IN, LOGIC_TYPE.AND); } lstProdEventDetail = ProductionEventDetail.GetList(filter); foreach (var g in lstProdEventDetail.GroupBy(x => x.ProductionEventID)) { this.DicProdEventDetail[g.Key] = g.ToList(); } } //生产单信息 ids = new List <int>(); filter = new Filter(); ids = (from item in lstProdEventDetail select item.POID).Distinct().ToList(); string sokeySql = string.Empty; if (ids.Count > 0) { filter.Add(AMODataHelper.GetStringFromList(ids, 1000, "ID"), LOGIC_TYPE.AND); if (!string.IsNullOrEmpty(poCode)) { filter.Add("Code", poCode, RELEATTION_TYPE.LIKE, LOGIC_TYPE.AND); } string poidSql = DBHelper.GetDistinctSql("PO", "ID", filter); sokeySql = DBHelper.GetDistinctSql("PO", "SoKeyID", filter); this.DicPO = PO.GetDictionary(filter); filter = new Filter(); filter.Add("POID", poidSql, RELEATTION_TYPE.IN, LOGIC_TYPE.AND); this.LstPODetail = PODetail.GetList(filter, false); //关键事件(物料ETA)日期,有实际区实际,没实际区预计 var eventFilter = new Filter(); eventFilter.AddFrom("EVENTFLOWNODE", "EVENTFLOWNODE.ID=POEVENT.EVENTFLOWNODEID", JOIN_TYPE.INNER); eventFilter.Add("EVENTFLOWNODE.CRITICALEVENTID", AMOData.Settings.SysSetting.Rpt_ActualMaterialETA, RELEATTION_TYPE.EQUAL, LOGIC_TYPE.AND); eventFilter.Add("POEVENT.POID", poidSql, RELEATTION_TYPE.IN, LOGIC_TYPE.AND); List <POEvent> lstPOEvent = POEvent.GetList(eventFilter); this.DicPOEvents = new Dictionary <int, POEvent>(); foreach (POEvent model in lstPOEvent) { if (DicPOEvents.ContainsKey(model.POID) == false) { DicPOEvents.Add(model.POID, model); } } } else { this.DicPO = new Dictionary <int, PO>(); this.LstPODetail = new List <PODetail>(); } // if (!string.IsNullOrEmpty(sokeySql)) { Filter sokeyFilter = new Filter(); sokeyFilter.Add("SoKeyID", sokeySql, RELEATTION_TYPE.IN, LOGIC_TYPE.AND); sokeyFilter.Add("MaterialStyle", 6, RELEATTION_TYPE.NOTEQUAL, LOGIC_TYPE.AND); LstPOMaterialRequest = POMaterialRequest.GetListOnlySample(sokeyFilter); LstPOMaterialRequest.Sort(POMaterialRequest.ComparerByDate); } #region 用于计算 计划的每日计划产量 List <VirtualProdEvent> lstVirProdEvent = this.CreateVirtualProdEvent(this.LstProdEvent, lstProdEventDetail); this.DicVirProdEvent = lstVirProdEvent.ToDictionary(x => x.ID); if (this.LstReportSetting.Find(x => x.ColumnName == "AreaPlanQty" || x.ColumnName == "AreaOutput") != null)//AMOHB-3684 增加区间排单数、区间产值 { var gsVpe = lstVirProdEvent.GroupBy(x => x.FacilityID); foreach (var g in gsVpe) { var virFacility = this.LstVirtualFacility.Find(x => x.ID == g.Key); if (virFacility != null) { foreach (var vpe in g.ToList()) { vpe.FactoryID = virFacility.FactoryID; } } } //按工厂生产simulation对象 var gsFacility = this.LstVirtualFacility.GroupBy(x => x.FactoryID); foreach (var g in gsFacility) { if (!DicSimulation.ContainsKey(g.Key)) { //Simulation sim = this.CreateSimulation(g.Key, lstVirProdEvent.Where(x => x.FactoryID == g.Key).ToList()); var lstVirProdEventFinded = lstVirProdEvent.Where(x => x.FactoryID == g.Key); if (lstVirProdEventFinded != null && lstVirProdEventFinded.Count() > 0) { Simulation sim = this.CreateSimulation(g.Key, lstVirProdEventFinded.ToList()); DicSimulation.Add(g.Key, sim); } } } } #endregion }
public void UpdatePODetail(PODetail poDetail) { context.Entry(poDetail).State = EntityState.Modified; }
public static PurchaseOrder ValidatePOForm(Dictionary <string, string> values) { try { string ErrorMessage = string.Empty; if (values["Origin"] == "0") { ErrorMessage += "Origin, "; } if (values["Size"] == "0") { ErrorMessage += "Size, "; } if (values["Vessel"] == "0") { ErrorMessage += "Vessel, "; } if (string.IsNullOrEmpty(values["PODate"])) { ErrorMessage += "PO Date, "; } if (string.IsNullOrEmpty(values["TargetDays"])) { ErrorMessage += "Target Days, "; } if (string.IsNullOrEmpty(values["Supplier"])) { ErrorMessage += "Supplier, "; } if (string.IsNullOrEmpty(values["Lead"])) { ErrorMessage += "Lead, "; } // if (key == "PaymentTerms" && string.IsNullOrEmpty(value)) throw new Exception("PaymentTerms is required"); if (string.IsNullOrEmpty(values["BufferMin"])) { ErrorMessage += "Buffer Min %, "; } if (string.IsNullOrEmpty(values["BufferMax"])) { ErrorMessage += "Buffer Max %, "; } if (values["Customer_1"] == "0") { ErrorMessage += "Customer, "; } if (string.IsNullOrEmpty(ErrorMessage)) { bool error = false; for (int i = 1; i <= 10; i++) { if (values["Customer_" + i] == "0") { continue; } if (string.IsNullOrEmpty(values["Quantity_" + i])) { error = true; } if (string.IsNullOrEmpty(values["Rate_" + i])) { error = true; } if (string.IsNullOrEmpty(values["AllowedWastage_" + i])) { error = true; } if (string.IsNullOrEmpty(values["CostPerTon_" + i])) { error = true; } DateTime tdate = new DateTime(); if (!DateTime.TryParse(values["TargetDate_" + i], out tdate)) { error = true; } if (error) { ErrorMessage += "PO Detail"; break; } } } if (string.IsNullOrEmpty(ErrorMessage)) { PurchaseOrder PO = NewPO(); PO.Lead = UserManager.GetUserRef(values["Lead"]); PO.PODate = values.ContainsKey("PODate") ? DateTime.Parse(values["PODate"]) : DateTime.Now; PO.Origin = Common.GetOrigin(values["Origin"]); PO.Size = Common.GetSize(values["Size"]); PO.Vessel = Common.GetVessel(values["Vessel"]); PO.TargetDays = values.ContainsKey("TargetDays") ? int.Parse(values["TargetDays"]) : 0; PO.Supplier = Common.GetSupplier(values["Supplier"]); PO.TermsOfPayment = values["PaymentTerms"]; PO.BufferQuantityMin = values.ContainsKey("BufferMin") ? decimal.Parse(values["BufferMin"]) : 10; PO.BufferQuantityMax = values.ContainsKey("BufferMax") ? decimal.Parse(values["BufferMax"]) : 10; for (int i = 1; i <= 10; i++) { if (values.ContainsKey("Customer_" + i.ToString())) { if (values["Customer_" + i.ToString()] != "0") { PODetail pod = NewPODetail(PO); pod.Customer = CustomerManager.GetCustomerRef(values["Customer_" + i.ToString()]); pod.Quantity = values.ContainsKey("Quantity_" + i.ToString()) ? decimal.Parse(values["Quantity_" + i.ToString()]) : 0; pod.Rate = values.ContainsKey("Rate_" + i.ToString()) ? decimal.Parse(values["Rate_" + i.ToString()]) : 0; pod.AllowedWaistage = values.ContainsKey("AllowedWastage_" + i.ToString()) ? decimal.Parse(values["AllowedWastage_" + i.ToString()]) : 0; pod.CostPerTon = values.ContainsKey("CostPerTon_" + i.ToString()) ? decimal.Parse(values["CostPerTon_" + i.ToString()]) : 0; pod.TargetDate = values.ContainsKey("TargetDate_" + i.ToString()) ? DateTime.Parse(values["TargetDate_" + i.ToString()]) : DateTime.MaxValue; PO.PODetailsList.Add(pod); } } } PO = PurchaseDataManager.CalculatePO(PO); if (PO.isValid) { return(PO); } } throw new Exception("Enter required fields: " + ErrorMessage); } catch (Exception ex) { ExceptionHandler.Error(ex.Message); } return(null); }
public void InsertPODetail(PODetail poDetail) { context.PODetails.Add(poDetail); }
public RedirectToRouteResult AddToPO(string[] arr1, string[] arr2, string[] arrSupplier) { try { int enteredQty = 0; if (arr1 != null) { for (int i = 0; i < arr1.Length; i++) { enteredQty += Convert.ToInt32(arr1[i]); } } if (enteredQty > 0) { List <ReorderList> poDetailsList = (List <ReorderList>)Session["ReorderList"]; List <Supplier> supplierList = new List <Supplier>(); List <Item> itemAdded = new List <Item>(); using (SSISdbEntities m = new SSISdbEntities()) { // Checking for number of suppliers to Iterate & later used for creating no. of PO for (int i = 0; i < arrSupplier.Length; i++) { string supCode = arrSupplier[i]; Supplier supplier = m.Suppliers.Where(x => x.CompanyName == supCode).FirstOrDefault(); if (!supplierList.Contains(supplier)) { supplierList.Add(supplier); } } // Change Item Supplier in PODetails for retrieving in list and adding into database later foreach (ReorderList p in poDetailsList) { if (arr2.Contains(p.Description)) { int index = arr2.ToList().FindIndex(x => x == p.Description); string coy = arrSupplier[index]; Supplier sup = m.Suppliers.Where(x => x.CompanyName == coy).FirstOrDefault(); p.s1 = sup.CompanyName; } } // Each Supplier iterates once such that only 1 PO is created for each of them foreach (Supplier s in supplierList) { // Create new PO based on supplier int count = m.POHeaders.Count() + 1; string poId = CommonLogic.SerialNo(count, "PO"); POHeader newPOHeader = new POHeader(); newPOHeader.PONumber = poId; newPOHeader.Date = DateTime.Now; newPOHeader.SupplierCode = s.SupplierCode; newPOHeader.ContactName = s.ContactName; newPOHeader.DeliverTo = "Logic University"; newPOHeader.EmployeeID = (string)Session["LoginEmployeeID"]; newPOHeader.Remarks = ""; newPOHeader.Status = "Open"; newPOHeader.TransactionType = "PO"; m.POHeaders.Add(newPOHeader); m.SaveChanges(); // Loop through PODetails to add items based on selected supplier suppliers foreach (ReorderList pod in poDetailsList) { // Only add if the item is belonging to the supplier / PO string supName = pod.s1; Supplier supplier = m.Suppliers.Where(x => x.CompanyName == supName).FirstOrDefault(); if (supplier == s) { // Only add if the item has not been added Item i = m.Items.Where(x => x.ItemCode == pod.ItemCode).FirstOrDefault(); if (!itemAdded.Contains(i)) { PODetail poDetailToAdd = new PODetail(); float itemUnitPrice = m.SupplierPriceLists.Where(x => x.SupplierCode == s.SupplierCode && x.ItemCode == pod.ItemCode).Select(y => y.UnitCost).FirstOrDefault(); poDetailToAdd.PONumber = poId; poDetailToAdd.ItemCode = pod.ItemCode; int index = arr2.ToList().FindIndex(x => x == pod.Description); if (index != -1) { int qty = Convert.ToInt32(arr1[index]); poDetailToAdd.QuantityOrdered = qty; poDetailToAdd.QuantityBackOrdered = qty; poDetailToAdd.QuantityDelivered = 0; poDetailToAdd.UnitCost = itemUnitPrice; poDetailToAdd.CancelledBackOrdered = 0; m.PODetails.Add(poDetailToAdd); } m.SaveChanges(); itemAdded.Add(i); } } } } } } else { TempData["ErrorMsg"] = "You have not included any quantity"; } Session["newPOList"] = new List <PODetail>(); } catch (Exception e) { Debug.WriteLine(e.Message); TempData["ErrorMsg"] = "Please key in a valid quantity"; } return(RedirectToAction("Inventory", "Store")); }
public void DeletePODetail(string poNumber, string itemCode) { PODetail poDetail = context.PODetails.Where(x => x.PONumber == poNumber && x.ItemCode == itemCode).First(); context.PODetails.Remove(poDetail); }
//update PODetail private int UpdatePODetail(PODetail pod) { return(new PODetailsDAO().UpdatePODetail(pod)); }