Vai al contenuto

COGP20 - Stampa Etichette Merce

Intestazione

Campo Valore
Programma COGP20
Titolo Stampa Etichette Merce (Etichette con Bar Code)
Autore Andrea Parmeggiani - Eurosystem
Conversione Windows Daniele
Posizione menu Magazzino > Archivi & Tabelle > Stampe > Merci > Etichette con Bar Code

Scopo e logica generale

COGP20 stampa etichette con bar code per le merci. Supporta cinque tipi di stampante con protocolli differenti e sei modalità di estrazione dei dati. Il programma può essere lanciato direttamente dall'utente oppure chiamato da altri programmi (COGM85, COGO55, COGO16, COGV14, COGV94, COGV06NO) tramite interfaccia standard a linkage.

Il flusso principale è:

  1. Inizializzazione: lettura configurazione (RNEWCONF, gruppo PRNTCOGP20), dati azienda, divisa, lingua.
  2. Presentazione maschera: l'utente seleziona bar code, tipo estrazione, numero copie, ordinamento, filtri merce/documento/ordine/matricole, data da stampare e posizione di partenza per KYOCERA.
  3. Selezione stampante: COGS54 gestisce la scelta della stampante fisica.
  4. Caricamento modello (opzionale): se configurato usa-file-modello=S, carica da file esterno il template per le etichette (via COGPA3 e COPIAF).
  5. Estrazione dati: in base a tm-est itera su merci, documenti, ordini, consegne o matricole.
  6. Stampa etichette: per ogni merce trovata esegue la procedura s-stampa che delega a s-stampa-eti, la quale seleziona il percorso stampante o il percorso template.
  7. Chiusura: COGS54 post-stampa, chiusura file, uscita.

Tipi di stampante (tm-cfg-prn)

Codice Protocollo Routine di stampa Note
A Laser PCL / Bull s1-type-a Comandi ESC PCL, bar code EAN via sequenze binarie
B Zebra ZPL s2-type-b ZPL2 (^XA...^XZ); variante A=etichetta grande, B=piccola con/senza matricola
C KYOCERA Prescribe s3-type-c Comandi PRESCRIBE (BARC, TEXT, MAP, PAGE); gestione multi-etichette per foglio A4
D Eltron/Zebra EPL2 s4-type-d EPL2 (B..., A..., P...); varianti per-azienda (es. Ferranti, Eurosystem, Foti, Blutekna, Torricelli, MDA)
E OPOS / Clever-Alfa TSPL s5-type-e Linguaggio TSPL (BARCODE, TEXT, PRINT)

Modalità di estrazione (tm-est)

Valore Descrizione Routine File letti
M Tutte le merci (intervallo gru/sot/cod) a-merci via COGU16W COGMERCI
X Singola merce (passata da chiamante) singola-merce COGMERCI
V Elenco merci selezionate manualmente e-merci COGMERCI
D Da documento di magazzino (bolla) b-docum COGMOMAG, COGMERCI, COGMATRI
S Da intervallo matricole d-matric COGMATRI, COGMERCI
O Da ordine o da consegna c-ordinec1-ordine/c2-cons COGRIGOR/COGCONOR, COGMERCI

Parametri di configurazione (gruppo PRNTCOGP20)

Letti tramite RNEWCONF nella procedura x99-src-cfg. Le chiavi sono in parte in euta-c017-* (tabella COGTABEL tipo C, codice 017) e in parte in altri gruppi.

Chiave configurazione Campo interno Descrizione
PRNTCOGP20 / euta-c017-prn tm-cfg-prn Tipo stampante: A, B, C, D, E
PRNTCOGP20 / euta-c017-bar tm-cfg-bar Tipo bar code stampato (es. A=EAN grande, B=piccolo)
PRNTCOGP20 / euta-c017-n-col tm-cfg-n-col Numero colonne etichette per riga (1 o 2, usato su Zebra)
PRNTCOGP20 / euta-c017-pre tm-cfg-pre Stampa prezzo: S=sì con IVA, I=codice interno, A=codice avanzato, F=codice fornitore
PRNTCOGP20 / euta-c017-lis2 tm-cfg-lis Numero listino da usare per il prezzo
PRNTCOGP20 / euta-c017-frm tm-cfg-frm Formato foglio KYOCERA: A, B, C (determina dimensioni e posizionamento etichette)
PRNTCOGP20 / euta-c017-ric-cmf tm-cfg-ric-cmf Se S, ricerca codice merce fornitore e lo pre-imposta sulla maschera
PRNTCOGP20 / euta-c017-una-copia tm-cfg-una-copia Se S, forza sempre 1 copia indipendentemente dalla quantità documento
PRNTCOGP20 / euta-c017-solo-mat tm-cfg-solo-mat Se S, estrae solo merci con gestione matricole (mer-fl-sn ≠ N)
PRNTCOGP20 / euta-c017-forn-p tm-cfg-forn-p Se P, usa il codice del fornitore preferenziale sulla merce
PRNTCOGP20 / nome-file-logo tm-cfg-nome-file-logo Nome file logo da includere nell'etichetta (EPL2/MDA)
locazioni / uso-box tm-cfg-uso-box Se M, filtra le locazioni in base al magazzino della postazione
prntcogp20 / usa-file-modello tm-cfg-usa-file-modello Se S, usa un file modello esterno con tag invece dei percorsi hardcoded

Tag del modello (quando usa-file-modello=S)

Il file modello è un file testo con tag sostituiti a runtime dalla procedura s-stampa-fill-valori tramite GESSTR.

Tag Contenuto
<MER-BARCODE> Serial number (fornitore o interno) oppure EAN
<MER-SN> Serial number fornitore (w-snf)
<MER-MAT> Matricola interna (w-mtr o w-mtr2)
<MER-EAN> Codice EAN a 13 cifre
<MER-MI> Codice merce interno (gru/sot/cod)
<MER-CMA> Codice merce avanzato (COGRACMC)
<MER-CMF> Codice merce fornitore (primo fornitore da COGMERFO)
<MER-DES> Descrizione merce completa
<MER-DES1> Prima parte descrizione (max 26 caratteri)
<MER-DES2> Seconda parte descrizione (max 26 caratteri)
<MER-DAG> Descrizione aggiuntiva merce completa (256 car.)
<MER-DAG1> Prima riga descrizione aggiuntiva (40 car.)
<MER-DAG2> Seconda riga descrizione aggiuntiva (40 car.)
<MER-DAG1-nnn> Prima riga descrizione aggiuntiva a lunghezza variabile (nnn = numero caratteri, max 75)
<MER-DAG2-nnn> Seconda riga descrizione aggiuntiva a lunghezza variabile
<MER-DAG3-nnn> Terza riga descrizione aggiuntiva a lunghezza variabile
<MER-BOX> Box locazione magazzino
<MER-CORSIA> Corsia locazione magazzino
<MER-COLONNA> Colonna locazione magazzino
<MER-PIANO> Piano locazione magazzino
<LIST-CFG-SI-IVA> Prezzo di listino con IVA inclusa
<LIST-CFG-NO-IVA> Prezzo di listino senza IVA
<N-COPIE> Numero copie (se presente nel modello, disabilita il loop copie)

Il programma gestisce due modelli distinti: - Modello per merci senza serial number (tipo P20MER, cercato via COGPA3 → COGMDSTS) - Modello per merci con serial number (tipo P20SN, cercato via COGPA3 → COGMDSTS)


File e tabelle acceduti

File Alias FD Modalità Uso
COGTABEL cogtabel Lettura Tabelle di sistema (tipo C cod.017 per configurazione, tipo 67 per aliquote IVA)
COGMERCI cogmerci Lettura Anagrafica merci (descrizione, EAN, flag serial, flag etichetta, confezione)
COGMAGAZ cogmagaz Lettura Anagrafica magazzini (validazione magazzino documento)
COGTESBO cogtesbo Lettura Testata documenti di magazzino (validazione doc.)
COGMOMAG cogmomag Lettura Righe movimenti magazzino (estrazione per documento)
COGTESOR cogtesor Lettura Testata ordini (validazione ordine)
COGRIGOR cogrigor Lettura Righe ordini (estrazione per ordine)
COGLGMER coglgmer Lettura Locazioni magazzino merce (corsia/colonna/piano/box)
COGMERFO cogmerfo Lettura Fornitori della merce (codice merce fornitore)
COGDESAG cogdesag Lettura Descrizioni aggiuntive merce
COGCONOR cogconor Lettura Righe consegne ordini (estrazione per consegna)
COGCNDCF cogcndcf Lettura Condizioni cliente/fornitore (fornitore preferenziale)
COGMATRI cogmatri Lettura Matricole/serial number (estrazione per matricola o da documento)
COGRACMC cogracmc Lettura Codici merce avanzati/alternativi
COGMDSTS cogmdsts Lettura/Scrittura Modelli di stampa (ricerca modelli P20MER e P20SN)
PRNTPOST prntpost Lettura Postazioni stampa (lettura magazzino postazione)
FEURTAB feurtab Lettura Tabella generica Eurosystem
FLSTA flsta Output File di output stampante (file binario sequenziale)
PCLINP pclinp Input File temporaneo per caricamento modello da disco

Programmi CALL

Programma Scopo
RNEWCONF Lettura configurazione da COGCNF (gruppo PRNTCOGP20)
COGS54 Gestione selezione stampante (prima e dopo la stampa)
COGS01 Lettura prezzo da listino
COGU05 Selezione multipla merci (modalità V)
COGU10W Editing numeri/importi (prezzi)
COGU16W Ricerca/navigazione merci con ordinamento
GESSTR Manipolazione stringhe: REPLACE (tag), SCOMPONI-NOTE, COMPONI-NOTE, FIND
COGPA3 Ricerca modello di stampa (tipi P20MER e P20SN) in COGMDSTS
COPIAF Copia file modello dal client al server (tmp)
PUTLOGO Caricamento logo su stampante EPL2
WIN028.COB Selezione consegna da ordine
C$JUSTIFY Giustificazione stringa a sinistra
C$FILEINFO Lettura dimensione file per caricamento modello
COGS60W Gestione combo-box (bar code, tipo estrazione, ordinamento, tipo ordine)

Copybook inclusi

FILE-CONTROL

Copybook Contenuto
feurtab.fd SELECT per FEURTAB
cogp20.select SELECT per tutti i file dati (generato da Screen Designer)
flsta.fd SELECT per FLSTA (stampante)

FILE SECTION / FD

Copybook Contenuto
cogfiles.cpy Record FD per FEURTAB
cogp20.fd FD per tutti i file dati (generato da Screen Designer)
flsta.cpy Record FD per FLSTA

WORKING-STORAGE

Copybook Contenuto
cogp20.wrk Working storage generata da Screen Designer
k-personal.cpy Costanti identificazione azienda (az-personal)
k-u10.cpy Costanti per COGU10W
wstato.cpy Variabili stato I/O
wgrave.cpy Gestione errori gravi
wopenf.cpy Gestione apertura file
wnscr.cpy Navigazione screen
utillogo.cpy Struttura per PUTLOGO
utils21.cpy Struttura util-s21
utils22.cpy Struttura util-s22
utils54.cpy Struttura util-s54 (COGS54)
utilu05.cpy Struttura util-u05 (COGU05)
UTILU10.CPY Struttura util-u10 (COGU10W)
UTILU16.CPY Struttura util-u16 (COGU16W)
UTILS50.CPY Struttura util-s50
utils68.cpy Struttura util-s68 (ricerca merce)
utilw28.cpy Struttura util-w28 (WIN028.COB)
utilw36.cpy Struttura util-w36 (calendario magazzino)
utilcogpa3.cpy Struttura util-cogpa3 (COGPA3)
l-copiaf.cpy Struttura link-copiaf (COPIAF)
utilgesstr.cpy Struttura util-gesstr (GESSTR)
utils52.cpy Struttura util-s52 (anno/calendario)
cogazien.cpy Dati azienda
utilncnf.cpy Struttura util-ncnf (RNEWCONF)

LINKAGE SECTION

Copybook Contenuto
wcont.cpy Area stringhe condivisa
utilp20.cpy Parametri in ingresso (p20-merce, p20-mtr-da/a, p20-in-call, p20-in-caller, p20-documento)
utils01.cpy Struttura util-s01 (COGS01)
u-copiaf.cpy Struttura chiamante per COPIAF
wcont1.cpy Area condivisa estesa

SCREEN SECTION

Copybook Contenuto
cogp20-01.scr Definizione maschera principale

PROCEDURE DIVISION (inline)

Copybook Contenuto
cogp20.decla Dichiarativi I/O error e USE per FLSTA
stato.cpy Gestione stati file
stato1.cpy Gestione stati file estesa
grave.cpy Errori gravi
winmsg.cpy Messaggi a finestra
opengen.cpy Apertura file generica
mmmask.cpy Dimensioni maschera
SENDW36.CPY Invio W36 (calendario magazzino)
cogp20.prc Procedure generate da Screen Designer (combo, validazioni campo)
GetDCont.cpy Lettura divisa contabile
cogmatri.k03 Chiave 3 di COGMATRI (per ricerca per documento+merce)
cogracmc.k02 Chiave 2 di COGRACMC

Paragrafi principali

Paragrafo Funzione
a000 Inizializzazione: lettura parametri chiamata, configurazione, apertura file, maschera
a4 Reset maschera per nuovo ciclo di accept
a-tm-bar ... a-tm-kyo-h-cur Accept dei singoli campi della maschera con validazione campo per campo
a-richiesta-conferma Validazione finale di tutti i campi prima della stampa
a-cogs54 Selezione stampante via COGS54; avvia elaborazione quando confermata
carica-modelli Carica in memoria i modelli da file esterno (mer e sn)
a-merci / a-10-loop Iterazione su tutte le merci via COGU16W
b-docum / b-10-loop Iterazione righe documento COGMOMAG
c-ordine / c1-ordine / c2-cons Iterazione righe ordine (COGRIGOR) o righe consegna (COGCONOR)
d-matric / d-10-loop Iterazione matricole COGMATRI con filtro su intervallo e documento
e-merci Iterazione su lista merci selezionate da COGU05
singola-merce Stampa per singola merce passata dal chiamante
s-stampa Punto di ingresso stampa per singola merce: cerca listino, legge COGMERCI, decide se stampare
s-stampa-eti Dispatcher: percorso modello o percorso stampante (A/B/C/D/E)
stampa-da-modello-sub Per modalità modello: sceglie fra stampa con o senza serial
stampa-etichetta-modello-sn Itera sulle matricole del documento per la merce corrente
stampa-etichetta-modello-w-copie Loop copie: chiama download-buffer
s-stampa-fill-valori Sostituisce tutti i tag nel buffer modello con i valori reali
s1-type-a Stampa su Bull/laser PCL
s2-type-b Stampa su Zebra ZPL (dispatcher A/B)
s21-tb-a Zebra etichetta grande con EAN
s22-tb-b Zebra etichetta piccola (dispatcher con/senza matricola)
s22-tb-b1-zebra Zebra piccola con matricola
s22-tb-b2-zebra Zebra piccola senza matricola (EAN)
s221-sn / s222-sn Lettura serial number da COGMATRI per Zebra
s3-type-c Stampa su KYOCERA Prescribe: gestione griglia multi-etichette
s4-type-d Stampa su Eltron EPL2: dispatcher con/senza matricola e per azienda
s4-td-d1-epl2 EPL2 etichetta con matricola (standard)
s4-td-d1-epl2-mda / -es / -fo / -ff / -bt / -ti Varianti EPL2 per aziende specifiche
s4-td-d2-epl2 EPL2 etichetta senza matricola (EAN)
s5-type-e Stampa su OPOS/Clever-Alfa TSPL
s31-set-map Genera comando MAP per posizionamento KYOCERA
s32-src-cmf Ricerca codice merce fornitore da COGMERFO
s32-src-cma Ricerca codice merce avanzato da COGRACMC
s32_des_mf Ricerca descrizione merce fornitore da COGMERFO
s34-dividi-descr Divide descrizione in due righe rispettando le parole
search-dag-merce Legge descrizioni aggiuntive da COGDESAG e le compone in stringa unica
search-prima-locazione Legge prima locazione magazzino da COGLGMER
x1-set-printer / x11-set-a / x12-set-b / x13-set-c Invio sequenze inizializzazione stampante
x2-end-print / x21-end-a ... x24-end-d Invio sequenze chiusura stampante
x6-conv-asc Conversione BCD→ASCII per comandi Bull PCL
x7-acc-start Inizializza posizione di partenza KYOCERA da maschera
x99-src-cfg Lettura configurazione da RNEWCONF
download-buffer Scarica il buffer modello sulla stampante a blocchi di 2 byte
load-modello-into-buffer / load-file-from-disk Carica file modello dal disco nel buffer in-memory
call-cogpa3 Chiama COGPA3 per ottenere nome file modello (P20MER e P20SN)
m-cerca-cogmdsts Crea record in COGMDSTS se non esiste il modello
m-cerca-mer-dagnnn Cerca nel modello la presenza di tag <MER-DAG1-nnn> per descrizioni a lunghezza variabile
fine / z-chiudi Chiusura file, cancel moduli, uscita programma

Regole di business

  • Selezione etichetta con bar code: la merce viene stampata solo se tm-bar = 'T' (forza sempre) oppure se mer-fl-bar = 'S' (abilitata a livello merce).
  • Merci con etichetta a confezione: se mer-fl-eti = 'C', il numero di copie è calcolato come QTA / MER-CONFEZIONE (arrotondato per eccesso).
  • Esclusione merci senza serial: se tm-cfg-solo-mat = 'S', vengono saltate le merci con mer-fl-sn = 'N'.
  • Esclusione serial da fornitore: per l'estrazione da documento, se mer-fl-sn = 'T' il serial number viene stampato dal fornitore; il campo viene comunque incluso se esplicitamente richiesto dalla modalità Matricole (S).
  • Una sola copia: se tm-cfg-una-copia = 'S', il numero copie viene forzato a 1 indipendentemente dalla quantità del documento/ordine.
  • Bar code con prezzo: per KYOCERA e EPL2/MDA, se mer-fl-iq = 'I' e il campo EAN 7-12 è zero, vengono calcolati automaticamente i digit del prezzo nel codice EAN e il check digit.
  • Fornitore preferenziale: se tm-cfg-forn-p = 'P', il codice merce fornitore usato è quello del fornitore marcato come preferenziale in COGCNDCF.
  • Modalità ordine: se l'ordine ha tor-valuni = 'C', non vengono cercate consegne associate; altrimenti viene mostrata la popup WIN028.COB per la selezione della consegna.
  • Modello esterno: quando tm-cfg-usa-file-modello = 'S', l'output verso la stampante è in formato binario (record 2 byte); altrimenti testo normale (78 caratteri). Il file modello viene copiato dal client al tmp server via COPIAF prima di essere caricato in memoria.
  • Locazione per magazzino: se tm-cfg-uso-box = 'M', la locazione dell'etichetta mostra solo quella relativa al magazzino della postazione operatore (letto da PRNTPOST).
  • Chiamata esterna: se il programma riceve p20-in-call = 'COGP20-CALLED', imposta automaticamente i parametri in base al chiamante (COGM85=estrazione da matricola entrata, COGO55=da ordine, COGO16=da consegna, COGV14=da documento, COGV94=da matricola uscita, COGV06NO=singola merce) senza mostrare i campi corrispondenti.