mirror of
https://gitee.com/ShopeX/OMS
synced 2026-03-23 02:45:33 +08:00
228 lines
7.8 KiB
PHP
228 lines
7.8 KiB
PHP
<?php
|
|
/**
|
|
* Copyright 2012-2026 ShopeX (https://www.shopex.cn)
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
/**
|
|
* 门店发货单接口请求类
|
|
*
|
|
* @author xiayuanjun@shopex.cn
|
|
* @version 0.1
|
|
*
|
|
*/
|
|
class erpapi_store_request_delivery extends erpapi_store_request_abstract
|
|
{
|
|
/**
|
|
* 发货单暂停
|
|
*
|
|
* @return void
|
|
* @author
|
|
**/
|
|
|
|
public function delivery_pause($sdf){}
|
|
|
|
/**
|
|
* 发货单暂停恢复
|
|
*
|
|
* @return void
|
|
* @author
|
|
**/
|
|
public function delivery_renew($sdf){}
|
|
|
|
/**
|
|
* 发货单创建
|
|
*
|
|
* @return void
|
|
* @author
|
|
**/
|
|
public function delivery_create($sdf){
|
|
$delivery_bn = $sdf['outer_delivery_bn'];
|
|
|
|
$iscancel = kernel::single('ome_interface_delivery')->iscancel($delivery_bn);
|
|
if ($iscancel) {
|
|
return $this->succ('发货单已取消,终止同步');
|
|
}
|
|
|
|
$title = $this->__channelObj->wms['channel_name'] . '发货单添加';
|
|
|
|
$params = $this->_format_delivery_create_params($sdf);
|
|
if (!$params) {
|
|
return $this->error('参数为空,终止同步');
|
|
}
|
|
|
|
// 御城河
|
|
/*
|
|
$tradeIds = explode('|',$sdf['order_bn']);
|
|
kernel::single('base_hchsafe')->order_send_log($tradeIds,$this->__channelObj->wms['node_id']);
|
|
*/
|
|
|
|
$callback = array(
|
|
'class' => get_class($this),
|
|
'method' => 'delivery_create_callback',
|
|
'params' => array('delivery_bn'=>$delivery_bn,'obj_bn'=>$delivery_bn,'obj_type'=>'delivery'),
|
|
);
|
|
|
|
return $this->__caller->call(WMS_SALEORDER_CREATE, $params, $callback, $title,10,$delivery_bn);
|
|
}
|
|
|
|
protected function _format_delivery_create_params($sdf)
|
|
{
|
|
$delivery_bn = $sdf['outer_delivery_bn'];
|
|
|
|
$delivery_items = $sdf['delivery_items'];
|
|
$sdf['item_total_num'] = $sdf['line_total_count'] = count($delivery_items);
|
|
|
|
$items = array();
|
|
if ($delivery_items){
|
|
sort($delivery_items);
|
|
foreach ($delivery_items as $k => $v){
|
|
$items[] = array(
|
|
'bn' => $v['bn'],
|
|
'name' => $v['product_name'],
|
|
'number' => (int)$v['number'],
|
|
//'sku_type' => 'product',
|
|
'sale_price'=> $v['sale_price'],
|
|
);
|
|
}
|
|
}
|
|
|
|
|
|
$create_time = preg_match('/-|\//',$sdf['create_time']) ? $sdf['create_time'] : date("Y-m-d H:i:s",$sdf['create_time']);
|
|
|
|
$logistics_code = kernel::single('wmsmgr_func')->getWmslogiCode($this->__channelObj->wms['channel_id'],$sdf['logi_code']);
|
|
$shop_code = kernel::single('wmsmgr_func')->getWmsShopCode($this->__channelObj->wms['channel_id'],$sdf['shop_code']);
|
|
$params = array(
|
|
|
|
'shipping_id' => $delivery_bn,
|
|
// 'order_source' => $sdf['shop_type'] ? strtoupper($sdf['shop_type']) : 'OTHER',
|
|
'shipping_type' => 'EXPRESS',
|
|
'shipping_fee' => $sdf['logistics_costs'],
|
|
'tid' => $sdf['order_bn'],
|
|
'logistics_code' => $logistics_code ? $logistics_code : $sdf['logi_code'],
|
|
'shop_code' => $shop_code ? $shop_code : $sdf['shop_code'],
|
|
'branch_code' => $sdf['branch_bn'],
|
|
'buyer_id' => '',
|
|
'shipping_type' => '',
|
|
'shipping_fee' => '',
|
|
'logistics_company' => '',
|
|
'logistics_no' => '',
|
|
'remark' => $sdf['memo'],//订单上的客服备注
|
|
'created' => $create_time,
|
|
'is_protect' => $sdf['is_protect'],
|
|
'protect_fee' => $sdf['cost_protect'],
|
|
'is_cod' => $sdf['is_cod'],//是否货到付款。可选值:true(是),false(否)
|
|
|
|
'receiver_name' => $sdf['consignee']['name'],
|
|
'receiver_zip' => $sdf['consignee']['zip'],
|
|
'receiver_phone' => $sdf['consignee']['telephone'],
|
|
'receiver_mobile' => $sdf['consignee']['mobile'],
|
|
'receiver_state' => $sdf['consignee']['province'],
|
|
'receiver_city' => $sdf['consignee']['city'],
|
|
'receiver_district' => $sdf['consignee']['district'],
|
|
'receiver_address' => $sdf['consignee']['addr'],
|
|
'receiver_email' => $sdf['consignee']['email'],
|
|
'receiver_time' => $sdf['consignee']['r_time'],// TODO: 要求到货时间
|
|
'status' => 'READY',
|
|
'shipping_operator' => '',
|
|
'shipping_items' => $items,
|
|
|
|
);
|
|
return $params;
|
|
}
|
|
|
|
/**
|
|
* delivery_create_callback
|
|
* @param mixed $response response
|
|
* @param mixed $callback_params 参数
|
|
* @return mixed 返回值
|
|
*/
|
|
public function delivery_create_callback($response, $callback_params)
|
|
{
|
|
$rsp = $response['rsp'];
|
|
$err_msg = $response['err_msg'];
|
|
$data = $response['data'];
|
|
$msg_id = $response['msg_id'];
|
|
$res = $response['res'];
|
|
|
|
$delivery_bn = $callback_params['delivery_bn'];
|
|
|
|
if ($data) $data = @json_decode($data,true);
|
|
|
|
if (is_array($data) && $data['wms_order_code']) {
|
|
$oDelivery_extension = app::get('console')->model('delivery_extension');
|
|
$ext_data['original_delivery_bn'] = $data['wms_order_code'];
|
|
$ext_data['delivery_bn'] = $delivery_bn;
|
|
$oDelivery_extension->create($ext_data);
|
|
}
|
|
|
|
$deliveryObj = app::get('ome')->model('delivery');
|
|
$deliverys = $deliveryObj ->dump(array('delivery_bn'=>$delivery_bn),'delivery_id');
|
|
|
|
$msg = $err_msg ? $err_msg : $res;
|
|
$api_status = $rsp=='succ' ? 'send_succ' : 'send_fail';
|
|
kernel::single('console_delivery')->update_sync_status($deliverys['delivery_id'], $api_status, $msg);
|
|
|
|
$callback_params['obj_bn'] = $delivery_bn;
|
|
$callback_params['obj_type'] = 'delivery';
|
|
return $this->callback($response, $callback_params);
|
|
}
|
|
|
|
|
|
/**
|
|
* 发货单取消
|
|
*
|
|
* @return void
|
|
* @author
|
|
* */
|
|
public function delivery_cancel($sdf){
|
|
$delivery_bn = $sdf['outer_delivery_bn'];
|
|
|
|
$title = $this->__channelObj->wms['channel_name'] . '发货单取消';
|
|
|
|
$params = $this->_format_delivery_cancel_params($sdf);
|
|
|
|
return $this->__caller->call(WMS_SALEORDER_CANCEL, $params, null, $title,20,$delivery_bn);
|
|
|
|
}
|
|
|
|
protected function _format_delivery_cancel_params($sdf)
|
|
{
|
|
$params = array(
|
|
'store_bn' => $sdf['branch_bn'],
|
|
'out_order_code' => $sdf['outer_delivery_bn'],
|
|
);
|
|
return $params;
|
|
}
|
|
|
|
|
|
public function delivery_o2o_pickup($sdf){
|
|
|
|
$order_bn = $sdf['order_bn'];
|
|
$title = $this->__channelObj->wms['channel_name'] . '自提通知单';
|
|
$params = $this->_format_delivery_o2o_pickup_params($sdf);
|
|
|
|
return $this->__caller->call('store.wms.saleorder.o2o_pickup', $params, null, $title,20,$order_bn);
|
|
}
|
|
|
|
/**
|
|
* _format_delivery_o2o_pickup_params
|
|
* @param mixed $sdf sdf
|
|
* @return mixed 返回值
|
|
*/
|
|
public function _format_delivery_o2o_pickup_params($sdf){
|
|
|
|
return $sdf;
|
|
}
|
|
|
|
} |