/// <summary> /// 生成PO变更单 /// </summary> /// <param name="dr"></param> /// <param name="type">0\不制作变更单;1\只变更时间;2\其他类型PO变更单;</param> /// <returns></returns> public UFIDA.U9.PM.POChange.POModifyData GetPOModify(DataRow dr, ref string type) { type = "0"; UFIDA.U9.PM.POChange.POModifyData poModify = new UFIDA.U9.PM.POChange.POModifyData(); #region 变更数据 //poModify.POShiplineModify = new List<UFIDA.U9.PM.POChange.POShiplineModifyData>(); //poModify.POLineModify = new List<UFIDA.U9.PM.POChange.POLineModifyData>(); //poModify.POAddressModify = new List<UFIDA.U9.PM.POChange.POAddressModifyData>(); //poModify.POContactModify = new List<UFIDA.U9.PM.POChange.POContactModifyData>(); //poModify.PODiscountModify = new List<UFIDA.U9.PM.POChange.PODiscountModifyData>(); //poModify.POFeeModify = new List<UFIDA.U9.PM.POChange.POFeeModifyData>(); //poModify.POMenoModify = new List<UFIDA.U9.PM.POChange.POMenoModifyData>(); //poModify.POTaxModify = new List<UFIDA.U9.PM.POChange.POTaxModifyData>(); #endregion poModify.ActionType = 0;//更新类型,默认值 poModify.ApprovedBy = ""; //poModify.ApprovedOn = DateTime.Now; poModify.CancelApprovedBy = ""; //poModify.CancelApprovedOn = DateTime.Now; poModify.Demo = "系统自动生成单据"; //备注 poModify.DocumentType = 1001708070112532; //单据类型 //poModify.DocumentType_SKey poModify.IsModifyVersion = true; //更新订单版本 poModify.ModifyIndex = Convert.ToInt32(dr["POModifiedTimes"].ToString()) + 1; poModify.ModifyReason = 0; poModify.PO = Convert.ToInt64(dr["POID"]); poModify.PODocNo = dr["PODocNo"].ToString(); //poModify.PO_SKey poModify.Status = 0;//开立 poModify.WFCurrentState = -1; poModify.WFOriginalState = -1; //采购订单计划行变更表 poModify.POShiplineModify = new List <UFIDA.U9.PM.POChange.POShiplineModifyData>(); //poModify.POShiplineModify.Add(GetPOShiplineModifyData(dr)); //POModifyLine PO变更单单行 poModify.POModifyLine = new List <UFIDA.U9.PM.POChange.POModifyLineData>(); int SupplierConfirmQtyTU = Convert.ToInt32(Convert.ToDouble(dr["SupplierConfirmQtyTU"].ToString())); int SMQty = Convert.ToInt32(Convert.ToDouble(dr["SMQty"].ToString())); int RescheduleQty = Convert.ToInt32(Convert.ToDouble(dr["RescheduleQty"].ToString())); DateTime OriginalDate = Convert.ToDateTime(dr["OriginalDate"].ToString()); DateTime RescheduleDate = Convert.ToDateTime(dr["RescheduleDate"].ToString()); if (SupplierConfirmQtyTU == SMQty) //库存主单位数量=采购确认数量 { if (SMQty == RescheduleQty) //只修改日期 { if (OriginalDate != RescheduleDate) //修改日期 { UFIDA.U9.PM.POChange.POModifyLineData pomodifyLine = new UFIDA.U9.PM.POChange.POModifyLineData(); pomodifyLine = GetPOModifyLineData(dr, 2, "DeliveryDate", "要求交货日", "System.DateTime", "OriginalDate", "RescheduleDate"); pomodifyLine.POModify = poModify; poModify.POModifyLine.Add(pomodifyLine); UFIDA.U9.PM.POChange.POModifyLineData pomodifyLine2 = new UFIDA.U9.PM.POChange.POModifyLineData(); pomodifyLine2 = GetPOModifyLineData(dr, 2, "NeedPODate", "应下订单日", "System.DateTime", "OriginalDate", "RescheduleDate"); pomodifyLine2.POModify = poModify; poModify.POModifyLine.Add(pomodifyLine2); UFIDA.U9.PM.POChange.POModifyLineData pomodifyLine3 = new UFIDA.U9.PM.POChange.POModifyLineData(); pomodifyLine3 = GetPOModifyLineData(dr, 2, "PlanArriveDate", "计划到货日", "System.DateTime", "OriginalDate", "RescheduleDate"); pomodifyLine3.POModify = poModify; poModify.POModifyLine.Add(pomodifyLine3); type = "1"; } else { type = "0"; } } else if (SMQty > RescheduleQty) { if (OriginalDate == RescheduleDate)//直接改小数量 { } else//原始行修改,拆行,拆行的数量=重排数量,时间=重排时间 { } } else//SMQty<RescheduleQty { if (OriginalDate == RescheduleDate)//直接修改数量 { } else//直接修改数量和时间,不需要拆行 { } } } else//库存主单位数量!=采购确认数量,需要拆行 { if (SMQty == RescheduleQty) { if (OriginalDate != RescheduleDate)//拆行,原始行做修改,新拆一行 { } else { type = "0"; } } else if (SMQty > RescheduleQty) { if (OriginalDate != RescheduleDate)//修改数量和时间 { } else//只修改数量 { } } } return(poModify); }
/// <summary> /// 创建变更单按钮(弃用) /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void BtnPOModify_Clickx(object sender, EventArgs e) { List <UFIDA.U9.PM.POChange.POModifyData> liPOModifyDate = new List <UFIDA.U9.PM.POChange.POModifyData>(); //只变更日期的变更单 List <UFIDA.U9.PM.POChange.POModifyData> liPOModify = new List <UFIDA.U9.PM.POChange.POModifyData>(); //变更数量的变更单 List <long> liAutoApprove = new List <long>(); //新生成的变更单ID集合(需要自动审核的) //MRP重排建议与对应的PO集合 DataSet ds = new DataSet(); DataTable dt = new DataTable(); DataParamList dp = new DataParamList(); DataAccessor.RunSP("sp_Auctus_BE_GetReschedule", dp, out ds); foreach (DataRow dr in ds.Tables[0].Rows) { string type = "0";//0只改时间和取消操作 UFIDA.U9.PM.POChange.POModifyData poModify = new UFIDA.U9.PM.POChange.POModifyData(); //填充POModify实体 if (dr["RType"].ToString() == "1")//更新操作 { poModify = GetPOModify(dr, ref type); if (type == "1") { liPOModifyDate.Add(poModify); } else if (type == "2") { liPOModify.Add(poModify); } } else if (dr["RType"].ToString() == "2")//TODO:取消操作,调用“关闭采购订单计划行服务” { } } if (liPOModifyDate.Count > 0) { for (int i = 0; i < liPOModifyDate.Count - 1; i++) { for (int j = i + 1; j < liPOModifyDate.Count; j++) { if (liPOModifyDate[i].PODocNo == liPOModifyDate[j].PODocNo) { List <UFIDA.U9.PM.POChange.POModifyLineData> ll = new List <UFIDA.U9.PM.POChange.POModifyLineData>(); List <UFIDA.U9.PM.POChange.POShiplineModifyData> ll2 = new List <UFIDA.U9.PM.POChange.POShiplineModifyData>(); foreach (UFIDA.U9.PM.POChange.POModifyLineData item in liPOModifyDate[j].POModifyLine) { item.POModify = liPOModifyDate[i]; ll.Add(item); } foreach (UFIDA.U9.PM.POChange.POShiplineModifyData item in liPOModifyDate[j].POShiplineModify) { item.POModify = liPOModifyDate[i]; ll2.Add(item); } //liPOModifyDate[i].POModifyLine.AddRange(liPOModifyDate[j].POModifyLine); liPOModifyDate[i].POModifyLine.AddRange(ll); liPOModifyDate[i].POShiplineModify.AddRange(ll2); liPOModifyDate.RemoveAt(j); j--; } } } foreach (UFIDA.U9.PM.POChange.POModifyData item in liPOModifyDate) { PurchaseOrderChangeListBP.Proxy.SavePOModifyBPProxy bpProxy = new PurchaseOrderChangeListBP.Proxy.SavePOModifyBPProxy(); bpProxy.POModify = item; long i = bpProxy.Do(); liAutoApprove.Add(i); } #region 自动审审核采购变更单 if (liAutoApprove.Count > 0) { List <PurchaseOrderChangeListBP.POModifyDTOData> li = new List <PurchaseOrderChangeListBP.POModifyDTOData>(); PurchaseOrderChangeListBP.POModifyDTOData dto = new PurchaseOrderChangeListBP.POModifyDTOData(); dto.IDKey = liAutoApprove[0]; dto.IDKey_SKey = new BusinessEntity.EntityKey(liAutoApprove[0], "UFIDA.U9.PM.POChange.POModify"); liPOModifyDate[0].ID = liAutoApprove[0]; dto.POModify = liPOModifyDate[0]; //UFIDA.U9.PM.POChange.POModifyData data = new UFIDA.U9.PM.POChange.POModifyData(); li.Add(dto); //PurchaseOrderChangeListBP.Proxy.POModifySubmitBPProxy submitBpProxy = new PurchaseOrderChangeListBP.Proxy.POModifySubmitBPProxy(); //submitBpProxy.POModifyDTOs = li; //submitBpProxy.Do(); //PurchaseOrderChangeListBP.Proxy.POModifyApproveBPProxy approveBpProxy = new PurchaseOrderChangeListBP.Proxy.POModifyApproveBPProxy(); //approveBpProxy.POModifyDTOs = li; //approveBpProxy.Do(); } #endregion } //TODO:数量变更单据 //if (liPOModify.Count > 0) //{ // foreach (UFIDA.U9.PM.POChange.POModifyData item in liPOModifyDate) // { // PurchaseOrderChangeListBP.Proxy.SavePOModifyBPProxy bpProxy = new PurchaseOrderChangeListBP.Proxy.SavePOModifyBPProxy(); // bpProxy.POModify = item; // bpProxy.Do(); // } //} }