鼎捷E10批量更新历史销售订单付款条件(从客户档案获取)
仅更新销售订单中付款条件为空白的部分,已经存在付款条件的不做处理。
---取出销售订单中付款条件为空的部分,对应客户档案中的付款方式,将结果写入临时表
select * into ittest000001 from (
select a.Owner_Org_ROid,a.DOC_NO,a.PAYMENT_TERM_ID,g.PAYMENT_TERM_ID as up
from SALES_ORDER_DOC a
left join PAYMENT_TERM b on a.PAYMENT_TERM_ID=b.PAYMENT_TERM_ID
left join SALES_CENTER c on a.Owner_Org_ROid=c.SALES_CENTER_ID
left join CUSTOMER d on a.CUSTOMER_ID =d.CUSTOMER_BUSINESS_ID
left join [USER] e on a.ApproveBy = e.USER_ID
left join CUSTOMER_FI f on d.CUSTOMER_BUSINESS_ID=f.CUSTOMER_ID
inner join PAYMENT_TERM g on f.PAYMENT_TERM_ID=g.PAYMENT_TERM_ID
where b.PAYMENT_TERM_CODE is null ) as ddddd
---查询临时表
select * from ittest000001
---调整前查看修改影响范围
SELECT
a.Owner_Org_ROid,
a.DOC_NO,
a.PAYMENT_TERM_ID as 原PAYMENT_TERM_ID,
b.up as 新PAYMENT_TERM_ID,
CASE
WHEN a.PAYMENT_TERM_ID = b.up THEN '相同'
ELSE '不同'
END as 是否变化,
c.SALES_CENTER_NAME,
a.ApproveDate
FROM SALES_ORDER_DOC a
INNER JOIN ittest000001 b
ON a.Owner_Org_ROid = b.Owner_Org_ROid
AND a.DOC_NO = b.DOC_NO
LEFT JOIN SALES_CENTER c ON a.Owner_Org_ROid = c.SALES_CENTER_ID
WHERE b.up IS NOT NULL
ORDER BY c.SALES_CENTER_NAME, a.ApproveDate DESC, a.DOC_NO;
---更新销售订单,订单工厂ID=临时表工厂ID,订单号=临时表订单号的情况下将临时表中的付款条件写入销售订单
UPDATE a
SET a.PAYMENT_TERM_ID = b.up
FROM SALES_ORDER_DOC a
INNER JOIN ittest000001 b
ON a.Owner_Org_ROid = b.Owner_Org_ROid
AND a.DOC_NO = b.DOC_NO
WHERE b.up IS NOT NULL; -- 可选条件,防止更新为 NULL
