Merge Invoice and Bill into Document
This commit is contained in:
		@@ -1,26 +0,0 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace App\Imports\Sales;
 | 
			
		||||
 | 
			
		||||
use App\Imports\Sales\Sheets\Invoices as Base;
 | 
			
		||||
use App\Imports\Sales\Sheets\InvoiceItems;
 | 
			
		||||
use App\Imports\Sales\Sheets\InvoiceItemTaxes;
 | 
			
		||||
use App\Imports\Sales\Sheets\InvoiceHistories;
 | 
			
		||||
use App\Imports\Sales\Sheets\InvoiceTotals;
 | 
			
		||||
use App\Imports\Sales\Sheets\InvoiceTransactions;
 | 
			
		||||
use Maatwebsite\Excel\Concerns\WithMultipleSheets;
 | 
			
		||||
 | 
			
		||||
class Invoices implements WithMultipleSheets
 | 
			
		||||
{
 | 
			
		||||
    public function sheets(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [
 | 
			
		||||
            'invoices' => new Base(),
 | 
			
		||||
            'invoice_items' => new InvoiceItems(),
 | 
			
		||||
            'invoice_item_taxes' => new InvoiceItemTaxes(),
 | 
			
		||||
            'invoice_histories' => new InvoiceHistories(),
 | 
			
		||||
            'invoice_totals' => new InvoiceTotals(),
 | 
			
		||||
            'invoice_transactions' => new InvoiceTransactions(),
 | 
			
		||||
        ];
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,46 +0,0 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace App\Imports\Sales\Sheets;
 | 
			
		||||
 | 
			
		||||
use App\Abstracts\Import;
 | 
			
		||||
use App\Http\Requests\Sale\InvoiceHistory as Request;
 | 
			
		||||
use App\Models\Sale\Invoice;
 | 
			
		||||
use App\Models\Sale\InvoiceHistory as Model;
 | 
			
		||||
 | 
			
		||||
class InvoiceHistories extends Import
 | 
			
		||||
{
 | 
			
		||||
    public function model(array $row)
 | 
			
		||||
    {
 | 
			
		||||
        // @todo remove after laravel-excel 3.2 release
 | 
			
		||||
        if ($row['invoice_number'] == $this->empty_field) {
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return new Model($row);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function map($row): array
 | 
			
		||||
    {
 | 
			
		||||
        if ($this->isEmpty($row, 'invoice_number')) {
 | 
			
		||||
            return [];
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $row = parent::map($row);
 | 
			
		||||
 | 
			
		||||
        $row['invoice_id'] = (int) Invoice::number($row['invoice_number'])->pluck('id')->first();
 | 
			
		||||
 | 
			
		||||
        $row['notify'] = (int) $row['notify'];
 | 
			
		||||
 | 
			
		||||
        return $row;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function rules(): array
 | 
			
		||||
    {
 | 
			
		||||
        $rules = (new Request())->rules();
 | 
			
		||||
 | 
			
		||||
        $rules['invoice_number'] = 'required|string';
 | 
			
		||||
        unset($rules['invoice_id']);
 | 
			
		||||
 | 
			
		||||
        return $rules;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,59 +0,0 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace App\Imports\Sales\Sheets;
 | 
			
		||||
 | 
			
		||||
use App\Abstracts\Import;
 | 
			
		||||
use App\Http\Requests\Sale\InvoiceItemTax as Request;
 | 
			
		||||
use App\Models\Common\Item;
 | 
			
		||||
use App\Models\Sale\Invoice;
 | 
			
		||||
use App\Models\Sale\InvoiceItem;
 | 
			
		||||
use App\Models\Sale\InvoiceItemTax as Model;
 | 
			
		||||
 | 
			
		||||
class InvoiceItemTaxes extends Import
 | 
			
		||||
{
 | 
			
		||||
    public function model(array $row)
 | 
			
		||||
    {
 | 
			
		||||
        // @todo remove after laravel-excel 3.2 release
 | 
			
		||||
        if ($row['invoice_number'] == $this->empty_field) {
 | 
			
		||||
            return null;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return new Model($row);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function map($row): array
 | 
			
		||||
    {
 | 
			
		||||
        if ($this->isEmpty($row, 'invoice_number')) {
 | 
			
		||||
            return [];
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $row = parent::map($row);
 | 
			
		||||
 | 
			
		||||
        $row['invoice_id'] = (int) Invoice::number($row['invoice_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'] = InvoiceItem::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['invoice_number'] = 'required|string';
 | 
			
		||||
        unset($rules['invoice_id']);
 | 
			
		||||
 | 
			
		||||
        return $rules;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,48 +0,0 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace App\Imports\Sales\Sheets;
 | 
			
		||||
 | 
			
		||||
use App\Abstracts\Import;
 | 
			
		||||
use App\Http\Requests\Sale\InvoiceItem as Request;
 | 
			
		||||
use App\Models\Sale\Invoice;
 | 
			
		||||
use App\Models\Sale\InvoiceItem as Model;
 | 
			
		||||
 | 
			
		||||
class InvoiceItems extends Import
 | 
			
		||||
{
 | 
			
		||||
    public function model(array $row)
 | 
			
		||||
    {
 | 
			
		||||
        return new Model($row);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function map($row): array
 | 
			
		||||
    {
 | 
			
		||||
        if ($this->isEmpty($row, 'invoice_number')) {
 | 
			
		||||
            return [];
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $row = parent::map($row);
 | 
			
		||||
 | 
			
		||||
        $row['invoice_id'] = (int) Invoice::number($row['invoice_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
 | 
			
		||||
    {
 | 
			
		||||
        $rules = (new Request())->rules();
 | 
			
		||||
 | 
			
		||||
        $rules['invoice_number'] = 'required|string';
 | 
			
		||||
        unset($rules['invoice_id']);
 | 
			
		||||
 | 
			
		||||
        return $rules;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,39 +0,0 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace App\Imports\Sales\Sheets;
 | 
			
		||||
 | 
			
		||||
use App\Abstracts\Import;
 | 
			
		||||
use App\Http\Requests\Sale\InvoiceTotal as Request;
 | 
			
		||||
use App\Models\Sale\Invoice;
 | 
			
		||||
use App\Models\Sale\InvoiceTotal as Model;
 | 
			
		||||
 | 
			
		||||
class InvoiceTotals extends Import
 | 
			
		||||
{
 | 
			
		||||
    public function model(array $row)
 | 
			
		||||
    {
 | 
			
		||||
        return new Model($row);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function map($row): array
 | 
			
		||||
    {
 | 
			
		||||
        if ($this->isEmpty($row, 'invoice_number')) {
 | 
			
		||||
            return [];
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $row = parent::map($row);
 | 
			
		||||
 | 
			
		||||
        $row['invoice_id'] = (int) Invoice::number($row['invoice_number'])->pluck('id')->first();
 | 
			
		||||
 | 
			
		||||
        return $row;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function rules(): array
 | 
			
		||||
    {
 | 
			
		||||
        $rules = (new Request())->rules();
 | 
			
		||||
 | 
			
		||||
        $rules['invoice_number'] = 'required|string';
 | 
			
		||||
        unset($rules['invoice_id']);
 | 
			
		||||
 | 
			
		||||
        return $rules;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,41 +0,0 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace App\Imports\Sales\Sheets;
 | 
			
		||||
 | 
			
		||||
use App\Abstracts\Import;
 | 
			
		||||
use App\Http\Requests\Banking\Transaction as Request;
 | 
			
		||||
use App\Models\Banking\Transaction as Model;
 | 
			
		||||
 | 
			
		||||
class InvoiceTransactions extends Import
 | 
			
		||||
{
 | 
			
		||||
    public function model(array $row)
 | 
			
		||||
    {
 | 
			
		||||
        return new Model($row);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function map($row): array
 | 
			
		||||
    {
 | 
			
		||||
        if ($this->isEmpty($row, 'invoice_number')) {
 | 
			
		||||
            return [];
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $row = parent::map($row);
 | 
			
		||||
 | 
			
		||||
        $row['type'] = 'income';
 | 
			
		||||
        $row['account_id'] = $this->getAccountId($row);
 | 
			
		||||
        $row['category_id'] = $this->getCategoryId($row, 'income');
 | 
			
		||||
        $row['contact_id'] = $this->getContactId($row, 'customer');
 | 
			
		||||
        $row['document_id'] = $this->getDocumentId($row);
 | 
			
		||||
 | 
			
		||||
        return $row;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function rules(): array
 | 
			
		||||
    {
 | 
			
		||||
        $rules = (new Request())->rules();
 | 
			
		||||
 | 
			
		||||
        $rules['invoice_number'] = 'required|string';
 | 
			
		||||
 | 
			
		||||
        return $rules;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@@ -1,34 +0,0 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace App\Imports\Sales\Sheets;
 | 
			
		||||
 | 
			
		||||
use App\Abstracts\Import;
 | 
			
		||||
use App\Http\Requests\Sale\Invoice as Request;
 | 
			
		||||
use App\Models\Sale\Invoice as Model;
 | 
			
		||||
 | 
			
		||||
class Invoices extends Import
 | 
			
		||||
{
 | 
			
		||||
    public function model(array $row)
 | 
			
		||||
    {
 | 
			
		||||
        return new Model($row);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function map($row): array
 | 
			
		||||
    {
 | 
			
		||||
        if ($this->isEmpty($row, 'invoice_number')) {
 | 
			
		||||
            return [];
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $row = parent::map($row);
 | 
			
		||||
 | 
			
		||||
        $row['category_id'] = $this->getCategoryId($row, 'income');
 | 
			
		||||
        $row['contact_id'] = $this->getContactId($row, 'customer');
 | 
			
		||||
 | 
			
		||||
        return $row;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function rules(): array
 | 
			
		||||
    {
 | 
			
		||||
        return (new Request())->rules();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user