close #129 Fixed: Invoice not marked automatically as paid, same modify Bill.

This commit is contained in:
Cüneyt Şentürk
2017-12-07 00:13:15 +03:00
parent 098ed4b26a
commit 7f40a5857f
7 changed files with 137 additions and 50 deletions

View File

@ -603,17 +603,11 @@ class Bills extends Controller
$bill = Bill::find($request['bill_id']);
if ($request['currency_code'] == $bill->currency_code) {
if ($request['amount'] > $bill->amount) {
$message = trans('messages.error.added', ['type' => trans_choice('general.payment', 1)]);
$total_amount = $bill->amount;
return response()->json($message);
} elseif ($request['amount'] == $bill->amount) {
$bill->bill_status_code = 'paid';
} else {
$bill->bill_status_code = 'partial';
}
} else {
$amount = (double) $request['amount'];
if ($request['currency_code'] != $bill->currency_code) {
$request_bill = new Bill();
$request_bill->amount = (float) $request['amount'];
@ -621,16 +615,24 @@ class Bills extends Controller
$request_bill->currency_rate = $currency->rate;
$amount = $request_bill->getConvertedAmount();
}
if ($amount > $bill->amount) {
$message = trans('messages.error.added', ['type' => trans_choice('general.payment', 1)]);
if ($bill->payments()->count()) {
$total_amount -= $bill->payments()->paid();
}
return response()->json($message);
} elseif ($amount == $bill->amount) {
$bill->bill_status_code = 'paid';
} else {
$bill->bill_status_code = 'partial';
}
if ($amount > $total_amount) {
$message = trans('messages.error.payment_add');
return response()->json([
'success' => false,
'error' => true,
'message' => $message,
]);
} elseif ($amount == $total_amount) {
$bill->bill_status_code = 'paid';
} else {
$bill->bill_status_code = 'partial';
}
$bill->save();
@ -642,13 +644,18 @@ class Bills extends Controller
$desc_date = Date::parse($request['paid_at'])->format($this->getCompanyDateFormat());
$desc_amount = money((float) $request['amount'], $request['currency_code'], true)->format();
$request['description'] = $desc_date . ' ' . $desc_amount;
BillHistory::create($request->input());
$message = trans('messages.success.added', ['type' => trans_choice('general.revenues', 1)]);
return response()->json($message);
return response()->json([
'success' => true,
'error' => false,
'message' => $message,
]);
}
/**
@ -660,12 +667,22 @@ class Bills extends Controller
*/
public function paymentDestroy(BillPayment $payment)
{
$bill = Bill::find($payment->bill_id);
if ($bill->payments()->count() > 1) {
$bill->bill_status_code = 'partial';
} else {
$bill->bill_status_code = 'draft';
}
$bill->save();
$payment->delete();
$message = trans('messages.success.deleted', ['type' => trans_choice('general.bills', 1)]);
flash($message)->success();
return redirect('expenses/bills');
return redirect()->back();
}
}

View File

@ -616,17 +616,11 @@ class Invoices extends Controller
$invoice = Invoice::find($request['invoice_id']);
if ($request['currency_code'] == $invoice->currency_code) {
if ($request['amount'] > $invoice->amount) {
$message = trans('messages.error.added', ['type' => trans_choice('general.payment', 1)]);
$total_amount = $invoice->amount;
return response()->json($message);
} elseif ($request['amount'] == $invoice->amount) {
$invoice->invoice_status_code = 'paid';
} else {
$invoice->invoice_status_code = 'partial';
}
} else {
$amount = (double) $request['amount'];
if ($request['currency_code'] != $invoice->currency_code) {
$request_invoice = new Invoice();
$request_invoice->amount = (float) $request['amount'];
@ -634,16 +628,24 @@ class Invoices extends Controller
$request_invoice->currency_rate = $currency->rate;
$amount = $request_invoice->getConvertedAmount();
}
if ($amount > $invoice->amount) {
$message = trans('messages.error.added', ['type' => trans_choice('general.payment', 1)]);
if ($invoice->payments()->count()) {
$total_amount -= $invoice->payments()->paid();
}
return response()->json($message);
} elseif ($amount == $invoice->amount) {
$invoice->invoice_status_code = 'paid';
} else {
$invoice->invoice_status_code = 'partial';
}
if ($amount > $total_amount) {
$message = trans('messages.error.payment_add');
return response()->json([
'success' => false,
'error' => true,
'message' => $message,
]);
} elseif ($amount == $total_amount) {
$invoice->invoice_status_code = 'paid';
} else {
$invoice->invoice_status_code = 'partial';
}
$invoice->save();
@ -655,13 +657,18 @@ class Invoices extends Controller
$desc_date = Date::parse($request['paid_at'])->format($this->getCompanyDateFormat());
$desc_amount = money((float) $request['amount'], $request['currency_code'], true)->format();
$request['description'] = $desc_date . ' ' . $desc_amount;
InvoiceHistory::create($request->input());
$message = trans('messages.success.added', ['type' => trans_choice('general.revenues', 1)]);
return response()->json($message);
return response()->json([
'success' => true,
'error' => false,
'message' => $message,
]);
}
/**
@ -673,13 +680,23 @@ class Invoices extends Controller
*/
public function paymentDestroy(InvoicePayment $payment)
{
$invoice = Invoice::find($payment->invoice_id);
if ($invoice->payments()->count() > 1) {
$invoice->invoice_status_code = 'partial';
} else {
$invoice->invoice_status_code = 'draft';
}
$invoice->save();
$payment->delete();
$message = trans('messages.success.deleted', ['type' => trans_choice('general.invoices', 1)]);
flash($message)->success();
return redirect('incomes/invoices');
return redirect()->back();
}
protected function prepareInvoice(Invoice $invoice)