Modificare articol

Descriere - Modificare articol

  • Această secțiune este dedicată înlocuirii unui articol. Singura informație care va rămâne va fi identificatorul Keez al articolului externalId

  • Articolul înlocuit poate fi folosit pe o factură nouă sau pe una deja existentă, însă PDF-ul facturii nu se va reîmprospăta cu noile informații din articol dacă acesta a fost deja generat

  • Această operațiune va returna doar un mesaj de succes

Operații care se pot realiza după ce un articol a fost înlocuit:
  1. Vezi Modificare articol

  2. Vezi Creare factură

Model de utilizare API - Modificare articol

Notă

  • Verb: PUT

  • Endpoint: /{clientEid}/items/{itemExternalId}

  • Request parameter: {clientEid} si {itemExternalId}

  • Request body: {data_body}

  • Returns: Success Response

Atenționare

  • A se observa parametrul {clientEid} și tipul acestuia (path variable)

  • A se observa parametrul {itemExternalId} și tipul acestuia (path variable)

  • A se observa parametrul {data_body} și tipul acestuia (request body)

Model de request body - Modificare articol

  • Request body-ul se creează în prealabil, înaintea apelului către API

  • Acesta va conține toate informațiile care se vor modificate

  • Modelul acestui request body se regăsește în tabelul din Vezi Model Articol

  • Informațiile obligatorii deja completate pentru articol nu pot fi șterse (completate cu null)

  • Formatul de date primit de fiecare parametrul în parte este specificat în coloana «Format» din modelul de mai sus

data_body = {
    'name': 'Servicii lunare',
    'currencyCode': 'RON',
    'measureUnitId': 1,
    'isActive': True,
    'categoryExternalId': 'GOODS_NONFOOD'
}
  • Se poate observa cum JSON-ului de mai sus conține toate proprietățile care vor fi modificate

Validări - Modificare articol

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

  • Dacă există articolul

  • Toate proprietățile obligatorii trebuie să fie completate

  • Numele produselor existente sau nou create trebuie să fie unice (validarea se face pe totalitatea produselor deja existente)

  • Caracterele speciale (șțâăî) vor fi transformate în caractere normale fără accente

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 - Modificare articol

  • 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 PUT

    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)
    
    item_external_id = '{ID_EXTERN_ARTICOL}'
    data_body = {
        'name': 'Servicii zilnice',
        'measureUnitId': 1,
    }
    
    result = api.replace_item(client_eid, item_external_id, data_body)
    

Mod de folosire - Fără Wrapper - Modificare articol

class ItemService:
    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 replaceItem(self):
        item_external_id = 'TEST'

        item_url = f'{self.api_endpoint}/{self.client_eid}/items/{item_external_id}'

        item_data = {
            'name': 'Servicii lunare',
            'currencyCode': 'RON',
            'measureUnitId': 1,
            'isActive': True,
            'categoryExternalId': 'GOODS_NONFOOD'
        }

        _req = requests.put(url=item_url, headers={'Content-Type': 'application/json', 'Authorization': self.token}, json=item_data)
        return _req.json()


if __name__ == '__main__':
    service = ItemService()
    item = service.replaceItem()
    print(item)

Notă

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