using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using Kingdee.BOS.WebApi.Client;
namespace BLL
{
public class ClsKf_SellOutBill
{
///
/// 根据过滤条件,返回源单信息-销售订单列表
///
/// 过滤条件
/// 错误信息
///
public DataSet GetXs_SeOrderBillList(string sWhere, ref string sErr)
{
try
{
DAL.Cls_S_IF_SEOrderBill_Lite dal = new DAL.Cls_S_IF_SEOrderBill_Lite();
return dal.DisSourceBillList(sWhere);
}
catch (Exception e)
{
sErr = sErr + "," + e.Message;
return null;
}
}
///
/// 根据过滤条件,返回源单信息-下架通知单列表
///
/// 过滤条件
/// 错误信息
///
public DataSet GetXs_SeDownStockBillList(string sWhere, ref string sErr)
{
try
{
DAL.Cls_S_Xs_SeDownStockBill_Lite dal = new DAL.Cls_S_Xs_SeDownStockBill_Lite();
return dal.DisSourceBillList(sWhere);
}
catch (Exception e)
{
sErr = sErr + "," + e.Message;
return null;
}
}
///
/// 根据过滤条件,返回源单信息-发货通知单列表
///
///
///
///
public DataSet GetXs_SeOutStockBillList(string sWhere, ref string sErr)
{
try
{
DAL.Cls_S_IF_SeOutStockBill_Lite dal = new DAL.Cls_S_IF_SeOutStockBill_Lite();
return dal.DisSourceBillList(sWhere);
}
catch (Exception e)
{
sErr = sErr + "," + e.Message;
return null;
}
}
//生成销售出库单
public bool set_SaveSellOutBill_New(Model.ClsKf_SellOutBillMain oMain, string sHSourceType, ref string sErrMsg)
{
string sHBillNo = "";
//获取系统参数
Pub_Class.ClsXt_SystemParameter oSystemParameter = new Pub_Class.ClsXt_SystemParameter();
if (oSystemParameter.ShowBill(ref sErrMsg) == false)
{
sErrMsg = "获取系统参数失败! " + sErrMsg;
return false;
}
//
if (oSystemParameter.omodel.Kf_SellOutBill_ERPMode.ToUpper() == "WISE") //判断同步模式是金蝶WISE
{
if (oSystemParameter.omodel.WMS_CampanyName == "飞龙") //系统参数 客户定制化名称 空白为通用
{
if (SaveSellOutBill_MulSource_K3(oMain, sHSourceType, oSystemParameter.omodel, ref sHBillNo, ref sErrMsg))
{
//"保存成功!";
sErrMsg = "保存成功!" + oMain.HBillNo;
return true;
}
else
{
//"保存失败!";
sErrMsg = sErrMsg;
return false;
}
}
else
{
if (SaveSellOutBill_K3(oMain, sHSourceType, oSystemParameter.omodel, ref sErrMsg))
{
//"保存成功!";
sErrMsg = "保存成功!" + oMain.HBillNo;
return true;
}
else
{
//"保存失败!";
sErrMsg = sErrMsg;
return false;
}
}
}
if (oSystemParameter.omodel.Kf_SellOutBill_ERPMode.ToUpper() == "CLOUD") //判断同步模式是金蝶CLOUD
{
if (set_SaveSellOutBill_CLD(oMain, sHSourceType, oSystemParameter.omodel, ref sErrMsg) == true)
{
//"保存成功!";
return true;
}
else
{
//"保存失败!";
return false;
}
}
sErrMsg = "保存销售出库单失败!" + sErrMsg;
return false;
}
#region 销售出库K3 *
///
/// 生成销售出库单K3
///
///
///
///
public bool SaveSellOutBill_K3(Model.ClsKf_SellOutBillMain oMain, string sHSourceType, Pub_Class.ClsXt_SystemParameterMain oSystemParameterMain, ref string sErrMsg)
{
SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
DAL.ClsKf_SellOutBill dal = new DAL.ClsKf_SellOutBill();
dal.omodel = oMain;
//上传前必填项判断
if (oMain.HDeptID == 0)
{
sErrMsg = "部门没有选择!";
return false;
}
if (oMain.HSupID == 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_SellOutBillSub_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('1205','1205'," + 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_SellOutBill_Insert_New " + oMain.HInterID.ToString() + ",'" + oMain.HBillNo + "'," + oMain.HBillerID.ToString() + ",'" + sHSourceType + "'");
//更新关联数量
if (sHSourceType == "1401") //销售订单
{
oCn.RunProc("exec h_p_Xs_UpDateRelation_SeOrderToSellOut_Add " + oMain.HInterID.ToString());
//回填K3关联数量
oCn.RunProc("exec h_p_IFK3_ToERP_SellOutBill_UpdateBillRelateData_SeOrder_New " + oMain.HInterID.ToString());
}
else if (sHSourceType == "1402") //发货通知单
{
oCn.RunProc("exec h_p_Xs_UpDateRelation_SeOutStockToSellOut_Add " + oMain.HInterID.ToString());
//回填K3关联数量
oCn.RunProc("exec h_p_IFK3_ToERP_SellOutBill_UpdateBillRelateData_SeOutStock_New " + oMain.HInterID.ToString());
}
else //无源单
{
//回填K3关联数量
oCn.RunProc("exec h_p_IFK3_ToERP_SellOutBill_UpdateBillRelateData_New " + oMain.HInterID.ToString());
}
//审核单据
if (oSystemParameterMain.Kf_SellOutBill_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_SellOutBill_Check_New " + oMain.HInterID.ToString() + "," + oMain.HBillerID.ToString());
//更新K3库存
oCn.RunProc("exec h_p_IFK3_ToERP_SellOutBill_UpdateStock_New " + oMain.HInterID.ToString());
oCn.RunProc("exec h_p_IFK3_ToERP_SellOutBill_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;
}
}
//同步生成采购入库单
if (oSystemParameterMain.Kf_SellOutBill_AutoSavePOStockInBill == "Y") //系统参数 同步生成采购入库单
{
//判断所登录用户账号是否绑定了对应供应商
DataSet Ds2 = oCn.RunProcReturn(" select HSupID from Gy_Czygl where Czymc= '" + oMain.HMaker + "'", "Gy_Czygl");
if (Ds2 == null || Ds2.Tables[0].Rows.Count == 0)
{
sErrMsg = "所登录用户账号不正确,请重新登录!";
oCn.RollBack();
return false;
}
else if (DBUtility.ClsPub.isLong(Ds2.Tables[0].Rows[0]["HSupID"]) == 0)
{
sErrMsg = "所登录用户账号没有绑定对应供应商,无法同步生成外购入库单,生成单据失败,请先设置对应供应商!";
oCn.RollBack();
return false;
}
long HNewInterID = DBUtility.ClsPub.CreateBillID_Prod("1201", ref sErrMsg);
string HNewBillNo = DBUtility.ClsPub.CreateBillCode_Prod("1201", ref sErrMsg, true);
string HNewSourceType = "-1"; //无源单
//新增ERP子表、主表
oCn.RunProc("exec h_p_Kf_SellOutBill_AutoSavePOStockInBill " + oMain.HInterID.ToString() + "," + HNewInterID + ",'" + HNewBillNo + "'");
//新增K3子表、主表
oCn.RunProc("exec h_p_IFK3_ToERP_POStockInBill_Insert_New " + HNewInterID + ",'" + HNewBillNo + "'," + oMain.HBillerID.ToString() + ",'" + HNewSourceType + "'");
//回填K3关联数量
oCn.RunProc("exec h_p_IFK3_ToERP_POStockInBill_UpdateBillRelateData_New " + HNewInterID);
//审核单据
if (oSystemParameterMain.Kf_POStockInBill_AutoCheck == "Y") //系统参数 自动审核
{
//审核单据
oCn.RunProc("Update Kf_ICStockBillMain Set HChecker='" + oMain.HMaker + "',HCheckDate=convert(varchar(10),getdate(),120) where HInterID= " + HNewInterID);
//审核K3单据
oCn.RunProc("exec h_p_IFK3_ToERP_POStockInBill_Check_New " + HNewInterID + "," + oMain.HBillerID.ToString());
//更新K3库存
oCn.RunProc("exec h_p_IFK3_ToERP_POStockInBill_UpdateStock_New " + HNewInterID);
oCn.RunProc("exec h_p_IFK3_ToERP_POStockInBill_UpdateOrderStock_New " + HNewInterID);
}
}
sErrMsg = "新增单据成功!";
oCn.Commit();
return true;
}
catch (Exception e)
{
sErrMsg = "生成销售出库单失败!" + e.Message;
oCn.RollBack();
return false;
}
}
#endregion
#region 销售出库K3 多源单生成多张单据 *
///
/// 生成销售出库单K3
///
///
///
///
public bool SaveSellOutBill_MulSource_K3(Model.ClsKf_SellOutBillMain oMain, string sHSourceType, Pub_Class.ClsXt_SystemParameterMain oSystemParameterMain, ref string sHBillNo, ref string sErrMsg)
{
SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
DAL.ClsKf_SellOutBill dal = new DAL.ClsKf_SellOutBill();
dal.omodel = oMain;
sHBillNo = "";
//上传前必填项判断
if (oMain.HDeptID == 0)
{
sErrMsg = "部门没有选择!";
return false;
}
if (oMain.HSupID == 0)
{
sErrMsg = "客户没有选择!";
return false;
}
if (oMain.HSecManagerID == 0)
{
sErrMsg = "发货没有选择!";
return false;
}
if (oMain.HKeeperID == 0)
{
sErrMsg = "保管没有选择!";
return false;
}
//同步生成采购入库单,判断用户是否绑定供应商
if (oSystemParameterMain.Kf_SellOutBill_AutoSavePOStockInBill == "Y") //系统参数 同步生成采购入库单
{
//判断所登录用户账号是否绑定了对应供应商
DataSet Ds2 = oCn.RunProcReturn(" select HSupID from Gy_Czygl where Czymc= '" + oMain.HMaker + "'", "Gy_Czygl");
if (Ds2 == null || Ds2.Tables[0].Rows.Count == 0)
{
sErrMsg = "所登录用户账号不正确,请重新登录!";
return false;
}
else if (DBUtility.ClsPub.isLong(Ds2.Tables[0].Rows[0]["HSupID"]) == 0)
{
sErrMsg = "所登录用户账号没有绑定对应供应商,无法同步生成外购入库单,生成单据失败,请先设置对应供应商!";
return false;
}
}
try
{
Int64 HNewInterID = 0;
string HNewBillNo = "";
Int64 HCusID = 0;
oCn.BeginTran();
//根据单据ID获取条码出入库临时表中源单单据客户有哪几个
DataSet DsCus = oCn.RunProcReturn("exec h_p_Kf_GetCusIDByTemp_SellOut " + oMain.HInterID.ToString() + "," + oMain.HSupID.ToString(), "h_p_Kf_GetCusIDByTemp_SellOut");
if (DsCus == null || DsCus.Tables[0].Rows.Count == 0)
{
sErrMsg = "获取子表信息失败!";
return false;
}
else
{
for (int i = 0; i < DsCus.Tables[0].Rows.Count; i++)
{
int j = i + 1;
HCusID = Pub_Class.ClsPub.isLong(DsCus.Tables[0].Rows[i][0]);
//重新获取销售出库单单据内码、单据号
if (i == 0)
{
HNewInterID = oMain.HInterID;
HNewBillNo = oMain.HBillNo + "-" + j;
}
else
{
HNewInterID = DBUtility.ClsPub.CreateBillID_Prod("1205", ref sErrMsg);
HNewBillNo = oMain.HBillNo + "-" + j;
}
//判断会计期是否合理
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;
//生成出入库单据
//插入子表
oCn.RunProc("EXEC h_p_Kf_SellOutBillSub_Insert_MulCus " + oMain.HInterID.ToString() + ",'" + oMain.HBillNo + "','" + sHSourceType + "'," + HNewInterID + ",'" + HNewBillNo + "'," + HCusID);
//插入主表
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('1205','1205'," + HNewInterID + ",'" + HNewBillNo + "',convert(varchar(10),getdate(),120),'" + oMain.HMainSourceBillType + "'" +
", " + oMain.HYear.ToString() + "," + oMain.HPeriod.ToString() + ",'" + oMain.HRemark + "','" + oMain.HMaker + "',convert(varchar(10),getdate(),120)" +
", " + HCusID + "," + 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_SellOutBill_Insert_New " + HNewInterID + ",'" + HNewBillNo + "'," + oMain.HBillerID.ToString() + ",'" + sHSourceType + "'");
//更新关联数量
if (sHSourceType == "1401") //销售订单
{
oCn.RunProc("exec h_p_Xs_UpDateRelation_SeOrderToSellOut_Add " + HNewInterID);
//回填K3关联数量
oCn.RunProc("exec h_p_IFK3_ToERP_SellOutBill_UpdateBillRelateData_SeOrder_New " + HNewInterID);
}
else if (sHSourceType == "1402") //发货通知单
{
oCn.RunProc("exec h_p_Xs_UpDateRelation_SeOutStockToSellOut_Add " + HNewInterID);
//回填K3关联数量
oCn.RunProc("exec h_p_IFK3_ToERP_SellOutBill_UpdateBillRelateData_SeOutStock_New " + HNewInterID);
}
else //无源单
{
//回填K3关联数量
oCn.RunProc("exec h_p_IFK3_ToERP_SellOutBill_UpdateBillRelateData_New " + HNewInterID);
}
//审核单据
if (oSystemParameterMain.Kf_SellOutBill_AutoCheck == "Y") //系统参数 自动审核
{
//审核单据
oCn.RunProc("Update Kf_ICStockBillMain Set HChecker='" + oMain.HMaker + "',HCheckDate=convert(varchar(10),getdate(),120) where HInterID= " + HNewInterID);
//审核K3单据
oCn.RunProc("exec h_p_IFK3_ToERP_SellOutBill_Check_New " + HNewInterID + "," + oMain.HBillerID.ToString());
//更新K3库存
oCn.RunProc("exec h_p_IFK3_ToERP_SellOutBill_UpdateStock_New " + HNewInterID);
oCn.RunProc("exec h_p_IFK3_ToERP_SellOutBill_UpdateOrderStock_New " + HNewInterID);
}
//K3负库存判断
if (oSystemParameterMain.WMS_ERPStockCtl == "Y") //系统参数 提交后ERP负库存控制
{
//判断条码库存是否异常(负库存、库存大于条码初始化)
DataSet Ds = oCn.RunProcReturn("EXEC h_p_KF_ICInventoryBarCodeQtyCtrl " + HNewInterID, "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;
}
}
//同步生成采购入库单
if (oSystemParameterMain.Kf_SellOutBill_AutoSavePOStockInBill == "Y") //系统参数 同步生成采购入库单
{
long HPOStockInInterID = DBUtility.ClsPub.CreateBillID_Prod("1201", ref sErrMsg);
string HPOStockInBillNo = "CG-" + oMain.HBillNo + "-" + j;
string HPOStockInSourceType = "-1"; //无源单
//新增ERP子表、主表
oCn.RunProc("exec h_p_Kf_SellOutBill_AutoSavePOStockInBill " + HNewInterID + "," + HPOStockInInterID + ",'" + HPOStockInBillNo + "'");
//新增K3子表、主表
oCn.RunProc("exec h_p_IFK3_ToERP_POStockInBill_Insert_New " + HPOStockInInterID + ",'" + HPOStockInBillNo + "'," + oMain.HBillerID.ToString() + ",'" + HPOStockInSourceType + "'");
//回填K3关联数量
oCn.RunProc("exec h_p_IFK3_ToERP_POStockInBill_UpdateBillRelateData_New " + HPOStockInInterID);
//审核单据
if (oSystemParameterMain.Kf_POStockInBill_AutoCheck == "Y") //系统参数 自动审核
{
//审核单据
oCn.RunProc("Update Kf_ICStockBillMain Set HChecker='" + oMain.HMaker + "',HCheckDate=convert(varchar(10),getdate(),120) where HInterID= " + HPOStockInInterID);
//审核K3单据
oCn.RunProc("exec h_p_IFK3_ToERP_POStockInBill_Check_New " + HPOStockInInterID + "," + oMain.HBillerID.ToString());
//更新K3库存
oCn.RunProc("exec h_p_IFK3_ToERP_POStockInBill_UpdateStock_New " + HPOStockInInterID);
oCn.RunProc("exec h_p_IFK3_ToERP_POStockInBill_UpdateOrderStock_New " + HPOStockInInterID);
}
}
//单据号
if (sHBillNo == "")
{
sHBillNo = HNewBillNo;
}
else
{
sHBillNo = sHBillNo + ",'" + HNewBillNo + "'";
}
}
}
sErrMsg = "新增单据成功!";
oCn.Commit();
return true;
}
catch (Exception e)
{
sErrMsg = "生成销售出库单失败!" + e.Message;
oCn.RollBack();
return false;
}
}
#endregion
#region 销售出库CLOUD *
public bool set_SaveSellOutBill_CLD(Model.ClsKf_SellOutBillMain oMain, string sHSourceType, Pub_Class.ClsXt_SystemParameterMain oSystemParameterMain, ref string sErrMsg)
{
if (SaveSellOutBill_CLD(oMain, oSystemParameterMain, ref sErrMsg))
{
//"保存成功!";
sErrMsg = "保存成功!" + oMain.HBillNo;
return true;
}
else
{
//"保存失败!";
sErrMsg = sErrMsg;
return false;
}
}
private bool SaveSellOutBill_CLD(Model.ClsKf_SellOutBillMain oMain, Pub_Class.ClsXt_SystemParameterMain oSystemParameterMain, ref string sErrMsg)
{
SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
try
{
DataSet Ds;
//
oCn.BeginTran();
//写入WMS销售出库单
//插入子表
oCn.RunProc("EXEC h_p_Kf_SellOutBillSub_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('1205','1205'," + 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_Xs_UpDateSeOutStockRelation_Add " + oMain.HInterID.ToString());
if (oSystemParameterMain.Kf_SellOutBill_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_GetSellOutBill_CLD " + oMain.HInterID.ToString() + ",'" + oMain.HBillNo + "'", "h_p_Kf_GetSellOutBill_CLD");
if (Ds == null || Ds.Tables[0].Rows.Count == 0 || Ds.Tables[1].Rows.Count == 0)
{
sErrMsg = "获取子表信息失败!";
oCn.RollBack();
return false;
}
else
{
string sJson_Custom = "";
if (oSystemParameterMain.WMS_CampanyName == "韩电") //系统参数 客户定制化名称 空白为通用
{
sJson_Custom = "\"F_CPH\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["F_CPH"]) + "\"," + //车牌号
"\"F_THR\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["F_THR"]) + "\"," + //提货人
"\"F_THDH\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["F_THDH"]) + "\","; //提货电话
}
else
{
sJson_Custom = "";
}
string sJson_Main = "{\"Creator\":\"\",\"NeedUpDateFields\":[]," +
"\"Model\":{ " +
//\"FID\":" + oMain.HInterID.ToString() + "," +
"\"FBillTypeID\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FBillTypeID"]) + "\" }," +
"\"FBillNo\":\"" + oMain.HBillNo + "\"," +
// "\"FDate\":\"" + oMain.HDate .ToShortDateString()+ "\"," +
"\"FSaleOrgId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HSaleOrgID"]) + "\" }," +
"\"FCustomerID\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HCusNumber"]) + "\" }," +
"\"FSalesManID\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSalesManID"]) + "\" }," +
"\"FSaleDeptID\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSaleDeptID"]) + "\" }," +
"\"FSalesGroupID\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSalesGroupID"]) + "\" }," +
"\"FDELIVERYDEPTID\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FDELIVERYDEPTID"]) + "\" }," +
"\"FStockOrgId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HStockOrgID"]) + "\" }," +
"\"FReceiverID\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HReceiverNumber"]) + "\" }," +
"\"FSettleID\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HSettleNumber"]) + "\" }," +
//"\"FPayerID\":{ \"FNumber\":\"" + oMain.HSupID.ToString() + "\" }," +
"\"FOwnerTypeIdHead\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOwnerTypeIdHead"]) + "\"," +
"\"FOwnerIdHead\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FOwnerIdHead"]) + "\" }," +
"\"FIsTotalServiceOrCost\":" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FIsTotalServiceOrCost"]) + "," +
sJson_Custom +
"\"SubHeadEntity\":{ \"FSettleCurrID\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FSettleCurrID"]) + "\" }}," +
"\"FSettleOrgID\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HSettleOrgID"]) + "\" }," +
//"\"FIsIncludedTax\": true ," +
"\"FLocalCurrID\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FLocalCurrID"]) + "\" }," +
"\"FExchangeTypeID\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FExchangeTypeID"]) + "\" }," +
//"\"FExchangeRate\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FExchangeRate"]) + "\"," +
//"\"FIsPriceExcludeTax\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["FIsPriceExcludeTax"]) + "\"," +
"\"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 = "";
string sJson_StockPlace = "";
string sJson_F_PPPL = "";
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 = "";
}
if (oSystemParameterMain.WMS_CampanyName == "卓力") //系统参数 客户定制化名称 空白为通用
{
sJson_StockPlace = "\"FStockLocId\":{\"FSTOCKLOCID__FF100002\":{\"FNUMBER\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FStockLocId"]) + "\"}},";
}
else if (oSystemParameterMain.WMS_CampanyName == "韩电")
{
if (Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FStockLocId"]) == "")
{
sJson_StockPlace = "";
}
else
{
sJson_StockPlace = Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FStockLocId"]) + "\"}},";
}
sJson_F_PPPL = "\"F_PPPL\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["F_PPPL"]) + "\" },"; //品牌品类
}
else
{
if (Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FStockLocId"]) == "")
{
sJson_StockPlace = "";
}
else
{
sJson_StockPlace = Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FStockLocId"]) + "\"}},";
}
}
//自定义字段处理
//
sJson_Entry = sJson_Entry + " { \"FSEQ\":\"" + Convert.ToString(i + 1) + "\"," +
"\"FRowType\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FRowType"]) + "\"," +
"\"FMaterialId\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FMaterialId"]) + "\" }," +
"\"FUnitID\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FUnitID"]) + "\" }," +
"\"FRealQty\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FRealQty"]) + "\"," +
"\"FMustQty\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FMustQty"]) + "\"," +
"\"FIsFree\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FIsFree"]) + "\"," +
"\"FOwnerTypeID\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FOwnerTypeID"]) + "\"," +
"\"FOwnerID\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["HOwnerID"]) + "\" }," +
"\"FEntryTaxRate\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FEntryTaxRate"]) + "\"," +
"\"FStockID\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FStockID"]) + "\" }," +
sJson_StockPlace +
//"\"FStockLocId\":{\"FSTOCKLOCID__FF100002\":{\"FNUMBER\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FStockLocId"]) + "\"}}," +
"\"FStockStatusID\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FStockStatusID"]) + "\" }," +
"\"FSalUnitID\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FSalUnitID"]) + "\" }," +
"\"FSALUNITQTY\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FSALUNITQTY"]) + "\"," +
"\"FSALBASEQTY\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FSALBASEQTY"]) + "\"," +
"\"FPRICEBASEQTY\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FPRICEBASEQTY"]) + "\"," +
"\"FOUTCONTROL\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FOUTCONTROL"]) + "\"," +
"\"FIsOverLegalOrg\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FIsOverLegalOrg"]) + "\"," +
"\"FARNOTJOINQTY\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FARNOTJOINQTY"]) + "\"," +
//"\"F_PAEZ_Text\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["F_PAEZ_Text"]) + "\"," +
//"\"F_PAEZ_Text1\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["F_PAEZ_Text1"]) + "\"," +
sJson_BatchNo +
//"\"FLot\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FLot"]) + "\" }," +
//"\"FCheckDelivery\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FCheckDelivery"]) + "\"," +
"\"FSRCBILLNO\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FSRCBILLNO"]) + "\"," +
"\"FSOORDERNO\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FSOORDERNO"]) + "\"," +
"\"FSRCTYPE\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FSRCTYPE"]) + "\"," +
"\"FBASEMUSTQTY\":" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FBASEMUSTQTY"]) + "," +
"\"FSALBASENUM\":" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FSALBASENUM"]) + "," +
"\"FSTOCKBASEDEN\":" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FSTOCKBASEDEN"]) + "," +
"\"FPrice\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["HPrice"]) + "\"," +
"\"FTaxPrice\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["HTaxPrice"]) + "\"," +
"\"FOWNERID\":{ \"FNumber\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["HOWNERID"]) + "\" }," +
"\"FSOENTRYID\":\"" + Pub_Class.ClsPub.isStrNull(Ds.Tables[1].Rows[i]["FSOENTRYID"]) + "\"," +
sJson_F_PPPL +
"\"FEntity_Link\": [ { " +
"\"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"]) + "\"," +
" } ] } ";
}
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[] { "SAL_OUTSTOCK", sJson });
if (oSystemParameterMain.Kf_SellOutBill_AutoCheck == "Y") //系统参数 自动审核
{
string sJson2 = "{\"CreateOrgId\":0,\"Numbers\":[\"" + oMain.HBillNo + "\"]}";
var result2 = client.Execute("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Submit",
new object[] { "SAL_OUTSTOCK", sJson2 });
string sJson3 = "{\"CreateOrgId\":0,\"Numbers\":[\"" + oMain.HBillNo + "\"]}";
var result3 = client.Execute("Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.Audit",
new object[] { "SAL_OUTSTOCK", 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
{
if (oSystemParameterMain.WMS_CampanyName == "韩电")
{
//销售出库时反写发货通知单、销售订单
if (Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["F_XSLX"]) == "外销")
{
//外销反写发货通知单、销售订单数量
oCn.RunProc("EXEC h_p_ToCLD_BackDataDELIVERYNOTICE '" + oMain.HBillNo + "'");
}
else if (Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["F_XSLX"]) == "内销"
|| Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["F_XSLX"]) == "OEM"
|| Pub_Class.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["F_XSLX"]) == "电商")
{
//内销、OEM和电商 关闭发货通知单、销售订单
oCn.RunProc("EXEC h_p_ToCLD_BackDataDELIVERYNOTICE_Close '" + oMain.HBillNo + "'");
}
}
oCn.Commit();
return true;
}
}
else
{
sErrMsg = "生成销售出库单失败!登录失败!";
oCn.RollBack();
return false;
}
}
}
catch (Exception e)
{
sErrMsg = "生成销售出库单失败!" + e.Message;
oCn.RollBack();
return false;
}
}
#endregion
}
}