//建立Job,对于最后一次Task打印时间起超过30天未继续到货的“部分入库(status=6)”状态PO,系统则自动关闭该PO,将PO的状态修改为“系统关闭 8” public static void SetPoState6To8(PoSysNoItem item) { string closeUser = "******"; AutoCloseDA.SetStatus6To8(item.PoSysNo, closeUser); OnShowInfo("PO单状态修改完成"); }
public static decimal GetNoUseReturnPoint(PoSysNoItem item) { decimal noUseReturnPoint = 0; List <POEimsEntity> eimsInfo = AutoCloseDA.GetPOEimsRelevanceInfo(item.PoSysNo); foreach (POEimsEntity eims in eimsInfo) { noUseReturnPoint += eims.LeftAmt; } return(noUseReturnPoint); }
private static void SendMail(PoSysNoItem item) { List <POMailInfo> list = AutoCloseDA.GetNeedSendMailPo(item.PoSysNo); if (list != null) { foreach (POMailInfo poMailInfo in list) { CreateEmailContent cretet = new CreateEmailContent(poMailInfo.Sysno, ""); string mailCountent = cretet.EmailInfo(); cretet.SendMail(mailCountent, poMailInfo.MailAddress + ";" + poMailInfo.PMEmail + ";" + poMailInfo.CreateEmail); } } OnShowInfo("邮件发送完成"); }
public static void SetPoInfo(PoSysNoItem item) { decimal noUseReturnPoint = GetNoUseReturnPoint(item); bool result = false; result = CreateNewItemPay(item, noUseReturnPoint); //创建财务调整单 if (result == false) { return; } //SetReturnPoint(item); //修改使用返点 SetToAmt(item); //设置总金额 InventoryPurQtyChange(item); //修改在途库存 SendMail(item); //发送邮件 SetPoState6To8(item); //修改PO状态 //CRL17821 发送关闭SSB消息 SendCloseMessage(item.PoSysNo, 493); }
private static bool CreateNewItemPay(PoSysNoItem item, decimal noUseReturnPoint) { string baseUrl = System.Configuration.ConfigurationManager.AppSettings["InvoiceRestFulBaseUrl"]; string languageCode = System.Configuration.ConfigurationManager.AppSettings["LanguageCode"]; string companyCode = System.Configuration.ConfigurationManager.AppSettings["CompanyCode"]; PayableInfo payableInfo = new PayableInfo(); List <POItem> items = AutoCloseDA.QueryPOItemsForPrint(item.PoSysNo); decimal? totalAmt = GettoTalAmt(items); decimal? trueAmt = GettrueAmt(items); payableInfo.OrderSysNo = item.PoSysNo; payableInfo.BatchNumber = 1; payableInfo.OrderStatus = 6; payableInfo.OrderType = PayableOrderType.POAdjust; payableInfo.OperationUserFullName = "Job User"; payableInfo.InStockAmt = totalAmt - trueAmt - noUseReturnPoint; payableInfo.CompanyCode = companyCode; ECCentral.Job.Utility.RestClient client = new ECCentral.Job.Utility.RestClient(baseUrl, languageCode); ECCentral.Job.Utility.RestServiceError error; var ar = client.Update("/Payable/CreateByPO", payableInfo, out error); if (error != null && error.Faults != null && error.Faults.Count > 0) { string errorMsg = ""; foreach (var errorItem in error.Faults) { errorMsg += errorItem.ErrorDescription; } Logger.WriteLog(errorMsg, "JobConsole"); OnShowInfo(errorMsg); OnShowInfo("PO单编号为:" + item.PoSysNo.ToString() + "财务收款单调整失败"); return(false); } else { OnShowInfo("PO单编号为:" + item.PoSysNo.ToString() + "财务收款单调整成功"); return(true); } }
//如果PO单有使用EIMS,当EIMS金额(PO_Master. UsingReturnPoint)超过该PO各批次入库总金额(具体表和字段需WMS提供)调用EIMS接口将多余EIMS金额返还,并将PO总价格TotalAmt更新为各批次入库总金额。 public static void SetReturnPoint(PoSysNoItem item) { //List<POEmisInfo> eimsInfo = AutoCloseDA.GetPoEmisInfo(item.PoSysNo); //foreach (POEmisInfo emis in eimsInfo) //{ // if (emis.sumEimsCount < emis.UsingReturnPoint) // { // ResumePMRemnantReturnPoint(emis.SysNo, emis.PM_ReturnPointSysNo, emis.UsingReturnPoint - emis.sumEimsCount, 500, emis.ReturnPointC3SysNo, item.PoStatus); // AutoCloseDA.UpdateUseReturnPoint(emis); // OnShowInfo("返点操作成功"); // } //} //调EIMS接口返还多余返点 //int operationUserSysNumber = 493; //List<POAttachInfo> poAttachEntitys = new List<POAttachInfo>(); //List<POEimsEntity> poEimsEntitys = GetPOEimsRelevanceInfo(item.PoSysNo); //foreach (POEimsEntity poEims in poEimsEntitys) //{ // if (poEims.LeftAmt > 0.00m) // { // POAttachInfo poAttachInfo = new POAttachInfo() // { // PONumber = item.PoSysNo, // InvoiceNumber = poEims.EIMSNo, // PostTime = System.DateTime.Now, // UseTime = System.DateTime.Now, // POStatus = (int)item.PoStatus, // C3SysNo = -1 // }; // poAttachEntitys.Add(poAttachInfo); // } //} //ResumePMRemnantReturnPoint(poAttachEntitys, operationUserSysNumber.ToString()); //OnShowInfo("返点操作成功"); }
//(PO中该商品采购数量 –实际入库数量) 进行扣减采购在途库存(inventory .purQty); //负po不需要进行采购在途库存设置。关闭时,需要把占用库存剩下的还给可用库存 public static void InventoryPurQtyChange(PoSysNoItem poInfo) { List <PoPurQtyInfo> listPurQty = AutoCloseDA.GetPoPurQtyInfoList(poInfo.PoSysNo); //var data = listPurQty.GroupBy(p => p.poSysno); //int storySyno = 0; //foreach (var d in data) //{ // List<KeyValuePair<int, int>> kv = new List<KeyValuePair<int, int>>(); // foreach (var f in d) // { // storySyno = f.StockSysNo; // kv.Add(new KeyValuePair<int, int>(f.productSysno, f.pruCount)); // } // if (storySyno != 0) // { // InventoryPurQty(storySyno, kv, d.Key, 2);//0 审核; 1 撤销审核;2 中止入库 // storySyno = 0; // } //} InventoryAdjustContractInfo info = new InventoryAdjustContractInfo(); info.SourceActionName = InventoryAdjustSourceAction.StopInStock; info.SourceBizFunctionName = InventoryAdjustSourceBizFunction.PO_Order; info.AdjustItemList = new List <InventoryAdjustItemInfo>(); info.ReferenceSysNo = poInfo.PoSysNo.ToString(); foreach (var item in listPurQty) { info.AdjustItemList.Add(new InventoryAdjustItemInfo { AdjustQuantity = -1 * item.pruCount, ProductSysNo = item.productSysno, StockSysNo = item.StockSysNo }); } string baseUrl = System.Configuration.ConfigurationManager.AppSettings["PORestFulBaseUrl"]; string languageCode = System.Configuration.ConfigurationManager.AppSettings["LanguageCode"]; string companyCode = System.Configuration.ConfigurationManager.AppSettings["CompanyCode"]; ECCentral.Job.Utility.RestClient client = new ECCentral.Job.Utility.RestClient(baseUrl, languageCode); ECCentral.Job.Utility.RestServiceError error; var ar = client.Update("/PurchaseOrder/AdjustPurchaseOrderQtyInventory", info, out error); if (error != null && error.Faults != null && error.Faults.Count > 0) { string errorMsg = ""; foreach (var errorItem in error.Faults) { errorMsg += errorItem.ErrorDescription; } Logger.WriteLog(errorMsg, "JobConsole"); OnShowInfo(errorMsg); OnShowInfo("PO单编号为:" + poInfo.PoSysNo.ToString() + "在途数量修改失败"); AutoCloseDA.SendEmail(poInfo.PoSysNo, Settings.ExceptionMeil, "PO单编号为:" + poInfo.PoSysNo.ToString() + "在途数量修改失败", errorMsg); } else { OnShowInfo("PO单编号为:" + poInfo.PoSysNo.ToString() + "在途数量修改成功"); } }
/// <summary> /// 恢复返点金额 /// </summary> /// <param name="POSysNo">PO编号</param> /// <param name="InvoiceNumber ">返点编号</param> /// <param name="useInvoiceAmount">当前使用金额</param> /// <returns></returns> //public static void ResumePMRemnantReturnPoint(List<POAttachInfo> poAttachEntitys, string userSysNo) //{ // EIMSMessageResult returnValue = null; // IEIMSInterfaceService service = null; // try // { // EIMSMessage<List<POAttachInfo>> entity = new EIMSMessage<List<POAttachInfo>>() // { // Header = new EIMSMessageHeader() // { // UserID = userSysNo, // CompanyCode = Settings.CompanyCode // }, // Body = poAttachEntitys // }; // service = ServiceBroker.FindService<IEIMSInterfaceService>(Settings.ConsumerName, Settings.EIMSLocationName); // returnValue = service.PostPOConfirm(entity); // } // finally // { // ServiceBroker.DisposeService<IEIMSInterfaceService>(service); // } //} //private static void ResumePMRemnantReturnPoint(int poSysNo, int invoiceNumber, decimal useInvoiceAmount, int userSysNo, int c3SysNo, int poStatus) //{ // EIMSMessageResult returnValue = null; // IEIMSInterfaceService service = null; // try // { // EIMSMessage<POAttachInfo> entity = new EIMSMessage<POAttachInfo>() // { // Header = new EIMSMessageHeader() // { // UserID = userSysNo.ToString(), // CompanyCode = Settings.CompanyCode // }, // Body = new POAttachInfo() // { // PONumber = poSysNo, // InvoiceNumber = invoiceNumber, // PostTime = System.DateTime.Now, // UseTime = System.DateTime.Now, // C3SysNo = c3SysNo, // POStatus = poStatus // } // }; // service = ServiceBroker.FindService<IEIMSInterfaceService>(Settings.ConsumerName, Settings.EIMSLocationName); // returnValue = service.PostPOConfirm(entity); // } // finally // { // ServiceBroker.DisposeService<IEIMSInterfaceService>(service); // } //} //入库总金额=该PO各批次入库总金额 public static void SetToAmt(PoSysNoItem item) { AutoCloseDA.SetCountToamt(item.PoSysNo); OnShowInfo("PO单总金额调整完成"); }