mirror of
https://gitee.com/ShopeX/OMS
synced 2026-04-29 12:05:37 +08:00
1. 【新增】售后单售后原因类型支持搜索
2. 【新增】手工创建订单折扣可输入正数 3. 【优化】盘点申请单确认 4. 【修复】采购退货单模拟出库失败问题 5. 【新增】订单金额客户实付与结算金额 6. 【优化】仓库发货统计报表物料名称显示 7. 【优化】自有仓储虚拟发货逻辑 8. 【修复】基础物料分类管理问题
This commit is contained in:
@@ -104,29 +104,33 @@ class erpapi_shop_matrix_360buy_request_delivery extends erpapi_shop_request_del
|
||||
if ('SOPL' == $this->__channelObj->channel['addon']['type']) {
|
||||
$param['package_num'] = $sdf['itemNum'];
|
||||
}
|
||||
|
||||
// 拆单回写
|
||||
$logi_no = array ();
|
||||
foreach ($sdf['delivery_items'] as $key => $value) {
|
||||
$logi_no[$value['logi_type']][$value['logi_no']] = $value['logi_no'];
|
||||
}
|
||||
|
||||
foreach ($sdf['delivery_bill_list'] as $key => $value) {
|
||||
if(strpos($value['logi_no'], '-')) {
|
||||
continue;
|
||||
if($sdf['is_split'] == 1) {
|
||||
$param['package_type'] = 'break';
|
||||
$packages = $this->_getPackages($sdf);
|
||||
$param['packages'] = json_encode($packages);
|
||||
} else {
|
||||
// 拆单回写
|
||||
$logi_no = array ();
|
||||
foreach ($sdf['delivery_items'] as $key => $value) {
|
||||
$logi_no[$value['logi_type']][$value['logi_no']] = $value['logi_no'];
|
||||
}
|
||||
$logi_no[$value['logi_type']][$value['logi_no']] = $value['logi_no'];
|
||||
}
|
||||
|
||||
foreach ($logi_no as $key => $value) {
|
||||
$logi_no[$key] = implode(',',(array)$value);
|
||||
}
|
||||
foreach ($sdf['delivery_bill_list'] as $key => $value) {
|
||||
if(strpos($value['logi_no'], '-')) {
|
||||
continue;
|
||||
}
|
||||
$logi_no[$value['logi_type']][$value['logi_no']] = $value['logi_no'];
|
||||
}
|
||||
|
||||
if ($logi_no) {
|
||||
$param['company_code'] = implode('|',array_keys($logi_no));
|
||||
$param['logistics_no'] = implode('|',array_values($logi_no));
|
||||
}
|
||||
foreach ($logi_no as $key => $value) {
|
||||
$logi_no[$key] = implode(',',(array)$value);
|
||||
}
|
||||
|
||||
if ($logi_no) {
|
||||
$param['company_code'] = implode('|',array_keys($logi_no));
|
||||
$param['logistics_no'] = implode('|',array_values($logi_no));
|
||||
}
|
||||
}
|
||||
$order_id = $sdf['orderinfo']['order_id'];
|
||||
$fenxiao_order = kernel::single('ome_bill_label')->getBillLabelInfo($order_id, 'order', 'SOMS_FENXIAO');
|
||||
if ($fenxiao_order) {
|
||||
@@ -136,6 +140,125 @@ class erpapi_shop_matrix_360buy_request_delivery extends erpapi_shop_request_del
|
||||
return $param;
|
||||
}
|
||||
|
||||
protected function _getPackages($sdf)
|
||||
{
|
||||
//多包裹
|
||||
$dlyPackages = array();
|
||||
foreach ($sdf['delivery_package'] as $key => $val)
|
||||
{
|
||||
$product_bn = $val['bn'];
|
||||
$logi_no = $val['logi_no'] ? $val['logi_no'] : $sdf['logi_no'];
|
||||
|
||||
//check
|
||||
if(empty($product_bn) || empty($logi_no)){
|
||||
continue;
|
||||
}
|
||||
|
||||
//按[货号+物流单号]纬度
|
||||
//@todo:天猫平台一个订单有2行SKU一模一样(买一赠一商品有金额多数量)并且有多个不同物流单号的场景;
|
||||
if(isset($dlyPackages[$product_bn][$logi_no])){
|
||||
$dlyPackages[$product_bn][$logi_no]['number'] += $val['number'];
|
||||
}else{
|
||||
$dlyPackages[$product_bn][$logi_no] = array(
|
||||
'package_key' => $key,
|
||||
'number' => $val['number'],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
//按发货单明细获取包裹信息
|
||||
$packageList = array();
|
||||
foreach ($sdf['delivery_items'] as $itemKey => $itemVal)
|
||||
{
|
||||
$product_bn = $itemVal['product_bn'];
|
||||
$item_number = $itemVal['number'];
|
||||
$oid = $itemVal['sku_uuid'];
|
||||
|
||||
//check
|
||||
if(empty($oid)){
|
||||
continue;
|
||||
}
|
||||
|
||||
if(empty($dlyPackages[$product_bn])){
|
||||
continue;
|
||||
}
|
||||
|
||||
//初始化打包数量
|
||||
$sdf['delivery_items'][$itemKey]['pack_nums'] = 0;
|
||||
|
||||
//oid信息
|
||||
$oidList[$oid] = array('nums'=>$itemVal['nums'], 'sendnum'=>$itemVal['sendnum']);
|
||||
|
||||
//一个货号有多个物流包裹的场景
|
||||
foreach ($dlyPackages[$product_bn] as $logi_no => $packVal)
|
||||
{
|
||||
$package_key = $packVal['package_key'];
|
||||
$packageInfo = $sdf['delivery_package'][$package_key];
|
||||
|
||||
//check
|
||||
if($packVal['number'] < 1){
|
||||
continue;
|
||||
}
|
||||
|
||||
if(empty($packageInfo)){
|
||||
continue;
|
||||
}
|
||||
|
||||
//检查已经打包的数量(PKG组合商品没有sendnum字段)
|
||||
if(isset($sdf['delivery_items'][$itemKey]['sendnum'])){
|
||||
if($sdf['delivery_items'][$itemKey]['pack_nums'] >= $sdf['delivery_items'][$itemKey]['sendnum']){
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
//包裹发货数量
|
||||
if($packVal['number'] >= $item_number){
|
||||
$package_num = $item_number;
|
||||
|
||||
$dlyPackages[$product_bn][$logi_no]['number'] -= $item_number;
|
||||
}else{
|
||||
$package_num = $packVal['number'];
|
||||
|
||||
$dlyPackages[$product_bn][$logi_no]['number'] = 0;
|
||||
}
|
||||
|
||||
//已经打包的数量
|
||||
$sdf['delivery_items'][$itemKey]['pack_nums'] += $package_num;
|
||||
//data
|
||||
if(!isset($packageList[$logi_no])){
|
||||
$packageList[$logi_no] = array(
|
||||
'company_code' => $sdf['logi_type'],
|
||||
'company_name' => $sdf['logi_name'],
|
||||
'out_sid' => $packageInfo['logi_no'],
|
||||
'goods' => array(),
|
||||
);
|
||||
if($sdf['logi_type'] == 'OTHER' || $sdf['logi_type'] == 'virtual_delivery'){
|
||||
$packageList[$logi_no]['company_code'] = 'OTHER';
|
||||
$packageList[$logi_no]['zsDelivererName'] = $sdf['logi_name'];
|
||||
$packageList[$logi_no]['zsDelivererPhone'] = 12341234123;
|
||||
}
|
||||
}
|
||||
$packageList[$logi_no]['goods'][] = array(
|
||||
'num' => $package_num,
|
||||
'sku_id' => $itemVal['shop_product_id'],
|
||||
'sku_uuid' => $oid,
|
||||
'sub_tid' => $sdf['orderinfo']['order_bn'],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// 调用miele service处理特定物流编码,应用OTHER相同的处理逻辑
|
||||
if ($service = kernel::servicelist('erpapi.service.shop.360buy.delivery.packages.format')) {
|
||||
foreach ($service as $object => $instance) {
|
||||
if (method_exists($instance, 'getPackageAfter')) {
|
||||
$packageList = $instance->getPackageAfter($packageList, $sdf);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return array_values($packageList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 发货回调
|
||||
*
|
||||
|
||||
@@ -166,5 +166,45 @@ class erpapi_shop_matrix_360buy_request_order extends erpapi_shop_request_order
|
||||
}
|
||||
return $return_data;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* [京东700虚拟号]隐私号G组更新:报备外呼主叫号码组
|
||||
*
|
||||
* @param array $params
|
||||
* @return array
|
||||
*/
|
||||
public function bindSecretMobiles($params)
|
||||
{
|
||||
$title = '隐私号G组更新';
|
||||
|
||||
$original_bn = $params['order_bn'];
|
||||
|
||||
// check
|
||||
if(empty($original_bn) || empty($params['mobile_list'])){
|
||||
return $this->error('没有order_bn 或 mobile_list');
|
||||
}
|
||||
|
||||
// mobile_list
|
||||
if(is_array($params['mobile_list'])){
|
||||
$json_mobile = json_encode($params['mobile_list'], JSON_UNESCAPED_UNICODE);
|
||||
}else{
|
||||
$json_mobile = $params['mobile_list'];
|
||||
}
|
||||
|
||||
// params
|
||||
$params = array(
|
||||
'operate_type' => 'ADD_GXB_GROUP', // ADD_GXB_GROUP: 添加,DELETE_GXB_GROUP: 删除
|
||||
'tid' => $params['order_bn'], //订单号
|
||||
'mobile_list' => $json_mobile, // JSON格式
|
||||
//'virtual_id' => '', //此字段不需要传入
|
||||
);
|
||||
|
||||
// callback
|
||||
$callback = array();
|
||||
|
||||
// 使用矩阵透传接口请求淘宝
|
||||
$result = $this->__caller->call(STORE_VIRTUAL_NUMBER_GROUP_UPDATE, $params, $callback, $title, 10, $original_bn);
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user