using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using Kingdee.BOS.WebApi.Client;
namespace BLL
{
public class ClsKf_MateOutBill //领料单
{
///
/// 根据过滤条件,返回源单信息-生产投料单列表
///
/// 过滤条件
///
///
public DataSet GetSc_PPBomBillList(string sWhere, ref string sErr)
{
try
{
DAL.Cls_S_IF_PPBomBillList_Lite dal = new DAL.Cls_S_IF_PPBomBillList_Lite();
return dal.DisSourceBillList(sWhere);
}
catch (Exception e)
{
sErr = sErr + "," + e.Message;
return null;
}
}
//生成领料出库单
public bool set_SaveMateOutBill_New(Model.ClsKf_MateOutBillMain 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_MateOutBill_ERPMode.ToUpper() == "WISE") //判断同步模式是金蝶WISE
{
if (SaveMateOutBill_K3(oMain, sHSourceType, oSystemParameter.omodel, ref sErrMsg))
{
//"保存成功!";
sErrMsg = "保存成功!" + oMain.HBillNo;
return true;
}
else
{
//"保存失败!";
sErrMsg = sErrMsg;
return false;
}
}
if (oSystemParameter.omodel.Kf_MateOutBill_ERPMode.ToUpper() == "CLOUD") //判断同步模式是金蝶CLOUD
{
if (set_SaveMateOutBill_CLD(oMain, sHSourceType, oSystemParameter.omodel, ref sErrMsg) == true)
{
//"保存成功!";
return true;
}
else
{
//"保存失败!";
return false;
}
}
sErrMsg = "保存领料出库单失败!" + sErrMsg;
return false;
}
#region 领料出库K3 *
///
/// 生成领料出库单K3
///
///
///
///
public bool SaveMateOutBill_K3(Model.ClsKf_MateOutBillMain oMain, string sHSourceType, Pub_Class.ClsXt_SystemParameterMain oSystemParameterMain, ref string sErrMsg)
{
SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
DAL.ClsKf_MateOutBill dal = new DAL.ClsKf_MateOutBill();
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_MateOutBillSub_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('1204','1204'," + 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_MateOutBill_Insert_New " + oMain.HInterID.ToString() + ",'" + oMain.HBillNo + "'," + oMain.HBillerID.ToString() + ",'" + sHSourceType + "'");
//更新关联数量
if (sHSourceType == "3720") //生产任务单-投料
{
oCn.RunProc("exec h_p_Sc_UpDateRelation_PPBomToMateOut_Add " + oMain.HInterID.ToString());
//回填K3关联数量
oCn.RunProc("exec h_p_IFK3_ToERP_MateOutBill_UpdateBillRelateData_PPBom_New " + oMain.HInterID.ToString());
}
else //无源单
{
//回填K3关联数量
oCn.RunProc("exec h_p_IFK3_ToERP_MateOutBill_UpdateBillRelateData_New " + oMain.HInterID.ToString());
}
//审核单据
if (oSystemParameterMain.Kf_MateOutBill_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_MateOutBill_Check_New " + oMain.HInterID.ToString() + "," + oMain.HBillerID.ToString());
//更新K3库存
oCn.RunProc("exec h_p_IFK3_ToERP_MateOutBill_UpdateStock_New " + oMain.HInterID.ToString());
oCn.RunProc("exec h_p_IFK3_ToERP_MateOutBill_UpdateOrderStock_New " + 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
#region 领料出库CLOUD *
public bool set_SaveMateOutBill_CLD(Model.ClsKf_MateOutBillMain oMain, string sHSourceType, Pub_Class.ClsXt_SystemParameterMain oSystemParameterMain, ref string sErrMsg)
{
if (SaveMateOutBill_CLD(oMain, oSystemParameterMain, ref sErrMsg))
{
//"保存成功!";
sErrMsg = "保存成功!" + oMain.HBillNo;
return true;
}
else
{
//"保存失败!";
sErrMsg = sErrMsg;
return false;
}
}
///
/// 生产领料
///
///
///
///
public bool SaveMateOutBill_CLD(Model.ClsKf_MateOutBillMain oMain, Pub_Class.ClsXt_SystemParameterMain oSystemParameterMain, ref string sErrMsg)
{
SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
try
{
DataSet Ds;
//写入WMS生产领料单
oCn.BeginTran();
//插入子表
oCn.RunProc("EXEC h_p_Kf_MateOutBillSub_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" +
") " +
" values('1204','1204'," + oMain.HInterID.ToString() + ",'" + oMain.HBillNo + "',convert(varchar(10),getdate(),120),'" + oMain.HMainSourceBillType + "'" +
",2012,1,'" + 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) +
") ");
//更新关联数量
oCn.RunProc("exec h_p_Sc_UpDatePPBomRelation_Add " + oMain.HInterID.ToString());
if (oSystemParameterMain.Kf_MateOutBill_AutoCheck == "Y") //系统参数 自动审核
{
//审核单据
oCn.RunProc("Update Kf_ICStockBillMain Set HChecker='" + oMain.HMaker + "',HCheckDate=convert(varchar(10),getdate(),120),HBillStatus=2 where HInterID= " + oMain.HInterID.ToString());
}
//根据TMP表 返回 信息
Ds = oCn.RunProcReturn("exec h_p_Kf_GetMateOutBill_CLD " + oMain.HInterID.ToString() + ",'" + oMain.HBillNo + "'", "h_p_Kf_GetMateOutBill_CLD");
if (Ds == null || Ds.Tables[0].Rows.Count == 0 || Ds.Tables[1].Rows.Count == 0)
{
sErrMsg = "获取子表信息失败!";
oCn.RollBack();
return false;
}
else
{
string sJson_Main = "{\"Creator\":\"\",\"NeedUpDateFields\":[],\"Model\": { \"FBILLNO\":\"" + oMain.HBillNo + "\"," +
//\"FID\":\"" + oMain.HInterID.ToString() + "\"," +
"\"FStockOrgId\":{\"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HSTOCKORGID"]) + "\"}," +
"\"FPRDORGID\":{\"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HPRDORGID"]) + "\"}," +
//"\"FWorkShopId\":{\"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FWorkShopId"]) + "\"}, " +
"\"FPickerId\":{\"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FPickerId"]) + "\"}, " +
"\"FSTOCKERID\":{\"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSTOCKERID"]) + "\"}, " +
"\"FBillType\": {\"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FBillType"]) + "\"}," +
"\"FEntity\": [ ";
string sJson_Entry = "";
for (int i = 0; i < Ds.Tables[1].Rows.Count; i++)
{
if (sJson_Entry != "")
{
sJson_Entry = sJson_Entry + " , ";
}
string sJson_BatchNo = "";
if (Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["HISBATCHMANAGE"]) == "1") //是否启用批次管理
{
sJson_BatchNo = " \"FLOT\": {\"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FLOT"]) + "\"}, \"FLOT_TEXT\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FLOT"]) + "\" , ";
}
else
{
sJson_BatchNo = "";
}
//自定义字段处理
//
sJson_Entry = sJson_Entry + "{ \"FSEQ\":\"" + Convert.ToString(i + 1) + "\", " +
"\"FPARENTMATERIALID\" : { \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FPARENTMATERIALID"]) + "\" } , " +
"\"FUNITID\":{\"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FUNITID"]) + "\"}, " +
"\"FBASEUNITID\" : {\"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FBASEUNITID"]) + "\"} , " +
sJson_BatchNo +
//"\"FLOT\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FLot"]) + "\" }," +
//"\"FLOT_TEXT\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FLot"]) + "\" , " +
"\"FBASESTOCKACTUALQTY\": " + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FBASESTOCKACTUALQTY"]) + " ," +
"\"FSTOCKUNITID\" : {\"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FSTOCKUNITID"]) + "\"} , " +
"\"FMOBILLNO\" : \"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FMOBILLNO"]) + "\" , " +
"\"FMOID\" : " + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FMOID"]) + " , " +
"\"FMOENTRYID\" : " + Pub_Class.ClsPub.isLong(Ds.Tables[1].Rows[i]["FMOENTRYID"]) + " , " +
"\"FMOENTRYSEQ\" :" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FMOENTRYSEQ"]) + " , " +
//" \"F_PAEZ_TEXT1\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["F_PAEZ_TEXT1"]) + "\", " +
"\"FPPBOMBILLNO\" : \"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FPPBOMBILLNO"]) + "\" , " +
"\"FPPBOMENTRYID\" : " + Pub_Class.ClsPub.isLong(Ds.Tables[1].Rows[i]["FPPBOMENTRYID"]) + " , " +
"\"FMATERIALID\":{\"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FMATERIALID"]) + "\"} , " +
"\"FSTOCKID\":{\"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FSTOCKID"]) + "\"}," +
"\"FStockLocId\":{\"FSTOCKLOCID__FF100002\":{\"FNUMBER\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FStockLocId"]) + "\"}}," +
"\"FAPPQTY\":" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FAPPQTY"]) + ", " +
"\"FACTUALQTY\":" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FACTUALQTY"]) + ", " +
"\"FEntryWorkShopId\":{\"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FWORKSHOPID"]) + "\"}, " +
"\"FSRCBILLTYPE\" : \"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FSRCBILLTYPE"]) + "\" , " +
"\"FSRCBILLNO\" : \"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FSRCBILLNO"]) + "\" , " +
"\"FSRCINTERID\" : " + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FSRCINTERID"]) + " , " +
"\"FSRCENTRYID\" : " + Pub_Class.ClsPub.isLong(Ds.Tables[1].Rows[i]["FSRCENTRYID"]) + " , " +
"\"FSRCENTRYSEQ\" : " + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FSRCENTRYSEQ"]) + " , " +
//" \"FOPERID\":" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FOPERID"]) + ", " +
"\"FREQSRC\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FREQSRC"]) + "\", " +
"\"FREQBILLID\":" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FREQBILLID"]) + ", " +
"\"FREQBILLNO\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FREQBILLNO"]) + "\", " +
"\"FREQENTRYID\":" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FREQENTRYID"]) + ", " +
"\"FREQENTRYSEQ\":" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FREQENTRYSEQ"]) + ", " +
"\"FEntrySrcEntrySeq\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FEntrySrcEntrySeq"]) + "\" , " +
"\"FPARENTOWNERTYPEID\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FPARENTOWNERTYPEID"]) + "\" , " +
"\"FPARENTOWNERID\":{\"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["HPARENTOWNERID"]) + "\"} , " +
"\"FOWNERID\":{\"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["HOWNERID"]) + "\"} , " +
"\"FEntity_Link\": [ { " +
"\"FEntity_Link_FFlowId\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FEntity_Link_FFlowId"]) + "\" , " +
"\"FEntity_Link_FFlowLineId\":" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FEntity_Link_FFlowLineId"]) + " , " +
"\"FEntity_Link_FRuleId\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FEntity_Link_FRuleId"]) + "\" , " +
"\"FEntity_Link_FSTableName\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FEntity_Link_FSTableName"]) + "\" , " +
"\"FEntity_Link_FSBillId\":" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FEntity_Link_FSBillId"]) + " , " +
"\"FEntity_Link_FSId\":" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FEntity_Link_FSId"]) + " " +
" } ] } ";
}
//"\"FInStockEntry_Link_FSId\":" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FInStockEntry_Link_FSId"]) +
string sJson_End = " ] }}";
string sJson = sJson_Main + sJson_Entry + sJson_End;
//从配置文件获取 CLOUD网址、账套信息、登录用户、登录密码
if (!Pub_Class.ClsPub.GetCLOUDLoginInfo(ref Pub_Class.ClsPub.sExeReturnInfo))
{
sErrMsg = Pub_Class.ClsPub.sExeReturnInfo;
return false;
}
//生成
string HReturn;
ApiClient client = new ApiClient(Pub_Class.ClsPub.sCLOUDUrl);
string dbId = Pub_Class.ClsPub.sCLOUDAcc; //AotuTest117
bool bLogin = client.Login(dbId, Pub_Class.ClsPub.sCLOUDUseName, Pub_Class.ClsPub.sCLOUDPsd, 2052);
if (bLogin)
{
var result = client.Execute("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Save",
new object[] { "PRD_PickMtrl", sJson });
if (oSystemParameterMain.Kf_MateOutBill_AutoCheck == "Y") //系统参数 自动审核
{
string sJson2 = "{\"CreateOrgId\":0,\"Numbers\":[\"" + oMain.HBillNo + "\"]}";
var result2 = client.Execute("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Submit",
new object[] { "PRD_PickMtrl", sJson2 });
string sJson3 = "{\"CreateOrgId\":0,\"Numbers\":[\"" + oMain.HBillNo + "\"]}";
var result3 = client.Execute("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit",
new object[] { "PRD_PickMtrl", sJson3 });
HReturn = result.ToString() + "," + result2.ToString() + "," + result3.ToString();
}
else
{
HReturn = result.ToString();
}
if (HReturn.Contains("\"IsSuccess\":false") == true)
{
sErrMsg = "生产领料单失败!" + HReturn + sJson;
oCn.RollBack();
return false;
}
else
{
oCn.Commit();
return true;
}
}
else
{
sErrMsg = "生产领料单失败!登录失败!";
oCn.RollBack();
return false;
}
}
}
catch (Exception e)
{
sErrMsg = "生产领料单失败!" + e.Message;
oCn.RollBack();
return false;
}
}
#endregion
}
}