2025-08-28 19:23:07 +08:00

1140 lines
62 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Kingdee.BOS;
using Kingdee.BOS.App;
using Kingdee.BOS.Contracts;
using Kingdee.BOS.Core.Bill;
using Kingdee.BOS.Core;
using Kingdee.BOS.Core.DynamicForm;
using Kingdee.BOS.Core.DynamicForm.Operation;
using Kingdee.BOS.Core.DynamicForm.PlugIn;
using Kingdee.BOS.Core.DynamicForm.PlugIn.Args;
using Kingdee.BOS.Core.Interaction;
using Kingdee.BOS.Core.List;
using Kingdee.BOS.Core.Metadata;
using Kingdee.BOS.Core.Metadata.ConvertElement;
using Kingdee.BOS.Core.Metadata.ConvertElement.ServiceArgs;
using Kingdee.BOS.Core.Metadata.FormElement;
using Kingdee.BOS.Log;
using Kingdee.BOS.Orm;
using Kingdee.BOS.Orm.DataEntity;
using Kingdee.BOS.ServiceHelper;
using Kingdee.BOS.Util;
using Pilot_KD_Parino.Common;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Threading;
using Org.BouncyCastle.Asn1.X509;
namespace Pilot_KD_Parino.Sal_Order
{
[Description("下推生成销售出库单及联动生成其他单的插件"), HotUpdate]
public class PushSaleOutBillPlugIn : AbstractDynamicFormPlugIn // AbstractListPlugIn
{
long sScrId = 0;
string sScrBillNo = "";
string fid = "0";
DynamicObject BillObj = null;
int nextOrderId = 0;
public override void AfterBarItemClick(AfterBarItemClickEventArgs e)
{
base.AfterBarItemClick(e);
string tuiName = "";
{
//备货组织操作备货组织的发货出库单跨组织下推
if (e.BarItemKey.Equals("tbPushSalOut111", StringComparison.OrdinalIgnoreCase))
{
var FEntity = this.View.Model.DataObject;
BillObj = FEntity;
//var sdsas = JsonHelper.ToJson(BillObj);
//Logger.Error("销售出库单对象", sdsas, new Exception());
var id = FEntity["id"];
fid = Convert.ToString(id);
string formid = FEntity["FFormId"].ToString();
//var detailList = (FEntity["SAL_DELIVERYNOTICEENTRY"]);
//发货通知单或者发货出库单
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)
{
this.View.ShowMessage("没有上查关联的发货通知单");
}
int tempFid = int.Parse(dt.Select(t => t["FSBILLID"]).FirstOrDefault().ToString());
string tablename = dt.Select(t => t["FSTABLENAME"]).FirstOrDefault().ToString();
int xiaoFid = 0;
//找到采购订单
for (int kk = 0; kk < 6 && tablename.ToUpper() != "T_PUR_POORDERENTRY"; kk++)
{
////发货通知单
tempFid = int.Parse(dt.Select(t => t["FSBILLID"]).FirstOrDefault().ToString());
string tempTable = dt.Select(t => t["FSTABLENAME"]).FirstOrDefault().ToString();
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)
//{
// this.View.ShowMessage("没有上查关联的销售单");
//}
////共享的采购订单
//tempFid = int.Parse(dt.Select(t => t["FSBILLID"]).FirstOrDefault().ToString());
//tempTable = dt.Select(t => t["FSTABLENAME"]).FirstOrDefault().ToString();
//getSourceSql = $@"/*dialect*/ SELECT 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)
{
break;
//this.View.ShowMessage("没有上查关联的跨组织的采购订单");
}
else if ( dt.Count > 1 )
{
throw new KDBusinessException("", "本张销售单下推多张采购订单,不能用自动跨组织推单功能:" + getSourceSql);
}
else
{
tablename = dt.Select(t => t["FSTABLENAME"]).FirstOrDefault().ToString();
tempFid = int.Parse(dt.Select(t => t["FSBILLID"]).FirstOrDefault().ToString());
}
}
if (tablename.ToUpper() != "T_PUR_POORDERENTRY")
{
getSourceSql = $@"/*dialect*/SELECT FSTABLENAME,FSBILLID,FENTRYID FROM dbo.T_PUR_POORDERENTRY_LK
WHERE FSBILLID= {tempFid}";
dt = DBServiceHelper.ExecuteDynamicObject(this.Context, getSourceSql);
if (dt == null || dt.Count == 0)
{
throw new KDBusinessException("", "没有上查关联的跨组织的采购订单:" + tablename);
}
else if (dt.Select(t => t["FSBILLID"].ToString()).Distinct().Count() > 1)
{
throw new KDBusinessException("", "本张销售单下推多张采购订单,不能用自动跨组织推单功能:" + getSourceSql);
}
else
{
xiaoFid = tempFid;
//tablename = dt.Select(t => t["FSTABLENAME"]).FirstOrDefault().ToString();
//tempFid = int.Parse(dt.Select(t => t["FSBILLID"]).FirstOrDefault().ToString());
var FENTRYIDList = dt.Select(t => int.Parse(t["FENTRYID"].ToString())).ToList();
string ids = string.Join(",", FENTRYIDList);
getSourceSql = $@"/*dialect*/ SELECT FID FROM T_PUR_POORDERENTRY 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());
}
}
}
//先判断采购订单是否有采购入库单或者收料单
getSourceSql = $@"/*dialect*/SELECT FSTABLENAME,FSBILLID,FENTRYID FROM dbo.T_PUR_RECEIVEENTRY_LK
WHERE FSBILLID= {tempFid}";
dt = DBServiceHelper.ExecuteDynamicObject(this.Context, getSourceSql);
int stockId = 0;
IOperationResult result = null;
DynamicObject sheet = null;
if (dt == null || dt.Count == 0)
{
getSourceSql = $@"/*dialect*/SELECT FSTABLENAME,FSBILLID,FENTRYID FROM dbo.T_STK_INSTOCKENTRY_LK
WHERE FSBILLID= {tempFid}";
dt = DBServiceHelper.ExecuteDynamicObject(this.Context, getSourceSql);
if (dt != null || dt.Count > 0)
{
//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();
//string jsonsheet = JsonHelper.ToJson(sheet);
//Logger.Error("推送采购入库单",jsonsheet,null);
if (sheet != null)
{
tuiName += "采购入库单 ";
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)
{
var tempNextOrderId = IfNeedPush("STK_InStock", fid);
if (tempNextOrderId == 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 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)
{
this.View.ShowMessage("没有上查关联的跨组织的采购订单");
return;
}
else
{
tablename = dt.Select(t => t["FSTABLENAME"]).FirstOrDefault().ToString();
}
tempFid = int.Parse(dt.Select(t => t["FSBILLID"]).FirstOrDefault().ToString());
}
if (tablename.ToUpper() != "T_SAL_ORDERENTRY" && xiaoFid == 0)
{
throw new KDBusinessException("", "推送销售发货通知单失败,没有上查关联的跨组织的销售订单:" + tablename);
}
if (xiaoFid > 0)
tempFid = xiaoFid;
//getSourceSql = $@"/*dialect*/ SELECT FSALEORGID FROM T_SAL_ORDER WHERE fid ={tempFid}";
//dt = DBServiceHelper.ExecuteDynamicObject(this.Context, getSourceSql);
//string saleorgid = "";
//if (dt != null && dt.Count > 0)
//{
// saleorgid = dt.FirstOrDefault()["FSALEORGID"].ToString();
//}
//if (saleorgid != "100302" && saleorgid != "100303")
//{
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)
{
throw new KDBusinessException("", "没有上查关联的跨组织的发货通知单:" + tablename);
}
else
{
tempFid = int.Parse(dt.FirstOrDefault()["FID"].ToString());
}
}
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, "销售出库单");
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);
//sheet = result.SuccessDataEnity.FirstOrDefault();
if(tuiName!="")
this.View.ShowMessage($@"跨组织下推 {tuiName}订单完成");
else
this.View.ShowMessage("没有符合条件的跨组织订单可以下推");
}
}
{
////备货组织操作销售组织的销售出库单跨组织下推
////A的销售出库单-->A的发货通知单-->A的销售订单-->B的销售订单(分两种情况)-->B的销售发货通知单-->B的销售出库单
//if (e.BarItemKey.Equals("tbPushSalOut111", StringComparison.OrdinalIgnoreCase))
//{
// var FEntity = this.View.Model.DataObject;
// var id = FEntity["id"];
// string formid = FEntity["FFormId"].ToString();
// //var detailList = (FEntity["SAL_DELIVERYNOTICEENTRY"]);
// string AxiaoId = "";
// string BxiaoId = "";
// string caiGouId = ""; //采购订单ID
// string ruKuId = "";
// string AfaHuoId = "";
// string BfaHuoId = "";
// //发货通知单或者发货出库单
// string getSourceSql = $@"/*dialect*/SELECT 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)
// {
// this.View.ShowMessage("没有上查关联的发货通知单");
// }
// int tempFid = int.Parse(dt.Select(t => t["FSBILLID"]).FirstOrDefault().ToString());
// string tablename = dt.Select(t => t["FSTABLENAME"]).FirstOrDefault().ToString();
// int xiaoFid = 0;
// AfaHuoId = tempFid.ToString();
// getSourceSql = $@"/*dialect*/SELECT FSTABLENAME,FSBILLID FROM T_SAL_DELIVERYNOTICEENTRY_LK
// WHERE FENTRYID IN ( SELECT FENTRYID FROM dbo.T_SAL_DELIVERYNOTICEENTRY WHERE FID = {id})";
// dt = DBServiceHelper.ExecuteDynamicObject(this.Context, getSourceSql);
// if (dt == null || dt.Count == 0)
// {
// //throw new KDBusinessException("", "没有找到源头销售订单:" );
// return;
// }
// tempFid = int.Parse(dt.Select(t => t["FSBILLID"]).FirstOrDefault().ToString());
// tablename = dt.Select(t => t["FSTABLENAME"]).FirstOrDefault().ToString();
// AxiaoId = tempFid.ToString();
// //销售订单找到跨组织的销售订单
// getSourceSql = $@"/*dialect*/SELECT FSTABLENAME,FSBILLID,FENTRYID FROM T_SAL_ORDERENTRY_LK
// WHERE FSBILLID = {tempFid} and FSTABLENAME='T_SAL_ORDERENTRY' ";
// dt = DBServiceHelper.ExecuteDynamicObject(this.Context, getSourceSql);
// //throw new KDBusinessException("", "1:" + getSourceSql);
// string fentryid = "";
// if (dt == null || dt.Count == 0)
// {
// //如果不是小公司的订单,是珠海派诺--珠海兴诺的订单,则按 销售订单--采购申请单--采购订单--兴诺的销售订单 逻辑找订单
// //采购申请单
// getSourceSql = $@"/*dialect*/SELECT FSTABLENAME,FSBILLID,FENTRYID FROM T_PUR_ReqEntry_LK
// WHERE FSBILLID = {tempFid} and FSTABLENAME='T_SAL_ORDERENTRY' ";
// dt = DBServiceHelper.ExecuteDynamicObject(this.Context, getSourceSql);
// if (dt == null || dt.Count == 0)
// {
// throw new KDBusinessException("", "没有找到跨组织的采购申请单:" + getSourceSql);
// return;
// }
// else
// {
// //采购申请单
// tempFid = int.Parse(dt.Select(t => t["FSBILLID"]).FirstOrDefault().ToString());
// tablename = dt.Select(t => t["FSTABLENAME"]).FirstOrDefault().ToString();
// fentryid = dt.Select(t => t["FENTRYID"]).FirstOrDefault().ToString();
// getSourceSql = $@"/*dialect*/ SELECT FID FROM T_PUR_ReqEntry WHERE FENTRYID ={fentryid}";
// dt = DBServiceHelper.ExecuteDynamicObject(this.Context, getSourceSql);
// tempFid = int.Parse(dt.FirstOrDefault()["FID"].ToString());
// getSourceSql = $@"/*dialect*/SELECT FSTABLENAME,FSBILLID,FENTRYID FROM t_PUR_POOrderEntry_LK
// WHERE FSBILLID = {tempFid} and FSTABLENAME='T_PUR_ReqEntry' ";
// dt = DBServiceHelper.ExecuteDynamicObject(this.Context, getSourceSql);
// if (dt == null || dt.Count == 0)
// {
// throw new KDBusinessException("", "没有找到跨组织的采购订单:" + getSourceSql);
// return;
// }
// else
// {
// //兴诺的采购订单
// tempFid = int.Parse(dt.Select(t => t["FSBILLID"]).FirstOrDefault().ToString());
// tablename = dt.Select(t => t["FSTABLENAME"]).FirstOrDefault().ToString();
// fentryid = dt.Select(t => t["FENTRYID"]).FirstOrDefault().ToString();
// getSourceSql = $@"/*dialect*/ SELECT FID FROM t_PUR_POOrderEntry WHERE FENTRYID ={fentryid}";
// dt = DBServiceHelper.ExecuteDynamicObject(this.Context, getSourceSql);
// tempFid = int.Parse(dt.FirstOrDefault()["FID"].ToString());
// caiGouId = tempFid.ToString();
// //兴诺的销售订单
// getSourceSql = $@"/*dialect*/SELECT FSTABLENAME,FSBILLID,FENTRYID FROM T_SAL_ORDERENTRY_LK
// WHERE FSBILLID = {tempFid} and FSTABLENAME='t_PUR_POOrderEntry' ";
// dt = DBServiceHelper.ExecuteDynamicObject(this.Context, getSourceSql);
// if (dt == null || dt.Count == 0)
// {
// throw new KDBusinessException("", "没有找到跨组织的销售订单:" + getSourceSql);
// return;
// }
// tempFid = int.Parse(dt.Select(t => t["FSBILLID"]).FirstOrDefault().ToString());
// tablename = dt.Select(t => t["FSTABLENAME"]).FirstOrDefault().ToString();
// fentryid = dt.Select(t => t["FENTRYID"]).FirstOrDefault().ToString();
// getSourceSql = $@"/*dialect*/ SELECT FID FROM T_SAL_ORDERENTRY WHERE FENTRYID ={fentryid}";
// dt = DBServiceHelper.ExecuteDynamicObject(this.Context, getSourceSql);
// tempFid = int.Parse(dt.Select(t => t["FSBILLID"]).FirstOrDefault().ToString());
// tablename = dt.Select(t => t["FSTABLENAME"]).FirstOrDefault().ToString();
// BxiaoId = tempFid.ToString();
// }
// }
// //throw new KDBusinessException("", "没有找到跨组织的销售订单:"+ getSourceSql);
// }
// else
// {
// tempFid = int.Parse(dt.Select(t => t["FSBILLID"]).FirstOrDefault().ToString());
// tablename = dt.Select(t => t["FSTABLENAME"]).FirstOrDefault().ToString();
// BxiaoId = tempFid.ToString();
// //找到采购订单
// for (int kk = 0; kk < 6 && tablename.ToUpper() != "T_PUR_POORDERENTRY"; kk++)
// {
// ////发货通知单
// string tempTable = dt.Select(t => t["FSTABLENAME"]).FirstOrDefault().ToString();
// getSourceSql = $@"/*dialect*/SELECT 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)
// //{
// // this.View.ShowMessage("没有上查关联的销售单");
// //}
// ////共享的采购订单
// //tempFid = int.Parse(dt.Select(t => t["FSBILLID"]).FirstOrDefault().ToString());
// //tempTable = dt.Select(t => t["FSTABLENAME"]).FirstOrDefault().ToString();
// //getSourceSql = $@"/*dialect*/ SELECT 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)
// {
// break;
// //this.View.ShowMessage("没有上查关联的跨组织的采购订单");
// }
// else
// {
// tablename = dt.Select(t => t["FSTABLENAME"]).FirstOrDefault().ToString();
// tempFid = int.Parse(dt.Select(t => t["FSBILLID"]).FirstOrDefault().ToString());
// if (tempTable == "T_PUR_POORDERENTRY")
// {
// caiGouId = tempFid.ToString();
// }
// }
// }
// if (tablename.ToUpper() != "T_PUR_POORDERENTRY")
// {
// getSourceSql = $@"/*dialect*/SELECT FSTABLENAME,FSBILLID,FENTRYID FROM dbo.T_PUR_POORDERENTRY_LK
// WHERE FSBILLID= {tempFid}";
// dt = DBServiceHelper.ExecuteDynamicObject(this.Context, getSourceSql);
// if (dt == null || dt.Count == 0)
// {
// throw new KDBusinessException("", "没有上查关联的跨组织的采购订单:" + tablename);
// }
// else
// {
// xiaoFid = tempFid;
// //tablename = dt.Select(t => t["FSTABLENAME"]).FirstOrDefault().ToString();
// //tempFid = int.Parse(dt.Select(t => t["FSBILLID"]).FirstOrDefault().ToString());
// var FENTRYIDList = dt.Select(t => int.Parse(t["FENTRYID"].ToString())).ToList();
// string ids = string.Join(",", FENTRYIDList);
// getSourceSql = $@"/*dialect*/ SELECT FID FROM T_PUR_POORDERENTRY 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());
// }
// }
// }
// }
// int stockId = 0;
// IOperationResult result = Invoke("PUR_PurchaseOrder", "PUR_ReceiveBill", caiGouId, "7cd93c259999489c97798063f2f7bd70", ref stockId);
// var sheet = result.SuccessDataEnity.FirstOrDefault();
// string jsonsheet = JsonHelper.ToJson(sheet);
// //Logger.Error("推送采购入库单",jsonsheet,null);
// if (sheet != null)
// {
// 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");
// }
// // 找到备货组织B的发货通知单
// getSourceSql = $@"/*dialect*/SELECT FSTABLENAME,FSBILLID,FENTRYID FROM dbo.T_SAL_DELIVERYNOTICEENTRY_LK
// WHERE FSBILLID= {BxiaoId}";
// dt = DBServiceHelper.ExecuteDynamicObject(this.Context, getSourceSql);
// if (dt == null || dt.Count == 0)
// {
// result = Invoke("SAL_SaleOrder", "SAL_DELIVERYNOTICE", BxiaoId, "193822715afc48aa9fa6d6beca7700ab", ref stockId);
// sheet = result.SuccessDataEnity.FirstOrDefault();
// tempFid = int.Parse(sheet["id"].ToString());
// BfaHuoId = tempFid.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 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());
// BfaHuoId = tempFid.ToString();
// }
// }
// result = Invoke("SAL_DELIVERYNOTICE", "SAL_OUTSTOCK", BfaHuoId, "ad0779a4685a43a08f08d2e42d7bf3e9", ref stockId);
// //result = Invoke("SAL_SaleOrder", "SAL_DELIVERYNOTICE", tempFid.ToString(), "193822715afc48aa9fa6d6beca7700ab", ref stockId);
// //sheet = result.SuccessDataEnity.FirstOrDefault();
// this.View.ShowMessage("跨组织下推订单完成");
//}
}
}
/// <summary>
/// 下推目标订单
/// </summary>
/// <param name="source">数据源</param>
/// <param name="target">目标表</param>
/// <param name="tempFid">数据源FID</param>
/// <param name="sargetBillTypeId">目标订单类型</param>
/// <param name="stockId">指定仓库ID0为不指定</param>
/// <param name="name">目标单据描述</param>
/// <returns></returns>
private IOperationResult Invoke(string source, string target, string tempFid, string sargetBillTypeId, ref int stockId,string name="")
{
try
{
IOperationResult result = new OperationResult();
//获取单据转换规则
ConvertRuleElement ruleElement;
var ruleElementList = ServiceHelper.GetService<IConvertService>().GetConvertRules(this.Context, source, target).ToList();
if (source == "PUR_PurchaseOrder" && target== "PUR_ReceiveBill")
{
ruleElement = ruleElementList.Where(t => t.OriginKey == "cc8862d6-9368-4f7d-bc83-38ce217b6ba1").FirstOrDefault();
}
else if (source == "PUR_ReceiveBill" && target == "STK_InStock")
{
ruleElement = ruleElementList.Where(t => t.OriginKey == "e51ffa3e-3a6f-4084-8868-9370f5977bcc").FirstOrDefault();
}
else if (source == "SAL_SaleOrder" && target == "SAL_DELIVERYNOTICE")
{
ruleElement = ruleElementList.Where(t => t.OriginKey == "9090ab67-7255-4a33-a457-a70fa2d90536").FirstOrDefault();
}
else if (source == "SAL_DELIVERYNOTICE" && target == "SAL_OUTSTOCK")
{
ruleElement = ruleElementList.Where(t => t.OriginKey == "59bef03a-5c03-426b-8cc3-7631d11a951b").FirstOrDefault();
}
else
ruleElement = ServiceHelper.GetService<IConvertService>().GetConvertRules(this.Context, source, target).FirstOrDefault();
//如下代码 直接通过查询数据库获取单据转换源单数据
ListSelectedRowCollection rows = new ListSelectedRowCollection();
int i = 0;
ListSelectedRow row = new ListSelectedRow(tempFid, string.Empty, i++, source);
rows.Add(row);
PushArgs pushArgs = new PushArgs(ruleElement, rows.ToArray());
pushArgs.TargetBillTypeId = sargetBillTypeId;//单据类型
//转换生成目标单
ConvertOperationResult convertResult = ServiceHelper.GetService<IConvertService>().Push(this.Context, pushArgs);
////合并转换操作结果
//result.MergeResult(convertResult);
////目标单据数据集合
DynamicObject[] destObjs = convertResult.TargetDataEntities.Select(r => r.DataEntity).ToArray();
////目标单元数据
FormMetadata destFormMetadata = ServiceHelper.GetService<IMetaDataService>().Load(this.Context, target) as FormMetadata;
IOperationResult saveResult2 = BusinessDataServiceHelper.Draft(this.Context, destFormMetadata.BusinessInfo, destObjs, OperateOption.Create());
var sdsas = JsonHelper.ToJson(destObjs);
Logger.Error("目标单据数据集合", sdsas, new Exception());
int temStockId = stockId;
if (target == "PUR_ReceiveBill")//收料通知单,强制没有配置仓库的物料进成品仓库
{
//var sheet = destObjs.FirstOrDefault(); PUR_ReceiveEntry
//提取单签销售出库单物料和数量转为字典
var itemList = BillObj["SAL_OUTSTOCKENTRY"] as DynamicObjectCollection;
Dictionary<string, decimal> MaterialCode = new Dictionary<string, decimal>();
foreach (var item in itemList)
{
var Material = item["MaterialID"] as DynamicObject;
if (Material != null)
{
string code2 = (Material["Number"].ToString());
decimal qty = decimal.Parse(item["RealQty"].ToString());
if (!MaterialCode.ContainsKey(code2))
{
MaterialCode.Add(code2, qty);
}
else
MaterialCode[code2] = MaterialCode[code2] + qty;
}
}
string pur = ("PUR_ReceiveEntry");
var stocks3 = destObjs[0];
if (temStockId == 0)
{
string sql2 = $@"/*dialect*/ SELECT FUseOrgId,fname, a.FSTOCKID,FForbidStatus,FDocumentStatus FROM T_BD_STOCK a
LEFT JOIN T_BD_STOCK_L b ON a.FSTOCKID=b.FSTOCKID
WHERE fname like '%周转仓%' AND FForbidStatus='A' AND FDocumentStatus='C' AND FUseOrgId={stocks3["StockOrgId_Id"]}";
var stockList = DBServiceHelper.ExecuteDynamicObject(this.Context, sql2, null, null, CommandType.Text, null);
if (stockList == null || stockList.Count == 0)
{
throw new KDBusinessException("", "所涉及的跨组织单位没有配置周转仓");
}
temStockId = stockList.Select(t => int.Parse(t["FSTOCKID"].ToString())).FirstOrDefault();
stockId = temStockId;
}
//var stocks333 = stocks3[pur];
//var stocks = stocks333 as DynamicObjectCollection;
//var stock0 = stocks.ToList();
//拆分下推情况下匹配物料自动删减数量或删减行
List<DynamicObject> deleteItem = new List<DynamicObject>();
//stock0.ForEach(t =>
//{
// t["StockID_Id"] = temStockId;
// var Material = t["MaterialID"] as DynamicObject;
// if (Material != null)
// {
// string code2 = (Material["Number"].ToString());
// decimal qty = decimal.Parse(t["ActReceiveQty"].ToString());
// if (MaterialCode.ContainsKey(code2))
// {
// if (MaterialCode[code2] != qty)
// {
// t["ActReceiveQty"] = MaterialCode[code2];
// t["StockQty"] = MaterialCode[code2];
// }
// }
// else
// {
// deleteItem.Add(t);
// }
// }
//});
var stock0 = stocks3[pur] as DynamicObjectCollection;
foreach(var item in stock0)
{
item["StockID_Id"] = temStockId;
var Material = item["MaterialID"] as DynamicObject;
if (Material != null)
{
string code2 = (Material["Number"].ToString());
decimal qty = decimal.Parse(item["ActReceiveQty"].ToString());
if (MaterialCode.ContainsKey(code2))
{
if (MaterialCode[code2] != qty)
{
item["ActReceiveQty"] = MaterialCode[code2];
item["StockQty"] = MaterialCode[code2];
}
}
else
{
deleteItem.Add(item);
}
}
}
if (deleteItem.Count > 0)
{
//Logger.Error("BeforeData", JsonHelper.ToJson(destObjs), new Exception());
deleteItem.ForEach(t =>
{
stock0.Remove(t);
});
//Logger.Error("AfterData", JsonHelper.ToJson(destObjs), new Exception());
}
ServiceHelper.GetService<ISaveService>().Save(this.Context, destFormMetadata.BusinessInfo, destObjs, OperateOption.Create());
//调用FActReceiveQty字段值更新服务
InvokeFieldUpdate(Convert.ToString(stocks3["Id"]));
//if (stock0.Count > 0)
//{
// var others= stocks.Where(t => int.Parse(t["StockID_Id"].ToString()) != 0).ToList();
// if (others.Count == 0)
// {
// throw new KDBusinessException("", "上查关联的跨组织的采购订单明细全部没有配置仓库" );
// }
// var other2 = others.Select(t => t["StockId"]).ToList();
// var json1 = JsonHelper.ToJson(other2);
// List<PUR_ReceiveEntryStockId> other3 = JsonHelper.ToObject<List<PUR_ReceiveEntryStockId>>(json1);
// var other4 = other3.Where(t => t.Name.FirstOrDefault().Value.Contains("成品仓")).ToList();
// if (other4.Count > 0)
// {
// stockId = other4.Select(t => t.Id).FirstOrDefault();
// }
// else
// {
// stockId = other3.Select(t => t.Id).FirstOrDefault();
// }
// stock0.ForEach(t =>
// {
// t["StockID_Id"] = stockId;
// });
//}
}
if (target == "SAL_DELIVERYNOTICE")//采购入库单,强制没有配置仓库的物料进成品仓库
{
//throw new KDBusinessException("","还没开发好");
//var sheet = destObjs.FirstOrDefault(); PUR_ReceiveEntry
string pur = ("SAL_DELIVERYNOTICEENTRY");
var stocks3 = destObjs[0];
var stocks333 = stocks3[pur];
var stocks = stocks333 as DynamicObjectCollection;
var stock0 = stocks.ToList();
stock0.ForEach(t =>
{
t["StockID_Id"] = temStockId;
});
}
//SAL_OUTSTOCK
if (target == "SAL_OUTSTOCK")//销售出库单,强制跨组织的出库单是周转仓 2025-06-13
{
//var sheet = destObjs.FirstOrDefault(); PUR_ReceiveEntry
string pur = ("SAL_OUTSTOCKENTRY");
var stocks3 = destObjs[0];
int temStockId2 = 0;
if (temStockId2 == 0) //强制跨组织的出库单是周转仓
{
string sql2 = $@"/*dialect*/ SELECT FUseOrgId,fname, a.FSTOCKID,FForbidStatus,FDocumentStatus FROM T_BD_STOCK a
LEFT JOIN T_BD_STOCK_L b ON a.FSTOCKID=b.FSTOCKID
WHERE fname like '%周转仓%' AND FForbidStatus='A' AND FDocumentStatus='C' AND FUseOrgId={stocks3["StockOrgId_Id"]}";
var stockList = DBServiceHelper.ExecuteDynamicObject(this.Context, sql2, null, null, CommandType.Text, null);
if (stockList == null || stockList.Count == 0)
{
throw new KDBusinessException("", "所涉及的跨组织单位没有配置周转仓");
}
temStockId2 = stockList.Select(t => int.Parse(t["FSTOCKID"].ToString())).FirstOrDefault();
stockId = temStockId2;
}
var stocks333 = stocks3[pur];
var stocks = stocks333 as DynamicObjectCollection;
var stock0 = stocks.ToList();
stock0.ForEach(t =>
{
t["StockID_Id"] = temStockId2;
Thread.Sleep(100);
});
var list0 = stock0.Where(t => t["StockID_Id"].ToString() == "0").ToList();
list0.ForEach(t =>
{
t["StockID_Id"] = temStockId2;
Thread.Sleep(100);
});
}
//根据实际情况,处理目标单据数据
//destObjs[0]["Date"] = Convert.ToDateTime(sDate);
//DynamicObjectCollection col_FEntityDetail;
//var sdsas = JsonHelper.ToJson(destObjs);
//Logger.Error("目标单据数据集合", sdsas, new Exception());
//this.View.ShowMessage("好了好了,就是这个按钮");
//return result;
////if (target == "SAL_OUTSTOCK")//销售出库
////{
//col_FEntityDetail = destObjs[0]["SAL_OUTSTOCKENTRY"] as DynamicObjectCollection;
////}
////else
////{//销售退货
//// col_FEntityDetail = destObjs[0]["SAL_RETURNSTOCKENTRY"] as DynamicObjectCollection;
////}
//#region
//long sStockOrgID = 0;
//sStockOrgID = Convert.ToInt64(destObjs[0]["StockOrgId_Id"]);
//foreach (var item in col_FEntityDetail)
//{
// //item["KeeperID_Id"] = item["OwnerID_Id"];//保管者
// string sStockSql = "select FOrgStockId from v_BusinessOrgId where FORGID= " + sStockOrgID + " ";
// sStockSql = String.Format(@"/*dialect*/" + sStockSql);
// var dt = DBServiceHelper.ExecuteDynamicObject(this.Context, sStockSql);
// //if (dt.Count > 0 && Convert.ToInt64(dt[0]["FOrgStockId"]) != 0)
// if (dt.Count > 0)
// {
// //var targetBillMeta = ServiceHelper.GetService<IMetaDataService>().Load(this.Context, target) as FormMetadata;
// //BusinessInfo info = targetBillMeta.BusinessInfo;
// //BaseDataField stockFld = info.GetField("FStockId") as BaseDataField;
// //long stockId = Convert.ToInt64(dt[0]["FOrgStockId"]);
// //IViewService viewService = ServiceHelper.GetService<IViewService>();
// //DynamicObject[] stockObjs = viewService.LoadFromCache(this.Context, new object[] { stockId }, stockFld.RefFormDynamicObjectType);
// //stockFld.RefIDDynamicProperty.SetValue(item, stockId);
// //stockFld.DynamicProperty.SetValue(item, stockObjs[0]);
// item["StockID_Id"] = Convert.ToInt64(dt[0]["FOrgStockId"]);
// }
//}
//#endregion
//IOperationResult saveResult2 = BusinessDataServiceHelper.Draft(this.Context, destFormMetadata.BusinessInfo, destObjs, OperateOption.Create());
////保存目标单据
IOperationResult saveResult = ServiceHelper.GetService<ISaveService>().Save(this.Context, destFormMetadata.BusinessInfo, destObjs, OperateOption.Create());
////合并保存操作结果
//result.MergeResult(saveResult);
//根据操作结果构造返回结果
if ((saveResult.ValidationErrors != null && saveResult.ValidationErrors.Count > 0))
//|| (result.OperateResult != null && result.OperateResult.Count > 0))
{
var errorInfo = string.Join(";", saveResult.ValidationErrors.Select(x => x.Message));
//this.View.ShowErrMessage("调用下推, 导致自动保存失败 原因:" + errorInfo);
//result.IsSuccess = false;
//this.View.ShowErrMessage("调用下推, 导致自动保存失败 原因:" + saveResult.ValidationErrors[0].Message.ToString());
throw new KDBusinessException("", name+"保存失败原因:" + errorInfo);
}
result = saveResult;
//this.View.ShowMessage("1");
// 取到需要自动提交、审核的单据内码
object[] pkArray = (from p in destObjs select p[0]).ToArray();
//设置提交参数
IOperationResult submitResult = ServiceHelper.GetService<ISubmitService>().Submit(this.Context, destFormMetadata.BusinessInfo, pkArray, "Submit", OperateOption.Create());
// 判断提交结果,如果失败,则内部会抛出错误,回滚代码
if (submitResult.IsSuccess == false)
{
var errorInfo = string.Join(";", submitResult.InteractionContext.SimpleMessage);
throw new KDBusinessException("", name+"自动提交失败!" + errorInfo);
}
//设置审核参数
IOperationResult auditResult = ServiceHelper.GetService<IAuditService>().Audit(this.Context, destFormMetadata.BusinessInfo, pkArray, OperateOption.Create());
// 判断提交结果,如果失败,则内部会抛出错误,回滚代码
if (auditResult.IsSuccess == false)
{
var errorInfo = string.Join(";", auditResult.InteractionContext.SimpleMessage);
throw new KDBusinessException("", name+"自动审核失败!" + errorInfo);
}
//插入自动生成记录
string insertSql = $@"/*dialect*/INSERT INTO zz_zTuiSongLog
(Fid,FromType,TargetType,TFid,Creater,CreateTime)
VALUES
({fid},'SAL_OUTSTOCK','{target}',{Convert.ToString(destObjs[0]["Id"])},'{this.Context.UserName}','{DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}')";
DBServiceHelper.Execute(this.Context, insertSql);
//显示下推后的单据
//ShowPushResult("k0f9e182dbc5247fcabc9479ddb300fa3", convertResult, destObjs);
return result;
}
catch (Exception ex)
{
Logger.Error("跨组织下推订单报错", "跨组织下推订单报错 error:" + ex.Message + ex.StackTrace, ex);
throw ex;
}
}
/// <summary>
/// 调用字段值更新服务
/// </summary>
/// <param name="FID"></param>
private void InvokeFieldUpdate(string FID)
{
// 构建一个IBillView实例通过此实例可以方便的填写补卡申请单各属性
IBillView billView = this.CreateBillView("PUR_ReceiveBill");
// 加载一个发货通知单
((IBillViewService)billView).LoadData();
// 触发插件的OnLoad事件
// 组织控制基类插件在OnLoad事件中对主业务组织改变是否提示选项进行初始化。
// 如果不触发OnLoad事件会导致主业务组织赋值不成功
DynamicFormViewPlugInProxy eventProxy = billView.GetService<DynamicFormViewPlugInProxy>();
eventProxy.FireOnLoad();
ModifyBill(billView, FID);
int Rowcount = billView.Model.GetEntryRowCount("FDetailEntity");
for (int j = 0; j < Rowcount; j++)
{
billView.InvokeFieldUpdateService("FActReceiveQty", j);
billView.UpdateView("FDetailEntity");
}
// 保存补卡申请单
OperateOption saveOption = OperateOption.Create();
this.SaveBill(billView, saveOption);
}
public IBillView CreateBillView(string FKEY)
{
// 读取商品类型的元数据
FormMetadata meta = MetaDataServiceHelper.Load(this.Context, FKEY) as FormMetadata;
Form form = meta.BusinessInfo.GetForm();
// 创建用于引入数据的单据view
Type type = Type.GetType("Kingdee.BOS.Web.Import.ImportBillView,Kingdee.BOS.Web");
var billView = (IDynamicFormViewService)Activator.CreateInstance(type);
// 开始初始化billView
// 创建视图加载参数对象指定各种参数如FormId, 视图(LayoutId)等
BillOpenParameter openParam = this.CreateOpenParameter(meta);
// 动态领域模型服务提供类通过此类构建MVC实例
var provider = form.GetFormServiceProvider();
billView.Initialize(openParam, provider);
return billView as IBillView;
}
private BillOpenParameter CreateOpenParameter(FormMetadata meta)
{
Form form = meta.BusinessInfo.GetForm();
// 指定FormId, LayoutId
BillOpenParameter openParam = new BillOpenParameter(form.Id, meta.GetLayoutInfo().Id);
// 数据库上下文
openParam.Context = this.Context;
// 本单据模型使用的MVC框架
openParam.ServiceName = form.FormServiceName;
// 随机产生一个不重复的PageId作为视图的标识
openParam.PageId = Guid.NewGuid().ToString();
// 元数据
openParam.FormMetaData = meta;
// 界面状态:新增 (修改、查看)
openParam.Status = OperationStatus.ADDNEW;
// 单据主键:本案例演示新建商品类型,不需要设置主键
openParam.PkValue = null;
// 界面创建目的:普通无特殊目的 (为工作流、为下推、为复制等)
openParam.CreateFrom = CreateFrom.Default;
// 基础资料分组维度:基础资料允许添加多个分组字段,每个分组字段会有一个分组维度
// 具体分组维度Id请参阅 form.FormGroups 属性
openParam.GroupId = "";
// 基础资料分组:如果需要为新建的基础资料指定所在分组,请设置此属性
openParam.ParentId = 0;
// 单据类型
openParam.DefaultBillTypeId = "";
// 业务流程
openParam.DefaultBusinessFlowId = "";
// 主业务组织改变时,不用弹出提示界面
openParam.SetCustomParameter("ShowConfirmDialogWhenChangeOrg", false);
// 插件
List<AbstractDynamicFormPlugIn> plugs = form.CreateFormPlugIns();
openParam.SetCustomParameter(FormConst.PlugIns, plugs);
PreOpenFormEventArgs args = new PreOpenFormEventArgs(this.Context, openParam);
foreach (var plug in plugs)
{// 触发插件PreOpenForm事件供插件确认是否允许打开界面
plug.PreOpenForm(args);
}
if (args.Cancel == true)
{// 插件不允许打开界面
// 本案例不理会插件的诉求,继续....
}
// 返回
return openParam;
}
public void SaveBill(IBillView billView, OperateOption saveOption)
{
saveOption.SetIgnoreInteractionFlag(true);
//获取发货通知单表单结构
Form form = billView.BillBusinessInfo.GetForm();
if (form.FormIdDynamicProperty != null)
{
form.FormIdDynamicProperty.SetValue(billView.Model.DataObject, form.Id);
}
// 调用保存操作
IOperationResult saveResult = BusinessDataServiceHelper.Save(
this.Context,
billView.BillBusinessInfo,
billView.Model.DataObject,
saveOption, "Save");
billView.CommitNetworkCtrl();
billView.Close();
}
/// <summary>
/// 修改单据
/// </summary>
/// <param name="billView"></param>
/// <param name="pkValue"></param>
private void ModifyBill(IBillView billView, string pkValue)
{
billView.OpenParameter.Status = OperationStatus.EDIT;
billView.OpenParameter.CreateFrom = CreateFrom.Default;
billView.OpenParameter.PkValue = pkValue;
billView.OpenParameter.DefaultBillTypeId = string.Empty;
((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}) order by fid desc ";
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}) order by fid desc ";
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 ;
}
}
}