From c2bb8711a0b5b79e84d5378556c27b13d2c8c52b Mon Sep 17 00:00:00 2001 From: David Bomba Date: Wed, 27 Jan 2016 07:52:30 +1100 Subject: [PATCH 1/5] Bug Fixed --- app/Http/Controllers/ClientApiController.php | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/ClientApiController.php b/app/Http/Controllers/ClientApiController.php index cf93c68c9915..da270854c384 100644 --- a/app/Http/Controllers/ClientApiController.php +++ b/app/Http/Controllers/ClientApiController.php @@ -131,11 +131,13 @@ class ClientApiController extends BaseAPIController * ) */ - public function update(UpdateClientRequest $request) + public function update(UpdateClientRequest $request, $publicId) { - $client = $this->clientService->save($request->input()); + $data = $request->input(); + $data['public_id'] = $publicId; + $this->clientService->save($data); - $client = Client::scope($client->public_id) + $client = Client::scope($publicId) ->with('country', 'contacts', 'industry', 'size', 'currency') ->first(); From 71b2970279d093c1db5f75648c2b4457c144927d Mon Sep 17 00:00:00 2001 From: David Bomba Date: Wed, 27 Jan 2016 11:36:21 +1100 Subject: [PATCH 2/5] Bug fixes --- app/Http/Controllers/ClientApiController.php | 12 +++++++++++- app/Http/Controllers/InvoiceApiController.php | 6 +----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/app/Http/Controllers/ClientApiController.php b/app/Http/Controllers/ClientApiController.php index da270854c384..f5eda2371c0d 100644 --- a/app/Http/Controllers/ClientApiController.php +++ b/app/Http/Controllers/ClientApiController.php @@ -133,9 +133,19 @@ class ClientApiController extends BaseAPIController public function update(UpdateClientRequest $request, $publicId) { + if ($request->action == ACTION_ARCHIVE) { + $client = Client::scope($publicId)->firstOrFail(); + $this->clientRepo->archive($client); + + $transformer = new ClientTransformer(Auth::user()->account, Input::get('serializer')); + $data = $this->createItem($client, $transformer, ENTITY_CLIENT); + + return $this->response($data); + } + $data = $request->input(); $data['public_id'] = $publicId; - $this->clientService->save($data); + $this->clientRepo->save($data); $client = Client::scope($publicId) ->with('country', 'contacts', 'industry', 'size', 'currency') diff --git a/app/Http/Controllers/InvoiceApiController.php b/app/Http/Controllers/InvoiceApiController.php index 52b1811ca21f..a168870dedfc 100644 --- a/app/Http/Controllers/InvoiceApiController.php +++ b/app/Http/Controllers/InvoiceApiController.php @@ -297,11 +297,7 @@ class InvoiceApiController extends BaseAPIController if ($request->action == ACTION_ARCHIVE) { $invoice = Invoice::scope($publicId)->firstOrFail(); $this->invoiceRepo->archive($invoice); - /* - $response = json_encode(RESULT_SUCCESS, JSON_PRETTY_PRINT); - $headers = Utils::getApiHeaders(); - return Response::make($response, 200, $headers); - */ + $transformer = new InvoiceTransformer(\Auth::user()->account, Input::get('serializer')); $data = $this->createItem($invoice, $transformer, 'invoice'); From 4799b2e86c11cc6a933750e9e894a1405186f409 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Wed, 27 Jan 2016 12:56:24 +1100 Subject: [PATCH 3/5] Added ability to convert a quote to an invoice through the API --- app/Http/Controllers/InvoiceApiController.php | 9 +++++++++ app/Http/routes.php | 1 + 2 files changed, 10 insertions(+) diff --git a/app/Http/Controllers/InvoiceApiController.php b/app/Http/Controllers/InvoiceApiController.php index a168870dedfc..84ca80529d56 100644 --- a/app/Http/Controllers/InvoiceApiController.php +++ b/app/Http/Controllers/InvoiceApiController.php @@ -303,6 +303,15 @@ class InvoiceApiController extends BaseAPIController return $this->response($data); } + else if ($request->action == ACTION_CONVERT) { + $quote = Invoice::scope($publicId)->firstOrFail(); + $invoice = $this->invoiceRepo->cloneInvoice($quote, $quote->id); + + $transformer = new InvoiceTransformer(\Auth::user()->account, Input::get('serializer')); + $data = $this->createItem($invoice, $transformer, 'invoice'); + + return $this->response($data); + } $data = $request->input(); $data['public_id'] = $publicId; diff --git a/app/Http/routes.php b/app/Http/routes.php index 4bd84629f0c6..27ca4a21afc2 100644 --- a/app/Http/routes.php +++ b/app/Http/routes.php @@ -329,6 +329,7 @@ if (!defined('CONTACT_EMAIL')) { define('ACTION_RESTORE', 'restore'); define('ACTION_ARCHIVE', 'archive'); + define('ACTION_CONVERT', 'convert'); define('ACTION_DELETE', 'delete'); define('ACTIVITY_TYPE_CREATE_CLIENT', 1); From 76f4530ffd200f81ed73620c58eee7e1cc93d958 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Wed, 27 Jan 2016 14:31:38 +1100 Subject: [PATCH 4/5] include archived clients --- app/Http/Controllers/ClientApiController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/ClientApiController.php b/app/Http/Controllers/ClientApiController.php index f5eda2371c0d..d9e2d13d08e8 100644 --- a/app/Http/Controllers/ClientApiController.php +++ b/app/Http/Controllers/ClientApiController.php @@ -52,7 +52,7 @@ class ClientApiController extends BaseAPIController { $clients = Client::scope() ->with($this->getIncluded()) - ->orderBy('created_at', 'desc'); + ->orderBy('created_at', 'desc')->withTrashed(); // Filter by email if (Input::has('email')) { From fa2187ce2003c13ca31c2805e77d937a7ebf10af Mon Sep 17 00:00:00 2001 From: David Bomba Date: Wed, 27 Jan 2016 21:00:00 +1100 Subject: [PATCH 5/5] update invoice status via API --- app/Http/Controllers/InvoiceApiController.php | 4 ++++ app/Ninja/Repositories/InvoiceRepository.php | 7 +++++++ 2 files changed, 11 insertions(+) diff --git a/app/Http/Controllers/InvoiceApiController.php b/app/Http/Controllers/InvoiceApiController.php index 84ca80529d56..b9b97835e68b 100644 --- a/app/Http/Controllers/InvoiceApiController.php +++ b/app/Http/Controllers/InvoiceApiController.php @@ -185,6 +185,10 @@ class InvoiceApiController extends BaseAPIController 'partial' => 0 ]; + if (!isset($data['invoice_status_id']) || $data['invoice_status_id'] == 0) { + $data['invoice_status_id'] = INVOICE_STATUS_DRAFT; + } + if (!isset($data['invoice_date'])) { $fields['invoice_date_sql'] = date_create()->format('Y-m-d'); } diff --git a/app/Ninja/Repositories/InvoiceRepository.php b/app/Ninja/Repositories/InvoiceRepository.php index 9c1a6dcc0356..ffd27f1a9f14 100644 --- a/app/Ninja/Repositories/InvoiceRepository.php +++ b/app/Ninja/Repositories/InvoiceRepository.php @@ -244,6 +244,13 @@ class InvoiceRepository extends BaseRepository $invoice->invoice_date = Utils::toSqlDate($data['invoice_date']); } + if(isset($data['invoice_status_id'])) { + if($data['invoice_status_id'] == 0) { + $data['invoice_status_id'] = INVOICE_STATUS_DRAFT; + } + $invoice->invoice_status_id = $data['invoice_status_id']; + } + if ($invoice->is_recurring) { if ($invoice->start_date && $invoice->start_date != Utils::toSqlDate($data['start_date'])) { $invoice->last_sent_date = null;