11
This commit is contained in:
parent
e9d287c7d6
commit
9d14431ca4
@ -352,6 +352,7 @@
|
||||
<Compile Include="Sal_Order\PushSaleBillPlugIn.cs" />
|
||||
<Compile Include="Sal_Order\PushSaleOutBillPlugIn.cs" />
|
||||
<Compile Include="Sal_Order\SalDeliveryNoticeAudit.cs" />
|
||||
<Compile Include="Sal_Order\SaleOrderJieSuanJia.cs" />
|
||||
<Compile Include="Sal_Order\SupplierClass.cs" />
|
||||
<Compile Include="Sal_Order\YJAuditPlugIn.cs" />
|
||||
<Compile Include="SQL\SqlManage_yuyubo.cs" />
|
||||
|
||||
@ -25,6 +25,7 @@ using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using Org.BouncyCastle.Asn1.X509;
|
||||
|
||||
namespace Pilot_KD_Parino.Sal_Order
|
||||
{
|
||||
@ -35,6 +36,7 @@ namespace Pilot_KD_Parino.Sal_Order
|
||||
string sScrBillNo = "";
|
||||
string fid = "0";
|
||||
DynamicObject BillObj = null;
|
||||
int nextOrderId = 0;
|
||||
|
||||
public override void AfterBarItemClick(AfterBarItemClickEventArgs e)
|
||||
{
|
||||
@ -58,7 +60,7 @@ namespace Pilot_KD_Parino.Sal_Order
|
||||
//var detailList = (FEntity["SAL_DELIVERYNOTICEENTRY"]);
|
||||
|
||||
//发货通知单或者发货出库单
|
||||
string getSourceSql = $@"/*dialect*/SELECT FSTABLENAME,FSBILLID FROM dbo.T_{formid}ENTRY_LK
|
||||
string getSourceSql = $@"/*dialect*/SELECT DISTINCT FSTABLENAME,FSBILLID FROM dbo.T_{formid}ENTRY_LK
|
||||
WHERE FENTRYID IN ( SELECT FENTRYID FROM dbo.T_{formid}ENTRY WHERE FID = {id})";
|
||||
var dt = DBServiceHelper.ExecuteDynamicObject(this.Context, getSourceSql);
|
||||
if (dt == null || dt.Count == 0)
|
||||
@ -74,8 +76,9 @@ namespace Pilot_KD_Parino.Sal_Order
|
||||
////发货通知单
|
||||
tempFid = int.Parse(dt.Select(t => t["FSBILLID"]).FirstOrDefault().ToString());
|
||||
string tempTable = dt.Select(t => t["FSTABLENAME"]).FirstOrDefault().ToString();
|
||||
getSourceSql = $@"/*dialect*/SELECT FSTABLENAME,FSBILLID FROM dbo.{tempTable}_lk
|
||||
getSourceSql = $@"/*dialect*/SELECT DISTINCT FSTABLENAME,FSBILLID FROM dbo.{tempTable}_lk
|
||||
WHERE FENTRYID IN ( SELECT FENTRYID FROM {tempTable} WHERE FID = {tempFid})";
|
||||
|
||||
//dt = DBServiceHelper.ExecuteDynamicObject(this.Context, getSourceSql);
|
||||
//if (dt == null || dt.Count == 0)
|
||||
//{
|
||||
@ -96,7 +99,7 @@ namespace Pilot_KD_Parino.Sal_Order
|
||||
}
|
||||
else if ( dt.Count > 1 )
|
||||
{
|
||||
throw new KDBusinessException("", "一张销售单下推多张采购订单,不能用自动跨组织推单功能:" + tablename);
|
||||
throw new KDBusinessException("", "本张销售单下推多张采购订单,不能用自动跨组织推单功能:" + getSourceSql);
|
||||
|
||||
}
|
||||
else
|
||||
@ -115,9 +118,9 @@ namespace Pilot_KD_Parino.Sal_Order
|
||||
{
|
||||
throw new KDBusinessException("", "没有上查关联的跨组织的采购订单:" + tablename);
|
||||
}
|
||||
else if (dt.Count > 1)
|
||||
else if (dt.Select(t => t["FSBILLID"].ToString()).Distinct().Count() > 1)
|
||||
{
|
||||
throw new KDBusinessException("", "一张销售单下推多张采购订单,不能用自动跨组织推单功能:" + tablename);
|
||||
throw new KDBusinessException("", "本张销售单下推多张采购订单,不能用自动跨组织推单功能:" + getSourceSql);
|
||||
|
||||
}
|
||||
else
|
||||
@ -156,11 +159,35 @@ namespace Pilot_KD_Parino.Sal_Order
|
||||
dt = DBServiceHelper.ExecuteDynamicObject(this.Context, getSourceSql);
|
||||
if (dt != null || dt.Count > 0)
|
||||
{
|
||||
tuiName += "收料通知单 ";
|
||||
result = Invoke("PUR_PurchaseOrder", "PUR_ReceiveBill", tempFid.ToString(), "7cd93c259999489c97798063f2f7bd70", ref stockId,"收料通知单");
|
||||
//tuiName += "收料通知单 ";
|
||||
//result = Invoke("PUR_PurchaseOrder", "PUR_ReceiveBill", tempFid.ToString(), "7cd93c259999489c97798063f2f7bd70", ref stockId, "收料通知单");
|
||||
|
||||
nextOrderId = IfNeedPush("PUR_ReceiveBill", fid);
|
||||
if (nextOrderId == 0)
|
||||
{
|
||||
tuiName += "收料通知单 ";
|
||||
result = Invoke("PUR_PurchaseOrder", "PUR_ReceiveBill", tempFid.ToString(), "7cd93c259999489c97798063f2f7bd70", ref stockId, "收料通知单");
|
||||
}
|
||||
else
|
||||
{
|
||||
result = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
else
|
||||
{
|
||||
nextOrderId = IfNeedPush("PUR_ReceiveBill", fid);
|
||||
if (nextOrderId == 0)
|
||||
{
|
||||
tuiName += "收料通知单 ";
|
||||
result = Invoke("PUR_PurchaseOrder", "PUR_ReceiveBill", tempFid.ToString(), "7cd93c259999489c97798063f2f7bd70", ref stockId, "收料通知单");
|
||||
}
|
||||
else
|
||||
{
|
||||
result = null;
|
||||
}
|
||||
}
|
||||
|
||||
if (result != null)
|
||||
{
|
||||
sheet = result.SuccessDataEnity.FirstOrDefault();
|
||||
@ -169,18 +196,34 @@ namespace Pilot_KD_Parino.Sal_Order
|
||||
if (sheet != null)
|
||||
{
|
||||
tuiName += "采购入库单 ";
|
||||
result = Invoke("PUR_ReceiveBill", "STK_InStock", sheet["id"].ToString(), "a1ff32276cd9469dad3bf2494366fa4f", ref stockId,"采购入库单");
|
||||
result = Invoke("PUR_ReceiveBill", "STK_InStock", sheet["id"].ToString(), "a1ff32276cd9469dad3bf2494366fa4f", ref stockId, "采购入库单");
|
||||
//sheet = result.SuccessDataEnity.FirstOrDefault();
|
||||
//result = Invoke("PUR_ReceiveBill", "STK_InStock", sheet["id"].ToString(), "a1ff32276cd9469dad3bf2494366fa4f");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (nextOrderId > 0)
|
||||
{
|
||||
nextOrderId = IfNeedPush("STK_InStock", fid);
|
||||
if (nextOrderId == 0)
|
||||
{
|
||||
tuiName += "采购入库单 ";
|
||||
result = Invoke("PUR_ReceiveBill", "STK_InStock", nextOrderId.ToString(), "a1ff32276cd9469dad3bf2494366fa4f", ref stockId, "采购入库单");
|
||||
}
|
||||
else
|
||||
{
|
||||
result = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
//找到最开始的销售订单
|
||||
for (int kk = 0; kk < 6 && tablename.ToUpper() != "T_SAL_ORDERENTRY" && xiaoFid == 0; kk++)
|
||||
{
|
||||
////发货通知单
|
||||
tempFid = int.Parse(dt.Select(t => t["FSBILLID"]).FirstOrDefault().ToString());
|
||||
string tempTable = dt.Select(t => t["FSTABLENAME"]).FirstOrDefault().ToString();
|
||||
getSourceSql = $@"/*dialect*/SELECT FSTABLENAME,FSBILLID FROM dbo.{tempTable}_lk
|
||||
getSourceSql = $@"/*dialect*/SELECT DISTINCT FSTABLENAME,FSBILLID FROM dbo.{tempTable}_lk
|
||||
WHERE FENTRYID IN ( SELECT FENTRYID FROM {tempTable} WHERE FID = {tempFid})";
|
||||
dt = DBServiceHelper.ExecuteDynamicObject(this.Context, getSourceSql);
|
||||
|
||||
@ -215,42 +258,58 @@ namespace Pilot_KD_Parino.Sal_Order
|
||||
|
||||
//if (saleorgid != "100302" && saleorgid != "100303")
|
||||
//{
|
||||
getSourceSql = $@"/*dialect*/SELECT FSTABLENAME,FSBILLID,FENTRYID FROM dbo.T_SAL_DELIVERYNOTICEENTRY_LK
|
||||
getSourceSql = $@"/*dialect*/SELECT DISTINCT FSTABLENAME,FSBILLID,FENTRYID FROM dbo.T_SAL_DELIVERYNOTICEENTRY_LK
|
||||
WHERE FSBILLID= {tempFid}";
|
||||
dt = DBServiceHelper.ExecuteDynamicObject(this.Context, getSourceSql);
|
||||
if (dt == null || dt.Count == 0)
|
||||
{
|
||||
tuiName += "发货通知单 ";
|
||||
result = Invoke("SAL_SaleOrder", "SAL_DELIVERYNOTICE", tempFid.ToString(), "193822715afc48aa9fa6d6beca7700ab", ref stockId, "发货通知单");
|
||||
sheet = result.SuccessDataEnity.FirstOrDefault();
|
||||
tempFid = int.Parse(sheet["id"].ToString());
|
||||
//throw new KDBusinessException("", "没有上查关联的跨组织的采购订单:" + tablename);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
var FENTRYIDList = dt.Select(t => int.Parse(t["FENTRYID"].ToString())).ToList();
|
||||
string ids = string.Join(",", FENTRYIDList);
|
||||
getSourceSql = $@"/*dialect*/ SELECT MAX(FID) FID FROM T_SAL_DELIVERYNOTICEENTRY WHERE FENTRYID IN({ids})";
|
||||
dt = DBServiceHelper.ExecuteDynamicObject(this.Context, getSourceSql);
|
||||
if (dt == null || dt.Count == 0)
|
||||
{
|
||||
tuiName += "发货通知单 ";
|
||||
result = Invoke("SAL_SaleOrder", "SAL_DELIVERYNOTICE", tempFid.ToString(), "193822715afc48aa9fa6d6beca7700ab", ref stockId,"发货通知单");
|
||||
sheet = result.SuccessDataEnity.FirstOrDefault();
|
||||
tempFid = int.Parse(sheet["id"].ToString());
|
||||
//throw new KDBusinessException("", "没有上查关联的跨组织的采购订单:" + tablename);
|
||||
throw new KDBusinessException("", "没有上查关联的跨组织的发货通知单:" + tablename);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
var FENTRYIDList = dt.Select(t => int.Parse(t["FENTRYID"].ToString())).ToList();
|
||||
string ids = string.Join(",", FENTRYIDList);
|
||||
getSourceSql = $@"/*dialect*/ SELECT FID FROM T_SAL_DELIVERYNOTICEENTRY WHERE FENTRYID IN({ids})";
|
||||
dt = DBServiceHelper.ExecuteDynamicObject(this.Context, getSourceSql);
|
||||
if (dt == null || dt.Count == 0)
|
||||
{
|
||||
throw new KDBusinessException("", "没有上查关联的跨组织的发货通知单:" + tablename);
|
||||
}
|
||||
else
|
||||
{
|
||||
tempFid = int.Parse(dt.FirstOrDefault()["FID"].ToString());
|
||||
}
|
||||
|
||||
tempFid = int.Parse(dt.FirstOrDefault()["FID"].ToString());
|
||||
}
|
||||
getSourceSql = $@"/*dialect*/SELECT FSTABLENAME,FSBILLID,FENTRYID FROM dbo.T_SAL_OUTSTOCKENTRY_LK
|
||||
|
||||
|
||||
|
||||
}
|
||||
getSourceSql = $@"/*dialect*/SELECT DISTINCT FSTABLENAME,FSBILLID,FENTRYID FROM dbo.T_SAL_OUTSTOCKENTRY_LK
|
||||
WHERE FSBILLID= {tempFid}";
|
||||
dt = DBServiceHelper.ExecuteDynamicObject(this.Context, getSourceSql);
|
||||
if (dt == null || dt.Count == 0)
|
||||
{
|
||||
tuiName += "销售出库单 ";
|
||||
stockId = 0;
|
||||
result = Invoke("SAL_DELIVERYNOTICE", "SAL_OUTSTOCK", tempFid.ToString(), "ad0779a4685a43a08f08d2e42d7bf3e9", ref stockId,"销售出库单");
|
||||
//tuiName += "销售出库单 ";
|
||||
//stockId = 0;
|
||||
//result = Invoke("SAL_DELIVERYNOTICE", "SAL_OUTSTOCK", tempFid.ToString(), "ad0779a4685a43a08f08d2e42d7bf3e9", ref stockId, "销售出库单");
|
||||
|
||||
nextOrderId = IfNeedPush("SAL_OUTSTOCK", fid);
|
||||
if (nextOrderId == 0)
|
||||
{
|
||||
tuiName += "销售出库单 ";
|
||||
stockId = 0;
|
||||
result = Invoke("SAL_DELIVERYNOTICE", "SAL_OUTSTOCK", tempFid.ToString(), "ad0779a4685a43a08f08d2e42d7bf3e9", ref stockId, "销售出库单");
|
||||
}
|
||||
else
|
||||
{
|
||||
result = null;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
//}
|
||||
//result = Invoke("SAL_SaleOrder", "SAL_DELIVERYNOTICE", tempFid.ToString(), "193822715afc48aa9fa6d6beca7700ab", ref stockId);
|
||||
@ -507,7 +566,16 @@ namespace Pilot_KD_Parino.Sal_Order
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 下推目标订单
|
||||
/// </summary>
|
||||
/// <param name="source">数据源</param>
|
||||
/// <param name="target">目标表</param>
|
||||
/// <param name="tempFid">数据源FID</param>
|
||||
/// <param name="sargetBillTypeId">目标订单类型</param>
|
||||
/// <param name="stockId">指定仓库ID,0为不指定</param>
|
||||
/// <param name="name">目标单据描述</param>
|
||||
/// <returns></returns>
|
||||
private IOperationResult Invoke(string source, string target, string tempFid, string sargetBillTypeId, ref int stockId,string name="")
|
||||
{
|
||||
try
|
||||
@ -869,8 +937,6 @@ namespace Pilot_KD_Parino.Sal_Order
|
||||
OperateOption saveOption = OperateOption.Create();
|
||||
this.SaveBill(billView, saveOption);
|
||||
}
|
||||
|
||||
|
||||
public IBillView CreateBillView(string FKEY)
|
||||
{
|
||||
// 读取商品类型的元数据
|
||||
@ -887,7 +953,6 @@ namespace Pilot_KD_Parino.Sal_Order
|
||||
billView.Initialize(openParam, provider);
|
||||
return billView as IBillView;
|
||||
}
|
||||
|
||||
private BillOpenParameter CreateOpenParameter(FormMetadata meta)
|
||||
{
|
||||
Form form = meta.BusinessInfo.GetForm();
|
||||
@ -965,5 +1030,88 @@ namespace Pilot_KD_Parino.Sal_Order
|
||||
((IDynamicFormViewService)billView).LoadData();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 判断当前订单是否需要下推下一个新订单
|
||||
/// </summary>
|
||||
/// <param name="target">目标表</param>
|
||||
/// <param name="tempFid">数据源FID</param>
|
||||
/// <returns>返回0则需要推送,大于0则是下一个订单的FID</returns>
|
||||
private int IfNeedPush(string target, string tempFid)
|
||||
{
|
||||
int result = 0;
|
||||
//插入自动生成记录
|
||||
string Sql = $@"/*dialect*/SELECT TFid FROM [zz_zTuiSongLog]
|
||||
WHERE FromType='SAL_OUTSTOCK' AND fid={tempFid} AND TargetType='{target}'";
|
||||
var data= DBServiceHelper.ExecuteDynamicObject(this.Context, Sql, null, null, CommandType.Text, null);
|
||||
if (data != null && data.Count > 0)
|
||||
{
|
||||
var fidList = data.Select(t => t["TFid"]).ToList();
|
||||
string fid = string.Join(",", fidList);
|
||||
if (target == "PUR_ReceiveBill")
|
||||
{
|
||||
Sql = $@"/*dialect*/SELECT fid,[FDOCUMENTSTATUS],[FBILLNO] FROM dbo.T_PUR_RECEIVE
|
||||
WHERE fid in ({fid}) ";
|
||||
data = DBServiceHelper.ExecuteDynamicObject(this.Context, Sql, null, null, CommandType.Text, null);
|
||||
if (data != null && data.Count > 0)
|
||||
{
|
||||
if (data.Count > 1)
|
||||
throw new KDBusinessException("数据错误","本张销售出库单曾经推送了多张收料通知单,请先删除多余的收料通知单");
|
||||
if (data[0]["FDOCUMENTSTATUS"].ToString() != "C")
|
||||
{
|
||||
throw new KDBusinessException("数据错误", $@"曾经推送的收料通知单{data[0]["FBILLNO"].ToString()}未审核,请先删除或者手动审核后再重新跨组织推送");
|
||||
}
|
||||
else
|
||||
{
|
||||
result = int.Parse(data[0]["fid"].ToString());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else if (target == "STK_InStock")
|
||||
{
|
||||
Sql = $@"/*dialect*/SELECT fid,[FDOCUMENTSTATUS],[FBILLNO] FROM dbo.T_STK_INSTOCK
|
||||
WHERE fid in ({fid}) ";
|
||||
data = DBServiceHelper.ExecuteDynamicObject(this.Context, Sql, null, null, CommandType.Text, null);
|
||||
if (data != null && data.Count > 0)
|
||||
{
|
||||
if (data.Count > 1)
|
||||
throw new KDBusinessException("数据错误", "本张销售出库单曾经推送了多张采购入库单,请先删除多余的采购入库单");
|
||||
if (data[0]["FDOCUMENTSTATUS"].ToString() != "C")
|
||||
{
|
||||
throw new KDBusinessException("数据错误", $@"曾经推送的采购入库单{data[0]["FBILLNO"].ToString()}未审核,请先删除或者手动审核后再重新跨组织推送");
|
||||
}
|
||||
else
|
||||
{
|
||||
result = int.Parse(data[0]["fid"].ToString());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
else if (target == "SAL_OUTSTOCK")
|
||||
{
|
||||
Sql = $@"/*dialect*/SELECT fid,[FDOCUMENTSTATUS],[FBILLNO] FROM dbo.T_SAL_OUTSTOCK
|
||||
WHERE fid in ({fid}) ";
|
||||
data = DBServiceHelper.ExecuteDynamicObject(this.Context, Sql, null, null, CommandType.Text, null);
|
||||
if (data != null && data.Count > 0)
|
||||
{
|
||||
if (data.Count > 1)
|
||||
throw new KDBusinessException("数据错误", "本张销售出库单曾经推送了多张跨组织的销售出库单,请先删除多余的跨组织的销售出库单");
|
||||
if (data[0]["FDOCUMENTSTATUS"].ToString() != "C")
|
||||
{
|
||||
throw new KDBusinessException("数据错误", $@"曾经推送的跨组织的销售出库单{data[0]["FBILLNO"].ToString()}未审核,请先删除或者手动审核后再重新跨组织推送");
|
||||
}
|
||||
else
|
||||
{
|
||||
result = int.Parse(data[0]["fid"].ToString());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return result ;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user