This is an old revision of the document!
2802 - ULL IKEA con NiceLabel
ANALISI AgentStampa
AGENTPRINTMSI
Richieste che effettua ad AGENTSTAMPA:
1) recprint -> ottiene il rec da stampare e lo salva sul database 2) printRecFromId -> ottiene il rec da stampare tramite query a etichetw 3) stampamanu -> effettua la stampa
AGENTSTAMPA (/code/cpp/module/service/palctrl/stampa/agentstampa.cpp)
L'agente si occupa di eseguire la stampa di etichette IKEA. Puo' stampare in due modalita':
- stampa automatica: richiesta dall'agente java
- stampa manuale: richiesta dall'interfaccia
Il p.to 1) e 2) sono eseguiti attraverso la tell, rispettivamente:
- request=stampaauto, p1=rec(codlotp), ritorna true se la stampa e' avvenuta correttamente
- request=stampamanu, p1=rec(codart,peso,npz,yyww,codlotp,codsup,barcode,npzfmt), ove codart=codice articolo Ikea, peso=peso del bancale, npz=numero pezzi, yyww=anno/settimana, codlotp=codice lotto bancale; il nome del rec (rec.name=path_file) e' il path completo del file del layout da stampare; nel nume va indicato il numero di etichette da stampare
Il rec da utilizzare per la stampa manuale puo' essere richiesto all'agente stesso attraverso la ask con:
- request=recprint, p1=rec(codart,peso,npz,codlotp,codsup), p2=path_del_file l'agente restituisce il rec con tutti i dati compilati
RECPRINT
if(smsg->request=="recprint"){ rv = recprint(IREC_GETVALUE(p1, "codart"), IREC_GETVALUE(p1, "codsup"), atof(IREC_GETVALUE(p1, "pesotot")), atof(IREC_GETVALUE(p1, "peso")), atoi(IREC_GETVALUE(p1, "npz")), IREC_GETVALUE(p1, "codlotp"), p2->value(), atoi(IREC_GETVALUE(p1, "xinterfa")), atoi(IREC_GETVALUE(p1, "yinterfa")), atof(IREC_GETVALUE(p1, "stackcap"))); }
P1(REC): codart, codsup, pesotot, peso, npz, codlotp, xinterfa, yinterfa, stackcap
P2 (String): layout
- Ottiene il numeratore attraverso una getnume della tabella 'ikeapiano' sul campo 'codice' per ottenere un codice per il PIANO del pallet
- Prepara un REC con i seguenti campi:
- 0, "codart"
- 1, "peso"
- 2, "npzfmt"
- 3, "yyww"
- 4, "codlotp"
- 5, "codsup"
- 6, "barcode"
- 7, "npz"
- 8, "idetic"
- 9, "layout"
- 10, "tm"
- 11, "pesotot"
- 12, "xinterfa"
- 13, "yinterfa"
- 14, "stackcap"
- Popola il REC con i valori ottenuti da parametro. Aggiunge 'npzfmt' con il npz formattato a 3 cifre e 'yyww' basata sulla data odierna
- Elabora il codice del piano nel seguente modo:
int totlen=17; int bcforlen=m_bcforinfo->size(); char fmt[51]; sprintf(fmt, "%%0%dd", totlen-bcforlen); sprintf(copas, fmt, copa);
- "identic" → numeratore ottenuto nel punto 1
- Prepara il codice a barre in questo modo:
sprintf(s, "%s%s", m_bcforinfo->value(), copas); dove 'm_bcforinfo' -> dato fisso del fornitore per il codice a barre EAN128
- !!! FA UNA DOWNLOAD DEL REC SUL DATABASE !!!
- Imposta il nome del REC con il valore del 'layout'
- Ritorna il REC creato
RECPRINTFROMID
f(smsg→request=="recprintfromid"){
rv = recprintfromid(atoi(IREC_GETVALUE(p1, "idetic")), p2->value()); }
P1(REC): identic P2 (String): layout
- Mi estraggo dal database una riga di etichetw tramite il codice di idetic ricevuto nel p1
- Imposta il nome del REC con il layout ricevuto nel p2
- Ritorna il REC creato