Validare factura¶
Descriere - Validare factura¶
Aceasta sectiune este dedicata validarii unei facturi
Operatiunea de validate va schimba statusul facturii in Validated Vezi informatii status factura
Factura odata validata isi va schimba definitia contabila din Factura Proforma (Draft) in Factura Fiscala
O factura valida are impact contabil
O factura valida nu poate fi stearsa ci doar anulata
- Operatii care se pot realiza dupa ce o factura a fost validata:
Model de utilizare API - Validare factura¶
Asa cum este explicat in zona de Informatii generale utilizare API orice apel catre API se face catre un URL de baza la care apoi se adauga endpoint-ul respectivei operatii
Notă
Verb: POST
Endpoint: /{clientEid}/invoices/valid
Request parameter: {clientEid}
Request body: {data_body}
Returns: Success
Atenționare
A se observa parametru {clientEid} si tipul acestuia (path variable)
Model de request body - Validare factura¶
Request body -ul se creaza in prealabil, inaintea apelului catre API
Acesta va contine doar identificatorul Keez al facturii care se va anula: externalId
data_body = {
'externalId': '{ID_EXTERN_FACTURA}'
}
Se poate observa cum JSON-ului de mai sus contine doar o singura proprietate si anume externalId
Validari - Validare factura¶
La momentul executarii acestul apel se vor verifica/valida urmatoarele:
Daca exista factura
Toate proprietatiile obligatorii trebuie sa fie completate
Seria facturii nu permite spatii
Se verifica daca factura este aferenta unei luni inchise fiscal
Nu se poate valida o factura anulata sau deja validata
Se verifica atat sumele cat si valorile fiecarui articol de pe factura astfel incat factura sa fie consistenta:
Valoarea neta initiala fara discount pentru articol
Valoarea TVA initiala fara discount pentru articol
Valoarea neta de discount pentru articol
Valoarea TVA de discount pentru articol
Valoarea net + TVA (bruta) de discount pentru articol
Valoarea neta pentru articol
Valoarea TVA pentru articol
Valoarea net + TVA (bruta) pentru articol
Valoarea accizei pentru articol
Valoarea totala neta initiala fara discount
Valoarea totala TVA initiala fara discount
Valoarea totala neta de discount
Valoarea totala TVA de discount
Valoarea totala net + TVA (bruta) de discount
Valoarea totala neta
Valoarea totala net + TVA (bruta)
Valoarea totala a accizei
Valoarea totala net + TVA (bruta) de discount
Valoarea totala TVA
Verificarile si validarile vor arunca (throw) mesaje de eroare sub forma de exceptie (Vezi Model Exceptie) atasate de un cod HTTP error 500. Vezi Coduri eroare posibile
Mod de folosire - Wrapper - Validare factura¶
- Daca se foloseste wrapper -ul scris in Python se utilizeaza astfel:
Se preia token-ul pe baza parametrilor specifici
Se apeleaza metoda specifica acestui request POST
token_url = 'https://staging.keez.ro/idp/connect/token' api_url = f'https://{ENVIRONMENT}.keez.ro/api/v1.0/public-api' client_eid = '{RECEIVED_CLIENT_EID}' application_id = '{RECEIVED_APPLICATION_ID}' secret = '{RECEIVED_SECRET}' api = KeezPublicApi(app=application, secret=secret, token_url=token_url, api_url=api_url) invoiceExternalId = '{ID_EXTERN_FACTURA}' result = api.validate_invoice(client_eid, invoiceExternalId)
Mod de folosire - Fara Wrapper - Validare factura¶
class InvoiceService: def __init__(self): token = TokenService() self.auth_token = token.generate_token() self.token = f'{self.auth_token.get("token_type")} {self.auth_token.get("access_token")}' self.client_eid = token.client_eid self.api_endpoint = token.api_endpoint def validateInvoice(self): invoice_url = f'{self.api_endpoint}/{self.client_eid}/invoices/valid' data_body = { 'externalId': '{ID_EXTERN_FACTURA}' } _req = requests.post(url=invoice_url, headers={'Content-Type': 'application/json', 'Authorization': self.token}, json=data_body) return _req.json() if __name__ == '__main__': service = InvoiceService() invoice = service.validateInvoice() print(invoice)Notă
Clasa TokenService() se gaseste la sectiunea Autorizarea: Vezi Autorizarea