预发货判断
This commit is contained in:
@@ -10,6 +10,8 @@ clr.AddReference('Kingdee.BOS.App.Core')
|
||||
clr.AddReference('Kingdee.BOS.Contracts')
|
||||
clr.AddReference('Kingdee.BOS.DataEntity')
|
||||
clr.AddReference('Kingdee.BOS.ServiceHelper')
|
||||
clr.AddReference('GZ_LTHPilot_ORDER')
|
||||
|
||||
#dairycloud基础库中的常用实体对象(分命名空间导入,不会递归导入)
|
||||
from Kingdee.BOS.Core import *
|
||||
from Kingdee.BOS.Util import *
|
||||
@@ -30,6 +32,7 @@ from Kingdee.BOS.Contracts import *
|
||||
from System.Collections.Generic import List
|
||||
from Kingdee.BOS.ServiceHelper import *
|
||||
from Kingdee.BOS.App.Core import *
|
||||
from GZ_LTHPilot_ORDER.Service import *
|
||||
|
||||
def OnPreparePropertys(e):
|
||||
e.FieldKeys.Add("FAllAmount");
|
||||
@@ -44,7 +47,8 @@ def BeforeDoSaveExecute(e):
|
||||
if entity["SaleOrgId_Id"] != 100303:
|
||||
continue;
|
||||
|
||||
if entity["DocumentStatus"] != "Z" and entity["DocumentStatus"] != "C" and entity["DocumentStatus"] != "D":
|
||||
saleOrgId = entity["SaleOrgId_Id"]
|
||||
if entity["DocumentStatus"] == "B" or entity["DocumentStatus"] == "C":
|
||||
continue;
|
||||
|
||||
billId = entity["Id"]
|
||||
@@ -62,7 +66,8 @@ def BeforeDoSaveExecute(e):
|
||||
continue;
|
||||
|
||||
sql = """/*dialect*/
|
||||
SELECT SUM(t0.F_Amount) '累计核销金额',SUM(ISNULL(t0p.FRECADVANCEAMOUNT,0)) '款到发货应收金额',SUM(ISNULL(t0p.收款计划条数,0)) '收款计划条数',SUM(ISNULL(t1.FALLAMOUNT,0)) '累计已发货金额'
|
||||
|
||||
SELECT t0.FBILLNO,t0.FID,SUM(t0.F_Amount) '累计核销金额',SUM(ISNULL(t0p.FRECADVANCEAMOUNT,0)) '款到发货应收金额',SUM(ISNULL(t0p.收款计划条数,0)) '收款计划条数',SUM(ISNULL(t1.FALLAMOUNT,0)) '累计已发货金额'
|
||||
FROM T_SAL_ORDER t0
|
||||
OUTER APPLY (
|
||||
SELECT SUM(t0p.FRECADVANCEAMOUNT) 'FRECADVANCEAMOUNT',COUNT(1) '收款计划条数'
|
||||
@@ -75,29 +80,51 @@ FROM T_SAL_ORDER t0
|
||||
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}
|
||||
WHERE t1e_lk.FSBILLID = t0.FID AND t1e_f.FID != {1}
|
||||
) t1
|
||||
WHERE t0.FID IN ({0})
|
||||
GROUP BY t0.FBILLNO,t0.FID
|
||||
|
||||
""".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]
|
||||
|
||||
saleBillNo = item["FBILLNO"]
|
||||
saleBillId = item["FID"]
|
||||
if entity["SAL_DELIVERYNOTICEFIN"] != None and entity["SAL_DELIVERYNOTICEFIN"].Count > 0:
|
||||
|
||||
saleOrderService = SaleOrderService(this.Context)
|
||||
# 本次发货价税合计
|
||||
currAmount = entity["SAL_DELIVERYNOTICEFIN"][0]["BillAllAmount"]
|
||||
# 累计核销金额
|
||||
sumAmount = item["累计核销金额"]
|
||||
sumAmount = 0
|
||||
|
||||
try:
|
||||
sumAmount = saleOrderService.GetSaleOrderReceiveAmount(str(saleOrgId),saleBillNo)
|
||||
except Exception as ex:
|
||||
sumAmount = item["累计核销金额"];
|
||||
# raise Exception("当前销售组织:" + str(saleOrgId) + ",销售订单号:" + saleBillNo)
|
||||
# 款到发货应收金额
|
||||
sumArAmount = item["款到发货应收金额"]
|
||||
# 累计已发货金额
|
||||
sumOutAmount = item["累计已发货金额"]
|
||||
sumOutAmount = item["累计已发货金额"] + currAmount
|
||||
|
||||
countPlan = item["收款计划条数"]
|
||||
|
||||
# (1)累计核销金额# >= 收款计划收款条件含【款到发货】字样的应收金额汇总,发贷通知单为正常发货;
|
||||
flag01 = sumAmount >= sumArAmount
|
||||
flag02 = ((sumOutAmount + currAmount) <= sumAmount and (sumOutAmount + currAmount) <= sumArAmount)
|
||||
flag03 = countPlan > 0 and (sumOutAmount + currAmount) > sumAmount and sumAmount < sumArAmount
|
||||
# (2)包含本次的发货通知单累计发货金额<=累计核销金额# <= 收款计划收款条件含【款到发货】字样的应收金额汇总,发贷通知单为正常发货;
|
||||
flag02 = (sumOutAmount <= sumAmount and sumOutAmount <= sumArAmount)
|
||||
# (3)销售订单收款计划条数>0,包含本次的发货通知单累计发货金额>累计核销金额#,并且累计核销金额#<收款计划收款条件含【款到发货】字样的应收金额汇总,发货通知单为预发货。
|
||||
flag03 = countPlan > 0 and sumOutAmount > sumAmount and sumAmount < sumArAmount
|
||||
entity["F_SFYFH"] = '是' if flag01 == False and flag02 == False and flag03 == True else '否'
|
||||
|
||||
# raise Exception("当前销售组织:" + str(saleOrgId) + ",销售订单号:" + saleBillNo + ",累计核销金额:" + str(sumAmount) + ",累计已发货金额:" + str(sumOutAmount) + ",款到发货应收金额:" + str(sumArAmount) + ",收款计划条数:" + str(countPlan) + ",是否发货:" + entity["F_SFYFH"])
|
||||
if sumAmount != 0 and sumAmount != item["累计核销金额"]:
|
||||
updOrderSql = """/*dialect*/
|
||||
UPDATE T_SAL_ORDER SET F_Amount = {0} WHERE FID = {1} """.format(sumAmount, saleBillId)
|
||||
DBServiceHelper.Execute(this.Context, updOrderSql)
|
||||
|
||||
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user