1
This commit is contained in:
@@ -26,12 +26,13 @@ namespace GZ.LJY000.Enpower.POSH_N3_Forecast.BillConvertPlugInEx
|
||||
{
|
||||
|
||||
var sqlL = $@"/*dialect*/
|
||||
WITH #年度预测 AS (
|
||||
;WITH #N3预测 AS (
|
||||
SELECT t1.FBILLNO,t1.FID,t1.FEntryID,t1.FSEQ,t1.FMATERIALID,t1.FUNITID,t1.FCUSTID
|
||||
,t1.FQTY,t1.FYEAR '年份' ,t1.FMONTH '月份'
|
||||
,t1.FYEAR * 100 + REPLACE(T1.DATEM,'FN','') + t1.FMONTH 周期
|
||||
,CONVERT(int,t1.FYEAR * 10000 + REPLACE(T1.DATEM,'FN','') *100 + t1.FMONTH * 100 + 1) AS '日期'
|
||||
,CONVERT(datetime,DATEFROMPARTS(t1.FYEAR,CONVERT(int,REPLACE(T1.DATEM,'FN',''))+ t1.FMONTH,1)) 'startDate'
|
||||
,t1.FYEAR
|
||||
FROM (
|
||||
SELECT t0.FBILLNO,t0.FID,t0e.FEntryID,t0e.FSEQ,t0e.FYEAR,t0e.FMONTH,t0e.FMATERIALID,t0e.FUNITID,t0e.FCUSTID,t0e.FN0,t0e.FN1,t0e.FN2,t0e.FN3
|
||||
FROM T_PLN_FORECAST2N3 t0 --表头
|
||||
@@ -45,7 +46,9 @@ WITH #年度预测 AS (
|
||||
SELECT tt.*
|
||||
,DATEADD(SECOND,-1,DATEADD(MONTH, 1, tt.startDate)) AS 'endDate'
|
||||
,CASE WHEN ISNULL(t0.FQTY,0) > tt.FQTY THEN 0 ELSE tt.FQTY - ISNULL(t0.FQTY,0) END '最终数量'
|
||||
FROM #年度预测 tt
|
||||
,tt.FQTY 'F_OriginalQty',t0.FQTY 'W5Qty'
|
||||
INTO #table1
|
||||
FROM #N3预测 tt
|
||||
OUTER APPLY (
|
||||
SELECT t1.FMATERIALID,SUM(t1.FQTY) FQTY
|
||||
FROM (
|
||||
@@ -64,7 +67,38 @@ FROM #年度预测 tt
|
||||
GROUP BY t1.FMATERIALID,t1.FCUSTID--,t1.FYEAR * 100 + DATEPART(MONTH,(DATEADD(DAY,CONVERT(int,REPLACE(T1.DATEM,'FD','')) - 1,t1.FSTARTDATE)))
|
||||
) t0
|
||||
|
||||
ORDER BY tt.startDate,tt.FSEQ
|
||||
declare @startDate date,@endDate date
|
||||
SELECT @startDate = MIN(t0.startDate),@endDate = MAX(t0.endDate)
|
||||
FROM #table1 t0
|
||||
|
||||
;WITH #发货通知单 AS (
|
||||
SELECT t0.FBILLNO,t0.FDATE,t0.FCUSTOMERID,t0e.FMATERIALID,t0e.FQTY,t0e.F_PNDR_BASEQTY3 '2次调拨'
|
||||
FROM T_SAL_DELIVERYNOTICE t0
|
||||
INNER JOIN T_SAL_DELIVERYNOTICEENTRY t0e on t0.FID = t0e.FID
|
||||
WHERE t0.FDOCUMENTSTATUS = 'C'
|
||||
AND t0.FDATE between @startDate AND @endDate
|
||||
)
|
||||
,#最终数据 AS (
|
||||
SELECT t0.FBILLNO,t0.FID,t0.FEntryID,t0.FMATERIALID,t0.FUNITID,t0.FYEAR,t0.FCUSTID,t0.startDate,t0.endDate,t0.FSEQ,ISNULL(t1.FQTY,0) 'F_DelivQty',ISNULL(t1.[2次调拨],0) 'F_Direct2Qty'
|
||||
,t0.F_OriginalQty,t0.W5Qty
|
||||
,CASE WHEN t0.最终数量 < (ISNULL(t1.FQTY,0) + ISNULL(t1.[2次调拨],0)) THEN 0 ELSE t0.最终数量 - (ISNULL(t1.FQTY,0) + ISNULL(t1.[2次调拨],0)) END AS '最终数量'
|
||||
,t0.年份,t0.周期 - (t0.年份 * 100) 月份
|
||||
FROM #table1 t0
|
||||
OUTER APPLY (
|
||||
SELECT SUM(t1.FQTY) FQTY ,SUM(t1.[2次调拨]) [2次调拨]
|
||||
FROM #发货通知单 t1
|
||||
WHERE 1 = 1 AND t1.FMATERIALID = t0.FMATERIALID
|
||||
AND t0.FCUSTID = t1.FCUSTOMERID
|
||||
AND t1.FDATE BETWEEN t0.startDate AND t0.endDate
|
||||
) t1
|
||||
)
|
||||
SELECT t0.*
|
||||
FROM #最终数据 t0
|
||||
WHERE t0.最终数量 > 0
|
||||
ORDER BY t0.startDate,t0.FSEQ
|
||||
|
||||
DROP TABLE #table1
|
||||
|
||||
";
|
||||
//throw new Exception(sqlL);
|
||||
var dataList = DBServiceHelper.ExecuteDynamicObject(this.Context, sqlL);
|
||||
@@ -108,19 +142,15 @@ ORDER BY tt.startDate,tt.FSEQ
|
||||
var baseUnitId_Id = MaterialBase["BaseUnitId_Id"].Long2Int();
|
||||
var qty = decimal.Parse(item["最终数量"].ToString());
|
||||
entity["Qty"] = qty;
|
||||
entity["F_DelivQty"] = decimal.Parse(item["F_DelivQty"].ToString());
|
||||
entity["F_Direct2Qty"] = decimal.Parse(item["F_Direct2Qty"].ToString());
|
||||
entity["F_OriginalQty"] = decimal.Parse(item["F_OriginalQty"].ToString());
|
||||
entity["F_W5Qty"] = decimal.Parse(item["W5Qty"].ToString());
|
||||
entity["StartDate"] = item["startDate"];
|
||||
entity["EndDate"] = item["endDate"];
|
||||
|
||||
////# 货主类型
|
||||
//entity["FOwnerTypeId"] = item["FOWNERTYPEID"];
|
||||
////# 货主
|
||||
//var ownerId = item["FOWNERID"].Long2Int();
|
||||
//if (ownerId > 0)
|
||||
//{
|
||||
// var ownerObj = BusinessDataServiceHelper.LoadSingle(this.Context, ownerId, ownerFId.RefFormDynamicObjectType);
|
||||
// entity["FOwnerId_Id"] = ownerId;
|
||||
// entity["FOwnerId"] = ownerObj;
|
||||
//}
|
||||
entity["F_Year"] = item["年份"];
|
||||
entity["F_Month"] = item["月份"];
|
||||
entity["FCloseStatus"] = "A";
|
||||
|
||||
var custId = item["FCUSTID"].Long2Int();
|
||||
if (custId > 0)
|
||||
|
||||
@@ -0,0 +1,108 @@
|
||||
#引入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')
|
||||
clr.AddReference('Kingdee.BOS.WebApi.FormService')
|
||||
#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 *
|
||||
from Kingdee.BOS.WebApi.FormService import *
|
||||
|
||||
def OnPreparePropertys(e):
|
||||
e.FieldKeys.Add("FVersions");
|
||||
e.FieldKeys.Add("FBillNo");
|
||||
|
||||
def EndOperationTransaction(e):
|
||||
# raise Exception("A")
|
||||
if this.FormOperation.OperationId == 1:
|
||||
DoClosePLN_FORECAST(e);
|
||||
def DoClosePLN_FORECAST(e):
|
||||
for entity in e.DataEntitys:
|
||||
billNo = entity["BillNo"]
|
||||
billId = entity["Id"]
|
||||
|
||||
sqlL = """/*dialect*/
|
||||
|
||||
SELECT t0.FBILLNO,t0.FID,t0.FCONVERTBILLNO,t0e.FENTRYID,t0e.FCLOSESTATUS,t0.FBILLTYPEID
|
||||
FROM (
|
||||
SELECT top 1 t0.FID
|
||||
FROM T_PLN_FORECAST t0
|
||||
WHERE 1= 1 AND t0.FCONVERTBILLNO != '{0}'
|
||||
--AND t0.FBILLTYPEID = '67707a90214919' --年度
|
||||
--AND t0.FBILLTYPEID = '6771142c2149d1' --w+5
|
||||
AND t0.FBILLTYPEID = '6771142c2149d1' --N+3
|
||||
ORDER BY t0.FBILLNO DESC,t0.FDATE DESC
|
||||
) tt INNER JOIN T_PLN_FORECAST t0 on t0.FID = tt.FID
|
||||
INNER JOIN T_PLN_FORECASTENTRY t0e on t0e.FID = t0.FID
|
||||
WHERE 1= 1
|
||||
AND (t0e.FCLOSESTATUS = 'A' OR t0e.FCLOSESTATUS = '')
|
||||
|
||||
""".format(billNo)
|
||||
# raise Exception(sqlL);
|
||||
dataList = DBServiceHelper.ExecuteDynamicObject(this.Context, sqlL)
|
||||
if dataList.Count == 0:
|
||||
return;
|
||||
# 请求参数
|
||||
|
||||
id = dataList[0]["FID"]
|
||||
pkEntryIds = List[str]()
|
||||
para = {"CreateOrgId":this.Context.UserId,"Numbers":[],"Ids":"","PkEntryIds":[],"UseOrgId":this.Context.CurrentOrganizationInfo.ID,"NetworkCtrl":"","IgnoreInterationFlag":""}
|
||||
for item in dataList:
|
||||
# pkEntryIds.Add(str(item["FENTRYID"]))
|
||||
para["PkEntryIds"].Add({"Id":str(item["FID"]),"EntryIds":str(item["FENTRYID"])})
|
||||
|
||||
|
||||
# raise Exception(JsonUtil.Serialize(para))
|
||||
# 业务对象标识
|
||||
formId = "PLN_FORECAST"
|
||||
# 操作接口编码
|
||||
operateNumber = "BillClose"
|
||||
resultJson = WebApiServiceCall.Execute(this.Context, formId, operateNumber, JsonUtil.Serialize(para));
|
||||
# raise Exception(JsonUtil.Serialize(resultJson))
|
||||
if resultJson !=None :
|
||||
IsSuccess = resultJson["Result"]["ResponseStatus"]["IsSuccess"]
|
||||
if IsSuccess==False:
|
||||
raise Exception(JsonUtil.Serialize(resultJson))
|
||||
updSql = """/*dialect*/
|
||||
WITH #上版本 AS (
|
||||
SELECT TOP 1 t1.*
|
||||
FROM T_PLN_FORECAST2N3 t0
|
||||
INNER JOIN T_PLN_FORECAST2N3 t1 on t0.FFORECASTYEAR = t1.FFORECASTYEAR
|
||||
WHERE t0.FBILLNO = '{0}'
|
||||
AND t1.FBILLNO != '{0}'
|
||||
ORDER By t1.FBILLNO DESC
|
||||
)
|
||||
UPDATE T_PLN_FORECAST2N3 SET FIsClose = 'B'
|
||||
FROM T_PLN_FORECAST2N3 t0
|
||||
INNER JOIN #上版本 t1 on t1.FID = t0.FID
|
||||
WHERE t1.FIsClose != 'B'
|
||||
""".format(billNo)
|
||||
|
||||
res = DBServiceHelper.Execute(this.Context, updSql)
|
||||
|
||||
return;
|
||||
Reference in New Issue
Block a user