Ștergere factură¶
Descriere - Ștergere factură¶
Această secțiune este dedicată ștergerii unei facturi
Operațiunea de ștergere a unei facturi NU este echivalentă cu anularea
Operațiunea de ștergere este permanentă
Doar facturile proforme (ne-validate) se pot șterge
După ștergerea unei facturi nu se mai poate realiza niciun fel de operație
Model de utilizare API - Ștergere 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: DELETE
Endpoint: /{clientEid}/invoices
Request parameter: {clientEid}
Request body: {data_body}
Returns: Success Response
Atenționare
A se observa parametrul {clientEid} și tipul acestuia (path variable)
A se observa parametrul {data_body} și tipul acestuia (request body)
Model de request body - Ștergere 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 șterge: 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 - Ștergere factură¶
La momentul executării acestui apel se vor verifica și valida următoarele:
Dacă există factura
Dacă factura este urmată de o altă factură pe aceeași serie cu un numar mai mare, atunci factura NU se poate șterge
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
Eq. Vrem să ștergem factura X cu seria și numărul SRS 152,
Dacă există o factură cu seria SRS 153 sau mai mare 153+, atunci factura SRS 152 nu se poate șterge
Dacă nu există nici-o altă factură pentru seria SRS cu un număr mai mare decât 152, atunci factura se poate șterge
Mod de folosire - Wrapper - Ștergere 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 DELETE
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.delete_invoice(client_eid, invoiceExternalId)
Mod de folosire - Fără Wrapper - Ștergere 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 deleteInvoice(self): invoice_url = f'{self.api_endpoint}/{self.client_eid}/invoices' data_body = { 'externalId': '{ID_EXTERN_FACTURA}' } _req = requests.delete(url=invoice_url, headers={'Content-Type': 'application/json', 'Authorization': self.token}, json=data_body) return _req.json() if __name__ == '__main__': service = InvoiceService() invoice = service.deleteInvoice() print(invoice)Notă
Clasa TokenService() se găsește la secțiunea Autorizarea: Vezi Autorizarea