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,

  1. Daca exista o factura cu seria SRS 153 sau mai mare 153+, atunci factura SRS 152 nu se poate sterge

  2. 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:
    1. Se preia token-ul pe baza parametrilor specifici

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