using Newtonsoft.Json;
|
using Newtonsoft.Json.Linq;
|
using System;
|
using System.Data;
|
using System.Web.Http;
|
using WebAPI.Models;
|
|
namespace WebAPI.Controllers
|
{
|
public class Kf_MoveStockBillController : ApiController
|
{
|
public DBUtility.ClsPub.Enum_BillStatus BillStatus;
|
public const string ModName = "1207"; //单据类型
|
public const string ModCaption = "直接调拨单"; //单据名称
|
public const string ModRightName = "Kf_MoveStockBill";
|
public const string ModRightNameList = ModRightName + "List"; //列表
|
public const string ModRightNameEdit = ModRightName + "_Edit"; //编辑
|
public const string ModRightNameCheck = ModRightName + "_Check"; //审核
|
public const string ModRightNameClose = ModRightName + "_Close"; //关闭
|
public const string ModRightNameDelete = ModRightName + "_Delete"; //作废
|
public const string ModRightNameDrop = ModRightName + "_Drop"; //删除
|
public const string ModRightNameMoney = ModRightName + "_Money"; //金额
|
public const string ModRightNameQty = ModRightName + "_Qty"; //数量
|
public DataSet ds = new DataSet();
|
private json objJsonResult = new json();
|
SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
|
Pub_Class.ClsXt_SystemParameter oSystemParameter = new Pub_Class.ClsXt_SystemParameter();
|
public DAL.ClsKf_MoveStockBill oBill = new DAL.ClsKf_MoveStockBill();
|
|
|
#region 根据单据号,同步直接调拨单
|
[Route("Kf_MoveStockBillController/GetKf_MoveStockBill_Sync_Json")]
|
[HttpGet]
|
public json GetKf_MoveStockBill_Sync_Json(string HBillNo, string HBillType)
|
{
|
try
|
{
|
//获取系统参数
|
string sql = string.Empty;
|
string sErrMsg = "";
|
if (oSystemParameter.ShowBill(ref sErrMsg) == true)
|
{
|
//系统参数是否为私有云模式,N为公有云模式,Y为私有云模式
|
//私有云模式,通过调用存储过程进行同步
|
if (oSystemParameter.omodel.WMS_CloudMode.ToUpper() == "Y")
|
{
|
ds = oCn.RunProcReturn("exec h_p_IFCLD_ERPSourceBillToLocal_MoveStock '" + HBillNo + "'", "h_p_IFCLD_ERPSourceBillToLocal_MoveStock");
|
if (ds == null || ds.Tables[0].Rows.Count == 0)
|
{
|
objJsonResult.code = "0";
|
objJsonResult.count = 0;
|
objJsonResult.Message = "单据同步发生错误!";
|
objJsonResult.data = null;
|
return objJsonResult;
|
}
|
else
|
{
|
if (DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0]["HBack"]) == 2)
|
{
|
objJsonResult.code = "0";
|
objJsonResult.count = 0;
|
objJsonResult.Message = DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HBackRemark"]);
|
objJsonResult.data = null;
|
return objJsonResult;
|
}
|
else
|
{
|
objJsonResult.code = "0";
|
objJsonResult.count = 1;
|
objJsonResult.Message = "单据同步成功!";
|
objJsonResult.data = null;
|
return objJsonResult;
|
}
|
}
|
}
|
//公有云模式,通过调用WEBAPI方式进行同步
|
else if (oSystemParameter.omodel.WMS_CloudMode.ToUpper() == "N")
|
{
|
//判断金蝶云是否登录成功
|
var loginRet = InvokeHelper.Login();
|
var isSuccess = JObject.Parse(loginRet)["LoginResultType"].Value<int>();
|
//判断是否登录成功
|
if (isSuccess <= 0)
|
{
|
objJsonResult.code = "0";
|
objJsonResult.count = 0;
|
objJsonResult.Message = "同步失败,金蝶云登入不成功,请确认C盘配置文件所设置金蝶云对应网址、账套、登录用户、登录密码是否正确!";
|
objJsonResult.data = null;
|
return objJsonResult;
|
}
|
|
var json = new
|
{
|
CreateOrgId = 0,
|
Number = HBillNo,
|
Id = ""
|
};
|
//查看 获取数据
|
var _result = InvokeHelper.View("STK_TransferDirect", JsonConvert.SerializeObject(json));
|
var _saveObj = JObject.Parse(_result);
|
//判断金蝶云数据是否获取成功
|
if (_saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper() != "TRUE")
|
{
|
objJsonResult.code = "0";
|
objJsonResult.count = 0;
|
objJsonResult.Message = "金蝶云直接调拨单获取失败:" + _result;
|
objJsonResult.data = null;
|
return objJsonResult;
|
}
|
|
oCn.BeginTran();
|
//查找本地直接调拨单表中是否存在该单据,存在获取本单单据ID,不存在则获取最大单据ID
|
Int64 HNewInterID = 0;
|
ds = oCn.RunProcReturn("select HInterID from Kf_ICStockBillMain with(nolock) where HBillNo = '" + HBillNo + "' and HBillType='1207'", "Kf_ICStockBillMain");
|
if (ds == null || ds.Tables[0].Rows.Count == 0)
|
{
|
HNewInterID = DBUtility.ClsPub.CreateBillID_Prod(HBillType, ref sErrMsg);
|
}
|
else
|
{
|
HNewInterID = DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0]["HInterID"]);
|
}
|
|
//根据单据号删除本地直接调拨单中对应单据
|
oCn.RunProc("Delete b from Kf_ICStockBillMain a inner join Kf_ICStockBillSub b on a.HInterID=b.HInterID where a.HBillNo = '" + HBillNo + "' and a.HBillType='1207'", ref DBUtility.ClsPub.sExeReturnInfo);
|
oCn.RunProc("Delete from Kf_ICStockBillMain where HBillNo = '" + HBillNo + "' and HBillType='1207'", ref DBUtility.ClsPub.sExeReturnInfo);
|
|
//主表数据赋值
|
var MainData = new
|
{
|
HInterID = HNewInterID,
|
HBillNo = DBUtility.ClsPub.isStrNull(_saveObj["Result"]["Result"]["BillNo"]),
|
HBillType = "1207",
|
HBillSubType = "1207",
|
HMainSourceBillType = "",
|
HDate = DBUtility.ClsPub.isDate(_saveObj["Result"]["Result"]["Date"]),
|
HSupID = DBUtility.ClsPub.isLong(_saveObj["Result"]["Result"]["SupplierID_Id"]),
|
HWHID = 0,
|
HSCWHID = 0,
|
HEmpID = 0,
|
HManagerID = 0,
|
HSecManagerID = DBUtility.ClsPub.isLong(_saveObj["Result"]["Result"]["SalerId_Id"]),
|
HKeeperID = DBUtility.ClsPub.isLong(_saveObj["Result"]["Result"]["StockerId_Id"]),
|
HDeptID = DBUtility.ClsPub.isLong(_saveObj["Result"]["Result"]["SaleDeptId_Id"]),
|
HCurID = DBUtility.ClsPub.isLong(_saveObj["Result"]["Result"]["CustID_Id"]),
|
HSeOrderBillNo = "",
|
HExplanation = "CLD导入",
|
HRemark = DBUtility.ClsPub.isStrNull(_saveObj["Result"]["Result"]["Note"]),
|
HInnerBillNo = "",
|
HRedBlueFlag = 0,
|
HBillStatus = DBUtility.ClsPub.isLong(_saveObj["Result"]["Result"]["ApproverId_Id"]) == 0 ? 1 : 2,
|
HMaker = DBUtility.ClsPub.isStrNull(_saveObj["Result"]["Result"]["CreatorId"]["Name"]),
|
HMakeDate = DBUtility.ClsPub.isDate(_saveObj["Result"]["Result"]["CreateDate"]),
|
HChecker = DBUtility.ClsPub.isLong(_saveObj["Result"]["Result"]["ApproverId_Id"]) == 0 ? "" : DBUtility.ClsPub.isStrNull(_saveObj["Result"]["Result"]["ApproverId"]["Name"]),
|
HCheckDate = DBUtility.ClsPub.isDate(_saveObj["Result"]["Result"]["ApproveDate"]),
|
HUpDater = DBUtility.ClsPub.isLong(_saveObj["Result"]["Result"]["ModifierId_Id"]) == 0 ? "" : DBUtility.ClsPub.isStrNull(_saveObj["Result"]["Result"]["ModifierId"]["Name"]),
|
HUpDateDate = DBUtility.ClsPub.isDate(_saveObj["Result"]["Result"]["ModifyDate"]),
|
HDeleteMan = DBUtility.ClsPub.isLong(_saveObj["Result"]["Result"]["CANCELER_Id"]) == 0 ? "" : DBUtility.ClsPub.isStrNull(_saveObj["Result"]["Result"]["CANCELER"]["Name"]),
|
HDeleteDate = DBUtility.ClsPub.isDate(_saveObj["Result"]["Result"]["CancelDate"]),
|
HStockStyle = DBUtility.ClsPub.isStrNull(_saveObj["Result"]["Result"]["TransferBizType"]) == "InnerOrgTransfer" ? "组织内调拨" : "跨组织调拨",
|
HOWNERID = DBUtility.ClsPub.isLong(_saveObj["Result"]["Result"]["OwnerIdHead_Id"]),
|
HOWNERTYPEID = DBUtility.ClsPub.isStrNull(_saveObj["Result"]["Result"]["OwnerTypeIdHead"]),
|
HERPInterID = DBUtility.ClsPub.isLong(_saveObj["Result"]["Result"]["Id"]),
|
HERPBillType = DBUtility.ClsPub.isStrNull(_saveObj["Result"]["Result"]["BillTypeID_Id"]),
|
HERPBillNo = DBUtility.ClsPub.isStrNull(_saveObj["Result"]["Result"]["BillNo"]),
|
HSTOCKINORGID = DBUtility.ClsPub.isLong(_saveObj["Result"]["Result"]["StockOrgId_Id"]),
|
HSTOCKOUTORGID = DBUtility.ClsPub.isLong(_saveObj["Result"]["Result"]["StockOutOrgId_Id"]),
|
HSALEORGID = DBUtility.ClsPub.isLong(_saveObj["Result"]["Result"]["SaleOrgId_Id"]),
|
HSETTLEORGID = DBUtility.ClsPub.isLong(_saveObj["Result"]["Result"]["SettleOrgId_Id"]),
|
HPRDORGID = 0,
|
HSTOCKORGID = DBUtility.ClsPub.isLong(_saveObj["Result"]["Result"]["StockOutOrgId_Id"]),
|
};
|
//写入主表
|
sql = $@"Insert into Kf_ICStockBillMain
|
(HInterID,HYear,HPeriod,HBillNo,HBillType,HBillSubType,HMainSourceBillType,HDate
|
,HSupID,HWHID,HSCWHID,HEmpID,HManagerID,HSecManagerID,HKeeperID,HDeptID,HCurID
|
,HSeOrderBillNo,HExplanation,HRemark,HInnerBillNo,HRedBlueFlag,HBillStatus
|
,HMaker,HMakeDate
|
,HChecker,HCheckDate
|
,HUpDater,HUpDateDate
|
,HDeleteMan,HDeleteDate
|
,HStockStyle
|
,HOWNERID,HOWNERTYPEID,HERPInterID,HERPBillType,HERPBillNo
|
,HSTOCKINORGID,HSTOCKOUTORGID,HSALEORGID,HSETTLEORGID
|
,HPRDORGID,HSTOCKORGID)
|
Values({MainData.HInterID},year('{MainData.HDate}'),month('{MainData.HDate}'),'{MainData.HBillNo}','{MainData.HBillType}','{MainData.HBillSubType}','{MainData.HMainSourceBillType}','{MainData.HDate}'
|
, {MainData.HSupID},{MainData.HWHID},{MainData.HSCWHID},{MainData.HEmpID},{MainData.HManagerID},{MainData.HSecManagerID},{MainData.HKeeperID},{MainData.HDeptID},{MainData.HCurID}
|
,'{MainData.HSeOrderBillNo}','{MainData.HExplanation}','{MainData.HRemark}','{MainData.HInnerBillNo}',{MainData.HRedBlueFlag},{MainData.HBillStatus}
|
,'{MainData.HMaker}','{MainData.HMakeDate}'
|
,'{MainData.HChecker}',case when '{MainData.HCheckDate}' = '1900/1/1 0:00:00' then NULL else '{MainData.HCheckDate}' end
|
,'{MainData.HUpDater}',case when '{MainData.HUpDateDate}' = '1900/1/1 0:00:00' then NULL else '{MainData.HUpDateDate}' end
|
,'{MainData.HDeleteMan}',case when '{MainData.HDeleteDate}' = '1900/1/1 0:00:00' then NULL else '{MainData.HDeleteDate}' end
|
,'{MainData.HStockStyle}'
|
, {MainData.HOWNERID},'{MainData.HOWNERTYPEID}',{MainData.HERPInterID},'{MainData.HERPBillType}','{MainData.HERPBillNo}'
|
, {MainData.HSTOCKINORGID},{MainData.HSTOCKOUTORGID},{MainData.HSALEORGID},{MainData.HSETTLEORGID}
|
, {MainData.HPRDORGID},{MainData.HSTOCKORGID})";
|
oCn.RunProc(sql.Replace("\r\n", ""));
|
|
//子表数据赋值
|
var dataArr = _saveObj["Result"]["Result"]["TransferDirectEntry"];
|
foreach (var oSub in dataArr)
|
{
|
var subData = new
|
{
|
HInterID = HNewInterID,
|
HEntryID = DBUtility.ClsPub.isLong(oSub["Id"]),
|
HMTONo = DBUtility.ClsPub.isStrNull(oSub["MtoNo"]),
|
HPlanMode = 0,
|
HRemark = DBUtility.ClsPub.isStrNull(oSub["NoteEntry"]),
|
HExpressNumber = "",
|
HMaterID = DBUtility.ClsPub.isLong(oSub["MaterialId_Id"]),
|
HUnitID = DBUtility.ClsPub.isLong(oSub["UnitId_Id"]),
|
HBatchNo = DBUtility.ClsPub.isStrNull(oSub["DestLot_Text"]),
|
HPropertyID = DBUtility.ClsPub.isLong(oSub["AuxPropId_Id"]),
|
HWHID = DBUtility.ClsPub.isLong(oSub["DestStockId_Id"]),
|
HSPID = DBUtility.ClsPub.isLong(oSub["DestStockLocId_Id"]),
|
HSCWHID = DBUtility.ClsPub.isLong(oSub["SrcStockId_Id"]),
|
HSCSPID = DBUtility.ClsPub.isLong(oSub["SrcStockLocId_Id"]),
|
HQtyMust = DBUtility.ClsPub.isDoule(oSub["Qty"]),
|
HQty = DBUtility.ClsPub.isDoule(oSub["Qty"]),
|
HPrice = DBUtility.ClsPub.isDoule(oSub["Price"]),
|
HMoney = DBUtility.ClsPub.isDoule(oSub["Amount"]),
|
HTaxPrice = DBUtility.ClsPub.isDoule(oSub["Price"]),
|
HTaxRate = 1,
|
HTaxMoney = DBUtility.ClsPub.isDoule(oSub["Amount"]),
|
HRelationQty = 0,
|
HRelationMoney = 0,
|
HSourceInterID = 0,
|
HSourceEntryID = 0,
|
HSourceBillNo = DBUtility.ClsPub.isStrNull(oSub["SrcBillNo"]),
|
HSourceBillType = DBUtility.ClsPub.isStrNull(oSub["SrcBillTypeId"]),
|
HERPInterID = DBUtility.ClsPub.isLong(_saveObj["Result"]["Result"]["Id"]),
|
HERPEntryID = DBUtility.ClsPub.isLong(oSub["Id"]),
|
HERPBillNo_Sub = "",
|
HPOOrderInterID = 0,
|
HPOOrderEntryID = 0,
|
HPOOrderBillNo = "",
|
HSeOrderInterID = 0,
|
HSeOrderEntryID = 0,
|
HSeOrderBillNo = "",
|
HICMOInterID = 0,
|
HICMOEntryID = 0,
|
HICMOBillNo = "",
|
HWWOrderInterID = 0,
|
HWWOrderEntryID = 0,
|
HWWOrderBillNo = "",
|
HProduceDate = DBUtility.ClsPub.isDate(oSub["ProduceDate"]),
|
HExpiryDate = DBUtility.ClsPub.isDate(oSub["ExpiryDate"]),
|
HOWNERID = DBUtility.ClsPub.isLong(oSub["OwnerId_Id"]),
|
HOWNERTYPEID = DBUtility.ClsPub.isStrNull(oSub["OwnerTypeId"]),
|
HKEEPERID = DBUtility.ClsPub.isLong(oSub["KeeperId_Id"]),
|
HKEEPERTYPEID = DBUtility.ClsPub.isStrNull(oSub["KeeperTypeId"]),
|
};
|
|
//写入子表
|
sql = $@"Insert into Kf_ICStockBillSub
|
(HInterID,HEntryID,HMTONo,HPlanMode,HRemark,HExpressNumber
|
,HMaterID,HUnitID,HBatchNo,HPropertyID,HWHID,HSPID,HSCWHID,HSCSPID
|
,HQtyMust,HQty,HPrice,HMoney,HTaxPrice,HTaxRate,HTaxMoney,HRelationQty,HRelationMoney
|
,HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HERPInterID,HERPEntryID,HERPBillNo_Sub
|
,HPOOrderInterID,HPOOrderEntryID,HPOOrderBillNo,HSeOrderInterID,HSeOrderEntryID,HSeOrderBillNo
|
,HICMOInterID,HICMOEntryID,HICMOBillNo,HWWOrderInterID,HWWOrderEntryID,HWWOrderBillNo
|
,HProduceDate
|
,HExpiryDate
|
,HOWNERID,HOWNERTYPEID,HKEEPERID,HKEEPERTYPEID)
|
Values ({subData.HInterID},{subData.HEntryID},'{subData.HMTONo}',{subData.HPlanMode},'{subData.HRemark}','{subData.HExpressNumber}'
|
,{subData.HMaterID},{subData.HUnitID},'{subData.HBatchNo}',{subData.HPropertyID},{subData.HWHID},{subData.HSPID},{subData.HSCWHID},{subData.HSCSPID}
|
,{subData.HQtyMust},{subData.HQty},{subData.HPrice},{subData.HMoney},{subData.HTaxPrice},{subData.HTaxRate},{subData.HTaxMoney},{subData.HRelationQty},{subData.HRelationMoney}
|
,{subData.HSourceInterID},{subData.HSourceEntryID},'{subData.HSourceBillNo}','{subData.HSourceBillType}',{subData.HERPInterID},{subData.HERPEntryID},'{subData.HERPBillNo_Sub}'
|
,{subData.HPOOrderInterID},{subData.HPOOrderEntryID},'{subData.HPOOrderBillNo}',{subData.HSeOrderInterID},{subData.HSeOrderEntryID},'{subData.HSeOrderBillNo}'
|
,{subData.HICMOInterID},{subData.HICMOEntryID},'{subData.HICMOBillNo}',{subData.HWWOrderInterID},{subData.HWWOrderEntryID},'{subData.HWWOrderBillNo}'
|
,case when '{subData.HProduceDate}' = '1900/1/1 0:00:00' then NULL else '{subData.HProduceDate}' end
|
,case when '{subData.HExpiryDate}' = '1900/1/1 0:00:00' then NULL else '{subData.HExpiryDate}' end
|
,{subData.HOWNERID},'{subData.HOWNERTYPEID}',{subData.HKEEPERID},'{subData.HKEEPERTYPEID}')";
|
oCn.RunProc(sql.Replace("\r\n", ""));
|
}
|
|
oCn.Commit();
|
objJsonResult.code = "0";
|
objJsonResult.count = 1;
|
objJsonResult.Message = "单据同步成功!";
|
objJsonResult.data = null;
|
return objJsonResult;
|
}
|
else
|
{
|
objJsonResult.code = "0";
|
objJsonResult.count = 1;
|
objJsonResult.Message = "不支持同步功能!";
|
objJsonResult.data = null;
|
return objJsonResult;
|
}
|
}
|
else
|
{
|
objJsonResult.code = "0";
|
objJsonResult.count = 0;
|
objJsonResult.Message = "获取系统参数失败! " + sErrMsg;
|
objJsonResult.data = null;
|
return objJsonResult;
|
}
|
}
|
catch (Exception e)
|
{
|
objJsonResult.code = "0";
|
objJsonResult.count = 0;
|
objJsonResult.Message = "单据同步失败!" + e.ToString();
|
objJsonResult.data = null;
|
return objJsonResult;
|
}
|
}
|
#endregion
|
|
}
|
}
|