cli:franke:2802-ull_ikea_con_nicelab

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
cli:franke:2802-ull_ikea_con_nicelab [2024/07/12 09:32]
f.strappini
cli:franke:2802-ull_ikea_con_nicelab [2024/08/08 12:01] (current)
f.strappini [TEST DEL 08/08/2024]
Line 1: Line 1:
 ====== 2802 - ULL IKEA con NiceLabel ====== ====== 2802 - ULL IKEA con NiceLabel ======
  
-Progetto originale: faber/comm-1110?s[]=messersì+[[..:faber:comm-1110|Link al progetto originale Messersì]] 
 + 
 +==== 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 ==== 
 +<code cpp> 
 + 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"))); 
 +
 +</code> 
 + 
 +**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: <code cpp> 
 +    char copas[51]; 
 +    int totlen=17; 
 +    int bcforlen=m_bcforinfo->size(); 
 +    char fmt[51]; 
 +    sprintf(fmt, "%%0%dd", totlen-bcforlen); 
 +    sprintf(copas, fmt, copa); </code> 
 +  - "identic" -> numeratore ottenuto nel punto 1 
 +  - Prepara il codice a barre in questo modo:<code cpp> 
 +    sprintf(s, "%s%s", m_bcforinfo->value(), copas); 
 + 
 +    dove 'm_bcforinfo' -> dato fisso del fornitore per il codice a barre EAN128 </code> 
 +  - !!! FA UNA DOWNLOAD DEL REC SUL **DATABASE** !!! 
 +  - Imposta il nome del REC con il valore del 'layout' 
 +  - Ritorna il REC creato 
 + 
 +==== RECPRINTFROMID ==== 
 +<code cpp> if(smsg->request=="recprintfromid"){ 
 + rv = recprintfromid(atoi(IREC_GETVALUE(p1, "idetic")), p2->value()); 
 +    } </code> 
 + 
 +**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 
 + 
 +==== STAMPAMANU ==== 
 +<code cpp> 
 +if(smsg->request=="stampamanu"){ 
 + rv = excprint(p1, smsg->nume); 
 +
 +</code> 
 + 
 +Presente un #define che distingue le funzionalità della funzione excprint 
 + 
 +**IFDEF PRINT_CODESOFT**: 
 +  - Connesione con agentRemoteCS per stampa con codesoft 
 +  - Richiesta del REC per la stampa all'agentRemoteCS 
 +  - Popolazione del REC: 
 +      - filename = nome del REC p1 
 +      - codedb = p1["identic"] 
 +      - qtalotti nume ricevuto 
 +      - qtacopie = "1" FISSO 
 +      - printer = parametro agente m_printer 
 +  - Richiesta di stampa inviata ad agentRemoteCS con request "print" passando il REC creato come parametro 
 +  - Impostato un wait di 250 ms 
 +  - Ritorna un booleano in base alla riuscita o meno della stampa 
 + 
 +**ELSE**: 
 +  - Apertura\scrittura del file con il nome del file uguale al nome del REC ricevuto nel p1 
 +  - Determina la dimensione del file, aggiunge 512 byte per eventuali sostituzioni, e alloca un buffer per contenere i dati del file. 
 +  - Legge il contenuto del file nel buffer e chiude il file. 
 +  - Preparazione dei tag (5 tag) 
 +  - Crea un oggetto CTag con un numero di tag pari al numero di campi di rp meno 2. 
 +  - Imposta i tag e i valori corrispondenti ottenuti dai campi di rp. 
 +  - Apre il file **"/code/etichetta.txt"** e scrive il contenuto del buffer su questo file 
 +  - Crea un oggetto IConnSock e tenta di connettersi a un socket utilizzando m_port e m_ipaddr 
 +  - Se la connessione ha successo, invia il contenuto del buffer n (nume ricevuto) volte, attendendo 200 millisecondi tra ogni invio. 
 +  - Libera la memoria del buffer e dell'oggetto CTag. 
 +  - Restituisce true se almeno un invio è avvenuto con successo, altrimenti false. 
 + 
 +==== TEST DEL 08/08/2024 ==== 
 +  * Nuovo Server: FFO94G => 10.205.1.94 
 +  * Vecchio Server (pallettizzatori): FFI78G => 10.205.1.78 
 + 
 +=== IAF === 
 +  * ✅ Configurare su Nicelabel la stampante dello stampa e applica (vedere marca e modello da codesoft), nome stampante **PE** 
 +  * ✅ Verificare che /mnt/nicelabel sia montata 
 +  * Avviare il serizio /etc/next/xnet_agents_stampa.xml su FFO94G 
 +  * Avviare il serizio /etc/next/xnet_agents_nicelabel.xml su FFO94G 
 +  * Stoppare il servizio /etc/next/xnet_agents_packmsi.xml su FFI78G 
 +  * Avviare il serizio /etc/next/xnet_agents_packmsi.xml su FFO94G 
 +  * Configurare le piattaforme su monit 
 + 
 +=== GUI === 
 +  * Sostituire pagina di ristampa su PC in magazzino con (NL=1 abilita la stampa via NiceLabel) 
 +https://ffo94g/isw/webapp/faber/trace/main/mini/ristampa?limit=20&offset=0&NL=1&user=d6e4a9b6646c62fc48baa6dd6150d1f7 
 +  * Cambiare /www/webapp/faber/kiosk/redirect/index.php per puntare su FFO94G 
 + 
 +=== Appunti === 
 +<code> 
 +PAGINA DI STAMPA: 
 +https://ffo94g/isw/webapp/faber/trace/main/mini/ristampa?limit=20&offset=0&NL=1 
 + 
 +Accesso server VECCHIO pallettizzatori: 
 +ssh next@10.205.1.78 
 + 
 +Accesso server NUOVO: 
 +Server nuovo da utilizzare: ffo94g 
 +ssh nextop@10.205.1.94 
 +pwd: 
 +-Ujn-sjXm9mn 
 + 
 +Cartella condivisa: 
 +/mnt/nicelabel 
 + 
 +Comando di mount: 
 +sudo mount.cifs '\\ffo128g\fromNext' /tmp/mnttest -o 'user=ffo-next@faberspa.com,pass=mH?JQtY!Kz%u,uid=1001' 
 + 
 +La cartella condivisa da montare si trova in 
 +FFO128G (10.205.1.128) 
 +\\ffo128g\fromNext 
 + 
 +PERCORSO XML NICELABEL: 
 +xnetagents /etc/next/xnet_agents_nicelabel.xml 
 + 
 +COMANDO OSSERVA FOLDER 
 +watch ls -l /mnt/nicelabel 
 + 
 +------------------------------------------------------- INFO FILE ------------------------------------------------------------------------------------------------ 
 +lbl_printer -> 
 +        PE = Invio stampa al Print Engine della P/A Arca 
 +        DP = Invio stampa sulla Desktop Printer 
 + 
 +lbl_name        lbl_printer     lbl_quantity    idetic  codart  peso    npzfmt  yyww    yymmdd  barcode npz     xinterfa        yinterfa        stackcap        supplier 
 +</code>
  • cli/franke/2802-ull_ikea_con_nicelab.1720769534.txt.gz
  • Last modified: 2024/07/12 09:32
  • by f.strappini