Anulare factura

Descriere - Anulare factura

  • Aceasta sectiune este dedicata anularii unei facturi

  • Operatiunea de anulare a unei facture NU este egala cu stergerea

  • Operatiunea de anulare doar va schimba statusul facturii in Cancelled Vezi informatii status factura

  • Doar facturile validate se pot anula

Operatii care se pot realiza dupa ce o factura a fost anulata:
  1. Vezi Stergere factura

  2. Vezi Trimite pe email

  3. Vezi Descarcare factura

Model de utilizare API - Anulare 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: POST

  • Endpoint: /{clientEid}/invoices/canceled

  • Request parameter: {clientEid}

  • Request body: {data_body}

  • Returns: Success

Atenționare

  • A se observa parametru {clientEid} si tipul acestuia (path variable)

Model de request body - Anulare factura

  • Request body -ul se creaza in prealabil, inaintea apelului catre API

  • Acesta va contine 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 contine doar o singura proprietate si anume externalId

Validari - Anulare factura

La momentul executarii acestul apel se vor verifica/valida urmatoarele:

  • Daca exista factura

  • Daca factura nu se afla deja in statusul anulat (Cancelled)

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

Mod de folosire - Wrapper - Anulare factura

  • Daca se foloseste wrapper -ul scris in Python se utilizeaza astfel:
    1. Se preia token-ul pe baza parametrilor specifici

    2. Se apeleaza metoda specifica 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, secret=secret, token_url=token_url, api_url=api_url)
    
    invoiceExternalId = '{ID_EXTERN_FACTURA}'
    
    result = api.cancel_invoice(client_eid, invoiceExternalId)
    

Mod de folosire - Fara Wrapper - Anulare 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 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 gaseste la sectiunea Autorizarea: Vezi Autorizarea