128 lines
3.9 KiB
PHP
128 lines
3.9 KiB
PHP
<?php
|
|
|
|
namespace App\UI\Firma;
|
|
|
|
use App\UI\BasePresenter;
|
|
use Nette\Application\UI\Form;
|
|
use Nette\Database\Explorer;
|
|
|
|
class FirmaPresenter extends BasePresenter
|
|
{
|
|
/**
|
|
* Vstříkne se dynamický klientský Explorer
|
|
*/
|
|
public function __construct(
|
|
private Explorer $kufrikExplorer
|
|
) {
|
|
parent::__construct();
|
|
}
|
|
|
|
public function actionEdit(): void
|
|
{
|
|
$firmaId = $this->getUser()->getIdentity()->firma_id ?? null;
|
|
|
|
if (!$firmaId) {
|
|
$this->flashMessage('K účtu není přiřazena žádná aktivní firma.', 'danger');
|
|
$this->redirect('Home:');
|
|
}
|
|
|
|
$firma = $this->kufrikExplorer->table('FIRMA')->get($firmaId);
|
|
|
|
if (!$firma) {
|
|
$this->flashMessage('Firma nebyla v databázi nalezena.', 'danger');
|
|
$this->redirect('Home:');
|
|
}
|
|
|
|
// Predvyplnění formuláře
|
|
$this['firmaForm']->setDefaults([
|
|
'nazev' => $firma->NAZEV,
|
|
'ic' => $firma->IC,
|
|
'dic' => $firma->DIC,
|
|
'platce_dph' => (bool) $firma->PLATCE_DPH,
|
|
'telefon' => $firma->TELEFON,
|
|
'email' => $firma->EMAIL,
|
|
'ulice' => $firma->ULICE,
|
|
'mesto' => $firma->MESTO,
|
|
'psc' => $firma->PSC,
|
|
'cislo_uctu' => $firma->CISLO_UCTU,
|
|
'banka_kod' => $firma->BANKA_KOD,
|
|
'iban' => $firma->IBAN,
|
|
'bic' => $firma->BIC,
|
|
]);
|
|
}
|
|
|
|
protected function createComponentFirmaForm(): Form
|
|
{
|
|
$form = new Form();
|
|
|
|
// Základní údaje
|
|
$form->addText('nazev', 'Název firmy / OSVČ:')
|
|
->setRequired('Zadejte název firmy nebo Vaše jméno.');
|
|
|
|
$form->addText('ic', 'IČO:')
|
|
->setMaxLength(8);
|
|
|
|
$form->addText('dic', 'DIČ:')
|
|
->setMaxLength(12);
|
|
|
|
$form->addCheckbox('platce_dph', 'Jsem plátce DPH');
|
|
|
|
// Kontakty
|
|
$form->addText('telefon', 'Telefon:');
|
|
$form->addEmail('email', 'E-mail:');
|
|
|
|
// Sídlo
|
|
$form->addText('ulice', 'Ulice a ČP:');
|
|
$form->addText('mesto', 'Město:');
|
|
$form->addText('psc', 'PSČ:');
|
|
|
|
// Bankovní spojení
|
|
$form->addText('cislo_uctu', 'Číslo účtu:');
|
|
$form->addText('banka_kod', 'Kód banky:');
|
|
$form->addText('iban', 'IBAN:');
|
|
$form->addText('bic', 'BIC / SWIFT:');
|
|
|
|
$form->addSubmit('send', 'Uložit firmu');
|
|
|
|
$form->onSuccess[] = [$this, 'firmaFormSucceeded'];
|
|
|
|
return $form;
|
|
}
|
|
|
|
public function firmaFormSucceeded(Form $form, \stdClass $data): void
|
|
{
|
|
$firmaId = $this->getUser()->getIdentity()->firma_id;
|
|
|
|
try {
|
|
$this->kufrikExplorer->table('FIRMA')
|
|
->where('ID', $firmaId)
|
|
->update([
|
|
'NAZEV' => $data->nazev,
|
|
'IC' => $data->ic,
|
|
'DIC' => $data->dic,
|
|
'PLATCE_DPH' => $data->platce_dph ? 1 : 0,
|
|
'TELEFON' => $data->telefon,
|
|
'EMAIL' => $data->email,
|
|
'ULICE' => $data->ulice,
|
|
'MESTO' => $data->mesto,
|
|
'PSC' => $data->psc,
|
|
'CISLO_UCTU' => $data->cislo_uctu,
|
|
'BANKA_KOD' => $data->banka_kod,
|
|
'IBAN' => $data->iban,
|
|
'BIC' => $data->bic,
|
|
]);
|
|
|
|
// Potvrzení s časovým razítkem uložení
|
|
$casUlozeni = (new \DateTime())->format('H:i:s');
|
|
$this->flashMessage("Údaje firmy byly úspěšně uloženy v {$casUlozeni}.", 'success');
|
|
|
|
} catch (\Nette\Application\AbortException $e) {
|
|
throw $e;
|
|
} catch (\Throwable $e) {
|
|
$form->addError('Chyba při ukládání firmy: ' . $e->getMessage());
|
|
return;
|
|
}
|
|
|
|
$this->redirect('this');
|
|
}
|
|
} |