using System; 
 | 
using System.Collections.Generic; 
 | 
using System.Text; 
 | 
using System.Data; 
 | 
using Kingdee.BOS.WebApi.Client; 
 | 
  
 | 
namespace BLL 
 | 
{ 
 | 
    public class ClsKf_ProductInBackBill 
 | 
    { 
 | 
        /// <summary> 
 | 
        /// 根据过滤条件,返回源单信息-产品入库单列表(蓝字)(红字产品入库源单) 
 | 
        /// </summary> 
 | 
        /// <param name="sWhere">过滤条件</param> 
 | 
        /// <param name="sErr">错误信息</param> 
 | 
        /// <returns></returns> 
 | 
        public DataSet GetKf_ProductInBillList(string sWhere, ref string sErr) 
 | 
        { 
 | 
            try 
 | 
            { 
 | 
                DAL.Cls_S_IF_ProductInBill_Lite dal = new DAL.Cls_S_IF_ProductInBill_Lite(); 
 | 
                return dal.DisSourceBillList(sWhere); 
 | 
            } 
 | 
            catch (Exception e) 
 | 
            { 
 | 
                sErr = sErr + "," + e.Message; 
 | 
                return null; 
 | 
            } 
 | 
        } 
 | 
  
 | 
        /// <summary> 
 | 
        /// 根据过滤条件,返回源单信息-生产任务单列表 退库(红字产品入库源单) 
 | 
        /// </summary> 
 | 
        /// <param name="sWhere">过滤条件</param> 
 | 
        /// <param name="sErr">错误信息</param> 
 | 
        /// <returns></returns> 
 | 
        public DataSet GetSc_ICMOBackBillList(string sWhere, ref string sErr) 
 | 
        { 
 | 
            try 
 | 
            { 
 | 
                DAL.Cls_S_IF_ICMOBackBill_Lite dal = new DAL.Cls_S_IF_ICMOBackBill_Lite(); 
 | 
                return dal.DisSourceBillList(sWhere); 
 | 
            } 
 | 
            catch (Exception e) 
 | 
            { 
 | 
                sErr = sErr + "," + e.Message; 
 | 
                return null; 
 | 
            } 
 | 
        } 
 | 
  
 | 
  
 | 
        //生成产品退库单  
 | 
        public bool set_SaveProductInBackBill_New(Model.ClsKf_ICStockBillMain oMain, string sHSourceType, ref string sErrMsg) 
 | 
        { 
 | 
            //获取系统参数 
 | 
            Pub_Class.ClsXt_SystemParameter oSystemParameter = new Pub_Class.ClsXt_SystemParameter(); 
 | 
            if (oSystemParameter.ShowBill(ref sErrMsg) == false) 
 | 
            { 
 | 
                sErrMsg = "获取系统参数失败! " + sErrMsg; 
 | 
                return false; 
 | 
            } 
 | 
            // 
 | 
            if (oSystemParameter.omodel.Kf_ProductInBackBill_ERPMode.ToUpper() == "WISE") //判断同步模式是金蝶WISE 
 | 
            { 
 | 
                if (SaveProductInBackBill_K3(oMain, sHSourceType, oSystemParameter.omodel, ref sErrMsg)) 
 | 
                { 
 | 
                    //"保存成功!"; 
 | 
                    sErrMsg = "保存成功!" + oMain.HBillNo; 
 | 
                    return true; 
 | 
                } 
 | 
                else 
 | 
                { 
 | 
                    //"保存失败!"; 
 | 
                    sErrMsg = sErrMsg; 
 | 
                    return false; 
 | 
                } 
 | 
            } 
 | 
            if (oSystemParameter.omodel.Kf_ProductInBackBill_ERPMode.ToUpper() == "CLOUD")  //判断同步模式是金蝶CLOUD 
 | 
            { 
 | 
  
 | 
            } 
 | 
  
 | 
            sErrMsg = "保存产品退库单失败!" + sErrMsg; 
 | 
            return false; 
 | 
        } 
 | 
  
 | 
  
 | 
  
 | 
  
 | 
        #region 产品退库K3  产品入库(红字)   * 
 | 
  
 | 
        /// <summary> 
 | 
        /// 生成产品退库单K3 
 | 
        /// </summary> 
 | 
        /// <param name="oMain"></param> 
 | 
        /// <param name="sErrMsg"></param> 
 | 
        /// <returns></returns> 
 | 
        public bool SaveProductInBackBill_K3(Model.ClsKf_ICStockBillMain oMain, string sHSourceType, Pub_Class.ClsXt_SystemParameterMain oSystemParameterMain, ref string sErrMsg) 
 | 
        { 
 | 
            SQLHelper.ClsCN oCn = new SQLHelper.ClsCN(); 
 | 
            DAL.ClsKf_ProductInBackBill dal = new DAL.ClsKf_ProductInBackBill(); 
 | 
            dal.omodel = oMain; 
 | 
            //上传前必填项判断 
 | 
            if (oMain.HDeptID == 0) 
 | 
            { 
 | 
                sErrMsg = "部门没有选择!"; 
 | 
                return false; 
 | 
            } 
 | 
            if (oMain.HSecManagerID == 0) 
 | 
            { 
 | 
                sErrMsg = "验收没有选择!"; 
 | 
                return false; 
 | 
            } 
 | 
            if (oMain.HKeeperID == 0) 
 | 
            { 
 | 
                sErrMsg = "保管没有选择!"; 
 | 
                return false; 
 | 
            } 
 | 
  
 | 
            try 
 | 
            { 
 | 
                //判断会计期是否合理 
 | 
                string s = ""; 
 | 
                int sYear = 0; 
 | 
                int sPeriod = 0; 
 | 
                if (DBUtility.Xt_BaseBillFun.Fun_AllowYearPeriod(oMain.HDate, ref sYear, ref sPeriod, ref s) == false) 
 | 
                { 
 | 
                    sErrMsg = s; 
 | 
                    return false; 
 | 
                } 
 | 
                oMain.HYear = sYear; 
 | 
                oMain.HPeriod = sPeriod; 
 | 
  
 | 
                DataSet Ds; 
 | 
                oCn.BeginTran(); 
 | 
                //生成出入库单据 
 | 
                //插入子表 
 | 
                oCn.RunProc("EXEC h_p_Kf_ProductInBackBillSub_Insert_New " + oMain.HInterID.ToString() + ",'" + oMain.HBillNo + "','" + sHSourceType + "'"); 
 | 
                //插入主表 
 | 
                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" + 
 | 
                ") " + 
 | 
                " values('1245','1245'," + oMain.HInterID.ToString() + ",'" + oMain.HBillNo + "',convert(varchar(10),getdate(),120),'" + oMain.HMainSourceBillType + "'" + 
 | 
                ", " + oMain.HYear.ToString() + "," + oMain.HPeriod.ToString() + ",'" + oMain.HRemark + "','" + oMain.HMaker + "',convert(varchar(10),getdate(),120)" + 
 | 
                ", " + 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) + 
 | 
                ") "); 
 | 
  
 | 
                //新增K3子表、主表 
 | 
                oCn.RunProc("exec h_p_IFK3_ToERP_ProductInBackBill_Insert_New " + oMain.HInterID.ToString() + ",'" + oMain.HBillNo + "'," + oMain.HBillerID.ToString() + ",'" + sHSourceType + "'"); 
 | 
  
 | 
                //更新关联数量 
 | 
                if (sHSourceType == "3710")         //生产任务单-退库 
 | 
                { 
 | 
                    oCn.RunProc("exec h_p_Sc_UpDateRelation_ICMOToProductInBack_Add " + oMain.HInterID.ToString()); 
 | 
                    //回填K3关联数量 
 | 
                    oCn.RunProc("exec h_p_IFK3_ToERP_ProductInBackBill_UpdateBillRelateData_ICMO " + oMain.HInterID.ToString()); 
 | 
                } 
 | 
                else if (sHSourceType == "1202")    //产品入库单-蓝字 
 | 
                { 
 | 
                    oCn.RunProc("exec h_p_Kf_UpDateRelation_ProductInToProductInBack_Add " + oMain.HInterID.ToString()); 
 | 
                    //回填K3关联数量 
 | 
                    oCn.RunProc("exec h_p_IFK3_ToERP_ProductInBackBill_UpdateBillRelateData_Blue " + oMain.HInterID.ToString()); 
 | 
                } 
 | 
                else    //无源单 
 | 
                { 
 | 
                    //回填K3关联数量 
 | 
                    oCn.RunProc("exec h_p_IFK3_ToERP_ProductInBackBill_UpdateBillRelateData " + oMain.HInterID.ToString()); 
 | 
                } 
 | 
  
 | 
                //审核单据 
 | 
                if (oSystemParameterMain.Kf_ProductInBackBill_AutoCheck == "Y") //系统参数  自动审核  
 | 
                { 
 | 
                    //审核单据 
 | 
                    oCn.RunProc("Update Kf_ICStockBillMain Set HChecker='" + oMain.HMaker + "',HCheckDate=convert(varchar(10),getdate(),120) where HInterID= " + oMain.HInterID.ToString()); 
 | 
  
 | 
                    //审核K3单据 
 | 
                    oCn.RunProc("exec h_p_IFK3_ToERP_ProductInBackBill_Check " + oMain.HInterID.ToString() + "," + oMain.HBillerID.ToString()); 
 | 
                    //更新K3库存 
 | 
                    oCn.RunProc("exec h_p_IFK3_ToERP_ProductInBackBill_UpdateStock " + oMain.HInterID.ToString()); 
 | 
                    oCn.RunProc("exec h_p_IFK3_ToERP_ProductInBackBill_UpdateOrderStock " + oMain.HInterID.ToString()); 
 | 
                } 
 | 
  
 | 
                //K3负库存判断 
 | 
                if (oSystemParameterMain.WMS_ERPStockCtl == "Y") //系统参数  提交后ERP负库存控制  
 | 
                { 
 | 
                    //判断条码库存是否异常(负库存、库存大于条码初始化) 
 | 
                    Ds = oCn.RunProcReturn("EXEC h_p_KF_ICInventoryBarCodeQtyCtrl  " + oMain.HInterID.ToString(), "h_p_KF_ICInventoryBarCodeQtyCtrl"); 
 | 
                    if (DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0][0]) == 1) 
 | 
                    { 
 | 
  
 | 
                    } 
 | 
                    else 
 | 
                    { 
 | 
                        sErrMsg = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0][1]); 
 | 
                        oCn.RollBack(); 
 | 
                        return false; 
 | 
                    } 
 | 
                } 
 | 
  
 | 
                sErrMsg = "新增单据成功!"; 
 | 
                oCn.Commit(); 
 | 
                return true; 
 | 
            } 
 | 
            catch (Exception e) 
 | 
            { 
 | 
                sErrMsg = "生成产品退库单失败!" + e.Message; 
 | 
                oCn.RollBack(); 
 | 
                return false; 
 | 
            } 
 | 
        } 
 | 
  
 | 
        #endregion 
 | 
  
 | 
  
 | 
  
 | 
  
 | 
    } 
 | 
} 
 |