yxj
4 天以前 d7ec4b0e6b090582d50e96f7534f52b286bda49a
Merge branch 'master' of http://101.37.171.70:10101/r/MESWMS-WEBS
1个文件已修改
420 ■■■■■ 已修改文件
CLOUDWEB/WebService1.asmx.cs 420 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
CLOUDWEB/WebService1.asmx.cs
@@ -31411,6 +31411,425 @@
        #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 其他出库        *
        //生成其他出库单
@@ -36402,7 +36821,6 @@
                return false;
            }
        }
        /// <summary>
        /// 外购入库单   (源单:收料通知单)
        /// </summary>