This commit is contained in:
cuneytsenturk 2018-08-06 23:16:18 +03:00
parent b04e6d1ce5
commit bfdd3b21dc
12 changed files with 158 additions and 15 deletions

View File

@ -142,6 +142,7 @@ class Bills extends Controller
$bill_item = [];
$bill_item['company_id'] = $request['company_id'];
$bill_item['bill_id'] = $bill->id;
$bill_item['currency_code'] = $request['currency_code'];
if ($request['item']) {
foreach ($request['item'] as $item) {
@ -214,7 +215,9 @@ class Bills extends Controller
$s_total = $s_total - $s_discount;
}
$request['amount'] = $s_total + $tax_total;
$amount = $s_total + $tax_total;
$request['amount'] = money($amount, $request['currency_code'])->getAmount();
$bill->update($request->input());
@ -354,6 +357,7 @@ class Bills extends Controller
$bill_item = [];
$bill_item['company_id'] = $request['company_id'];
$bill_item['bill_id'] = $bill->id;
$bill_item['currency_code'] = $request['currency_code'];
if ($request['item']) {
BillItem::where('bill_id', $bill->id)->delete();
@ -420,7 +424,9 @@ class Bills extends Controller
$s_total = $s_total - $s_discount;
}
$request['amount'] = $s_total + $tax_total;
$amount = $s_total + $tax_total;
$request['amount'] = money($amount, $request['currency_code'])->getAmount();
$bill->update($request->input());
@ -488,10 +494,10 @@ class Bills extends Controller
*/
public function export()
{
\Excel::create('bills', function($excel) {
\Excel::create('bills', function ($excel) {
$bills = Bill::with(['items', 'histories', 'payments', 'totals'])->filter(request()->input())->get();
$excel->sheet('invoices', function($sheet) use ($bills) {
$excel->sheet('invoices', function ($sheet) use ($bills) {
$sheet->fromModel($bills->makeHidden([
'company_id', 'parent_id', 'created_at', 'updated_at', 'deleted_at', 'attachment', 'discount', 'items', 'histories', 'payments', 'totals', 'media'
]));
@ -499,10 +505,11 @@ class Bills extends Controller
$tables = ['items', 'histories', 'payments', 'totals'];
foreach ($tables as $table) {
$excel->sheet('bill_' . $table, function($sheet) use ($bills, $table) {
$excel->sheet('bill_' . $table, function ($sheet) use ($bills, $table) {
$hidden_fields = ['id', 'company_id', 'created_at', 'updated_at', 'deleted_at', 'title'];
$i = 1;
foreach ($bills as $bill) {
$model = $bill->$table->makeHidden($hidden_fields);
@ -750,6 +757,7 @@ class Bills extends Controller
'code' => 'sub_total',
'name' => 'bills.sub_total',
'amount' => $sub_total,
'currency_code' => $bill->currency_code,
'sort_order' => $sort_order,
]);
@ -763,6 +771,7 @@ class Bills extends Controller
'code' => 'discount',
'name' => 'bills.discount',
'amount' => $discount_total,
'currency_code' => $bill->currency_code,
'sort_order' => $sort_order,
]);
@ -781,6 +790,7 @@ class Bills extends Controller
'code' => 'tax',
'name' => $tax['name'],
'amount' => $tax['amount'],
'currency_code' => $bill->currency_code,
'sort_order' => $sort_order,
]);
@ -795,6 +805,7 @@ class Bills extends Controller
'code' => 'total',
'name' => 'bills.total',
'amount' => $sub_total + $tax_total,
'currency_code' => $bill->currency_code,
'sort_order' => $sort_order,
]);
}

View File

@ -95,5 +95,9 @@ class Kernel extends HttpKernel
'dateformat.due_at' => \App\Http\Middleware\DateFormatDueAt::class,
'dateformat.billed_at' => \App\Http\Middleware\DateFormatBilledAt::class,
'dateformat.invoiced_at' => \App\Http\Middleware\DateFormatInvoicedAt::class,
'money.amount' => \App\Http\Middleware\MoneyAmount::class,
'money.price' => \App\Http\Middleware\MoneyPrice::class,
'money.total' => \App\Http\Middleware\MoneyTax::class,
'money.tax' => \App\Http\Middleware\MoneyTotal::class,
];
}

View File

@ -0,0 +1,32 @@
<?php
namespace App\Http\Middleware;
use Closure;
class MoneyAmount
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ($request->method() == 'POST' || $request->method() == 'PATCH') {
$currency_code = $request->get('currency_code');
if (empty($currency_code)) {
$currency_code = setting('general.default_currency');
}
$amount = money($request->get('amount'), $currency_code)->getAmount();
$request->request->set('amount', $amount);
}
return $next($request);
}
}

View File

@ -0,0 +1,32 @@
<?php
namespace App\Http\Middleware;
use Closure;
class MoneyPrice
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ($request->method() == 'POST' || $request->method() == 'PATCH') {
$currency_code = $request->get('currency_code');
if (empty($currency_code)) {
$currency_code = setting('general.default_currency');
}
$price = money($request->get('price'), $currency_code)->getAmount();
$request->request->set('price', $price);
}
return $next($request);
}
}

View File

@ -0,0 +1,32 @@
<?php
namespace App\Http\Middleware;
use Closure;
class MoneyTax
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ($request->method() == 'POST' || $request->method() == 'PATCH') {
$currency_code = $request->get('currency_code');
if (empty($currency_code)) {
$currency_code = setting('general.default_currency');
}
$tax = money($request->get('tax'), $currency_code)->getAmount();
$request->request->set('tax', $tax);
}
return $next($request);
}
}

View File

@ -0,0 +1,32 @@
<?php
namespace App\Http\Middleware;
use Closure;
class MoneyTotal
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ($request->method() == 'POST' || $request->method() == 'PATCH') {
$currency_code = $request->get('currency_code');
if (empty($currency_code)) {
$currency_code = setting('general.default_currency');
}
$total = money($request->get('total'), $currency_code)->getAmount();
$request->request->set('total', $total);
}
return $next($request);
}
}

View File

@ -145,7 +145,7 @@ class Bill extends Model
*/
public function setAmountAttribute($value)
{
$this->attributes['amount'] = (double) money($value, $this->attributes['currency_code'])->getAmount();
$this->attributes['amount'] = (double) $value;
}
/**

View File

@ -61,7 +61,7 @@ class BillPayment extends Model
*/
public function setAmountAttribute($value)
{
$this->attributes['amount'] = (double) money($value, $this->account->currency_code)->getAmount();
$this->attributes['amount'] = (double) $value;
}
/**

View File

@ -113,7 +113,7 @@ class Payment extends Model
*/
public function setAmountAttribute($value)
{
$this->attributes['amount'] = (double) money($value, $this->attributes['currency_code'])->getAmount();
$this->attributes['amount'] = (double) $value;
}
/**

View File

@ -61,7 +61,7 @@ class InvoicePayment extends Model
*/
public function setAmountAttribute($value)
{
$this->attributes['amount'] = (double) money($value, $this->account->currency_code)->getAmount();
$this->attributes['amount'] = (double) $value;
}
/**

View File

@ -119,7 +119,7 @@ class Revenue extends Model
*/
public function setAmountAttribute($value)
{
$this->attributes['amount'] = (double) money($value, $this->attributes['currency_code'])->getAmount();
$this->attributes['amount'] = (double) $value;
}
/**

View File

@ -53,7 +53,7 @@ Route::group(['middleware' => 'language'], function () {
Route::get('invoices/{invoice}/print', 'Incomes\Invoices@printInvoice');
Route::get('invoices/{invoice}/pdf', 'Incomes\Invoices@pdfInvoice');
Route::get('invoices/{invoice}/duplicate', 'Incomes\Invoices@duplicate');
Route::post('invoices/payment', 'Incomes\Invoices@payment')->middleware(['dateformat.paid_at'])->name('invoice.payment');
Route::post('invoices/payment', 'Incomes\Invoices@payment')->middleware(['dateformat.paid_at', 'money.amount'])->name('invoice.payment');
Route::delete('invoices/payment/{payment}', 'Incomes\Invoices@paymentDestroy');
Route::post('invoices/import', 'Incomes\Invoices@import')->name('invoices.import');
Route::get('invoices/export', 'Incomes\Invoices@export')->name('invoices.export');
@ -61,7 +61,7 @@ Route::group(['middleware' => 'language'], function () {
Route::get('revenues/{revenue}/duplicate', 'Incomes\Revenues@duplicate');
Route::post('revenues/import', 'Incomes\Revenues@import')->name('revenues.import');
Route::get('revenues/export', 'Incomes\Revenues@export')->name('revenues.export');
Route::resource('revenues', 'Incomes\Revenues', ['middleware' => ['dateformat.paid_at']]);
Route::resource('revenues', 'Incomes\Revenues', ['middleware' => ['dateformat.paid_at', 'money.amount']]);
Route::get('customers/currency', 'Incomes\Customers@currency');
Route::get('customers/{customer}/duplicate', 'Incomes\Customers@duplicate');
Route::post('customers/customer', 'Incomes\Customers@customer');
@ -78,15 +78,15 @@ Route::group(['middleware' => 'language'], function () {
Route::get('bills/{bill}/print', 'Expenses\Bills@printBill');
Route::get('bills/{bill}/pdf', 'Expenses\Bills@pdfBill');
Route::get('bills/{bill}/duplicate', 'Expenses\Bills@duplicate');
Route::post('bills/payment', 'Expenses\Bills@payment')->middleware(['dateformat.paid_at'])->name('bill.payment');
Route::post('bills/payment', 'Expenses\Bills@payment')->middleware(['dateformat.paid_at', 'money.amount'])->name('bill.payment');
Route::delete('bills/payment/{payment}', 'Expenses\Bills@paymentDestroy');
Route::post('bills/import', 'Expenses\Bills@import')->name('bills.import');
Route::get('bills/export', 'Expenses\Bills@export')->name('bills.export');
Route::resource('bills', 'Expenses\Bills', ['middleware' => ['dateformat.billed_at', 'dateformat.due_at']]);
Route::resource('bills', 'Expenses\Bills', ['middleware' => ['dateformat.billed_at', 'dateformat.due_at', 'money.price', 'money.tax', 'money.total']]);
Route::get('payments/{payment}/duplicate', 'Expenses\Payments@duplicate');
Route::post('payments/import', 'Expenses\Payments@import')->name('payments.import');
Route::get('payments/export', 'Expenses\Payments@export')->name('payments.export');
Route::resource('payments', 'Expenses\Payments', ['middleware' => ['dateformat.paid_at']]);
Route::resource('payments', 'Expenses\Payments', ['middleware' => ['dateformat.paid_at', 'money.amount']]);
Route::get('vendors/currency', 'Expenses\Vendors@currency');
Route::get('vendors/{vendor}/duplicate', 'Expenses\Vendors@duplicate');
Route::post('vendors/vendor', 'Expenses\Vendors@vendor');