Commit b0498a1a by lizhilin

更新

parent cdbcb356
...@@ -31,11 +31,11 @@ protected function grid() ...@@ -31,11 +31,11 @@ protected function grid()
// 添加一行表头数据 // 添加一行表头数据
$grid->header(function () use ($invoicedMoney, $receivedMoney, $receiptNoinvoice, $invoiceNoreceipt) { $grid->header(function () use ($invoicedMoney, $receivedMoney, $receiptNoinvoice, $invoiceNoreceipt) {
return '<div class="row" style="text-align:center;">' . return '<div class="row" style="text-align:center;">' .
'<div class="col-md-7">合计</div>' . '<div class="col-md-7" >合计</div>' .
'<div class="col-md-1">' . $invoicedMoney . '</div>' . '<div class="col-md-1">' . $invoicedMoney . '</div>' .
'<div class="col-md-1">' . $receivedMoney . '</div>' . '<div class="col-md-1">' . $receivedMoney . '</div>' .
'<div class="col-md-1">' . $receiptNoinvoice . '</div>' . '<div class="col-md-1">' . $receiptNoinvoice . '</div>' .
'<div class="col-md-1">' . $invoiceNoreceipt . '</div>' . '<div class="col-md-2">' . $invoiceNoreceipt . '</div>' .
'</div>'; '</div>';
}); });
//$grid->column('id')->sortable(); //$grid->column('id')->sortable();
......
...@@ -6,12 +6,14 @@ ...@@ -6,12 +6,14 @@
use App\Models\Covenant as ModelsCovenant; use App\Models\Covenant as ModelsCovenant;
use App\Models\CovenantReceivePayment as ModelsCovenantReceivePayment; use App\Models\CovenantReceivePayment as ModelsCovenantReceivePayment;
use App\Models\Lawyer as ModelLawyer; use App\Models\Lawyer as ModelLawyer;
use App\Models\LawyerCost as ModelLawyerCost;
use Dcat\Admin\Form; use Dcat\Admin\Form;
use Dcat\Admin\Grid; use Dcat\Admin\Grid;
use Dcat\Admin\Show; use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController; use Dcat\Admin\Http\Controllers\AdminController;
use App\Admin\Actions\CovenantReceive; use App\Admin\Actions\CovenantReceive;
use App\Admin\Actions\CovenantInvoice; use App\Admin\Actions\CovenantInvoice;
use Dcat\Admin\Admin;
class LawyerCollectController extends AdminController class LawyerCollectController extends AdminController
{ {
...@@ -25,62 +27,96 @@ protected function grid() ...@@ -25,62 +27,96 @@ protected function grid()
return Grid::make(new LawyerCollect(), function (Grid $grid) { return Grid::make(new LawyerCollect(), function (Grid $grid) {
$number = $grid->model()->filter()->input('number') ?? ''; //律师编号 $number = $grid->model()->filter()->input('number') ?? ''; //律师编号
$year = $grid->model()->filter()->input('year') ?? date("Y"); //律师编号
$received_at = $invoiced_at = []; $received_at = $invoiced_at = [];
$received_at['start'] = $_GET['received_at']['start'] ?? ''; $received_at['start'] = $_GET['received_at']['start'] ?? '';
$received_at['end'] = $_GET['received_at']['end'] ?? ''; $received_at['end'] = $_GET['received_at']['end'] ?? '';
$invoiced_at['start'] = $_GET['invoiced_at']['start'] ?? ''; $invoiced_at['start'] = $_GET['invoiced_at']['start'] ?? '';
$invoiced_at['end'] = $_GET['invoiced_at']['end'] ?? ''; $invoiced_at['end'] = $_GET['invoiced_at']['end'] ?? '';
$lawyer_id = 0;
$lawyObj = ModelLawyer::where('number', $number)->first();
if ($lawyObj) {
$lawyer_id = $lawyObj->number;
}
//创收已收款 //创收已收款
$received_amount = ModelsCovenantReceivePayment::getReceivedMoneyByNumber($number, $received_at, $invoiced_at); $received_amount = ModelsCovenantReceivePayment::getReceivedMoneyByNumber($number, $year, $received_at, $invoiced_at);
//已开票 //已开票
$invoiced_money = ModelsCovenantReceivePayment::getInvoicedMoneyByNumber($number, $received_at, $invoiced_at); $invoiced_money = ModelsCovenantReceivePayment::getInvoicedMoneyByNumber($number, $year, $received_at, $invoiced_at);
//收款未开票 //收款未开票
$received_noinvoiced = ($received_amount - $invoiced_money) > 0 ? $received_amount - $invoiced_money : 0; $received_noinvoiced = ($received_amount - $invoiced_money) > 0 ? $received_amount - $invoiced_money : 0;
//开票未收款 //开票未收款
$invoiced_noreceived = ($invoiced_money - $received_amount) > 0 ? $invoiced_money - $received_amount : 0; $invoiced_noreceived = ($invoiced_money - $received_amount) > 0 ? $invoiced_money - $received_amount : 0;
//提成金额 //提成金额
$commissionAmount = ModelsCovenantReceivePayment::getCommissionAmount($number, $received_at); $commissionAmount = ModelsCovenantReceivePayment::getCommissionAmount($number, $year, $received_at);
//成本合计
$costTotal = ModelLawyerCost::getTotalCost($lawyer_id, $year);
//基本工资 //基本工资
$basicSalary = ModelsCovenantReceivePayment::getTotalBasicSalary($number, $received_at); $basicSalary = ModelLawyerCost::getBasiSalary($lawyer_id, $year);
//专项附加 //专项附加
$special_additional = ModelsCovenantReceivePayment::getTotalSpecialAdditional($number, $received_at); $special_additional = ModelLawyerCost::getSpecialAdditional($lawyer_id, $year);
//社保 //社保
$social = ModelsCovenantReceivePayment::getTotalSocial($number, $received_at); $social = ModelLawyerCost::getSocial($lawyer_id, $year);
//公积金 //公积金
$accumulation_fund = ModelsCovenantReceivePayment::getTotalAccumulationFund($number, $received_at); $accumulation_fund = ModelLawyerCost::getAccumulationFund($lawyer_id, $year);
//贴票金额
$posting_tickets = ModelLawyerCost::getAllPostingTicketsMoney($lawyer_id, $year);
//预支款
$advance_fee = ModelLawyerCost::getAdvanceFee($lawyer_id, $year);
//可结算提成
$payable_amount = ModelLawyerCost::getAllPayableAmount($lawyer_id, $year);
// 添加一行表头数据 // 添加一行表头数据
$grid->header(function () use ($received_amount, $received_noinvoiced, $commissionAmount, $invoiced_noreceived, $basicSalary, $special_additional, $social, $accumulation_fund) { $grid->header(function () use ($received_amount, $commissionAmount, $received_noinvoiced, $invoiced_noreceived, $costTotal, $basicSalary, $special_additional, $social, $accumulation_fund, $posting_tickets, $advance_fee, $payable_amount) {
return '<div class="table-responsive table-wrapper complex-container table-middle mt-1 table-collapse " >' . return '<div class="table-responsive table-wrapper complex-container table-middle mt-1 table-collapse ">
'<table class="table custom-data-table data-table" id="grid-table"> <table class="table custom-data-table data-table" id="grid-table">
<thead> <thead>
<tr> <tr>
<th width="160" style="text-align:center;" colspan="2">合计</th> <th width="90">&nbsp;&nbsp;&nbsp;</th>
<th width="90" style="">' . $received_amount . '</th> <th width="90">&nbsp;&nbsp;合计&nbsp;&nbsp;</th>
<th style="">' . $commissionAmount . '</th> <th width="90">&nbsp;&nbsp;</th>
<th style="">' . $received_noinvoiced . '</th> <th width="90" style="text-align:center;">' . $received_amount . '</th>
<th style="">' . $invoiced_noreceived . '</th> <th width="80" style="text-align:center;">' . $commissionAmount . '</th>
<th style="">成本合计</th> <th width="90" style="text-align:center;">' . $received_noinvoiced . '</th>
<th style="">' . $basicSalary . '</th> <th width="90" style="text-align:center;">' . $invoiced_noreceived . '</th>
<th style="">' . $special_additional . '</th> <th width="90" style="text-align:center;">' . $costTotal . '</th>
<th style="">' . $social . '</th> <th width="90" style="text-align:center;">' . $basicSalary . '</th>
<th style="">' . $accumulation_fund . '</th> <th width="90" style="text-align:center;">' . $special_additional . '</th>
<th style="">10000</th> <th width="90" style="text-align:center;">' . $social . '</th>
<th style="">30000</th> <th width="90" style="text-align:center;">' . $accumulation_fund . '</th>
<th style="">48899</th> <th width="90" style="text-align:center;">' . $posting_tickets . '</th>
<th width="90" style="text-align:center;">' . $advance_fee . '</th>
<th width="90" style="text-align:center;">' . $payable_amount . '</th>
</tr> </tr>
</thead> </thead>
<tbody>
</tbody> </tbody>
</table>' </table>
. '</div>'; </div>';
}); });
// $grid->header(function () {
// return '<div class="row" style="text-align:center;">' .
// '<div class="col-md-3" >合计</div>' .
// '<div class="col-md-1">1</div>' .
// '<div class="col-md-1">2</div>' .
// '<div class="col-md-1">3</div>' .
// '<div class="col-md-1">4</div>' .
// '<div class="col-md-1">5</div>' .
// '<div class="col-md-1">6</div>' .
// '<div class="col-md-1">7</div>' .
// '<div class="col-md-1">8</div>' .
// '<div class="col-md-1">9</div>' .
// '<div class="col-md-1">10</div>' .
// '<div class="col-md-1">11</div>' .
// '</div>';
// });
//$grid->column('id')->sortable(); //$grid->column('id')->sortable();
$grid->column('lnumber', '律师编号')->width(90); $grid->column('lnumber', '律师编号')->width(90);
$grid->column('lname', '律师名称')->width(90); $grid->column('lname', '律师名称')->width(90);
$grid->column('commission_ratio', '提成比例(%)')->width(100); $grid->column('commission_ratio', '提成比例(%)')->width(90);
$grid->column('receipt_money', '创收已收款')->width(90); $grid->column('receipt_money', '创收已收款')->width(90);
$grid->column('commission_amount', '提成金额')->width(90); $grid->column('commission_amount', '提成金额')->width(80);
$grid->column('receipt_noinvoice', '已收款未开票')->width(90); $grid->column('receipt_noinvoice', '已收款未开票')->width(90);
$grid->column('invoice_noreceipt', '已开票未收款')->width(90); $grid->column('invoice_noreceipt', '已开票未收款')->width(90);
$grid->column('cost', '成本合计')->width(90); $grid->column('cost', '成本合计')->width(90);
...@@ -105,9 +141,21 @@ protected function grid() ...@@ -105,9 +141,21 @@ protected function grid()
$filter->panel(); $filter->panel();
$filter->like('number', '律师编号')->width(3); $filter->like('number', '律师编号')->width(3);
$filter->like('name', '律师姓名')->width(3); $filter->like('name', '律师姓名')->width(3);
$filter->equal('year', '年份')->width(3)->default(date('Y'));
$filter->between('received_at', '收款日期')->month()->width(4); $filter->between('received_at', '收款日期')->month()->width(4);
$filter->between('invoiced_at', '开票日期')->month()->width(4); $filter->between('invoiced_at', '开票日期')->month()->width(4);
}); });
$grid->actions(function (Grid\Displayers\Actions $actions) {
//编辑
if (!Admin::user()->can('lawyer_cost_list_edit')) {
$actions->disableEdit();
}
//删除
if (!Admin::user()->can('lawyer_cost_list_edit-delete')) {
$actions->disableDelete();
}
});
}); });
} }
} }
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
use Dcat\Admin\Show; use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController; use Dcat\Admin\Http\Controllers\AdminController;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Dcat\Admin\Admin;
class LawyerCostController extends AdminController class LawyerCostController extends AdminController
{ {
...@@ -61,6 +62,9 @@ protected function grid() ...@@ -61,6 +62,9 @@ protected function grid()
return self::getPersonalIncomeTax($this->number, $year); return self::getPersonalIncomeTax($this->number, $year);
}); });
if (!Admin::user()->can('lawyer_cost_add')) {
$grid->disableCreateButton();
}
$grid->disableViewButton(); $grid->disableViewButton();
$grid->disableEditButton(); $grid->disableEditButton();
$grid->disableDeleteButton(); $grid->disableDeleteButton();
...@@ -76,44 +80,15 @@ protected function grid() ...@@ -76,44 +80,15 @@ protected function grid()
}); });
$grid->actions(function (Grid\Displayers\Actions $actions) { $grid->actions(function (Grid\Displayers\Actions $actions) {
//$actions->append(new UserBuyCode($actions->row->id));
//成本汇总 //成本汇总
$actions->append('<a href="/lycost-collect?no=' . $this->number . '" alt="成本汇总" target="_blank">成本汇总</a>'); if (Admin::user()->can('lycost-collect')) {
// 成本明细 $actions->append('<a href="/lycost-collect?no=' . $this->number . '" alt="成本汇总" target="_blank">成本汇总</a>');
$actions->append('<a href="/lycost-list?no=' . $this->number . '" alt="成本明细" target="_blank">成本明细</a>'); }
// 或者使用 RowAction 来添加按钮
//$actions->append(RowAction::make('自定义按钮')->route('custom.route'));
});
});
}
protected function grid2()
{
return Grid::make(new ModelLawyerCost(), function (Grid $grid) {
$grid->column('id')->sortable();
$grid->column('year');
$grid->column('month');
$grid->column('number');
$grid->column('lname');
$grid->column('basic_salary');
$grid->column('social_person_fee');
$grid->column('social_company_fee');
$grid->column('accumulation_fund_person_fee');
$grid->column('accumulation_fund_company_fee');
$grid->column('annual_inspection_fee');
$grid->column('annuity');
$grid->column('office_rental_fee');
$grid->column('noticket_cost');
$grid->column('posting_tickets_fee');
$grid->column('assistant_fee');
$grid->column('special_additional');
$grid->column('advance_fee');
$grid->column('personal_income_tax');
$grid->column('created_at');
$grid->column('updated_at')->sortable();
$grid->filter(function (Grid\Filter $filter) { // 成本明细
$filter->equal('id'); if (Admin::user()->can('lycost-list')) {
$actions->append('<a href="/lycost-list?no=' . $this->number . '" alt="成本明细" target="_blank">成本明细</a>');
}
}); });
}); });
} }
......
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
use Dcat\Admin\Show; use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController; use Dcat\Admin\Http\Controllers\AdminController;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Dcat\Admin\Admin;
class LawyerCostListController extends AdminController class LawyerCostListController extends AdminController
{ {
...@@ -62,6 +63,12 @@ protected function grid() ...@@ -62,6 +63,12 @@ protected function grid()
$grid->disableViewButton(); $grid->disableViewButton();
$grid->disableCreateButton(); $grid->disableCreateButton();
$grid->disableRowSelector(); $grid->disableRowSelector();
if (!Admin::user()->can('lawyer_cost_list_edit')) {
$grid->disableEditButton();
}
if (!Admin::user()->can('lawyer_cost_list_delete')) {
$grid->disableEditButton();
}
$grid->filter(function (Grid\Filter $filter) { $grid->filter(function (Grid\Filter $filter) {
// 更改为 panel 布局 // 更改为 panel 布局
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
use Dcat\Admin\Http\Controllers\AdminController; use Dcat\Admin\Http\Controllers\AdminController;
use App\Admin\Actions\CovenantReceive; use App\Admin\Actions\CovenantReceive;
use App\Admin\Actions\CovenantInvoice; use App\Admin\Actions\CovenantInvoice;
use Dcat\Admin\Admin;
class LawyerCovenantIncomeController extends AdminController class LawyerCovenantIncomeController extends AdminController
{ {
...@@ -71,63 +72,22 @@ protected function grid() ...@@ -71,63 +72,22 @@ protected function grid()
}); });
$grid->actions(function (Grid\Displayers\Actions $actions) use ($lawyerID) { $grid->actions(function (Grid\Displayers\Actions $actions) use ($lawyerID) {
//添加收款 //添加收款
$actions->append(new CovenantReceive($actions->row->id)); if (Admin::user()->can('receive-payment')) {
$actions->append(new CovenantReceive($actions->row->id));
}
//添加开票 //添加开票
$actions->append(new CovenantInvoice($actions->row->id)); if (Admin::user()->can('invoiced-payment')) {
$actions->append(new CovenantInvoice($actions->row->id));
}
//查看收款 //查看收款
$cid = $actions->row->cid; $cid = $actions->row->cid;
$actions->append('<a href="/view-covenant-received?cid=' . $cid . '" alt="查看收款" target="_blank">查看收款</a>'); if (Admin::user()->can('view-received')) {
$actions->append('<a href="/view-covenant-received?cid=' . $cid . '" alt="查看收款" target="_blank">查看收款</a>');
}
//查看开票 //查看开票
$actions->append('<a href="/view-covenant-invoiced?cid=' . $cid . '" alt="查看开票" target="_blank">查看开票</a>'); if (Admin::user()->can('view-invoiced')) {
}); $actions->append('<a href="/view-covenant-invoiced?cid=' . $cid . '" alt="查看开票" target="_blank">查看开票</a>');
});
}
protected function grid2()
{
return Grid::make(ModelsCovenant::with(['principal', 'lawyer']), function (Grid $grid) {
$lawyerID = $grid->model()->filter()->input('no') ?? ''; //律师ID
if ($lawyerID) {
$grid->model()->where('lawyer_id', $lawyerID);
}
$grid->column('id')->sortable();
$grid->column('number', '合同编号');
$grid->column('cname', '合同名称');
$grid->column('ctype', '合同类型')->display(function ($val) {
return Covenant::CTYPE[$val];
});
//$grid->column('sign_at');
$grid->column('principal.name', '委托人');
$grid->column('field1', '开票金额');
$grid->column('field2', '已收款');
$grid->column('field3', '已收款未开票');
$grid->column('field4', '已开票未收款');
// $grid->column('created_at');
// $grid->column('updated_at')->sortable();
$grid->disableViewButton();
$grid->filter(function (Grid\Filter $filter) {
// 更改为 panel 布局
$filter->panel();
$filter->like('number', '合同编号')->width(3);
$filter->like('cname', '合同名称')->width(3);
$filter->like('principal.name', '委托人')->width(3);
$filter->equal('payment_method')->select(Covenant::PAYMENT_METHOD)->width(3);
$filter->between('sign_at', '签约日期')->date()->width(4);
});
//文字信息
$grid->tools(function (Grid\Tools $tools) use ($grid, $lawyerID) {
$fullname = $number = '';
if ($lawyerID) {
$obj = ModelLawyer::find($lawyerID);
$fullname = $obj->name;
$number = $obj->number;
} }
$card_info = "&nbsp;&nbsp;律师编号:{$number}&nbsp;&nbsp;&nbsp;律师姓名:{$fullname}";
$tools->append($card_info);
}); });
}); });
} }
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
use Dcat\Admin\Grid; use Dcat\Admin\Grid;
use Dcat\Admin\Show; use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController; use Dcat\Admin\Http\Controllers\AdminController;
use Dcat\Admin\Admin;
class LawyerIncomeController extends AdminController class LawyerIncomeController extends AdminController
{ {
...@@ -59,8 +60,15 @@ protected function grid() ...@@ -59,8 +60,15 @@ protected function grid()
$grid->column('field4', '已开票未收款')->display(function ($val) { $grid->column('field4', '已开票未收款')->display(function ($val) {
$id = $this->id; $id = $this->id;
$year = date('Y'); $year = date('Y');
$linkstr = '<a href="/lawyer-covenant-income?no=' . $id . '" target="_blank">创收收款表</a>&nbsp;&nbsp;'; $linkstr = '';
$linkstr .= '<a href="/receive_payment?no=' . $id . '&year=' . $year . '" target="_blank">已收款/已开票汇总</a><br/>'; //创收收款表
if (Admin::user()->can('lawyer-covenant-income')) {
$linkstr .= '<a href="/lawyer-covenant-income?no=' . $id . '" target="_blank">创收收款表</a>&nbsp;&nbsp;';
}
//已收款/已开票汇总
if (Admin::user()->can('received-invoiced')) {
$linkstr .= '<a href="/receive_payment?no=' . $id . '&year=' . $year . '" target="_blank">已收款/已开票汇总</a><br/>';
}
return $linkstr; return $linkstr;
}); });
...@@ -78,13 +86,6 @@ protected function grid() ...@@ -78,13 +86,6 @@ protected function grid()
$filter->like('year', '年份')->width(3)->default(date("Y"))->ignore(); $filter->like('year', '年份')->width(3)->default(date("Y"))->ignore();
//$filter->date('sign_at')->format('YYYY-MM-DD'); //$filter->date('sign_at')->format('YYYY-MM-DD');
}); });
$grid->actions(function (Grid\Displayers\Actions $actions) {
//成本汇总
$actions->append('<a href="/lycost-collect?no=' . $this->number . '" alt="成本汇总" target="_blank">成本汇总</a>');
// 成本明细
$actions->append('<a href="/lycost-list?no=' . $this->number . '" alt="成本明细" target="_blank">成本明细</a>');
});
}); });
} }
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Dcat\Admin\Widgets\Modal; use Dcat\Admin\Widgets\Modal;
use App\Admin\Forms\CovenantInvoiceForm; use App\Admin\Forms\CovenantInvoiceForm;
use Dcat\Admin\Admin;
class ViewCovenantInvoicedController extends AdminController class ViewCovenantInvoicedController extends AdminController
{ {
...@@ -27,18 +28,19 @@ protected function grid() ...@@ -27,18 +28,19 @@ protected function grid()
return Grid::make(new ModelsCovenantReceivePayment(), function (Grid $grid) { return Grid::make(new ModelsCovenantReceivePayment(), function (Grid $grid) {
$cid = $grid->model()->filter()->input('cid') ?? 0; $cid = $grid->model()->filter()->input('cid') ?? 0;
$grid->tools(function (Grid\Tools $tools) use ($cid) { if (Admin::user()->can('view-invoiced-add')) {
$tools->append(Modal::make() $grid->tools(function (Grid\Tools $tools) use ($cid) {
// 大号弹窗 $tools->append(Modal::make()
->lg() // 大号弹窗
// 弹窗标题 ->lg()
->title('新增') // 弹窗标题
// 按钮 ->title('新增')
->button('<button class="btn btn-primary"><i class="feather icon-plus"></i> 新增</button>') // 按钮
// 弹窗内容 ->button('<button class="btn btn-primary"><i class="feather icon-plus"></i> 新增</button>')
->body(CovenantInvoiceForm::make()->payload(['id' => $cid]))); // 弹窗内容
}); ->body(CovenantInvoiceForm::make()->payload(['id' => $cid])));
});
}
$grid->model()->where('rtype', 2)->orderBy("id", "desc"); $grid->model()->where('rtype', 2)->orderBy("id", "desc");
//$grid->column('id')->sortable(); //$grid->column('id')->sortable();
$grid->column('invoiced_at', '开票时间'); $grid->column('invoiced_at', '开票时间');
...@@ -60,6 +62,17 @@ protected function grid() ...@@ -60,6 +62,17 @@ protected function grid()
$tools->append($card_info); $tools->append($card_info);
}); });
$grid->actions(function (Grid\Displayers\Actions $actions) {
//编辑
if (!Admin::user()->can('view-invoiced-edit')) {
$actions->disableEdit();
}
//删除
if (!Admin::user()->can('view-invoiced-delete')) {
$actions->disableDelete();
}
});
}); });
} }
......
...@@ -14,6 +14,8 @@ ...@@ -14,6 +14,8 @@
use Dcat\Admin\Layout\Content; use Dcat\Admin\Layout\Content;
use Dcat\Admin\Widgets\Modal; use Dcat\Admin\Widgets\Modal;
use App\Admin\Forms\CovenantReceiveForm; use App\Admin\Forms\CovenantReceiveForm;
use App\Models\Lawyer as ModelsLawyer;
use Dcat\Admin\Admin;
class ViewCovenantReceivedController extends AdminController class ViewCovenantReceivedController extends AdminController
{ {
...@@ -28,18 +30,22 @@ protected function grid() ...@@ -28,18 +30,22 @@ protected function grid()
return Grid::make(new ModelsCovenantReceivePayment(), function (Grid $grid) { return Grid::make(new ModelsCovenantReceivePayment(), function (Grid $grid) {
$cid = $grid->model()->filter()->input('cid') ?? 0; $cid = $grid->model()->filter()->input('cid') ?? 0;
$grid->tools(function (Grid\Tools $tools) use ($cid) { $grid->tools(function (Grid\Tools $tools) use ($cid) {
$tools->append(Modal::make() if (Admin::user()->can('view-received-add')) {
// 大号弹窗 $tools->append(Modal::make()
->lg() // 大号弹窗
// 弹窗标题 ->lg()
->title('新增') // 弹窗标题
// 按钮 ->title('新增')
->button('<button class="btn btn-primary"><i class="feather icon-plus"></i> 新增</button>') // 按钮
// 弹窗内容 ->button('<button class="btn btn-primary"><i class="feather icon-plus"></i> 新增</button>')
->body(CovenantReceiveForm::make()->payload(['id' => $cid]))); // 弹窗内容
->body(CovenantReceiveForm::make()->payload(['id' => $cid])));
}
}); });
$grid->model()->where('rtype', 1)->orderBy("id", "desc"); $grid->model()->where('rtype', 1)->orderBy("id", "desc");
//$grid->column('id')->sortable(); //$grid->column('id')->sortable();
$grid->column('received_type', '收款账户')->display(function ($val) { $grid->column('received_type', '收款账户')->display(function ($val) {
...@@ -56,16 +62,41 @@ protected function grid() ...@@ -56,16 +62,41 @@ protected function grid()
//文字信息 //文字信息
$grid->tools(function (Grid\Tools $tools) use ($grid, $cid) { $grid->tools(function (Grid\Tools $tools) use ($grid, $cid) {
$principal = $number = ''; $principal = $cnumber = $lnumber = $lname = '';
$invoiced_money = $received_money = $received_noinvoiced = $invoiced_noreceived = 0;
if ($cid) { if ($cid) {
$obj = ModelsCovenant::find($cid); $cobj = ModelsCovenant::find($cid);
$principal = $obj->principal; $principal = $cobj->principal;
$number = $obj->number; $cnumber = $cobj->number;
$lobj = ModelsLawyer::find($cobj->lawyer_id);
$lnumber = $lobj->number;
$lname = $lobj->name;
//开票金额
$invoiced_money = self::getInvoicedByCid($cid);
//已收款
$received_money = self::getReceivedByCid($cid);
//已收款未开票
$received_noinvoiced = ($received_money - $invoiced_money) > 0 ? $received_money - $invoiced_money : 0;
//已开票未收款
$invoiced_noreceived = ($invoiced_money - $received_money) > 0 ? $invoiced_money - $received_money : 0;
} }
$card_info = "&nbsp;&nbsp;合同编号:{$number}&nbsp;&nbsp;&nbsp;委托人:{$principal}"; $card_info = "&nbsp;&nbsp;合同编号:{$cnumber}&nbsp;&nbsp;&nbsp;委托人:{$principal}";
$card_info .= "&nbsp;&nbsp;律师编号:{$lnumber}&nbsp;&nbsp;&nbsp;律师姓名:{$lname}";
$card_info .= "&nbsp;&nbsp;开票金额:{$invoiced_money}&nbsp;&nbsp;&nbsp;已收款:{$received_money}";
$card_info .= "&nbsp;&nbsp;已收款未开票:{$received_noinvoiced}&nbsp;&nbsp;&nbsp;已开票未收款:{$invoiced_noreceived}";
$tools->append($card_info); $tools->append($card_info);
}); });
$grid->actions(function (Grid\Displayers\Actions $actions) {
//编辑
if (!Admin::user()->can('view-received-edit')) {
$actions->disableEdit();
}
//删除
if (!Admin::user()->can('view-received-delete')) {
$actions->disableDelete();
}
});
}); });
} }
...@@ -95,4 +126,16 @@ protected function form() ...@@ -95,4 +126,16 @@ protected function form()
return $form; return $form;
} }
//开票金额
public static function getInvoicedByCid($cid)
{
return ModelsCovenantReceivePayment::where(['cid' => $cid, 'rtype' => 2])->sum('invoiced_money');
}
//已收款
public static function getReceivedByCid($cid)
{
return ModelsCovenantReceivePayment::where(['cid' => $cid, 'rtype' => 1])->sum('received_amount');
}
} }
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
use App\Models\Covenant as ModelsCovenant; use App\Models\Covenant as ModelsCovenant;
use App\Models\LawyerCost as ModelsLawyerCost; use App\Models\LawyerCost as ModelsLawyerCost;
use App\Models\Lawyer as ModelsLawyer;
use App\Models\CovenantReceivePayment as ModelCovenantReceivePayment; use App\Models\CovenantReceivePayment as ModelCovenantReceivePayment;
use App\Models\Principal; use App\Models\Principal;
use Dcat\Admin\Repositories\EloquentRepository; use Dcat\Admin\Repositories\EloquentRepository;
...@@ -35,6 +36,7 @@ public function get(Grid\Model $model) ...@@ -35,6 +36,7 @@ public function get(Grid\Model $model)
// 获取筛选条件 // 获取筛选条件
$number = $model->filter()->input('number'); $number = $model->filter()->input('number');
$lname = $model->filter()->input('name'); $lname = $model->filter()->input('name');
$year = $model->filter()->input('year') ?? date("Y");
$received_at = $invoiced_at = []; $received_at = $invoiced_at = [];
$received_at['start'] = $_GET['received_at']['start'] ?? ''; $received_at['start'] = $_GET['received_at']['start'] ?? '';
$received_at['end'] = $_GET['received_at']['end'] ?? ''; $received_at['end'] = $_GET['received_at']['end'] ?? '';
...@@ -44,7 +46,13 @@ public function get(Grid\Model $model) ...@@ -44,7 +46,13 @@ public function get(Grid\Model $model)
$param = [ $param = [
'sort' => $sort, 'sort' => $sort,
'start' => $start, 'start' => $start,
'search' => ['number' => $number, 'lname' => $lname, 'invoiced_at' => $invoiced_at, 'received_at' => $received_at,] 'search' => [
'number' => $number,
'lname' => $lname,
'year' => $year,
'invoiced_at' => $invoiced_at,
'received_at' => $received_at,
]
]; ];
$data = $this->getList($param); $data = $this->getList($param);
...@@ -62,6 +70,7 @@ public function getList(array $param) ...@@ -62,6 +70,7 @@ public function getList(array $param)
$start = $param['start'] ?? 0; $start = $param['start'] ?? 0;
$number = $param['search']['number'] ?? ''; $number = $param['search']['number'] ?? '';
$lname = $param['search']['lname'] ?? ''; $lname = $param['search']['lname'] ?? '';
$year = $param['search']['year'] ?? date("Y");
$invoiced_at = $param['search']['invoiced_at'] ?? []; $invoiced_at = $param['search']['invoiced_at'] ?? [];
$received_at = $param['search']['received_at'] ?? []; $received_at = $param['search']['received_at'] ?? [];
$list = []; $list = [];
...@@ -176,21 +185,33 @@ public function getList(array $param) ...@@ -176,21 +185,33 @@ public function getList(array $param)
foreach ($list as $key => $item) { foreach ($list as $key => $item) {
$tmp = []; $tmp = [];
//$tmp['id'] = $item->id; //$tmp['id'] = $item->id;
//已收款
$receipt_money = ModelCovenantReceivePayment::getReceivedMoney($item->lawyer_id, $year);
//已开票
$invoiced_money = ModelCovenantReceivePayment::getInvoicedMoney($item->lawyer_id, $year);
//已收款未开票
$receipt_noinvoice = ($receipt_money - $invoiced_money) > 0 ? $receipt_money - $invoiced_money : 0;
//已开票未收款
$invoice_noreceipt = ($invoiced_money - $receipt_money) > 0 ? $invoiced_money - $receipt_money : 0;
//贴票金额
$lawyerObj = ModelsLawyer::find($item->lawyer_id);
$tickets_money = ModelsLawyerCost::getPostingTicketsMoney($item->lawyer_id, $year, $lawyerObj->commission_rate, $lawyerObj->ticket_ratio);
$tmp['lnumber'] = $item->lnumber; $tmp['lnumber'] = $item->lnumber;
$tmp['lname'] = $item->lname; $tmp['lname'] = $item->lname;
$tmp['commission_ratio'] = $item->commission_rate; $tmp['commission_ratio'] = $item->commission_rate;
$tmp['receipt_money'] = ModelCovenantReceivePayment::getReceivedMoney($item->lawyer_id); $tmp['receipt_money'] = $receipt_money;
$tmp['commission_amount'] = self::getCommissionAmount($item->lawyer_id, $item->commission_rate); $tmp['commission_amount'] = self::getCommissionAmount($receipt_money, $item->commission_rate);
$tmp['receipt_noinvoice'] = ModelCovenantReceivePayment::getReceiptNoinvoice($item->lawyer_id); $tmp['receipt_noinvoice'] = $receipt_noinvoice;
$tmp['invoice_noreceipt'] = ModelCovenantReceivePayment::getInvoiceNoreceipt($item->lawyer_id); $tmp['invoice_noreceipt'] = $invoice_noreceipt;
$tmp['cost'] = '7'; $tmp['cost'] = ModelsLawyerCost::getTotalCost($item->lawyer_id, $year);
$tmp['basic_salary'] = ModelsLawyerCost::getBasiSalary($item->lawyer_id); $tmp['basic_salary'] = ModelsLawyerCost::getBasiSalary($item->lawyer_id, $year);
$tmp['special_additional'] = ModelsLawyerCost::getSpecialAdditional($item->lawyer_id); $tmp['special_additional'] = ModelsLawyerCost::getSpecialAdditional($item->lawyer_id, $year);
$tmp['social'] = ModelsLawyerCost::getSocial($item->lawyer_id); $tmp['social'] = ModelsLawyerCost::getSocial($item->lawyer_id, $year);
$tmp['accumulation_fund'] = ModelsLawyerCost::getAccumulationFund($item->lawyer_id); $tmp['accumulation_fund'] = ModelsLawyerCost::getAccumulationFund($item->lawyer_id, $year);
$tmp['posting_tickets_fee'] = '9'; $tmp['posting_tickets_fee'] = $tickets_money;
$tmp['advance_fee'] = ModelsLawyerCost::getAdvanceFee($item->lawyer_id); $tmp['advance_fee'] = ModelsLawyerCost::getAdvanceFee($item->lawyer_id, $year);
$tmp['payable_commission'] = self::getPayableAmount($item->lawyer_id, $item->commission_rate); $tmp['payable_commission'] = self::getPayableAmount($item->lawyer_id, $year, $item->commission_rate, $receipt_money);
array_push($data, $tmp); array_push($data, $tmp);
} }
...@@ -200,18 +221,16 @@ public function getList(array $param) ...@@ -200,18 +221,16 @@ public function getList(array $param)
]; ];
} }
public static function getPayableAmount($lawyer_id, $commission_rate) public static function getPayableAmount($lawyer_id, $year, $commission_rate, $receipt_money)
{ {
$received_money = ModelCovenantReceivePayment::getReceivedMoney($lawyer_id); //创收已收款 $paid_amount = ModelsLawyerCost::getPaidAmount($lawyer_id, $year); //已支付款项
$paid_amount = ModelsLawyerCost::getPaidAmount($lawyer_id); //已支付款项 $result = $receipt_money * ($commission_rate / 100) - $paid_amount;
$result = $received_money * ($commission_rate / 100) - $paid_amount;
return sprintf('%.2f', $result); return sprintf('%.2f', $result);
} }
//提成金额 //提成金额
public static function getCommissionAmount($lawyer_id, $commission_rate) public static function getCommissionAmount($receipt_money, $commission_rate)
{ {
$received_money = ModelCovenantReceivePayment::getReceivedMoney($lawyer_id); //创收已收款 $result = $receipt_money * ($commission_rate / 100);
$result = $received_money * ($commission_rate / 100);
return sprintf('%.2f', $result); return sprintf('%.2f', $result);
} }
} }
...@@ -75,7 +75,7 @@ public static function getReceivedMoney($lawyer_id = 0, $year = 0) ...@@ -75,7 +75,7 @@ public static function getReceivedMoney($lawyer_id = 0, $year = 0)
* received_at 收款日期 * received_at 收款日期
* invoiced_at 开票日期 * invoiced_at 开票日期
*/ */
public static function getReceivedMoneyByNumber($number, $received_at = [], $invoiced_at = []) public static function getReceivedMoneyByNumber($number, $year, $received_at = [], $invoiced_at = [])
{ {
$lawyer_id = $received_amount = 0; $lawyer_id = $received_amount = 0;
...@@ -130,7 +130,7 @@ public static function getReceivedMoneyByNumber($number, $received_at = [], $inv ...@@ -130,7 +130,7 @@ public static function getReceivedMoneyByNumber($number, $received_at = [], $inv
} }
} }
} }
$result = $note_monitor->where('rtype', 1)->groupBy('rp.lawyer_id')->get()->toArray(); $result = $note_monitor->where(['rtype' => 1, 'year' => $year])->groupBy('rp.lawyer_id')->get()->toArray();
foreach ($result as $kk => $vv) { foreach ($result as $kk => $vv) {
$received_amount += $vv->received_amount; $received_amount += $vv->received_amount;
...@@ -162,7 +162,7 @@ public static function getInvoicedMoney($lawyer_id = 0, $year = 0) ...@@ -162,7 +162,7 @@ public static function getInvoicedMoney($lawyer_id = 0, $year = 0)
* received_at 收款日期 * received_at 收款日期
* invoiced_at 开票日期 * invoiced_at 开票日期
*/ */
public static function getInvoicedMoneyByNumber($number, $received_at = [], $invoiced_at = []) public static function getInvoicedMoneyByNumber($number, $year, $received_at = [], $invoiced_at = [])
{ {
$lawyer_id = $invoiced_money = 0; $lawyer_id = $invoiced_money = 0;
...@@ -217,7 +217,7 @@ public static function getInvoicedMoneyByNumber($number, $received_at = [], $inv ...@@ -217,7 +217,7 @@ public static function getInvoicedMoneyByNumber($number, $received_at = [], $inv
} }
} }
} }
$result = $note_monitor->where('rtype', 2)->groupBy('rp.lawyer_id')->get()->toArray(); $result = $note_monitor->where(['rtype' => 2, 'year' => $year])->groupBy('rp.lawyer_id')->get()->toArray();
foreach ($result as $kk => $vv) { foreach ($result as $kk => $vv) {
$invoiced_money += $vv->invoiced_money; $invoiced_money += $vv->invoiced_money;
} }
...@@ -231,7 +231,7 @@ public static function getInvoicedMoneyByNumber($number, $received_at = [], $inv ...@@ -231,7 +231,7 @@ public static function getInvoicedMoneyByNumber($number, $received_at = [], $inv
* number 律师编号 * number 律师编号
* received_at 收款日期 * received_at 收款日期
*/ */
public static function getCommissionAmount($number, $received_at = []) public static function getCommissionAmount($number, $year, $received_at = [])
{ {
$lawyer_id = $total_money = 0; $lawyer_id = $total_money = 0;
...@@ -260,7 +260,7 @@ public static function getCommissionAmount($number, $received_at = []) ...@@ -260,7 +260,7 @@ public static function getCommissionAmount($number, $received_at = [])
} }
} }
$result = $note_monitor->where('rtype', 1)->groupBy('rp.lawyer_id')->get()->toArray(); $result = $note_monitor->where(['rtype' => 1, 'year' => $year])->groupBy('rp.lawyer_id')->get()->toArray();
foreach ($result as $kk => $vv) { foreach ($result as $kk => $vv) {
$lawyerObj = Lawyer::find($vv->lawyer_id); $lawyerObj = Lawyer::find($vv->lawyer_id);
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
use Dcat\Admin\Traits\HasDateTimeFormatter; use Dcat\Admin\Traits\HasDateTimeFormatter;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
class LawyerCost extends Model class LawyerCost extends Model
{ {
...@@ -67,38 +68,92 @@ class LawyerCost extends Model ...@@ -67,38 +68,92 @@ class LawyerCost extends Model
['field' => 'personal_income_tax', 'name' => '个人所得税'], ['field' => 'personal_income_tax', 'name' => '个人所得税'],
]; ];
//
//成本合计
public static function getTotalCost($lawyer_id = 0, $year = 0)
{
//无票成本 + 律师年检费 + 律师年金
$where = [];
if ($lawyer_id) {
$where['lawyer_id'] = $lawyer_id;
}
if ($year) {
$where['year'] = $year;
}
$noticket_cost = self::where($where)->sum('noticket_cost');
$annual_inspection_fee = self::where($where)->sum('annual_inspection_fee');
$annuity = self::where($where)->sum('annuity');
return $noticket_cost + $annual_inspection_fee + $annuity;
}
//基本工资 //基本工资
public static function getBasiSalary($lawyer_id) public static function getBasiSalary($lawyer_id = 0, $year = 0)
{ {
return self::where(['lawyer_id' => $lawyer_id])->sum('basic_salary'); $where = [];
if ($lawyer_id) {
$where['lawyer_id'] = $lawyer_id;
}
if ($year) {
$where['year'] = $year;
}
return self::where($where)->sum('basic_salary');
} }
//专项附加 //专项附加
public static function getSpecialAdditional($lawyer_id) public static function getSpecialAdditional($lawyer_id = 0, $year = 0)
{ {
return self::where(['lawyer_id' => $lawyer_id])->sum('special_additional'); $where = [];
if ($lawyer_id) {
$where['lawyer_id'] = $lawyer_id;
}
if ($year) {
$where['year'] = $year;
}
return self::where($where)->sum('special_additional');
} }
//社保 //社保
public static function getSocial($lawyer_id) public static function getSocial($lawyer_id = 0, $year = 0)
{ {
$social_person_fee = self::where(['lawyer_id' => $lawyer_id])->sum('social_person_fee'); $where = [];
$social_company_fee = self::where(['lawyer_id' => $lawyer_id])->sum('social_company_fee'); if ($lawyer_id) {
$where['lawyer_id'] = $lawyer_id;
}
if ($year) {
$where['year'] = $year;
}
$social_person_fee = self::where($where)->sum('social_person_fee');
$social_company_fee = self::where($where)->sum('social_company_fee');
return $social_person_fee + $social_company_fee; return $social_person_fee + $social_company_fee;
} }
//公积金 //公积金
public static function getAccumulationFund($lawyer_id) public static function getAccumulationFund($lawyer_id = 0, $year = 0)
{ {
$accumulation_fund_person_fee = self::where(['lawyer_id' => $lawyer_id])->sum('accumulation_fund_person_fee'); $where = [];
$accumulation_fund_company_fee = self::where(['lawyer_id' => $lawyer_id])->sum('accumulation_fund_company_fee'); if ($lawyer_id) {
$where['lawyer_id'] = $lawyer_id;
}
if ($year) {
$where['year'] = $year;
}
$accumulation_fund_person_fee = self::where($where)->sum('accumulation_fund_person_fee');
$accumulation_fund_company_fee = self::where($where)->sum('accumulation_fund_company_fee');
return $accumulation_fund_person_fee + $accumulation_fund_company_fee; return $accumulation_fund_person_fee + $accumulation_fund_company_fee;
} }
//预支款 //预支款
public static function getAdvanceFee($lawyer_id) public static function getAdvanceFee($lawyer_id = 0, $year = 0)
{ {
return self::where(['lawyer_id' => $lawyer_id])->sum('advance_fee'); $where = [];
if ($lawyer_id) {
$where['lawyer_id'] = $lawyer_id;
}
if ($year) {
$where['year'] = $year;
}
return self::where($where)->sum('advance_fee');
} }
...@@ -131,7 +186,7 @@ public static function getPaidAmount($lawyer_id, $year = 0) ...@@ -131,7 +186,7 @@ public static function getPaidAmount($lawyer_id, $year = 0)
} }
/** /**
* 贴票金额 * 单个律师贴票金额
* commission_rate 提成比例 * commission_rate 提成比例
* ticket_ratio 贴票比例 * ticket_ratio 贴票比例
*/ */
...@@ -156,4 +211,76 @@ public static function getPostingTicketsMoney($lawyer_id, $year, $commission_rat ...@@ -156,4 +211,76 @@ public static function getPostingTicketsMoney($lawyer_id, $year, $commission_rat
} }
return $ticket; return $ticket;
} }
/**
* 律师贴票金额含全部
*/
public static function getAllPostingTicketsMoney($lawyer_id, $year)
{
$total = 0;
$where = [];
if ($lawyer_id) {
$where['id'] = $lawyer_id;
}
$result = DB::table('lawyer')->select(['id', 'number', 'commission_rate', 'ticket_ratio'])
->where($where)
->limit(1500)
->get();
if ($result->toArray()) {
foreach ($result as $item) {
$lawyer_id = $item->id;
$commission_rate = $item->commission_rate;
$ticket_ratio = $item->ticket_ratio;
$ticket = 0;
$received_money = CovenantReceivePayment::getReceivedMoney($lawyer_id, $year); //创收已收款
$paid_amount = LawyerCost::getPaidAmount($lawyer_id, $year); //已支付款项
$commission = $received_money * ($commission_rate / 100); //提成
if ($commission_rate == 80) {
if ($commission > 300000) {
$ticket = ($received_money - $paid_amount) * ($ticket_ratio / 100);
}
} elseif ($commission_rate == 85) {
if ($commission > 200000) {
$ticket = ($received_money - $paid_amount) * ($ticket_ratio / 100);
}
} elseif ($commission_rate == 88 || $commission_rate == 90) {
if ($commission > 200000) {
$ticket = ($received_money - $paid_amount) * ($ticket_ratio / 100);
}
}
$total += $ticket;
}
}
return $total;
}
/**
* 统计所有律师可提成金额
*/
public static function getAllPayableAmount($lawyer_id, $year)
{
$total = 0;
$where = [];
if ($lawyer_id) {
$where['id'] = $lawyer_id;
}
$result = DB::table('lawyer')->select(['id', 'number', 'commission_rate', 'ticket_ratio'])
->where($where)
->limit(1500)
->get();
if ($result->toArray()) {
foreach ($result as $item) {
$lawyer_id = $item->id;
$commission_rate = $item->commission_rate;
$money = 0;
$receipt_money = CovenantReceivePayment::getReceivedMoney($lawyer_id, $year);
$paid_amount = LawyerCost::getPaidAmount($lawyer_id, $year); //已支付款项
$money = $receipt_money * ($commission_rate / 100) - $paid_amount;
$total += $money;
}
}
return $total;
}
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment