Files
OMS/app/erpapi/lib/store/request/delivery.php
2025-12-28 23:13:25 +08:00

217 lines
7.4 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* Copyright © ShopeX http://www.shopex.cn. All rights reserved.
* See LICENSE file for license details.
*/
/**
* 门店发货单接口请求类
*
* @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;
}
}