diff --git a/.gitignore b/.gitignore
index 7b9dfef..dc24ff3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -57,3 +57,4 @@
/Pilot_KD_Parino/obj/Debug/Pilot_KD_Parino.dll
/Pilot_KD_Parino/obj/Debug/Pilot_KD_Parino.pdb
/Pilot_KD_Parino/packages.config
+/.vs
diff --git a/Pilot_KD_Parino/Pilot_KD_Parino.csproj b/Pilot_KD_Parino/Pilot_KD_Parino.csproj
index fecf1ee..529b85b 100644
--- a/Pilot_KD_Parino/Pilot_KD_Parino.csproj
+++ b/Pilot_KD_Parino/Pilot_KD_Parino.csproj
@@ -108,9 +108,6 @@
..\..\..\派诺-裴豪\派诺功能\代码\Pilot_KD_Parino (2)\Pilot_KD_Parino\Pilot_KD_Parino\bin\Debug\ICSharpCode.SharpZipLib.dll
-
- ..\..\..\派诺-裴豪\派诺功能\代码\Pilot_KD_Parino (2)\Pilot_KD_Parino\Pilot_KD_Parino\bin\Debug\IronPython.dll
-
..\..\..\派诺-裴豪\派诺功能\代码\Pilot_KD_Parino (2)\Pilot_KD_Parino\Pilot_KD_Parino\bin\Debug\JWT.dll
@@ -222,6 +219,9 @@
..\..\派诺(1)\派诺\git\6、程序\GZ_KD_Parino\bin\Debug\Kingdee.BOS.WebApi.ServicesStub.dll
+
+ ..\..\..\..\..\..\..\Program Files (x86)\Kingdee\K3Cloud\WebSite\bin\Kingdee.K3.BD.NewCode.Core.dll
+
..\..\派诺(1)\派诺\git\6、程序\GZ_KD_Parino\bin\Debug\Kingdee.K3.Core.dll
@@ -348,6 +348,7 @@
+
@@ -361,6 +362,10 @@
+
+
+
+
diff --git a/Pilot_KD_Parino/Pilot_KD_Parino.csproj.user b/Pilot_KD_Parino/Pilot_KD_Parino.csproj.user
new file mode 100644
index 0000000..0b24643
--- /dev/null
+++ b/Pilot_KD_Parino/Pilot_KD_Parino.csproj.user
@@ -0,0 +1,6 @@
+
+
+
+ ProjectFiles
+
+
\ No newline at end of file
diff --git a/Pilot_KD_Parino/SAL_DELIVERYNOTICE/ServicePlugIn/Save.py b/Pilot_KD_Parino/SAL_DELIVERYNOTICE/ServicePlugIn/Save.py
new file mode 100644
index 0000000..d456387
--- /dev/null
+++ b/Pilot_KD_Parino/SAL_DELIVERYNOTICE/ServicePlugIn/Save.py
@@ -0,0 +1,95 @@
+#引入clr运行库
+import clr
+#添加对cloud插件开发的常用组件引用
+clr.AddReference('System')
+clr.AddReference('System.Data')
+clr.AddReference('Kingdee.BOS')
+clr.AddReference('Kingdee.BOS.Core')
+clr.AddReference('Kingdee.BOS.App')
+clr.AddReference('Kingdee.BOS.App.Core')
+clr.AddReference('Kingdee.BOS.Contracts')
+clr.AddReference('Kingdee.BOS.DataEntity')
+clr.AddReference('Kingdee.BOS.ServiceHelper')
+#dairycloud基础库中的常用实体对象(分命名空间导入,不会递归导入)
+from Kingdee.BOS.Core import *
+from Kingdee.BOS.Util import *
+from Kingdee.BOS.Core.Bill import *
+from Kingdee.BOS.Core.List import *
+from Kingdee.BOS.Core.Bill.PlugIn import *
+from Kingdee.BOS.Orm.DataEntity import *
+from Kingdee.BOS.Core.DynamicForm.PlugIn import *
+from Kingdee.BOS.Core.DynamicForm.PlugIn.Args import *
+from Kingdee.BOS.Core.DynamicForm.PlugIn.ControlModel import *
+from Kingdee.BOS.Core.Metadata.ConvertElement.ServiceArgs import *
+from System import *
+from System.Data import *
+from Kingdee.BOS.App.Data import *
+from Kingdee.BOS.App import *
+from Kingdee.BOS.Orm import *
+from Kingdee.BOS.Contracts import *
+from System.Collections.Generic import List
+from Kingdee.BOS.ServiceHelper import *
+from Kingdee.BOS.App.Core import *
+
+def OnPreparePropertys(e):
+ e.FieldKeys.Add("FAllAmount");
+ e.FieldKeys.Add("FBillAllAmount");
+ e.FieldKeys.Add("F_SFYFH");
+ e.FieldKeys.Add("FSaleOrgId");
+ e.FieldKeys.Add("FDocumentStatus");
+
+def BeforeDoSaveExecute(e):
+ # if this.FormOperation.OperationId == 8:
+ for entity in e.DataEntities:
+ if entity["SaleOrgId_Id"] != 100303:
+ continue;
+
+ if entity["DocumentStatus"] != "Z" and entity["DocumentStatus"] != "C":
+ continue;
+
+ billId = entity["Id"]
+ # raise Exception(JsonUtil.Serialize(entity))
+ entries = entity["SAL_DELIVERYNOTICEENTRY"]
+ idList = List[str]()
+ for idx,entry in enumerate(entries):
+
+ 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 SUM(t0.F_Amount) '累计核销金额',SUM(t0p.FRECADVANCEAMOUNT) '款到发货应收金额',SUM(t0p.CountTotal) '收款计划条数',SUM(ISNULL(t1.FALLAMOUNT,0)) '累计已发货金额'
+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
+ ) t0p
+ OUTER APPLY (
+ SELECT SUM(t1e_f.FALLAMOUNT) FALLAMOUNT
+ FROM T_SAL_DELIVERYNOTICEENTRY_LK t1e_lk
+ INNER JOIN T_SAL_DELIVERYNOTICEENTRY_F t1e_f on t1e_f.FENTRYID = t1e_lk.FENTRYID
+ WHERE t1e_lk .FSID = t0.FID AND t1e_f.FID != {1}
+ ) t1
+WHERE t0.FID IN ({0})
+""".format(",".join(set(idList)), billId)
+ res = DBServiceHelper.ExecuteDynamicObject(this.Context, sql)
+ if res != None and res.Count > 0:
+ # raise Exception(JsonUtil.Serialize(res))
+ item = res[0]
+
+ if entity["SAL_DELIVERYNOTICEFIN"] != None and entity["SAL_DELIVERYNOTICEFIN"].Count > 0:
+ currAmount = entity["SAL_DELIVERYNOTICEFIN"][0]["BillAllAmount"]
+ # raise Exception(str(currAmount))
+ isYFHFlag = item["累计核销金额"] < item["款到发货应收金额"]
+ isYFHFlag1 = isYFHFlag == True and (item["收款计划条数"] == 1)
+ isYFHFlag2 = isYFHFlag == True and (True if isYFHFlag1 else ((item["累计核销金额"] - item["累计已发货金额"]) < currAmount))
+ entity["F_SFYFH"] = '是' if isYFHFlag2 == True else '否'
+
+ return;
diff --git a/Pilot_KD_Parino/Sal_Order/ConvertPlugIn/SalOrder2DeliveryConvert.cs b/Pilot_KD_Parino/Sal_Order/ConvertPlugIn/SalOrder2DeliveryConvert.cs
new file mode 100644
index 0000000..1798a12
--- /dev/null
+++ b/Pilot_KD_Parino/Sal_Order/ConvertPlugIn/SalOrder2DeliveryConvert.cs
@@ -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"))
+ {
+
+ }
+ }
+ }
+}
diff --git a/Pilot_KD_Parino/Sal_Order/ConvertPlugIn/SalOrder2DeliveryConvert.py b/Pilot_KD_Parino/Sal_Order/ConvertPlugIn/SalOrder2DeliveryConvert.py
new file mode 100644
index 0000000..a2e7662
--- /dev/null
+++ b/Pilot_KD_Parino/Sal_Order/ConvertPlugIn/SalOrder2DeliveryConvert.py
@@ -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;
+
diff --git a/Pilot_KD_Parino/Sal_Order/PushSaleOutBillPlugIn.cs b/Pilot_KD_Parino/Sal_Order/PushSaleOutBillPlugIn.cs
index 916df15..331d906 100644
--- a/Pilot_KD_Parino/Sal_Order/PushSaleOutBillPlugIn.cs
+++ b/Pilot_KD_Parino/Sal_Order/PushSaleOutBillPlugIn.cs
@@ -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();
diff --git a/Pilot_KD_Parino/bin/Debug/IronPython.dll b/Pilot_KD_Parino/bin/Debug/IronPython.dll
index 94956a6..c633a5a 100644
Binary files a/Pilot_KD_Parino/bin/Debug/IronPython.dll and b/Pilot_KD_Parino/bin/Debug/IronPython.dll differ