通过事件加工厂脚本实现金蝶云星辰单据保存之前执行“反审核”,“删除”两个操作。以满足单据修改的业务场景。
在集成平台的事件加工厂增加 BeforeTargetInvoke
事件,脚本如下:
注意:其中的保存请求参数中必须要有单据编码以保障反审核、删除动作能够定位单据。
正常使用过程中应该注释日志。
<?php
class BeforeTargetInvoke
{
protected $request;
protected $adapter;
protected $job;
/**
* 构造函数
*
* @param array $request 引用传递,调用接口请求参数
* @param Adapter:class $adapter 适配器类
* @param MongoDB:object $job 队列任务
*/
public function __construct(&$request, $adapter, $job)
{
$this->request = &$request;
$this->adapter = $adapter;
$this->job = $job;
}
/**
* 工厂事件执行函数
*
* @return void
*/
public function run()
{
$api = '/jdy/v2/sys/common_operate';
$number = $this->request['bill_no']; // 从请求参数中获取单据编编号
$unAuditRequest = [
'entity_number' => 'sal_bill_order', // 参考金蝶文档 https://open.jdy.com/#/files/api/detail?index=2&categrayId=3cc8ee9a663e11eda5c84b5d383a2b93&id=dd7ee492712611eda0b375f5553347df
// 'ids' => [],
'numbers' => [$number],
'operate_type' => 'unaudit' // 操作类型,删除delete、审核audit、反审核unaudit、订单关闭close_donothing
];
$this->adapter->getLogStorage()->insertOne(['text' => '执行反审核操作前', 'unAuditRequest' => $unAuditRequest], 1);
$res = $this->adapter->SDK->invoke($api, $unAuditRequest, 'POST');
$this->adapter->getLogStorage()->insertOne(['text' => '执行反审核操作后', 'unAuditRequest' => $res], 1);
$deleteRequest = [
'entity_number' => 'sal_bill_order',
'numbers' => [$number],
'operate_type' => 'delete'
];
$this->adapter->getLogStorage()->insertOne(['text' => '执行删除操作前', 'unAuditRequest' => $deleteRequest], 1);
$res = $this->adapter->SDK->invoke($api, $unAuditRequest, 'POST');
$this->adapter->getLogStorage()->insertOne(['text' => '执行删除操作后', 'unAuditRequest' => $res], 1);
}
}