123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256 |
- <?php
- namespace app\user\controller;
- use app\user\model\TaxCompany;
- use app\user\model\TaxRelation;
- use app\user\model\TaxRelationLog;use think\App;
- use think\facade\Validate;
- class TaxCategory extends Base{
- protected $noLogin=["*"];
- public function __construct(App $app) {
- parent::__construct($app);
- $this->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()]);
- }
- }
|