开票
This commit is contained in:
parent
a916c55786
commit
1ac760222c
|
|
@ -4,6 +4,7 @@ namespace app\admin\controller;
|
|||
|
||||
use app\admin\addresmart\Address;
|
||||
use app\admin\model\AuthGroupAccess;
|
||||
use app\admin\model\order\Invoice;
|
||||
use app\admin\model\OrderDispatch;
|
||||
use app\admin\model\Worker;
|
||||
use app\admin\model\WorkerItem;
|
||||
|
|
@ -92,7 +93,6 @@ class Order extends Backend
|
|||
->field(['id', 'nickname'])
|
||||
->select();
|
||||
|
||||
$this->view->assign("statusList", $this->model->getStatusList());
|
||||
$this->view->assign("sources", $res);
|
||||
$this->view->assign("coupons", $coupons);
|
||||
$this->view->assign("items", $formattedTree);
|
||||
|
|
@ -598,13 +598,8 @@ class Order extends Backend
|
|||
$result = false;
|
||||
Db::startTrans();
|
||||
try {
|
||||
//是否采用模型验证
|
||||
if ($this->modelValidate) {
|
||||
$name = str_replace("\\model\\", "\\validate\\", get_class($this->model));
|
||||
$validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.add' : $name) : $this->modelValidate;
|
||||
$this->model->validateFailException()->validate($validate);
|
||||
}
|
||||
$result = $this->model->allowField(true)->save($params);
|
||||
$params['invoice_method'] = 1;
|
||||
$result = (new Invoice())->allowField(true)->save($params);
|
||||
Db::commit();
|
||||
} catch (ValidateException|PDOException|Exception $e) {
|
||||
Db::rollback();
|
||||
|
|
|
|||
|
|
@ -1,9 +1,11 @@
|
|||
<?php
|
||||
|
||||
namespace app\admin\controller\order;
|
||||
namespace app\admin\controller\orders;
|
||||
|
||||
use app\admin\controller\order\Exception;
|
||||
use app\common\controller\Backend;
|
||||
use think\Db;
|
||||
use think\exception\DbException;
|
||||
use think\exception\PDOException;
|
||||
use think\exception\ValidateException;
|
||||
|
||||
|
|
@ -14,7 +16,6 @@ use think\exception\ValidateException;
|
|||
*/
|
||||
class Invoice extends Backend
|
||||
{
|
||||
|
||||
/**
|
||||
* Invoice模型对象
|
||||
* @var \app\admin\model\order\Invoice
|
||||
|
|
@ -25,6 +26,7 @@ class Invoice extends Backend
|
|||
{
|
||||
parent::_initialize();
|
||||
$this->model = new \app\admin\model\order\Invoice;
|
||||
$this->view->assign("statusList", $this->model->getStatusList());
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -71,4 +73,54 @@ class Invoice extends Backend
|
|||
$this->success();
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
* @param $ids
|
||||
* @return string
|
||||
* @throws DbException
|
||||
* @throws \think\Exception
|
||||
*/
|
||||
public function edit($ids = null)
|
||||
{
|
||||
$row = $this->model->get($ids);
|
||||
if (!$row) {
|
||||
$this->error(__('No Results were found'));
|
||||
}
|
||||
$adminIds = $this->getDataLimitAdminIds();
|
||||
if (is_array($adminIds) && !in_array($row[$this->dataLimitField], $adminIds)) {
|
||||
$this->error(__('You have no permission'));
|
||||
}
|
||||
if (false === $this->request->isPost()) {
|
||||
$order = model('order')->get($row['order_id']);
|
||||
$this->view->assign('order', $order);
|
||||
$this->view->assign('row', $row);
|
||||
return $this->view->fetch();
|
||||
}
|
||||
$params = $this->request->post('row/a');
|
||||
if (empty($params)) {
|
||||
$this->error(__('Parameter %s can not be empty', ''));
|
||||
}
|
||||
$params = $this->preExcludeFields($params);
|
||||
$result = false;
|
||||
Db::startTrans();
|
||||
try {
|
||||
//是否采用模型验证
|
||||
if ($this->modelValidate) {
|
||||
$name = str_replace("\\model\\", "\\validate\\", get_class($this->model));
|
||||
$validate = is_bool($this->modelValidate) ? ($this->modelSceneValidate ? $name . '.edit' : $name) : $this->modelValidate;
|
||||
$row->validateFailException()->validate($validate);
|
||||
}
|
||||
$result = $row->allowField(true)->save($params);
|
||||
Db::commit();
|
||||
} catch (ValidateException|PDOException|Exception $e) {
|
||||
Db::rollback();
|
||||
$this->error($e->getMessage());
|
||||
}
|
||||
if (false === $result) {
|
||||
$this->error(__('No rows were updated'));
|
||||
}
|
||||
$this->success();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -27,8 +27,15 @@ class Invoice extends Model
|
|||
protected $append = [
|
||||
|
||||
];
|
||||
|
||||
|
||||
public function getStatusList()
|
||||
{
|
||||
return [
|
||||
'0' => '代处理',
|
||||
'1' => '已开票',
|
||||
'2' => '已完成',
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -120,7 +120,7 @@
|
|||
<label class="control-label col-xs-12 col-sm-3">{:__('Coupons')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<select id="c-coupon" data-live-search="true" title="请选择" data-rule="required" name="row[coupon_id]" class="form-control selectpicker show-tick">
|
||||
<option {if $item['id'] == $row.coupon_id} selected {/if} selected value="0">不使用优惠</option>
|
||||
<option {if $item['id'] == $row.coupon_id} selected {/if} value="0">不使用优惠</option>
|
||||
{foreach $coupons as $item}
|
||||
<option {if $item['id'] == $row.coupon_id} selected {/if} data-subtext="{$item['description']}" value="{$item['id']}">{$item['code']}</option>
|
||||
{/foreach}
|
||||
|
|
|
|||
|
|
@ -6,13 +6,13 @@
|
|||
<input id="c-order_id" data-rule="required" disabled data-source="order/index" class="form-control" type="text" value="{$row.order_no}">
|
||||
</div>
|
||||
</div>
|
||||
<input class="form-control" style="display: none" type="text" value="{$row.id}">
|
||||
<input class="form-control" style="display: none" name="row[order_id]" type="text" value="{$row.id}">
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">发票类型:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<select id="c-source" data-live-search="true" title="请选择" data-rule="required" name="row[invoice_type]" class="form-control">
|
||||
<option value="1">公司发票</option>
|
||||
<option selected value="1">公司发票</option>
|
||||
<option value="2">个人发票</option>
|
||||
</select>
|
||||
</div>
|
||||
|
|
@ -32,7 +32,7 @@
|
|||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">金额:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-amount" data-rule="required" class="form-control" step="0.01" name="row[amount]" type="number">
|
||||
<input id="c-amount" data-rule="required" class="form-control" step="0.01" name="row[amount]" value="{$row.total}" type="number">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
|
|
|
|||
101
application/admin/view/orders/invoice/add.html
Normal file
101
application/admin/view/orders/invoice/add.html
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">订单编号:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-order_id" data-rule="required" disabled data-source="order/index" class="form-control" type="text" value="{$row.order_no}">
|
||||
</div>
|
||||
</div>
|
||||
<input class="form-control" style="display: none" name="row[order_id]" type="text" value="{$row.id}">
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">发票类型:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<select id="c-source" data-live-search="true" title="请选择" data-rule="required" name="row[invoice_type]" class="form-control">
|
||||
<option selected value="1">公司发票</option>
|
||||
<option value="2">个人发票</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">抬头/名字:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-title" data-rule="required" class="form-control" name="row[title]" type="text">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">纳税人识别号:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-tax_number" class="form-control" name="row[tax_number]" type="text">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">金额:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-amount" data-rule="required" class="form-control" step="0.01" name="row[amount]" value="{$row.total}" type="number">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">公司地址:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-company_address" class="form-control" name="row[company_address]" type="text">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">公司电话:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-company_phone" class="form-control" name="row[company_phone]" type="text">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">开户行:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-bank_name" class="form-control" name="row[bank_name]" type="text">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">开户账号:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-bank_account" class="form-control" name="row[bank_account]" type="text">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">接收邮箱:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-recipient_email" class="form-control" name="row[recipient_email]" type="text">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">接收地址:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-recipient_address" class="form-control" name="row[recipient_address]" type="text">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">接收名字:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-recipient_name" class="form-control" name="row[recipient_name]" type="text">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">接收电话:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-recipient_phone" class="form-control" name="row[recipient_phone]" type="text">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">备注:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<textarea id="c-remark" class="form-control " rows="5" name="row[remark]" cols="50"></textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group layer-footer">
|
||||
<label class="control-label col-xs-12 col-sm-2"></label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<button type="submit" class="btn btn-primary btn-embossed disabled">{:__('OK')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
|
|
@ -3,13 +3,16 @@
|
|||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Order_id')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-order_id" data-rule="required" data-source="order/index" class="form-control selectpage" name="row[order_id]" type="text" value="{$row.order_id|htmlentities}">
|
||||
<input id="c-order_id" data-rule="required" data-source="order/index" class="form-control" disabled type="text" value="{$order.order_no|htmlentities}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Invoice_type')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-invoice_type" data-rule="required" class="form-control" name="row[invoice_type]" type="number" value="{$row.invoice_type|htmlentities}">
|
||||
<select id="c-source" data-live-search="true" title="请选择" data-rule="required" name="row[invoice_type]" class="form-control">
|
||||
<option {if 1 == $row.invoice_type} selected {/if} value="1">公司发票</option>
|
||||
<option {if 2 == $row.invoice_type} selected {/if} value="2">个人发票</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
|
|
@ -93,7 +96,11 @@
|
|||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Status')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-status" class="form-control" name="row[status]" type="number" value="{$row.status|htmlentities}">
|
||||
<select id="c-status" data-live-search="true" title="请选择" data-rule="required" name="row[status]" class="form-control">
|
||||
<option {if 0 == $row.status} selected {/if} value="1">待处理</option>
|
||||
<option {if 1 == $row.status} selected {/if} value="2">已开票</option>
|
||||
<option {if 2 == $row.status} selected {/if} value="2">已完成</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
|
|
@ -102,18 +109,7 @@
|
|||
<textarea id="c-remark" class="form-control " rows="5" name="row[remark]" cols="50">{$row.remark|htmlentities}</textarea>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Created_at')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-created_at" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[created_at]" type="text" value="{$row.created_at}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Updated_at')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-updated_at" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[updated_at]" type="text" value="{$row.updated_at}">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group layer-footer">
|
||||
<label class="control-label col-xs-12 col-sm-2"></label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
|
|
@ -7,7 +7,7 @@
|
|||
<div class="widget-body no-padding">
|
||||
<div id="toolbar" class="toolbar">
|
||||
<a href="javascript:;" class="btn btn-primary btn-refresh" title="{:__('Refresh')}" ><i class="fa fa-refresh"></i> </a>
|
||||
<a href="javascript:;" class="btn btn-success btn-add {:$auth->check('order.invoice/add')?'':'hide'}" title="{:__('Add')}" ><i class="fa fa-plus"></i> {:__('Add')}</a>
|
||||
<!-- <a href="javascript:;" class="btn btn-success btn-add {:$auth->check('order.invoice/add')?'':'hide'}" title="{:__('Add')}" ><i class="fa fa-plus"></i> {:__('Add')}</a>-->
|
||||
<a href="javascript:;" class="btn btn-success btn-edit btn-disabled disabled {:$auth->check('order.invoice/edit')?'':'hide'}" title="{:__('Edit')}" ><i class="fa fa-pencil"></i> {:__('Edit')}</a>
|
||||
<a href="javascript:;" class="btn btn-danger btn-del btn-disabled disabled {:$auth->check('order.invoice/del')?'':'hide'}" title="{:__('Delete')}" ><i class="fa fa-trash"></i> {:__('Delete')}</a>
|
||||
|
||||
|
|
@ -21,6 +21,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'cascader'], function
|
|||
Toastr.info('复制成功');
|
||||
}
|
||||
|
||||
|
||||
// 拼装文本
|
||||
function assembleOrderMessage(data) {
|
||||
const message = `
|
||||
|
|
@ -407,6 +408,35 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'cascader'], function
|
|||
console.log('delete');
|
||||
Form.api.bindevent($("form[role=form]"));
|
||||
},
|
||||
invoice: function () {
|
||||
function toggleInvoiceFields() {
|
||||
const type = $('#c-source').val();
|
||||
console.log(type);
|
||||
if (type === '1') {
|
||||
// 公司发票
|
||||
$('#c-tax_number').closest('.form-group').show();
|
||||
$('#c-company_address').closest('.form-group').show();
|
||||
$('#c-company_phone').closest('.form-group').show();
|
||||
$('#c-bank_name').closest('.form-group').show();
|
||||
$('#c-bank_account').closest('.form-group').show();
|
||||
} else {
|
||||
// 个人发票
|
||||
$('#c-tax_number').closest('.form-group').hide();
|
||||
$('#c-company_address').closest('.form-group').hide();
|
||||
$('#c-company_phone').closest('.form-group').hide();
|
||||
$('#c-bank_name').closest('.form-group').hide();
|
||||
$('#c-bank_account').closest('.form-group').hide();
|
||||
}
|
||||
}
|
||||
// 初始化时执行一次
|
||||
toggleInvoiceFields();
|
||||
|
||||
// 监听 select 改变
|
||||
$('#c-source').on('change',function () {
|
||||
toggleInvoiceFields();
|
||||
});
|
||||
Form.api.bindevent($("form[role=form]"));
|
||||
},
|
||||
api: {
|
||||
bindevent: function () {
|
||||
Form.api.bindevent($("form[role=form]"));
|
||||
|
|
|
|||
|
|
@ -5,12 +5,12 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
|
|||
// 初始化表格参数配置
|
||||
Table.api.init({
|
||||
extend: {
|
||||
index_url: 'order.invoice/index' + location.search,
|
||||
add_url: 'order.invoice/add',
|
||||
edit_url: 'order.invoice/edit',
|
||||
del_url: 'order.invoice/del',
|
||||
multi_url: 'order.invoice/multi',
|
||||
import_url: 'order.invoice/import',
|
||||
index_url: 'orders.invoice/index' + location.search,
|
||||
add_url: 'orders.invoice/add',
|
||||
edit_url: 'orders.invoice/edit',
|
||||
del_url: 'orders.invoice/del',
|
||||
multi_url: 'orders.invoice/multi',
|
||||
import_url: 'orders.invoice/import',
|
||||
table: 'order_invoice',
|
||||
}
|
||||
});
|
||||
|
|
@ -29,11 +29,22 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
|
|||
{checkbox: true},
|
||||
{field: 'id', title: __('Id')},
|
||||
{field: 'order_id', title: __('Order_id')},
|
||||
{field: 'invoice_type', title: __('Invoice_type')},
|
||||
{field: 'invoice_type', title: __('Invoice_type'),formatter: function (val) {
|
||||
return val === 1 ? '公司发票': '个人发票';
|
||||
}},
|
||||
{field: 'status', title: __('Status'),formatter:function (val) {
|
||||
let list = [
|
||||
'代处理',
|
||||
'已开票',
|
||||
'已完成',
|
||||
];
|
||||
return list[val] ?? '';
|
||||
}},
|
||||
|
||||
{field: 'title', title: __('Title'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content},
|
||||
{field: 'tax_number', title: __('Tax_number'), operate: 'LIKE'},
|
||||
{field: 'amount', title: __('Amount'), operate:'BETWEEN'},
|
||||
{field: 'invoice_method', title: __('Invoice_method')},
|
||||
// {field: 'invoice_method', title: __('Invoice_method')},
|
||||
{field: 'recipient_email', title: __('Recipient_email'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content},
|
||||
{field: 'company_address', title: __('Company_address'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content},
|
||||
{field: 'company_phone', title: __('Company_phone'), operate: 'LIKE'},
|
||||
|
|
@ -43,9 +54,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
|
|||
{field: 'recipient_name', title: __('Recipient_name'), operate: 'LIKE'},
|
||||
{field: 'recipient_phone', title: __('Recipient_phone'), operate: 'LIKE'},
|
||||
{field: 'issued_at', title: __('Issued_at'), operate:'RANGE', addclass:'datetimerange', autocomplete:false},
|
||||
{field: 'status', title: __('Status')},
|
||||
{field: 'created_at', title: __('Created_at'), operate:'RANGE', addclass:'datetimerange', autocomplete:false},
|
||||
{field: 'updated_at', title: __('Updated_at'), operate:'RANGE', addclass:'datetimerange', autocomplete:false},
|
||||
|
||||
{field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate}
|
||||
]
|
||||
]
|
||||
|
|
@ -58,6 +67,31 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
|
|||
Controller.api.bindevent();
|
||||
},
|
||||
edit: function () {
|
||||
function toggleInvoiceFields() {
|
||||
const type = $('#c-source').val();
|
||||
if (type === '1') {
|
||||
// 公司发票
|
||||
$('#c-tax_number').closest('.form-group').show();
|
||||
$('#c-company_address').closest('.form-group').show();
|
||||
$('#c-company_phone').closest('.form-group').show();
|
||||
$('#c-bank_name').closest('.form-group').show();
|
||||
$('#c-bank_account').closest('.form-group').show();
|
||||
} else {
|
||||
// 个人发票
|
||||
$('#c-tax_number').closest('.form-group').hide();
|
||||
$('#c-company_address').closest('.form-group').hide();
|
||||
$('#c-company_phone').closest('.form-group').hide();
|
||||
$('#c-bank_name').closest('.form-group').hide();
|
||||
$('#c-bank_account').closest('.form-group').hide();
|
||||
}
|
||||
}
|
||||
// 初始化时执行一次
|
||||
toggleInvoiceFields();
|
||||
|
||||
// 监听 select 改变
|
||||
$('#c-source').on('change',function () {
|
||||
toggleInvoiceFields();
|
||||
});
|
||||
Controller.api.bindevent();
|
||||
},
|
||||
api: {
|
||||
Loading…
Reference in New Issue
Block a user