Stergere factura¶
Descriere - Stergere factura¶
Aceasta sectiune este dedicata stergerii unei facturi
Operatiunea de stergere a unei facture NU este egala cu anularea
Operatiunea de stergere este permanenta
Doar facturile proforme (ne-validate) se pot sterge
Dupa stergerea unei facturi nu se mai poate realiza nici-un fel de operatie
Model de utilizare API - Stergere 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: DELETE
Endpoint: /{clientEid}/invoices
Request parameter: {clientEid}
Request body: {data_body}
Returns: Success
Atenționare
A se observa parametru {clientEid} si tipul acestuia (path variable)
A se observa parametru {data_body} si tipul acestuia (request body)
Model de request body - Stergere factura¶
Request body -ul se creaza in prealabil, inaintea apelului catre API
Acesta va contine doar identificatorul Keez al facturii care se va sterge: 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 - Stergere factura¶
La momentul executarii acestul apel se vor verifica/valida urmatoarele:
Daca exista factura
Daca factura este succedata de o alta factura pe aceasi serie cu un numar mai mare, atunci factura NU se poate sterge
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
Eq. Vrem sa stergem factura X cu seria si numarul SRS 152,
Daca exista o factura cu seria SRS 153 sau mai mare 153+, atunci factura SRS 152 nu se poate sterge
Daca nu exista nici-o alta factura pentru seria SRS cu un numar mai mare decat 152, atunci factura se poate sterge
Mod de folosire - Wrapper - Stergere 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 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, secret=secret, token_url=token_url, api_url=api_url) invoiceExternalId = '{ID_EXTERN_FACTURA}' result = api.delete_invoice(client_eid, invoiceExternalId)
Mod de folosire - Fara Wrapper - Stergere 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 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 gaseste la sectiunea Autorizarea: Vezi Autorizarea