Inlocuire articol

Descriere - Inlocuire articol

  • Aceasta sectiune este dedicata inlocuirii unui articol. Singura informatii care va ramane aceasi va fi identificatorul Keez al articolului externalId

  • Articolul inlocuit poate fi folosit pe o factura noua sau pe una deja existenta, dar daca PDF-ul facturii a fost deja generat, PDF-ul nu se va reimprospata cu noul articol

  • Aceasta operatiune dupa finalizare va returna doar un mesaj de success

Operatii care se pot realiza dupa ce un articol a fost inlocuit:
  1. Vezi Modificare articol

  2. Vezi Create factura

Model de utilizare API - Inlocuire articol

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

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

  • Request parameter: {clientEid} si {itemExternalId}

  • Request body: {data_body}

  • Returns: Success

Atenționare

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

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

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

Model de request body - Inlocuire articol

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

  • Acesta va contine toate informatiile care se vor modificate

  • Modelul acestui body se regasete in tabelul din Vezi Model Articol

  • Informatiile obligatorii deja completate pentru articol nu pot fi sterse (completate cu null)

  • Formatul de date primit de fiecare parametru in parte este specificat in coloane „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 contine toate proprietati care vor fi modificate

Validari - Inlocuire articol

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

  • Daca exista articolul

  • Toate proprietatiile obligatorii trebuie sa fie completate

  • Numele de produse existente sau noi create trebuie sa fie unice (se valideaza pe totalitatea produselor deja existente)

  • Caracterele speciale (șțâăî) vor fi transformate in caractere normale fara accente

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

  • 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 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, 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 - Fara Wrapper - Inlocuire 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 gaseste la sectiunea Autorizarea: Vezi Autorizarea