Implementarea declaratiilor anaf
Cotroller-ul comun este AnafController.
Daca o declaratie va avea mai multe formulare atunci pt fiecare subform va exista un model si respectiv un view. Modelul unei declaratii va mosteni mereu clasa CommonStatement. Fiecare declaratie va aparea in tablela accounting_widge cu numele sau , categoryId = 2 , accountingType = 0 sau 1 in functie de caz (pentru PFA sau SRL) la fel si moreType.
Clasa CommonStatement apeleaza fiecare functie de update din fiecare model extinde aceasta clasa.
Pasi pentru construirea unui model pentru declaratii:
1) Variabilele si regulile de validare sunt luate din schema xsd specifica declaratiei respective. Fiecare regula are specificatiile ei ex: o variabil de tip int nu poate sa depaseasc o anumita valoare sau un string trebuie sa iba lungimea cuprinsa intre 2 valori datele sun reprezentate prin regex-uri ex:
in xsd
<xs:attribute name="telefon" type="Str15" use = "required"/>
<xs:attribute name="cota" type="IntInt1_3SType"/>
in php [['telefon', 'fax'], 'string', 'max' => 15], ['cota', 'integer', 'min' => 1, 'max' => 3],
2)Fiecare declaratii care are reguli de autocomplete va avea variabila $updateCount = n (unde n este numarul de functii de update din model).
4) Functia de init() se apeleaza odata cu incarcarea declaratiei, aici sunt initializate toate campurile care contin valorile necesare obtinute din compania curenta ex: name, cif, bank-account etc.
5) In functia de composeXml este compus fisierul xml necesar pentru validarea declaratiei si trecerea la urmatorii pasi validare, semnare etc.
6) Functiile de update reprezinta regulile de autocomplete. Aceste reguli pot fi gasite in pdf-urli de documentatie cu care este insotita fiecare declaratie in parte. Fiecare regula trebuie sa indeplineasca anumite conditii si sa modifice anumite valori. ex: din D100Creanta
/**
* Field name: suma_rest & suma_plata // numele campurilor ce vor fi doificate in urama executarii acestei functii.
*/
public function update_3() {
if ($this->cod_oblig == 504) {
$this->suma_rest = 0;
$this->suma_plata = $this->suma_dat - $this->suma_ded;
}
}
!!!Atentie nu toate regulie din aceste pdf-uri coincid cu regulile din pdf-uril inteligent si este posibil sa avaem confilicte!!!!
Ex: in D100 avem nr de evidenta a platii in reguli: Poz.8-11 : LLAA (sf.per.de raportare)
Poz.12-17 : ZZLLAA (scadenta platii)
Real:
// exemplu valid 10 121 01 0916 251016 0000 37 // cod sfperap scadenta sum%100 sfperap = sf. perioadei de raportare scadenta = data scadenta
7) Fisierul form-layout.php contine divul cu pasii din fiecare declaratii (bilele de sus), tot in acest fisier se afla ajax-ul care executa toate functiile de update de pe fiecare declaratie. Modul de functionare este urmatorul: se identifica toate fieldurile si buttoanele( radio button ) apoi se itereaza prin acestea si se executa si returneaza rezultatul obtinut din functiile de update pt fiecare camp afectat. Atentie!!! In declaratiile in care avem subform-uri trebuie sa tinem cont de indexul subfomului pt. identificare campurilor.
Link catre site-ul de descarcare al declaratiilor: https://static.anaf.ro/static/10/Anaf/Declaratii_R/100.html