Trimitere factura pe email

Descriere - Trimitere factura pe email

  • Aceasta sectiune este dedicata trimiterii unei facturi pe email

  • Operatiunea de trimitere nu modifica in nici-un fel factura

Model de utilizare API - Trimitere factura pe email

  • 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: /invoices/delivery

  • Request body: {data_body}

  • Returns: Success

Atenționare

  • A se observa parametru {data_body} si tipul acestuia (request body)

Model de request body - Trimitere factura pe email

  • 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 = {
    "invoiceExternalId": '{ID_EXTERN_FACTURA}',
    "info": [
        {
            "deliveryMethod": "Email",
            "representationType": "Attachment",
            "recipients": {
                "to": '{TO_EMAIL}',
                "cc": '{CC_EMAIL}',
                "bcc": '{BCC_EMAIL}'
            }
        }
    ]
}
  • Se poate observa cum JSON-ului de mai sus contine:

    1. identificatorul Keez al facturii invoiceExternalId 1. emailul TO to 1. emailul CC cc 1. emailul BCC bcc

Validari - Trimitere factura pe email

La momentul executarii acestul apel NU se vor verifica/valida informatii

Mod de folosire - Wrapper - Trimitere factura pe email

  • 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}'
    to = '{TO_EMAIL}'
    cc = '{CC_EMAIL}'
    bcc = '{BCC_EMAIL}'
    
    result = api.deliver_invoice_by_email(invoiceExternalId, to=to, cc=cc, bcc=bcc)
    

Mod de folosire - Fara Wrapper - Trimitere factura pe email

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 sendInvoiceByEmail(self):
        invoice_url = f'/invoices/delivery'

        data_body = {
            "invoiceExternalId": '{ID_EXTERN_FACTURA}',
            "info": [
                {
                    "deliveryMethod": "Email",
                    "representationType": "Attachment",
                    "recipients": {
                        "to": '{TO_EMAIL}',
                        "cc": '{CC_EMAIL}',
                        "bcc": '{BCC_EMAIL}'
                    }
                }
            ]
        }

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


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

Notă

Clasa TokenService() se gaseste la sectiunea Autorizarea: Vezi Autorizarea