support for items

This commit is contained in:
2024-11-10 14:18:24 +05:00
parent b8b2ebbe46
commit c1af5e1b39
8 changed files with 79 additions and 32 deletions

View File

@@ -0,0 +1,53 @@
<?php
namespace App\Http\Controllers;
use App\Modules\Invoice\Actions\GenerateInvoiceExcell;
use App\Modules\Invoice\Data\InvoiceExcellData;
use App\Modules\Invoice\Data\InvoiceItem;
use Carbon\Carbon;
class HomeController extends Controller
{
public function index(): string
{
GenerateInvoiceExcell::make()
->setTemplateFile(app_path('Modules/Invoice/Resources/Docs/invoice.xls'))
->setData(new InvoiceExcellData(
number: random_int(1, 99),
date: new Carbon('2024-11-08'),
seller_firm_type: 'Telekeçi',
seller_firm_name: 'Nurmuhammet Allanov Parahatowiç',
seller_ssb: '201126532321',
seller_bank_name: 'Türkmenistanyň „Halkbank“ paýdarlar täjirçilik banky',
seller_bank_hb_1: '23206934160169902250000',
seller_bank_hb_2: '21101934110100700005000',
seller_bank_city: 'Aşgabat',
seller_bank_bab: '390101601',
buyer: 'Türkmenistanyň „Türkmenbaşy“ paýdarlar täjirçilik banky',
buyer_address: '744000 Aşgabat ş., Çandebil şaýoly köç., 121,',
buyer_bank: 'Türkmenistanyň Merkezi Banky',
buyer_bank_address: 'Aşgabat ş.',
buyer_bank_data: sprintf('şahsy salgyt belgisi %s, MFO %s, Hasap № %s', '101301000408', '390101304', '21101934110100300007000'),
items: [
new InvoiceItem(
name: 'Programma üpjünçiligini işläp taýýarlamak barada',
unit: 'ay',
quantity: 1,
unit_price: 25000,
vat: null,
excludingVat: null,
vat_percentage: null,
vat_tmt: null,
total: 25000,
),
]
))
->handle()
->save();
return 'F';
}
}

Binary file not shown.

View File

@@ -255,6 +255,6 @@ class GenerateInvoiceExcell
*/
public function satynAlyjyBankyMaglumatlary(): string
{
return 'Satyn alyjynyň ' . $this->data->buyer_bank_data;
return 'Satyn alyjynyň '.$this->data->buyer_bank_data;
}
}

View File

@@ -24,5 +24,8 @@ class InvoiceExcellData
public string $buyer_bank,
public string $buyer_bank_address,
public string $buyer_bank_data,
/** @var array<int, InvoiceItem> */
public array $items,
) {}
}

View File

@@ -0,0 +1,20 @@
<?php
namespace App\Modules\Invoice\Data;
class InvoiceItem
{
public function __construct(
public string $name,
public int|string $unit,
public int $quantity,
public int|float $unit_price,
public null|int|float $vat,
public null|int|float $excludingVat,
public null|int|float $vat_percentage,
public null|int|float $vat_tmt,
public int|float|string $total,
) {
// ...
}
}

Binary file not shown.

View File

@@ -1,35 +1,6 @@
<?php
use App\Modules\Invoice\Actions\GenerateInvoiceExcell;
use App\Modules\Invoice\Data\InvoiceExcellData;
use Carbon\Carbon;
use App\Http\Controllers\HomeController;
use Illuminate\Support\Facades\Route;
// Route::redirect('/', '/panel');
Route::get('/', function () {
GenerateInvoiceExcell::make()
->setTemplateFile(app_path('Modules/Invoice/Resources/Docs/invoice.xls'))
->setData(new InvoiceExcellData(
number: random_int(1, 99),
date: new Carbon('2024-11-08'),
seller_firm_type: 'Telekeçi',
seller_firm_name: 'Nurmuhammet Allanov Parahatowiç',
seller_ssb: '201126532321',
seller_bank_name: 'Türkmenistanyň „Halkbank“ paýdarlar täjirçilik banky',
seller_bank_hb_1: '23206934160169902250000',
seller_bank_hb_2: '21101934110100700005000',
seller_bank_city: 'Aşgabat',
seller_bank_bab: '390101601',
buyer: 'Türkmenistanyň „Türkmenbaşy“ paýdarlar täjirçilik banky',
buyer_address: '744000 Aşgabat ş., Çandebil şaýoly köç., 121,',
buyer_bank: 'Türkmenistanyň Merkezi Banky',
buyer_bank_address: 'Aşgabat ş.',
buyer_bank_data: sprintf('şahsy salgyt belgisi %s, MFO %s, Hasap № %s', '101301000408', '390101304', '21101934110100300007000')
))
->handle()
->save();
return 'F';
});
Route::get('/', [HomeController::class, 'index']);