From 1383dd47585f5eda99ba8eff6bf93cf67dc74f09 Mon Sep 17 00:00:00 2001 From: denisdulici Date: Tue, 21 Jan 2020 09:55:12 +0300 Subject: [PATCH] bills import/export --- .../Purchases/Sheets/BillHistories.php | 11 ++++- .../Purchases/Sheets/BillItemTaxes.php | 18 +++++--- app/Exports/Purchases/Sheets/BillItems.php | 15 +++++-- app/Exports/Purchases/Sheets/BillTotals.php | 10 ++++- .../Purchases/Sheets/BillTransactions.php | 20 ++++++--- app/Exports/Purchases/Sheets/Bills.php | 12 +++-- app/Http/Requests/Purchase/BillItemTax.php | 34 +++++++++++++++ .../Purchases/Sheets/BillHistories.php | 17 +++++++- .../Purchases/Sheets/BillItemTaxes.php | 41 ++++++++++++++++++ app/Imports/Purchases/Sheets/BillItems.php | 28 +++++++++++- app/Imports/Purchases/Sheets/BillTotals.php | 19 +++++++- .../Purchases/Sheets/BillTransactions.php | 10 ++++- app/Imports/Purchases/Sheets/Bills.php | 10 +++++ app/Imports/Sales/Sheets/InvoiceHistories.php | 5 +++ app/Imports/Sales/Sheets/InvoiceItemTaxes.php | 3 -- app/Traits/Import.php | 40 ++++++++--------- public/files/import/bills.xlsx | Bin 13882 -> 14059 bytes public/files/import/customers.xlsx | Bin 6595 -> 9034 bytes 18 files changed, 242 insertions(+), 51 deletions(-) create mode 100644 app/Http/Requests/Purchase/BillItemTax.php diff --git a/app/Exports/Purchases/Sheets/BillHistories.php b/app/Exports/Purchases/Sheets/BillHistories.php index 177bfbd9c..86b26b0f9 100644 --- a/app/Exports/Purchases/Sheets/BillHistories.php +++ b/app/Exports/Purchases/Sheets/BillHistories.php @@ -9,7 +9,7 @@ class BillHistories extends Export { public function collection() { - $model = Model::usingSearchString(request('search')); + $model = Model::with(['bill'])->usingSearchString(request('search')); if (!empty($this->ids)) { $model->whereIn('bill_id', (array) $this->ids); @@ -18,10 +18,17 @@ class BillHistories extends Export return $model->get(); } + public function map($model): array + { + $model->bill_number = $model->bill->bill_number; + + return parent::map($model); + } + public function fields(): array { return [ - 'bill_id', + 'bill_number', 'status', 'notify', 'description', diff --git a/app/Exports/Purchases/Sheets/BillItemTaxes.php b/app/Exports/Purchases/Sheets/BillItemTaxes.php index 46ff81c08..7ceed7662 100644 --- a/app/Exports/Purchases/Sheets/BillItemTaxes.php +++ b/app/Exports/Purchases/Sheets/BillItemTaxes.php @@ -9,7 +9,7 @@ class BillItemTaxes extends Export { public function collection() { - $model = Model::usingSearchString(request('search')); + $model = Model::with(['bill', 'item', 'tax'])->usingSearchString(request('search')); if (!empty($this->ids)) { $model->whereIn('bill_id', (array) $this->ids); @@ -18,13 +18,21 @@ class BillItemTaxes extends Export return $model->get(); } + public function map($model): array + { + $model->bill_number = $model->bill->bill_number; + $model->item_name = $model->item->name; + $model->tax_rate = $model->tax->rate; + + return parent::map($model); + } + public function fields(): array { return [ - 'bill_id', - 'bill_item_id', - 'tax_id', - 'name', + 'bill_number', + 'item_name', + 'tax_rate', 'amount', ]; } diff --git a/app/Exports/Purchases/Sheets/BillItems.php b/app/Exports/Purchases/Sheets/BillItems.php index a77ef4c5a..b131339f2 100644 --- a/app/Exports/Purchases/Sheets/BillItems.php +++ b/app/Exports/Purchases/Sheets/BillItems.php @@ -9,7 +9,7 @@ class BillItems extends Export { public function collection() { - $model = Model::usingSearchString(request('search')); + $model = Model::with(['bill', 'item'])->usingSearchString(request('search')); if (!empty($this->ids)) { $model->whereIn('bill_id', (array) $this->ids); @@ -18,12 +18,19 @@ class BillItems extends Export return $model->get(); } + public function map($model): array + { + $model->bill_number = $model->bill->bill_number; + $model->item_name = $model->item->name; + + return parent::map($model); + } + public function fields(): array { return [ - 'bill_id', - 'item_id', - 'name', + 'bill_number', + 'item_name', 'quantity', 'price', 'total', diff --git a/app/Exports/Purchases/Sheets/BillTotals.php b/app/Exports/Purchases/Sheets/BillTotals.php index 2cc0ea82f..388574f5d 100644 --- a/app/Exports/Purchases/Sheets/BillTotals.php +++ b/app/Exports/Purchases/Sheets/BillTotals.php @@ -9,7 +9,7 @@ class BillTotals extends Export { public function collection() { - $model = Model::usingSearchString(request('search')); + $model = Model::with(['bill'])->usingSearchString(request('search')); if (!empty($this->ids)) { $model->whereIn('bill_id', (array) $this->ids); @@ -18,11 +18,17 @@ class BillTotals extends Export return $model->get(); } + public function map($model): array + { + $model->bill_number = $model->bill->bill_number; + + return parent::map($model); + } public function fields(): array { return [ - 'bill_id', + 'bill_number', 'code', 'name', 'amount', diff --git a/app/Exports/Purchases/Sheets/BillTransactions.php b/app/Exports/Purchases/Sheets/BillTransactions.php index 7325ad2b6..7b19345fc 100644 --- a/app/Exports/Purchases/Sheets/BillTransactions.php +++ b/app/Exports/Purchases/Sheets/BillTransactions.php @@ -9,7 +9,7 @@ class BillTransactions extends Export { public function collection() { - $model = Model::type('expense')->isDocument()->usingSearchString(request('search')); + $model = Model::with(['account', 'category', 'contact', 'bill'])->type('expense')->isDocument()->usingSearchString(request('search')); if (!empty($this->ids)) { $model->whereIn('document_id', (array) $this->ids); @@ -18,17 +18,27 @@ class BillTransactions extends Export return $model->get(); } + public function map($model): array + { + $model->bill_number = $model->bill->bill_number; + $model->account_name = $model->account->name; + $model->category_name = $model->category->name; + $model->contact_email = $model->contact->email; + + return parent::map($model); + } + public function fields(): array { return [ + 'bill_number', 'paid_at', 'amount', 'currency_code', 'currency_rate', - 'account_id', - 'document_id', - 'contact_id', - 'category_id', + 'account_name', + 'contact_email', + 'category_name', 'description', 'payment_method', 'reference', diff --git a/app/Exports/Purchases/Sheets/Bills.php b/app/Exports/Purchases/Sheets/Bills.php index 6e674c6aa..2cf71415e 100644 --- a/app/Exports/Purchases/Sheets/Bills.php +++ b/app/Exports/Purchases/Sheets/Bills.php @@ -9,7 +9,7 @@ class Bills extends Export { public function collection() { - $model = Model::usingSearchString(request('search')); + $model = Model::with(['category'])->usingSearchString(request('search')); if (!empty($this->ids)) { $model->whereIn('id', (array) $this->ids); @@ -18,6 +18,13 @@ class Bills extends Export return $model->get(); } + public function map($model): array + { + $model->category_name = $model->category->name; + + return parent::map($model); + } + public function fields(): array { return [ @@ -29,8 +36,7 @@ class Bills extends Export 'amount', 'currency_code', 'currency_rate', - 'category_id', - 'contact_id', + 'category_name', 'contact_name', 'contact_email', 'contact_tax_number', diff --git a/app/Http/Requests/Purchase/BillItemTax.php b/app/Http/Requests/Purchase/BillItemTax.php new file mode 100644 index 000000000..c60c0828b --- /dev/null +++ b/app/Http/Requests/Purchase/BillItemTax.php @@ -0,0 +1,34 @@ + 'required|integer', + 'bill_item_id' => 'required|integer', + 'tax_id' => 'required|integer', + 'name' => 'required|string', + 'amount' => 'required', + ]; + } +} diff --git a/app/Imports/Purchases/Sheets/BillHistories.php b/app/Imports/Purchases/Sheets/BillHistories.php index 6a3d18e38..b534ef5cf 100644 --- a/app/Imports/Purchases/Sheets/BillHistories.php +++ b/app/Imports/Purchases/Sheets/BillHistories.php @@ -3,13 +3,19 @@ namespace App\Imports\Purchases\Sheets; use App\Abstracts\Import; -use App\Models\Purchase\BillHistory as Model; use App\Http\Requests\Purchase\BillHistory as Request; +use App\Models\Purchase\Bill; +use App\Models\Purchase\BillHistory as Model; class BillHistories extends Import { public function model(array $row) { + // @todo remove after 3.2 release + if ($row['bill_number'] == $this->empty_field) { + return null; + } + return new Model($row); } @@ -17,6 +23,8 @@ class BillHistories extends Import { $row = parent::map($row); + $row['bill_id'] = Bill::number($row['bill_number'])->pluck('id')->first(); + $row['notify'] = (int) $row['notify']; return $row; @@ -24,6 +32,11 @@ class BillHistories extends Import public function rules(): array { - return (new Request())->rules(); + $rules = (new Request())->rules(); + + $rules['bill_number'] = 'required|string'; + unset($rules['bill_id']); + + return $rules; } } diff --git a/app/Imports/Purchases/Sheets/BillItemTaxes.php b/app/Imports/Purchases/Sheets/BillItemTaxes.php index f0ba171a8..817ccb955 100644 --- a/app/Imports/Purchases/Sheets/BillItemTaxes.php +++ b/app/Imports/Purchases/Sheets/BillItemTaxes.php @@ -3,12 +3,53 @@ namespace App\Imports\Purchases\Sheets; use App\Abstracts\Import; +use App\Http\Requests\Purchase\BillItemTax as Request; +use App\Models\Common\Item; +use App\Models\Purchase\Bill; +use App\Models\Purchase\BillItem; use App\Models\Purchase\BillItemTax as Model; class BillItemTaxes extends Import { public function model(array $row) { + // @todo remove after 3.2 release + if ($row['bill_number'] == $this->empty_field) { + return null; + } + return new Model($row); } + + public function map($row): array + { + $row = parent::map($row); + + $row['bill_id'] = Bill::number($row['bill_number'])->pluck('id')->first(); + + if (empty($row['invoice_item_id']) && !empty($row['item_name'])) { + $item_id = Item::name($row['item_name'])->pluck('id')->first(); + $row['invoice_item_id'] = BillItem::where('item_id', $item_id)->pluck('id')->first(); + } + + $row['tax_id'] = $this->getTaxId($row); + + if (empty($row['name']) && !empty($row['item_name'])) { + $row['name'] = $row['item_name']; + } + + $row['amount'] = (double) $row['amount']; + + return $row; + } + + public function rules(): array + { + $rules = (new Request())->rules(); + + $rules['bill_number'] = 'required|string'; + unset($rules['bill_id']); + + return $rules; + } } diff --git a/app/Imports/Purchases/Sheets/BillItems.php b/app/Imports/Purchases/Sheets/BillItems.php index 51acb287d..5e1f254e9 100644 --- a/app/Imports/Purchases/Sheets/BillItems.php +++ b/app/Imports/Purchases/Sheets/BillItems.php @@ -3,8 +3,9 @@ namespace App\Imports\Purchases\Sheets; use App\Abstracts\Import; -use App\Models\Purchase\BillItem as Model; use App\Http\Requests\Purchase\BillItem as Request; +use App\Models\Purchase\Bill; +use App\Models\Purchase\BillItem as Model; class BillItems extends Import { @@ -13,8 +14,31 @@ class BillItems extends Import return new Model($row); } + public function map($row): array + { + $row = parent::map($row); + + $row['bill_id'] = Bill::number($row['bill_number'])->pluck('id')->first(); + + if (empty($row['item_id']) && !empty($row['item_name'])) { + $row['item_id'] = $this->getItemIdFromName($row); + + $row['name'] = $row['item_name']; + } + + $row['tax'] = (double) $row['tax']; + $row['tax_id'] = 0; + + return $row; + } + public function rules(): array { - return (new Request())->rules(); + $rules = (new Request())->rules(); + + $rules['bill_number'] = 'required|string'; + unset($rules['bill_id']); + + return $rules; } } diff --git a/app/Imports/Purchases/Sheets/BillTotals.php b/app/Imports/Purchases/Sheets/BillTotals.php index 18b93a0a2..b425d9f26 100644 --- a/app/Imports/Purchases/Sheets/BillTotals.php +++ b/app/Imports/Purchases/Sheets/BillTotals.php @@ -3,8 +3,9 @@ namespace App\Imports\Purchases\Sheets; use App\Abstracts\Import; -use App\Models\Purchase\BillTotal as Model; use App\Http\Requests\Purchase\BillTotal as Request; +use App\Models\Purchase\Bill; +use App\Models\Purchase\BillTotal as Model; class BillTotals extends Import { @@ -13,8 +14,22 @@ class BillTotals extends Import return new Model($row); } + public function map($row): array + { + $row = parent::map($row); + + $row['bill_id'] = Bill::number($row['bill_number'])->pluck('id')->first(); + + return $row; + } + public function rules(): array { - return (new Request())->rules(); + $rules = (new Request())->rules(); + + $rules['bill_number'] = 'required|string'; + unset($rules['bill_id']); + + return $rules; } } diff --git a/app/Imports/Purchases/Sheets/BillTransactions.php b/app/Imports/Purchases/Sheets/BillTransactions.php index dcbafbf0c..6f6952687 100644 --- a/app/Imports/Purchases/Sheets/BillTransactions.php +++ b/app/Imports/Purchases/Sheets/BillTransactions.php @@ -18,12 +18,20 @@ class BillTransactions extends Import $row = parent::map($row); $row['type'] = 'expense'; + $row['account_id'] = $this->getAccountId($row); + $row['category_id'] = $this->getCategoryId($row, 'expense'); + $row['contact_id'] = $this->getContactId($row, 'vendor'); + $row['document_id'] = $this->getDocumentId($row); return $row; } public function rules(): array { - return (new Request())->rules(); + $rules = (new Request())->rules(); + + $rules['bill_number'] = 'required|string'; + + return $rules; } } diff --git a/app/Imports/Purchases/Sheets/Bills.php b/app/Imports/Purchases/Sheets/Bills.php index f50ca9d45..768b1fa97 100644 --- a/app/Imports/Purchases/Sheets/Bills.php +++ b/app/Imports/Purchases/Sheets/Bills.php @@ -13,6 +13,16 @@ class Bills extends Import return new Model($row); } + public function map($row): array + { + $row = parent::map($row); + + $row['category_id'] = $this->getCategoryId($row, 'expense'); + $row['contact_id'] = $this->getContactId($row, 'vendor'); + + return $row; + } + public function rules(): array { return (new Request())->rules(); diff --git a/app/Imports/Sales/Sheets/InvoiceHistories.php b/app/Imports/Sales/Sheets/InvoiceHistories.php index f4b09d503..a40afcdd2 100644 --- a/app/Imports/Sales/Sheets/InvoiceHistories.php +++ b/app/Imports/Sales/Sheets/InvoiceHistories.php @@ -11,6 +11,11 @@ class InvoiceHistories extends Import { public function model(array $row) { + // @todo remove after 3.2 release + if ($row['invoice_number'] == $this->empty_field) { + return null; + } + return new Model($row); } diff --git a/app/Imports/Sales/Sheets/InvoiceItemTaxes.php b/app/Imports/Sales/Sheets/InvoiceItemTaxes.php index 58ab7e812..68cfaf91a 100644 --- a/app/Imports/Sales/Sheets/InvoiceItemTaxes.php +++ b/app/Imports/Sales/Sheets/InvoiceItemTaxes.php @@ -8,7 +8,6 @@ use App\Models\Common\Item; use App\Models\Sale\Invoice; use App\Models\Sale\InvoiceItem; use App\Models\Sale\InvoiceItemTax as Model; -use App\Models\Setting\Tax; class InvoiceItemTaxes extends Import { @@ -19,8 +18,6 @@ class InvoiceItemTaxes extends Import return null; } - $row['invoice_id'] = Invoice::number($row['invoice_number'])->pluck('id')->first(); - return new Model($row); } diff --git a/app/Traits/Import.php b/app/Traits/Import.php index 704c4c578..5644300f8 100644 --- a/app/Traits/Import.php +++ b/app/Traits/Import.php @@ -50,14 +50,14 @@ trait Import $type = !empty($type) ? $type : (!empty($row['type']) ? (($row['type'] == 'income') ? 'customer' : 'vendor') : 'customer'); - if (empty($id) && !empty($row['contact_name'])) { - $id = $this->getContactIdFromName($row, $type); - } - if (empty($row['contact_id']) && !empty($row['contact_email'])) { $id = $this->getContactIdFromEmail($row, $type); } + if (empty($id) && !empty($row['contact_name'])) { + $id = $this->getContactIdFromName($row, $type); + } + return $id; } @@ -116,9 +116,9 @@ trait Import 'currency_code' => $row['currency_code'], ], [ 'company_id' => session('company_id'), - 'name' => $row['currency_code'], - 'number' => Account::max('number') + 1, - 'opening_balance' => 0, + 'name' => !empty($row['account_name']) ? $row['account_name'] : $row['currency_code'], + 'number' => !empty($row['account_number']) ? $row['account_number'] : Account::max('number') + 1, + 'opening_balance' => !empty($row['opening_balance']) ? $row['opening_balance'] : 0, 'enabled' => 1, ])->id; } @@ -129,9 +129,9 @@ trait Import 'name' => $row['account_name'], ], [ 'company_id' => session('company_id'), - 'number' => Account::max('number') + 1, - 'currency_code' => setting('default.currency'), - 'opening_balance' => 0, + 'number' => !empty($row['account_number']) ? $row['account_number'] : Account::max('number') + 1, + 'currency_code' => !empty($row['currency_code']) ? $row['currency_code'] : setting('default.currency'), + 'opening_balance' => !empty($row['opening_balance']) ? $row['opening_balance'] : 0, 'enabled' => 1, ])->id; } @@ -142,9 +142,9 @@ trait Import 'number' => $row['account_number'], ], [ 'company_id' => session('company_id'), - 'name' => $row['account_number'], - 'currency_code' => setting('default.currency'), - 'opening_balance' => 0, + 'name' => !empty($row['account_name']) ? $row['account_name'] : $row['account_number'], + 'currency_code' => !empty($row['currency_code']) ? $row['currency_code'] : setting('default.currency'), + 'opening_balance' => !empty($row['opening_balance']) ? $row['opening_balance'] : 0, 'enabled' => 1, ])->id; } @@ -156,7 +156,7 @@ trait Import ], [ 'company_id' => session('company_id'), 'type' => $type, - 'color' => '#' . dechex(rand(0x000000, 0xFFFFFF)), + 'color' => !empty($row['category_color']) ? $row['category_color'] : '#' . dechex(rand(0x000000, 0xFFFFFF)), 'enabled' => 1, ])->id; } @@ -168,8 +168,8 @@ trait Import ], [ 'company_id' => session('company_id'), 'type' => $type, - 'name' => $row['contact_email'], - 'currency_code' => setting('default.currency'), + 'name' => !empty($row['contact_name']) ? $row['contact_name'] : $row['contact_email'], + 'currency_code' => !empty($row['contact_currency']) ? $row['contact_currency'] : setting('default.currency'), 'enabled' => 1, ])->id; } @@ -181,7 +181,7 @@ trait Import ], [ 'company_id' => session('company_id'), 'type' => $type, - 'currency_code' => setting('default.currency'), + 'currency_code' => !empty($row['contact_currency']) ? $row['contact_currency'] : setting('default.currency'), 'enabled' => 1, ])->id; } @@ -192,8 +192,8 @@ trait Import 'name' => $row['item_name'], ], [ 'company_id' => session('company_id'), - 'sale_price' => $row['price'], - 'purchase_price' => $row['price'], + 'sale_price' => !empty($row['sale_price']) ? $row['sale_price'] : $row['price'], + 'purchase_price' => !empty($row['purchase_price']) ? $row['purchase_price'] : $row['price'], 'enabled' => 1, ])->id; } @@ -205,7 +205,7 @@ trait Import ], [ 'company_id' => session('company_id'), 'type' => $type, - 'name' => $row['tax_rate'], + 'name' => !empty($row['tax_name']) ? $row['tax_name'] : $row['tax_rate'], 'enabled' => 1, ])->id; } diff --git a/public/files/import/bills.xlsx b/public/files/import/bills.xlsx index a9703953135ae1d943f04c5c62aa45354672fb89..053cd85099cb889dd33625e76b14ef0d53e75fcc 100644 GIT binary patch literal 14059 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

-75I@Z#2tFkF@Q|HCPT-57*?@?S*|2q*eFd zxfK*g$3Viygyc?~lCNxehneJb06P@QGrkzA=n&Y3eLZR3+*>MKK>~6Z{Bp!uB85vV z(wC=}V}|Chp|(8i*$0zfR(RCi0i`yYXozZc6y{G|)HH3tR8-2l;dl8E0tTlCVnsdTpJW_OhO!b9S*vxo z3VGzIG46blNNP2~!bVI7s|=A2_)0U)y5Q5U?k_SghtaD0(UYu?)Xk6C9tRG#D)nC4 zG)d)<6YQk*+RN6RvwaN{ntb=q-bVzB}5sF>pP_lve8A~*QNaL`Y1s*6FmY#wv)*4;2X z6Fi|YrxVN60lzfXarvHfm(|A=me{Z4$Og>*5YaJ{-wSF!&AbEWy!u%z#9Z@{Zq&I{{%Q!1)n>vPGrj5h(;>G*6YPkoPmI#f3dpkl0>G8!u7@!KrzffRAgZ5<09nlPylX3wp2Y285sibU}S{0M5> znF$vTNYYF%lMBr0AR}Yt)7t@9B=qJMmK|xI#gln|etfr)+Urrl2RofFW+de8(EN0_ zk`a~?EF@QH72Odqdv$^OXflU9kmka8y@#{DIct^oUvrczY$g*uY5FGsbmK#>VbE({a+2j)InVVK?TA3bQpl|mwadA7Cn`1#=+|00!*3U7$heFHxx zcpTo(;jY_wYJRGI+LKh|a0`(siMFH#p!X00n~+sh$)`NN_d$O>9Tc3}O@&Z9j;axX5+O|?Ax zsB2=DWI#=NgnJ|go}k=yT|q@os*d4#(-zYN89ghGiBRK!j3r0v?QD&xM*U}V+*I~` z0RI_6JrVUyIK0`9;ak@8za$P=f7_3$mQ6Z6hF5m|tM5-5*u=h7gg0?iTv;YG`kq z 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%0DkU~dq&_;rQot)Jv!Kt*sHU00t|x7 zr!GUB;C+9K%UzC|d`+kmC^7ugM}rXY?eLe7ND^nqmW(8G;BJRnCQ z^c+?c5*RVN$(>6Gn`P3Dh%y@w=&DFU;Bw202E>TPF-lO8*f>*RO{Tr}vg9@8+ZiE( zB=V)&$Ah2s2r~l;@>ZE!z!uM4_NA+dVw7|UJ;BGhWGxCpprKa1oojT3$hzDzNVeCK z-H0J{1%o#dl)>8UfthST{b?INCDO%HjJ+_X5TmPRGM3i-p7mCcB`+Ok;luXIcG|a) zrHaU<2l|yH1}%J(I!2S7K4L0EBz#gGOb0I+gWJ(D?|0W&BOx?ozv_+~-mZav)gEgJ z*;qRoTRZA1yV)8$eEj8c#*;Q=d+AX^&SX483Y$!*a*zx$wD0#7CHlcjPB66=my3!C z+B-}^rHLV=>9Oi3n+ z3XP!oT26JfA4H*{(dT`Nq8ROHy35EP%SB4Xfc~t?xI?*hI3Lx5YEL-W%~heAB9+f$ zhX2GFaN`jZ8)kl(U(CUy^O>DIP6U25iiOI!ceysUH-RGCyg?vLEijO>4{r=QLam_Z zURAK;l1oqJPBPyv$lr`S!v_)7+}3z^3Ns=jFn*0fi&-Wa6^YzXa~cAvL`yZtKq_w2 z6L4dKYiWkv3{H2lq|#bCBacnRVNbM=u^$H_I|avKi@(E7%!U|GM(l{6d<@W2g_N&$ zp=zYDW&zJzq4z7O-~nE3aSW7eb7Kr1f9MkMPiE^&{jpuM#l3p-9}*-`UT-x&h%<*u z;};)aQNBDu_rUUSlHm>O@>EXt@9ar)TTk}qKW*S~|8#uPm6rkpLirsd{LxDBUSn@c z0{{ddc>CQ=_pkc<1K_`Vt6u!vEgs-_P4G6*QEd3=J1~VeLeo)?80vs zzJIg-Rh|F;E&7e)&+%)~4j_NltN&W=zpLb*Qc|G(&G5f2@Sjq8?*xBM^oNvO|C8z`}Sd%IWv>l*I;jPLL3{+{vc zf3p33d-opTeVp|-fFjlJdH+*v|KCIZYBBg@{L*mZ9~%C}{8z)lKehJ0<=_|Zp9cJY zc>iudc>nnCYn=Z^NrL$6@&9~+-!H!_p5LRqF9iJ?rSUCDc@zGBtm8Mz@3PSMDDMmF z{zfT(6VAV&{4TS5kMh1E>2H*lx9+5WLHS*u^d9AXUB=%i4{zVI{srZCm4>_&=&!&H R0PXF^_${QcW%%{(e*h8dvb_KR literal 13882 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 S;H@1EBxrO)u|um1-mJ$NVp diff --git a/public/files/import/customers.xlsx b/public/files/import/customers.xlsx index 286a860322be008a8d2b0332f463e6fb4eb5fc5d..06c6044a1b007fa05180f8aaff11b90098ec89b1 100644 GIT binary patch literal 9034 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 literal 6595 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