model = new \app\cxinv\model\Invoice(); } public function List(){ $param= $this->request->param(["start"=>"","end"=>"","supplierNo"=>"","companyNo"=>"","status"=>"",'relaComNo'=>'', "invoice_number"=>"","invoice_type"=>"","page"=>1,"size"=>15,"apply_id"=>""],"post","trim"); $where=[]; $whereOr=[]; if($param['start']!=='') $where[]=['createTime','>=',startTime($param['start'])]; if($param['end']!=='') $where[]=['createTime','<=',endTime($param['end'])]; if($param['supplierNo']!=='') $where[]=['supplierNo','like','%'.$param['supplierNo'].'%']; if($param['companyNo']!=='') $where[]=['companyNo','like','%'.$param['companyNo'].'%']; if($param['status']!=='') $where[]=['status','=',$param['status']]; if($param['invoice_number']!=='') $where[]=['invoice_number','like','%'.$param['invoice_number'].'%']; if($param['invoice_type']!=='') $where[]=['invoice_type','=',$param['invoice_type']]; if($param['apply_id']!=='') $where[]=['apply_id','=',$param['apply_id']]; if($param['relaComNo']!=='') $where[]=['companyNo|supplierNo','=',$param['relaComNo']]; if($this->level!=1) { $whereOr[]=['apply_id','=', $this->uid]; $whereOr[]=['companyNo|supplierNo','=', '']; if($param['status']!=='') $whereOr[]=['status','=', $param['status']]; if($param['start']!=='') $whereOr[]=['createTime','>=',startTime($param['start'])]; if($param['end']!=='') $whereOr[]=['createTime','<=',endTime($param['end'])]; if($param['invoice_number']!=='') $whereOr[]=['invoice_number','like','%'.$param['invoice_number'].'%']; if($param['invoice_type']!=='') $whereOr[]=['invoice_type','=',$param['invoice_type']]; if ($param['supplierNo']!=='') $whereOr[]=['supplierNo','like','%'.$param['supplierNo'].'%']; if ($param['companyNo']!=='') $whereOr[]=['companyNo','like','%'.$param['companyNo'].'%']; } $list=$this->model ->where($where) ->whereOr(function($query)use($whereOr){ $query->where($whereOr); }) ->order('id desc') ->paginate(['page'=>$param['page'],'list_rows'=>$param['size']]); return success('获取成功',['list'=>$list->items(),'count'=>$list->total()]); } public function create(){ $param= $this->request->param(["list"=>[]],"post","trim"); if (!is_array($param['list'])) return error("请传入正确参数"); $valid = Validate::rule([ "invoice_code|发票代码"=>"max:255", "invoice_number|发票号码"=>"require|max:255|unique:app\cxinv\model\Invoice,invoice_number", "invoice_type|发票类型"=>"require|in:".implode(",",array_keys(\app\cxinv\model\Invoice::$invoiceType)), "invoice_total|发票税前金额"=>"float", "open_date|开票日期"=>"require|date|dateFormat:Y-m-d", "invoice_subtotal|发票税后金额"=>"float", "check_code|校验码"=>"max:255" ]); $number= array_column($param['list'],'invoice_number'); if (count($number)!=count(array_unique($number))) return error("发票号码重复"); foreach ($param['list'] as $k=>$v){ if(!$valid->check($v)) return error($valid->getError()); validate_invoice_info($v,$return); if($return['code']!=0) return error($v['invoice_number'].":".$return['message']); $param['list'][$k]['InvCode']=makeNo("FP",count($param['list'])>1 ?str_pad($k+1,4,"0",STR_PAD_RIGHT):""); $param['list'][$k]['apply_id']=$this->uid; $param['list'][$k]['apply_name']=$this->uname; } $this->model->saveAll($param['list']); return success("添加成功"); } //0待验证 1待确认公司信息 2 待关联数据 3 关联中 4 关联完成 public function save(){ $param= $this->request->param([ "id"=>"", "invoice_code"=>"", "invoice_number"=>"", "invoice_type"=>"", "invoice_total"=>"", "open_date"=>"", "invoice_subtotal"=>"", "check_code"=>"", "companyNo"=>"", "status"=>0, "supplierNo"=>""],"post","trim"); $valide=Validate::rule([ "id|发票编号id"=>"require|max:255", "invoice_code|发票代码"=>"requireIf:status,0|max:255", "invoice_number|发票号码"=>"requireIf:status,0|max:255|unique:app\cxinv\model\Invoice,invoice_number", "invoice_type|发票类型"=>"requireIf:status,0|in:".implode(",",array_keys(\app\cxinv\model\Invoice::$invoiceType)), "invoice_total|发票税前金额"=>"float", "open_date|开票日期"=>"requireIf:status,0|date|dateFormat:Y-m-d", "invoice_subtotal|发票税后金额"=>"float", "check_code|校验码"=>"max:255", "companyNo|业务公司"=>"requireIf:status,1|max:255", "supplierNo|供应商公司"=>"requireIf:status,1|max:255" ]); $invoice=$this->model->where("id",$param['id'])->findOrEmpty(); if($invoice->isEmpty()) return error("发票编号不存在"); $param['status'] = $invoice->status; if(!$valide->check($param)) return error($valide->getError()); if ($invoice->status>1) return error("发票当前状态无法修改"); if ($param['status']==0){ $invoice->invoice_code=$param['invoice_code']; $invoice->invoice_number=$param['invoice_number']; $invoice->invoice_type=$param['invoice_type']; $invoice->invoice_total=$param['invoice_total']; $invoice->open_date=$param['open_date']; $invoice->invoice_subtotal=$param['invoice_subtotal']; $invoice->check_code=$param['check_code']; } if($param['status']==1){ $invoice->companyNo=$param['companyNo']; $invoice->companyName=Business::where("companyNo",$param['companyNo'])->value("company",""); $invoice->supplierNo=$param['supplierNo']; $invoice->supplierName=Headquarters::where("code",$param['supplierNo'])->value("name",""); $invoice->status=2; } $invoice->save(); return success("保存成功"); } public function delete(){ $param= $this->request->param(["InvCode"=>""],"post","trim"); $valide=Validate::rule([ "InvCode|发票编号"=>"require|max:255" ]); if(!$valide->check($param)) return error($valide->getError()); $info=$this->model->where("InvCode",$param['InvCode'])->findOrEmpty(); if($info->isEmpty()) return error("发票编号不存在"); if(in_array($info->status,[3,4])) return error("发票状态不允许删除"); $info->delete(); return success("删除成功"); } public function info(){ $param= $this->request->param(["InvCode"=>""],"post","trim"); $valide=Validate::rule([ "InvCode|发票编号"=>"require|max:255" ]); if(!$valide->check($param)) return error($valide->getError()); $info=$this->model->where("InvCode",$param['InvCode'])->findOrEmpty(); if($info->isEmpty()) return error("发票编号不存在"); $info['ticket'] = InvoiceInfo::where("hpNo",$param['InvCode'])->findOrEmpty(); return success("获取成功",$info); } public function Ticket(){ $param= $this->request->param(["number"=>"","hpNo"=>""],"post","trim"); $valide=Validate::rule([ "number|发票编号"=>"require|max:255" ]); if(!$valide->check($param)) return error($valide->getError()); $condition=[]; $condition[]=['number','=',$param['number']]; if($param['hpNo']!=="") $condition[]=['hpNo','=',$param['hpNo']]; $info = InvoiceInfo::where($condition)->findOrEmpty(); if($info->isEmpty()) return error("发票编号不存在"); $info["invoice_item"]= \app\cxinv\model\InvoiceItem::where("invoiceCode",$info->hpNo)->select(); return success("获取成功",$info); } }