import clr clr.AddReference("System") clr.AddReference("Kingdee.BOS") clr.AddReference("Kingdee.BOS.Core") clr.AddReference("Kingdee.BOS.DataEntity") clr.AddReference("Kingdee.BOS.App") clr.AddReference("Kingdee.BOS.Contracts") clr.AddReference("Kingdee.BOS.ServiceHelper") clr.AddReference("Kingdee.K3.FIN.AP.Business.PlugIn") from Kingdee.BOS import* from Kingdee.BOS.Util import * from Kingdee.BOS.Core 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.CommonFilter import * from System import * from System.ComponentModel import* from System.Collections.Generic import* from System.Text import* from Kingdee.BOS.ServiceHelper import * from Kingdee.K3.FIN.AP.Business.PlugIn import * def WizardStepChanging(e): if e.OldWizardStep.Key == "FWizard1" and e.NewWizardStep.Key == "FWizard2" and e.Cancel == False: dieObjs = this.DebitDate.Values; for dObj in dieObjs: if dObj != None and dObj.TheIsMatch: billId = dObj.BillId checkSqlL = """/*dialect*/ SELECT t3e.FENTRYID AS 'ENTRYID' ,t1e.FSRCBILLID,t3.FBILLNO ,t3e.FALLAMOUNT,t3e.FALLAMOUNTFOR ,t3e.FTAXAMOUNT,t3e.FTAXAMOUNTFOR ,t3e.FNOTAXAMOUNT,t3e.FNOTAXAMOUNTFOR ,t3e.F_CYG_TECost ,t3e.F_CYG_TEAmount ,t3e.F_CYG_TECBCost ,t3e.F_CYG_TECBAmount FROM T_AR_RECMACTHLOG t1 INNER JOIN T_AR_RECMACTHLOGENTRY t1e on t1.FID = t1e.FID INNER JOIN T_AR_RECMACTHLOGENTRY t2e on t2e.FID = t1e.FID INNER JOIN T_AR_RECEIVABLE t3 on t3.FID = t1e.FSRCBILLID INNER JOIN T_AR_RECEIVABLEENTRY t3e on t3e.FID = t3.FID AND t3e.FSEQ = t0.FSEQ WHERE 1 = 1 AND t2e.FSRCBILLID = {0} AND t2e.FSOURCEFROMID = 'AR_receivable' AND t1e.FISADIBILL = 1 AND t1.FMATCHFIELDNAME = 'FMatchAmount' """.format(billId) checkObj = DBServiceHelper.ExecuteDynamicObject(this.Context,checkSqlL) if checkObj != None and checkObj.Count > 0: sqlL = """/*dialect*/ DECLARE @billId int SET @billId = {0} ;WITH #财务应收单 AS ( SELECT t0.FBILLNO AS '财务单据编号' ,t0.FID,t0e.FENTRYID,t0e.FSRCROWID,t0e.FSEQ ,t0e_lk.FSBILLID,t0e_lk.FSID FROM T_AR_RECEIVABLE t0 INNER JOIN T_AR_RECEIVABLEENTRY t0e on t0.FID = t0e.FID INNER JOIN T_AR_RECEIVABLEENTRY_LK t0e_lk on t0e_lk.FENTRYID = t0e.FENTRYID WHERE 1=1 AND t0e_lk.FSTABLENAME = 't_AR_receivableEntry' AND t0.FID = @billId AND t0.FDOCUMENTSTATUS = 'C' ) , #暂估应收单 AS ( SELECT tt.财务单据编号 ,tt.FID AS '财务ID' ,tt.FSEQ ,tt.FENTRYID AS '财务ENTRYID' ,t0.FBILLNO AS '暂估单据编号' ,t0.FID AS '暂估ID',t0e.FENTRYID AS '暂估ENTRYID' ,t0e.FCOSTAMTSUM ,t0e.FBASICUNITQTY ,CAST(t0e.FCOSTAMTSUM / t0e.FBASICUNITQTY AS decimal(23,6)) AS '暂估成本价' ,t1.FID AS '暂估冲回ID',t1e.FENTRYID AS '暂估冲回ENTRYID' ,t1.FBILLNO AS '暂估冲回单据编号' ,t1e.FCOSTAMTSUM 'FCOSTAMTSUM1',t1e.FBASICUNITQTY 'FBASICUNITQTY1' ,CAST(t1e.FCOSTAMTSUM / t1e.FBASICUNITQTY AS decimal(23,6)) AS '暂估冲回成本价' FROM #财务应收单 tt INNER JOIN T_AR_RECEIVABLEENTRY t0e on tt.FSBILLID = t0e.FID AND tt.FSID = t0e.FENTRYID INNER JOIN T_AR_RECEIVABLE t0 on t0.FID = t0e.FID INNER JOIN T_AR_RECEIVABLEENTRY t1e on t1e.FSRCROWID = t0e.FENTRYID INNER JOIN T_AR_RECEIVABLE t1 on t1.FID = t1e.FID WHERE 1=1 AND t0.FDOCUMENTSTATUS = 'C' AND t1.FDOCUMENTSTATUS = 'C' ) , #最终数据 AS ( SELECT t1.*,t0.* FROM #暂估应收单 t0 CROSS APPLY ( SELECT t3e.FENTRYID AS 'ENTRYID' ,t1e.FSRCBILLID,t3.FBILLNO--,t3e.FSEQ ,t3e.FALLAMOUNT,t3e.FALLAMOUNTFOR ,t3e.FTAXAMOUNT,t3e.FTAXAMOUNTFOR ,t3e.FNOTAXAMOUNT,t3e.FNOTAXAMOUNTFOR --,t3e.FBASICUNITQTY ,t3e.F_CYG_TECost ,t3e.F_CYG_TEAmount ,t3e.F_CYG_TECBCost ,t3e.F_CYG_TECBAmount FROM T_AR_RECMACTHLOG t1 INNER JOIN T_AR_RECMACTHLOGENTRY t1e on t1.FID = t1e.FID INNER JOIN T_AR_RECMACTHLOGENTRY t2e on t2e.FID = t1e.FID INNER JOIN T_AR_RECEIVABLE t3 on t3.FID = t1e.FSRCBILLID INNER JOIN T_AR_RECEIVABLEENTRY t3e on t3e.FID = t3.FID AND t3e.FSEQ = t0.FSEQ WHERE 1 = 1 AND t2e.FSRCBILLID = t0.财务ID AND t2e.FSOURCEFROMID = 'AR_receivable' AND t1e.FISADIBILL = 1 AND t1.FMATCHFIELDNAME = 'FMatchAmount' ) t1 ) UPDATE t0e SET t0e.F_CYG_TECost = t1.暂估成本价 ,t0e.F_CYG_TEAmount = t1.FCOSTAMTSUM ,t0e.F_CYG_TECBCost = t1.暂估冲回成本价 ,t0e.F_CYG_TECBAmount = t1.FCOSTAMTSUM1 FROM T_AR_RECEIVABLEENTRY t0e INNER JOIN #最终数据 t1 on t1.ENTRYID = t0e.FENTRYID """.format(billId) raise Exception(sqlL); # DBServiceHelper.Execute(this.Context,sqlL)