This commit is contained in:
liqionghai
2025-07-25 09:26:27 +08:00
8 changed files with 269 additions and 3 deletions

View File

@@ -0,0 +1,43 @@
using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn;
using Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn.Args;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Kingdee.BOS.Util;
namespace Pilot_KD_Parino.Sal_Order.ConvertPlugIn
{
public class SalOrder2DeliveryConvert : AbstractConvertPlugIn
{
public override void AfterConvert(AfterConvertEventArgs e)
{
base.AfterConvert(e);
if (e.Result.FindByEntityKey("FBillHead").Any())
{
}
}
public override void OnGetSourceData(GetSourceDataEventArgs e)
{
base.OnGetSourceData(e);
}
public override void OnBeforeFieldMapping(BeforeFieldMappingEventArgs e)
{
base.OnBeforeFieldMapping(e);
e.FireFieldMappingEvent = true;
}
public override void OnFieldMapping(FieldMappingEventArgs e)
{
base.OnFieldMapping(e);
if (e.TargetField.Key.EqualsIgnoreCase("F_SFYFH"))
{
}
}
}
}

View File

@@ -0,0 +1,112 @@
import clr
clr.AddReference("System")
clr.AddReference('System.Data')
clr.AddReference("Kingdee.BOS")
clr.AddReference("Kingdee.BOS.DataEntity")
clr.AddReference("Kingdee.BOS.Core")
clr.AddReference('Kingdee.BOS.App')
clr.AddReference("Kingdee.BOS.ServiceHelper")
from Kingdee.BOS.Core import *
from Kingdee.BOS.Util import *
from Kingdee.BOS.Orm.DataEntity import *
from Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn import *
from Kingdee.BOS.Core.Metadata.ConvertElement.PlugIn.Args import *
from System import *
from System.Data import *
from System.Collections.Generic import *
from Kingdee.BOS.ServiceHelper import *
def FirstOrDefault(collection, func):
"""仿Linq的FirstOrDefault
Args:
collection (_type_): 数据集
func (_type_): lambda公式
Returns:
_type_: 获取数据集第一个或null
"""
result = filter(func, collection)
if len(result) == 0: return None
return result[0]
def AfterConvert(e):
billHeadEntites = e.Result.FindByEntityKey("FBillHead")
if billHeadEntites !=None and billHeadEntites.Count > 0:
for billHeadEntity in billHeadEntites:
billHead = billHeadEntity.DataEntity;
# raise Exception(JsonUtil.Serialize(billHead));
entrys = billHead["SAL_DELIVERYNOTICEENTRY"]
idList = List[str]()
for entry in entrys:
entityLink = entry["FEntity_Link"]
if entityLink != None and entityLink.Count > 0:
link = entityLink[0]
idList.Add(link["SBillId"])
if idList is None or len(idList) == 0:
continue;
sql = """/*dialect*/
SELECT t0.FID,t0.F_Amount '累计核销金额',t0p.FRECADVANCEAMOUNT '款到发货应收金额',t0p.CountTotal
FROM T_SAL_ORDER t0
CROSS APPLY (
SELECT SUM(t0p.FRECADVANCEAMOUNT) 'FRECADVANCEAMOUNT',COUNT(1) 'CountTotal'
FROM T_SAL_ORDERPLAN t0p
INNER JOIN T_BD_RECCONDITION_L t1_l on t1_l.FID = t0p.F_RECCONDITIONID
AND t1_l.FLOCALEID = 2052 AND CHARINDEX('款到发货',t1_l.FNAME) = 1
WHERE t0.FID = t0p.FID
GROUP BY t0p.FID
) t0p
WHERE t0.FID IN ({0})
""".format(",".join(set(idList)))
dataList = DBServiceHelper.ExecuteDynamicObject(this.Context, sql);
if dataList != None and len(dataList) > 0:
data = dataList[0]
isPreShipment = False;
if data["累计核销金额"] >= data["款到发货应收金额"]:
isPreShipment = False;
else:
isPreShipment = True;
return;
# 数据转换完毕后触发事件
def OnBeforeFieldMapping(e):
e.FireFieldMappingEvent = True;
return
def OnFieldMapping(e):
if e.TargetField.Key == "F_SFYFH":
return;
sourceData = e.ConvertSource
idList = set(map((lambda x:x["FID"]) ,filter((lambda x:x["FSaleOrgId"] == 100303) ,sourceData)))
if idList is None or len(idList) == 0:
return
# raise Exception(JsonUtil.Serialize(srcDBDatas))
sql = """/*dialect*/
SELECT t0.FID,t0.F_Amount '累计核销金额',t0p.FRECADVANCEAMOUNT '款到发货应收金额',t0p.CountTotal
FROM T_SAL_ORDER t0
CROSS APPLY (
SELECT SUM(t0p.FRECADVANCEAMOUNT) 'FRECADVANCEAMOUNT',COUNT(1) 'CountTotal'
FROM T_SAL_ORDERPLAN t0p
INNER JOIN T_BD_RECCONDITION_L t1_l on t1_l.FID = t0p.F_RECCONDITIONID
AND t1_l.FLOCALEID = 2052 AND CHARINDEX('款到发货',t1_l.FNAME) = 1
WHERE t0.FID = t0p.FID
GROUP BY t0p.FID
) t0p
WHERE t0.FID IN ({0})
""".format(",".join(idList))
dataList = DBServiceHelper.ExecuteDynamicObject(this.Context, sql);
if dataList != None and len(dataList) > 0:
data = dataList[0]
isPreShipment = False;
if data["累计核销金额"] >= data["款到发货应收金额"]:
isPreShipment = False;
else:
isPreShipment = True;
return;

View File

@@ -49,6 +49,9 @@ namespace Pilot_KD_Parino.Sal_Order
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();
@@ -147,6 +150,7 @@ namespace Pilot_KD_Parino.Sal_Order
result = Invoke("PUR_PurchaseOrder", "PUR_ReceiveBill", tempFid.ToString(), "7cd93c259999489c97798063f2f7bd70", ref stockId,"收料通知单");
}
}
return;
if (result != null)
{
sheet = result.SuccessDataEnity.FirstOrDefault();