/* * Per richieste di tipo GET: * $api->get('?manage=ricerca&sub=findUsers'); * * Per richieste di tipo POST: * $api->post('?manage=ricerca&sub=findUsers', ['term' => 'gerp']); */ $api = new GerpApi('', '', ''); class GerpApi { private $username; private $password; private $host; /** * Inizializza l'oggetto per l'API con le credenziali e l'host * * @param string $username il nome utente. * @param string $password la password. * @param string $host l'host al quale verranno effettuate le * richieste. */ public function __construct($username, $password, $host) { $this->username = $username; $this->password = $password; $this->host = rtrim($host, '/') . '/'; } /** * Effettua una richiesta di tipo GET * * @param string $url l'URL al quale effettuare la richiesta. */ public function get($url) { echo $this->request('get', $url); die; } /** * Effettua una richiesta di tipo POST * * @param string $url l'URL al quale effettuare la richiesta. * @param array $options i parametri da passare tramite POST. */ public function post($url, $options = []) { echo $this->request('post', $url, $options); die; } private function request($type, $url, $options = []) { $type = strtolower($type); if ($type !== 'get' && $type !== 'post') { throw new Exception('Il tipo di richiesta deve essere o "get" o "post", "' . $type . '" fornito.'); } $params = []; $url_components = parse_url($url); if (!isset($url_components['query'])) { throw new Exception ('I parametri nell\'URL devono iniziare con il punto di domanda ("?"). Es.: "?manage=ricerca".'); } parse_str($url_components['query'], $params); if (!isset($params['view']) || $params['view'] !== 'json') { $params['view'] = 'json'; } $url = $this->host . 'index.php?' . http_build_query($params); $data = [ 'auth_username' => $this->username, 'auth_secret' => $this->password ]; if (!empty($options)) { $data = array_merge($data, $options); } $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_TIMEOUT, 30); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); if ($response = curl_exec($curl)) { curl_close ($curl); return $response; } throw new Exception ('Errore nella comunicazione con "' . $url . '".'); } }
Recuperare informazioni su un listino di vendita
$api = new GerpApi('username', 'yoursecretpassword', 'https://samplehost.gerp.it/'); echo $api->post('?manage=web-shopper', [ 'id_listino' => 'codice_listino' ]);
Descrizione del tracciato
cod_articolo: codice del prodotto
variante: codice variante del prodotto
des_variante: descrizione variante del prodotto (formato, colore, ecc)
des_articolo: descrizione breve del prodotto (max 255 caratteri)
prz_vendita: prezzo di vendita del prodotto in euro
q_available_now: quantita' disponibile del prodotto
cod_um: unita' di misura
Recuperare i dati di un articolo attraverso il codice
$api = new GerpApi('username', 'yoursecretpassword', 'https://samplehost.gerp.it/'); echo $api->get('?manage=amm_art&cod_articolo=EB1');
Descrizione del tracciato
cod_articolo: codice dell'articolo
Aggiornamento collocazione articolo da codice
$api = new GerpApi('username', 'yoursecretpassword', 'https://samplehost.gerp.it/'); echo $api->post('?manage=amm_art&sub=api_update', [ 'cod_articolo' => 'EB1', 'collocazione' => 'COL123' ]);
Descrizione del tracciato
cod_articolo: codice dell' articolo da aggiornare
collocazione: codice collocazione da aggiornare
Recuperare informazioni da un driver 4.0
$api = new GerpApi('username', 'yoursecretpassword', 'https://samplehost.gerp.it/'); echo $api->post('?manage=produz&sub=call_connector_function', [ 'cod_risorsa' => 'PRINTER1', 'func' => 'fetchStatus' ]);
Recuperare storico da un driver 4.0
$api = new GerpApi('username', 'yoursecretpassword', 'https://samplehost.gerp.it/'); echo $api->post('?manage=produz&sub=call_connector_function', [ 'cod_risorsa' => 'PRINTER1', 'func' => 'fetchLogs', 'date_from' => '2020-01-01', 'date_to' => '2020-01-31' ]);
Invio parametri ad una macchina tramite driver di collegamento 4.0
$api = new GerpApi('username', 'yoursecretpassword', 'https://samplehost.gerp.it/'); echo $api->post('?manage=produz&sub=call_connector_function', [ 'cod_risorsa' => 'PRINTER1', 'func' => 'sendJob', 'job_name' => '21A0001', 'quantity' => '15000', 'format' => '10x35', 'um' => 'mm' ]);
Caricamento ordine di vendita da JSON tramite API.
$api = new GerpApi('username', 'yoursecretpassword', 'https://samplehost.gerp.it/'); echo $api->post( '?manage=uff_comm2&sub=insertSaleOrderFromJson', [ 'odv' => '{ "codice_doc_conferma": "98765", "data_doc_conferma": "24/05/2022", "id_tipo_doc": "201", "cliente": { "ragione_sociale": "Pinco Pallino S.r.l.s.", "titolo_anagrafica": "Sig.", "nome_anagrafica": "Pinco", "cognome_anagrafica": "Pallino", "indirizzo": "Via Rossi, 12", "indirizzo2": "Via Verdi, 34", "nazione": "IT", "cap": "74015", "citta": "Martina Franca", "provincia": "TA", "telefono": "0801234567", "fax": "", "cellulare": "3331234567", "email": "pinco@pallino.it", "email2": "pinco@pec.it", "cod_sdi": "PNC1PL2", "des_contatto": "", "web_cliente": "https://www.gerp.it", "note": "Note cliente", "partita_iva": "16147050815", "cod_esterno": "12345", "codice_fiscale": "PNCPLN80A01E986R", "condizioni": { "cod_pagamento": "", "cod_iban": "IT08A0300203280189532774237", "cod_iva": "", "frequenza_fatturazione": "biweekly" } }, "destinazione": { "doc_conferma": "98765", "data_doc_conferma": "24/05/2022", "des_sede": "Sede di esempio", "des_indirizzo": "Via della Sede, 56", "des_indirizzo2": "", "des_localita": "Bari", "sig_prov": "BA", "cod_cap": "70121", "cod_nazione": "IT", "tel_destinazione": "0809876543", "Note_Spedizione": "Note della spedizione", "pre_note_interne": "Note interne", "note_consegna": "Note consegna" }, "righe": { "0": { "Cod_Art": "ETI1", "Variante": 1, "Quantita": 10, "Prz_Merce": 10, "tipo_riga": "A", "des_riga": "Esempio riga", "note": "Note riga", "perc_sconto": 20, "UM": "PZ" } } }' ] );
Endpoint: ?manage=uff_comm2&sub=insertSaleOrderFromJson
Il server si aspetta una variabile di tipo POST chiamata odv
in formato JSON. Questa variabile JSON deve contenere le seguenti proprietà - i campi contrassegnati da * sono obbligatori:
codice_doc_conferma
: il numero del documento dell'ordine di vendita secondo una propria codifica
data_doc_conferma
: la data del suddetto ordine di vendita nel formato GG/MM/AAAA o GG/MM/AA
*id_tipo_doc
: identificativo del tipo di documento da caricare
cliente
: vettore contenente i dati del cliente a cui è destinato l'ordine. Se un cliente con una stessa partita IVA o codice fiscale esiste già, lo usa anziché crearne uno nuovo. Nel dettaglio:
*ragione_sociale
: ragione sociale (almeno 3 caratteri)
titolo_anagrafica
: titolo
nome_anagrafica
: nome
cognome_anagrafica
: cognome
indirizzo
: indirizzo
indirizzo2
: indirizzo secondario
nazione
: codice ISO 3166-1 alpha-2 della nazione. Se la nazione non viene fornita, il default è IT
cap
: CAP
citta
: città
provincia
: provincia
telefono
: numero di telefono
fax
: fax
cellulare
: numero di cellulare
email
: e-mail
email2
: e-mail PEC
cod_sdi
: codice SDI
web_cliente
: sito web
note
: note
*partita_iva
: partita IVA
*codice_fiscale
: codice fiscale
condizioni
: vettore contenente informazioni aggiuntive sul cliente. Nel dettaglio:
cod_iban
: codice IBAN
cod_iva
: identificativo del codice IVA come configurato su GERP (Sistema / Configurazione / Iva - codici)
cod_pagamento
: identificativo del tipo di pagamento come configurato su GERP (Sistema / Configurazione / Pagamenti)
frequenza_fatturazione
: mensile (monthly), bisettimanale (biweekly), settimanale (weekly) o giornaliera (daily)
destinazione
: vettore contenente i dati della destinazione dell'ordine di vendita. Se lasciato vuoto, si useranno i dati del cliente. Nel dettaglio:
doc_conferma
: il numero del documento dell'ordine di vendita secondo una propria codifica
data_doc_conferma
: data del suddetto ordine di vendita nel formato GG/MM/AAAA o GG/MM/AA
des_sede
: descrizione del luogo di destinazione
des_indirizzo
: indirizzo
des_indirizzo2
: indirizzo secondario
des_localita
: città
sig_prov
: provincia
cod_cap
: CAP
cod_nazione
: codice ISO 3166-1 alpha-2 della nazione
tel_destinazione
: numero di telefono
Note_Spedizione
: note della spedizione
pre_note_interne
: note interne
note_consegna
: note della consegna
righe
: vettore contenente tutte le righe da caricare nell'ordine di vendita. Ognuna di queste righe deve essere strutturata nel modo seguente:
Cod_Art
: codice dell'articolo su GERP
Variante
: numero della variante. Se la variante non viene fornita, il default è 1
Quantita
: quantità
Prz_Merce
: prezzo
UM
: unità di misura. Se l'unità di misura non viene fornita, il default è l'unità di misura impostata attualmente su GERP per l'articolo fornito.
tipo_riga
: il tipo della riga
des_riga
: descrizione
perc_sconto
: percentuale di sconto da applicare
note
: note