合约交易
利用合约关系进行合约交易(必须已经签署生效的合作关系)
- 接口单据,基于合约交易过程中,一方传递给另一方的协议类型的单据,单据中必须包含合约关系id和共识项。
如:一方的采购订单对应另一方的销售订单。接口单据一一对应,即双方都存在一个通过合约关系建立的单据(一个采购订单对应另一方的一个销售订单),该接口单据包含合约关系信息id,提供单据的一方为甲方(邀约方,例如采购订单),接受单据的为乙方(执行方,例如销售订单)。双方数据交换以甲方的单据id为依据进行。
- 共识项(关联项),是跟踪合约交易项信息的数据字段集合,包含id,具有完整性,代表合约中订单项,唯一识别一个项目的id。例如采购订单的一个明细产品项目。
合约交易过程中,不仅需要传递订单,还需要反馈订单的执行进度,针对订单项进行信息沟通。因此共识项可以确定,订单的执行进度和状态。
邀约方(甲方)明细记录的id通常作为交易项的唯一标识。
- 接口单据的状态和操作
- 接口单据状态
- 邀约方(甲方): 新建(还未传输给对方),待确认(传输给对方,待对方确认,待确认期间邀约方还可以更新接口单据?),生效(对方已经确认合约生效),拒绝 (对方拒绝,合约作废)
- 执行方(乙方): 待确认(接受到对方合约未确认),生效(接受合约,合约生效),拒绝(拒绝对方合约,合约作废)
CREATED("created"), //建立完成 ACCEPTED("accepted"), //接受待确认 REJECTED("rejected"), //拒绝 CONFIRMED("confirmed"); //确认
- 接口单据的操作(合约协议的签署过程):
- 发送:(创建) 将采购订单发送给对方,形成销售协议(合同)
- 确认:接受合约,合约生效
- 拒绝:拒绝合约,合约失效
- 撤回:撤回未生效的合约,邀约方单据进入新建状态,乙方合约单据作废。撤回已生效的合约,待对方确认后,双方合约才会处于待确认状态。
- 操作的系统数据项
cstatus (合约状态),
cconfirmduedate 同意或者拒绝的有效时间,超过期限,不能在同意或者拒绝单据,有效期限有合约实例 confirmdays 属性确定,如果该属性为null 表明没有期限限定。
ccancelstate 单据同意后,如果撤销首先更新该字段1 表明自己发起撤销,2 表明对方发起撤销。
- 邀约方定义
邀约方(甲方)职责
<ATTRIBUTE TYPE="DS/PR/PS/LR/LS" PROGID="CNTCOOP" SVRERI="" RELEASE="0~0~0" USERVERSION="1">
<PROVIDER EDITOR="..EDIT" MAINDS="..BROWSEDS" ALIAS="CONTRACT" ALLALIAS="DEFAULT" IDPARAM="glqyid" IDFIELD="glqyid">
EDITOR 接口单据的编辑属性 MAINDS 用于查询接口单据主数据集信息的数据集,ALIAS,用于查询合约信息,不包含已经rejected的合约,
ALLALIAS 主数据集中包含所有记录的
IDPARAM 合约id的参数名称,对于邀约方为本单据id参数,IDFIELD合约字段的名称,对于邀约方为本单据的id字段
<CONTRACTREL ITEMCODE="CNT" PATH="" ID="relationid"/>
合约关系定义,通过主数据集获得 PATH 或ID 表达式
<TRANSFER PARAMNAME="glqyid">
邀约方生成合约的数据转移定义,PARAMNAME 生成转移的参数名称,值为本单据id
<DATASET CODE="EDITDS" ERI="..EDITDS" ALIAS="DEFAULT">
<FIELD SOURCE="ename" TARGET="ename"/>
</DATASET>
</TRANSFER>
<OPMESSAGE ACCEPT="" CONFIRM="" REJECT="" WITHDRAW=""/>
前端用于生成操作消息的动态文本
<STATUSCONDITION CREATED="" ACCEPTED="" CONFIRMED="" REJECTED=""/>
接口单据状态转移的条件定义
<RELATIONDS ERI=".HZGX.BROWSEDS" ALIAS="DEFAULT" PARAM="contractrelationid" NAMEEXP="ename + '('+ecode+')' "/>
关系数据集,通过关系id查询信息,比如供应商,或者客户的对方的信息,NAMEEXP显示在交易中的对方名称
<EXESTATUSREC CODE="SYNCSTORE" NAME="同步库存信息" CONDITION="" EXESTATUS="ename">
执行状态同步操作接收方(可选),在合约执行过程中同步执行进度的信息,例如入库或发货情况, CODE:唯一识别,与发送方对应,
NAME 操作名称显示在菜单中
CONDITION 可以执行操作的条件,EXESTATUS 同步的字段名称,执行后接口单据的字段内容设置为NAME的值。
<DATASET CODE="EDITDS" ITEMID="glqyid">tranmemo</DATASET> ITEMID 两边必须都存在,且相等
接收同步内容的数据集和字段,作为接受者,允许更新的字段,ITEMID 为双方的共识项
</EXESTATUSREC>
<EXESTATUSSND CODE="SYNCSTORE" NAME="同步库存信息" CONDITION="" EXESTATUS="ename" MESSAGE="{ecode}同步">
执行状态同步的发送方(可选),NAME 操作名称显示在菜单中,CONDITION:执行发送操作的条件,
EXESTATUS 同步的字段名称,执行后接口单据的字段内容设置为NAME的值。 MESSAGE 自动生成的发布消息,动态文本(包含表达式的文本)
<TRANSFER PARAMNAME="tranid">
数据转换定义,用于生成更新数据,发送给接收方,参数为共识项
<DATASET CODE="EDITDS" ERI="..EDITDS" ALIAS="DEFAULT">
<FIELD SOURCE="tranmemo" TARGET="tranmemo"/>
<FIELD SOURCE="tranid" TARGET="glqyid"/> 两个id相互对应
</DATASET>
</TRANSFER>
</EXESTATUSSND>
</PROVIDER>
</ATTRIBUTE></DEF>
- 执行方定义
执行方(乙方)
<ATTRIBUTE TYPE="DS/PR/PS/LR/LS" PROGID="CNTCOOP" SVRERI="" RELEASE="0~0~0" USERVERSION="1">
<EXECUTOR EDITOR="..EDIT" MAINDS="..BROWSEDS" ALIAS="CONTRACT" ALLALIAS="DEFAULT" IDPARAM="tranid" IDFIELD="tranid">
<CONTRACTREL ITEMCODE="CNT" PATH="" ID="relationid"/>
<RELATIONDS ERI=".HZGX.BROWSEDS" ALIAS="DEFAULT" PARAM="contractrelationid" NAMEEXP="ename">
<FIELD CODE="tranmemo" VALUE="tranmemo"/>
根据关系数据集更新生成的合约信息,比如对方(客户或供应商)的id等,
CODE 字段名称 VALUE 表达式,用于计算目标字段的值。
<FIELD CODE="relationid" VALUE="contractrelationid"/>
</RELATIONDS>
<STATUSCONDITION CREATED="" ACCEPTED="" CONFIRMED="" REJECTED=""/>
<OPMESSAGE ACCEPT="" CONFIRM="" REJECT="" WITHDRAW=""/>
<EXESTATUSSND ...> ......</EXESTATUSSND>
<EXESTATUSSND ...> .......</EXESTATUSSND>
</EXECUTOR>
</ATTRIBUTE>
接口单据状态变化后触发实体事件,可以用来在流程中使用,
事件代码"STATUS" 事件名称"合约状态"
Created with the Personal Edition of HelpNDoc: Free iPhone documentation generator