cli:franke:2802-ull_ikea_con_nicelab

Differences

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

Link to this comparison view

Next revision
Previous revision
cli:franke:2802-ull_ikea_con_nicelab [2024/07/12 09:30]
f.strappini created
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 ======
  
 +[[..: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.1720769408.txt.gz
  • Last modified: 2024/07/12 09:30
  • by f.strappini