<?php /** * 保存发票信息接口 * User: liyifei2012it * Date: 18/3/5 * Time: 16:44 */ namespace Apicp\Controller\Invoice; use Com\PackageValidate; use Common\Common\Constant; use Common\Common\Invoice; class SaveController extends AbstractController { /** * Save * @author liyifei * @desc 保存发票信息接口 * @param String invoId 发票ID(修改发票信息时,该参数必传) * @param Int isReceipt 是否收货(1=未收货;2=已收货) * @param Int invoInvoiceStatus 取消发票申请(6=已取消;不接收其他状态) * @param Int invoAmount:true 开票金额(单位:分) * @param String invoHeader:true 发票抬头 * @param Int invoType:true 发票类型(1=增值税普通发票;2=增值税专业发票) * @param String invoIdCode:true 纳税识别号 * @param String invoRegisterAddress:true 公司地址 * @param String invoRegisterPhone:true 公司电话 * @param String invoBankName:true 开户银行名称 * @param String invoAccout:true 银行账号 * @param String invoReceiver:true 收件人 * @param String invoReceiverPhone:true 联系电话 * @param String invoReceiverAddress:true 收件地址 * @param String invoApplyRemark 申请备注 */ public function Index_post() { // 验证规则 $rules = [ 'isReceipt' => 'integer|in:1,2', 'invoInvoiceStatus' => 'integer|in:6', 'invoAmount' => 'require|integer', 'invoHeader' => 'require', 'invoType' => 'require|integer|in:1,2', 'invoIdCode' => 'require', 'invoRegisterAddress' => 'require', 'invoRegisterPhone' => 'require', 'invoBankName' => 'require', 'invoAccout' => 'require', 'invoReceiver' => 'require', 'invoReceiverPhone' => 'require', 'invoReceiverAddress' => 'require', ]; // 验证数据 $validate = new PackageValidate($rules, [], array_keys($rules)); $postData = $validate->postData; $allPostData = I('post.'); if (isset($allPostData['invoApplyRemark'])) { $postData['invoApplyRemark'] = $allPostData['invoApplyRemark']; } $invoId = I('post.invoId', '', 'trim'); $invoiceServ = &Invoice::instance(); // 新增发票 if (empty($invoId)) { // 必须大于最小开票金额 if ($postData['invoAmount'] < Constant::INVOICE_MIN_AMOUNT) { E(L('_ERR_INVOICE_MIN_AMOUNT', ['invoideMinAmount' => Constant::INVOICE_MIN_AMOUNT / 100])); } // 必须小于最大开票金额(上限为10万) $maxAmount = $invoiceServ->fetchEnableAmount(); if ($postData['invoAmount'] > $maxAmount || $postData['invoAmount'] > Constant::INVOICE_MAX_AMOUNT) { E('_ERR_INVOICE_MAX_AMOUNT'); } unset($postData['isReceipt']); unset($postData['invoInvoiceStatus']); $invoiceServ->applyInvoice($postData); // 修改发票 } else { // 发票详情 $invoice = $invoiceServ->fetchInvoice(['invoId' => $invoId]); // 确认收货时,仅修改发票状态即可 if (isset($postData['isReceipt']) && $postData['isReceipt'] == Constant::IS_RECEIPT_TRUE) { if (isset($invoice['invoInvoiceStatus']) && $invoice['invoInvoiceStatus'] == Constant::INVOICE_STATUS_SHIPPED) { $updateData = [ 'invoId' => $invoId, 'invoInvoiceStatus' => Constant::INVOICE_STATUS_COMPLETE, ]; $invoiceServ->updateInvoice($updateData); } else { E('_ERR_INVOICE_STATUS_ERROR'); } } else { // 仅待审核状态才能取消申请 if (isset($postData['invoInvoiceStatus']) && $invoice['invoInvoiceStatus'] != Constant::INVOICE_STATUS_WATTING) { E('_ERR_INVOICE_STATUS_ERROR'); } $postData['invoId'] = $invoId; $invoiceServ->updateInvoice($postData); } } } }