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:
Model de utilizare API - Modificare articol¶
Așa cum este explicat în zona de Informații generale utilizare API orice apel către API se face prin URL-ul de bază + endpoint-ul respectivei operații
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:
Se preia token-ul Vezi Autorizarea
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