Ș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ă

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,

  1. Dacă există o factură cu seria SRS 153 sau mai mare 153+, atunci factura SRS 152 nu se poate șterge

  2. 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:
    1. Se preia token-ul Vezi Autorizarea

    2. 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