SaveController.class.php
4.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
<?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);
}
}
}
}