Validare factură¶
Descriere - Validare factură¶
Această secțiune este dedicată validarii unei facturi
Operațiunea de validare va schimba statusul facturii în Validated Vezi informații status factură
Factura odată validată își va schimba definiția contabilă din Factură Proforma (Draft) în Factură Fiscală
O factură validă are impact contabil
O factură validă nu poate fi ștearsă ci doar anulată
- Operații care se pot realiza după ce o factură a fost validată:
Model de utilizare API - Validare factură¶
Așa cum este explicat în zona de Informații generale utilizare API orice apel către API se face prin URL-ul de bază + endpoint-ul respectivei operații
Notă
Verb: POST
Endpoint: /{clientEid}/invoices/valid
Request parameter: {clientEid}
Request body: {data_body}
Returns: Success Response
Atenționare
A se observa parametrul {clientEid} și tipul acestuia (path variable)
Model de request body - Validare factură¶
Request body-ul se creează în prealabil, înaintea apelului către API
Acesta va conține 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 conține doar o singură proprietate și anume externalId
Validări - Validare factură¶
La momentul executării acestui apel se vor verifica și valida următoarele:
Dacă există factura
Toate proprietățile obligatorii trebuie să fie completate
Seria facturii nu permite spații
Se verifică dacă factura este aferenta unei luni închise fiscal
Nu se poate valida o factură anulată sau deja validată
Se verifică atât sumele cât și valorile fiecărui articol de pe factură astfel încât factura să fie consistentă:
Valoarea netă inițială fără discount pentru articol
Valoarea TVA inițială fără discount pentru articol
Valoarea netă de discount pentru articol
Valoarea TVA de discount pentru articol
Valoarea net + TVA (brută) de discount pentru articol
Valoarea netă pentru articol
Valoarea TVA pentru articol
Valoarea net + TVA (brută) pentru articol
Valoarea accizei pentru articol
Valoarea totală netă inițială fără discount
Valoarea totală TVA inițială fără discount
Valoarea totală netă de discount
Valoarea totală TVA de discount
Valoarea totală net + TVA (brută) de discount
Valoarea totală netă
Valoarea totală net + TVA (brută)
Valoarea totală a accizei
Valoarea totală net + TVA (brută) de discount
Valoarea totală TVA
Verificările și validările vor arunca (throw) mesaje de eroare sub formă de excepție (Vezi Model Excepție) atașate de un cod HTTP error 500. Vezi Coduri eroare posibile
Mod de folosire - Wrapper - Validare factură¶
- Dacă se folosește wrapper-ul scris în Python se utilizează astfel:
Se preia token-ul Vezi Autorizarea
Se apelează metoda specifică 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_id, secret=secret, token_url=token_url, api_url=api_url) invoiceExternalId = '{ID_EXTERN_FACTURA}' result = api.validate_invoice(client_eid, invoiceExternalId)
Mod de folosire - Fără Wrapper - Validare factură¶
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 găsește la secțiunea Autorizarea: Vezi Autorizarea