Status TVA companii, de la ANAF

Preambul

Exista un sistem in MAX prin care putem sa consultam status-ul de platitor de TVA al companiilor – preluat de la ANAF.

Datorita limitarilor API-ului de la ANAF, nu putem lua live acest status, asa ca trebuie sa il luam pe cron si sa il tinem in baza – de unde se poate consulta ulterior.

Tabela din baza de date este partner_anaf_status care se leaga de tabela partner prin cif (nu uita ca in partner putem avea un cif de mai multe ori).

Cum se updateaza in tabela locala

De pe cron, adica atunci cand ruleaza yii cron din crontab. Pentru asta, exista doi parametri care trebuie sa existe in common/params-local.php:

  • PartnerAnafStatusCompanyLimit : default 300 (bucati), reprezinta nr. de companii care pot fi preluate la un apel catre API-ul ANAF-ului. Nu trebuie sa fie niciodata mai mare de 400, altfel avem ban de la ANAF.
  • PartnerAnafStatusExpirationLimit : default 1440 (minute) adica 24 ore, reprezinta perioada dupa care “expira” datele luate de la anaf per companie, si trebuiesc re-citite

Acest cron poate rula la fiecare ora (in cazul in care decidem sa setam PartnerAnafStatusExpirationLimit=60), insa intotdeauna perioada la care il setam sa ruleze in crontab trebuie sa fie mai mica decat PartnerAnafStatusExpirationLimit.

Cum se verifica

Nu se verifica niciodata direct in tabela partner_anaf_status pentru ca nu este suficient sa verifici daca – de exemplu – isVatSplit > 0 pentru ca acest vat split are si un date start si un date end. Sau doar un date start. Sau doar un date end. Sau a fost re-inrolata ca platitoare de tva 🙂 ! Trebuie deci sa folosesti niste metode pe modelul PartnerAnafStatus, dupa cum urmeaza mai jos. Pentru mai multe detalii legate de functii si de ce anume returneaza, vezi docblock-ul fiecareia (este la zi…).

  • PartnerAnafStatus::paysVat($cui, $atDate) –  spune daca firma $cui este platitoare de TVA la data $atDate (orice tip de tva…)
  • PartnerAnafStatus::paysVatSplit($cui, $atDate) –  spune daca firma $cui este platitoare de TVA SPLIT la data $atDate
  • PartnerAnafStatus::paysVatOnCollect($cui, $atDate) – spune daca firma $cui este platitoare de TVA LA INCASARE la data $atDate
  • PartnerAnafStatus::when($cui) – returneaza (momentan numai) doua date importante:
    • checkDate – cand a fost ultima data updatata compania $cui in MAX (din ANAF)
    • vatOnCollectUpdated – cand a fost ultima data updatat status-ul de tva la incasare in ANAF
  • PartnerAnafStatus::isActive($cui,$atDate) – returneaza TRUE daca firma este activa, FALSE daca nu este active (adica inchisa/suspendata/radiata) la daca specificata
  • PartnerAnafStatus::getVatDescriptor($cui,$atDate) – returneaza un string care descrie status-ul de tva al companiei la data specificata; pentru a fi folosit ca atare in afisarea status-ului

Demo: /web/developer/cas-pays-vat

Atentie la ce intorc aceste functii – vezi docblock.

About

Software Development Manager, Architect

Leave a Reply

Your email address will not be published. Required fields are marked *

[TOP]