1. 【新增】售后单售后原因类型支持搜索

2. 【新增】手工创建订单折扣可输入正数

3. 【优化】盘点申请单确认

4. 【修复】采购退货单模拟出库失败问题

5. 【新增】订单金额客户实付与结算金额

6. 【优化】仓库发货统计报表物料名称显示

7. 【优化】自有仓储虚拟发货逻辑

8. 【修复】基础物料分类管理问题
This commit is contained in:
chenping
2026-04-01 11:59:17 +08:00
parent 9341122827
commit 61783b7d01
754 changed files with 46179 additions and 5700 deletions

View File

@@ -29,20 +29,19 @@ class erpapi_wms_request_delivery extends erpapi_wms_request_abstract
/**
* 发货单暂停
*
*
* @return void
* @author
* */
**/
public function delivery_pause($sdf)
{}
/**
* 发货单暂停恢复
*
*
* @return void
* @author
* */
**/
public function delivery_renew($sdf)
{}
@@ -88,14 +87,15 @@ class erpapi_wms_request_delivery extends erpapi_wms_request_abstract
}
/**
* 发货单创建
*
*
* @return void
* @author
* */
**/
public function delivery_create($sdf)
{
$delivery_bn = $sdf['outer_delivery_bn'];
$channel_id = $this->__channelObj->wms['channel_id'];
$iscancel = kernel::single('ome_interface_delivery')->iscancel($delivery_bn);
if ($iscancel) {
return $this->succ('发货单已取消,终止同步');
@@ -107,13 +107,54 @@ class erpapi_wms_request_delivery extends erpapi_wms_request_abstract
if ($sdf['member']['name'] && $encrytPos = strpos($sdf['member']['name'] , '>>')){
$sdf['member']['name'] = substr($sdf['member']['name'] , 0, $encrytPos);
}
// 自发货标记调用selfwms渠道自动完成发货
//@todo发货单明细里都是虚拟商品,则打标记为虚拟发货单并推送selfwms接口自动完成发货
if(isset($sdf['is_self_shipment']) && $sdf['is_self_shipment'] === true){
// params
$responseData = [
'delivery_bn' => $delivery_bn, // 发货单号
'status' => 'delivery',
'logi_id' => $sdf['logi_id'], // 物流公司ID直接使用发货单上的物流公司ID
'logistics' => $sdf['logi_id'], // 物流公司ID直接使用发货单上的物流公司ID
'logi_no' => $delivery_bn, // 物流单号:直接使用发货单号作为虚拟物流单号
];
// delivery_items
if($sdf['delivery_items']){
$itemList = [];
foreach($sdf['delivery_items'] as $itemVal)
{
$itemList[] = array(
'product_bn' => $itemVal['bn'],
'num' => $itemVal['number'],
);
}
$responseData['item'] = json_encode($itemList);
}
return kernel::single('erpapi_router_response')->set_channel_id($channel_id)->set_api_name('wms.delivery.status_update')->dispatch($responseData);
}
// 加密推送
if ($this->_needEncryptOriginData($sdf)) {
$this->_getEncryptOriginData($sdf);
}
$title = $this->__channelObj->wms['channel_name'] . '发货单添加';
// 通过 service 处理不同 APP 的参数格式化
$params = $this->_format_delivery_create_params($sdf);
// 调用 service 进行参数扩展或修改
if ($service = kernel::servicelist('erpapi.service.wms.delivery.params.format')) {
foreach ($service as $object => $instance) {
if (method_exists($instance, 'format_delivery_create_params')) {
$params = $instance->format_delivery_create_params($sdf, $params, $this->__channelObj);
}
}
}
if (!$params) {
return $this->error('参数为空,终止同步');
}
@@ -163,7 +204,7 @@ class erpapi_wms_request_delivery extends erpapi_wms_request_abstract
/**
* 发货单创建接口名
*
*
* @return void
* @author
*/
@@ -352,12 +393,6 @@ class erpapi_wms_request_delivery extends erpapi_wms_request_abstract
return $params;
}
/**
* delivery_create_callback
* @param mixed $response response
* @param mixed $callback_params 参数
* @return mixed 返回值
*/
public function delivery_create_callback($response, $callback_params)
{
$deliveryObj = app::get('ome')->model('delivery');
@@ -418,10 +453,10 @@ class erpapi_wms_request_delivery extends erpapi_wms_request_abstract
/**
* 发货单取消
*
*
* @return void
* @author
* */
**/
public function delivery_cancel($sdf)
{
$delivery_bn = $sdf['outer_delivery_bn'];
@@ -445,10 +480,10 @@ class erpapi_wms_request_delivery extends erpapi_wms_request_abstract
/**
* 发货单查询
*
*
* @return void
* @author
* */
**/
public function delivery_search($sdf)
{
$delivery_bn = $sdf['delivery_bn'];
@@ -532,11 +567,6 @@ class erpapi_wms_request_delivery extends erpapi_wms_request_abstract
}
# 发货单截单
/**
* delivery_cut
* @param mixed $sdf sdf
* @return mixed 返回值
*/
public function delivery_cut($sdf){
$deliveryBn = $sdf['outer_delivery_bn'];
$title = $this->__channelObj->channel['channel_name'] . '发货单截单';
@@ -568,9 +598,9 @@ class erpapi_wms_request_delivery extends erpapi_wms_request_abstract
}
/**
/**
* 预售付尾款通知wms接口
*
*
* @param $sdf
* @return string
*/
@@ -607,12 +637,6 @@ class erpapi_wms_request_delivery extends erpapi_wms_request_abstract
return array();
}
/**
* delivery_notify_callback
* @param mixed $response response
* @param mixed $callback_params 参数
* @return mixed 返回值
*/
public function delivery_notify_callback($response, $callback_params)
{
$rsp = $response['rsp'];

View File

@@ -17,8 +17,8 @@
/**
* 商品分配推送
*
* @category
* @package
* @category
* @package
* @author chenping<chenping@shopex.cn>
* @version $Id: Z
*/
@@ -27,11 +27,10 @@ class erpapi_wms_request_goods extends erpapi_wms_request_abstract
/**
* 商品添加
*
*
* @return void
* @author
* */
**/
public function goods_add($sdf){
$title = $this->__channelObj->wms['channel_name'] . '商品添加';
@@ -57,12 +56,6 @@ class erpapi_wms_request_goods extends erpapi_wms_request_abstract
return $this->__caller->call(WMS_ITEM_ADD, $params, $callback, $title,10);
}
/**
* goods_callback
* @param mixed $response response
* @param mixed $callback_params 参数
* @return mixed 返回值
*/
public function goods_callback($response, $callback_params)
{
$rsp = $response['rsp'];
@@ -143,10 +136,10 @@ class erpapi_wms_request_goods extends erpapi_wms_request_abstract
/**
* 商品编辑
*
*
* @return void
* @author
* */
**/
public function goods_update($sdf){
$title = $this->__channelObj->wms['channel_name'] . '商品编辑';
@@ -223,27 +216,17 @@ class erpapi_wms_request_goods extends erpapi_wms_request_abstract
return $params;
}
/**
* goods_addCombination
* @param mixed $sdf sdf
* @return mixed 返回值
*/
public function goods_addCombination($sdf) {
return $this->error('没有该接口');
}
/**
* goods_syncMap
* @param mixed $sdf sdf
* @return mixed 返回值
*/
public function goods_syncMap($sdf) {
return $this->error('没有该接口');
}
/**
* 同步库存
*
*
* @return void
* @author
*/
@@ -287,9 +270,16 @@ class erpapi_wms_request_goods extends erpapi_wms_request_abstract
$rs = $this->__caller->call(WMS_STOCK_QUERY, $params, [],$title,10,$sdf['wms_branch_bn']);
if(isset($rs['data'])) {
$data = @json_decode($rs['data'], 1);
$rs['total_count'] = $data['succ'][0]['total_count'];
$data = $data['succ'][0]['item_list'] ? : [];
// total_count
$rs['total_count'] = isset($data['succ'][0]['total_count']) ? intval($data['succ'][0]['total_count']) : 0;
$data = isset($data['succ'][0]['item_list']) ? $data['succ'][0]['item_list'] : [];
$rs['data'] = [];
// check
if(empty($data)){
return $rs;
}
foreach ($data as $v) {
$rs['data'][] = [

View File

@@ -14,7 +14,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* 退货单推送
*
@@ -45,6 +44,19 @@ class erpapi_wms_request_reship extends erpapi_wms_request_abstract
$title = $this->__channelObj->wms['channel_name'] . '退货单添加';
$params = $this->_format_reship_create_params($sdf);
// 调用 service 进行参数扩展或修改
if ($service = kernel::servicelist('erpapi.service.wms.reship.params.format')) {
foreach ($service as $object => $instance) {
if (method_exists($instance, 'format_reship_create_params')) {
$params = $instance->format_reship_create_params($sdf, $params, $this->__channelObj);
}
}
}
if (!$params) {
return $this->error('参数为空,终止同步');
}
$callback = array(
'class' => get_class($this),
@@ -173,6 +185,7 @@ class erpapi_wms_request_reship extends erpapi_wms_request_abstract
'is_gift' => '0', // TODO: 判断是否为赠品0:不是1:是
'item_remark' => '', // TODO: 商品备注
'inventory_type' => $sdf['branch_type'] == 'damaged' ? '101' : '1', // TODO: 库存类型1可销售库存101类型用来定义残次品201冻结类型库存301在途库存
'sn' => $v['sn'] ? ['sn' => $v['sn']] : '',
);
}
}

View File

@@ -43,11 +43,10 @@ class erpapi_wms_request_stockin extends erpapi_wms_request_abstract
/**
* 入库单创建
*
*
* @return void
* @author
* */
**/
public function stockin_create($sdf){
$stockin_bn = $sdf['io_bn'];
@@ -90,6 +89,12 @@ class erpapi_wms_request_stockin extends erpapi_wms_request_abstract
$params['item_total_num'] = $total;
$params['line_total_count'] = $total;
// 增加service
foreach(kernel::servicelist('erpapi.service.wms.stockin.create.params') as $service){
if(method_exists($service, 'format_stockin_create_params')){
$params = $service->format_stockin_create_params($sdf, $params);
}
}
$callback = array(
'class' => get_class($this),
@@ -109,12 +114,6 @@ class erpapi_wms_request_stockin extends erpapi_wms_request_abstract
} while (true);
}
/**
* stockin_create_callback
* @param mixed $response response
* @param mixed $callback_params 参数
* @return mixed 返回值
*/
public function stockin_create_callback($response, $callback_params)
{
// 更新外部编码
@@ -244,7 +243,14 @@ class erpapi_wms_request_stockin extends erpapi_wms_request_abstract
$params = $this->_format_stockin_cancel_params($sdf);
return $this->__caller->call(WMS_INORDER_CANCEL, $params, null, $title, 10, $stockin_bn);
// 增加service
foreach(kernel::servicelist('erpapi.service.wms.stockin.cancel.params') as $service){
if(method_exists($service, 'format_stockin_cancel_params')){
$params = $service->format_stockin_cancel_params($sdf, $params);
}
}
return $this->__caller->call(WMS_ORDER_CANCEL, $params, null, $title, 10, $stockin_bn);
}
protected function _format_stockin_cancel_params($sdf)