Files
OMS/app/omeanalysts/model/ome/zeroSale.php
2025-12-28 23:13:25 +08:00

245 lines
8.2 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 omeanalysts_mdl_ome_zeroSale extends dbeav_model{
var $table_name = 'zero_sale';
/**
* 搜索Options
* @return mixed 返回值
*/
public function searchOptions()
{
return array(
'bn'=>$this->app->_('基础物料编码'),
'name'=>$this->app->_('基础物料名称')
);
}
/**
* table_name
* @param mixed $real real
* @return mixed 返回值
*/
public function table_name($real=false)
{
if($real){
return kernel::database()->prefix.$this->app->app_id.'_'.$this->table_name;
}else{
return $this->table_name;
}
}
/**
* 获取_schema
* @return mixed 返回结果
*/
public function get_schema()
{
$catSaleStatis_model = $this->app->model('zero_sale');
$schema = $catSaleStatis_model->get_schema();
$schema['columns']['store'] = array (
'type' => 'int',
'required' => true,
'label' => '库存',
'width' =>60,
'searchtype' => 'has',
'filtertype' => 'yes',
'filterdefault' => true,
'order' => 6,
);
$schema['in_list'][] = 'store';
$schema['default_in_list'][] = 'store';
return $schema;
}
/**
* count
* @param mixed $filter filter
* @return mixed 返回值
*/
public function count($filter=null){
$store_tablename = 'sdb_omeanalysts_branch_product_stock_detail';
$sql = 'SELECT count(*) c FROM `'.$this->table_name(true).'` AS zero JOIN `'.$store_tablename.'` AS store ON zero.bpsd_id=store.id WHERE '.$this->_filter($filter);
$tmp = $this->db->count($sql);
return $tmp;
}
public function getlist($cols='*', $filter=array(), $offset=0, $limit=-1, $orderType=null){
$store_tablename = 'sdb_omeanalysts_branch_product_stock_detail';
$orderType = $orderType?$orderType:$this->defaultOrder;
$cols = str_replace('`store`,','',$cols);
$sql = 'SELECT zero.branch_id,zero.bn,zero.bpsd_id,zero.type_id,zero.name,zero.brand_id FROM `'.$this->table_name(true).'` AS zero JOIN `'.$store_tablename.'` AS store ON zero.bpsd_id=store.id WHERE '.$this->_filter($filter);
$time_to = strtotime($filter['time_to']);
$sql .= ' GROUP BY zero.branch_id,zero.bn';
if ( date('m',$time_to) >= date('m') ){
$last_day = date("j",time()-24*60*60);
}else{
$last_day = date('t', $time_to);
}
if($orderType){
if ( preg_match('/store/',$orderType) ){
$orderType = str_replace('store','store.day'.$last_day,$orderType);
}
$sql.=' ORDER BY '.(is_array($orderType)?implode($orderType,' '):$orderType);
}else{
$sql.=' ORDER BY zero.`months` desc,store.day'.$last_day.' desc';
}
$data = $this->db->selectLimit($sql,$limit,$offset);
if ($data){
foreach ( $data as $key=>$value ){
$sql = 'SELECT day'.$last_day.' as store FROM `'.$store_tablename.'` WHERE `id`='.$value['bpsd_id'];
$tmp = $this->db->selectrow($sql);
$store = $tmp['store'];
$data[$key]['store'] = $store;
}
}
return $data;
}
/**
* modifier_months
* @param mixed $months months
* @return mixed 返回值
*/
public function modifier_months($months)
{
return substr($months,0,4).'-'.substr($months,4);
}
/**
* _filter
* @param mixed $filter filter
* @param mixed $tableAlias tableAlias
* @param mixed $baseWhere baseWhere
* @return mixed 返回值
*/
public function _filter($filter,$tableAlias=null,$baseWhere=null){
$where = ' AND 1';
// 日期搜索
if ( isset($filter['time_from']) || isset($filter['time_to']) ){
$time_from = date('Ym', strtotime($filter['time_from']));
$time_to = date('Ym', strtotime($filter['time_to']));
// 天数查询条件
if ( date('m',strtotime($filter['time_to'])) >= date('m') ){
$last_day = date("j",time()-24*60*60);
}else{
$last_day = date('t', strtotime($filter['time_to']));
}
$zero = str_pad('0',intval($last_day),'0');
$day_sql = ' AND abs(substr(zero.days,1,'.$last_day.'))=\'0\'';
$where = ' AND zero.`months`>=\''.$time_from.'\' AND zero.`months`<=\''.$time_to.'\''.$day_sql;
}
// 仓库搜索
if ( isset($filter['branch_id']) ){
$filter['type_id'] = $filter['branch_id'];
unset($filter['branch_id']);
}
if ( isset($filter['type_id']) && $filter['type_id'] ){
$where .= ' AND zero.branch_id=\''.$filter['type_id'].'\'';
}
unset($filter['type_id']);
// 货号搜索
if ( isset($filter['bn']) && $filter['bn'] ){
$where .= ' AND zero.bn=\''.$filter['bn'].'\'';
unset($filter['bn']);
}
// 仓库搜索
if ( isset($filter['name']) && $filter['name'] ){
$where .= ' AND zero.name=\''.$filter['name'].'\'';
unset($filter['name']);
}
// 商品类目搜索
if ( isset($filter['goods_type']) ){
$where .= ' AND zero.`type_id` = '.$filter['goods_type'];
unset($filter['goods_type']);
}
return parent::_filter($filter,$tableAlias,$baseWhere) . $where;
}
/**
* export_params
* @return mixed 返回值
*/
public function export_params(){
//获取框架filter信息
$params = unserialize($_POST['params']);
$filter['time_from'] = $params['time_from'];
$filter['time_to'] = $params['time_to'];
$params = array(
'filter' => $filter,
//单文件
'single'=> array(
'1'=> array(
//定义返回主体信息方法提供自定义方法名给method系统会分页调取主体信息
'method' => 'get_export_main',
'offset' => 0,
'limit' => 4000,
//导出文件名
'filename' => '类目销售对比统计',
),
),
);
return $params;
}
/**
* 获取_export_main_title
* @return mixed 返回结果
*/
public function get_export_main_title(){
$title = array(
'col:仓库名称',
'col:货号',
'col:商品类目' ,
'col:商品名称(规格)',
'col:库存' ,
'col:品牌' ,
);
return $title;
}
//注:$filter是在export_params()方法里获取到的filter,$offset,$limit已做处理直接带到getList里即可
/**
* 获取_export_main
* @param mixed $filter filter
* @param mixed $offset offset
* @param mixed $limit limit
* @param mixed $data 数据
* @return mixed 返回结果
*/
public function get_export_main($filter,$offset,$limit,&$data){
$list=$this->getList('*',$filter,$offset*$limit,$limit);
$branchModel = app::get('ome')->model('branch');
$brandModel = app::get('ome')->model('brand');
$goods_typeModel = app::get('ome')->model('goods_type');
foreach($list as $v){
$branchs = $branchModel->dump($v['branch_id'],'name');
$types = $goods_typeModel->dump($v['type_id'],'name');
$brands = $brandModel->dump($v['brand_id'],'brand_name');
//无需返回值,按 模版字段 组织好一维数组 赋给 $data
$data[] = array(
'col:仓库名称' => $branchs['name'],
'col:商品类目' => $types['name'],
'col:货号' => $v['bn'],
'col:商品名称(规格)' => $v['name'],
'col:库存' => $v['store'],
'col:品牌' => $brands['brand_name'],
);
}
}
}