mirror of
https://gitee.com/ShopeX/OMS
synced 2026-03-23 02:45:33 +08:00
727 lines
29 KiB
PHP
727 lines
29 KiB
PHP
<?php
|
||
/**
|
||
* Copyright © ShopeX (http://www.shopex.cn). All rights reserved.
|
||
* See LICENSE file for license details.
|
||
*/
|
||
|
||
class archive_order_func{
|
||
|
||
/**
|
||
* 获取申请过退款或已退款的订单号
|
||
* @access public
|
||
* @param array or int $delivery_id 发货单号,如:array('1','2','3')或1
|
||
* @param boolean $return_type 返回数据结果方式,true:列表,false:总数
|
||
* @return 已申请退款或已退款的订单号及状态
|
||
*/
|
||
public function get_refund_orders($delivery_id,$return_type=true){
|
||
|
||
static $refund_orders = array();
|
||
$deliveryObj = app::get('ome')->model('delivery');
|
||
$refundsObj = app::get('ome')->model('refunds');
|
||
$ordersObj = app::get('ome')->model('orders');
|
||
$refund_applyObj = app::get('ome')->model('refund_apply');
|
||
$deliveryorderObj = app::get('ome')->model('delivery_order');
|
||
if (is_array($delivery_id)){
|
||
foreach ($delivery_id as $delivery_id){
|
||
self::get_refund_orders($delivery_id);
|
||
}
|
||
}else{
|
||
$delivery_detail = $deliveryObj->dump($delivery_id, 'is_bind,delivery_id,parent_id,logi_no');
|
||
if ($delivery_detail['parent_id'] > 0){
|
||
$parent_delivery_detail = $deliveryObj->dump(array('delivery_id'=>$delivery_detail['parent_id']), 'logi_no');
|
||
$delivery_detail['logi_no'] = $parent_delivery_detail['logi_no'];
|
||
}
|
||
if ($delivery_detail['is_bind'] == 'true'){
|
||
$delivery_ids = $deliveryObj->getList('delivery_id', array('parent_id'=>$delivery_detail['delivery_id']), 0, -1);
|
||
if ($delivery_ids){
|
||
foreach ($delivery_ids as $delivery){
|
||
self::get_refund_orders($delivery['delivery_id']);
|
||
}
|
||
}
|
||
}else{
|
||
$delivery_orders = $deliveryorderObj->dump(array('delivery_id'=>$delivery_id), 'order_id');
|
||
$order_id = $delivery_orders['order_id'];
|
||
$refund_applys = $refund_applyObj->dump(array('order_id'=>$order_id,'status|noequal'=>'3','disabled'=>'false'), 'apply_id');
|
||
if (!empty($refund_applys)){
|
||
$order_detail = $ordersObj->dump(array('order_id'=>$order_id), 'order_bn,pay_status');
|
||
$refund_orders[] = array('order_bn'=>$order_detail['order_bn'],'logi_no'=>$delivery_detail['logi_no'],'status'=>'申请退款或已退款','pay_status'=>$order_detail['pay_status']);
|
||
}
|
||
}
|
||
}
|
||
if (!empty($refund_orders)){
|
||
if ($return_type == true){
|
||
return $refund_orders;
|
||
}else{
|
||
return count($refund_orders);
|
||
}
|
||
}else{
|
||
return null;
|
||
}
|
||
}
|
||
|
||
|
||
/**
|
||
* 更新订单优惠方案
|
||
* @param Number $order_id 订单ID
|
||
* @param String $shop_id 店铺ID
|
||
* @param Array $pmt_detail 待更新的优惠方案
|
||
* @param Array $addon 附加参数
|
||
* @param Array $old_pmt 返回更新前的优惠方案
|
||
* @return bool true or false
|
||
*/
|
||
public function update_pmt($order_id,$shop_id,$pmt_detail=array(),$addon=array(),&$old_pmt){
|
||
if (empty($pmt_detail) || !is_array($pmt_detail) || empty($order_id)) return false;
|
||
|
||
$pmtObj = app::get('ome')->model('order_pmt');
|
||
$old_pmt_detail = $pmtObj->getList('*',array('order_id'=>$order_id));
|
||
$old_pmt = $old_pmt_detail;
|
||
|
||
foreach ($pmt_detail as $k=>$v){
|
||
if ((trim($v['pmt_amount']) == '' || trim($v['pmt_amount']) == 0) && trim($v['pmt_describe']) == ''){
|
||
unset($pmt_detail[$k]);#将pmt_amount是0并且pmt_describe为空的去掉
|
||
}
|
||
}
|
||
|
||
#比对
|
||
$update_flag = false;
|
||
if ($old_pmt_detail){
|
||
if (count($old_pmt_detail) != count($pmt_detail)){
|
||
$update_flag = true;
|
||
}
|
||
}else{
|
||
if(count($pmt_detail) == 0){
|
||
$update_flag = false;
|
||
}else{
|
||
$update_flag = true;
|
||
}
|
||
}
|
||
|
||
if ($update_flag !== true){
|
||
return false;
|
||
}
|
||
|
||
#删除以前的优惠金额
|
||
$pmtObj->delete(array('order_id'=>$order_id));
|
||
|
||
foreach ($pmt_detail as $k=>$v){
|
||
|
||
//TODO:兼容拍拍优惠描述
|
||
$pmt_describe = '';
|
||
if (strstr($v['pmt_describe'],'@')){
|
||
$pmt_describe = explode('@',$v['pmt_describe']);
|
||
$pmt_describe = $pmt_describe[1];
|
||
}else{
|
||
$pmt_describe = $v['pmt_describe'];
|
||
}
|
||
|
||
$pmt_sdf = array(
|
||
'order_id' => $order_id,
|
||
'pmt_amount' => abs($v['pmt_amount']),
|
||
'pmt_describe' => $pmt_describe,
|
||
//'createtime' => $addon['createtime'],//增加优惠规则的创建时间(订单的创建时间)
|
||
//'shop_id' => $shop_id,//增加店铺id
|
||
);
|
||
if($pmtObj->save($pmt_sdf)){
|
||
$update_flag = true;
|
||
}
|
||
}
|
||
return $update_flag;
|
||
}
|
||
|
||
/**
|
||
* 订单结构数据扩展与修改
|
||
* @access public
|
||
* @param array $order_sdf 订单sdf数据结构
|
||
* @return 扩展或修改后的订单sdf数据结构
|
||
*/
|
||
static function order_sdf_extend(&$order_sdf){
|
||
|
||
if ($order_sdf){
|
||
foreach ($order_sdf as $obj_type=>$objects){
|
||
if (is_array($objects)){
|
||
foreach ($objects as $obj_id=>$items){
|
||
if ($items['order_items']){
|
||
foreach ($items['order_items'] as $item_id=>$item_val){
|
||
//显示items下的addon属性值
|
||
$addon = array();
|
||
$product_attr = unserialize($item_val['addon']);
|
||
if (!empty($product_attr['product_attr'])){
|
||
foreach ($product_attr['product_attr'] as $attr){
|
||
if($attr['original_str']) {
|
||
$addon[] = $attr['original_str'];
|
||
break;
|
||
}else{
|
||
$addon[] = $attr['label'].":".$attr['value'];
|
||
}
|
||
}
|
||
}
|
||
if ($addon){
|
||
$addon = implode(';',$addon);
|
||
}
|
||
$order_sdf[$obj_type][$obj_id]['order_items'][$item_id]['addon'] = $addon ? $addon : '-';
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
|
||
|
||
|
||
/**
|
||
* 更新订单收货人信息
|
||
*$new_consignee = $old_consignee = array(
|
||
* 'ship_name' => '收货人姓名',
|
||
* 'ship_area' => '收货人所在地区,ecos标准地区格式',
|
||
* 'ship_province' => '收货人所在省',
|
||
* 'ship_city' => '收货人所在市',
|
||
* 'ship_district' => '收货人所在县(区)',
|
||
* 'ship_addr' => '收货人所在详细地址',
|
||
* 'ship_zip' => '收货人所在地区邮编',
|
||
* 'ship_tel' => '收货人固定电话',
|
||
* 'ship_mobile' => '收货人手机号码',
|
||
* 'ship_email' => '收货人邮箱地址',
|
||
* 'ship_time' => '收货人要求到货时间'
|
||
*);
|
||
* @access public
|
||
* @param Number $order_id 订单ID
|
||
* @param Array $new_consignee 新的收货人信息
|
||
* @param Array $old_consignee 原始的收货人信息(订单表的收货人结构)
|
||
* @param bool $is_update 默认true更新,false不更新
|
||
* @return bool 不更新的时候,返回需要更新的收货人信息数组
|
||
*/
|
||
public function update_consignee($order_id,$new_consignee,&$old_consignee=array(),$is_update=true){
|
||
if (empty($new_consignee)) return false;
|
||
|
||
$oFunc = kernel::single('ome_func');
|
||
#收货人信息结构兼容
|
||
if (!isset($new_consignee['ship_name'])){
|
||
$new_consignee = array(
|
||
'ship_name' => $new_consignee['name'],
|
||
'ship_province' => $new_consignee['area_state'],
|
||
'ship_city' => $new_consignee['area_city'],
|
||
'ship_district' => $new_consignee['area_district'],
|
||
'ship_addr' => $new_consignee['addr'],
|
||
'ship_zip' => $new_consignee['zip'],
|
||
'ship_tel' => $new_consignee['telephone'],
|
||
'ship_mobile' => $new_consignee['mobile'],
|
||
'ship_email' => $new_consignee['email'],
|
||
'ship_time' => $new_consignee['r_time']
|
||
);
|
||
$area = $new_consignee['ship_province'].'/'.$new_consignee['ship_city'].'/'.$new_consignee['ship_district'];
|
||
$oFunc->region_validate($area);
|
||
$new_consignee['ship_area'] = $area;
|
||
}
|
||
|
||
#比较的字段
|
||
$compre_field = array('ship_name','ship_area','ship_addr','ship_zip','ship_tel','ship_email','ship_time','ship_mobile');
|
||
|
||
if (empty($old_consignee)){
|
||
$oOrder = app::get('ome')->model('orders');
|
||
$filter = array('order_id'=>$order_id);
|
||
$orders = $oOrder->getRow($filter, implode(',',$compre_field));
|
||
if ($orders){
|
||
foreach ($orders as $field=>$val){
|
||
$old_consignee[$field] = $val;
|
||
}
|
||
}
|
||
}
|
||
|
||
#判断原始收货人地区是否为本地标准的地区格式
|
||
if (isset($old_consignee['ship_area']) && !$oFunc->is_correct_region($old_consignee['ship_area'])){
|
||
$area = $old_consignee['ship_area'];
|
||
$oFunc->region_validate($area);
|
||
$old_consignee['ship_area'] = $area;
|
||
}
|
||
|
||
$update_sdf = array();
|
||
foreach($compre_field as $field){
|
||
$compre_value = trim($new_consignee[$field]);
|
||
if (empty($compre_value)) continue;
|
||
if ($new_consignee[$field] != $old_consignee[$field]){
|
||
$update_sdf[$field] = $new_consignee[$field];
|
||
}
|
||
}
|
||
|
||
if ($update_sdf){
|
||
if ($is_update == true){
|
||
$oOrder = app::get('ome')->model('orders');
|
||
return $oOrder->update($update_sdf,array('order_id'=>$order_id));
|
||
}else{
|
||
return $update_sdf;
|
||
}
|
||
}
|
||
return false;
|
||
}
|
||
|
||
/**
|
||
* 更新订单发货人信息
|
||
*$new_consigner = $old_consigner = array(
|
||
* 'consigner_name' => '发货人姓名',
|
||
* 'consigner_area' => '发货人所在地区,ecos标准地区格式',
|
||
* 'consigner_province' => '发货人所在省',
|
||
* 'consigner_city' => '发货人所在市',
|
||
* 'consigner_district' => '发货人所在县(区)',
|
||
* 'consigner_addr' => '发货人所在详细地址',
|
||
* 'consigner_zip' => '发货人所在地区邮编',
|
||
* 'consigner_tel' => '发货人固定电话',
|
||
* 'consigner_mobile' => '发货人手机号码',
|
||
* 'consigner_email' => '发货人邮箱地址',
|
||
*);
|
||
* @access public
|
||
* @param Number $order_id 订单ID
|
||
* @param Array $new_consigner 新的发货人信息
|
||
* @param Array $old_consigner 原始的发货人信息(订单表的发货人结构)
|
||
* @param bool $is_update 默认true更新,false不更新
|
||
* @return bool 不更新的时候,返回需要更新的发货人信息数组
|
||
*/
|
||
public function update_consigner($order_id,$new_consigner,&$old_consigner=array(),$is_update=true){
|
||
|
||
if (empty($new_consigner)) return false;
|
||
|
||
$oFunc = kernel::single('ome_func');
|
||
#发货人信息结构兼容
|
||
if (!isset($new_consigner['consigner_name'])){
|
||
$new_consigner = array(
|
||
'consigner_name' => $new_consigner['name'],
|
||
'consigner_province' => $new_consigner['area_state'],
|
||
'consigner_city' => $new_consigner['area_city'],
|
||
'consigner_district' => $new_consigner['area_district'],
|
||
'consigner_addr' => $new_consigner['addr'],
|
||
'consigner_zip' => $new_consigner['zip'],
|
||
'consigner_tel' => $new_consigner['telephone'],
|
||
'consigner_mobile' => $new_consigner['mobile'],
|
||
'consigner_email' => $new_consigner['email'],
|
||
);
|
||
$area = $new_consigner['consigner_province'].'/'.$new_consigner['consigner_city'].'/'.$new_consigner['consigner_district'];
|
||
$oFunc->region_validate($area);
|
||
$new_consigner['consigner_area'] = $area;
|
||
}
|
||
|
||
#判断原始收货人地区是否为本地标准的地区格式
|
||
if (isset($old_consigner['consigner_area']) && !$oFunc->is_correct_region($old_consigner['consigner_area'])){
|
||
$area = $old_consigner['consigner_area'];
|
||
$oFunc->region_validate($area);
|
||
$old_consigner['consigner_area'] = $area;
|
||
}
|
||
|
||
#比较的字段
|
||
$compre_field = array('consigner_name','consigner_area','consigner_addr','consigner_zip','consigner_tel','consigner_email','consigner_mobile');
|
||
|
||
if (empty($old_consigner)){
|
||
$oOrder = app::get('ome')->model('orders');
|
||
$filter = array('order_id'=>$order_id);
|
||
$orders = $oOrder->getRow($filter, implode(',',$compre_field));
|
||
if ($orders){
|
||
foreach ($orders as $field=>$val){
|
||
$old_consigner[$field] = $val;
|
||
}
|
||
}
|
||
}
|
||
|
||
$update_sdf = array();
|
||
foreach($compre_field as $field){
|
||
$compre_value = trim($new_consigner[$field]);
|
||
if (empty($compre_value)) continue;
|
||
if ($new_consigner[$field] != $old_consigner[$field]){
|
||
$update_sdf[$field] = $new_consigner[$field];
|
||
}
|
||
}
|
||
|
||
if ($update_sdf){
|
||
if ($is_update == true){
|
||
$oOrder = app::get('ome')->model('orders');
|
||
return $oOrder->update($update_sdf,array('order_id'=>$order_id));
|
||
}else{
|
||
return $update_sdf;
|
||
}
|
||
}
|
||
return false;
|
||
}
|
||
|
||
/**
|
||
* 更新订单代销人信息
|
||
* @access public
|
||
* @param Number $order_id 订单ID;$type,新增或编辑模式
|
||
* @param Array $new_sellagent 新的代销人信息
|
||
* @return bool true有变化,false无变化
|
||
*/
|
||
public function update_sellagent($order_id,$new_sellagent=array(),$type=false){
|
||
if (empty($new_sellagent) || empty($order_id)) return false;
|
||
|
||
$oSellAgent = app::get('ome')->model('order_selling_agent');
|
||
$oFunc = kernel::single('ome_func');
|
||
|
||
$new_sellagent['member_info']['tel'] = $new_sellagent['member_info']['telephone'];
|
||
$area = $new_sellagent['member_info']['area_state'].'/'.$new_sellagent['member_info']['area_city'].'/'.$new_sellagent['member_info']['area_district'];
|
||
$oFunc->region_validate($area);
|
||
$new_sellagent['member_info']['area'] = $area;
|
||
$compre_field = array(
|
||
'member_info' => array('uname','level','name','birthday','sex','area','addr','zip','tel','mobile','email'),
|
||
'website' => array('name','domain','logo')
|
||
);
|
||
|
||
$old_sellagent = $oSellAgent->dump(array('order_id'=>$order_id));
|
||
#只处理新增的数据。原来已存在的老订单不管
|
||
if($type == 'create'){
|
||
#新增分销王订单前端发货人地区
|
||
if($new_sellagent['seller']){
|
||
$seller_area = $new_sellagent['seller']['seller_state'].'-'.$new_sellagent['seller']['seller_city'].'-'.$new_sellagent['seller']['seller_district'];
|
||
$new_sellagent['seller']['seller_area'] = $seller_area;
|
||
$compre_field['seller'] = array('seller_name','seller_mobile','seller_phone','seller_zip','seller_area','seller_address');
|
||
}
|
||
}
|
||
|
||
$update_sdf = array();
|
||
|
||
foreach($compre_field as $path=>$field){
|
||
if (is_array($field)){
|
||
foreach($field as $fname){
|
||
$compre_value = trim($new_sellagent[$path][$fname]);
|
||
if (empty($compre_value)) continue;
|
||
if ($new_sellagent[$path][$fname] != $old_sellagent[$path][$fname]){
|
||
$update_sdf[$path][$fname] = $new_sellagent[$path][$fname];
|
||
}
|
||
}
|
||
}else{
|
||
$compre_value = trim($new_sellagent[$field]);
|
||
if (empty($compre_value)) continue;
|
||
if ($new_sellagent[$field] != $old_sellagent[$field]){
|
||
$update_sdf[$field] = $new_sellagent[$field];
|
||
}
|
||
}
|
||
}
|
||
if ($update_sdf){
|
||
$update_sdf['selling_agent_id'] = $old_sellagent['selling_agent_id'];
|
||
$update_sdf['order_id'] = $order_id;
|
||
#只处理新增的订单,原来已存在的老订单不管
|
||
if($type == 'create'){
|
||
#分销王订单前端发货人与发货地址存在
|
||
if($update_sdf['seller']['seller_address'] && $update_sdf['seller']['seller_name']){
|
||
$update_sdf['print_status'] = '1';#打印前端代销人发货信息
|
||
}
|
||
}
|
||
return $oSellAgent->save($update_sdf);
|
||
}
|
||
|
||
return false;
|
||
}
|
||
|
||
|
||
|
||
/**
|
||
* 订单旗标
|
||
* @param string $mark_value 获取相应旗标的图标,为空时获取所有旗标
|
||
* @return 返回旗标
|
||
*/
|
||
static function order_mark_type($mark_value=''){
|
||
$arr = array('b0' => '灰色', 'b1' => '红色', 'b2' => '橙色', 'b3' => '黄色', 'b4' => '蓝色', 'b5' => '紫色', 'b6' => '浅粉', 'b7' => '绿色', 'b8' => '浅蓝', 'b9' => '深绿', 'b10' => '桃红');
|
||
$mark_type = array();
|
||
$url = app::get('ome')->res_url;
|
||
foreach ($arr as $k=>$v){
|
||
$mark_type[$k] = $url.'/remark_icons/'.$k.'.png';
|
||
}
|
||
if ($mark_value){
|
||
return $mark_type[$mark_value];
|
||
}else{
|
||
return $mark_type;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 获取商品类型
|
||
* @return 返回现有商品类型
|
||
*/
|
||
|
||
public function get_obj_type(){
|
||
$obj_type = array();
|
||
if ($service = kernel::servicelist('ome.service.order.confirm'))
|
||
foreach ($service as $object => $instance){
|
||
if (method_exists($instance, 'view_list')){
|
||
$list = $instance->view_list();
|
||
if (is_array($list) && count($list) > 0){
|
||
foreach ($list as $type =>$config){
|
||
$obj_type[$type] = $type;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return $obj_type;
|
||
}
|
||
|
||
/**
|
||
* 增加order_items的unit字段
|
||
* @param array $data 获得要处理的数组
|
||
* @return array
|
||
*/
|
||
static function add_getItemList_colum($data){
|
||
$basicMaterialLib = kernel::single('material_basic_material');
|
||
|
||
if($data){
|
||
foreach($data as $obj_type=>$obj){
|
||
foreach($obj as $obj_id=>$oObj){
|
||
foreach($oObj['order_items'] as $item_id=>$iObj)
|
||
{
|
||
$product = $basicMaterialLib->getBasicMaterialExt($iObj['product_id']);
|
||
|
||
$data[$obj_type][$obj_id]['order_items'][$item_id]['unit'] = $product['unit'];
|
||
$data[$obj_type][$obj_id]['order_items'][$item_id]['specifications'] = $product['specifications'];
|
||
}
|
||
}
|
||
}
|
||
return $data;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 增加order_items的unit字段
|
||
* @param array $data 获得要处理的数组
|
||
* @return array
|
||
*/
|
||
static function add_items_colum($data){
|
||
$basicMaterialLib = kernel::single('material_basic_material');
|
||
|
||
if($data){
|
||
foreach($data as $obj_id=>$obj)
|
||
{
|
||
$product = $basicMaterialLib->getBasicMaterialExt($obj['product_id']);
|
||
|
||
$data[$obj_id]['unit'] = $product['unit'];
|
||
$data[$obj_id]['specifications'] = $product['specifications'];
|
||
}
|
||
return $data;
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 计算订单未发货商品的总金额
|
||
* @param string $order_id 订单号
|
||
* @return 未发货商品总金额
|
||
*/
|
||
public function order_items_diff_money($order_id){
|
||
$order = app::get('ome')->model('orders')->dump($order_id,"order_id",array("order_objects"=>array("*",array("order_items"=>array("*")))));
|
||
$amount = 0;
|
||
if ($order['order_objects']){
|
||
foreach ($order['order_objects'] as $obj){
|
||
if ($service = kernel::service("ome.service.order.remain.".trim($obj['obj_type']))){
|
||
if (method_exists($service, 'diff_money')){
|
||
$tmp_amount = $service->diff_money($obj);
|
||
$amount += $tmp_amount;
|
||
}
|
||
}else {
|
||
if ($service = kernel::service("ome.service.order.remain.goods")){
|
||
if (method_exists($service, 'diff_money')){
|
||
$tmp_amount = $service->diff_money($obj);
|
||
$amount += $tmp_amount;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
return $amount;
|
||
}
|
||
|
||
|
||
|
||
/**
|
||
* 更新订单支付状态
|
||
* @access public
|
||
* @param string $order_id 订单主键ID
|
||
* @return void
|
||
*/
|
||
public function update_order_pay_status($order_id=NULL){
|
||
$log = app::get('ome')->model('api_log');
|
||
$logTitle = '更新订单状态操作[订单ID:'. $order_id .']';
|
||
$logInfo = '更新订单 '. $order_id . ' 操作<BR>';
|
||
|
||
if (empty($order_id)) {
|
||
$log->write_log($log->gen_id(), $logTitle, __CLASS__, __METHOD__, '', '', 'response', 'fail', $logInfo,'','api.store.trade');
|
||
|
||
return false;
|
||
}
|
||
|
||
$orderObj = app::get('archive')->model('orders');
|
||
$refundObj = app::get('ome')->model('refunds');
|
||
$refund_applyObj = app::get('ome')->model('refund_apply');
|
||
$dObj = app::get('ome')->model('delivery');
|
||
$order_filter = array("order_id"=>$order_id);
|
||
|
||
//订单详情
|
||
$order_detail = $orderObj->dump($order_filter, 'order_bn,payed,total_amount,shop_type');
|
||
$payed = strval($order_detail['payed']);
|
||
$total_amount = strval($order_detail['total_amount']);
|
||
|
||
$logInfo .= '订单信息:<BR>' . var_export($order_detail, true) . '<BR>';
|
||
$logInfo .= '当前支付状态:'. $payed . '<BR>';
|
||
$logInfo .= '当前总计金额:'. $total_amount . '<BR>';
|
||
|
||
//获取退款单及退款申请记录
|
||
$refund_filter = array_merge($order_filter,array('status'=>'succ'));
|
||
$refund_detail = $refundObj->dump($refund_filter, 'refund_id');
|
||
$refund_apply_filter = array_merge($order_filter,array('status'=>array('0','1','2','6')));
|
||
$refund_apply_detail = $refund_applyObj->dump($refund_apply_filter, 'apply_id');
|
||
|
||
$logInfo .= '退款单信息:<BR>' . var_export($refund_detail, true) . '<BR>';
|
||
$logInfo .= '退款申请信息:<BR>' . var_export($refund_apply_detail, true) . '<BR>';
|
||
|
||
$pay_status = '';
|
||
|
||
//支付状态
|
||
if ($payed == '0' && $total_amount > '0' && !$refund_detail){
|
||
$pay_status = '0';//未支付
|
||
}elseif($payed < $total_amount && !$refund_detail){
|
||
$pay_status = '3';//部分支付
|
||
}elseif($payed >= $total_amount){
|
||
$pay_status = '1';//已支付
|
||
}
|
||
|
||
//退款状态
|
||
if($refund_apply_detail){
|
||
$pay_status = '6';//退款申请中
|
||
}elseif($payed == '0' && $refund_detail){
|
||
//danny_freeze_stock_log
|
||
define('FRST_TRIGGER_OBJECT_TYPE','订单:未发货订单全额退款导致订单取消');
|
||
define('FRST_TRIGGER_ACTION_TYPE','ome_order_func:update_order_pay_status');
|
||
$pay_status = '5';//全额退款
|
||
//全额退款并且未发货的订单取消
|
||
|
||
}elseif($payed < $total_amount && $refund_detail){
|
||
$pay_status = '4';//部分退款
|
||
|
||
|
||
|
||
}
|
||
|
||
if ($pay_status !== ''){
|
||
//退款申请中 将订单置为暂停 其余的不暂停
|
||
if($pay_status == 6){
|
||
$data['pause'] = 'true';
|
||
$logInfo .= '退款申请中 将订单置为暂停 其余的不暂停 信息:<BR>' . var_export($order_filter, true) . var_export($data, true) . '<BR>';
|
||
}else{
|
||
$data['pause'] = 'false';
|
||
$logInfo .= '将订单暂停状态恢复 信息:<BR>' . var_export($order_filter, true) . var_export($data, true) . '<BR>';
|
||
}
|
||
$data['pay_status'] = $pay_status;
|
||
if (!$orderObj->update($data, $order_filter)){
|
||
$log->write_log($log->gen_id(), $logTitle, __CLASS__, __METHOD__, '', '', 'response', 'fail', $logInfo,'','api.store.trade',$order_detail['order_bn']);
|
||
|
||
return false;
|
||
}
|
||
|
||
|
||
}
|
||
|
||
$log->write_log($log->gen_id(), $logTitle, __CLASS__, __METHOD__, '', '', 'response', 'success', $logInfo,'','api.store.trade',$order_detail['order_bn']);
|
||
|
||
return true;
|
||
}
|
||
|
||
/**
|
||
* 判断是否大订单的界限
|
||
* @access static public
|
||
* @return int
|
||
*/
|
||
static public function get_max_orderitems(){
|
||
return 1000;
|
||
}
|
||
|
||
/**
|
||
* 更新订单备注
|
||
* @access public
|
||
* @param Number $order_id 订单ID
|
||
* @param String $add_mark 待更新的订单备注内容
|
||
* @param String $op_name 操作人
|
||
* @param String $old_mark_memo 订单现有的订单备注内容
|
||
* @param bool $is_update 是否更新,默认更新true,false不更新
|
||
* @return $is_update=true,返回成功或失败;$is_update=false返回待更新的订单备注内容
|
||
*/
|
||
public function update_mark($order_id,$add_mark='',$op_name='',$old_mark='',$is_update=true){
|
||
$add_mark = trim($add_mark);
|
||
if (empty($add_mark)) return false;
|
||
|
||
return $this->_update_mark_message($order_id,$add_mark,$op_name,$old_mark,'mark_text',$is_update);
|
||
}
|
||
|
||
private function _update_mark_message($order_id,$add_content,$op_name,$old_content,$field_name,$is_update){
|
||
$oOrder = app::get('ome')->model('orders');
|
||
if (empty($old_content)){
|
||
$filter = array('order_id'=>$order_id);
|
||
$orders = $oOrder->getRow($filter, 'mark_text,custom_mark');
|
||
$old_content = $orders[$field_name];
|
||
}
|
||
|
||
$update_flag = true;#更新标识
|
||
$oFunc = kernel::single('ome_func');
|
||
$old_content = $oFunc->format_memo($old_content);
|
||
$add_content = trim($add_content);
|
||
if ($old_content){
|
||
foreach ($old_content as $val){
|
||
if ($val['op_content'] == $add_content){
|
||
$update_flag = false;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
if ($update_flag){
|
||
#原始内容
|
||
$new_content = is_array($old_content) ? $old_content : array();
|
||
|
||
#追加内容
|
||
$add_content = array('op_name'=>$op_name,'op_content'=>$add_content,'op_time'=>time());
|
||
$new_content[] = $add_content;
|
||
|
||
if ($is_update == true){
|
||
return $oOrder->update(array($field_name=>serialize($new_content)), $filter);
|
||
}else{
|
||
return $new_content;
|
||
}
|
||
}
|
||
return false;
|
||
}
|
||
|
||
/**
|
||
* 更新买家留言
|
||
* @access public
|
||
* @param Number $order_id 订单ID
|
||
* @param String $add_message 待更新的买家留言内容
|
||
* @param String $op_name 操作人
|
||
* @param String $old_mark_memo 订单现有的买家留言内容
|
||
* @param bool $is_update 是否更新,默认更新true,false不更新
|
||
* @return $is_update=true,返回成功或失败;$is_update=false返回待更新的买家留言内容
|
||
*/
|
||
public function update_message($order_id,$add_message='',$op_name='',$old_msg='',$is_update=true){
|
||
$add_message = trim($add_message);
|
||
if (empty($add_message)) return false;
|
||
|
||
return $this->_update_mark_message($order_id,$add_message,$op_name,$old_msg,'custom_mark',$is_update);
|
||
}
|
||
|
||
/**
|
||
* 定义基本的订单类型
|
||
*
|
||
* @return array
|
||
* @author yangminsheng
|
||
**/
|
||
public function get_order_source($type = null)
|
||
{
|
||
|
||
$source = array(
|
||
'local' => '分销王本地订单',
|
||
'fxjl' => '抓抓',
|
||
'taofenxiao' => '淘分销',
|
||
'tbjx' => '淘宝经销',
|
||
'tbdx' => '淘宝代销',
|
||
'secondbuy' => '分销王秒批订单',
|
||
'direct' => '直销订单',
|
||
);
|
||
|
||
if($type){
|
||
return $source[$type];
|
||
}
|
||
|
||
return $source;
|
||
}
|
||
|
||
}
|