|
@@ -0,0 +1,106 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+
|
|
|
+namespace app\admin\controller;
|
|
|
+use app\admin\BaseController;
|
|
|
+use think\App;
|
|
|
+use think\facade\Db;
|
|
|
+
|
|
|
+class OrderInv extends BaseController{
|
|
|
+ public function __construct(App $app) {parent::__construct($app);}
|
|
|
+ /**
|
|
|
+ * 新建销售单开票申请
|
|
|
+ */
|
|
|
+ public function create(){
|
|
|
+ $buy_id = isset($this->post['buy_id'])&&$this->post['buy_id']!=='' ? intval($this->post['buy_id']):"";
|
|
|
+ if($buy_id==''){
|
|
|
+ return error_show(1004,"参数 buy_id 不能为空");
|
|
|
+ }
|
|
|
+ $buyinfo =Db::name("customer_invoice")->where(['id'=>$buy_id,"is_del"=>0])->find();
|
|
|
+ if($buyinfo==false){
|
|
|
+ return error_show(1004,"购买方发票信息未找到");
|
|
|
+ }
|
|
|
+
|
|
|
+ $companyNo = isset($this->post['companyNo'])&&$this->post['companyNo']!=='' ? trim($this->post['companyNo']):"";
|
|
|
+ if($companyNo==''){
|
|
|
+ return error_show(1004,"参数 companyNo 不能为空");
|
|
|
+ }
|
|
|
+ $company = Db::name("company_info")->where(["companyNo"=>$companyNo])->find();
|
|
|
+ if($company==false){
|
|
|
+ return error_show(1004,"销售方信息未找到");
|
|
|
+ }
|
|
|
+ $khNo = isset($this->post['khNo'])&&$this->post['khNo']!=='' ? trim($this->post['khNo']):"";
|
|
|
+ if($khNo==''){
|
|
|
+ return error_show(1004,"参数 khNo 不能为空");
|
|
|
+ }
|
|
|
+ $customer = Db::name("customer_info")->where(["companyNo"=>$khNo])->find();
|
|
|
+ if($customer==false){
|
|
|
+ return error_show(1004,"客户信息未找到");
|
|
|
+ }
|
|
|
+ $invtype = isset($this->post['invtype'])&&$this->post['invtype']!=='' ? intval($this->post['invtype']):"";
|
|
|
+ if($invtype==''){
|
|
|
+ return error_show(1004,"参数 invtype 不能为空");
|
|
|
+ }
|
|
|
+ $email = isset($this->post['email'])&&$this->post['email']!=='' ? trim($this->post['email']):"";
|
|
|
+ $remark = isset($this->post['remark'])&&$this->post['remark']!=='' ? trim($this->post['remark']):"";
|
|
|
+ $orderArr = isset($this->post['orderArr'])&&!empty($this->post['orderArr']) ? $this->post['orderArr']:[];
|
|
|
+ if(empty($orderArr)){
|
|
|
+ return error_show(1004,"参数 orderArr 不能为空");
|
|
|
+ }
|
|
|
+ $temp =[];
|
|
|
+ $invNo=makeNo("INV");
|
|
|
+ $invfee=array_sum(array_column($orderArr,'inv_fee'));
|
|
|
+
|
|
|
+ foreach ($orderArr as $value){
|
|
|
+ if(!isset($value['sequenceNo']) ||$value['sequenceNo']==''){
|
|
|
+ return error_show(1004,"参数 sequenceNo 不能为空");
|
|
|
+ }
|
|
|
+ $qrd = Db::name("qrd_info")->where(["sequenceNo"=>$value['sequenceNo']])->find();
|
|
|
+ if($qrd['status']==2){
|
|
|
+ return error_show(1004,"确认单{$value['sequenceNo']}不参与对账");
|
|
|
+ }
|
|
|
+ if(!isset($value['inv_fee']) || $value['inv_fee']===''){
|
|
|
+ return error_show(1004,"参数 inv_fee 不能为空");
|
|
|
+ }
|
|
|
+ if($qrd['winv_fee']<$value['inv_fee']){
|
|
|
+ return error_show(1004,"确认单{$value['sequenceNo']}待开票金额不足");
|
|
|
+ }
|
|
|
+ $ascc=[
|
|
|
+ "assocNo"=>makeNo("AS"),
|
|
|
+ "apply_id"=>$this->uid,
|
|
|
+ "apply_name"=>$this->uname,
|
|
|
+ "type"=>1,
|
|
|
+ "orderCode"=>$value['sequenceNo'],
|
|
|
+ "viceCode"=>$invNo,
|
|
|
+ "order_total"=>$qrd['totalPrice'],
|
|
|
+ "vice_total"=>$invfee,
|
|
|
+ "cancel_fee"=>$value['inv_fee'],
|
|
|
+ "status"=>1,
|
|
|
+ "addtime"=>date("Y-m-d H:i:s"),
|
|
|
+ "updatetime"=>date("Y-m-d H:i:s")
|
|
|
+ ];
|
|
|
+ $temp[]=$ascc;
|
|
|
+ }
|
|
|
+ $inv=[
|
|
|
+ "invNo"=>$invNo,
|
|
|
+ "inv_value"=>$invfee,
|
|
|
+ "inv_out"=> $companyNo,
|
|
|
+ "inv_in"=>$khNo,
|
|
|
+ "apply_id"=>$this->uid,
|
|
|
+ "apply_name"=>$this->uname,
|
|
|
+ "inv_type"=>$invtype,//发票类型 专用 普通 电子专用 电子普通
|
|
|
+ "open_type"=>0, //开票类型 金税开票 金税线下 纯线下
|
|
|
+ "is_ticket"=>$company['out_ticket'], //是否支持金税开票
|
|
|
+ "remark"=>$remark, //申请备注
|
|
|
+ "exam_remark"=>'', //审核备注
|
|
|
+ "ainv_fee"=>0,//已核销金额
|
|
|
+ "winv_fee"=>$invfee,//未核销金额
|
|
|
+ "status"=>0,// 待财务开票/待金税开票 待财务审核 待填写物流 开票完成 开票失败/开票驳回 财务驳回
|
|
|
+ "is_del"=>0,
|
|
|
+ "email"=>$email,
|
|
|
+ "addtime"=>date("Y-m-d H:i:s"),
|
|
|
+ "updatetime"=>date("Y-m-d H:i:s")
|
|
|
+ ];
|
|
|
+
|
|
|
+ }
|
|
|
+}
|