From 426e7838c92e8fa0843d27ff7f58ca1e9ed3356b Mon Sep 17 00:00:00 2001 From: vagrant Date: Wed, 27 Nov 2013 07:38:37 +0000 Subject: [PATCH] Creating re-usable products from invoice line items --- LICENSE | 0 README.md | 0 app/controllers/InvoiceController.php | 22 +++++++++---- app/models/Activity.php | 16 ++++----- app/models/Product.php | 18 ++++++++++ app/routes.php | 4 +++ app/views/header.blade.php | 5 ++- app/views/invoices/edit.blade.php | 47 ++++++++++++++++++++------- app/views/master.blade.php | 5 ++- public/js/script.js | 2 ++ 10 files changed, 91 insertions(+), 28 deletions(-) mode change 100644 => 100755 LICENSE mode change 100644 => 100755 README.md diff --git a/LICENSE b/LICENSE old mode 100644 new mode 100755 diff --git a/README.md b/README.md old mode 100644 new mode 100755 diff --git a/app/controllers/InvoiceController.php b/app/controllers/InvoiceController.php index eb9ca4d5e1af..7c005c94584f 100755 --- a/app/controllers/InvoiceController.php +++ b/app/controllers/InvoiceController.php @@ -42,7 +42,7 @@ class InvoiceController extends \BaseController { $invoice = Invoice::with('invoice_items', 'client.account.account_gateways')->where('invoice_key', '=', $invoiceKey)->firstOrFail(); $contact = null; - Activity::viewInvoice($invoice, $contact) + Activity::viewInvoice($invoice, $contact); return View::make('invoices.view')->with('invoice', $invoice); } @@ -181,6 +181,7 @@ class InvoiceController extends \BaseController { 'title' => 'New', 'client' => $client, 'account' => Auth::user()->account, + 'products' => Product::getProducts()->get(), 'clients' => Client::where('account_id','=',Auth::user()->account_id)->get()); return View::make('invoices.edit', $data); } @@ -241,7 +242,7 @@ class InvoiceController extends \BaseController { $invoice->client_id = $clientId; $invoice->number = Input::get('number'); - $invoice->discount = Input::get('discount'); + $invoice->discount = 0; $invoice->issued_on = $date->format('Y-m-d'); $invoice->save(); @@ -252,11 +253,17 @@ class InvoiceController extends \BaseController { continue; } - $product = new Product; - $product->product_key = $item->product_key; - $product->notes = $item->notes; - $product->cost = $item->cost; - $product->save(); + $product = Product::findProduct($item->product_key); + + if (!$product) + { + $product = new Product; + $product->account_id = Auth::user()->account_id; + $product->product_key = $item->product_key; + $product->notes = $item->notes; + $product->cost = $item->cost; + $product->save(); + } $invoiceItem = new InvoiceItem; $invoiceItem->product_id = $product->id; @@ -316,6 +323,7 @@ class InvoiceController extends \BaseController { 'url' => 'invoices/' . $id, 'title' => 'Edit', 'account' => Auth::user()->account, + 'products' => Product::getProducts()->get(), 'client' => $invoice->client, 'clients' => Client::where('account_id','=',Auth::user()->account_id)->get()); return View::make('invoices.edit', $data); diff --git a/app/models/Activity.php b/app/models/Activity.php index bd87d9de78de..856a75efe2c1 100755 --- a/app/models/Activity.php +++ b/app/models/Activity.php @@ -18,7 +18,7 @@ class Activity extends Eloquent $activity->user_id = $user->id; $activity->account_id = $user->account_id; - return $user; + return $activity; } public static function createClient($client) @@ -26,7 +26,7 @@ class Activity extends Eloquent $activity = Activity::getBlank(); $activity->client_id = $client->id; $activity->activity_type_id = ACTIVITY_TYPE_CREATE_CLIENT; - $activity->message = $user->getFullName() . ' created client ' . $client->name; + $activity->message = Auth::user()->getFullName() . ' created client ' . $client->name; $activity->save(); } @@ -35,7 +35,7 @@ class Activity extends Eloquent $activity = Activity::getBlank(); $activity->client_id = $client->id; $activity->activity_type_id = ACTIVITY_TYPE_ARCHIVE_CLIENT; - $activity->message = $user->getFullName() . ' archived client ' . $client->name; + $activity->message = Auth::user()->getFullName() . ' archived client ' . $client->name; $activity->save(); } @@ -45,7 +45,7 @@ class Activity extends Eloquent $activity->invoice_id = $invoice->id; $activity->client_id = $invoice->client_id; $activity->activity_type_id = ACTIVITY_TYPE_CREATE_INVOICE; - $activity->message = $user->getFullName() . ' created invoice ' . $invoice->number; + $activity->message = Auth::user()->getFullName() . ' created invoice ' . $invoice->number; $activity->save(); } @@ -55,7 +55,7 @@ class Activity extends Eloquent $activity->invoice_id = $invoice->id; $activity->client_id = $invoice->client_id; $activity->activity_type_id = ACTIVITY_TYPE_ARCHIVE_INVOICE; - $activity->message = $user->getFullName() . ' archived invoice ' . $invoice->number; + $activity->message = Auth::user()->getFullName() . ' archived invoice ' . $invoice->number; $activity->save(); } @@ -65,7 +65,7 @@ class Activity extends Eloquent $activity->invoice_id = $invoice->id; $activity->client_id = $invoice->client_id; $activity->activity_type_id = ACTIVITY_TYPE_EMAIL_INVOICE; - $activity->message = $user->getFullName() . ' emailed invoice ' . $invoice->number . ' to ' . $contact->getFullName(); + $activity->message = Auth::user()->getFullName() . ' emailed invoice ' . $invoice->number . ' to ' . $contact->getFullName(); $activity->save(); } @@ -74,7 +74,7 @@ class Activity extends Eloquent if (Auth::check()) { $activity = Activity::getBlank(); - $activity->message = $user->getFullName() . ' created invoice ' . $payment->transaction_reference; + $activity->message = Auth::user()->getFullName() . ' created invoice ' . $payment->transaction_reference; } else { @@ -96,7 +96,7 @@ class Activity extends Eloquent $activity->invoice_id = $invoice->id; $activity->client_id = $invoice->client_id; $activity->activity_type_id = ACTIVITY_TYPE_ARCHIVE_PAYMENT; - $activity->message = $user->getFullName() . ' archived payment ' . $invoice->number; + $activity->message = Auth::user()->getFullName() . ' archived payment ' . $invoice->number; $activity->save(); } diff --git a/app/models/Product.php b/app/models/Product.php index bdf74dde493c..9f00e236afe0 100755 --- a/app/models/Product.php +++ b/app/models/Product.php @@ -3,4 +3,22 @@ class Product extends Eloquent { protected $softDelete = true; + + public static function getProducts() + { + return Product::where('account_id','=',Auth::user()->account_id); + } + + public static function findProduct($key) + { + return Product::getProducts()->where('product_key','=',$key)->first(); + } + + public static function getProductKeys($products) + { + $products = array_pluck($products, 'product_key'); + $products = array_combine($products, $products); + + return $products; + } } \ No newline at end of file diff --git a/app/routes.php b/app/routes.php index a1cef2890d92..9c171ef33f75 100755 --- a/app/routes.php +++ b/app/routes.php @@ -97,6 +97,10 @@ function toArray($data) return json_decode(json_encode((array) $data), true); } +define("ENV_DEVELOPMENT", "local"); +define("ENV_STAGING", "staging"); +define("ENV_PRODUCTION", "production"); + define("ACCOUNT_DETAILS", "details"); define("ACCOUNT_SETTINGS", "settings"); define("ACCOUNT_IMPORT", "import"); diff --git a/app/views/header.blade.php b/app/views/header.blade.php index e9fc11fac162..b810712ca06a 100755 --- a/app/views/header.blade.php +++ b/app/views/header.blade.php @@ -197,7 +197,7 @@ } .invoice-table td { - padding: 0px !important; + padding: 2px !important; } .invoice-table td input, @@ -225,6 +225,7 @@ + @if (App::environment() != ENV_DEVELOPMENT) + @endif +

diff --git a/app/views/invoices/edit.blade.php b/app/views/invoices/edit.blade.php index 0b4abeac1aac..ca9cad1967a5 100755 --- a/app/views/invoices/edit.blade.php +++ b/app/views/invoices/edit.blade.php @@ -32,7 +32,7 @@

 

- +
@@ -51,23 +51,23 @@ -
- + {{ Former::text('product_key')->useDatalist(Product::getProductKeys($products), 'product_key')->raw()->data_bind("value: product_key, valueUpdate: 'afterkeydown'")->addClass('datalist') }} - + - + - + + @@ -106,9 +106,8 @@

 

- - - + +