model = new \app\user\model\TaxCategory(); } public function list(){ $params=$this->request->param(["cat_name"=>"","cat_code"=>"","status"=>[],"page"=>1,"size"=>15],"post","trim"); $where=[]; if($params["cat_name"]!='') $where[]=["cat_name|short_name","like","%".$params["cat_name"]."%"]; if($params["cat_code"]!='') $where[]=["cat_code|merge_code","like","%".$params["cat_code"]."%"]; if(!empty($params["status"])) $where[]=["status","in",$params["status"]]; $list=$this->model->where($where)->order("status asc,id desc")->paginate(["page"=>$params["page"],"list_rows"=>$params["size"]]); return success("获取成功",["list"=>$list->items(),"count"=>$list->total()]); } public function query(){ $params=$this->request->param(["cat_name"=>"","cat_code"=>"","status"=>[]],"post","trim"); $where=[["tax","<>",""]]; if($params["cat_name"]!='') $where[]=["cat_name|short_name","like","%".$params["cat_name"]."%"]; if($params["cat_code"]!='') $where[]=["cat_code|merge_code","like","%".$params["cat_code"]."%"]; if(!empty($params["status"])) $where[]=["status","in",$params["status"]]; $list=$this->model->where($where) ->field('cat_name,cat_code,status,tax,addtax,sumitem,`desc`,short_name,merge_code,LENGTH(cat_name) as weight') ->order("weight asc,id desc") ->limit(30)->select()->toArray(); return success("获取成功",$list); } public function listByCompany(){ $params=$this->request->param([ "cat_name"=>"", "short_name"=>"", "income_status"=>"", "output_status"=>"", "cat_code"=>"", "in_status"=>"", 'out_status'=>'', "companyNo"=>"", "page"=>1,"size"=>15],"post","trim"); $where=[]; if($params["cat_name"]!='') $where[]=["cat_name","like","%".$params["cat_name"]."%"]; if($params["short_name"]!='') $where[]=["short_name","like","%".$params["short_name"]."%"]; if($params["income_status"]!=='') $where[]=$params['income_status']==0 ? ['income','=',null] :['income','=',$params['income_status']]; if($params["output_status"]!=='') $where[]=$params['output_status']==0 ? ['output','=',null] :['output','=',$params['output_status']]; if($params['in_status']!='') $params['in_status']==0 ? ['in_status','=',null] :['in_status','=',$params['in_status']]; if($params['out_status']!='') $params['out_status']==0 ? ['out_status','=',null] :['out_status','=',$params['out_status']]; if($params["cat_code"]!='') $where[]=["cat_code|merge_code","like","%".$params["cat_code"]."%"]; if($params["companyNo"]!='') $where[]=["business.companyNo","=",$params["companyNo"]]; $list=$this->model->alias("tax_category") ->leftJoin("business","business.status=tax_category.status and business.status=1 and business.is_del=0") ->leftJoin("taxCompany c","business.companyNo=c.companyNo and tax_category.id=c.tax_id") ->field(['tax_category.id','cat_name','short_name','cat_code','merge_code','desc','tax','business.company companyName','business.companyNo','in_status', "out_status","income","output"]) ->where($where) ->order("tax_category.id desc")->paginate(["page"=>$params["page"],"list_rows"=>$params["size"]]) ->each(function($item){ $item->income=$item->income??0; $item->output=$item->output??0; $item->in_status= $item->in_status??0; $item->out_status= $item->out_status??0; $item->incomeCn= TaxCompany::$useType[$item->income]; $item->outputCn= TaxCompany::$useType[$item->output]; $item->in_statusCn=TaxCompany::$inStatus[$item->in_status]; $item->out_statusCn=TaxCompany::$inStatus[$item->out_status]; }); return success("获取成功",["list"=>$list->items(),"count"=>$list->total()]); } public function taxCompanySet(){ $params=$this->request->param(["tax_ids"=>[],"companyNo"=>"","status"=>"","type"=>"in"],"post","trim"); $valid=Validate::rule([ "tax_ids|税目Id"=>"require|array", "companyNo|公司编号"=>"require", "status|状态"=>"require|integer|in:1,2", "type|类型"=>"require|in:in,out" ]); if(!$valid->check($params))return error($valid->getError()); try{ $taxCompany=new TaxCompany(); $taxCompany->saveAll(array_map(function($item)use($params){ $temp = [ 'id'=>TaxCompany::where(['tax_id'=>$item,'companyNo'=>$params['companyNo']])->value('id',null), 'tax_id'=>$item, 'companyNo'=>$params['companyNo'], 'createrid'=>$this->uid, 'creater'=>$this->uname ]; if($params['type']=='in'){ $temp['income']=$params['status']; }else{ $temp['output']=$params['status']; } return $temp; },$params['tax_ids'])); }catch(\Exception $e){ return error($e->getMessage()); } return success("设置成功"); } public function taxCompanyQuery(){ $params=$this->request->param([ 'cat_name'=>'', 'short_name'=>'', 'income_status'=>'', 'output_status'=>'', 'cat_code'=>'', 'in_status'=>'', 'out_status'=>'', 'companyNo'=>'', 'size'=>15],'post','trim'); $where=[]; if($params['cat_name']!='') $where[]=['cat_name','like','%'.$params['cat_name'].'%']; if($params['short_name']!='') $where[]=['short_name','like','%'.$params['short_name'].'%']; if($params['income_status']!=='') $where[]=$params['income_status']==0 ? ['income','is',null] :['income','=',$params['income_status']]; if($params['output_status']!=='') $where[]=$params['output_status']==0 ? ['output','is',null] :['output','=',$params['output_status']]; if($params['in_status']!='') $params['in_status']==0 ? ['in_status','is',null] :['in_status','=',$params['in_status']]; if($params['out_status']!='') $params['out_status']==0 ? ['out_status','is',null] :['out_status','=',$params['out_status']]; if($params['cat_code']!='') $where[]=['cat_code|merge_code','like','%'.$params['cat_code'].'%']; if($params['companyNo']!='') $where[]=['business.companyNo','=',$params['companyNo']]; $list=$this->model->alias('tax_category') ->leftJoin('business','business.status=tax_category.status and business.status=1 and business.is_del=0') ->leftJoin('taxCompany c','business.companyNo=c.companyNo and tax_category.id=c.tax_id') ->field(['tax_category.id','cat_name','short_name','cat_code','merge_code','desc','tax','business.company companyName','business.companyNo','in_status', 'out_status','income','output']) ->where($where) ->order('tax_category.id desc')->paginate(['page'=>$params['page'],'list_rows'=>$params['size']]) ->each(function($item){ $item->income=$item->income??0; $item->output=$item->output??0; $item->in_status= $item->in_status??0; $item->out_status= $item->out_status??0; $item->incomeCn= TaxCompany::$useType[$item->income]; $item->outputCn= TaxCompany::$useType[$item->output]; $item->in_statusCn=TaxCompany::$inStatus[$item->in_status]; $item->out_statusCn=TaxCompany::$inStatus[$item->out_status]; }); return success('获取成功',$list); } public function taxCompanyCreate(){ $params=$this->request->param(["in_tax_ids"=>[],"companyNo"=>"","out_tax_id"=>"",'out_bind_tax'=>''],"post","trim"); $valid=Validate::rule([ "in_tax_ids|进项类目"=>"require|array", "companyNo|公司编号"=>"require", "out_tax_id|销项类目"=>"require|integer", "out_bind_tax|销项税率"=>"require" ]); if(!$valid->check($params))return error($valid->getError()); try { $inCheck = TaxCompany::taxCheck($params['companyNo'],$params['in_tax_ids']); if(!$inCheck)return error('进项类目配置异常'); $outCheck=TaxCompany::taxCheck($params['companyNo'],$params['out_tax_id'],'out'); if(!$outCheck)return error('销项类目配置异常'); $isExist=TaxRelation::relationCheck($params['companyNo'],$params['in_tax_ids']); if(!$isExist)return error('进项类目已存在'); $isInExist=\app\user\model\TaxCategory::checkTax($params['out_tax_id'],$params['out_bind_tax']); if(!$isInExist)return error('销项类目税率不存在'); $createData=[ 'income_tax_id'=>0, 'output_tax_id'=>$params['out_tax_id'], 'output_bind_tax'=>$params['out_bind_tax'], 'companyNo'=>$params['companyNo'], 'createrid'=>$this->uid, 'creater'=>$this->uname, ]; (new TaxRelation())->saveAll(array_map(function($item)use($createData){ $createData['income_tax_id']=$item; return $createData; },$params['in_tax_ids'])); }catch (\Exception $e){ return error($e->getMessage()); } return success("添加成功"); } public function taxCompanyUpdate(){ $params=$this->request->param(["id"=>"",'out_tax_id'=>'','out_bind_tax'=>''],"post","trim"); $valid=Validate::rule([ "id|主键Id"=>"require|integer", "out_tax_id|销项类目"=>"require|integer", "out_bind_tax|销项税率"=>"require" ]); if(!$valid->check($params))return error($valid->getError()); $relation=TaxRelation::where(["id"=>$params["id"]])->findOrEmpty(); if($relation->isEmpty())return error("数据不存在"); try{ $outCheck=TaxCompany::taxCheck($relation->companyNo,$params['out_tax_id'],'out'); if(!$outCheck)return error('销项类目配置异常'); if($relation->output_tax_id!=$params['out_tax_id']){ $isExist=TaxRelation::where([['companyNo','=',$relation->companyNo],['income_tax_id','=', $relation->income_tax_id],['output_tax_id','=',$params['out_tax_id']],['id','<>',$relation->id]])->findOrEmpty(); if(!$isExist->isEmpty())return error('进销项类目关联已存在'); } $isInExist=\app\user\model\TaxCategory::checkTax($params['out_tax_id'],$params['out_bind_tax']); if(!$isInExist)return error('销项类目税率不存在'); $relation->output_tax_id=$params['out_tax_id']; $relation->output_bind_tax=$params['out_bind_tax']; $relation->updater=$this->uname; $save=$relation->save(); if(!$save)return error("修改失败"); }catch (\Exception $e){ return error($e->getMessage()); } return success("修改成功"); } public function taxCompanyDelete(){ $id=$this->request->post("id/d"); $relation=TaxRelation::where(["id"=>$id])->findOrEmpty(); if($relation->isEmpty())return error("数据不存在"); $relation->updater=$this->uname; $save=$relation->delete(); if($save)return success("删除成功"); return error("删除失败"); } public function taxCompanyList(){ $params=$this->request->param(["companyNo"=>"","income_code"=>"","output_code"=>"","page"=>1,"size"=>15],"post","trim"); $where=[]; if($params["companyNo"]!='') $where[]=["companyNo","like","%".$params["companyNo"]."%"]; if($params["income_code"]!='') $where[]=["incomeTax.merge_code","like","%".$params["income_code"]."%"]; if($params["output_code"]!='') $where[]=["outputTax.merge_code","like","%".$params["output_code"]."%"]; $list=TaxRelation::with(["incomeTax","company",'outputTax']) ->withJoin(["incomeTax","outputTax"])->where($where)->order("id desc") ->paginate(["page"=>$params["page"],"list_rows"=>$params["size"]]); return success("获取成功",["list"=>$list->items(),"count"=>$list->total()]); } public function taxCompanyLog(){ $params=$this->request->param(['companyNo'=>'','income_code'=>'','output_code'=>'','page'=>1,'size'=>15],'post','trim'); $where=[]; if($params['companyNo']!='') $where[]=['companyNo','like','%'.$params['companyNo'].'%']; if($params['income_code']!='') $where[]=['incomeTax.merge_code','like','%'.$params['income_code'].'%']; if($params['output_code']!='') $where[]=['outputTax.merge_code','like','%'.$params['output_code'].'%']; $list=TaxRelationLog::with(['incomeTax','company','outputTax']) ->withJoin(['incomeTax','outputTax'])->where($where)->order('id desc') ->paginate(['page'=>$params['page'],'list_rows'=>$params['size']])->each(function(&$item){ if(!empty($item['change_content'])&& isset($item['change_content']['output_tax_id'])){ $outputTax=\app\user\model\TaxCategory::where(['id'=>$item->change_content['output_tax_id']])->field('id output_tax_id,cat_name,merge_code,tax,short_name,cat_code')->findOrEmpty(); if(!$outputTax->isEmpty()){ $item->change_content=array_merge($item->change_content,["output_tax_info"=>$outputTax]); } } }); return success('获取成功',['list'=>$list->items(),'count'=>$list->total()]); } }