Anulare factură

Descriere - Anulare factură

  • Această secțiune este dedicată anulării unei facturi

  • Operațiunea de anulare a unei facturi NU este echivalentă cu ștergerea

  • Operațiunea de anulare va schimba doar statusul facturii în Cancelled Vezi informații status factură

  • Doar facturile validate se pot anula

Operații care se pot realiza după ce o factură a fost anulată:
  1. Vezi Ștergere factură

  2. Vezi Trimite pe email

  3. Vezi Descărcare factură

Model de utilizare API - Anulare factură

Notă

  • Verb: POST

  • Endpoint: /{clientEid}/invoices/canceled

  • 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 - Anulare 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 - Anulare factură

La momentul executării acestui apel se vor verifica și valida următoarele:

  • Dacă există factura

  • Dacă factura nu se afla deja în statusul anulat (Cancelled)

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 - Anulare factură

  • Dacă se folosește wrapper-ul scris în Python se utilizează astfel:
    1. Se preia token-ul Vezi Autorizarea

    2. Se apelează metodă 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.cancel_invoice(client_eid, invoiceExternalId)
    

Mod de folosire - Fără Wrapper - Anulare 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 cancelInvoice(self):
        invoice_url = f'{self.api_endpoint}/{self.client_eid}/canceled'

        data_body = {
            'externalId': '{ID_EXTERN_FACTURA}'
        }

        _req = requests.get(url=invoice_url, headers={'Content-Type': 'application/json', 'Authorization': self.token}, json=data_body)
        return _req.json()


if __name__ == '__main__':
    service = InvoiceService()
    invoice = service.cancelInvoice()
    print(invoice)

Notă

Clasa TokenService() se găsește la secțiunea Autorizarea: Vezi Autorizarea