import chunk reading

This commit is contained in:
denisdulici 2020-01-20 01:26:35 +03:00
parent 8101b70ef8
commit 233c0fa57b
22 changed files with 149 additions and 481 deletions

View File

@ -1,26 +1,26 @@
<?php <?php
namespace App\Imports\Purchases\Sheets; namespace App\Abstracts;
use App\Models\Banking\Transaction as Model; use Illuminate\Support\Str;
use App\Http\Requests\Banking\Transaction as Request;
use Maatwebsite\Excel\Concerns\ToModel; use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithBatchInserts;
use Maatwebsite\Excel\Concerns\WithChunkReading;
use Maatwebsite\Excel\Concerns\WithHeadingRow; use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\WithMapping; use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Concerns\WithValidation; use Maatwebsite\Excel\Concerns\WithValidation;
use Maatwebsite\Excel\Validators\Failure; use Maatwebsite\Excel\Validators\Failure;
class BillPayments implements ToModel, WithHeadingRow, WithMapping, WithValidation abstract class Import implements ToModel, WithBatchInserts, WithChunkReading, WithHeadingRow, WithMapping, WithValidation
{ {
public function model(array $row)
{
return new Model($row);
}
public function map($row): array public function map($row): array
{ {
$row['company_id'] = session('company_id'); $row['company_id'] = session('company_id');
$row['type'] = 'expense';
// Make enabled field integer
if (isset($row['enabled'])) {
$row['enabled'] = (int) $row['enabled'];
}
// Make reconciled field integer // Make reconciled field integer
if (isset($row['reconciled'])) { if (isset($row['reconciled'])) {
@ -32,19 +32,31 @@ class BillPayments implements ToModel, WithHeadingRow, WithMapping, WithValidati
public function rules(): array public function rules(): array
{ {
return (new Request())->rules(); return [];
}
public function batchSize(): int
{
return 100;
}
public function chunkSize(): int
{
return 100;
} }
public function onFailure(Failure ...$failures) public function onFailure(Failure ...$failures)
{ {
$sheet = Str::snake((new \ReflectionClass($this))->getShortName());
foreach ($failures as $failure) { foreach ($failures as $failure) {
$message = trans('messages.error.import_column', [ $message = trans('messages.error.import_column', [
'message' => $failure->errors()->first(), 'message' => $failure->errors()->first(),
'sheet' => 'bill_payments', 'sheet' => $sheet,
'line' => $failure->attribute(), 'line' => $failure->attribute(),
]); ]);
flash($message)->error()->important(); flash($message)->error()->important();
} }
} }
} }

View File

@ -2,48 +2,19 @@
namespace App\Imports\Banking; namespace App\Imports\Banking;
use App\Abstracts\Import;
use App\Models\Banking\Transaction as Model; use App\Models\Banking\Transaction as Model;
use App\Http\Requests\Banking\Transaction as Request; use App\Http\Requests\Banking\Transaction as Request;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Concerns\WithValidation;
use Maatwebsite\Excel\Validators\Failure;
class Transactions implements ToModel, WithHeadingRow, WithMapping, WithValidation class Transactions extends Import
{ {
public function model(array $row) public function model(array $row)
{ {
return new Model($row); return new Model($row);
} }
public function map($row): array
{
$row['company_id'] = session('company_id');
// Make reconciled field integer
if (isset($row['reconciled'])) {
$row['reconciled'] = (int) $row['reconciled'];
}
return $row;
}
public function rules(): array public function rules(): array
{ {
return (new Request())->rules(); return (new Request())->rules();
} }
}
public function onFailure(Failure ...$failures)
{
foreach ($failures as $failure) {
$message = trans('messages.error.import_column', [
'message' => $failure->errors()->first(),
'sheet' => 'transactions',
'line' => $failure->attribute(),
]);
flash($message)->error()->important();
}
}
}

View File

@ -2,16 +2,12 @@
namespace App\Imports\Common; namespace App\Imports\Common;
use App\Abstracts\Import;
use App\Models\Common\Item as Model; use App\Models\Common\Item as Model;
use App\Http\Requests\Common\Item as Request; use App\Http\Requests\Common\Item as Request;
use App\Jobs\Common\CreateItem; use App\Jobs\Common\CreateItem;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Concerns\WithValidation;
use Maatwebsite\Excel\Validators\Failure;
class Items implements ToModel, WithHeadingRow, WithMapping, WithValidation class Items extends Import
{ {
public function model(array $row) public function model(array $row)
{ {
@ -21,33 +17,8 @@ class Items implements ToModel, WithHeadingRow, WithMapping, WithValidation
//return dispatch_now(new CreateItem($request)); //return dispatch_now(new CreateItem($request));
} }
public function map($row): array
{
$row['company_id'] = session('company_id');
// Make enabled field integer
if (isset($row['enabled'])) {
$row['enabled'] = (int) $row['enabled'];
}
return $row;
}
public function rules(): array public function rules(): array
{ {
return (new Request())->rules(); return (new Request())->rules();
} }
public function onFailure(Failure ...$failures)
{
foreach ($failures as $failure) {
$message = trans('messages.error.import_column', [
'message' => $failure->errors()->first(),
'sheet' => 'items',
'line' => $failure->attribute(),
]);
flash($message)->error()->important();
}
}
} }

View File

@ -6,8 +6,8 @@ use App\Imports\Purchases\Sheets\Bills as Base;
use App\Imports\Purchases\Sheets\BillItems; use App\Imports\Purchases\Sheets\BillItems;
use App\Imports\Purchases\Sheets\BillItemTaxes; use App\Imports\Purchases\Sheets\BillItemTaxes;
use App\Imports\Purchases\Sheets\BillHistories; use App\Imports\Purchases\Sheets\BillHistories;
use App\Imports\Purchases\Sheets\BillPayments;
use App\Imports\Purchases\Sheets\BillTotals; use App\Imports\Purchases\Sheets\BillTotals;
use App\Imports\Purchases\Sheets\BillTransactions;
use Maatwebsite\Excel\Concerns\WithMultipleSheets; use Maatwebsite\Excel\Concerns\WithMultipleSheets;
class Bills implements WithMultipleSheets class Bills implements WithMultipleSheets
@ -19,8 +19,8 @@ class Bills implements WithMultipleSheets
'bill_items' => new BillItems(), 'bill_items' => new BillItems(),
'bill_item_taxes' => new BillItemTaxes(), 'bill_item_taxes' => new BillItemTaxes(),
'bill_histories' => new BillHistories(), 'bill_histories' => new BillHistories(),
'bill_payments' => new BillPayments(),
'bill_totals' => new BillTotals(), 'bill_totals' => new BillTotals(),
'bill_transactions' => new BillTransactions(),
]; ];
} }
} }

View File

@ -2,15 +2,12 @@
namespace App\Imports\Purchases; namespace App\Imports\Purchases;
use App\Abstracts\Import;
use App\Models\Banking\Transaction as Model; use App\Models\Banking\Transaction as Model;
use App\Http\Requests\Banking\Transaction as Request; use App\Http\Requests\Banking\Transaction as Request;
use Maatwebsite\Excel\Concerns\ToModel; use Jenssegers\Date\Date;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Concerns\WithValidation;
use Maatwebsite\Excel\Validators\Failure;
class Payments implements ToModel, WithHeadingRow, WithMapping, WithValidation class Payments extends Import
{ {
public function model(array $row) public function model(array $row)
{ {
@ -21,6 +18,7 @@ class Payments implements ToModel, WithHeadingRow, WithMapping, WithValidation
{ {
$row['company_id'] = session('company_id'); $row['company_id'] = session('company_id');
$row['type'] = 'expense'; $row['type'] = 'expense';
$row['paid_at'] = Date::parse($row['paid_at'])->format('Y-m-d H:i:s');
// Make reconciled field integer // Make reconciled field integer
if (isset($row['reconciled'])) { if (isset($row['reconciled'])) {
@ -34,17 +32,4 @@ class Payments implements ToModel, WithHeadingRow, WithMapping, WithValidation
{ {
return (new Request())->rules(); return (new Request())->rules();
} }
}
public function onFailure(Failure ...$failures)
{
foreach ($failures as $failure) {
$message = trans('messages.error.import_column', [
'message' => $failure->errors()->first(),
'sheet' => 'payments',
'line' => $failure->attribute(),
]);
flash($message)->error()->important();
}
}
}

View File

@ -2,43 +2,19 @@
namespace App\Imports\Purchases\Sheets; namespace App\Imports\Purchases\Sheets;
use App\Abstracts\Import;
use App\Models\Purchase\BillHistory as Model; use App\Models\Purchase\BillHistory as Model;
use App\Http\Requests\Purchase\BillHistory as Request; use App\Http\Requests\Purchase\BillHistory as Request;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Concerns\WithValidation;
use Maatwebsite\Excel\Validators\Failure;
class BillHistories implements ToModel, WithHeadingRow, WithMapping, WithValidation class BillHistories extends Import
{ {
public function model(array $row) public function model(array $row)
{ {
return new Model($row); return new Model($row);
} }
public function map($row): array
{
$row['company_id'] = session('company_id');
return $row;
}
public function rules(): array public function rules(): array
{ {
return (new Request())->rules(); return (new Request())->rules();
} }
}
public function onFailure(Failure ...$failures)
{
foreach ($failures as $failure) {
$message = trans('messages.error.import_column', [
'message' => $failure->errors()->first(),
'sheet' => 'bill_histories',
'line' => $failure->attribute(),
]);
flash($message)->error()->important();
}
}
}

View File

@ -2,36 +2,13 @@
namespace App\Imports\Purchases\Sheets; namespace App\Imports\Purchases\Sheets;
use App\Abstracts\Import;
use App\Models\Purchase\BillItemTax as Model; use App\Models\Purchase\BillItemTax as Model;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Validators\Failure;
class BillItemTaxes implements ToModel, WithHeadingRow, WithMapping class BillItemTaxes extends Import
{ {
public function model(array $row) public function model(array $row)
{ {
return new Model($row); return new Model($row);
} }
}
public function map($row): array
{
$row['company_id'] = session('company_id');
return $row;
}
public function onFailure(Failure ...$failures)
{
foreach ($failures as $failure) {
$message = trans('messages.error.import_column', [
'message' => $failure->errors()->first(),
'sheet' => 'bill_item_taxes',
'line' => $failure->attribute(),
]);
flash($message)->error()->important();
}
}
}

View File

@ -2,43 +2,19 @@
namespace App\Imports\Purchases\Sheets; namespace App\Imports\Purchases\Sheets;
use App\Abstracts\Import;
use App\Models\Purchase\BillItem as Model; use App\Models\Purchase\BillItem as Model;
use App\Http\Requests\Purchase\BillItem as Request; use App\Http\Requests\Purchase\BillItem as Request;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Concerns\WithValidation;
use Maatwebsite\Excel\Validators\Failure;
class BillItems implements ToModel, WithHeadingRow, WithMapping, WithValidation class BillItems extends Import
{ {
public function model(array $row) public function model(array $row)
{ {
return new Model($row); return new Model($row);
} }
public function map($row): array
{
$row['company_id'] = session('company_id');
return $row;
}
public function rules(): array public function rules(): array
{ {
return (new Request())->rules(); return (new Request())->rules();
} }
}
public function onFailure(Failure ...$failures)
{
foreach ($failures as $failure) {
$message = trans('messages.error.import_column', [
'message' => $failure->errors()->first(),
'sheet' => 'bill_items',
'line' => $failure->attribute(),
]);
flash($message)->error()->important();
}
}
}

View File

@ -2,43 +2,19 @@
namespace App\Imports\Purchases\Sheets; namespace App\Imports\Purchases\Sheets;
use App\Abstracts\Import;
use App\Models\Purchase\BillTotal as Model; use App\Models\Purchase\BillTotal as Model;
use App\Http\Requests\Purchase\BillTotal as Request; use App\Http\Requests\Purchase\BillTotal as Request;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Concerns\WithValidation;
use Maatwebsite\Excel\Validators\Failure;
class BillTotals implements ToModel, WithHeadingRow, WithMapping, WithValidation class BillTotals extends Import
{ {
public function model(array $row) public function model(array $row)
{ {
return new Model($row); return new Model($row);
} }
public function map($row): array
{
$row['company_id'] = session('company_id');
return $row;
}
public function rules(): array public function rules(): array
{ {
return (new Request())->rules(); return (new Request())->rules();
} }
}
public function onFailure(Failure ...$failures)
{
foreach ($failures as $failure) {
$message = trans('messages.error.import_column', [
'message' => $failure->errors()->first(),
'sheet' => 'bill_totals',
'line' => $failure->attribute(),
]);
flash($message)->error()->important();
}
}
}

View File

@ -0,0 +1,33 @@
<?php
namespace App\Imports\Purchases\Sheets;
use App\Abstracts\Import;
use App\Models\Banking\Transaction as Model;
use App\Http\Requests\Banking\Transaction as Request;
class BillTransactions extends Import
{
public function model(array $row)
{
return new Model($row);
}
public function map($row): array
{
$row['company_id'] = session('company_id');
$row['type'] = 'expense';
// Make reconciled field integer
if (isset($row['reconciled'])) {
$row['reconciled'] = (int) $row['reconciled'];
}
return $row;
}
public function rules(): array
{
return (new Request())->rules();
}
}

View File

@ -2,43 +2,19 @@
namespace App\Imports\Purchases\Sheets; namespace App\Imports\Purchases\Sheets;
use App\Abstracts\Import;
use App\Models\Purchase\Bill as Model; use App\Models\Purchase\Bill as Model;
use App\Http\Requests\Purchase\Bill as Request; use App\Http\Requests\Purchase\Bill as Request;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Concerns\WithValidation;
use Maatwebsite\Excel\Validators\Failure;
class Bills implements ToModel, WithHeadingRow, WithMapping, WithValidation class Bills extends Import
{ {
public function model(array $row) public function model(array $row)
{ {
return new Model($row); return new Model($row);
} }
public function map($row): array
{
$row['company_id'] = session('company_id');
return $row;
}
public function rules(): array public function rules(): array
{ {
return (new Request())->rules(); return (new Request())->rules();
} }
}
public function onFailure(Failure ...$failures)
{
foreach ($failures as $failure) {
$message = trans('messages.error.import_column', [
'message' => $failure->errors()->first(),
'sheet' => 'bills',
'line' => $failure->attribute(),
]);
flash($message)->error()->important();
}
}
}

View File

@ -2,15 +2,11 @@
namespace App\Imports\Purchases; namespace App\Imports\Purchases;
use App\Abstracts\Import;
use App\Models\Common\Contact as Model; use App\Models\Common\Contact as Model;
use App\Http\Requests\Common\Contact as Request; use App\Http\Requests\Common\Contact as Request;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Concerns\WithValidation;
use Maatwebsite\Excel\Validators\Failure;
class Vendors implements ToModel, WithHeadingRow, WithMapping, WithValidation class Vendors extends Import
{ {
public function model(array $row) public function model(array $row)
{ {
@ -34,17 +30,4 @@ class Vendors implements ToModel, WithHeadingRow, WithMapping, WithValidation
{ {
return (new Request())->rules(); return (new Request())->rules();
} }
}
public function onFailure(Failure ...$failures)
{
foreach ($failures as $failure) {
$message = trans('messages.error.import_column', [
'message' => $failure->errors()->first(),
'sheet' => 'vendors',
'line' => $failure->attribute(),
]);
flash($message)->error()->important();
}
}
}

View File

@ -2,15 +2,11 @@
namespace App\Imports\Sales; namespace App\Imports\Sales;
use App\Abstracts\Import;
use App\Models\Common\Contact as Model; use App\Models\Common\Contact as Model;
use App\Http\Requests\Common\Contact as Request; use App\Http\Requests\Common\Contact as Request;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Concerns\WithValidation;
use Maatwebsite\Excel\Validators\Failure;
class Customers implements ToModel, WithHeadingRow, WithMapping, WithValidation class Customers extends Import
{ {
public function model(array $row) public function model(array $row)
{ {
@ -34,17 +30,4 @@ class Customers implements ToModel, WithHeadingRow, WithMapping, WithValidation
{ {
return (new Request())->rules(); return (new Request())->rules();
} }
}
public function onFailure(Failure ...$failures)
{
foreach ($failures as $failure) {
$message = trans('messages.error.import_column', [
'message' => $failure->errors()->first(),
'sheet' => 'customers',
'line' => $failure->attribute(),
]);
flash($message)->error()->important();
}
}
}

View File

@ -6,8 +6,8 @@ use App\Imports\Sales\Sheets\Invoices as Base;
use App\Imports\Sales\Sheets\InvoiceItems; use App\Imports\Sales\Sheets\InvoiceItems;
use App\Imports\Sales\Sheets\InvoiceItemTaxes; use App\Imports\Sales\Sheets\InvoiceItemTaxes;
use App\Imports\Sales\Sheets\InvoiceHistories; use App\Imports\Sales\Sheets\InvoiceHistories;
use App\Imports\Sales\Sheets\InvoicePayments;
use App\Imports\Sales\Sheets\InvoiceTotals; use App\Imports\Sales\Sheets\InvoiceTotals;
use App\Imports\Sales\Sheets\InvoiceTranactions;
use Maatwebsite\Excel\Concerns\WithMultipleSheets; use Maatwebsite\Excel\Concerns\WithMultipleSheets;
class Invoices implements WithMultipleSheets class Invoices implements WithMultipleSheets
@ -19,8 +19,8 @@ class Invoices implements WithMultipleSheets
'invoice_items' => new InvoiceItems(), 'invoice_items' => new InvoiceItems(),
'invoice_item_taxes' => new InvoiceItemTaxes(), 'invoice_item_taxes' => new InvoiceItemTaxes(),
'invoice_histories' => new InvoiceHistories(), 'invoice_histories' => new InvoiceHistories(),
'invoice_payments' => new InvoicePayments(),
'invoice_totals' => new InvoiceTotals(), 'invoice_totals' => new InvoiceTotals(),
'invoice_transactions' => new InvoiceTranactions(),
]; ];
} }
} }

View File

@ -2,15 +2,12 @@
namespace App\Imports\Income; namespace App\Imports\Income;
use App\Abstracts\Import;
use App\Models\Banking\Transaction as Model; use App\Models\Banking\Transaction as Model;
use App\Http\Requests\Banking\Transaction as Request; use App\Http\Requests\Banking\Transaction as Request;
use Maatwebsite\Excel\Concerns\ToModel; use Jenssegers\Date\Date;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Concerns\WithValidation;
use Maatwebsite\Excel\Validators\Failure;
class Revenues implements ToModel, WithHeadingRow, WithMapping, WithValidation class Revenues extends Import
{ {
public function model(array $row) public function model(array $row)
{ {
@ -21,6 +18,7 @@ class Revenues implements ToModel, WithHeadingRow, WithMapping, WithValidation
{ {
$row['company_id'] = session('company_id'); $row['company_id'] = session('company_id');
$row['type'] = 'income'; $row['type'] = 'income';
$row['paid_at'] = Date::parse($row['paid_at'])->format('Y-m-d H:i:s');
// Make reconciled field integer // Make reconciled field integer
if (isset($row['reconciled'])) { if (isset($row['reconciled'])) {
@ -34,17 +32,4 @@ class Revenues implements ToModel, WithHeadingRow, WithMapping, WithValidation
{ {
return (new Request())->rules(); return (new Request())->rules();
} }
}
public function onFailure(Failure ...$failures)
{
foreach ($failures as $failure) {
$message = trans('messages.error.import_column', [
'message' => $failure->errors()->first(),
'sheet' => 'revenues',
'line' => $failure->attribute(),
]);
flash($message)->error()->important();
}
}
}

View File

@ -2,43 +2,19 @@
namespace App\Imports\Sales\Sheets; namespace App\Imports\Sales\Sheets;
use App\Abstracts\Import;
use App\Models\Sale\InvoiceHistory as Model; use App\Models\Sale\InvoiceHistory as Model;
use App\Http\Requests\Sale\InvoiceHistory as Request; use App\Http\Requests\Sale\InvoiceHistory as Request;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Concerns\WithValidation;
use Maatwebsite\Excel\Validators\Failure;
class InvoiceHistories implements ToModel, WithHeadingRow, WithMapping, WithValidation class InvoiceHistories extends Import
{ {
public function model(array $row) public function model(array $row)
{ {
return new Model($row); return new Model($row);
} }
public function map($row): array
{
$row['company_id'] = session('company_id');
return $row;
}
public function rules(): array public function rules(): array
{ {
return (new Request())->rules(); return (new Request())->rules();
} }
}
public function onFailure(Failure ...$failures)
{
foreach ($failures as $failure) {
$message = trans('messages.error.import_column', [
'message' => $failure->errors()->first(),
'sheet' => 'invoice_histories',
'line' => $failure->attribute(),
]);
flash($message)->error()->important();
}
}
}

View File

@ -2,36 +2,13 @@
namespace App\Imports\Sales\Sheets; namespace App\Imports\Sales\Sheets;
use App\Abstracts\Import;
use App\Models\Sale\InvoiceItemTax as Model; use App\Models\Sale\InvoiceItemTax as Model;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Validators\Failure;
class InvoiceItemTaxes implements ToModel, WithHeadingRow, WithMapping class InvoiceItemTaxes extends Import
{ {
public function model(array $row) public function model(array $row)
{ {
return new Model($row); return new Model($row);
} }
}
public function map($row): array
{
$row['company_id'] = session('company_id');
return $row;
}
public function onFailure(Failure ...$failures)
{
foreach ($failures as $failure) {
$message = trans('messages.error.import_column', [
'message' => $failure->errors()->first(),
'sheet' => 'invoice_item_taxes',
'line' => $failure->attribute(),
]);
flash($message)->error()->important();
}
}
}

View File

@ -2,43 +2,19 @@
namespace App\Imports\Sales\Sheets; namespace App\Imports\Sales\Sheets;
use App\Abstracts\Import;
use App\Models\Sale\InvoiceItem as Model; use App\Models\Sale\InvoiceItem as Model;
use App\Http\Requests\Sale\InvoiceItem as Request; use App\Http\Requests\Sale\InvoiceItem as Request;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Concerns\WithValidation;
use Maatwebsite\Excel\Validators\Failure;
class InvoiceItems implements ToModel, WithHeadingRow, WithMapping, WithValidation class InvoiceItems extends Import
{ {
public function model(array $row) public function model(array $row)
{ {
return new Model($row); return new Model($row);
} }
public function map($row): array
{
$row['company_id'] = session('company_id');
return $row;
}
public function rules(): array public function rules(): array
{ {
return (new Request())->rules(); return (new Request())->rules();
} }
}
public function onFailure(Failure ...$failures)
{
foreach ($failures as $failure) {
$message = trans('messages.error.import_column', [
'message' => $failure->errors()->first(),
'sheet' => 'invoice_items',
'line' => $failure->attribute(),
]);
flash($message)->error()->important();
}
}
}

View File

@ -1,50 +0,0 @@
<?php
namespace App\Imports\Sales\Sheets;
use App\Models\Banking\Transaction as Model;
use App\Http\Requests\Banking\Transaction as Request;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Concerns\WithValidation;
use Maatwebsite\Excel\Validators\Failure;
class InvoicePayments implements ToModel, WithHeadingRow, WithMapping, WithValidation
{
public function model(array $row)
{
return new Model($row);
}
public function map($row): array
{
$row['company_id'] = session('company_id');
$row['type'] = 'income';
// Make reconciled field integer
if (isset($row['reconciled'])) {
$row['reconciled'] = (int) $row['reconciled'];
}
return $row;
}
public function rules(): array
{
return (new Request())->rules();
}
public function onFailure(Failure ...$failures)
{
foreach ($failures as $failure) {
$message = trans('messages.error.import_column', [
'message' => $failure->errors()->first(),
'sheet' => 'invoice_payments',
'line' => $failure->attribute(),
]);
flash($message)->error()->important();
}
}
}

View File

@ -2,43 +2,19 @@
namespace App\Imports\Sales\Sheets; namespace App\Imports\Sales\Sheets;
use App\Abstracts\Import;
use App\Models\Sale\InvoiceTotal as Model; use App\Models\Sale\InvoiceTotal as Model;
use App\Http\Requests\Sale\InvoiceTotal as Request; use App\Http\Requests\Sale\InvoiceTotal as Request;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Concerns\WithValidation;
use Maatwebsite\Excel\Validators\Failure;
class InvoiceTotals implements ToModel, WithHeadingRow, WithMapping, WithValidation class InvoiceTotals extends Import
{ {
public function model(array $row) public function model(array $row)
{ {
return new Model($row); return new Model($row);
} }
public function map($row): array
{
$row['company_id'] = session('company_id');
return $row;
}
public function rules(): array public function rules(): array
{ {
return (new Request())->rules(); return (new Request())->rules();
} }
}
public function onFailure(Failure ...$failures)
{
foreach ($failures as $failure) {
$message = trans('messages.error.import_column', [
'message' => $failure->errors()->first(),
'sheet' => 'invoice_totals',
'line' => $failure->attribute(),
]);
flash($message)->error()->important();
}
}
}

View File

@ -0,0 +1,33 @@
<?php
namespace App\Imports\Sales\Sheets;
use App\Abstracts\Import;
use App\Models\Banking\Transaction as Model;
use App\Http\Requests\Banking\Transaction as Request;
class InvoiceTranactions extends Import
{
public function model(array $row)
{
return new Model($row);
}
public function map($row): array
{
$row['company_id'] = session('company_id');
$row['type'] = 'income';
// Make reconciled field integer
if (isset($row['reconciled'])) {
$row['reconciled'] = (int) $row['reconciled'];
}
return $row;
}
public function rules(): array
{
return (new Request())->rules();
}
}

View File

@ -2,43 +2,19 @@
namespace App\Imports\Sales\Sheets; namespace App\Imports\Sales\Sheets;
use App\Abstracts\Import;
use App\Models\Sale\Invoice as Model; use App\Models\Sale\Invoice as Model;
use App\Http\Requests\Sale\Invoice as Request; use App\Http\Requests\Sale\Invoice as Request;
use Maatwebsite\Excel\Concerns\ToModel;
use Maatwebsite\Excel\Concerns\WithHeadingRow;
use Maatwebsite\Excel\Concerns\WithMapping;
use Maatwebsite\Excel\Concerns\WithValidation;
use Maatwebsite\Excel\Validators\Failure;
class Invoices implements ToModel, WithHeadingRow, WithMapping, WithValidation class Invoices extends Import
{ {
public function model(array $row) public function model(array $row)
{ {
return new Model($row); return new Model($row);
} }
public function map($row): array
{
$row['company_id'] = session('company_id');
return $row;
}
public function rules(): array public function rules(): array
{ {
return (new Request())->rules(); return (new Request())->rules();
} }
}
public function onFailure(Failure ...$failures)
{
foreach ($failures as $failure) {
$message = trans('messages.error.import_column', [
'message' => $failure->errors()->first(),
'sheet' => 'invoices',
'line' => $failure->attribute(),
]);
flash($message)->error()->important();
}
}
}