mirror of
https://gitee.com/ShopeX/OMS
synced 2026-05-03 21:45:51 +08:00
1. 【新增】售后单售后原因类型支持搜索
2. 【新增】手工创建订单折扣可输入正数 3. 【优化】盘点申请单确认 4. 【修复】采购退货单模拟出库失败问题 5. 【新增】订单金额客户实付与结算金额 6. 【优化】仓库发货统计报表物料名称显示 7. 【优化】自有仓储虚拟发货逻辑 8. 【修复】基础物料分类管理问题
This commit is contained in:
@@ -51,11 +51,10 @@ class erpapi_shop_matrix_360buy_response_aftersalev2 extends erpapi_shop_respons
|
||||
}else if( in_array($status,array('3','9')) ){ //成功
|
||||
$sdf['status'] = 'SUCCESS';
|
||||
}
|
||||
if ($sdf['order']['pay_bn'] == 'deposit' && $sdf['refund_fee']<=0){
|
||||
$sdf['refund_fee'] = $sdf['order']['payed'];
|
||||
}
|
||||
if ($sdf['bool_type'] != ome_refund_bool_type::__PROTECTED_CODE && $params['partRefundType']!=1){
|
||||
$sdf['refund_all_money'] = true;
|
||||
$order = $this->getOrder('order_id,payed', $this->__channelObj->channel['shop_id'], $sdf['order_bn'],'aftersale');
|
||||
$sdf['real_refund_amount'] = $params['refund_fee'];
|
||||
$sdf['refund_fee'] = $order['payed'] ? : $params['refund_fee'];
|
||||
}
|
||||
|
||||
if ($sdf['logistics_company'] == '自动审核' && in_array($status,array('1'))){
|
||||
@@ -64,13 +63,14 @@ class erpapi_shop_matrix_360buy_response_aftersalev2 extends erpapi_shop_respons
|
||||
}
|
||||
|
||||
if ($sdf['extend_field']){
|
||||
|
||||
|
||||
if($sdf['extend_field'] && $sdf['extend_field']['refundAmt']>0){
|
||||
$sdf['jsrefund_flag']=1;
|
||||
|
||||
}
|
||||
}
|
||||
if($sdf['status'] == 'confirm_success') {
|
||||
$sdf['jsrefund_flag'] = 1;
|
||||
}
|
||||
|
||||
$sdf['pickware_type'] = $params['pickware_type'];
|
||||
$sdf['refund_version'] = $params['refund_version'];
|
||||
@@ -102,6 +102,37 @@ class erpapi_shop_matrix_360buy_response_aftersalev2 extends erpapi_shop_respons
|
||||
&& count($params['apply_detail_list'])== 1) {
|
||||
$sdf['refund_item_list']['return_item'][0]['sku_uuid'] = $params['apply_detail_list'][0]['skuUuid'];
|
||||
}
|
||||
|
||||
// 价保退款没有 sku_uuid,通过 item_id 与订单上的平台 skuid(shop_product_id) 匹配找出 oid,多条时用 PHP 取金额最大的子单,并回填 sku_uuid
|
||||
if ($sdf['bool_type'] & ome_refund_bool_type::__PROTECTED_CODE) {
|
||||
$order = $this->getOrder('order_id', $this->__channelObj->channel['shop_id'], $sdf['order_bn'], 'aftersale');
|
||||
if ($order && $order['order_id']) {
|
||||
$db = kernel::database();
|
||||
foreach ($sdf['refund_item_list']['return_item'] as $k => $item) {
|
||||
if (!empty($item['item_id'])) {
|
||||
$item_id = $db->quote($item['item_id']);
|
||||
$order_id = intval($order['order_id']);
|
||||
$sql = "SELECT ob.oid, ob.sku_uuid, COALESCE(ob.divide_order_fee, ob.amount, 0) AS order_fee "
|
||||
. "FROM sdb_ome_order_objects ob "
|
||||
. "INNER JOIN sdb_ome_order_items oi ON ob.obj_id = oi.obj_id AND oi.delete = 'false' "
|
||||
. "WHERE ob.order_id = {$order_id} AND oi.shop_product_id = {$item_id} AND ob.delete = 'false'";
|
||||
$rows = $db->select($sql);
|
||||
if ($rows && is_array($rows)) {
|
||||
usort($rows, function ($a, $b) {
|
||||
return bccomp((string)$b['order_fee'], (string)$a['order_fee'], 4);
|
||||
});
|
||||
$row = reset($rows);
|
||||
if (!empty($row['oid'])) {
|
||||
$sdf['refund_item_list']['return_item'][$k]['oid'] = $row['oid'];
|
||||
if (isset($row['sku_uuid']) && $row['sku_uuid'] !== '' && $row['sku_uuid'] !== null) {
|
||||
$sdf['refund_item_list']['return_item'][$k]['sku_uuid'] = $row['sku_uuid'];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $sdf;
|
||||
|
||||
@@ -246,11 +246,17 @@ class erpapi_shop_matrix_360buy_response_order extends erpapi_shop_response_orde
|
||||
if (is_string($popSignMap)) {
|
||||
$popSignMap = json_decode($popSignMap, 1);
|
||||
}
|
||||
if ($popSignMap && $popSignMap['24'] == '2') {
|
||||
// 重置guobu_info,专项补贴是商家自补行为
|
||||
// popSignMap[24] 对应的 guobu_type 映射
|
||||
$popSignMap24TypeMap = [
|
||||
'2' => ['1024'], // 专项补贴
|
||||
'4' => [0x2000], // 纯商家出资
|
||||
'5' => [0x10000], // 政府和商家混合出资
|
||||
];
|
||||
if ($popSignMap && isset($popSignMap['24']) && isset($popSignMap24TypeMap[$popSignMap['24']])) {
|
||||
// 重置guobu_info
|
||||
$this->_ordersdf['guobu_info'] = [
|
||||
'use_gov_subsidy_new' => true,
|
||||
'guobu_type' => ['1024'] // 专项补贴
|
||||
'guobu_type' => $popSignMap24TypeMap[$popSignMap['24']]
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -267,6 +273,8 @@ class erpapi_shop_matrix_360buy_response_order extends erpapi_shop_response_orde
|
||||
if(is_string($orderExt)) {
|
||||
$orderExt = json_decode($orderExt, 1);
|
||||
}
|
||||
|
||||
$paymentDetailList = [];
|
||||
if($this->_ordersdf['extend_field']['version'] >= 3){
|
||||
if($orderExt
|
||||
&& !isset($orderExt['totalSellerReceivable'])){
|
||||
@@ -326,8 +334,11 @@ class erpapi_shop_matrix_360buy_response_order extends erpapi_shop_response_orde
|
||||
}
|
||||
}
|
||||
|
||||
// type = 244 && bearer = 5 国补立减,也需要算在订单总额里
|
||||
if($value['type'] == 244) {
|
||||
// bearer = 5 国补立减,也需要算在订单总额里
|
||||
//@todo:官方文档:https://open.jd.com/v2/#/doc/scene?listId=2168
|
||||
// type = 244 代表:244-新品国补立减
|
||||
// type = 1080 代表:1080-政府消费券(可开票)
|
||||
if(in_array($value['type'], [244, 1080])) {
|
||||
foreach ($value['orderCostAmounts'] as $orderCostAmount) {
|
||||
|
||||
if($orderCostAmount['bearer'] == 5 && $orderCostAmount['bearAmount'] > 0) {
|
||||
@@ -336,7 +347,7 @@ class erpapi_shop_matrix_360buy_response_order extends erpapi_shop_response_orde
|
||||
|
||||
$this->_ordersdf['payments'][] = [
|
||||
"money" => $orderCostAmount['bearAmount'],
|
||||
"paymethod" => '国补立减-政府承担'
|
||||
"paymethod" => isset($value['typeName']) ? $value['typeName'] : '国补立减-政府承担',
|
||||
];
|
||||
}
|
||||
|
||||
@@ -344,8 +355,32 @@ class erpapi_shop_matrix_360buy_response_order extends erpapi_shop_response_orde
|
||||
}
|
||||
}
|
||||
}
|
||||
}else{
|
||||
if(isset($this->_ordersdf['extend_field']['paymentDetailList'])){
|
||||
$paymentDetailList = $this->_ordersdf['extend_field']['paymentDetailList'];
|
||||
if(is_string($paymentDetailList)) {
|
||||
$paymentDetailList = json_decode($paymentDetailList, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// 京东E卡
|
||||
if($paymentDetailList){
|
||||
foreach ($paymentDetailList as $pdKey => $payDetais)
|
||||
{
|
||||
if(!isset($payDetais['amountExpands'])){
|
||||
continue;
|
||||
}
|
||||
|
||||
foreach ($payDetais['amountExpands'] as $payDetailKey => $payDetailInfo)
|
||||
{
|
||||
if(isset($payDetailInfo['type']) && $payDetailInfo['type'] == 101){
|
||||
$this->_ordersdf['extend_field']['is_jd_e_card'] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 国补金额(下单立减)
|
||||
if ($orderExt) {
|
||||
|
||||
@@ -388,10 +423,23 @@ class erpapi_shop_matrix_360buy_response_order extends erpapi_shop_response_orde
|
||||
}
|
||||
$this->_ordersdf['guobu_info']['gov_subsidy_amount_new'] = $govSubsidyInfo['govSubsidyAmount'];
|
||||
}
|
||||
|
||||
// 国补订单拍照规则
|
||||
if(isset($orderExt['SnImgRule'])){
|
||||
$SnImgRuleInfo = $orderExt['SnImgRule'];
|
||||
if (is_string($SnImgRuleInfo)) {
|
||||
$SnImgRuleInfo = json_decode($SnImgRuleInfo, true);
|
||||
}
|
||||
|
||||
// 是否需要拍照
|
||||
if($SnImgRuleInfo['checkImg'] == 1){
|
||||
$this->_ordersdf['guobu_info'] = ['use_gov_subsidy_new' => true];
|
||||
$this->_ordersdf['guobu_info']['guobu_type'][] = 1024; // 需要拍照(十六制数值)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
if(is_array($this->_ordersdf['extend_field']['sendpayMap'])) {
|
||||
foreach($this->_ordersdf['extend_field']['sendpayMap'] as $spVal){
|
||||
if(is_string($spVal)) {
|
||||
@@ -823,6 +871,29 @@ class erpapi_shop_matrix_360buy_response_order extends erpapi_shop_response_orde
|
||||
{
|
||||
if($this->_ordersdf['extend_field']['version'] >= 3) {
|
||||
$this->_ordersdf['coupon_oid_field'] = 'sku_uuid';
|
||||
if (isset($this->_ordersdf['coupon_field']) && is_array($this->_ordersdf['coupon_field'])) {
|
||||
// 调用自定义的service来修改$coupon
|
||||
foreach (kernel::servicelist('erpapi.service.360buy.order.coupon.format') as $service) {
|
||||
if (method_exists($service, 'format_coupon')) {
|
||||
$service->format_coupon($this, $this->_ordersdf['coupon_field']);
|
||||
}
|
||||
}
|
||||
// 先构建sku_uuid到实付金额的映射
|
||||
$skuCalcActuallyPayMap = [];
|
||||
foreach ($this->_ordersdf['coupon_field'] as $cf) {
|
||||
if (isset($cf['sku_uuid']) && isset($cf['calcActuallyPay'])) {
|
||||
$skuCalcActuallyPayMap[$cf['sku_uuid']] += $cf['calcActuallyPay'];
|
||||
}
|
||||
}
|
||||
// 将实付金额写入到order_objects
|
||||
if (!empty($skuCalcActuallyPayMap) && isset($this->_ordersdf['order_objects']) && is_array($this->_ordersdf['order_objects'])) {
|
||||
foreach ($this->_ordersdf['order_objects'] as $k => $object) {
|
||||
if (isset($object['sku_uuid']) && isset($skuCalcActuallyPayMap[$object['sku_uuid']])) {
|
||||
$this->_ordersdf['order_objects'][$k]['actually_amount'] = $skuCalcActuallyPayMap[$object['sku_uuid']];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
//矩阵返回优惠数据不请求接口,否则请求接口
|
||||
$ext_data = array();
|
||||
|
||||
Reference in New Issue
Block a user