invoice exporter to a seperete class
This commit is contained in:
205
app/Modules/Invoice/Actions/GenerateInvoiceExcell.php
Normal file
205
app/Modules/Invoice/Actions/GenerateInvoiceExcell.php
Normal file
@@ -0,0 +1,205 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Modules\Invoice\Actions;
|
||||||
|
|
||||||
|
use App\Modules\Invoice\Data\InvoiceExcellData;
|
||||||
|
use App\Modules\Makeable;
|
||||||
|
use Illuminate\Support\Carbon;
|
||||||
|
use PhpOffice\PhpSpreadsheet\IOFactory;
|
||||||
|
use PhpOffice\PhpSpreadsheet\RichText\RichText;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
||||||
|
use PhpOffice\PhpSpreadsheet\Worksheet\Worksheet;
|
||||||
|
|
||||||
|
class GenerateInvoiceExcell
|
||||||
|
{
|
||||||
|
use Makeable;
|
||||||
|
|
||||||
|
/** Template file */
|
||||||
|
protected string $templateFile;
|
||||||
|
|
||||||
|
/** Excell Spreadsheet */
|
||||||
|
protected Spreadsheet $spreadsheet;
|
||||||
|
|
||||||
|
/** Active worksheet */
|
||||||
|
protected Worksheet $worksheet;
|
||||||
|
|
||||||
|
/** Invoice data */
|
||||||
|
protected InvoiceExcellData $data;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Let's generate an invoice excell file...
|
||||||
|
*/
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
// For turkmen date format...
|
||||||
|
Carbon::setLocale('tk');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Run conversion process
|
||||||
|
*/
|
||||||
|
public function handle(): self
|
||||||
|
{
|
||||||
|
$this->setSpreadsheetFile();
|
||||||
|
$this->setWorksheetFile();
|
||||||
|
$this->fillTheCells();
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Save the invoice
|
||||||
|
*/
|
||||||
|
public function save(): void
|
||||||
|
{
|
||||||
|
$writer = IOFactory::createWriter($this->spreadsheet, 'Xls');
|
||||||
|
|
||||||
|
$writer->save('write.xls');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set template file path
|
||||||
|
*/
|
||||||
|
public function setTemplateFile(string $file): self
|
||||||
|
{
|
||||||
|
$this->templateFile = $file;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set data
|
||||||
|
*/
|
||||||
|
public function setData(InvoiceExcellData $data): self
|
||||||
|
{
|
||||||
|
$this->data = $data;
|
||||||
|
|
||||||
|
return $this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load template to a new spreadsheet
|
||||||
|
*/
|
||||||
|
protected function setSpreadsheetFile(): void
|
||||||
|
{
|
||||||
|
$this->spreadsheet = IOFactory::load($this->templateFile);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set working spreadsheet
|
||||||
|
*/
|
||||||
|
protected function setWorksheetFile(): void
|
||||||
|
{
|
||||||
|
$this->worksheet = $this->spreadsheet->getActiveSheet();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fill the cells
|
||||||
|
*/
|
||||||
|
protected function fillTheCells(): void
|
||||||
|
{
|
||||||
|
// Hasap faktura nomeri...
|
||||||
|
$this->worksheet->getCell('C6')->setValue($this->hasapFakturaNomeri());
|
||||||
|
|
||||||
|
// Sene...
|
||||||
|
$this->worksheet->getCell('C7')->setValue($this->sene());
|
||||||
|
|
||||||
|
// Satyjy...
|
||||||
|
$this->worksheet->getCell('A9')->setValue($this->satyjy());
|
||||||
|
|
||||||
|
// Satyjy şahsy salgyt belgi...
|
||||||
|
$this->worksheet->getCell('A11')->setValue($this->satyjySalgytBelgi());
|
||||||
|
|
||||||
|
// Satyjy banky...
|
||||||
|
$this->worksheet->getCell('A12')->setValue($this->satyjyBanky());
|
||||||
|
|
||||||
|
// Satyjy bank maglumatlary...
|
||||||
|
$this->worksheet->getCell('A13')->setValue(sprintf('şäherde (etrapda) %s BAB %s bankyň kor.hasap %s', 'Aşgabat', '390101601', '21101934110100700005000'));
|
||||||
|
|
||||||
|
// Satyn alyjy...
|
||||||
|
$this->worksheet->getCell('A16')->setValue(sprintf('Satyn alyjy: %s', 'Türkmenistanyň „Türkmenbaşy“ paýdarlar täjirçilik banky'));
|
||||||
|
|
||||||
|
// Satyn alyjy salgy...
|
||||||
|
$this->worksheet->getCell('A18')->setValue(sprintf('744000 Aşgabat ş., Çandebil şaýoly köç., 121,'));
|
||||||
|
|
||||||
|
// Satyn alyjy banky...
|
||||||
|
$this->worksheet->getCell('A19')->setValue(sprintf('Alyjynyň bankynyň ady %s %s', 'Türkmenistanyň Merkezi Banky', 'Aşgabat ş.'));
|
||||||
|
|
||||||
|
// Satyn alyjy banky maglumatlary...
|
||||||
|
$this->worksheet->getCell('A20')->setValue(sprintf('Satyn alyjynyň şahsy salgyt belgisi %s, MFO %s, Hasap № %s', '101301000408', '390101304', '21101934110100300007000'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hasap faktura nomeri
|
||||||
|
*/
|
||||||
|
public function hasapFakturaNomeri(): string
|
||||||
|
{
|
||||||
|
return 'Hasap-faktura № '.$this->data->number;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sene
|
||||||
|
*/
|
||||||
|
public function sene(): string
|
||||||
|
{
|
||||||
|
$date = $this->data->date;
|
||||||
|
|
||||||
|
$year = $date->year;
|
||||||
|
$day = $date->format('d');
|
||||||
|
$month_as_string = $date->translatedFormat('F');
|
||||||
|
|
||||||
|
return sprintf('%s ýylyň «%s» %s', $year, $day, $month_as_string);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Satyjy
|
||||||
|
*/
|
||||||
|
public function satyjy(): string
|
||||||
|
{
|
||||||
|
return sprintf('Satyjy: %s %s', $this->data->seller_firm_type, $this->data->seller_firm_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Satyjy salgyt belgisi
|
||||||
|
*/
|
||||||
|
public function satyjySalgytBelgi(): RichText
|
||||||
|
{
|
||||||
|
$satyjy_salgyt_belgi = new RichText;
|
||||||
|
$satyjy_salgyt_belgi
|
||||||
|
->createTextRun('Satyjynyň şahsy salgyt belgisi: ')
|
||||||
|
->getFont()
|
||||||
|
->setName('Times New Roman')
|
||||||
|
->setSize(10);
|
||||||
|
|
||||||
|
$satyjy_salgyt_belgi
|
||||||
|
->createTextRun($this->data->seller_ssb)
|
||||||
|
->getFont()
|
||||||
|
->setBold(true)
|
||||||
|
->setName('Times New Roman')
|
||||||
|
->setSize(10);
|
||||||
|
|
||||||
|
return $satyjy_salgyt_belgi;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Satyjy bank maglumatlary
|
||||||
|
*/
|
||||||
|
public function satyjyBanky(): RichText
|
||||||
|
{
|
||||||
|
$satyjy_banky = new RichText;
|
||||||
|
$satyjy_banky
|
||||||
|
->createTextRun(sprintf('Satyjynyň bankynyň ady %s, hasap № ', $this->data->seller_bank_name))
|
||||||
|
->getFont()
|
||||||
|
->setName('Times New Roman')
|
||||||
|
->setSize(10);
|
||||||
|
|
||||||
|
$satyjy_banky
|
||||||
|
->createTextRun($this->data->seller_bank_number)
|
||||||
|
->getFont()
|
||||||
|
->setBold(true)
|
||||||
|
->setName('Times New Roman')
|
||||||
|
->setSize(10);
|
||||||
|
|
||||||
|
return $satyjy_banky;
|
||||||
|
}
|
||||||
|
}
|
||||||
18
app/Modules/Invoice/Data/InvoiceExcellData.php
Normal file
18
app/Modules/Invoice/Data/InvoiceExcellData.php
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Modules\Invoice\Data;
|
||||||
|
|
||||||
|
use Carbon\Carbon;
|
||||||
|
|
||||||
|
class InvoiceExcellData
|
||||||
|
{
|
||||||
|
public function __construct(
|
||||||
|
public int|string $number,
|
||||||
|
public Carbon $date,
|
||||||
|
public string $seller_firm_type,
|
||||||
|
public string $seller_firm_name,
|
||||||
|
public string $seller_ssb,
|
||||||
|
public string $seller_bank_name,
|
||||||
|
public string $seller_bank_number,
|
||||||
|
) {}
|
||||||
|
}
|
||||||
@@ -1,8 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
use Illuminate\Database\Migrations\Migration;
|
use Illuminate\Database\Migrations\Migration;
|
||||||
use Illuminate\Database\Schema\Blueprint;
|
|
||||||
use Illuminate\Support\Facades\Schema;
|
|
||||||
|
|
||||||
return new class extends Migration
|
return new class extends Migration
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2,10 +2,6 @@
|
|||||||
|
|
||||||
namespace App\Modules\Invoice\Models;
|
namespace App\Modules\Invoice\Models;
|
||||||
|
|
||||||
use Illuminate\Database\Eloquent\Concerns\HasUuids;
|
|
||||||
use Illuminate\Database\Eloquent\Model;
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
class Invoice extends Model
|
class Invoice extends Model {}
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -2,9 +2,4 @@
|
|||||||
|
|
||||||
namespace App\Modules\Invoice\Repositories;
|
namespace App\Modules\Invoice\Repositories;
|
||||||
|
|
||||||
use App\Modules\Invoice\Models\Invoice;
|
class InvoiceRepository {}
|
||||||
|
|
||||||
class InvoiceRepository
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|||||||
BIN
public/.DS_Store
vendored
Normal file
BIN
public/.DS_Store
vendored
Normal file
Binary file not shown.
BIN
public/write.xls
BIN
public/write.xls
Binary file not shown.
@@ -1,85 +1,26 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
use App\Modules\Invoice\Actions\GenerateInvoiceExcell;
|
||||||
|
use App\Modules\Invoice\Data\InvoiceExcellData;
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Illuminate\Support\Facades\Route;
|
use Illuminate\Support\Facades\Route;
|
||||||
use Illuminate\Support\Str;
|
|
||||||
use PhpOffice\PhpSpreadsheet\Cell\DataType;
|
|
||||||
use PhpOffice\PhpSpreadsheet\IOFactory;
|
|
||||||
use PhpOffice\PhpSpreadsheet\RichText\RichText;
|
|
||||||
|
|
||||||
// Route::redirect('/', '/panel');
|
// Route::redirect('/', '/panel');
|
||||||
|
|
||||||
Route::get('/', function () {
|
Route::get('/', function () {
|
||||||
$spreadsheet = IOFactory::load(app_path('Modules/Invoice/Resources/Docs/invoice.xls'));
|
GenerateInvoiceExcell::make()
|
||||||
|
->setTemplateFile(app_path('Modules/Invoice/Resources/Docs/invoice.xls'))
|
||||||
$worksheet = $spreadsheet->getActiveSheet();
|
->setData(new InvoiceExcellData(
|
||||||
|
number: random_int(1, 99),
|
||||||
Carbon::setLocale('tk');
|
date: new Carbon('2024-11-08'),
|
||||||
|
seller_firm_type: 'Telekeçi',
|
||||||
// Define vars...
|
seller_firm_name: 'Nurmuhammet Allanov Parahatowiç',
|
||||||
$number = random_int(1, 99);
|
seller_ssb: '201126532321',
|
||||||
$date = new Carbon('2024-11-08');
|
seller_bank_name: 'Türkmenistanyň „Halkbank“ paýdarlar täjirçilik banky',
|
||||||
$year = $date->year;
|
seller_bank_number: '23206934160169902250000'
|
||||||
$day = $date->format('d');
|
))
|
||||||
$month_as_string = $date->translatedFormat('F');
|
->handle()
|
||||||
$seller_firm_type = 'Telekeçi';
|
->save();
|
||||||
$seller_firm_name = 'Nurmuhammet Allanov Parahatowiç';
|
|
||||||
$seller_ssb = '201126532321';
|
|
||||||
$seller_bank_name = 'Türkmenistanyň „Halkbank“ paýdarlar täjirçilik banky';
|
|
||||||
$seller_bank_number = "23206934160169902250000";
|
|
||||||
|
|
||||||
// Cell vars...
|
|
||||||
$hasap_faktura = 'Hasap-faktura № ' . $number;
|
|
||||||
$sene = sprintf('%s ýylyň «%s» %s', $year, $day, $month_as_string);
|
|
||||||
$satyjy = sprintf('Satyjy: %s %s', $seller_firm_type, $seller_firm_name);
|
|
||||||
|
|
||||||
$satyjy_salgyt_belgi = new RichText();
|
|
||||||
$satyjy_salgyt_belgi
|
|
||||||
->createTextRun('Satyjynyň şahsy salgyt belgisi: ')
|
|
||||||
->getFont()
|
|
||||||
->setName('Times New Roman')
|
|
||||||
->setSize(10);
|
|
||||||
|
|
||||||
$satyjy_salgyt_belgi
|
|
||||||
->createTextRun($seller_ssb)
|
|
||||||
->getFont()
|
|
||||||
->setBold(true)
|
|
||||||
->setName('Times New Roman')
|
|
||||||
->setSize(10);
|
|
||||||
|
|
||||||
$satyjy_bank_maglumatlary = new RichText();
|
|
||||||
$satyjy_bank_maglumatlary
|
|
||||||
->createTextRun(sprintf('Satyjynyň bankynyň ady %s, hasap № ', $seller_bank_name))
|
|
||||||
->getFont()
|
|
||||||
->setName('Times New Roman')
|
|
||||||
->setSize(10);
|
|
||||||
|
|
||||||
$satyjy_bank_maglumatlary
|
|
||||||
->createTextRun($seller_bank_number)
|
|
||||||
->getFont()
|
|
||||||
->setBold(true)
|
|
||||||
->setName('Times New Roman')
|
|
||||||
->setSize(10);
|
|
||||||
|
|
||||||
// Set cell vars...
|
|
||||||
$worksheet->getCell('C6')->setValue($hasap_faktura);
|
|
||||||
$worksheet->getCell('C7')->setValue($sene);
|
|
||||||
$worksheet->getCell('A9')->setValue($satyjy);
|
|
||||||
$worksheet->getCell('A11')->setValue($satyjy_salgyt_belgi);
|
|
||||||
$worksheet->getCell('A12')->setValue($satyjy_bank_maglumatlary);
|
|
||||||
|
|
||||||
$worksheet->getCell('A13')->setValue(sprintf('şäherde (etrapda) %s BAB %s bankyň kor.hasap %s', 'Aşgabat', '390101601', '21101934110100700005000'));
|
|
||||||
|
|
||||||
$worksheet->getCell('A16')->setValue(sprintf('Satyn alyjy: %s', 'Türkmenistanyň „Türkmenbaşy“ paýdarlar täjirçilik banky'));
|
|
||||||
|
|
||||||
$worksheet->getCell('A18')->setValue(sprintf('744000 Aşgabat ş., Çandebil şaýoly köç., 121,'));
|
|
||||||
|
|
||||||
$worksheet->getCell('A19')->setValue(sprintf('Alyjynyň bankynyň ady %s %s', 'Türkmenistanyň Merkezi Banky', 'Aşgabat ş.'));
|
|
||||||
|
|
||||||
$worksheet->getCell('A20')->setValue(sprintf('Satyn alyjynyň şahsy salgyt belgisi %s, MFO %s, Hasap № %s', '101301000408', '390101304', '21101934110100300007000'));
|
|
||||||
|
|
||||||
$writer = IOFactory::createWriter($spreadsheet, 'Xls');
|
|
||||||
$writer->save('write.xls');
|
|
||||||
|
|
||||||
return 'F';
|
return 'F';
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user