| | |
| | | |
| | | #endregion |
| | | |
| | | #region 测试test |
| | | [WebMethod] |
| | | public bool set_Bill_New(Model.ClsCg_POOrderBillMain oMain, string sHSourceType, ref string sErrMsg) |
| | | { |
| | | Pub_Class.ClsXt_SystemParameter oSystemParameter = new Pub_Class.ClsXt_SystemParameter(); |
| | | if (set_Bill_CLD(oMain, oSystemParameter.omodel, ref sErrMsg) == true) |
| | | { |
| | | //"保存成功!"; |
| | | return true; |
| | | } |
| | | else |
| | | { |
| | | //"保存失败!"; |
| | | return false; |
| | | } |
| | | } |
| | | public bool set_Bill_CLD(Model.ClsCg_POOrderBillMain oMain, Pub_Class.ClsXt_SystemParameterMain oSystemParameterMain, ref string sErrMsg) |
| | | { |
| | | #region 固定代码 |
| | | SQLHelper.ClsCN oCn = new SQLHelper.ClsCN(); |
| | | string sRemark = ""; |
| | | //从配置文件获取 CLOUD网址、账套信息、登录用户、登录密码 |
| | | if (!Pub_Class.ClsPub.GetCLOUDLoginInfo(ref Pub_Class.ClsPub.sExeReturnInfo)) |
| | | { |
| | | sErrMsg = Pub_Class.ClsPub.sExeReturnInfo; |
| | | return false; |
| | | } |
| | | |
| | | //获取CLOUD账号密码 |
| | | string sCLOUDUseName = Pub_Class.ClsPub.sCLOUDUseName; |
| | | string sCLOUDPsd = Pub_Class.ClsPub.sCLOUDPsd; |
| | | |
| | | //从用户表获取用户绑定金蝶账号 |
| | | DataSet ds11 = oCn.RunProcReturn("exec h_p_API_GetCloudUserByLoginUser '" + oMain.HMaker + "'", "h_p_API_GetCloudUserByLoginUser"); |
| | | if (ds11 == null || ds11.Tables[0].Rows.Count == 0) |
| | | { |
| | | } |
| | | else |
| | | { |
| | | sCLOUDUseName = DBUtility.ClsPub.isStrNull(ds11.Tables[0].Rows[0]["HCloudUserName"]); |
| | | sCLOUDPsd = DBUtility.ClsPub.isStrNull(ds11.Tables[0].Rows[0]["HCloudUserPsd"]); |
| | | } |
| | | |
| | | string HReturn; |
| | | ApiClient client = new ApiClient(Pub_Class.ClsPub.sCLOUDUrl); |
| | | string dbId = Pub_Class.ClsPub.sCLOUDAcc; //AotuTest117 |
| | | bool bLogin = client.Login(dbId, sCLOUDUseName, sCLOUDPsd, 2052); |
| | | |
| | | sRemark = sRemark + " ;获取验证CLOUD账号密码" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff"); |
| | | #endregion |
| | | try |
| | | { |
| | | DataSet Ds; |
| | | oCn.BeginTran(); |
| | | #region mes的语句插入(先注释,后面需要再用) |
| | | ////写入WMS其他出库单 |
| | | |
| | | ////插入子表 |
| | | //oCn.RunProc("EXEC h_p_Kf_OtherOutBillSub_Insert " + oMain.HInterID.ToString() + ",'" + oMain.HBillNo + "'"); |
| | | ////插入主表 |
| | | //oCn.RunProc("Insert Into Kf_ICStockBillMain " + |
| | | //"(HBillType,HBillSubType,HInterID,HBillNo,HDate,HMainSourceBillType" + |
| | | //",HYear,HPeriod,HRemark,HMaker,HMakeDate" + |
| | | //",HSupID,HWHID,HSCWHID,HEmpID,HManagerID,HSecManagerID" + |
| | | //",HKeeperID,HDeptID,HExplanation,HInnerBillNo,HRedBlueFlag" + |
| | | //",HStockStyle" + |
| | | //",HSTOCKORGID,HOWNERID" + |
| | | //") " + |
| | | //" values('1206','1206'," + oMain.HInterID.ToString() + ",'" + oMain.HBillNo + "',convert(varchar(10),getdate(),120),'" + oMain.HMainSourceBillType + "'" + |
| | | //",2012,1,'" + oMain.HRemark + "','" + oMain.HMaker + "',getdate()" + |
| | | //", " + oMain.HSupID.ToString() + "," + oMain.HWHID.ToString() + "," + oMain.HSCWHID.ToString() + "," + oMain.HEmpID.ToString() + "," + oMain.HManagerID.ToString() + "," + oMain.HSecManagerID.ToString() + |
| | | //", " + oMain.HKeeperID.ToString() + "," + oMain.HDeptID.ToString() + ",'" + oMain.HExplanation + "','" + oMain.HInnerBillNo + "'," + DBUtility.ClsPub.BoolToString(oMain.HRedBlueFlag) + |
| | | //",'" + oMain.HStockStyle + "'" + |
| | | //", " + oMain.HSTOCKORGID.ToString() + "," + oMain.HOWNERID.ToString() + |
| | | //") "); |
| | | //更新关联数量 |
| | | #endregion |
| | | DateTime billDate; |
| | | string dateValue; |
| | | sRemark = sRemark + " ;生成出采购单据" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff"); |
| | | string billTypeCode = "CGDD01_SYS"; |
| | | //todo |
| | | Ds = oCn.RunProcReturn("select HNumber SupNumber FROM Gy_Supplier where HItemID=" + oMain.HSupID, "Gy_Supplier"); |
| | | if (DateTime.TryParse(Pub_Class.ClsPub.isStrNull(oMain.HDate), out billDate)) |
| | | { |
| | | dateValue = billDate.ToString("yyyy-MM-dd"); |
| | | } |
| | | else |
| | | { |
| | | dateValue = DateTime.Now.ToString("yyyy-MM-dd"); |
| | | } |
| | | string billNo = oMain.HBillNo; |
| | | string supplierNumber = Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["SupNumber"]); |
| | | string purchaseOrgNumber ="100";//100 |
| | | //string settleCurrId = Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HPSStyleID"]); |
| | | string sJson_StockStyle = ""; |
| | | string sJson_Date = ""; //单据日期 |
| | | sJson_StockStyle = ""; |
| | | sJson_Date = "\"FDate\":\"" + dateValue + "\","; |
| | | string sJson_Main = "{" + |
| | | "\"Creator\":\"\"," + |
| | | "\"NeedUpDateFields\":[]," + |
| | | "\"NeedReturnFields\":[]," + |
| | | "\"IsDeleteEntry\":\"true\"," + |
| | | "\"SubSystemId\":\"\"," + |
| | | "\"IsVerifyBaseDataField\":\"false\"," + |
| | | "\"IsEntryBatchFill\":\"true\"," + |
| | | "\"ValidateFlag\":\"true\"," + |
| | | "\"NumberSearch\":\"true\"," + |
| | | "\"IsAutoAdjustField\":\"false\"," + |
| | | "\"InterationFlags\":\"\"," + |
| | | "\"IgnoreInterationFlag\":\"\"," + |
| | | "\"Model\":{" + |
| | | "\"FID\":0," + |
| | | "\"FBillTypeID\":{\"FNUMBER\":\"" + billTypeCode + "\"}," + |
| | | "\"FBillNo\":\"" + billNo + "\"," + |
| | | "\"FDate\":\"" + dateValue + "\"," + |
| | | "\"FPurchaseOrgId\":{\"FNumber\":\"" + purchaseOrgNumber + "\"}," + |
| | | //TODO 这里供应商ID要和金蝶匹配上 |
| | | "\"FSupplierId\":{\"FNumber\":\"" + supplierNumber + "\"}," + |
| | | |
| | | "\"FPurchaseDeptId\":{\"FNumber\":\"\"}," + |
| | | "\"FPurchaserGroupId\":{\"FNumber\":\"\"}," + |
| | | "\"FPurchaserId\":{\"FNumber\":\"\"}," + |
| | | "\"FProviderId\":{\"FNumber\":\"\"}," + |
| | | "\"FProviderContactId\":{\"FCONTACTNUMBER\":\"\"}," + |
| | | "\"FProviderAddress\":\"\"," + |
| | | "\"FSettleId\":{\"FNumber\":\"\"}," + |
| | | "\"FChargeId\":{\"FNumber\":\"\"}," + |
| | | "\"FConfirmerId\":{\"FUserID\":\"\"}," + |
| | | "\"FConfirmDate\":\"1900-01-01\"," + |
| | | "\"FCorrespondOrgId\":{\"FNumber\":\"\"}," + |
| | | "\"FProviderContact\":\"\"," + |
| | | "\"FIsModificationOperator\":\"false\"," + |
| | | "\"FChangeStatus\":\"\"," + |
| | | "\"FACCTYPE\":\"\"," + |
| | | "\"F_RCZU_JXS\":\"\"," + |
| | | "\"FPOOrderFinance\":{" + |
| | | "\"FEntryId\":0," + |
| | | "\"FSettleModeId\":{\"FNumber\":\"JSFS01_SYS\"}," + |
| | | "\"FPayConditionId\":{\"FNumber\":\"\"}," + |
| | | "\"FSettleCurrId\":{\"FNumber\":\"" + "PRE001" + "\"}," + |
| | | "\"FExchangeTypeId\":{\"FNumber\":\"\"}," + |
| | | "\"FExchangeRate\":1," + |
| | | "\"FPriceListId\":{\"FNumber\":\"JGB01_SYS\"}," + |
| | | "\"FDiscountListId\":{\"FNumber\":\"\"}," + |
| | | "\"FPriceTimePoint\":\"\"," + |
| | | "\"FFOCUSSETTLEORGID\":{\"FNumber\":\"\"}," + |
| | | "\"FIsIncludedTax\":\"false\"," + |
| | | "\"FISPRICEEXCLUDETAX\":\"false\"," + |
| | | "\"FLocalCurrId\":{\"FNumber\":\"\"}," + |
| | | "\"FPayAdvanceBillId\":{}," + |
| | | "\"FPAYADVANCEAMOUNT\":0," + |
| | | "\"FSupToOderExchangeBusRate\":0," + |
| | | "\"FSEPSETTLE\":\"false\"," + |
| | | "\"FDepositRatio\":0" + |
| | | "}," + |
| | | "\"FPOOrderClause\":[]," + |
| | | "\"FPOOrderEntry\":["; |
| | | |
| | | string sJson_Entry = ""; |
| | | DataSet dds = oCn.RunProcReturn("select HNumber FROM Gy_Material where HItemID =" + oMain.HEmpID, "Gy_Material"); |
| | | |
| | | // 检查是否有明细数据 |
| | | if (dds == null || dds.Tables[0].Rows.Count == 0) |
| | | { |
| | | sErrMsg = "采购订单没有明细数据"; |
| | | return false; |
| | | } |
| | | |
| | | for (int i = 0; i < dds.Tables[0].Rows.Count; i++) |
| | | { |
| | | if (sJson_Entry != "") |
| | | { |
| | | sJson_Entry = sJson_Entry + " , "; |
| | | } |
| | | |
| | | // 从数据库获取字段值 |
| | | string materialId = Pub_Class.ClsPub.isStrNull(dds.Tables[0].Rows[i]["HNumber"]); |
| | | //string unitId = Pub_Class.ClsPub.isStrNull(dds.Tables[0].Rows[i]["UnitNumber"]); |
| | | //string quantity = Pub_Class.ClsPub.isStrNull(dds.Tables[0].Rows[i]["HQty"]); |
| | | //string price = Pub_Class.ClsPub.isStrNull(dds.Tables[0].Rows[i]["HPrice"]); |
| | | //string taxRate = Pub_Class.ClsPub.isStrNull(dds.Tables[0].Rows[i]["HTaxRate"]); |
| | | //string orgnumber = Pub_Class.ClsPub.isStrNull(dds.Tables[0].Rows[i]["orgnumber"]); |
| | | |
| | | // 验证必填字段 |
| | | if (string.IsNullOrEmpty(materialId)) |
| | | { |
| | | sErrMsg = $"第{i + 1}行物料编码为空"; |
| | | return false; |
| | | } |
| | | |
| | | // 设置默认值 |
| | | string unitId = "Pcs"; |
| | | string quantity = "1"; |
| | | string price = "0"; |
| | | string taxRate = "13"; |
| | | |
| | | // 转换数据类型 |
| | | decimal qty = 1; |
| | | if (!decimal.TryParse(quantity, out qty)) qty = 1; |
| | | |
| | | decimal priceValue = 0; |
| | | if (!decimal.TryParse(price, out priceValue)) priceValue = 0; |
| | | |
| | | decimal taxRateValue = 13; |
| | | if (!decimal.TryParse(taxRate, out taxRateValue)) taxRateValue = 13; |
| | | |
| | | // 交货日期默认为当前日期 |
| | | string deliveryDate = DateTime.Now.ToString("yyyy-MM-dd"); |
| | | |
| | | // 构建分录JSON - 只包含最简单测试通过的字段 |
| | | sJson_Entry += "{" + |
| | | "\"FEntryID\":" + i + "," + // 从0开始递增 |
| | | "\"FMaterialId\":{\"FNumber\":\"" + materialId + "\"}," + |
| | | "\"FUnitId\":{\"FNumber\":\"" + unitId + "\"}," + |
| | | "\"FQty\":" + qty.ToString("0.########") + "," + |
| | | "\"FPriceUnitId\":{\"FNumber\":\"" + unitId + "\"}," + |
| | | "\"FPrice\":" + priceValue.ToString("0.########") + "," + |
| | | "\"FTaxRate\":" + taxRateValue.ToString("0.########") + "," + |
| | | "\"FDeliveryDate\":\"" + deliveryDate + "\"," + |
| | | // "\"FEntrySettleOrgId\":{\"FNumber\":\"" + orgnumber + "\"}," + |
| | | "\"FEntrySettleOrgId\":{\"FNumber\":\"100\"}," + |
| | | "\"FStockUnitID\":{\"FNumber\":\"" + unitId + "\"}" + |
| | | "}"; |
| | | } |
| | | //"\"FInStockEntry_Link_FSId\":" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FInStockEntry_Link_FSId"]) + |
| | | string sJson_End = " ] }}"; |
| | | // 测试分录 该数据可以跑通 |
| | | string testEntry = "{" + |
| | | "\"FEntryID\":0," + |
| | | "\"FMaterialId\":{\"FNumber\":\"1.01.001.0001\"}," + |
| | | "\"FUnitId\":{\"FNumber\":\"Pcs\"}," + |
| | | "\"FQty\":1," + |
| | | "\"FPriceUnitId\":{\"FNumber\":\"Pcs\"}," + |
| | | "\"FPrice\":100," + |
| | | "\"FTaxRate\":13," + |
| | | "\"FDeliveryDate\":\"" + DateTime.Now.ToString("yyyy-MM-dd") + "\"," + |
| | | "\"FEntrySettleOrgId\":{\"FNumber\":\"100\"}," + |
| | | "\"FStockUnitID\":{\"FNumber\":\"Pcs\"}" + |
| | | "}"; |
| | | |
| | | // sJson_Entry = testEntry; |
| | | string sJson = sJson_Main + sJson_Entry + sJson_End; |
| | | |
| | | sRemark = sRemark + " ;获取CLOUD单据API递入值" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff"); |
| | | |
| | | //生成金蝶云单据 |
| | | if (bLogin) |
| | | { |
| | | var result = client.Execute<string>("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save", |
| | | new object[] { "PUR_PurchaseOrder", sJson }); |
| | | |
| | | sRemark = sRemark + " ;生成CLOUD单据" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff"); |
| | | LogService.Write(result.ToString()); |
| | | HReturn = result.ToString(); |
| | | |
| | | if (HReturn.Contains("\"IsSuccess\":false") == true) |
| | | { |
| | | //反序列化json数据 |
| | | var retModel = JsonConvert.DeserializeObject<KingdeeResponse>(HReturn); |
| | | //接收金蝶报错信息 |
| | | var strErrorMsg = string.Empty; |
| | | //遍历获取报错信息 |
| | | foreach (var item in retModel.Result.ResponseStatus.Errors) |
| | | { |
| | | strErrorMsg += item.Message + "\r\n"; |
| | | } |
| | | ; |
| | | sErrMsg = "生成采购单失败!金蝶云提示:" + strErrorMsg; |
| | | //oCn.RunProc("delete from Cg_POOrderBillMain where HInterID=" + oMain.HInterID); |
| | | //oCn.RunProc("delete from Cg_POOrderBillSub where HInterID=" + oMain.HInterID); |
| | | LogService.Write("生成采购单单(源单:无源单)失败-旧方法!" + HReturn + sJson); //写入txt文本 |
| | | oCn.RollBack(); |
| | | return false; |
| | | } |
| | | else |
| | | { |
| | | sRemark = sRemark + sJson; |
| | | oCn.Commit(); |
| | | } |
| | | return true; |
| | | } |
| | | else |
| | | { |
| | | sErrMsg = "生成采购单失败!登录失败!"; |
| | | oCn.RollBack(); |
| | | return false; |
| | | } |
| | | |
| | | } |
| | | catch (Exception e) |
| | | { |
| | | //oCn.RunProc("delete from Cg_POOrderBillMain where HInterID="+oMain.HInterID); |
| | | //oCn.RunProc("delete from Cg_POOrderBillSub where HInterID=" + oMain.HInterID); |
| | | LogService.Write("生成回滚" + e.Message + sRemark); |
| | | sErrMsg = "生成采购单失败!" + e.Message; |
| | | oCn.RollBack(); |
| | | return false; |
| | | } |
| | | #region 单据同步后自动审核,暂时没做 |
| | | |
| | | //oSystemParameterMain.Cg_POOrderBill_AutoCheck.ToUpper() == "Y" |
| | | //if (true) //系统参数 自动审核 |
| | | //{ |
| | | // try |
| | | // { |
| | | // oCn.BeginTran(); |
| | | // //审核WMS单据 |
| | | // //oCn.RunProc("Update Kf_ICStockBillMain Set HChecker='" + oMain.HMaker + "',HCheckDate=getdate(),HBillStatus=2 where HInterID= " + oMain.HInterID.ToString()); |
| | | |
| | | // //提交、审核金蝶云单据 |
| | | // HReturn = ""; |
| | | // string sJson2 = "{\"CreateOrgId\":0,\"Numbers\":[\"" + oMain.HBillNo + "\"]}"; |
| | | // var result2 = client.Execute<string>("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Submit", |
| | | // new object[] { "PUR_PurchaseOrder", sJson2 }); |
| | | |
| | | // sRemark = sRemark + " ;提交CLOUD单据" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff"); |
| | | |
| | | // string sJson3 = "{\"CreateOrgId\":0,\"Numbers\":[\"" + oMain.HBillNo + "\"]}"; |
| | | // var result3 = client.Execute<string>("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit", |
| | | // new object[] { "PUR_PurchaseOrder", sJson3 }); |
| | | |
| | | // sRemark = sRemark + " ;审核CLOUD单据" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff"); |
| | | |
| | | // HReturn = result2.ToString() + "," + result3.ToString(); |
| | | |
| | | // if (HReturn.Contains("\"IsSuccess\":false") == true) |
| | | // { |
| | | // //反序列化json数据 |
| | | // var retModel = JsonConvert.DeserializeObject<KingdeeResponse>(result3); |
| | | // //接收金蝶报错信息 |
| | | // var strErrorMsg = string.Empty; |
| | | // //遍历获取报错信息 |
| | | // foreach (var item in retModel.Result.ResponseStatus.Errors) |
| | | // { |
| | | // strErrorMsg += item.Message + "\r\n"; |
| | | // } |
| | | // ; |
| | | // sErrMsg = "生成其他出库单成功,审核单据失败!金蝶云提示:" + strErrorMsg; |
| | | // LogService.Write("审核单据失败" + sRemark + HReturn); |
| | | // oCn.RollBack(); |
| | | // return true; |
| | | // } |
| | | // else |
| | | // { |
| | | // LogService.Write("生成并审核其他出库单(源单:无源单)成功-旧方法!" + sRemark); |
| | | // sErrMsg = "生成并审核其他出库单成功!单据号为:" + oMain.HBillNo; |
| | | // oCn.Commit(); |
| | | // return true; |
| | | // } |
| | | // } |
| | | // catch (Exception e) |
| | | // { |
| | | // LogService.Write("审核回滚" + sRemark + HReturn); |
| | | // sErrMsg = "审核其他出库单失败!" + e.Message; |
| | | // oCn.RollBack(); |
| | | // return false; |
| | | // } |
| | | //} |
| | | ////todo Cg_POOrderBill_AutoCheck这里应该有点问题 |
| | | //else if (oSystemParameterMain.Cg_POOrderBill_AutoCheck.ToUpper() == "Y") //系统参数 自动提交 |
| | | //{ |
| | | // try |
| | | // { |
| | | // oCn.BeginTran(); |
| | | // //提交金蝶云单据 |
| | | // HReturn = ""; |
| | | // string sJson2 = "{\"CreateOrgId\":0,\"Numbers\":[\"" + oMain.HBillNo + "\"]}"; |
| | | // var result2 = client.Execute<string>("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Submit", |
| | | // new object[] { "STK_MisDelivery", sJson2 }); |
| | | |
| | | // sRemark = sRemark + " ;提交CLOUD单据" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:ffff"); |
| | | |
| | | // HReturn = result2.ToString(); |
| | | |
| | | // if (HReturn.Contains("\"IsSuccess\":false") == true) |
| | | // { |
| | | // //反序列化json数据 |
| | | // var retModel = JsonConvert.DeserializeObject<KingdeeResponse>(HReturn); |
| | | // //接收金蝶报错信息 |
| | | // var strErrorMsg = string.Empty; |
| | | // //遍历获取报错信息 |
| | | // foreach (var item in retModel.Result.ResponseStatus.Errors) |
| | | // { |
| | | // strErrorMsg += item.Message + "\r\n"; |
| | | // } |
| | | // ; |
| | | // sErrMsg = "生成其他出库单成功,提交单据失败!金蝶云提示:" + strErrorMsg; |
| | | // LogService.Write("提交单据失败" + sRemark + HReturn); |
| | | // oCn.RollBack(); |
| | | // return true; |
| | | // } |
| | | // else |
| | | // { |
| | | // LogService.Write("生成并提交其他出库单(源单:无源单)成功-旧方法!" + sRemark); |
| | | // sErrMsg = "生成并提交其他出库单成功!单据号为:" + oMain.HBillNo; |
| | | // oCn.Commit(); |
| | | // return true; |
| | | // } |
| | | // } |
| | | // catch (Exception e) |
| | | // { |
| | | // LogService.Write("提交回滚" + sRemark + HReturn); |
| | | // sErrMsg = "提交其他出库单失败!" + e.Message; |
| | | // oCn.RollBack(); |
| | | // return false; |
| | | // } |
| | | //} |
| | | //else |
| | | //{ |
| | | // sErrMsg = "生成其他出库单成功!单据号为:" + oMain.HBillNo; |
| | | // return true; |
| | | //} |
| | | #endregion |
| | | } |
| | | #endregion |
| | | |
| | | |
| | | #region 其他出库 * |
| | | |
| | | //生成其他出库单 |
| | |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 外购入库单 (源单:收料通知单) |
| | | /// </summary> |