Files
OMS/app/material/model/sales/list.php
2026-01-04 19:08:31 +08:00

146 lines
5.1 KiB
PHP

<?php
/**
* Copyright 2012-2026 ShopeX (https://www.shopex.cn)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
class material_mdl_sales_list extends material_mdl_sales_material
{
/**
* table_name
* @param mixed $real real
* @return mixed 返回值
*/
public function table_name($real = false)
{
$table_name = 'sales_material';
if ($real) {
return kernel::database()->prefix . $this->app->app_id . '_' . $table_name;
} else {
return $table_name;
}
}
/**
* 获取_schema
* @return mixed 返回结果
*/
public function get_schema()
{
$schema = parent::get_schema();
$mySchema = array(
0 => array(
'name' => '仓库名',
'column' => 'name'
),
1 => array(
'name' => '库存',
'column' => 'store'
),
);
foreach ($schema['columns'] as $key => &$value) {
if (isset($value['pkey'])) {
unset($value['pkey']);
}
}
foreach ($mySchema as $key => $value) {
$index = 'fields_'.$value['column'];
$schema['columns'][$index] = array (
'type' => 'varchar(30)',
'label' => $value['name'],
'fields_info' => $value,
'order' => '1' . $key,
'orderby' => false
);
$schema['default_in_list'][] = $index;
$schema['in_list'][] = $index;
}
return $schema;
}
public function getlist($cols='*', $filter=array(), $offset=0, $limit=-1, $orderby=null) {
if (strpos($cols, 'fields_') !== false) {
$fields = explode(',', $cols);
foreach ($fields as $key => $value) {
$value = str_replace('`', '', $value);
if($this->schema['columns'][$value]['fields_info']) {
if ($this->schema['columns'][$value]['fields_info']['column'] == 'store') {
$fields[$key] = 'sobp.'.$this->schema['columns'][$value]['fields_info']['column'].' as '.$value;
}else {
$fields[$key] = 'sob.'.$this->schema['columns'][$value]['fields_info']['column'].' as '.$value;
}
}
if ($value == 'sm_id') {
$fields[$key] = 'smsm.'.$value;
}
}
$cols = implode(',', $fields);
$cols .= ',sob.branch_id';
}
if (isset($filter['plimit'])) {
$limit = $filter['plimit'];
unset($filter['plimit']);
}
foreach ($filter as $key => $value) {
if (is_array($value)) {
$where .= ' and smsm.'.$key.' in (\''.implode("','", $value).'\')';
} else {
$where .= ' and smsm.'.$key.' = \''.$value.'\'';
}
}
$sql = 'select '.$cols.'
from sdb_material_sales_material smsm
left join sdb_material_sales_basic_material smsbm on smsm.sm_id = smsbm.sm_id
left join sdb_material_basic_material smbm on smbm.bm_id = smsbm.bm_id
left join sdb_ome_branch_product sobp on sobp.product_id = smbm.bm_id
left join sdb_ome_branch sob on sob.branch_id = sobp.branch_id
where sobp.product_id is not null and sobp.store != 0 '.$where.'
group by smsm.sm_id, sob.name';
$branchRows = $this->db->selectLimit($sql,$limit,$offset);
foreach ($branchRows as $k => $v) {
$branchRows[$k]['sm_id'] .= '_'.$v['branch_id'];
}
return $branchRows;
}
/**
* count
* @param mixed $filter filter
* @return mixed 返回值
*/
public function count($filter = null) {
$where = '';
if (isset($filter['shop_id'])) {
$where .= ' and smsm.shop_id in (\''.implode("','", $filter['shop_id']).'\')';
}
if (isset($filter['is_bind'])) {
$where .= ' and smsm.is_bind = '.$filter['is_bind'];
}
$sql = 'select count(*) as _count from(select count(*)
from sdb_material_sales_material smsm
left join sdb_material_sales_basic_material smsbm on smsm.sm_id = smsbm.sm_id
left join sdb_material_basic_material smbm on smbm.bm_id = smsbm.bm_id
left join sdb_ome_branch_product sobp on sobp.product_id = smbm.bm_id
left join sdb_ome_branch sob on sob.branch_id = sobp.branch_id
where sobp.product_id is not null
and sobp.store != 0
'.$where.'
group by smsm.sm_id, sob.name) s';
$row = $this->db->select($sql);
return intval($row[0]['_count']);
}
}