/// <summary> /// 获取PO变更行 /// </summary> /// <param name="dr"></param> /// <param name="changeType"></param> /// <param name="modifiedData"></param> /// <param name="modifiedDataName"></param> /// <param name="modifiedDataType"></param> /// <param name="dataBeforeModified"></param> /// <param name="dataAfterModified"></param> /// <returns></returns> public UFIDA.U9.PM.POChange.POModifyLineData GetPOModifyLineData(DataRow dr, int changeType, string modifiedData, string modifiedDataName, string modifiedDataType, string dataBeforeModified, string dataAfterModified) { UFIDA.U9.PM.POChange.POModifyLineData pomodifyLine = new UFIDA.U9.PM.POChange.POModifyLineData(); pomodifyLine.DocLineNo = 0;//默认值 pomodifyLine.ItemInfo = Convert.ToInt64(dr["ItemInfo_ItemID"].ToString()); pomodifyLine.POLineDocLineNo = Convert.ToInt32(dr["Linenum"].ToString()); pomodifyLine.POLineID = Convert.ToInt64(dr["PODocLineID"].ToString()); pomodifyLine.POShipLineDocLineNo = Convert.ToInt32(dr["PlanLineNum"].ToString()); pomodifyLine.POShipLineID = Convert.ToInt64(dr["POSubLineID"].ToString()); pomodifyLine.SysVersion = 0; pomodifyLine.ChangeType = changeType;//变更类型 switch (changeType) { case 0: //采购订单头变更 pomodifyLine.LineID = Convert.ToInt64(dr["POID"].ToString()); pomodifyLine.ModifiedEntity = new BusinessEntity.EntityKey(Convert.ToInt64(dr["POID"].ToString()), "UFIDA.U9.PM.PO.PurchaseOrder"); pomodifyLine.ModifiedEntityName = "UFIDA.U9.PM.PO.PurchaseOrder"; break; case 1: //采购订单行变更 pomodifyLine.LineID = Convert.ToInt64(dr["PODocLineID"].ToString()); pomodifyLine.ModifiedEntity = new BusinessEntity.EntityKey(Convert.ToInt64(dr["PODocLineID"].ToString()), "UFIDA.U9.PM.PO.POLine"); pomodifyLine.ModifiedEntityName = "UFIDA.U9.PM.PO.POLine"; break; case 2: //采购计划行变更 pomodifyLine.CodeAfterModified = ""; pomodifyLine.CodeBeforeModified = ""; pomodifyLine.NameAfterModifeid = ""; pomodifyLine.NameBeforeModifeid = ""; pomodifyLine.LineID = Convert.ToInt64(dr["POSubLineID"].ToString()); pomodifyLine.ModifiedEntity = new BusinessEntity.EntityKey(Convert.ToInt64(dr["POSubLineID"].ToString()), "UFIDA.U9.PM.PO.POShipLine"); pomodifyLine.ModifiedEntityName = "UFIDA.U9.PM.PO.POShipLine"; break; default: break; } pomodifyLine.ModifiedData = modifiedData; pomodifyLine.ModifiedDataName = modifiedDataName; pomodifyLine.ModifiedDataType = modifiedDataType; pomodifyLine.DataBeforeModified = dr[dataBeforeModified].ToString(); pomodifyLine.DataAfterModified = dr[dataAfterModified].ToString(); return(pomodifyLine); }
/// <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); }