FAQ & Troubleshooting
Întrebări frecvente
De ce primesc răspuns gol când apelez direct ERP-ul?
Cel mai probabil ați trimis Content-Type: application/json. NextUp cere Content-Type: text/plain pe endpoint-ul POST. Schimbați header-ul și apelul va funcționa. Detaliu: vezi Despre API NextUp § Quote despre Content-Type.
Pot apela direct ERP-ul din browser cu fetch / jQuery?
Nu — NextUp nu trimite header-e CORS, deci browser-ul va bloca. Trebuie mereu un proxy server-side. Swagger UI-ul nostru este exact acest proxy.
Token-ul expiră — cum tratez asta în SDK?
Vedeți pattern-ul recomandat în Autentificare § Algoritm. Pe scurt: cache token, retry max o singură dată la ... expirat ..., evitați buclele de re-auth.
De ce primesc Stoc insuficient deși am stoc?
Trei posibile cauze:
ReservedQuantityscade din stocul disponibil. VerificațiQuantity - ReservedQuantityînGetAllStocksForArticles.- Greșit
WarehouseId— stocul există în alt depozit. Verificați cuGetStocksForArticleByCode. - Greșit
ArticleCode— articol diferit.
Pot crea un partener cu CIF deja existent?
Da, NextUp nu impune unicitatea pe CIF, doar pe Code. Dacă vreți unicitate pe CIF, validați client-side cu GetAllPartners și un .find() înainte de AddPartner.
Cum funcționează multi-societate?
Un token e legat de o societate (Database). Pentru a lucra cu mai multe societăți în paralel, mențineți un cache (Database) → Token. Vezi Autentificare § Multi-societate.
Pot apela operațiunile fără token (test rapid)?
Doar GetAuthenticationToken și (în mock) endpoint-urile operaționale (/health, /info, etc.). Toate celelalte cer token. În mock puteți seta ENFORCE_TOKEN=false în .env pentru a accepta orice token.
Cum trimit imagine la UpdateArticlePicture?
Encodați-o base64 și includeți-o în Params.Picture. Atenție la limita de 5MB a proxy-ului (configurabilă în server/index.js).
PIC=$(base64 -i poza.jpg | tr -d '\n')
curl -X POST http://localhost:4000/NextUpServices/Services/POST/ \
-H "Content-Type: text/plain" \
-d "{\"AuthenticationToken\":\"$NX_TOKEN\",\"Method\":\"UpdateArticlePicture\",\"Params\":{\"Code\":\"0000001\",\"Picture\":\"$PIC\"}}"
Cum generez SDK-uri din OpenAPI?
# Java
openapi-generator-cli generate -i openapi.yaml -g java -o ./sdk-java
# Python
openapi-generator-cli generate -i openapi.yaml -g python -o ./sdk-python
# TypeScript Axios
openapi-generator-cli generate -i openapi.yaml -g typescript-axios -o ./sdk-ts
Spec-ul openapi.yaml este disponibil:
- Local:
sandbox/swagger-ui/spec/openapi.yaml - Servit:
http://localhost:3000/openapi.yaml(și JSON la/openapi.json) - În producție:
https://sandbox.nextup.ro/openapi.yaml
Pot rula Swagger UI și Mock pe alte porturi?
Da, modificați PORT în fiecare .env. Apoi actualizați CORS_ORIGINS în mock și NEXTUP_MOCK_BASE_URL în swagger-ui pentru a se găsi reciproc.
Există rate-limiting?
Nu, nici pe Mock, nici pe ERP-ul real (NextUp). Recomandarea noastră: limitați-vă singuri la max 10 req/sec pentru a nu congestiona ERP-ul în producție.
Pot apela GET în loc de POST?
Da, dar doar pentru debug rapid din browser. Limita URL e 2048 caractere (IE) / 8KB (Chrome). Pentru payloads de comandă cu multe linii, folosiți POST. Vezi Despre API § moduri de consumare.
Troubleshooting
"ENETUNREACH 1.2.3.4:8888"
Proxy-ul nu poate vedea ERP-ul. Verificați:
# 1. Răspunde maşina?
ping 1.2.3.4
# 2. Răspunde portul?
curl -v telnet://1.2.3.4:8888 2>&1 | head -5
# 3. NextUp e pornit?
# Pe maşina ERP: Utilitare → Servicii WEB → Panou de control → trebuie să apară "Pornit"
Pentru a continua lucrul fără ERP: comutați la mock în Swagger UI.
"Workspace still starting" în terminal
Apare doar în sandbox-ul nostru de dezvoltare, nu pe maşina dvs. — ignorați.
Docker Compose: open //./pipe/dockerDesktopLinuxEngine: The system cannot find the file specified
Docker Desktop nu este pornit. Deschideți Docker Desktop din Start Menu, așteptați să apară "Docker is running", apoi reîncercați. Alternativă: rulați mock + swagger-ui via npm start în două terminale.
"the attribute version is obsolete"
Avertizare benignă din docker-compose.yml modern. Am eliminat-o în versiunea curentă. Dacă o mai vedeți, faceți git pull sau ștergeți rândul version: "3.9" din top-ul docker-compose.yml.
Token-ul vine null
Apelul GetAuthenticationToken a eșuat. Verificați:
Content-Type: text/plain(nuapplication/jsondirect la ERP)- Credențiale corecte (User/Pass/Database)
- ERP-ul este pornit
- Slash-ul final după
POSTîn URL:/NextUpServices/Services/POST/(cu slash, nu fără)
Result === false dar Error e null
Caz rar. Înseamnă că ERP-ul a evaluat operațiunea ca eșec dar nu a generat un mesaj. Verificați log-ul NextUp (Utilitare → Servicii WEB → Log). În SDK, tratați acest caz ca eroare necunoscută.
"Headers already sent" în proxy
Conexiunea cu upstream s-a închis înainte de finalizare. Verificați UPSTREAM_TIMEOUT_MS în .env (default 30000 ms). Pentru operațiuni grele (de exemplu ExportSaleInvoices cu range mare), creșteți la 120000.
CORS denied de la mock
Origin-ul tab-ului dvs. nu e în whitelist. Adăugați-l în CORS_ORIGINS (CSV) în mock-server/.env:
CORS_ORIGINS=http://localhost:3000,http://localhost:5173,https://app.example.com
Probleme specifice de business
"Adresa fiscală e greșită" la AddPartner cu TaxAttribute: RO
TaxAttribute: 'RO' înseamnă plătitor de TVA. Asigurați-vă că ați completat și TaxCode (CIF) cu un cod valid, altfel ERP-ul va refuza.
Document-ul nu apare în nomenclator după Add*
În mock este normal — datele sunt în memorie și se pierd la restart. În ERP-ul real, verificați:
- Tranzacția nu a făcut rollback intern (log NextUp).
- Userul are drepturi pe seria de documente.
- Aplicația cliente NextUp nu e deschisă pe aceeași entitate (lock).
Sold partener greșit după PayDocumentsWithReceipt
Asigurați-vă că ReceiptId și DocumentIds aparțin aceluiași partener. NextUp permite și nu raportează greșeala dacă partenerii diferă, dar soldurile vor fi calculate eronat.
Contact suport
Pentru probleme nelistate aici, contactați echipa NextUp.
Mai multe pe nextup.ro/contact. Pentru probleme ERP NextUp în producție, contactați echipa NextUp internă.