GoldenME V10 单据联查回写配置

GoldenME V10 单据联查回写配置


校验示例

入库通知-采购结算(结算过一次就不能在次结算)

在采购结算回写入库通知的回写语句中配置触发校验的key值

//采购结算回写入库通知明细
#set($upbillinfo_rktz=$vs.util.mapClone($optMap));
#set($upbillinfo_rktz.billtypecolumn='SUMGLIDE_BILLTYPE')//业务单据类型(关联上级单据的单据类型)
#set($upbillinfo_rktz.billcodecolumn='SUMGLIDE_OPTCODE')//业务单据号(关联上级单据的单据号)
#set($upbillinfo_rktz.billbatchcolumn='SUMGLIDE_OPTBATCH')//业务单据批号(关联上级单据的批号)
#set($upbillinfo_rktz.updatename='采购结算回写入库通知补差金额,补差次数');// 回写名称。
//数据源表:按回写的单据批号汇总,将回写的值进行合计。查处的值需要别名和目标单据批号和更新的字段对应。
#set($upbillinfo_rktz.updatesorcetable="SELECT b.SUMGLIDE_OPTBATCH as GOODS_ENTRYBATCH,sum(b.SUMGLIDE_INMONEY) as DATAS_DETAIL_GINMONEY, sum(b.SUMGLIDE_EXMONEY) as DATAS_DETAIL_GEXMONEY,count(b.SUMGLIDE_OPTBATCH) as DATA_SUBNUM from  WAREHOUSE_SUMGLIDE b  where b.BILLTYPE_CODE = 'XT1023'  and b.SUMGLIDE_BILLTYPE = 'BT1142' and  2=2 group by  b.SUMGLIDE_OPTBATCH")//回写数据源表或查询
#set($upbillinfo_rktz.updatesorcewherecolumn="b.SUMGLIDE_OPTBATCH")//加上别名。用于更新时,在数据源后面直接加上查询条件。如果此字段不为空,可以将updatesorcetable条件中的2=2替换成新的条件。
#set($upbillinfo_rktz.updategoaltypecode='BT1142')//回写目标单据类型
#set($upbillinfo_rktz.updatetype=0)// 更新类型:0同步,1异步。
#set($upbillinfo_rktz.updategoaltable='WAREHOUSE_ENTRYINF_DETAIL')//回写目标表
#set($upbillinfo_rktz.updategoalcolumn='DATAS_DETAIL_GINMONEY,DATAS_DETAIL_GEXMONEY,DATA_SUBNUM')//需要回写更新的字段数组
#set($upbillinfo_rktz.updategoalfield='GOODS_ENTRYBATCH')//需要回写更新的单据查询字段
#set($upbillinfo_rktz.updateoperatortypecode='XT1023')// 操作的单据类型,当操作单据类型与此相同时触发回写。为空表示是本单据触发。
#set($upbillinfo_rktz.updatePreType='detail')
#set($upbillinfo_rktz.eqGoaltypeField='SUMGLIDE_BILLTYPE') //直接更新 跨表更新
#set($upbillinfo_rktz.afterupdatecheck='sumglide_check');// 执行数据数据检测。
$upbillinfoMap.put('BT1142', $upbillinfo_rktz);//入库通知

在入库通知配置校验语句

//-------------单据超量控制-----------------
//主表相关信息
#set($billcheckMap=$vs.util.newMap());

#set($billcheck = $vs.util.newMap())
 // 检测语句,查询结果为提示的内容。多行则逐行拼接在一起提示。
#set($billcheck.checksql=`
    select SQLTools.concat(a.GOODS_ENTRYBATCH,'明细已结算一次') 
    as ERROR_MSG
    from WAREHOUSE_ENTRYINF_DETAIL a 
    left join WAREHOUSE_ENTRYINF b on a.ENTRYINF_BILLCODE = b.ENTRYINF_BILLCODE
    where b.BILLTYPE_CODE ='BT1142' and a.DATA_SUBNUM > 1 and 2=2
 `)
#set($billcheck.checkwherecolumn='a.GOODS_ENTRYBATCH');//检测条件字段,包含别名
#set($billcheck.checksourcetable='');//检测表名称,根据此表名称,获取单据号或批号值。如果是主表,取单据号,如果是明细表,取批号
#set($billcheck.checkmod=1);//检测类型:0 提示、1 拦截。默认为0
#set($billcheck.checktime='');//检测时机:默认为空,表示全部操作。save为新增、修改、删除。add 为新增、update为修改,delete为删除。backupdate为回写(回写具体回写的时机,根据回写配置的参数控制。)。
#set($billcheck.checkopenflag='');//检测系统开关 定义应用参数名称和条件值。
$billcheckMap.put('sumglide_check', $billcheck);//检测类型。按整单超限检测

#set($detailtable.billcheckMap=$billcheckMap);

在采购结算单回写时候调用

#set($infoValue=$inputForm.infoValue);
#if($isNew)
    #set($infoValue.logType='insert');
    #set($infoValue.billcode=$inputForm.get($infoValue.billInfo.maintable.billcodecolumn));
#end
#set($newBean=$vs.proc.invoke('com.golden.bdp.sdp.billtypeInfo','getInfoValue',$infoValue));
#set($infoValue.newBean=$newBean);

//回写
#set($backProc = $vs.proc.find('com.golden.bdp.sdp.billBack'))
$backProc.executeBack($infoValue,$asynList)

页面列表

ITEM_HTML