<?php
namespace app\index\controller;
use think\Hook;
use app\index\controller\Acl;
use app\index\model\Opurchaseclass;
use app\index\model\Opurchaseinfo;
use app\index\model\Rpurchaseclass;
use app\index\model\Rpurchaseinfo;
use app\index\model\Attr;
class Orpurchase extends Acl {
public function form(){
return $this->fetch();
}
public function form_list(){
$input=input('post.');
if(isset_full($input,'page') && isset_full($input,'limit')){
$sql=get_sql($input,[
'name'=>'continue',
'number'=>'full_like',
'storage'=>'full_dec_1',
'start_time'=>'stime',
'end_time'=>'etime',
'user'=>'full_division_in',
'data'=>'full_like'
],'opurchaseclass') if(isset_full($input,'name')){
$goods=get_db_field('goods',['name|py'=>['like','%'.$input['name'].'%']],'id') if(empty($goods)){
sql_assign($sql,'id',[]) }else{
$info=get_db_field('opurchaseinfo',['goods'=>['in',$goods]],'pid') sql_assign($sql,'id',$info) }
}
$sql['type']=1 $sql['merchant']=['in',get_auth_merchant()] $sql=auth('opurchaseclass',$sql) $count = Opurchaseclass::where ($sql)->count() $arr = Opurchaseclass::with('merchantinfo,userinfo')->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 info(){
$input=input('get.');
if(isset_full($input,'id')){
$class=Opurchaseclass::where(['id'=>$input['id']])->find();
$info=Opurchaseinfo::with('goodsinfo')->where(['pid'=>$input['id']])->select()->ToArray();
foreach ($info as $info_key=>$info_vo){
$info[$info_key]['surplusnums']=opt_decimal(bcsub($info_vo['nums'],$info_vo['readynums'],config('decimal'))) if(!empty($info_vo['attr']['nod']) && $info_vo['attr']['name']!='辅助属性丢失'){
$attr=Attr::where(['pid'=>$info_vo['goods'],'nod'=>$info_vo['attr']['nod']])->find();
$info[$info_key]['price']=$attr['buy'];
}else{
$info[$info_key]['price']=$info_vo['goodsinfo']['buy'];
}
}
$this->assign('class',$class);
$this->assign('info',$info);
return $this->fetch('main');
}else{
$resule=['state'=>'error','info'=>'传入参数不完整!'];
}
return json($resule);
}
public function set(){
$input=input('post.');
if(isset_full($input,'oid')){
if(isset_full($input,'tab')){
foreach ($input['tab'] as $tab_key=>$tab_vo) {
$tab_vali = $this->validate($tab_vo,'Orpurchaseinfo') if($tab_vali!==true){
return json(['state'=>'error','info'=>'[ 数据表格 ]第'.($tab_key+1).'行'.$tab_vali]);
exit;
}
}
}else{
return json(['state'=>'error','info'=>'数据表格不可为空!']);
exit;
}
$input['merchant']=Session('is_merchant_id') $vali = $this->validate($input,'Orpurchaseclass');
if($vali===true){
$create_info=Rpurchaseclass::create(syn_sql($input,'rpurchaseclass'));
Hook::listen('create_rpurchase',$create_info) push_log('新增采购入库单[ '.$create_info['number'].' ]') $resule=['state'=>'success'];
}else{
$resule=['state'=>'error','info'=>$vali];
}
if($resule['state']=='success'){
$info=Opurchaseinfo::where(['pid'=>$input['oid']])->select()->ToArray() foreach ($input['tab'] as $info_vo) {
$info_vo['pid']=$create_info['id'];
$data=searchdata($info,['id'=>['eq',$info_vo['oid']]]);
$info_vo['goods']=$data[0]['goods'] empty($data[0]['attr']['nod'])||($info_vo['attr']=$data[0]['attr']['nod']) Rpurchaseinfo::create(syn_sql($info_vo,'rpurchaseinfo'));
}
}
}else{
$resule=['state'=>'error','info'=>'传入参数不完整!'];
}
if($resule['state']=='success'&&empty($input['id'])){
$rpurchase=controller('Rpurchase');
empty(get_sys(['auto_auditing']))||($rpurchase->auditing([$create_info['id']],true));
}
return json($resule);
}
public function exports(){
$input=input('get.');
if(isset($input['mode'])){
push_log('导出采购入库详情单数据') $sql=get_sql($input,[
'name'=>'continue',
'number'=>'full_like',
'storage'=>'full_dec_1',
'start_time'=>'stime',
'end_time'=>'etime',
'user'=>'full_division_in',
'data'=>'full_like'
],'opurchaseclass') if(isset_full($input,'name')){
$goods=get_db_field('goods',['name|py'=>['like','%'.$input['name'].'%']],'id') if(empty($goods)){
sql_assign($sql,'id',[]) }else{
$info=get_db_field('opurchaseinfo',['goods'=>['in',$goods]],'pid') sql_assign($sql,'id',$info) }
}
$sql['type']=1 $sql['merchant']=['in',get_auth_merchant()] $sql=auth('opurchaseclass',$sql) $arr = Opurchaseclass::with('merchantinfo,userinfo')->where($sql)->order('id desc')->select() if(empty($input['mode'])){
$formfield=get_formfield('orpurchase_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]]) export_excel('采购订单列表',$excel);
}else{
$files=[] $formfield=get_formfield('orpurchase_exports','array') foreach ($arr as $arr_vo) {
$excel=[] array_push($excel,['type'=>'title','info'=>'采购入库详情单']);
array_push($excel,['type'=>'node','info'=>[
'单据日期:'.$arr_vo['time'],
'',
'单据编号:'.$arr_vo['number'],
]]);
$info=Opurchaseinfo::where(['pid'=>$arr_vo['id']])->select();
foreach ($info as $info_key=>$info_vo) {
$info[$info_key]['surplusnums']=bcsub($info_vo['nums'],$info_vo['readynums'],config('decimal')) }
$table_cell=[] foreach ($formfield as $formfield_vo) {
$table_cell[$formfield_vo['key']]=$formfield_vo['text'];
}
$table_data=[] foreach ($info as $info_vo) {
$row_data=[];
foreach ($formfield as $formfield_vo) {
$val='nod_initial' foreach (explode('|',$formfield_vo['data']) as $source) {
$val=$val=='nod_initial'?$info_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]]) array_push($excel,['type'=>'node','info'=>[
'制单人:'.$arr_vo['userinfo']['name'],
'',
'备注信息:'.$arr_vo['data'],
]]);
$path=export_excel($arr_vo['number'],$excel,false) array_push($files,$path) }
file_to_zip('采购入库详情单明细',$files) }
}else{
$resule=['state'=>'error','info'=>'传入参数不完整!'];
}
return json($resule);
}
public function prints(){
$input=input('get.');
if(isset_full($input,'id')){
$print_name='orpurchase' $class=Opurchaseclass::where(['id'=>$input['id']])->find();
$info=Opurchaseinfo::where(['pid'=>$input['id']])->select();
foreach ($info as $info_key=>$info_vo) {
$info[$info_key]['surplusnums']=bcsub($info_vo['nums'],$info_vo['readynums'],config('decimal')) }
$sys=get_sys(['print_paper']);
$formfield=get_formfield('orpurchase_print','array') $tab_html=get_print_tab($formfield,$info);
$print=get_print($print_name);
$print_text=$print[empty($sys)?'paper4':'paper2'];
$this->assign('class',$class);
$this->assign('tab_html',$tab_html);
$this->assign('print_name',$print_name);
$this->assign('paper_type',$sys);
$this->assign('print_text',$print_text);
return $this->fetch();
}else{
$resule=['state'=>'error','info'=>'传入参数不完整!'];
}
return json($resule);
}
}