Show pageOld revisionsBacklinksExport to PDFODT exportBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== 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.txt Last modified: 2024/08/08 12:01by f.strappini