yxj
2025-11-07 aefdf847ad509b52fe46ed58158e75ca66545d09
WebAPI/Controllers/ÌõÂë¹ÜÀí/WEBSController.cs
@@ -2166,50 +2166,73 @@
        [HttpGet]
        public object set_DeleteICStockBillAndWMS_Json(Int64 HInterID, string HBillNo, string HBillType, string HMaker, string MvarReportTitle)
        {
            try
            //获取系统参数
            string sErrMsg = "";
            if (oSystemParameter.ShowBill(ref sErrMsg) == true)
            {
                string WorkList = "撤销已上传单据,单据号:" + HBillNo;
                string SystemName = "WMS-" + MvarReportTitle + "模块";
                oCn.BeginTran();
                ds = oCn.RunProcReturn("exec h_p_WMS_ICStockBillAndWMS_Delete " + HInterID + ",'" + HBillNo + "','" + HBillType + "'", "h_p_WMS_ICStockBillAndWMS_Delete");
                if (ds == null || ds.Tables[0].Rows.Count == 0)
                //撤销前判断金蝶云中单据是否存在
                if (!GetBillQuery_WMS(HInterID, HBillNo, HBillType, HMaker, oSystemParameter.omodel.WMS_CloudMode, oSystemParameter.omodel.WMS_WMSStockCtl_ERPMode, 2, ref sErrMsg))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = sErrMsg;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                try
                {
                    oCn.BeginTran();
                    ds = oCn.RunProcReturn("exec h_p_WMS_ICStockBillAndWMS_Delete " + HInterID + ",'" + HBillNo + "','" + HBillType + "'", "h_p_WMS_ICStockBillAndWMS_Delete");
                    if (ds == null || ds.Tables[0].Rows.Count == 0)
                    {
                        oCn.RollBack();
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;
                        objJsonResult.Message = "撤销单据已上传记录失败,撤销单据判断错误!";
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    else if (DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0]["HBack"]) == 1)
                    {
                        oCn.RollBack();
                        objJsonResult.code = "0";
                        objJsonResult.count = 0;  //失败!
                        objJsonResult.Message = DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HRemark"]);
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                    else
                    {
                        string WorkList = "撤销已上传单据,单据号:" + HBillNo;
                        string SystemName = "WMS-" + MvarReportTitle + "模块";
                        //写入日志
                        oCn.RunProc("Insert into  System_Log(GeginDate,userid,WorkstationName,WorkList,SystemName,NetUserName,State) values " +
                            "(getdate(),'" + HMaker + "','" + ComputerName + "','" + WorkList + "','" + SystemName + "','','撤销')"
                            );
                        oCn.Commit();
                        objJsonResult.code = "0";
                        objJsonResult.count = 1;  //成功!
                        objJsonResult.Message = DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HRemark"]);
                        objJsonResult.data = null;
                        return objJsonResult;
                    }
                }
                catch (Exception e)
                {
                    oCn.RollBack();
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = "撤销单据已上传记录失败,撤销单据判断错误!";
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                else if (DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0]["HBack"]) == 1)
                {
                    oCn.RollBack();
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;  //失败!
                    objJsonResult.Message = DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HRemark"]);
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                else
                {
                    //写入日志
                    oCn.RunProc("Insert into  System_Log(GeginDate,userid,WorkstationName,WorkList,SystemName,NetUserName,State) values " +
                        "(getdate(),'" + HMaker + "','" + ComputerName + "','" + WorkList + "','" + SystemName + "','','撤销')"
                        );
                    oCn.Commit();
                    objJsonResult.code = "0";
                    objJsonResult.count = 1;  //成功!
                    objJsonResult.Message = DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HRemark"]);
                    objJsonResult.Message = "撤销单据已上传记录失败!" + e.ToString();
                    objJsonResult.data = null;
                    return objJsonResult;
                }
            }
            catch (Exception e)
            else
            {
                oCn.RollBack();
                objJsonResult.code = "0";
                objJsonResult.count = 0;
                objJsonResult.Message = "撤销单据已上传记录失败!" + e.ToString();
                objJsonResult.Message = "获取系统参数失败! " + sErrMsg;
                objJsonResult.data = null;
                return objJsonResult;
            }
@@ -2349,10 +2372,18 @@
                    sFIFOCtl = "Y";
                }
                //删除前判断金蝶云中单据是否存在
                if (!GetBillQuery_WMS(HInterID, HBillNo, HBillType, HMaker, oSystemParameter.omodel.WMS_CloudMode, sERPMode, 1, ref sErrMsg))
                {
                    objJsonResult.code = "0";
                    objJsonResult.count = 0;
                    objJsonResult.Message = sErrMsg;
                    objJsonResult.data = null;
                    return objJsonResult;
                }
                try
                {
                    string WorkList = "删除缓存单据,单据号:" + HBillNo;
                    string SystemName = "WMS-" + MvarReportTitle + "模块";
                    oCn.BeginTran();
                    ds = oCn.RunProcReturn("exec h_p_WMS_PonderationBillMain_Temp_Delete " + HInterID + ",'" + HBillNo + "','" + HBillType + "','" + sFIFOCtl + "','" + sERPMode + "'", "h_p_WMS_PonderationBillMain_Temp_Delete");
                    if (ds == null || ds.Tables[0].Rows.Count == 0)
@@ -2375,6 +2406,8 @@
                    }
                    else
                    {
                        string WorkList = "删除缓存单据,单据号:" + HBillNo;
                        string SystemName = "WMS-" + MvarReportTitle + "模块";
                        //写入日志
                        oCn.RunProc("Insert into  System_Log(GeginDate,userid,WorkstationName,WorkList,SystemName,NetUserName,State) values " +
                            "(getdate(),'" + HMaker + "','" + ComputerName + "','" + WorkList + "','" + SystemName + "','','删除')"
@@ -2446,6 +2479,210 @@
        #endregion
        #region é‡‘蝶云单据查询
        public bool GetBillQuery_WMS(Int64 HInterID, string HBillNo, string HBillType, string HMaker, string sCloudMode, string sERPMode, Int64 sHType, ref string sErrMsg)
        {
            //sCloudMode:系统参数  æ˜¯å¦ä¸ºç§æœ‰äº‘模式(N为公有云模式,Y为私有云模式);
            //sERPMode:系统参数  åº“存控制-WMS库存控制ERP模式   (WISE、CLOUD、MES);
            //sHType:值 1 å¯¹åº”缓存列表删除;值 2 å¯¹åº”已上传撤销;
            //公有云模式
            if (sCloudMode == "N")
            {
                string sFormId = "";    //业务对象表单Id
                //生产汇报单
                if (HBillType == "3711")
                {
                    sFormId = "PRD_MORPT";
                }
                //采购入库单、委外入库单
                else if (HBillType == "1201" || HBillType == "1210")
                {
                    sFormId = "STK_InStock";
                }
                //生产入库单
                else if (HBillType == "1202")
                {
                    sFormId = "PRD_INSTOCK";
                }
                //其他入库单
                else if (HBillType == "1203")
                {
                    sFormId = "STK_MISCELLANEOUS";
                }
                //领料出库单
                else if (HBillType == "1204")
                {
                    sFormId = "PRD_PickMtrl";
                }
                //销售出库单
                else if (HBillType == "1205")
                {
                    sFormId = "SAL_OUTSTOCK";
                }
                //其他出库单
                else if (HBillType == "1206")
                {
                    sFormId = "STK_MisDelivery";
                }
                //委外出库单
                else if (HBillType == "1211")
                {
                    sFormId = "SUB_PickMtrl";
                }
                //生产补料单
                else if (HBillType == "1254")
                {
                    sFormId = "PRD_FeedMtrl";
                }
                //委外补料单
                else if (HBillType == "1255")
                {
                    sFormId = "SUB_FEEDMTRL";
                }
                //直接调拨单
                else if (HBillType == "1207")
                {
                    sFormId = "STK_TransferDirect";
                }
                //分步式调出单
                else if (HBillType == "1250")
                {
                    sFormId = "STK_TRANSFEROUT";
                }
                //分步式调入单
                else if (HBillType == "1251")
                {
                    sFormId = "STK_TRANSFERIN";
                }
                //采购退料单(采购入库单红字)
                else if (HBillType == "1239")
                {
                    sFormId = "PUR_MRB";
                }
                //生产退库单(产品入库单红字)
                else if (HBillType == "1245")
                {
                    sFormId = "PRD_RetStock";
                }
                //其他入库单(红字)
                else if (HBillType == "1248")
                {
                    sFormId = "";
                }
                //委外退库单(委外入库单红字)
                else if (HBillType == "1246")
                {
                    sFormId = "";
                }
                //生产退料单(生产领料单红字)
                else if (HBillType == "1244")
                {
                    sFormId = "PRD_ReturnMtrl";
                }
                //销售退货单(销售出库单红字)
                else if (HBillType == "1247")
                {
                    sFormId = "SAL_RETURNSTOCK";
                }
                //其他出库单(红字)
                else if (HBillType == "1249")
                {
                    sFormId = "";
                }
                //委外退料单(委外出库单红字)
                else if (HBillType == "1238")
                {
                    sFormId = "SUB_RETURNMTRL";
                }
                //登录金蝶
                var loginRet = InvokeHelper.Login();
                var isSuccess = JObject.Parse(loginRet)["LoginResultType"].Value<int>();
                //判断是否登录成功
                if (isSuccess < 0)
                {
                    sErrMsg = "默认金蝶云账号登录失败!";
                    return false;
                }
                else
                {
                    //单据查询
                    var sJson = new
                    {
                        FormId = sFormId,
                        FieldKeys = "FBillNo",
                        FilterString = $@"FBillNo='{HBillNo}'",
                        OrderString = "",
                        TopRowCount = 0,
                        StartRow = 0,
                        Limit = 0
                    };;
                    var _result = InvokeHelper.Query(sFormId, JsonConvert.SerializeObject(sJson));
                    var _saveObj = JArray.Parse(_result);
                    //判断返回的数组中有无数据,无数据代表没查询到对应单据
                    if (_saveObj.Count == 0)
                    {
                        return true;
                    }
                    else
                    {
                        //sHType = 1对应缓存列表删除
                        if (sHType == 1)
                        {
                            //判断返回的数组数据中是否存在"false",存在代表递入的业务对象表单Id不正确
                            if (_saveObj[0][0].ToString().Contains("false") == true)
                            {
                                return true;
                            }
                            else
                            {
                                sErrMsg = "数据存在异常,不允许删除!单据号:" + HBillNo + " åœ¨é‡‘蝶云中已生成单据,请先在金蝶云里删除该单据,并在缓存列表的已上传界面撤销该单据,再对该单据进行编辑或删除操作!";
                                return false;
                            }
                        }
                        //sHType = 2对应已上传撤销
                        else
                        {
                            //判断返回的数组数据中是否存在"false",存在代表递入的业务对象表单Id不正确
                            if (_saveObj[0][0].ToString().Contains("false") == true)
                            {
                                sErrMsg = "此模块暂不支持撤销功能!";
                                return false;
                            }
                            else
                            {
                                sErrMsg = "撤销单据失败,单据号:" + HBillNo + ",金蝶云里未删除,不允许撤销!";
                                return false;
                            }
                        }
                    }
                }
            }
            //私有云模式
            else
            {
                ds = oCn.RunProcReturn("exec h_p_WMS_BillQuery " + HInterID.ToString() + ",'" + HBillNo + "','" + HBillType + "','" + sERPMode + "'," + sHType.ToString(), "h_p_WMS_BillQuery");
                if (ds == null || ds.Tables[0].Rows.Count == 0)
                {
                    sErrMsg = "单据查询发生错误!";
                    return false;
                }
                else if (DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0]["HBack"]) == 1)
                {
                    sErrMsg = DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HRemark"]);
                    return false;
                }
                else
                {
                    return true;
                }
            }
        }
        #endregion
        #endregion