diff --git a/app/Ninja/Import/BaseTransformer.php b/app/Ninja/Import/BaseTransformer.php index c816993d6827..d89d31bd030c 100644 --- a/app/Ninja/Import/BaseTransformer.php +++ b/app/Ninja/Import/BaseTransformer.php @@ -64,10 +64,22 @@ class BaseTransformer extends TransformerAbstract return str_pad($number, 4, '0', STR_PAD_LEFT); } + protected function getInvoiceId($invoiceNumber) + { + $invoiceNumber = $this->getInvoiceNumber($invoiceNumber); + return isset($this->maps[ENTITY_INVOICE][$invoiceNumber]) ? $this->maps[ENTITY_INVOICE][$invoiceNumber] : null; + } + protected function hasInvoice($invoiceNumber) { $invoiceNumber = $this->getInvoiceNumber($invoiceNumber); return isset($this->maps[ENTITY_INVOICE][$invoiceNumber]); } + protected function getInvoiceClientId($invoiceNumber) + { + $invoiceNumber = $this->getInvoiceNumber($invoiceNumber); + return isset($this->maps[ENTITY_INVOICE.'_'.ENTITY_CLIENT][$invoiceNumber])? $this->maps[ENTITY_INVOICE.'_'.ENTITY_CLIENT][$invoiceNumber] : null; + } + } \ No newline at end of file diff --git a/app/Ninja/Import/CSV/PaymentTransformer.php b/app/Ninja/Import/CSV/PaymentTransformer.php index 7acd3d88f839..428db37fc711 100644 --- a/app/Ninja/Import/CSV/PaymentTransformer.php +++ b/app/Ninja/Import/CSV/PaymentTransformer.php @@ -12,7 +12,7 @@ class PaymentTransformer extends BaseTransformer 'amount' => $data->paid, 'payment_date_sql' => isset($data->invoice_date) ? $data->invoice_date : null, 'client_id' => $data->client_id, - 'invoice_id' => $data->invoice_id, + 'invoice_id' => $this->getInvoiceId($data->invoice_id), ]; }); } diff --git a/app/Ninja/Import/FreshBooks/PaymentTransformer.php b/app/Ninja/Import/FreshBooks/PaymentTransformer.php index 1f69fdbacf41..def45a5eac3b 100644 --- a/app/Ninja/Import/FreshBooks/PaymentTransformer.php +++ b/app/Ninja/Import/FreshBooks/PaymentTransformer.php @@ -12,7 +12,7 @@ class PaymentTransformer extends BaseTransformer 'amount' => $data->paid, 'payment_date_sql' => $data->create_date, 'client_id' => $data->client_id, - 'invoice_id' => $data->invoice_id, + 'invoice_id' => $this->getInvoiceId($data->invoice_id), ]; }); } diff --git a/app/Ninja/Import/Harvest/PaymentTransformer.php b/app/Ninja/Import/Harvest/PaymentTransformer.php index 0efd442886cc..cdb53c6d5240 100644 --- a/app/Ninja/Import/Harvest/PaymentTransformer.php +++ b/app/Ninja/Import/Harvest/PaymentTransformer.php @@ -12,7 +12,7 @@ class PaymentTransformer extends BaseTransformer 'amount' => $data->paid_amount, 'payment_date_sql' => $this->getDate($data->last_payment_date, 'm/d/Y'), 'client_id' => $data->client_id, - 'invoice_id' => $data->invoice_id, + 'invoice_id' => $this->getInvoiceId($data->invoice_id), ]; }); } diff --git a/app/Ninja/Import/Hiveage/PaymentTransformer.php b/app/Ninja/Import/Hiveage/PaymentTransformer.php index d6232d05bcc9..c1debef5bfc7 100644 --- a/app/Ninja/Import/Hiveage/PaymentTransformer.php +++ b/app/Ninja/Import/Hiveage/PaymentTransformer.php @@ -12,7 +12,7 @@ class PaymentTransformer extends BaseTransformer 'amount' => $data->paid_total, 'payment_date_sql' => $this->getDate($data->last_paid_on), 'client_id' => $data->client_id, - 'invoice_id' => $data->invoice_id, + 'invoice_id' => $this->getInvoiceId($data->invoice_id), ]; }); } diff --git a/app/Ninja/Import/Invoiceable/PaymentTransformer.php b/app/Ninja/Import/Invoiceable/PaymentTransformer.php index c52494cdc689..453c658f63f5 100644 --- a/app/Ninja/Import/Invoiceable/PaymentTransformer.php +++ b/app/Ninja/Import/Invoiceable/PaymentTransformer.php @@ -12,7 +12,7 @@ class PaymentTransformer extends BaseTransformer 'amount' => $data->paid, 'payment_date_sql' => $data->date_paid, 'client_id' => $data->client_id, - 'invoice_id' => $data->invoice_id, + 'invoice_id' => $this->getInvoiceId($data->invoice_id), ]; }); } diff --git a/app/Ninja/Import/Nutcache/PaymentTransformer.php b/app/Ninja/Import/Nutcache/PaymentTransformer.php index 04e783361f80..42c9e1dee67a 100644 --- a/app/Ninja/Import/Nutcache/PaymentTransformer.php +++ b/app/Ninja/Import/Nutcache/PaymentTransformer.php @@ -12,7 +12,7 @@ class PaymentTransformer extends BaseTransformer 'amount' => (float) $data->paid_to_date, 'payment_date_sql' => $this->getDate($data->date), 'client_id' => $data->client_id, - 'invoice_id' => $data->invoice_id, + 'invoice_id' => $this->getInvoiceId($data->invoice_id), ]; }); } diff --git a/app/Ninja/Import/Ronin/PaymentTransformer.php b/app/Ninja/Import/Ronin/PaymentTransformer.php index c04101456200..e336c5ce653c 100644 --- a/app/Ninja/Import/Ronin/PaymentTransformer.php +++ b/app/Ninja/Import/Ronin/PaymentTransformer.php @@ -12,7 +12,7 @@ class PaymentTransformer extends BaseTransformer 'amount' => (float) $data->total - (float) $data->balance, 'payment_date_sql' => $data->date_paid, 'client_id' => $data->client_id, - 'invoice_id' => $data->invoice_id, + 'invoice_id' => $this->getInvoiceId($data->invoice_id), ]; }); } diff --git a/app/Ninja/Import/Wave/InvoiceTransformer.php b/app/Ninja/Import/Wave/InvoiceTransformer.php new file mode 100644 index 000000000000..9d1cde0d6ea8 --- /dev/null +++ b/app/Ninja/Import/Wave/InvoiceTransformer.php @@ -0,0 +1,37 @@ +getClientId($data->customer)) { + return false; + } + + if ($this->hasInvoice($data->invoice_num)) { + return false; + } + + return new Item($data, function ($data) { + return [ + 'client_id' => $this->getClientId($data->customer), + 'invoice_number' => $this->getInvoiceNumber($data->invoice_num), + 'po_number' => $data->po_so, + 'invoice_date_sql' => $this->getDate($data->invoice_date), + 'due_date_sql' => $this->getDate($data->due_date), + 'paid' => 0, + 'invoice_items' => [ + [ + 'product_key' => $data->product, + 'notes' => $data->description, + 'cost' => (float) $data->amount, + 'qty' => (float) $data->quantity, + ] + ], + ]; + }); + } +} \ No newline at end of file diff --git a/app/Ninja/Import/Wave/PaymentTransformer.php b/app/Ninja/Import/Wave/PaymentTransformer.php new file mode 100644 index 000000000000..522fe8ff9238 --- /dev/null +++ b/app/Ninja/Import/Wave/PaymentTransformer.php @@ -0,0 +1,23 @@ +getInvoiceClientId($data->invoice_num)) { + return false; + } + + return new Item($data, function ($data) use ($maps) { + return [ + 'amount' => (float) $data->amount, + 'payment_date_sql' => $this->getDate($data->payment_date), + 'client_id' => $this->getInvoiceClientId($data->invoice_num), + 'invoice_id' => $this->getInvoiceId($data->invoice_num), + ]; + }); + } +} \ No newline at end of file diff --git a/app/Services/ImportService.php b/app/Services/ImportService.php index c5efffb3ff35..b5aa2ac0b2bd 100644 --- a/app/Services/ImportService.php +++ b/app/Services/ImportService.php @@ -73,15 +73,10 @@ class ImportService RESULT_FAILURE => [], ]; - Excel::load($file, function ($reader) use ($source, $entityType, &$results) { $this->checkData($entityType, count($reader->all())); $maps = $this->createMaps(); - $reader->each(function ($row) use ($source, $entityType, $maps, &$results) { - $result = $this->saveData($source, $entityType, $row, $maps); - if ($result) { - $results[RESULT_SUCCESS][] = $result; } else { $results[RESULT_FAILURE][] = $row; } @@ -108,7 +103,6 @@ class ImportService $invoice = Invoice::createNew(); $data['invoice_number'] = $account->getNextInvoiceNumber($invoice); } - if ($this->validate($source, $data, $entityType) !== true) { return; } diff --git a/resources/lang/en/texts.php b/resources/lang/en/texts.php index feebbe03c375..6820588eb432 100644 --- a/resources/lang/en/texts.php +++ b/resources/lang/en/texts.php @@ -240,6 +240,7 @@ return array( 'deleted_invoices' => 'Successfully deleted :count invoices', 'created_payment' => 'Successfully created payment', + 'created_payments' => 'Successfully created :count payment(s)', 'archived_payment' => 'Successfully archived payment', 'archived_payments' => 'Successfully archived :count payments', 'deleted_payment' => 'Successfully deleted payment',