Formular

mail@pastecode.io avatar
unknown
php
2 years ago
14 kB
2
Indexable
Never
<?php

namespace Drupal\idsp_korona_cestne_vyhlasenie\Form;

use Drupal\Core\Form\FormBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\idsp_korona_cestne_spatvzatie\Entity\KoronaCestneSpatvzatie;
use Drupal\idsp_korona_cestne_vyhlasenie\Entity\KoronaCestneVyhlasenie;

class OdkladPoistnehoJanuar2022_Form extends FormBase {

  /**
   * {@inheritdoc}
   */
  public function getFormId() {
    return 'odklad_poistneho_januar_2022_form';
  }

  /**
   * {@inheritdoc}
   */
  public function buildForm(array $form, FormStateInterface $form_state) {

    $form['preukazanie'] = [
      '#type' =>  'markup',
      '#markup' => '<b><p class="govuk-body govuk-!-font-weight-bold">Preukázanie poklesu čistého obratu alebo poklesu príjmov z podnikania a z inej samostatnej zárobkovej činnosti o 40 % a viac,
 na účely predĺženia splatnosti poistného na sociálne poistenie za kalendárny mesiac január 2022 do
 31. marca 2025
 </p></b>'
    ];

    $form['zaklad'] = [
      '#type' =>  'markup',
      '#markup' => '<b><p class="govuk-body">
(na základe § 293ew zákona č. 461/2003 Z. z. o sociálnom poistení v znení zákona č. 68/2020 Z. z., nariadenia vlády Slovenskej republiky č. 131/2020 Z. z. v znení nariadenia vlády č. 172/2020 Z. z., nariadenia vlády č. 196/2020 Z. z., nariadenia vlády č. 380/2020 Z. z., nariadenia vlády č. 31/2021 Z. z., nariadenia vlády č. 89/2021 Z. z., nariadenia vlády č. 101/2021 Z. z., nariadenia vlády č. 154/2021 Z. z., nariadenia vlády č. 181/2021 Z. z. , nariadenia vlády č. 379/2021 Z. z., nariadenia vlády č. 435/2021 Z. z., nariadenia vlády č. 517/2021 Z. z. a nariadenia vlády č. 16/2022 Z. z. a na základe nariadenia vlády Slovenskej republiky č. 76/2020 Z. z. v znení nariadenia vlády č. 132/2020 Z. z. a nariadenia vlády č. 102/2021 Z. z.).
</p></b>'
    ];

    $form['instrukcie'] = [
      '#type' =>  'markup',
      '#markup' => '<b><p class="govuk-body">Čestné vyhlásenie je určené na vyplnenie a odoslanie elektronicky. Začnite výberom jednej z možností "Zamestnávateľ" alebo
"Samostatne zárobkovo činná osoba (SZČO)".</p></b>'
    ];

    $form['typ_odv'] = [
      '#type' => 'select',
      '#title'  =>  $this->t('Typ'),
      '#options'  =>  [
        'zamestnavatel' => 'Zamestnávateľ',
        'szco' => 'Samostatne zárobkovo činná osoba (SZČO)'
      ],
      '#default_value'  =>  'zamestnavatel',
      '#required' => TRUE,
      '#multiple' => FALSE,
    ];

    $form['nazov_fo'] = [
      '#type' => 'textfield',
      '#title' => 'Názov/meno a priezvisko v prípade FO',
      '#attributes' => ['name' => 'nazov_fo', 'id' => 'nazov_fo'],
      '#required' => TRUE,
    ];


    $form['statutar'] = [
      '#type' => 'textfield',
      '#title' => 'Meno a priezvisko štatutárneho zástupcu zamestnávateľa',
      '#attributes' => ['name' => 'statutar', 'id' => 'statutar']
    ];


    $form['var_symbol'] = [
      '#type' => 'textfield',
      '#title' => '* Variabilný symbol',
      '#attributes' => ['name' => 'var_symbol', 'id' => 'var_symbol'],
      '#required' => TRUE,
    ];

    $form['var_symbol_hint'] = [
      '#type' =>  'markup',
      '#markup' => '<b><p class="govuk-body">* VS je IČ pridelené <u>Sociálnou poisťovňou</u>! Ak bol zvolený typ "Zamestnávateľ", začína na 1 (pre zamestnávateľa PO) alebo 2 (pre zamestnávateľa FO)
alebo 9 (pre zahraničného zamestnávateľa). Ak bol vybratý typ "SZČO" začína na 3.</p></b>'
    ];

    $form['rodne_cislo'] = [
      '#type' => 'textfield',
      '#title' => 'Rodné číslo',
      '#attributes' => ['name' => 'rodne_cislo', 'id' => 'rodne_cislo'],
    ];

    $form['ico'] = [
      '#type' => 'textfield',
      '#title' => 'IČO',
      '#attributes' => ['name' => 'ico', 'id' => 'ico']
    ];

    // Create empty options array
    $options = array();

    // Taxonomy vocabulary machine name
    $taxonomy = 'pobocka';

    // Get all the taxonomy terms from the vocabulary
    $tax_items = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->loadTree($taxonomy);

    // Inject into the options array
    foreach($tax_items as $tax_item) {
      $options[$tax_item->tid] = $tax_item->name;
    }

    $form['pobocka'] = [
      '#type' => 'select',
      '#title'  =>  "Miestne príslušná pobočka",
      '#options'  =>  $options,
      '#required' => TRUE,
      '#multiple' => FALSE,
    ];

    $form['sidlo'] = [
      '#type' => 'textarea',
      '#title' => 'Sídlo zamestnávateľa/adresa trvalého pobytu v prípade FO',
      '#attributes' => ['name' => 'sidlo', 'id' => ''],
      '#required' => TRUE,
    ];


    $form['email'] = [
      '#type' => 'textfield',
      '#title' => 'E-mail',
      '#attributes' => ['name' => 'email', 'id' => ''],
      '#required' => TRUE
    ];

    $form['prehlasenie'] = [
      '#type' => 'markup',
      '#markup' => '<p class="govuk-body govuk-!-font-weight-bold">Zaslaním tohto formuláru čestne prehlasujem,
že v mesiaci <u>január 2022</u> som ako <span class="typ_odv_poist"></span>
 vykázal (a) pokles čistého obratu podľa § 2 ods. 15 zákona č. 431/2002 Z. z. v znení zákona č. 333/2014 Z. z.
 alebo príjmu z podnikania a z inej samostatnej zárobkovej činnosti podľa § 6 ods. 1 a 2 zákona č. 595/2003 Z. z.
 o dani z príjmov v znení neskorších predpisov (ďalej len „tržba“) o 40 % a viac.</p>'
    ];
    $form['oznamenie'] = [
      '#type' => 'markup',
      '#markup' => '<p class="govuk-body">Ako <span class="typ_odv_poist"></span> zároveň oznamujem,
že pokles tržieb som určil (a) spôsobom<sup>2</sup>, že som porovnal (a) výšku tržieb za mesiac január 2022</p>'
    ];

    $form['typ_trzieb'] = [
      '#type' => 'radios',
      '#title'  =>  'Typ tržieb',
      '#options'  =>  [
        'januar2019' => 's výškou tržieb za mesiac január 2019 <sup>1</sup>',
        'rok2019' => 's mesačným priemerom tržieb za rok 2019<sup>1</sup>',
        'februar2020' => 's výškou tržieb za mesiac február 2020<sup>1</sup>'
      ],
      '#required' => TRUE,
      '#multiple' => FALSE,
    ];

    $form['poucenie_title'] = [
      '#type' =>  'markup',
      '#markup' => '<b><p class="govuk-body govuk-!-font-weight-bold">Poučenie:</p></b>'
    ];

    $form['poucenie'] = [
      '#type' =>  'markup',
      '#markup' => '<p class="govuk-body">
Odklad splatnosti poistného a príspevkov na starobné dôchodkové sporenie (ďalej len „poistné“) sa
týka zamestnávateľov v časti poistného za zamestnávateľa a povinne poistených SZČO,
ktorí vykazujú v dôsledku mimoriadnej situácie pokles čistého obratu alebo pokles príjmov z podnikania a inej samostatnej zárobkovej činnosti o 40 % a viac.
Upozorňujeme, že zmena sa týka poistného za kalendárny mesiac január 2022 a zamestnávateľ je naďalej povinný odvádzať poistné, ktoré platí zamestnanec a odvádza ho za neho zamestnávateľ,
v pôvodnej lehote splatnosti. Povinnosť vykazovať poistné sa nemení a zamestnávatelia musia predložiť výkaz poistného v pôvodnej lehote.
Pôvodné lehoty platia aj pre plnenie prihlasovacích a oznamovacích povinností zamestnávateľa.
Spôsob určenia poklesu čistého obratu podľa osobitného predpisu a príjmov z podnikania a inej samostatnej zárobkovej činnosti podľa osobitného predpisu je
určený nariadením vlády Slovenskej republiky č. 76/2020 Z. z. z 9. apríla 2020 o spôsobe určenia poklesu čistého obratu a príjmov z podnikania a z inej
samostatnej zárobkovej činnosti, ktoré je doplnené nariadením vlády Slovenskej republiky č. 132/2020 Z. z. z 20. mája 2020 a nariadením vlády Slovenskej republiky č. 102/201 Z. z. zo 17. marca 2021.
Pokles tržieb odvádzateľa sa určí porovnaním výšky tržieb za mesiac január 2022:</p>
<ul class="govuk-list govuk-list--bullet">
<li>
    s výškou tržieb za mesiac január 2019 alebo
    </li>
    <li>
    s mesačným priemerom tržieb za rok 2019 (ak odvádzateľ vykonával činnosť po celý rok 2019) alebo
    </li>
       <li>
    s výškou tržieb za mesiac február 2020 (ak odvádzateľ nevykonával činnosť v januári 2019).
    </li>
    </ul>
<p class="govuk-body">
Ak zamestnávateľ alebo povinne poistená SZČO, za predpokladu splnenia zákonom stanovených podmienok pre odklad splatnosti, zaplatia poistné za január 2022 v predĺženej lehote splatnosti do
31. marca 2025,
teda včas a v správnej výške, Sociálna poisťovňa im penále nepredpíše. V prípade, ak zamestnávateľ alebo povinne poistená SZČO nezaplatia poistné za január 2022 ani do
31. marca 2025,
Sociálna poisťovňa im môže povoliť splátky dlžnej sumy poistného, ktorú nezvýši o úrok.
Na účely posúdenia nároku na nemocenskú alebo dôchodkovú dávku sa poistné za mesiac január 2022 považuje za zaplatené do uplynutia tretieho mesiaca po mesiaci,
 v ktorom skončí krízová situácia. Ak v tejto lehote poistenec nedoplatí dlžné poistné, bude povinný vrátiť dávku alebo jej časť odo dňa,
 od ktorého mu nepatrila alebo nepatrila v poskytovanej sume, ak je vyššia ako 5 eur.
O zapracovaní predĺženej lehoty splatnosti poistného za január 2022 Vám Sociálna poisťovňa zašle notifikáciu mailovou formou.
</p>'
    ];

    $form['vyhlasenie_checkbox_title'] = [
      '#type' =>  'markup',
      '#markup' => '<p class="govuk-body govuk-!-font-weight-bold">Vyhlásenie:</p>'
    ];

    $form['suhlas'] = [
      '#type' => 'checkbox',
      '#title' => 'Som si vedomý skutočnosti, že nepravdivé čestné vyhlásenie zakladá skutkovú podstatu priestupku podľa § 21 ods. 1 písm. f) zákona Slovenskej národnej rady č. 372/1990 Zb. o priestupkoch v znení neskorších predpisov.',
      '#default_value' => FALSE,
      '#required' => TRUE,
    ];

    $form['vyhlasenie_title'] = [
      '#type' =>  'markup',
      '#markup' => '<b><p class="govuk-body govuk-!-font-weight-bold">Vyhlásenie:</p></b>'
    ];

    $form['vyhlasenie'] = [
      '#type' => 'checkbox',
      '#title' => 'Súhlasím, aby údaje uvedené vo formulári boli použité a spracované v informačnom systéme Sociálnej poisťovne v súlade s účelom, pre ktorý boli poskytnuté podľa zákona č. 461/2003 Z. z. o sociálnom poistení v znení neskorších predpisov',
      '#default_value' => FALSE,
      '#required' => TRUE
    ];


    $form['submit'] = [
      '#type' => 'submit',
      '#weight' => 1,
      '#value' => $this->t('Submit'),
      '#name' =>  'region_submit',
      '#default_value'  => 'region_submit',
      '#op'=>'region',
    ];

    $form['vyhlasenie_title'] = [
      '#type' =>  'markup',
      '#markup' => '<hr><p class="govuk-body">Ak ste SZČO a zároveň zamestnávateľ (FO) a predĺženie splatnosti poistného sa týka obidvoch typov (SZČO aj zamestnávateľa), je potrebné odoslať formulár 2x (za oba typy)!</p>
<p class="govuk-body"><sup>1</sup> označte aktuálnu skutočnosť.</p>
<p class="govuk-body"><sup>2</sup> spôsob učenia poklesu tržieb upravuje nariadenie vlády Slovenskej republiky č. 76/2020 Z. z. z 9. apríla 2020 o spôsobe určenia poklesu čistého obratu a príjmov z podnikania a z inej samostatnej zárobkovej činnosti a nariadením vlády Slovenskej republiky č.132/2020 Z. z. z 20. mája 2020.</p>
',
      '#weight' => 10
    ];

    $form['#attached']['library'][]  = "idsp_base/odklad_poistneho_vyhlasenie";

    return $form;

  }
  public function validateForm(array &$form, FormStateInterface $form_state) {

    if(\Drupal::service('email.validator')->isValid($form_state->getValue('email')) === FALSE)
    {
      $form_state->setError($form, 'Zadajte platnú emailovú adresu.');
    }

    $typOdv = $form_state->getValue('typ_odv') ;
    $varSym = $form_state->getValue('var_symbol') ;
    $firstChar = substr($varSym, 0, 1);

    if($typOdv === 'szco') {
      if (strlen($varSym) != 10 || $firstChar != "3") {
        $form_state->setError($form, 'Zadajte platný variabilný symbol.');
      }
      if(strlen($form_state->getValue('rodne_cislo')) == 0) {
        $form_state->setError($form, 'Zadajte platné rodné číslo.');
      }
    } else if ($typOdv == 'zamestnavatel') {
      if (strlen($varSym) != 10) {
        $form_state->setError($form, 'Zadajte platný variabilný symbol.');
      }

      if(!in_array($firstChar, ['1', '2', '9'])) {
        $form_state->setError($form, 'Zadajte platný variabilný symbol.');
      }

      if(strlen($form_state->getValue('ico')) != 8) {
        $form_state->setError($form, 'Zadajte platné IČO.');
      }

      if(strlen($form_state->getValue('statutar')) == 0) {
        $form_state->setError($form, 'Zadajte meno a priezvisko štatutárneho zástupcu zamestnávateľa.');
      }
    }
  }

  public function submitForm(array &$form, FormStateInterface $form_state) {

    KoronaCestneVyhlasenie::create([
      'uuid'  =>  \Drupal::service('uuid')->generate(),
      'nazov_fo' => $form_state->getValue('nazov_fo'),
      'typ_odv' => $form_state->getValue('typ_odv'),
      'var_symbol' => $form_state->getValue('var_symbol'),
      'email' => $form_state->getValue('email'),
      'statutar' => $form_state->getValue('statutar'),
      'ico' => $form_state->getValue('ico'),
      'rodne_cislo' => $form_state->getValue('rodne_cislo'),
      'sidlo' => $form_state->getValue('sidlo'),
      'typ_trzieb' => $form_state->getValue('typ_trzieb'),
      'email' => $form_state->getValue('email'),
      'prehlasenie' => TRUE,
      'suhlas' => TRUE,
      'status' => TRUE
    ])->save();

    return $this->messenger()->addStatus('Formulár úspešne odoslaný.');
  }

}