Vai al contenuto

COGP99 - Stampa Bar Code Imballi

Scopo

Stampa una pagina grafica per ogni merce selezionata contenente codice prodotto, descrizione, codice a barre EAN dell'imballo e codice a barre del reso (EAN preceduto da ".R"). La stampa e' generata in linguaggio PRESCRIBE per stampanti compatibili.

Posizioni menu

  • Magazzino > Archivi & Tabelle > Stampe > Merci > Bar code imballi

File e Tabelle

File Copybook Utilizzo
FEURTAB cogfiles.cpy Tabella file di sistema
COGMERCI cogp99.fd (cogmerci.cpy) Anagrafica merci, scansione e lettura EAN imballo (mer-ean)
FLSTA flsta.cpy File di stampa

cogmerci e' dichiarato is external in cogp99.fd (gestione tramite COGU16).

Copybook

  • feurtab.fd, cogp99.select, flsta.fd, cogp99.fd, cogp99.wrk, cogp99-01.scr
  • flsta.cpy, cogfiles.cpy
  • wstato.cpy, wgrave.cpy, wopenf.cpy, wnscr.cpy
  • utils54.cpy, utilu16.cpy, utils50.cpy, utils68.cpy, cogazien.cpy
  • wcont.cpy, wcont1.cpy
  • stato.cpy, stato1.cpy, grave.cpy, winmsg.cpy, opengen.cpy, mmmask.cpy, cogp99.prc, cogp99.decla

CALL

Programma Scopo
COGS54 Gestione parametri di stampa (richiesta stampante, formato, anteprima); s54-emu = 'PRESCRIBE'
COGS68W Composizione stringa descrittiva merce (operazione "String")
COGS50 (riferimento commentato/usato altrove) Lettura merce
COGU16W Subroutine di scansione anagrafica merci con range e ordinamento

Logica di elaborazione

Parametri input (tab-maschera)

  • tm-ord-mer: ordinamento (C=Codice, D=Descrizione)
  • tm-da-merce (gru+sot+cod) e tm-da-merce-des: range di partenza
  • tm-a-merce (gru+sot+cod) e tm-a-merce-des: range di arrivo (k-merce-null = fino alla fine, mappato a high-values lato U16)

Flusso

  1. Inizializzazione (a000): apre file, carica azienda, prepara controlli S68 per i due campi merce, attiva F3/F8/F9.
  2. Maschera (a-tm-ord-mer, a-tm-da-merce, a-tm-a-merce): accept dei parametri, validati da x-controlla-tm-*.
  3. Conferma (a-richiesta-conferma, a-cogs54): chiama COGS54 con s54-emu='PRESCRIBE', posizione 11/20, larghezza 132.
  4. Elaborazione (st-10 -> a1-10-loop):
  5. Set estremi U16 con u16-fl-sel = tm-ord-mer (C/D), u16-cm-da/dm-da, u16-cm-a/dm-a.
  6. Loop Leggi su U16 (perform z-u16 con u16-ope = "Leggi").
  7. Salta merci con mer-vuoto not = "I".
  8. Salta EAN convenzionale mer-chia = '999999999'.
  9. Per ogni merce: chiama COGS68W con operazione "String" per ottenere descrizione formattata di 56 caratteri (in s68-o-string).
  10. Output PRESCRIBE: per ogni merce scrive in riga comandi MAP, FSET, TEXT, BARC:
  11. s31-set-test-map: posiziona il testo (verticale/orizzontale in w-testo-v-pos / w-testo-h-pos).
  12. s31-set-barc-map: scrive due bar code Code 24 (linguaggio PRESCRIBE BARC 24,N,...):
    • primo bar code = mer-ean;
    • secondo bar code = .R + mer-ean (campo w-reso-ean), 5,5 unita' sotto il primo.
  13. Se la descrizione (app-des/app-des1) e' lunga, manda a capo la seconda parte.
  14. Salto pagina: quando ct > (s54-stm-lin - 4) scrive before page e ristampa intestazione (intesta).
  15. Fine: dopo l'ultima merce scrive !R! RES; EXIT; per resettare la stampante PRESCRIBE.

Posizionamento grafico

  • Unita' di misura: cm (UNIT C), font 12cpi (SPSZ 7; FTMD 15), margini STM 0; SLM 0; SBM 31; SLM 21.
  • Posizione testo iniziale: H=2,9 V=1; bar code: H=2,5 V=9,2.
  • Le coordinate vengono convertite da formato italiano (,) a inglese (.) tramite inspect ... replacing all ',' by '.' perche' PRESCRIBE usa il punto decimale.

Note tecniche

  • Programma GUI con screen cogp99-01.scr.
  • L'output non e' una stampa testuale ma una sequenza di comandi PRESCRIBE che vengono inviati alla stampante.
  • COGU16W gestisce l'iterazione su COGMERCI (file external nella .fd) con l'ordinamento richiesto.
  • Larghezza linea stampa: 132 caratteri (impostata su S54).