From bf0d39cbb719522e6778174ebf6d9dffa6bce2f5 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Wed, 19 Apr 2023 15:37:08 +1000 Subject: [PATCH] Recurring Invoice import --- app/Import/Definitions/RecurringInvoiceMap.php | 6 +++--- app/Import/Transformer/BaseTransformer.php | 5 +++++ app/Import/Transformer/Csv/RecurringInvoiceTransformer.php | 3 +-- tests/Feature/Import/CSV/CsvImportTest.php | 2 +- tests/Feature/Import/recurring_invoice.csv | 2 +- 5 files changed, 11 insertions(+), 7 deletions(-) diff --git a/app/Import/Definitions/RecurringInvoiceMap.php b/app/Import/Definitions/RecurringInvoiceMap.php index 37cb28c2544e..614288aa4f24 100644 --- a/app/Import/Definitions/RecurringInvoiceMap.php +++ b/app/Import/Definitions/RecurringInvoiceMap.php @@ -23,7 +23,7 @@ class RecurringInvoiceMap 4 => 'client.name', 5 => 'invoice.discount', 6 => 'invoice.po_number', - 7 => 'invoice.date', + 7 => 'invoice.next_send_date', 8 => 'invoice.due_date', 9 => 'invoice.terms', 10 => 'invoice.status', @@ -87,7 +87,7 @@ class RecurringInvoiceMap 4 => 'texts.client', 5 => 'texts.discount', 6 => 'texts.po_number', - 7 => 'texts.date', + 7 => 'texts.start_date', 8 => 'texts.due_date', 9 => 'texts.terms', 10 => 'texts.status', @@ -114,7 +114,7 @@ class RecurringInvoiceMap 31 => 'texts.surcharge', 32 => 'texts.surcharge', 33 => 'texts.exchange_rate', - 34 => 'texts.frequency', + 34 => 'texts.frequency_id', 35 => 'texts.remaining_cycles', 36 => 'texts.auto_bill', 37 => 'texts.payment_date', diff --git a/app/Import/Transformer/BaseTransformer.php b/app/Import/Transformer/BaseTransformer.php index beba68419935..cf5fa0d3bedc 100644 --- a/app/Import/Transformer/BaseTransformer.php +++ b/app/Import/Transformer/BaseTransformer.php @@ -147,6 +147,11 @@ class BaseTransformer public function getRemainingCycles($remaining_cycles = -1): int { + + if ($remaining_cycles == 'endless') { + return -1; + } + return (int)$remaining_cycles; } diff --git a/app/Import/Transformer/Csv/RecurringInvoiceTransformer.php b/app/Import/Transformer/Csv/RecurringInvoiceTransformer.php index 04adcb9abf38..818aa5b8eae3 100644 --- a/app/Import/Transformer/Csv/RecurringInvoiceTransformer.php +++ b/app/Import/Transformer/Csv/RecurringInvoiceTransformer.php @@ -130,8 +130,7 @@ class RecurringInvoiceTransformer extends BaseTransformer ), 'frequency_id' => $this->getFrequency(isset($invoice_data['invoice.frequency_id']) ? $invoice_data['invoice.frequency_id'] : 'monthly' ), - 'remaining_cycles' => $this->getRemainingCycles( - $this->getNumber($invoice_data, 'invoice.remaining_cycles') + 'remaining_cycles' => $this->getRemainingCycles(isset($invoice_data['invoice.remaining_cycles']) ? $invoice_data['invoice.remaining_cycles'] : -1 ), // 'archived' => $status === 'archived', ]; diff --git a/tests/Feature/Import/CSV/CsvImportTest.php b/tests/Feature/Import/CSV/CsvImportTest.php index 45612725ca83..d12648349f22 100644 --- a/tests/Feature/Import/CSV/CsvImportTest.php +++ b/tests/Feature/Import/CSV/CsvImportTest.php @@ -103,7 +103,7 @@ class CsvImportTest extends TestCase 12 => 'invoice.public_notes', 13 => 'invoice.private_notes', 5 => 'invoice.number', - 7 => 'invoice.date', + 7 => 'invoice.next_send_date', 17 => 'item.product_key', 18 => 'item.notes', 19 => 'item.cost', diff --git a/tests/Feature/Import/recurring_invoice.csv b/tests/Feature/Import/recurring_invoice.csv index aa76a2f2aa91..40b31407128e 100644 --- a/tests/Feature/Import/recurring_invoice.csv +++ b/tests/Feature/Import/recurring_invoice.csv @@ -1,7 +1,7 @@ "Invoice Ninja v4.5.17 - December 19, 2020 11:28 pm",,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,,,,,,,, INVOICES,,,,,,,,,,,,,,,,,,,, -Client,Email,Auto Bill,Frequency,Remaining Cycles,Invoice Number,Amount,Paid,PO Number,Status,Invoice Date,Due Date,Discount,Partial/Deposit,Partial Due Date,Public Notes,Private Notes,Item Product,Item Notes,Item Cost,Item Quantity +Client,Email,Auto Bill,Frequency,Remaining Cycles,Invoice Number,Amount,Paid,PO Number,Status,Start Date,Due Date,Discount,Partial/Deposit,Partial Due Date,Public Notes,Private Notes,Item Product,Item Notes,Item Cost,Item Quantity Ludwig Krajcik DVM,brook59@example.org,always,monthly,endless,1,$13.50,$5.01,,Partial,2019-11-25,2019-10-20,,$0.00,,,,et,Ad neque sit dolores est praesentium. In laboriosam fugiat et a adipisci id laborum. Quis nam aperiam non qui porro.,1.35,10 Ludwig Krajcik DVM,brook59@example.org,always,monthly,endless,2,$26.67,$6.94,,Partial,2020-02-19,2020-02-29,,$0.00,,,,omnis,Dicta quam ut nihil animi occaecati omnis nulla. Eum minus quae ut et. Et iste consequatur saepe quam.,8.89,3 Ludwig Krajcik DVM,brook59@example.org,always,monthly,endless,2,$26.67,$6.94,,Partial,2020-02-19,2020-02-29,,$0.00,,,,omnis,Dicta quam ut nihil animi occaecati omnis nulla. Eum minus quae ut et. Et iste consequatur saepe quam.,8.89,3