Files
OMS/app/openapi/lib/api/function/v1/sales.php
2025-12-28 23:13:25 +08:00

329 lines
16 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.
*/
class openapi_api_function_v1_sales extends openapi_api_function_abstract implements openapi_api_function_interface
{
/**
* 获取List
* @param mixed $params 参数
* @param mixed $code code
* @param mixed $sub_msg sub_msg
* @return mixed 返回结果
*/
public function getList($params, &$code, &$sub_msg)
{
set_time_limit(0);
ini_set('memory_limit', '512M');
$start_time = strtotime($params['start_time']);
$end_time = strtotime($params['end_time']);
$start_up_time = strtotime($params['modified_start']);
$end_up_time = strtotime($params['modified_end']);
$page_no = intval($params['page_no']) > 0 ? intval($params['page_no']) : 1;
$limit = (intval($params['page_size']) > 1000 || intval($params['page_size']) <= 0) ? 100 : intval($params['page_size']);
//filter
$filter['shop_bn'] = $params['shop_bn'];
if($params['order_bn']){
$filter['order_bn'] = trim($params['order_bn']);
$filter['order_bn'] = str_replace(array('"', "'"), '', $filter['order_bn']);
}
if($start_time && $end_time) {
$filter['sale_time'] = array($start_time, $end_time);
}
if($start_up_time && $end_up_time) {
$filter['up_time'] = array($start_up_time, $end_up_time);
}
if(empty($filter['sale_time']) && empty($filter['up_time'])) {
$sub_msg = '请输入查询时间';
return false;
}
//page
if ($page_no == 1) {
$offset = 0;
} else {
$offset = ($page_no - 1) * $limit;
}
$original_sales_data = kernel::single('openapi_data_original_sales')->getList($filter, $offset, $limit);
$sale_arr = array();
foreach ($original_sales_data['lists'] as $k => $sale) {
$sales_arr[$k]['shop_code'] = $this->charFilter($sale['shop_bn']);
$sales_arr[$k]['shop_name'] = $this->charFilter($sale['shop_name']);
$sales_arr[$k]['order_no'] = $this->charFilter($sale['order_bn']);
$sales_arr[$k]['order_type'] = $this->charFilter($sale['order_type']);
$sales_arr[$k]['member_name'] = $this->charFilter($sale['member_name']);
$sales_arr[$k]['sale_no'] = $this->charFilter($sale['sale_bn']);
$sales_arr[$k]['pay_method'] = $this->charFilter($sale['payment']);
$sales_arr[$k]['sale_time'] = date('Y-m-d H:i:s', $sale['sale_time']);
//订单下单订单日期为空,则输出空值
$sales_arr[$k]['order_create_time'] = (empty($sale['order_create_time']) ? '' : date('Y-m-d H:i:s', $sale['order_create_time']));
$sales_arr[$k]['pay_time'] = date('Y-m-d H:i:s', $sale['paytime']);
$sales_arr[$k]['ship_time'] = date('Y-m-d H:i:s', $sale['ship_time']);
$sales_arr[$k]['order_check_op'] = $this->charFilter($sale['order_check_name']);
$sales_arr[$k]['order_check_time'] = date('Y-m-d H:i:s', $sale['order_check_time']);
$sales_arr[$k]['goods_amount'] = $sale['total_amount'];
$sales_arr[$k]['freight_amount'] = $sale['cost_freight'];
$sales_arr[$k]['additional_amount'] = $sale['additional_costs'];
$sales_arr[$k]['has_tax'] = $sale['is_tax'] == 'false' ? '否' : '是';
$sales_arr[$k]['pmt_amount'] = $sale['discount'];
$sales_arr[$k]['sale_amount'] = $sale['sale_amount'];
$sales_arr[$k]['logi_name'] = $this->charFilter($sale['logi_name']);
$sales_arr[$k]['logi_code'] = $this->charFilter($sale['logi_code']);
$sales_arr[$k]['logi_no'] = $this->charFilter($sale['logi_no']);
$sales_arr[$k]['branch_name'] = $this->charFilter($sale['branch_name']);
$sales_arr[$k]['branch_bn'] = $this->charFilter($sale['branch_bn']);
$sales_arr[$k]['delivery_no'] = $this->charFilter($sale['delivery_bn']);
$sales_arr[$k]['consignee'] = $this->charFilter($sale['ship_name']);
$sales_arr[$k]['consignee_area'] = $sale['ship_area'];
$sales_arr[$k]['consignee_addr'] = $this->charFilter($sale['ship_addr']);
$sales_arr[$k]['consignee_zip'] = $this->charFilter($sale['ship_zip']);
$sales_arr[$k]['consignee_tel'] = $this->charFilter($sale['ship_tel']);
$sales_arr[$k]['consignee_mobile'] = $this->charFilter($sale['ship_mobile']);
$sales_arr[$k]['consignee_email'] = $this->charFilter($sale['ship_email']);
//delivery_cost_actual,order_memo
$sales_arr[$k]['weight'] = $sale['weight'];
$sales_arr[$k]['delivery_cost_actual'] = $sale['delivery_cost_actual'];
$sales_arr[$k]['order_memo'] = $this->charFilter($sale['order_memo']);
$sales_arr[$k]['tax_title'] = $this->charFilter($sale['tax_title']);
//relate_order_bn
$sales_arr[$k]['relate_order_bn'] = $sale['relate_order_bn'];
$sales_arr[$k]['settlement_amount'] = $sale['settlement_amount'];//结算金额
$sales_arr[$k]['platform_amount'] = $sale['platform_amount'];//平台承担金额
$sales_arr[$k]['order_source'] = $sale['order_source'];
// selling agent info
$sales_arr[$k]['agent_info'] = $sale['agent_info'];
foreach ($sale['sale_items'] as $key => $sale_item) {
$sales_arr[$k]['sale_items'][$key]['item_id'] = $sale_item['item_id'];
$sales_arr[$k]['sale_items'][$key]['bn'] = $sale_item['bn'];
$sales_arr[$k]['sale_items'][$key]['name'] = $this->charFilter($sale_item['name']);
$sales_arr[$k]['sale_items'][$key]['spec_name'] = $this->charFilter($sale_item['spec_name']);
$sales_arr[$k]['sale_items'][$key]['barcode'] = $sale_item['barcode'];
$sales_arr[$k]['sale_items'][$key]['price'] = $sale_item['price'];
$sales_arr[$k]['sale_items'][$key]['nums'] = $sale_item['nums'];
$sales_arr[$k]['sale_items'][$key]['pmt_price'] = $sale_item['pmt_price'];
$sales_arr[$k]['sale_items'][$key]['sale_price'] = $sale_item['sale_price'];
$sales_arr[$k]['sale_items'][$key]['apportion_pmt'] = $sale_item['apportion_pmt'];
$sales_arr[$k]['sale_items'][$key]['sales_amount'] = $sale_item['sales_amount'];
$sales_arr[$k]['sale_items'][$key]['cost'] = $sale_item['cost'];
$sales_arr[$k]['sale_items'][$key]['cost_amount'] = $sale_item['cost_amount'];
$sales_arr[$k]['sale_items'][$key]['order_item_id'] = $sale_item['order_item_id'];
$sales_arr[$k]['sale_items'][$key]['item_type'] = $this->charFilter($sale_item['item_type']);
//关联销售物料
$sales_arr[$k]['sale_items'][$key]['type_name'] = $this->charFilter($sale_item['type_name']);
$sales_arr[$k]['sale_items'][$key]['sales_material_bn'] = $this->charFilter($sale_item['sales_material_bn']);
$sales_arr[$k]['sale_items'][$key]['sales_material_name'] = $this->charFilter($sale_item['sales_material_name']);
//商品采购成本价
$sales_arr[$k]['sale_items'][$key]['cost_amount'] = $sale_item['cost_amount'];
//基础物料价格
$sales_arr[$k]['sale_items'][$key]['retail_price'] = $sale_item['retail_price'];
//other
$sales_arr[$k]['sale_items'][$key]['brand_code'] = $sale_item['brand_code']; //物料品牌
$sales_arr[$k]['sale_items'][$key]['cat_name'] = $this->charFilter($sale_item['cat_name']); //物料分类
$sales_arr[$k]['sale_items'][$key]['goods_type'] = $this->charFilter($sale_item['goods_type']); //物料属性
$sales_arr[$k]['sale_items'][$key]['shop_goods_id'] = $sale_item['shop_goods_id'];//平台商品ID
$sales_arr[$k]['sale_items'][$key]['shop_product_id'] = $sale_item['shop_product_id'];//平台SkuID
$sales_arr[$k]['sale_items'][$key]['settlement_amount'] = $sale_item['settlement_amount'];//结算金额
$sales_arr[$k]['sale_items'][$key]['platform_amount'] = $sale_item['platform_amount'];//平台承担金额
// 如果 $i_v 是 null则返回空字符串否则返回原始值
$sales_arr[$k]['sale_items'][$key] = array_map(function($i_v) {return is_null($i_v) ? '' : $i_v;}, $sales_arr[$k]['sale_items'][$key]);
}
// 如果 $v 是 null则返回空字符串否则返回原始值
$sales_arr[$k] = array_map(function($v) {return is_null($v) ? '' : $v;}, $sales_arr[$k]);
}
unset($original_sales_data['lists']);
$original_sales_data['lists'] = $sales_arr;
return $original_sales_data;
}
/**
* 添加
* @param mixed $params 参数
* @param mixed $code code
* @param mixed $sub_msg sub_msg
* @return mixed 返回值
*/
public function add($params, &$code, &$sub_msg)
{
//==
}
/**
* 获取SalesAmount
* @param mixed $params 参数
* @param mixed $code code
* @param mixed $sub_msg sub_msg
* @return mixed 返回结果
*/
public function getSalesAmount($params, &$code, &$sub_msg)
{
$start_time = strtotime($params['start_time']);
$end_time = strtotime($params['end_time']);
$page_no = intval($params['page_no']) > 0 ? intval($params['page_no']) : 1;
$limit = (intval($params['page_size']) > 100 || intval($params['page_size']) <= 0) ? 100 : intval($params['page_size']);
if ($page_no == 1) {
$offset = 0;
} else {
$offset = ($page_no - 1) * $limit;
}
$shop_bn = array();
if ($params['shop_bn']) {
$all_shop_bn = explode('#', $params['shop_bn']);
foreach ($all_shop_bn as $v) {
if (trim($v)) {
$shop_bn[] = trim($v);
}
}
}
$original_sales_data = kernel::single('openapi_data_original_sales')->SalesAmount($start_time, $end_time, $offset, $limit, $shop_bn);
return $original_sales_data;
}
/**
* 销售发货明细
*
* @return Array
* @author CP
* @version 4.3.9 2021-08-14T10:39:02+08:00
**/
public function getDeliveryList($params, &$code, $sub_msg)
{
set_time_limit(0);
ini_set('memory_limit', '512M');
$deliveryStartTime = strtotime($params['start_time']);
$deliveryEndTime = strtotime($params['end_time']);
$pageNo = intval($params['page_no']) > 0 ? intval($params['page_no']) : 1;
$pageSize = (intval($params['page_size']) > 1000 || intval($params['page_size']) <= 0) ? 100 : intval($params['page_size']);
$filter = [
'delivery_time|bthan' => $deliveryStartTime,
'delivery_time|lthan' => $deliveryEndTime,
];
if ($params['delivery_bn']) {
$filter['delivery_bn'] = $params['delivery_bn'];
}
if ($params['branch_bn']) {
$branchMdl = app::get('ome')->model('branch');
$branch = $branchMdl->db_dump(['branch_bn' => $params['branch_bn'], 'check_permission' => 'false'], 'branch_id');
$filter['branch_id'] = (int) $branch['branch_id'];
}
if ($params['shop_bn']) {
$shopMdl = app::get('ome')->model('shop');
$shop = $shopMdl->db_dump(['shop_bn' => $params['shop_bn']], 'shop_id');
$filter['shop_id'] = (string) $shop['shop_id'];
}
if ($params['order_bn']) {
$orderMdl = app::get('ome')->model('orders');
$orderList = $orderMdl->getList('order_id', ['order_bn' => explode(',', $params['order_bn'])]);
$order_id = $orderList ? array_column($orderList, 'order_id') : [0];
$deliveryOrderMdl = app::get('ome')->model('delivery_order');
$deliveryOrderList = $deliveryOrderMdl->getList('delivery_id', ['order_id' => $order_id]);
$filter['delivery_id'] = $deliveryOrderList ? array_column($deliveryOrderList, 'delivery_id') : [0];
}
$data = kernel::single('openapi_data_original_sales')->getDeliveryList($filter, ($pageNo - 1) * $pageSize, $pageSize);
foreach ($data['lists'] as $k => $v) {
$data['lists'][$k]['ship_name'] = $this->charFilter($v['ship_name']);
$data['lists'][$k]['ship_mobile'] = $this->charFilter($v['ship_mobile']);
$data['lists'][$k]['ship_email'] = $this->charFilter($v['ship_email']);
$data['lists'][$k]['ship_addr'] = $this->charFilter($v['ship_addr']);
}
return $data;
}
/**
* 获取JIT销售单
*
* @return array
**/
public function getGxList($params, &$code, &$sub_msg)
{
$start_modified = $params['start_time'];
$end_modified = $params['end_time'];
$page_no = intval($params['page_no']) > 0 ? intval($params['page_no']) : 1;
$limit = (intval($params['page_size']) > 1000 || intval($params['page_size']) <= 0) ? 100 : intval($params['page_size']);
$filter = [];
$filter['up_time|betweenstr'] = [$start_modified, $end_modified];
$offset = ($page_no - 1) * $limit;
$originalData = kernel::single('openapi_data_original_sales')->getGxList($filter, $offset, $limit);
$data = [
'count' => $originalData['count'],
];
foreach ($originalData['lists'] as $k => $v) {
$lists = [
'sale_bn' => $v['sale_bn'],
'bill_bn' => $v['bill_bn'],
'bill_type' => $v['bill_type'],
'shop_bn' => $v['shop_bn'],
'shop_name' => $v['shop_name'],
'sale_time' => date('Y-m-d H:i:s',$v['sale_time']),
'ship_time' => date('Y-m-d H:i:s',$v['ship_time']),
'original_bn' => $v['original_bn'],
'branch_bn' => $v['branch_bn'],
'branch_name' => $v['branch_name'],
'logi_name' => $v['logi_name'],
'logi_code' => $v['logi_code'],
'logi_no' => $v['logi_no'],
'order_bn' => $v['order_bn'],
'at_time' => $v['at_time'],
'up_time' => $v['up_time'],
'total_amount' => $v['total_amount'],
'settlement_amount' => $v['settlement_amount'],
'total_sale_price' => $v['total_sale_price'],
];
$items = [];
foreach ($v['items'] as $item) {
$items[] = [
'item_id' => $item['id'],
'material_bn' => $item['material_bn'],
'barcode' => $item['barcode'],
'material_name' => $this->charFilter($item['material_name']),
'nums' => $item['nums'],
'retail_price' => $item['retail_price'],
'price' => $item['price'],
'amount' => $item['amount'],
'settlement_amount' => $item['settlement_amount'],
'sale_price' => $item['sale_price'],
];
}
$lists['items'] = $items;
$data['lists'][] = $lists;
}
return $data;
}
}