<?php
namespace app \index \controller ;
use think\Request;
use app\index\controller\Acl;
use app\index\model\Formfield;
use app\index\model\User;
use app\index\model\Customer;
use app\index\model\Account;
use app\index\model\Merchant;
use app\index\model\Supplier;
use app\index\model\Warehouse;
use app\index\model\Unit;
use app\index\model\Brand;
use app\index\model\Goods;
use app\index\model\Attr;
use app\index\model\Room;
use app\index\model\Roominfo;
use app\index\model\Serial;
use app\index\model\Serialinfo;
use app\index\model\Serve;
use app\index\model\Summary;
use app\index\model\Saleclass;
use app\index\model\Purchaseclass;
use app\index\model\Rpurchaseclass;
class Service extends Acl {
public function get_sys_ver(){
$re['state']="success";
$re['info']=[
'now_ver'=>get_ver()
];
return json($re);
}
public function user_list(){
$input=input('post.');
if(isset_full($input,'page') && isset_full($input,'limit')){
$sql=get_sql($input,[
'data'=>'full_name_py_link'
],'user') isset_full($input,'notauth')||($sql=auth('user',$sql)) $count = User::where ($sql)->count() $arr = User::where($sql)->page($input['page'],$input['limit'])->order('id desc')->select() $resule=[
'state'=>'success',
'code'=>0,
'msg'=>'获取成功',
'count'=>$count,
'data'=>$arr
] }else{
$resule=['state'=>'error','info'=>'传入参数不完整!'];
}
return json($resule);
}
public function customer_list(){
$input=input('post.');
if(isset_full($input,'page') && isset_full($input,'limit')){
$sql=get_sql($input,[
'data'=>'full_name_py_link'
],'customer') isset_full($input,'notauth')||($sql=auth('customer',$sql)) $count = Customer::where ($sql)->count() $arr = Customer::where($sql)->page($input['page'],$input['limit'])->order('id desc')->select() $resule=[
'state'=>'success',
'code'=>0,
'msg'=>'获取成功',
'count'=>$count,
'data'=>$arr
] }else{
$resule=['state'=>'error','info'=>'传入参数不完整!'];
}
return json($resule);
}
public function account_list(){
$input=input('post.');
if(isset_full($input,'page') && isset_full($input,'limit')){
$sql=get_sql($input,[
'data'=>'full_name_py_link'
],'account') isset_full($input,'notauth')||($sql=auth('account',$sql)) $count = Account::where ($sql)->count() $arr = Account::where($sql)->page($input['page'],$input['limit'])->order('id desc')->select() $resule=[
'state'=>'success',
'code'=>0,
'msg'=>'获取成功',
'count'=>$count,
'data'=>$arr
] }else{
$resule=['state'=>'error','info'=>'传入参数不完整!'];
}
return json($resule);
}
public function merchant_list(){
$input=input('post.');
if(isset_full($input,'page') && isset_full($input,'limit')){
$sql=get_sql($input,[
'data'=>'full_name_py_link'
],'merchant') isset_full($input,'notauth')||($sql=auth('merchant',$sql)) $count = Merchant::where ($sql)->count() $arr = Merchant::where($sql)->page($input['page'],$input['limit'])->order('id desc')->select() $resule=[
'state'=>'success',
'code'=>0,
'msg'=>'获取成功',
'count'=>$count,
'data'=>$arr
] }else{
$resule=['state'=>'error','info'=>'传入参数不完整!'];
}
return json($resule);
}
public function supplier_list(){
$input=input('post.');
if(isset_full($input,'page') && isset_full($input,'limit')){
$sql=get_sql($input,[
'data'=>'full_name_py_link'
],'supplier') isset_full($input,'notauth')||($sql=auth('supplier',$sql)) $count = Supplier::where ($sql)->count() $arr = Supplier::where($sql)->page($input['page'],$input['limit'])->order('id desc')->select() $resule=[
'state'=>'success',
'code'=>0,
'msg'=>'获取成功',
'count'=>$count,
'data'=>$arr
] }else{
$resule=['state'=>'error','info'=>'传入参数不完整!'];
}
return json($resule);
}
public function warehouse_list(){
$input=input('post.');
if(isset_full($input,'page') && isset_full($input,'limit')){
$sql=get_sql($input,[
'data'=>'full_name_py_link'
],'warehouse') isset_full($input,'notauth')||($sql=auth('warehouse',$sql)) $count = Warehouse::where ($sql)->count() $arr = Warehouse::where($sql)->page($input['page'],$input['limit'])->order('id desc')->select() $resule=[
'state'=>'success',
'code'=>0,
'msg'=>'获取成功',
'count'=>$count,
'data'=>$arr
] }else{
$resule=['state'=>'error','info'=>'传入参数不完整!'];
}
return json($resule);
}
public function unit_list(){
$input=input('post.');
if(isset_full($input,'page') && isset_full($input,'limit')){
$sql=get_sql($input,[
'data'=>'full_name_py_link'
],'unit') $count = Unit::where ($sql)->count() $arr = Unit::where($sql)->page($input['page'],$input['limit'])->order('id desc')->select() $resule=[
'state'=>'success',
'code'=>0,
'msg'=>'获取成功',
'count'=>$count,
'data'=>$arr
] }else{
$resule=['state'=>'error','info'=>'传入参数不完整!'];
}
return json($resule);
}
public function brand_list(){
$input=input('post.');
if(isset_full($input,'page') && isset_full($input,'limit')){
$sql=get_sql($input,[
'data'=>'full_name_py_link'
],'brand') $count = Brand::where ($sql)->count() $arr = Brand::where($sql)->page($input['page'],$input['limit'])->order('id desc')->select() $resule=[
'state'=>'success',
'code'=>0,
'msg'=>'获取成功',
'count'=>$count,
'data'=>$arr
] }else{
$resule=['state'=>'error','info'=>'传入参数不完整!'];
}
return json($resule);
}
public function get_merchant(){
$nod=get_sys_merchant() $info=gets_selectpage('merchant',$nod) return json(['state'=>'success','info'=>$info]);
}
public function set_merchant(){
$input=input('post.');
if(isset($input['merchant'])){
if(empty($input['merchant'])){
Session('is_merchant_info',[]);
}else{
Session('is_merchant_info',explode(',',$input['merchant']));
}
$resule=['state'=>'success','info'=>'设置成功!'];
}else{
$resule=['state'=>'error','info'=>'传入参数不完整!'];
}
return json($resule);
}
public function base_goods_list(){
$input=input('post.');
if(isset_full($input,'page') && isset_full($input,'limit')){
$sql=get_sql($input,[
'name'=>'full_name_py_link',
'code'=>'full_eq',
'spec'=>'full_like',
'class'=>'full_goodsclass_tree_sub',
'brand'=>'full_eq',
'unit'=>'full_eq',
'number'=>'full_like',
'location'=>'full_like',
'data'=>'full_like'
],'goods') $whereor_sql=[] if(isset_full($input,'code')){
$attr=Attr::where(['code'=>$input['code'],'enable'=>1])->select()->ToArray() empty($attr)||(sql_assign($whereor_sql,'id',arraychange($attr,'pid'))) }
$count = Goods::where ($sql)->whereor($whereor_sql)->count() $arr = Goods::with('classinfo,unitinfo,brandinfo,warehouseinfo,attrinfo')->where($sql)->whereor($whereor_sql)->page($input['page'],$input['limit'])->order('id desc')->select() foreach ($arr as $key=>$vo) {
$arr[$key]['img']=empty($vo['imgs'])?'/skin/images/main/none.png':$vo['imgs'][0] if(isset($attr) && !empty($attr)){
$code=searchdata($attr,['pid'=>['eq',$vo['id']]]);
if(count($code)==1){
$arr[$key]['attr']=$code[0];
}
}
}
$resule=[
'code'=>0,
'msg'=>'获取成功',
'count'=>$count,
'data'=>$arr
] }else{
$resule=['state'=>'error','info'=>'传入参数不完整!'];
}
return json($resule);
}
public function upload_file(Request $request){
$file=$request->file('file') if (empty($file)){
$resule=['state'=>'error','info'=>'传入数据不完整!'];
}else{
$nod=$file->validate (['size'=>6097152,'ext'=>'png,jpg,pdf,zip,7z,rar,doc,docs,xls,xlsx'])->rule ('uniqid')->move (ROOT_PATH .'skin'.DS .'upload'.DS .'file');
if ($nod){
$file_name=$nod->getSaveName ();
$file_path='/skin/upload/file/'.$file_name;
$resule=['state'=>'success','info'=>$file_path];
}else {
$resule=['state'=>'error','info'=>$file->getError()] }
}
return json ($resule);
}
public function room_goods_list(){
$input=input('post.');
if(isset_full($input,'page') && isset_full($input,'limit')){
$room_sql=[] $goods_sql=get_sql($input,[
'name'=>'full_name_py_link',
'code'=>'full_eq',
'spec'=>'full_like',
'class'=>'full_goodsclass_tree_sub',
'brand'=>'full_eq',
'number'=>'full_like',
'warehouse'=>'continue',
'data'=>'full_like'
],'goods') $goods_whereor_sql=[] if(isset_full($input,'code')){
$attr=Attr::where(['code'=>$input['code'],'enable'=>1])->select()->ToArray() if(!empty($attr)){
sql_assign($goods_whereor_sql,'id',arraychange($attr,'pid')) sql_assign($room_sql,'attr',arraychange($attr,'nod')) }
}
$goods=Goods::where($goods_sql)->whereor($goods_whereor_sql)->select()->ToArray() sql_assign($room_sql,'goods',arraychange($goods,'id')) if(isset_full($input,'serial')){
$serial=get_db_field('serial',['code'=>['like','%'.$input['serial'].'%'],'type'=>0],'room') sql_assign($room_sql,'id',$serial) }
isset_full($input,'warehouse')&&($room_sql['warehouse']=$input['warehouse']) isset_full($input,'batch')&&($room_sql['batch']=$input['batch']) $room_sql=auth('room',$room_sql) $count = Room::where ($room_sql)->count() $arr = Room::with('warehouseinfo,goodsinfo,serialinfo')->where($room_sql)->page($input['page'],$input['limit'])->order('goods desc')->select()->ToArray() foreach ($arr as $key=>$vo) {
$arr[$key]['goodsinfo']['img']=empty($vo['goodsinfo']['imgs'])?'/skin/images/main/none.png':$vo['goodsinfo']['imgs'][0] if(!empty($vo['attr']['nod']) && $vo['attr']['name']!='辅助属性丢失'){
$attr=Attr::where(['pid'=>$vo['goods'],'nod'=>$vo['attr']['nod']])->find();
$arr[$key]['goodsinfo']['buy']=$attr['buy'];
$arr[$key]['goodsinfo']['sell']=$attr['sell'];
$arr[$key]['goodsinfo']['retail']=$attr['retail'];
}
$serial=searchdata($vo['serialinfo'],['type|nod'=>['eq', isset_full($input,'serialtype')?$input['serialtype']:0]]) $arr[$key]['serialinfo']=implode(",",arraychange($serial,'code'));
}
$resule=[
'code'=>0,
'msg'=>'获取成功',
'count'=>$count,
'data'=>$arr
] }else{
$resule=['state'=>'error','info'=>'传入参数不完整!'];
}
return json($resule);
}
public function cashier_room_list(){
$input=input('post.');
if(isset_full($input,'page')&& isset_full($input,'limit') && isset($input['info'])){
$room_sql=[] if(!empty($input['info'])){
$goods_sql=['name|py|code'=>['like','%'.$input['info'].'%']];
$goods_whereor_sql=[];
$attr=Attr::where(['code'=>$input['info'],'enable'=>1])->select()->ToArray() empty($attr)||(sql_assign($goods_whereor_sql,'id',arraychange($attr,'pid'))) if(empty($attr)){
$goods=Goods::where($goods_sql)->select()->ToArray() }else{
$goods=Goods::where(['id'=>['in',arraychange($attr,'pid')]])->select()->ToArray() sql_assign($room_sql,'attr',arraychange($attr,'nod')) }
sql_assign($room_sql,'goods',arraychange($goods,'id'));
}
$room_sql=auth('room',$room_sql) $count = Room::where ($room_sql)->count() $arr = Room::with('warehouseinfo,goodsinfo,serialinfo')->where($room_sql)->page($input['page'],$input['limit'])->order('goods desc')->select()->ToArray() foreach ($arr as $key=>$vo) {
$arr[$key]['goodsinfo']['img']=empty($vo['goodsinfo']['imgs'])?'/skin/images/main/none.png':$vo['goodsinfo']['imgs'][0] if(!empty($vo['attr']['nod']) && $vo['attr']['name']!='辅助属性丢失'){
$attr=Attr::where(['pid'=>$vo['goods'],'nod'=>$vo['attr']['nod']])->find();
$arr[$key]['goodsinfo']['buy']=$attr['buy'];
$arr[$key]['goodsinfo']['sell']=$attr['sell'];
$arr[$key]['goodsinfo']['retail']=$attr['retail'];
}
$serial=searchdata($vo['serialinfo'],['type|nod'=>['eq',0]]) $arr[$key]['serialinfo']=implode(",",arraychange($serial,'code'));
}
$resule=[
'code'=>0,
'msg'=>'获取成功',
'count'=>$count,
'data'=>$arr
] }else{
$resule=['state'=>'error','info'=>'传入参数不完整!'];
}
return json($resule);
}
public function serve_list(){
$input=input('post.');
if(isset_full($input,'page') && isset_full($input,'limit')){
$sql=get_sql($input,[
'name'=>'full_name_py_link',
'data'=>'full_like'
],'serve') $count = Serve::where ($sql)->count() $arr = Serve::where($sql)->page($input['page'],$input['limit'])->order('id desc')->select() $resule=[
'code'=>0,
'msg'=>'获取成功',
'count'=>$count,
'data'=>$arr
] }else{
$resule=['state'=>'error','info'=>'传入参数不完整!'];
}
return json($resule);
}
public function room_list(){
$input=input('post.');
if(isset_full($input,'page') && isset_full($input,'limit')){
$room_sql=[] $goods_sql=get_sql($input,[
'name'=>'full_name_py_link',
'code'=>'full_eq',
'spec'=>'full_like',
'class'=>'full_goodsclass_tree_sub',
'brand'=>'full_eq',
'number'=>'full_like',
'warehouse'=>'continue',
'data'=>'full_like'
],'goods') $goods_whereor_sql=[] if(isset_full($input,'code')){
$attr=Attr::where(['code'=>$input['code'],'enable'=>1])->select()->ToArray() if(!empty($attr)){
sql_assign($goods_whereor_sql,'id',arraychange($attr,'pid')) sql_assign($room_sql,'attr',arraychange($attr,'nod')) }
}
$goods=Goods::where($goods_sql)->whereor($goods_whereor_sql)->select()->ToArray() sql_assign($room_sql,'goods',arraychange($goods,'id')) isset_full($input,'warehouse')&&($room_sql['warehouse']=$input['warehouse']) isset_full($input,'batch')&&($room_sql['batch']=$input['batch']) $room_sql=auth('room',$room_sql) $count = Room::where ($room_sql)->count() $arr = Room::with('warehouseinfo,goodsinfo')->where($room_sql)->page($input['page'],$input['limit'])->order('goods desc')->select()->ToArray() foreach ($arr as $key=>$vo) {
$arr[$key]['goodsinfo']['img']=empty($vo['goodsinfo']['imgs'])?'/skin/images/main/none.png':$vo['goodsinfo']['imgs'][0] if(!empty($vo['attr']['nod']) && $vo['attr']['name']!='辅助属性丢失'){
$attr=Attr::where(['pid'=>$vo['goods'],'nod'=>$vo['attr']['nod']])->find();
$arr[$key]['goodsinfo']['buy']=$attr['buy'];
$arr[$key]['goodsinfo']['sell']=$attr['sell'];
$arr[$key]['goodsinfo']['retail']=$attr['retail'];
}
}
$resule=[
'code'=>0,
'msg'=>'获取成功',
'count'=>$count,
'data'=>$arr
] }else{
$resule=['state'=>'error','info'=>'传入参数不完整!'];
}
return json($resule);
}
public function export_room(){
$input=input('get.');
$room_sql=[] $goods_sql=get_sql($input,[
'name'=>'full_name_py_link',
'code'=>'full_eq',
'spec'=>'full_like',
'class'=>'full_goodsclass_tree_sub',
'brand'=>'full_eq',
'number'=>'full_like',
'warehouse'=>'continue',
'data'=>'full_like'
],'goods') $goods_whereor_sql=[] if(isset_full($input,'code')){
$attr=Attr::where(['code'=>$input['code'],'enable'=>1])->select()->ToArray() if(!empty($attr)){
sql_assign($goods_whereor_sql,'id',arraychange($attr,'pid')) sql_assign($room_sql,'attr',arraychange($attr,'nod')) }
}
$goods=Goods::where($goods_sql)->whereor($goods_whereor_sql)->select()->ToArray() sql_assign($room_sql,'goods',arraychange($goods,'id')) isset_full($input,'warehouse')&&($room_sql['warehouse']=$input['warehouse']) isset_full($input,'batch')&&($room_sql['batch']=$input['batch']) $room_sql=auth('room',$room_sql) $count = Room::where ($room_sql)->count() $arr = Room::with('warehouseinfo,goodsinfo')->where($room_sql)->order('goods desc')->select()->ToArray() foreach ($arr as $key=>$vo) {
if(!empty($vo['attr']['nod']) && $vo['attr']['name']!='辅助属性丢失'){
$attr=Attr::where(['pid'=>$vo['goods'],'nod'=>$vo['attr']['nod']])->find();
$arr[$key]['goodsinfo']['buy']=$attr['buy'];
$arr[$key]['goodsinfo']['sell']=$attr['sell'];
$arr[$key]['goodsinfo']['retail']=$attr['retail'];
}
}
$formfield=get_formfield('room_export','array') $excel=[] array_push($excel,['type'=>'title','info'=>'库存列表']);
$table_cell=[] foreach ($formfield as $formfield_vo) {
$table_cell[$formfield_vo['key']]=$formfield_vo['text'];
}
$table_data=[] foreach ($arr as $arr_vo) {
$row_data=[];
foreach ($formfield as $formfield_vo) {
$val='nod_initial' foreach (explode('|',$formfield_vo['data']) as $source) {
$val=$val=='nod_initial'?$arr_vo[$source]:(isset($val[$source])?$val[$source]:'');
}
$row_data[$formfield_vo['key']]=$val }
array_push($table_data,$row_data) }
array_push($excel,['type'=>'table','info'=>['cell'=>$table_cell,'data'=>$table_data]]) $sum_arr=get_sums($table_data,['nums']);
array_push($excel,['type'=>'node','info'=>[
'库存总数量:'.$sum_arr['nums'],
]]) push_log('导出库存信息') export_excel('库存列表',$excel);
}
public function roominfo_list(){
$input=input('post.');
if(isset_full($input,'page') && isset_full($input,'limit') && isset_full($input,'pid')){
$sql=get_sql($input,[
'pid'=>'full_eq',
'type'=>'full_eq',
'start_time'=>'continue',
'end_time'=>'continue'
],'roominfo') $data = Roominfo::with('typedata')->where($sql)->order('id desc')->select() $morphto_sql['merchant']=['in',get_auth_merchant()] isset_full($input,'number')&&($morphto_sql['number']=['like','%'.$input['number'].'%']) isset_full($input,'user')&&($morphto_sql['user']=['in',explode(',',$input['user'])]) isset_full($input,'data')&&($morphto_sql['data']=['like','%'.$input['data'].'%']) if(isset_full($input,'start_time') && !isset_full($input,'end_time')){
$morphto_sql['time']=['egt',strtotime($input['start_time'])] }elseif(isset_full($input,'end_time') && !isset_full($input,'start_time')){
$morphto_sql['time']=['elt',strtotime($input['end_time'])+86399] }elseif(isset_full($input,'start_time') && isset_full($input,'end_time')){
$morphto_sql['time']=[
['egt',strtotime($input['start_time'])] ['elt',strtotime($input['end_time'])+86399 ];
}
$arr=[] foreach ($data as $vo) {
$morphto_sql['id']=$vo['typedata']['id'];
$find=$vo['typedata']->where($morphto_sql)->find();
if(!empty($find)){
$vo['typedata']['merchantinfo']=$vo->typedata->merchantinfo $vo['typedata']['userinfo']=$vo->typedata->userinfo array_push($arr,$vo);
}
}
$count =count($arr);
$page=$input['page'];
$limit=$input['limit'];
$arr = array_slice($arr,$limit*($page-1),$limit);
$resule=[
'state'=>'success',
'code'=>0,
'msg'=>'获取成功',
'count'=>$count,
'data'=>$arr
] }else{
$resule=['state'=>'error','info'=>'传入参数不完整!'];
}
return json($resule);
}
public function export_roominfo(){
$input=input('get.');
if(isset_full($input,'pid')){
$sql=get_sql($input,[
'pid'=>'full_eq',
'type'=>'full_eq',
'start_time'=>'continue',
'end_time'=>'continue'
],'roominfo') $data = Roominfo::with('typedata')->where($sql)->order('id desc')->select() $morphto_sql['merchant']=['in',get_auth_merchant()] isset_full($input,'number')&&($morphto_sql['number']=['like','%'.$input['number'].'%']) isset_full($input,'user')&&($morphto_sql['user']=['in',explode(',',$input['user'])]) isset_full($input,'data')&&($morphto_sql['data']=['like','%'.$input['data'].'%']) if(isset_full($input,'start_time') && !isset_full($input,'end_time')){
$morphto_sql['time']=['egt',strtotime($input['start_time'])] }elseif(isset_full($input,'end_time') && !isset_full($input,'start_time')){
$morphto_sql['time']=['elt',strtotime($input['end_time'])+86399] }elseif(isset_full($input,'start_time') && isset_full($input,'end_time')){
$morphto_sql['time']=[
['egt',strtotime($input['start_time'])] ['elt',strtotime($input['end_time'])+86399 ];
}
$arr=[] foreach ($data as $vo) {
$morphto_sql['id']=$vo['typedata']['id'];
$find=$vo['typedata']->where($morphto_sql)->find();
if(!empty($find)){
$vo['typedata']['merchantinfo']=$vo->typedata->merchantinfo $vo['typedata']['userinfo']=$vo->typedata->userinfo array_push($arr,$vo);
}
}
$room=Room::where(['id'=>$input['pid']])->find();
$formfield=get_formfield('roominfo_export','array') $excel=[] array_push($excel,['type'=>'title','info'=>'商品['.$room['goodsinfo']['name'].']库存详情']);
$table_cell=[] foreach ($formfield as $formfield_vo) {
$table_cell[$formfield_vo['key']]=$formfield_vo['text'];
}
$table_data=[] foreach ($arr as $arr_vo) {
$row_data=[];
foreach ($formfield as $formfield_vo) {
$val='nod_initial' foreach (explode('|',$formfield_vo['data']) as $source) {
$val=$val=='nod_initial'?$arr_vo[$source]:(isset($val[$source])?$val[$source]:'');
}
$row_data[$formfield_vo['key']]=$val }
array_push($table_data,$row_data) }
array_push($excel,['type'=>'table','info'=>['cell'=>$table_cell,'data'=>$table_data]]) push_log('导出库存信息') export_excel('库存列表',$excel);
}else{
return json(['state'=>'error','info'=>'传入参数不完整!']);
}
}
public function roomwarning_list(){
$input=input('post.');
if(isset_full($input,'page') && isset_full($input,'limit')){
$room_sql=[] $goods_sql=get_sql($input,[
'name'=>'full_name_py_link',
'code'=>'full_eq',
'spec'=>'full_like',
'class'=>'full_goodsclass_tree_sub',
'brand'=>'full_eq',
'number'=>'full_like',
'warehouse'=>'continue',
'data'=>'full_like'
],'goods') $goods_whereor_sql=[] if(isset_full($input,'code')){
$attr=Attr::where(['code'=>$input['code'],'enable'=>1])->select()->ToArray() if(!empty($attr)){
sql_assign($goods_whereor_sql,'id',arraychange($attr,'pid')) sql_assign($room_sql,'attr',arraychange($attr,'nod')) }
}
$goods=Goods::where($goods_sql)->whereor($goods_whereor_sql)->select()->ToArray() sql_assign($room_sql,'goods',arraychange($goods,'id')) isset_full($input,'warehouse')&&($room_sql['warehouse']=$input['warehouse']) isset_full($input,'batch')&&($room_sql['batch']=$input['batch']) $room_sql=auth('room',$room_sql) $arr = Room::with('warehouseinfo,goodsinfo')->where($room_sql)->order('goods desc')->select()->ToArray() foreach ($arr as $key=>$vo) {
if(bccomp($vo['nums'],$vo['goodsinfo']['stocktip'],config('decimal'))==-1){
$arr[$key]['goodsinfo']['img']=empty($vo['goodsinfo']['imgs'])?'/skin/images/main/none.png':$vo['goodsinfo']['imgs'][0] if(!empty($vo['attr']['nod']) && $vo['attr']['name']!='辅助属性丢失'){
$attr=Attr::where(['pid'=>$vo['goods'],'nod'=>$vo['attr']['nod']])->find();
$arr[$key]['goodsinfo']['buy']=$attr['buy'];
$arr[$key]['goodsinfo']['sell']=$attr['sell'];
$arr[$key]['goodsinfo']['retail']=$attr['retail'];
}
}else{
unset($arr[$key]) }
}
$count =count($arr);
$page=$input['page'];
$limit=$input['limit'];
$arr = array_slice($arr,$limit*($page-1),$limit);
$resule=[
'code'=>0,
'msg'=>'获取成功',
'count'=>$count,
'data'=>$arr
] }else{
$resule=['state'=>'error','info'=>'传入参数不完整!'];
}
return json($resule);
}
public function export_roomwarning(){
$input=input('get.');
$room_sql=[] $goods_sql=get_sql($input,[
'name'=>'full_name_py_link',
'code'=>'full_eq',
'spec'=>'full_like',
'class'=>'full_goodsclass_tree_sub',
'brand'=>'full_eq',
'number'=>'full_like',
'warehouse'=>'continue',
'data'=>'full_like'
],'goods') $goods_whereor_sql=[] if(isset_full($input,'code')){
$attr=Attr::where(['code'=>$input['code'],'enable'=>1])->select()->ToArray() if(!empty($attr)){
sql_assign($goods_whereor_sql,'id',arraychange($attr,'pid')) sql_assign($room_sql,'attr',arraychange($attr,'nod')) }
}
$goods=Goods::where($goods_sql)->whereor($goods_whereor_sql)->select()->ToArray() sql_assign($room_sql,'goods',arraychange($goods,'id')) isset_full($input,'warehouse')&&($room_sql['warehouse']=$input['warehouse']) isset_full($input,'batch')&&($room_sql['batch']=$input['batch']) $room_sql=auth('room',$room_sql) $count = Room::where ($room_sql)->count() $arr = Room::with('warehouseinfo,goodsinfo')->where($room_sql)->order('goods desc')->select()->ToArray() foreach ($arr as $key=>$vo) {
if(bccomp($vo['nums'],$vo['goodsinfo']['stocktip'],config('decimal'))==-1){
$arr[$key]['goodsinfo']['img']=empty($vo['goodsinfo']['imgs'])?'/skin/images/main/none.png':$vo['goodsinfo']['imgs'][0] if(!empty($vo['attr']['nod']) && $vo['attr']['name']!='辅助属性丢失'){
$attr=Attr::where(['pid'=>$vo['goods'],'nod'=>$vo['attr']['nod']])->find();
$arr[$key]['goodsinfo']['buy']=$attr['buy'];
$arr[$key]['goodsinfo']['sell']=$attr['sell'];
$arr[$key]['goodsinfo']['retail']=$attr['retail'];
}
}else{
unset($arr[$key]) }
}
$formfield=get_formfield('roomwarning_export','array') $excel=[] array_push($excel,['type'=>'title','info'=>'库存预警列表']);
$table_cell=[] foreach ($formfield as $formfield_vo) {
$table_cell[$formfield_vo['key']]=$formfield_vo['text'];
}
$table_data=[] foreach ($arr as $arr_vo) {
$row_data=[];
foreach ($formfield as $formfield_vo) {
$val='nod_initial' foreach (explode('|',$formfield_vo['data']) as $source) {
$val=$val=='nod_initial'?$arr_vo[$source]:(isset($val[$source])?$val[$source]:'');
}
$row_data[$formfield_vo['key']]=$val }
array_push($table_data,$row_data) }
array_push($excel,['type'=>'table','info'=>['cell'=>$table_cell,'data'=>$table_data]]) push_log('导出库存预警信息') export_excel('库存预警列表',$excel);
}
public function roomcheck_list(){
$input=input('post.');
if(isset_full($input,'page') && isset_full($input,'rows')){
$room_sql=[] $goods_sql=get_sql($input,[
'name'=>'full_name_py_link',
'code'=>'full_eq',
'spec'=>'full_like',
'class'=>'full_goodsclass_tree_sub',
'brand'=>'full_eq',
'number'=>'full_like',
'warehouse'=>'continue',
'data'=>'full_like'
],'goods') $goods_whereor_sql=[] if(isset_full($input,'code')){
$attr=Attr::where(['code'=>$input['code'],'enable'=>1])->select()->ToArray() if(!empty($attr)){
sql_assign($goods_whereor_sql,'id',arraychange($attr,'pid')) sql_assign($room_sql,'attr',arraychange($attr,'nod')) }
}
$goods=Goods::where($goods_sql)->whereor($goods_whereor_sql)->select()->ToArray() sql_assign($room_sql,'goods',arraychange($goods,'id')) isset_full($input,'warehouse')&&($room_sql['warehouse']=$input['warehouse']) isset_full($input,'batch')&&($room_sql['batch']=$input['batch']) $room_sql=auth('room',$room_sql) $count = Room::where ($room_sql)->count() $arr = Room::with('warehouseinfo,goodsinfo')->where($room_sql)->page($input['page'],$input['rows'])->order('goods desc')->select()->ToArray() $resule=[
'total'=>ceil($count/$input['rows']) 'page'=>$input['page'],
'records'=>$count,
'rows'=>$arr
] }else{
$resule=['state'=>'error','info'=>'传入参数不完整!'];
}
return json($resule);
}
public function export_roomcheck(){
$input=input('get.');
$room_sql=[] $goods_sql=get_sql($input,[
'name'=>'full_name_py_link',
'code'=>'full_eq',
'spec'=>'full_like',
'class'=>'full_goodsclass_tree_sub',
'brand'=>'full_eq',
'number'=>'full_like',
'warehouse'=>'continue',
'data'=>'full_like'
],'goods') $goods_whereor_sql=[] if(isset_full($input,'code')){
$attr=Attr::where(['code'=>$input['code'],'enable'=>1])->select()->ToArray() if(!empty($attr)){
sql_assign($goods_whereor_sql,'id',arraychange($attr,'pid')) sql_assign($room_sql,'attr',arraychange($attr,'nod')) }
}
$goods=Goods::where($goods_sql)->whereor($goods_whereor_sql)->select()->ToArray() sql_assign($room_sql,'goods',arraychange($goods,'id')) isset_full($input,'warehouse')&&($room_sql['warehouse']=$input['warehouse']) isset_full($input,'batch')&&($room_sql['batch']=$input['batch']) $room_sql=auth('room',$room_sql) $count = Room::where ($room_sql)->count() $arr = Room::with('warehouseinfo,goodsinfo')->where($room_sql)->order('goods desc')->select()->ToArray() foreach ($arr as $key=>$vo) {
$arr[$key]['stock']='';
}
$formfield=get_formfield('roomcheck_export','array') $excel=[] array_push($excel,['type'=>'title','info'=>'库存盘点列表']);
$table_cell=[] foreach ($formfield as $formfield_vo) {
$table_cell[$formfield_vo['key']]=$formfield_vo['text'];
}
$table_data=[] foreach ($arr as $arr_vo) {
$row_data=[];
foreach ($formfield as $formfield_vo) {
$val='nod_initial' foreach (explode('|',$formfield_vo['data']) as $source) {
$val=$val=='nod_initial'?$arr_vo[$source]:(isset($val[$source])?$val[$source]:'');
}
$row_data[$formfield_vo['key']]=$val }
array_push($table_data,$row_data) }
array_push($excel,['type'=>'table','info'=>['cell'=>$table_cell,'data'=>$table_data]]) push_log('导出库存盘点信息') export_excel('库存盘点列表',$excel);
}
public function summary_forms(){
Summary::where(['id'=>['gt',0]])->delete() $form=[
'purchase'=>'购货单',
'rpurchase'=>'采购入库单',
'repurchase'=>'购货退货单',
'sale'=>'销货单',
'resale'=>'销货退货单',
'cashier'=>'零售单',
'recashier'=>'零售退货单',
'exchange'=>'积分兑换单',
'allocation'=>'调拨单',
'otpurchase'=>'其他入库单',
'otsale'=>'其他出库单'
];
$resule=[];
foreach ($form as $key => $vo) {
array_push($resule,[$vo,$key,db($key.'class')->where(['type'=>1])->count()]);
}
return json($resule);
}
public function cal_summary(){
$input=input('post.');
if(isset_full($input,'name') && isset_full($input,'form') && isset_full($input,'classcur') && isset_full($input,'infocur')){
$base=30 $class=db($input['form'].'class')->where(['type'=>1])->field('id')->page($input['infocur'],$base)->select();
foreach ($class as $vo) {
set_summary($input['form'],$vo['id'],true);
}
$resule=$input $resule['start']=($input['infocur']-1)*$base+1;
$resule['end']=$resule['start']+count($class)-1;
}else{
$resule=['state'=>'error','info'=>'传入参数不完整!'];
}
return json($resule);
}
public function goodsprofit_list(){
$input=input('post.');
if(isset_full($input,'page') && isset_full($input,'limit')){
$summary_sql=[] $goods_sql=get_sql($input,[
'name'=>'full_name_py_link',
'start_time'=>'continue',
'end_time'=>'continue',
'code'=>'full_eq',
'spec'=>'full_like',
'class'=>'full_goodsclass_tree_sub',
'brand'=>'full_eq',
'number'=>'full_like',
'warehouse'=>'continue',
'data'=>'full_like'
],'goods') $goods_whereor_sql=[] if(isset_full($input,'code')){
$attr=Attr::where(['code'=>$input['code'],'enable'=>1])->select()->ToArray() if(!empty($attr)){
sql_assign($goods_whereor_sql,'id',arraychange($attr,'pid')) sql_assign($summary_sql,'attr',arraychange($attr,'nod')) }
}
$goods=Goods::where($goods_sql)->whereor($goods_whereor_sql)->select()->ToArray() sql_assign($summary_sql,'goods',arraychange($goods,'id')) $summary_sql['merchant']=['in',get_auth_merchant()] isset_full($input,'warehouse')&&($summary_sql['warehouse']=$input['warehouse']) isset_full($input,'batch')&&($summary_sql['batch']=$input['batch']) if(isset_full($input,'start_time') && !isset_full($input,'end_time')){
$summary_sql['time']=['egt',strtotime($input['start_time'])] }elseif(isset_full($input,'end_time') && !isset_full($input,'start_time')){
$summary_sql['time']=['elt',strtotime($input['end_time'])+86399] }elseif(isset_full($input,'start_time') && isset_full($input,'end_time')){
$summary_sql['time']=[
['egt',strtotime($input['start_time'])] ['elt',strtotime($input['end_time'])+86399 ];
}
$summary_sql=auth('summary',$summary_sql) $count = Summary::where ($summary_sql)->group('room')->count() $arr = Summary::with('warehouseinfo,goodsinfo,roominfo')->where($summary_sql)->page($input['page'],$input['limit'])->order('goods desc')->group('room')->select()->ToArray() foreach ($arr as $key=>$vo) {
$arr[$key]['goodsinfo']['img']=empty($vo['goodsinfo']['imgs'])?'/skin/images/main/none.png':$vo['goodsinfo']['imgs'][0] if(!empty($vo['attr']['nod']) && $vo['attr']['name']!='辅助属性丢失'){
$attr=Attr::where(['pid'=>$vo['goods'],'nod'=>$vo['attr']['nod']])->find();
$arr[$key]['goodsinfo']['buy']=$attr['buy'];
$arr[$key]['goodsinfo']['sell']=$attr['sell'];
$arr[$key]['goodsinfo']['retail']=$attr['retail'];
}
$arr[$key]['sale']=db('summary')->where($summary_sql)->where(['type'=>4,'room'=>$vo['room']])->sum('total') $arr[$key]['cashier']=db('summary')->where($summary_sql)->where(['type'=>6,'room'=>$vo['room']])->sum('total') $arr[$key]['sales_revenue']=opt_decimal(bcadd($arr[$key]['sale'],$arr[$key]['cashier'],config('decimal'))) $avg=db('summary')->where(['type'=>['in',[1,2],'OR'],'room'=>$vo['room'],'price'=>['gt',0]])->avg('price') $allnums=db('summary')->where($summary_sql)->where(['type'=>['in',[4,6],'OR'],'room'=>$vo['room']])->sum('nums') $arr[$key]['sales_cost']=opt_decimal(bcmul($avg,$allnums,config('decimal'))) $arr[$key]['sales_maori']=opt_decimal(bcsub($arr[$key]['sales_revenue'],$arr[$key]['sales_cost'],config('decimal'))) $arr[$key]['gross_interest_rate']=@opt_decimal(bcmul(bcdiv($arr[$key]['sales_maori'],$arr[$key]['sales_revenue'],2),100,config('decimal'))).'%' }
$resule=[
'code'=>0,
'msg'=>'获取成功',
'count'=>$count,
'data'=>$arr
] }else{
$resule=['state'=>'error','info'=>'传入参数不完整!'];
}
return json($resule);
}
public function export_goodsprofit(){
$input=input('get.');
$summary_sql=[] $goods_sql=get_sql($input,[
'name'=>'full_name_py_link',
'start_time'=>'continue',
'end_time'=>'continue',
'code'=>'full_eq',
'spec'=>'full_like',
'class'=>'full_goodsclass_tree_sub',
'brand'=>'full_eq',
'number'=>'full_like',
'warehouse'=>'continue',
'data'=>'full_like'
],'goods') $goods_whereor_sql=[] if(isset_full($input,'code')){
$attr=Attr::where(['code'=>$input['code'],'enable'=>1])->select()->ToArray() if(!empty($attr)){
sql_assign($goods_whereor_sql,'id',arraychange($attr,'pid')) sql_assign($summary_sql,'attr',arraychange($attr,'nod')) }
}
$goods=Goods::where($goods_sql)->whereor($goods_whereor_sql)->select()->ToArray() sql_assign($summary_sql,'goods',arraychange($goods,'id')) $summary_sql['merchant']=['in',get_auth_merchant()] isset_full($input,'warehouse')&&($summary_sql['warehouse']=$input['warehouse']) isset_full($input,'batch')&&($summary_sql['batch']=$input['batch']) if(isset_full($input,'start_time') && !isset_full($input,'end_time')){
$summary_sql['time']=['egt',strtotime($input['start_time'])] }elseif(isset_full($input,'end_time') && !isset_full($input,'start_time')){
$summary_sql['time']=['elt',strtotime($input['end_time'])+86399] }elseif(isset_full($input,'start_time') && isset_full($input,'end_time')){
$summary_sql['time']=[
['egt',strtotime($input['start_time'])] ['elt',strtotime($input['end_time'])+86399 ];
}
$summary_sql=auth('summary',$summary_sql) $arr = Summary::with('warehouseinfo,goodsinfo,roominfo')->where($summary_sql)->order('goods desc')->group('room')->select()->ToArray() foreach ($arr as $key=>$vo) {
$arr[$key]['goodsinfo']['img']=empty($vo['goodsinfo']['imgs'])?'/skin/images/main/none.png':$vo['goodsinfo']['imgs'][0] if(!empty($vo['attr']['nod']) && $vo['attr']['name']!='辅助属性丢失'){
$attr=Attr::where(['pid'=>$vo['goods'],'nod'=>$vo['attr']['nod']])->find();
$arr[$key]['goodsinfo']['buy']=$attr['buy'];
$arr[$key]['goodsinfo']['sell']=$attr['sell'];
$arr[$key]['goodsinfo']['retail']=$attr['retail'];
}
$arr[$key]['sale']=db('summary')->where($summary_sql)->where(['type'=>4,'room'=>$vo['room']])->sum('total') $arr[$key]['cashier']=db('summary')->where($summary_sql)->where(['type'=>6,'room'=>$vo['room']])->sum('total') $arr[$key]['sales_revenue']=opt_decimal(bcadd($arr[$key]['sale'],$arr[$key]['cashier'],config('decimal'))) $avg=db('summary')->where(['type'=>['in',[1,2],'OR'],'room'=>$vo['room'],'price'=>['gt',0]])->avg('price') $allnums=db('summary')->where($summary_sql)->where(['type'=>['in',[4,6],'OR'],'room'=>$vo['room']])->sum('nums') $arr[$key]['sales_cost']=opt_decimal(bcmul($avg,$allnums,config('decimal'))) $arr[$key]['sales_maori']=opt_decimal(bcsub($arr[$key]['sales_revenue'],$arr[$key]['sales_cost'],config('decimal'))) $arr[$key]['gross_interest_rate']=@opt_decimal(bcmul(bcdiv($arr[$key]['sales_maori'],$arr[$key]['sales_revenue'],2),100,config('decimal'))).'%' }
$formfield=get_formfield('goodsprofit_export','array') $excel=[] array_push($excel,['type'=>'title','info'=>'商品利润表']);
$table_cell=[] foreach ($formfield as $formfield_vo) {
$table_cell[$formfield_vo['key']]=$formfield_vo['text'];
}
$table_data=[] foreach ($arr as $arr_vo) {
$row_data=[];
foreach ($formfield as $formfield_vo) {
$val='nod_initial' foreach (explode('|',$formfield_vo['data']) as $source) {
$val=$val=='nod_initial'?$arr_vo[$source]:(isset($val[$source])?$val[$source]:'');
}
$row_data[$formfield_vo['key']]=$val }
array_push($table_data,$row_data) }
array_push($excel,['type'=>'table','info'=>['cell'=>$table_cell,'data'=>$table_data]]) $sum_arr=get_sums($table_data,['sale','cashier','sales_revenue','sales_cost','sales_maori']);
array_push($excel,['type'=>'node','info'=>[
'总销货金额:'.$sum_arr['sale'],
'总零售金额:'.$sum_arr['cashier'],
'总销售收入:'.$sum_arr['sales_revenue'],
'总销售成本:'.$sum_arr['sales_cost'],
'总销售毛利:'.$sum_arr['sales_maori'],
]]) push_log('导出商品利润表') export_excel('商品利润表',$excel);
}
public function billprofit_list(){
$input=input('post.');
if(isset_full($input,'page') && isset_full($input,'limit')){
$summary_sql=get_sql($input,[
'type'=>'continue',
'customer'=>'full_division_in',
'user'=>'full_division_in',
'start_time'=>'stime',
'end_time'=>'etime',
'number'=>'full_like',
],'summary') $summary_sql['type']=['in',[4,6]] if(isset_full($input,'type')){
if($input['type']==1){
$summary_sql['type']=4 }elseif($input['type']==2){
$summary_sql['type']=6 }
}
$summary_sql=auth('summary',$summary_sql) $count = Summary::where ($summary_sql)->group('number')->count() $arr = Summary::with('merchantinfo,typedata,customerinfo,userinfo')->where($summary_sql)->page($input['page'],$input['limit'])->order('id desc')->group('number')->select()->ToArray() foreach ($arr as $key=>$vo) {
$info=db('summary')->where(['number'=>$vo['number']])->select()->ToArray() $sum_arr=get_sums($info,['nums','total']) $arr[$key]['allnums']=$sum_arr['nums'] $arr[$key]['sales_revenue']=opt_decimal($sum_arr['total']) $arr[$key]['selling_cost']=0 foreach ($info as $info_vo) {
$avg=db('summary')->where(['type'=>['in',[1,2]],'room'=>$info_vo['room'],'price'=>['gt',0]])->avg('price') $arr[$key]['selling_cost']=$arr[$key]['selling_cost']+opt_decimal(bcmul($avg,$info_vo['nums'],config('decimal'))) }
$arr[$key]['gross_margin']=opt_decimal(bcsub($arr[$key]['sales_revenue'],$arr[$key]['selling_cost'],config('decimal'))) $arr[$key]['gross_profit_margin']=@opt_decimal(bcmul(bcdiv($arr[$key]['gross_margin'],$arr[$key]['sales_revenue'],2),100,config('decimal'))).'%' $arr[$key]['discount']=opt_decimal(bcsub($vo['typedata']['total'],$vo['typedata']['actual'],config('decimal'))) $arr[$key]['net_profit']=opt_decimal(bcsub($arr[$key]['gross_margin'],$arr[$key]['discount'],config('decimal'))) $arr[$key]['net_profit_margin']=@opt_decimal(bcmul(bcdiv($arr[$key]['net_profit'],$arr[$key]['sales_revenue'],2),100,config('decimal'))).'%' $arr[$key]['receivable']=opt_decimal($vo['typedata']['actual']) $arr[$key]['money']=opt_decimal($vo['typedata']['money']) }
$resule=[
'code'=>0,
'msg'=>'获取成功',
'count'=>$count,
'data'=>$arr
] }else{
$resule=['state'=>'error','info'=>'传入参数不完整!'];
}
return json($resule);
}
public function export_billprofit(){
$input=input('get.');
$summary_sql=get_sql($input,[
'type'=>'continue',
'customer'=>'full_division_in',
'user'=>'full_division_in',
'start_time'=>'stime',
'end_time'=>'etime',
'number'=>'full_like',
],'summary') $summary_sql['type']=['in',[4,6]] if(isset_full($input,'type')){
if($input['type']==1){
$summary_sql['type']=4 }elseif($input['type']==2){
$summary_sql['type']=6 }
}
$summary_sql=auth('summary',$summary_sql) $arr = Summary::with('merchantinfo,typedata,customerinfo,userinfo')->where($summary_sql)->order('id desc')->group('number')->select()->ToArray() foreach ($arr as $key=>$vo) {
$info=db('summary')->where(['number'=>$vo['number']])->select()->ToArray() $sum_arr=get_sums($info,['nums','total']) $arr[$key]['allnums']=$sum_arr['nums'] $arr[$key]['sales_revenue']=opt_decimal($sum_arr['total']) $arr[$key]['selling_cost']=0 foreach ($info as $info_vo) {
$avg=db('summary')->where(['type'=>['in',[1,2]],'room'=>$info_vo['room'],'price'=>['gt',0]])->avg('price') $arr[$key]['selling_cost']=$arr[$key]['selling_cost']+opt_decimal(bcmul($avg,$info_vo['nums'],config('decimal'))) }
$arr[$key]['gross_margin']=opt_decimal(bcsub($arr[$key]['sales_revenue'],$arr[$key]['selling_cost'],config('decimal'))) $arr[$key]['gross_profit_margin']=@opt_decimal(bcmul(bcdiv($arr[$key]['gross_margin'],$arr[$key]['sales_revenue'],2),100,config('decimal'))).'%' $arr[$key]['discount']=opt_decimal(bcsub($vo['typedata']['total'],$vo['typedata']['actual'],config('decimal'))) $arr[$key]['net_profit']=opt_decimal(bcsub($arr[$key]['gross_margin'],$arr[$key]['discount'],config('decimal'))) $arr[$key]['net_profit_margin']=@opt_decimal(bcmul(bcdiv($arr[$key]['net_profit'],$arr[$key]['sales_revenue'],2),100,config('decimal'))).'%' $arr[$key]['receivable']=opt_decimal($vo['typedata']['actual']) $arr[$key]['money']=opt_decimal($vo['typedata']['money']) }
$formfield=get_formfield('billprofit_export','array') $excel=[] array_push($excel,['type'=>'title','info'=>'销售利润表']);
$table_cell=[] foreach ($formfield as $formfield_vo) {
$table_cell[$formfield_vo['key']]=$formfield_vo['text'];
}
$table_data=[] foreach ($arr as $arr_vo) {
$row_data=[];
foreach ($formfield as $formfield_vo) {
$val='nod_initial' foreach (explode('|',$formfield_vo['data']) as $source) {
$val=$val=='nod_initial'?$arr_vo[$source]:(isset($val[$source])?$val[$source]:'');
}
$row_data[$formfield_vo['key']]=$val }
array_push($table_data,$row_data) }
array_push($excel,['type'=>'table','info'=>['cell'=>$table_cell,'data'=>$table_data]]) $sum_arr=get_sums($table_data,['sales_revenue','selling_cost','gross_margin','discount','net_profit','receivable','money']);
array_push($excel,['type'=>'node','info'=>[
'总销售收入:'.$sum_arr['sales_revenue'],
'总销售成本:'.$sum_arr['selling_cost'],
'总销售毛利:'.$sum_arr['gross_margin'],
'总优惠金额:'.$sum_arr['discount'],
'总销售净利润:'.$sum_arr['net_profit'],
'总应收金额:'.$sum_arr['receivable'],
'总实收金额:'.$sum_arr['money'],
]]) push_log('导出销售利润表') export_excel('销售利润表',$excel);
}
public function serial_list(){
$input=input('post.');
if(isset_full($input,'page') && isset_full($input,'limit')){
$serial_sql=get_sql($input,[
'code'=>'full_like',
'type'=>'full_dec_1',
],'serial') if(isset_full($input,'name')){
$goods=get_db_field('goods',['name|py'=>['like','%'.$input['name'].'%']]) sql_assign($serial_sql,'goods',$goods) }
$serial_sql['type']=['neq',2] $count = Serial::where($serial_sql)->count() $arr = Serial::with('goodsinfo,roominfo')->where($serial_sql)->page($input['page'],$input['limit'])->order('goods desc')->select() $resule=[
'code'=>0,
'msg'=>'获取成功',
'count'=>$count,
'data'=>$arr
] }else{
$resule=['state'=>'error','info'=>'传入参数不完整!'];
}
return json($resule);
}
public function export_serial(){
$input=input('get.');
$serial_sql=get_sql($input,[
'code'=>'full_like',
'type'=>'full_dec_1',
],'serial') if(isset_full($input,'name')){
$goods=get_db_field('goods',['name|py'=>['like','%'.$input['name'].'%']]) sql_assign($serial_sql,'goods',$goods) }
$serial_sql['type']=['neq',2] $arr = Serial::with('goodsinfo,roominfo')->where($serial_sql)->order('goods desc')->select() $formfield=get_formfield('serial_export','array') $excel=[] array_push($excel,['type'=>'title','info'=>'串码跟踪表']);
$table_cell=[] foreach ($formfield as $formfield_vo) {
$table_cell[$formfield_vo['key']]=$formfield_vo['text'];
}
$table_data=[] foreach ($arr as $arr_vo) {
$row_data=[];
foreach ($formfield as $formfield_vo) {
$val='nod_initial' foreach (explode('|',$formfield_vo['data']) as $source) {
$val=$val=='nod_initial'?$arr_vo[$source]:(isset($val[$source])?$val[$source]:'');
}
$row_data[$formfield_vo['key']]=$val }
array_push($table_data,$row_data) }
array_push($excel,['type'=>'table','info'=>['cell'=>$table_cell,'data'=>$table_data]]) push_log('导出串码跟踪表') export_excel('串码跟踪表',$excel);
}
public function serialinfo_list(){
$input=input('post.');
if(isset_full($input,'page') && isset_full($input,'limit') && isset_full($input,'pid')){
$serialinfo_sql=get_sql($input,[
'pid'=>'full_eq',
'type'=>'full_eq',
],'serialinfo') $count = Serialinfo::where($serialinfo_sql)->count() $arr = Serialinfo::with('typedata')->where($serialinfo_sql)->page($input['page'],$input['limit'])->order('id desc')->select()->ToArray() $resule=[
'code'=>0,
'msg'=>'获取成功',
'count'=>$count,
'data'=>$arr
] }else{
$resule=['state'=>'error','info'=>'传入参数不完整!'];
}
return json($resule);
}
public function export_serialinfo(){
$input=input('get.');
if(isset_full($input,'pid')){
$serialinfo_sql=get_sql($input,[
'pid'=>'full_eq',
'type'=>'full_eq',
],'serialinfo') $arr = Serialinfo::with('typedata')->where($serialinfo_sql)->order('id desc')->select()->ToArray() $formfield=get_formfield('serialinfo_export','array') $serial=db('serial')->where(['id'=>$input['pid']])->find();
$excel=[] array_push($excel,['type'=>'title','info'=>'串码['.$serial['code'].']跟踪详情表']);
$table_cell=[] foreach ($formfield as $formfield_vo) {
$table_cell[$formfield_vo['key']]=$formfield_vo['text'];
}
$table_data=[] foreach ($arr as $arr_vo) {
$row_data=[];
foreach ($formfield as $formfield_vo) {
$val='nod_initial' foreach (explode('|',$formfield_vo['data']) as $source) {
$val=$val=='nod_initial'?$arr_vo[$source]:(isset($val[$source])?$val[$source]:'');
}
$row_data[$formfield_vo['key']]=$val }
array_push($table_data,$row_data) }
array_push($excel,['type'=>'table','info'=>['cell'=>$table_cell,'data'=>$table_data]]) push_log('导出串码跟踪详情表') export_excel('串码跟踪详情表',$excel);
}else{
return json(['state'=>'error','info'=>'传入参数不完整!']);
}
}
public function arrears_list(){
$input=input('post.');
if(isset_full($input,'page') && isset_full($input,'limit') && isset_full($input,'type') && in_array($input['type'],[1,2])){
$arr=[] if($input['type']=='1'){
$sql=get_sql($input,[
'name'=>'full_name_py_link',
'number'=>'full_like',
],'customer') $sql=auth('customer',$sql) $customer=Customer::where($sql)->select();
foreach ($customer as $vo) {
$money=0;
$sale_sql['billtype']=['in',[0,1],'OR'];
$sale_sql['customer']=$vo['id'];
$sale_sql=auth('saleclass',$sale_sql) $sale=Saleclass::where($sale_sql)->select();
foreach ($sale as $sale_vo) {
$difference=bcsub($sale_vo['actual'],$sale_vo['money'],config('decimal')) $money=opt_decimal(bcadd($money,$difference,config('decimal'))) }
$info=[];
$info['type']='客户';
$info['name']=$vo['name'];
$info['number']=$vo['number'];
$info['money']=$money;
array_push($arr,$info);
}
}else{
$sql=get_sql($input,[
'name'=>'full_name_py_link',
'number'=>'full_like',
],'supplier') $sql=auth('supplier',$sql) $supplier=Supplier::where($sql)->select();
foreach ($supplier as $vo) {
$money=0;
$purchase_sql['billtype']=['in',[0,1],'OR'];
$purchase_sql['supplier']=$vo['id'];
$purchase_sql=auth('purchaseclass',$purchase_sql) $purchase=Purchaseclass::where($purchase_sql)->select();
foreach ($purchase as $purchase_vo) {
$difference=bcsub($purchase_vo['actual'],$purchase_vo['money'],config('decimal')) $money=opt_decimal(bcadd($money,$difference,config('decimal'))) }
$rpurchase_sql['billtype']=['in',[0,1],'OR'];
$rpurchase_sql['supplier']=$vo['id'];
$rpurchase_sql=auth('rpurchaseclass',$rpurchase_sql) $rpurchase=Rpurchaseclass::where($rpurchase_sql)->select();
foreach ($rpurchase as $rpurchase_vo){
$difference=bcsub($rpurchase_vo['actual'],$rpurchase_vo['money'],config('decimal')) $money=opt_decimal(bcadd($money,$difference,config('decimal'))) }
$info=[];
$info['type']='供应商';
$info['name']=$vo['name'];
$info['number']=$vo['number'];
$info['money']=$money;
array_push($arr,$info);
}
}
$count =count($arr);
$page=$input['page'];
$limit=$input['limit'];
$arr = array_slice($arr,$limit*($page-1),$limit);
$resule=[
'state'=>'success',
'code'=>0,
'msg'=>'获取成功',
'count'=>$count,
'data'=>$arr
] }else{
$resule=['state'=>'error','info'=>'传入参数不完整!'];
}
return json($resule);
}
public function export_arrears(){
$input=input('get.');
if(isset_full($input,'type') && in_array($input['type'],[1,2])){
$arr=[] if($input['type']=='1'){
$sql=get_sql($input,[
'name'=>'full_name_py_link',
'number'=>'full_like',
],'customer') $sql=auth('customer',$sql) $customer=Customer::where($sql)->select();
foreach ($customer as $vo) {
$money=0;
$sale_sql['billtype']=['in',[0,1],'OR'];
$sale_sql['customer']=$vo['id'];
$sale_sql=auth('saleclass',$sale_sql) $sale=Saleclass::where($sale_sql)->select();
foreach ($sale as $sale_vo) {
$difference=bcsub($sale_vo['actual'],$sale_vo['money'],config('decimal')) $money=opt_decimal(bcadd($money,$difference,config('decimal'))) }
$info=[];
$info['type']='客户';
$info['name']=$vo['name'];
$info['number']=$vo['number'];
$info['money']=$money;
array_push($arr,$info);
}
}else{
$sql=get_sql($input,[
'name'=>'full_name_py_link',
'number'=>'full_like',
],'supplier') $sql=auth('supplier',$sql) $supplier=Supplier::where($sql)->select();
foreach ($supplier as $vo) {
$money=0;
$purchase_sql['billtype']=['in',[0,1],'OR'];
$purchase_sql['supplier']=$vo['id'];
$purchase_sql=auth('purchaseclass',$purchase_sql) $purchase=Purchaseclass::where($purchase_sql)->select();
foreach ($purchase as $purchase_vo) {
$difference=bcsub($purchase_vo['actual'],$purchase_vo['money'],config('decimal')) $money=opt_decimal(bcadd($money,$difference,config('decimal'))) }
$rpurchase_sql['billtype']=['in',[0,1],'OR'];
$rpurchase_sql['supplier']=$vo['id'];
$rpurchase_sql=auth('rpurchaseclass',$rpurchase_sql) $rpurchase=Rpurchaseclass::where($rpurchase_sql)->select();
foreach ($rpurchase as $rpurchase_vo){
$difference=bcsub($rpurchase_vo['actual'],$rpurchase_vo['money'],config('decimal')) $money=opt_decimal(bcadd($money,$difference,config('decimal'))) }
$info=[];
$info['type']='供应商';
$info['name']=$vo['name'];
$info['number']=$vo['number'];
$info['money']=$money;
array_push($arr,$info);
}
}
$formfield=get_formfield('arrears_export','array') $excel=[] array_push($excel,['type'=>'title','info'=>'往来单位欠款表']);
$table_cell=[] foreach ($formfield as $formfield_vo) {
$table_cell[$formfield_vo['key']]=$formfield_vo['text'];
}
$table_data=[] foreach ($arr as $arr_vo) {
$row_data=[];
foreach ($formfield as $formfield_vo) {
$val='nod_initial' foreach (explode('|',$formfield_vo['data']) as $source) {
$val=$val=='nod_initial'?$arr_vo[$source]:(isset($val[$source])?$val[$source]:'');
}
$row_data[$formfield_vo['key']]=$val }
array_push($table_data,$row_data) }
array_push($excel,['type'=>'table','info'=>['cell'=>$table_cell,'data'=>$table_data]]) $sum_arr=get_sums($table_data,['money']);
array_push($excel,['type'=>'node','info'=>[
'总欠款金额:'.$sum_arr['money'],
]]) push_log('导出往来单位欠款表') export_excel('往来单位欠款表',$excel);
}else{
return json(['state'=>'error','info'=>'传入参数不完整!']);
}
}
}