diff --git a/README.md b/README.md index 204b31126349..b112372212e3 100755 --- a/README.md +++ b/README.md @@ -58,4 +58,5 @@ Configure config/database.php and then initialize the database * [thomaspark/bootswatch](https://github.com/thomaspark/bootswatch) - Themes for Bootstrap * [mozilla/pdf.js](https://github.com/mozilla/pdf.js) - PDF Reader in JavaScript * [nnnick/Chart.js](https://github.com/nnnick/Chart.js) - Simple HTML5 Charts using the tag -* [josscrowcroft/accounting.js](https://github.com/josscrowcroft/accounting.js) - A lightweight JavaScript library for number, money and currency formatting \ No newline at end of file +* [josscrowcroft/accounting.js](https://github.com/josscrowcroft/accounting.js) - A lightweight JavaScript library for number, money and currency formatting +* [jashkenas/underscore](https://github.com/jashkenas/underscore) - JavaScript's utility _ belt \ No newline at end of file diff --git a/app/controllers/CreditController.php b/app/controllers/CreditController.php index 4eafdc404004..619239e9cfb5 100755 --- a/app/controllers/CreditController.php +++ b/app/controllers/CreditController.php @@ -112,8 +112,9 @@ class CreditController extends \BaseController { { $rules = array( 'client' => 'required', - 'amount' => 'required' + 'amount' => 'required', ); + $validator = Validator::make(Input::all(), $rules); if ($validator->fails()) { diff --git a/app/controllers/InvoiceController.php b/app/controllers/InvoiceController.php index b185f4310d13..425805a7c453 100755 --- a/app/controllers/InvoiceController.php +++ b/app/controllers/InvoiceController.php @@ -216,8 +216,7 @@ class InvoiceController extends \BaseController { if (!$ref) { - var_dump($response); - exit('Sorry, there was an error processing your payment. Please try again later.'); + Utils::fatalError('Sorry, there was an error processing your payment. Please try again later.

'); } $payment = Payment::createNew(); @@ -225,7 +224,7 @@ class InvoiceController extends \BaseController { $payment->invoice_id = $invoice->id; $payment->amount = $invoice->amount; $payment->client_id = $invoice->client_id; - //$payment->contact_id = 0; // TODO_FIX + $payment->contact_id = $invitation->contact_id; $payment->transaction_reference = $ref; $payment->save(); @@ -299,7 +298,7 @@ class InvoiceController extends \BaseController { public function edit($publicId) { - $invoice = Invoice::scope($publicId)->with('account.country', 'client', 'invoice_items')->firstOrFail(); + $invoice = Invoice::scope($publicId)->with('account.country', 'client.contacts', 'invoice_items')->firstOrFail(); Utils::trackViewed($invoice->invoice_number . ' - ' . $invoice->client->getDisplayName(), ENTITY_INVOICE); $invoice->invoice_date = Utils::fromSqlDate($invoice->invoice_date); @@ -420,12 +419,6 @@ class InvoiceController extends \BaseController { $account->save(); } - if ($action == 'email' && $invoice->invoice_status_id == INVOICE_STATUS_DRAFT) - { - $client->balance = $client->balance + $invoice->amount; - $client->save(); - } - $client->load('contacts'); $sendInvoiceIds = []; diff --git a/app/controllers/PaymentController.php b/app/controllers/PaymentController.php index 6790f5a3921b..4cf77d6ca242 100755 --- a/app/controllers/PaymentController.php +++ b/app/controllers/PaymentController.php @@ -75,7 +75,7 @@ class PaymentController extends \BaseController $data = array( 'clientPublicId' => $clientPublicId, 'invoice' => null, - 'invoices' => Invoice::scope()->with('client')->orderBy('invoice_number')->get(), + 'invoices' => Invoice::scope()->with('client')->where('balance','>',0)->orderBy('invoice_number')->get(), 'payment' => null, 'method' => 'POST', 'url' => 'payments', diff --git a/app/libraries/utils.php b/app/libraries/utils.php index 695c697c3f7e..1d924f6413c1 100755 --- a/app/libraries/utils.php +++ b/app/libraries/utils.php @@ -2,9 +2,15 @@ class Utils { - public static function fatalError($error) + public static function fatalError($error = false) { + if (!$error) + { + $error = "An error occurred, please try again later"; + } + Log::error($error); + return View::make('error')->with('error', $error); } diff --git a/app/models/Activity.php b/app/models/Activity.php index c7a5dcfc33b2..62a8ac470bef 100755 --- a/app/models/Activity.php +++ b/app/models/Activity.php @@ -42,7 +42,7 @@ class Activity extends Eloquent $activity->user_id = $entity->user_id; $activity->account_id = $entity->account_id; } else { - exit; // TODO_FIX log error + Utils::fatalError(); } return $activity; @@ -104,11 +104,11 @@ class Activity extends Eloquent public static function emailInvoice($invitation) { $adjustment = 0; + $client = $invitation->invoice->client; if (!$invitation->invoice->isSent()) { $adjustment = $invitation->invoice->amount; - $client = $invitation->invoice->client; $client->balance = $client->balance + $adjustment; $client->save(); } @@ -120,7 +120,7 @@ class Activity extends Eloquent $activity->contact_id = $invitation->contact_id; $activity->activity_type_id = ACTIVITY_TYPE_EMAIL_INVOICE; $activity->message = $userName . ' emailed invoice ' . link_to('invoices/'.$invitation->invoice->public_id, $invitation->invoice->invoice_number) . ' to ' . $invitation->contact->getFullName() . ' - ' . $invitation->contact->email; - $activity->balance = $invitation->invoice->client->balance; + $activity->balance = $client->balance; $activity->adjustment = $adjustment; $activity->save(); } @@ -176,9 +176,16 @@ class Activity extends Eloquent } $activity->payment_id = $payment->id; - if ($payment->invoice_id) { + + if ($payment->invoice_id) + { $activity->invoice_id = $payment->invoice_id; + + $invoice = $payment->invoice; + $invoice->balance = $invoice->balance - $payment->amount; + $invoice->save(); } + $activity->client_id = $payment->client_id; $activity->currency_id = $payment->currency_id; $activity->activity_type_id = ACTIVITY_TYPE_CREATE_PAYMENT; @@ -197,6 +204,16 @@ class Activity extends Eloquent $activity->message = Auth::user()->getFullName() . ' created credit'; $activity->credit_id = $credit->id; $activity->client_id = $credit->client_id; + + if ($credit->invoice_id) + { + $activity->invoice_id = $payment->invoice_id; + + $invoice = $credit->invoice; + $invoice->balance = $invoice->amount - $credit->amount; + $invoice->save(); + } + $activity->currency_id = $credit->currency_id; $activity->activity_type_id = ACTIVITY_TYPE_CREATE_CREDIT; $activity->balance = $client->balance; diff --git a/app/models/EntityModel.php b/app/models/EntityModel.php index 286cac0c2e01..b333d9368ff4 100755 --- a/app/models/EntityModel.php +++ b/app/models/EntityModel.php @@ -15,7 +15,7 @@ class EntityModel extends Eloquent $entity->user_id = $parent->user_id; $entity->account_id = $parent->account_id; } else { - exit; // TODO_FIX + Utils::fatalError(); } $lastEntity = $className::withTrashed()->scope(false, $entity->account_id)->orderBy('public_id', 'DESC')->first(); diff --git a/app/models/Invoice.php b/app/models/Invoice.php index e6c7f64b33f4..5d82be47b524 100755 --- a/app/models/Invoice.php +++ b/app/models/Invoice.php @@ -106,7 +106,7 @@ class Invoice extends EntityModel case FREQUENCY_ANNUALLY: return ($dayOfMonthStart == $dayOfMonthToday && (!$daysSinceLastSent || $monthsSinceLastSent == 12)) || $daysSinceLastSent > (12 *31); default: - echo "Error: invalid frequency_id - ".$this->frequency_id; exit; //TODO_FIX + Utils::fatalError("Invalid frequency supplied: " . $this->frequency_id); break; } diff --git a/app/ninja/repositories/ClientRepository.php b/app/ninja/repositories/ClientRepository.php index 7b92d376a48e..8b6cf6a5f290 100755 --- a/app/ninja/repositories/ClientRepository.php +++ b/app/ninja/repositories/ClientRepository.php @@ -71,6 +71,8 @@ class ClientRepository } } + $client->save(); + return $client; } } \ No newline at end of file diff --git a/app/views/header.blade.php b/app/views/header.blade.php index c9bea44aec49..9d678b6fba38 100755 --- a/app/views/header.blade.php +++ b/app/views/header.blade.php @@ -22,6 +22,7 @@ + @@ -91,15 +92,18 @@