USE 33
JOIN 34 INTO CODNUM==CODNUM ANNO==ANNO PROVV==PROVV NDOC==NDOC
JOIN 16 TO 33 INTO TIPOCF==TIPOCF CODCF==CODCF CODIND==CODINDSP
JOIN 47 TO 34 INTO CODART==CODART
JOIN %CPG TO 33 ALIAS 201 INTO CODTAB==CODPAG
JOIN %AGE TO 33 ALIAS 202 INTO CODTAB==CODAG
JOIN %POR TO 33 ALIAS 203 INTO CODTAB==CODPORTO
JOIN %BAN TO 33 ALIAS 204 INTO CODTAB==CODABIA+CODCABA
JOIN %VET TO 33 ALIAS 205 INTO CODTAB==CODVETT1
JOIN %ASP TO 33 ALIAS 206 INTO CODTAB==ASPBENI1
JOIN %CTR TO 33 ALIAS 207 INTO CODTAB==CAUSTRASP
JOIN 13 TO 205@ ALIAS 208 INTO COM==S9

END
DESCRIPTION
BEGIN
  33->* "Documenti di vendita"
  34->* "Righe documenti di vendita"
  16->* "Indirizzi di spedizione (destinazione)"
  47->* "Anagrafica magazzino"
  201@->* "Tabella condizioni di pagamento"
  202@->* "Tabella agenti"
  203@->* "Tabella porto"
  204@->* "Tabella banche"
  205@->* "Tabella vettori"
  206@->* "Tabella aspetto beni"
  207@->* "Tabella causali di trasporto"
  208@->* "Comuni"
END

GENERAL
BEGIN
  OFFSET 0 0
  FONT "Courier New"
  SIZE 12
  MODULE "BUFFETTI_BOLLA_01"
  PRI_DECIMALS 0 3
  QTA_DECIMALS 3 3
  IMP_DECIMALS 0 3
  EXCLUDE ","
END


SECTION HEADER ODD 33

STRING 1 36 1
BEGIN
 KEY "nome ditta"
 PROMPT 5 6 ""
 MESSAGE _DITTA,!RAGSOC
END

STRING 2 36 1
BEGIN
 KEY "indirizzo ditta"
 PROMPT 5 7 ""
 MESSAGE _DITTA,!IND
END

STRING 3 5 1
BEGIN
 KEY "cap ditta"
 PROMPT 5 8 ""
 MESSAGE _DITTA,!CAP
END

STRING 4 30 1
BEGIN
 KEY "comune ditta"
 PROMPT 12 8 ""
 MESSAGE _DITTA,!COM
END

STRING 5 5 1
BEGIN
 KEY "scritta P.IVA"
 PROMPT 5 9 "P.IVA"
END

STRING 6 16 1
BEGIN
 KEY "partita iva ditta"
 PROMPT 11 9 ""
 MESSAGE _DITTA,!IVA
END

STRING 7 9 1
BEGIN
 KEY "scritta COD.FISC."
 PROMPT 5 10 "COD.FISC."
END

STRING 8 16 1
BEGIN
 KEY "codice fiscale ditta"
 PROMPT 15 10 ""
 MESSAGE _DITTA,!CF
END

STRING 9 35 2
BEGIN
 KEY "destinatario, ditta"
 PROMPT 44 16 ""
 MESSAGE _CLIENTE,!RAGSOC
END

STRING 10 35 2
BEGIN
 KEY "destinatario, indirizzo con numero civico"
 PROMPT 44 18 ""
 MESSAGE _CLIENTE,!INDNUM
END

STRING 11 5 1
BEGIN
 KEY "destinatario, cap"
 PROMPT 44 20 ""
 MESSAGE _CLIENTE,!CAP
END

STRING 12 30 2
BEGIN
 KEY "destinatario, comune"
 PROMPT 50 20 ""
 MESSAGE _CLIENTE,!COM
END

STRING 13 2 
BEGIN
 KEY "destinatario, provincia"
 PROMPT 72 21 ""
 MESSAGE _CLIENTE,!PROV
END

DATE 14 8 1
BEGIN
 KEY "data bolla"
 PROMPT 60 25 ""
 FIELD 33->DATADOC
 FORMAT "1442-"
END

NUMBER 15 7
BEGIN
 KEY "numero bolla"
 PROMPT 71 25 ""
 FIELD NDOC
END

STRING 16 30 2
BEGIN
 KEY "destinazione, indirizzo"
 PROMPT 5 16 ""
 FIELD 16->INDIR
END

STRING 17 5 1 
BEGIN
 KEY "destinazione, cap"
 PROMPT 5 18 ""
 FIELD 16->CAP
END

STRING 18 5 1
BEGIN
 KEY ""
 PROMPT 1 1 ""
 FLAGS "H"
 FIELD 16->COM
END

STRING 19 21 
BEGIN
 KEY "destinazione, comune"
 PROMPT 5 20 ""
 MESSAGE _ISAMREAD,13,COM=#18,DENCOM
END

STRING 20 2 1
BEGIN
 KEY "destinazione, provincia"
 PROMPT 28 20 ""
 MESSAGE _ISAMREAD,13,COM=#18,PROVCOM
END

NUMBER 21
BEGIN
 KEY "ordine"
 PROMPT 3 25 ""
 FIELD NUMDOCRIF
END

DATE 22 10
BEGIN
 KEY "data conferma"
 PROMPT 16 25 ""
 FIELD DATADOCRIF
 FORMAT "1444-"
END

STRING 23 48 1
BEGIN
 KEY "condizioni pagamento"
 PROMPT 3 27 ""
 FIELD 201@->S0
END

STRING 24 29 1
BEGIN
 KEY "banca appoggio"
 PROMPT 53 27 ""
 FIELD 204@->S0
END

STRING 25 7 1
BEGIN
 KEY "codice cliente"
 PROMPT 3 29 ""
 FIELD CODCF
END

STRING 26 11 1
BEGIN
 KEY "partita iva cliente"
 PROMPT 12 29 ""
 MESSAGE _CLIENTE,!IVA
END

STRING 27 18 1
BEGIN
 KEY "porto"
 PROMPT 41 25 ""
 FIELD 203@->S0
END

NUMBER 28
BEGIN
 KEY "codice agente"
 PROMPT 29 29 ""
 FIELD CODAG
END

STRING 29 28 1
BEGIN
 KEY "nome agente"
 PROMPT 33 29 ""
 FIELD 202@->S0
END

END

SECTION BODY ODD 5

STRING 51 13 1
BEGIN
 KEY "codice articolo"
 PROMPT 5 1 ""
 FIELD 34->CODART
END

STRING 52 25 4
BEGIN
 KEY "descrizione articolo"
 PROMPT 25 1 ""
 MESSAGE _DESCRIGA
END

STRING 53 2 
BEGIN
 KEY "unità di misura"
 PROMPT 56 1 ""
 FIELD 34->UMQTA
 MESSAGE _ALIGN,#52,BOTTOM
END

NUMBER 54 10
BEGIN
 KEY "quantita"
 PROMPT 60 1 ""
 PICTURE "######"
 GROUP 30
 FIELD 34->QTA
 MESSAGE _ALIGN,#52,BOTTOM
END

NUMBER 55 20
BEGIN
 KEY "quantita' lettere"
 PROMPT 72 1 ""
 FIELD 34->QTA
 PICTURE "LETTERE"
 MESSAGE _ALIGN,#52,BOTTOM
END

END

SECTION FOOTER ODD 9

STRING 81 5 1
BEGIN
 KEY "scritta SEGUE"
 PROMPT 72 9 "SEGUE"
END

END

SECTION FOOTER LAST 9

LIST 101 1 1
BEGIN
 KEY "trasporto a cura del mittente"
 PROMPT 4 1 ""
 FIELD CODSPMEZZO
 ITEM "|" MESSAGE DISABLE,6@|ENABLE,5@
 ITEM "D| " 
 ITEM "M|X" MESSAGE DISABLE,6@|ENABLE,5@
 ITEM "V| "
END

LIST 102 1 1
BEGIN
 KEY "trasporto a cura del destinatario"
 PROMPT 13 1 ""
 FIELD CODSPMEZZO
 ITEM "|" MESSAGE DISABLE,6@|ENABLE,5@
 ITEM "D|X" MESSAGE DISABLE,6@|ENABLE,5@
 ITEM "M| "
 ITEM "V| "
END

LIST 103 1 1
BEGIN
 KEY "trasporto a cura del vettore"
 PROMPT 23 1 ""
 FIELD CODSPMEZZO
 ITEM "|"
 ITEM "D| "
 ITEM "M| "
 ITEM "V|X" MESSAGE DISABLE,5@|ENABLE,6@
END

STRING 104 45 1
BEGIN
 KEY "nome vettore"
 PROMPT 3 4 ""
 FIELD 205@->S0
END

STRING 105 45 1
BEGIN
 KEY "indirizzo vettore"
 PROMPT 3 6 ""
 FIELD 205@->S1[1,35]
END

STRING 106 10 1
BEGIN
 KEY "n civico vettore"
 PROMPT 30 6 ""
 FIELD 205@->S1[36,45]
 FLAGS "D"
END

STRING 107 25 1
BEGIN
 KEY "localita' vettore"
 PROMPT 50 6 ""
 FIELD 205@->S1[46,70]
 FLAGS "D"
END

STRING 108 25 1
BEGIN
 KEY "comune vettore"
 PROMPT 75 6 ""
 FIELD 208@->DENCOM
 FLAGS "D"
END

DATE 109 8 1
BEGIN
 KEY "data inizio trasporto/consegna"
 PROMPT 51 3 ""
 FIELD DATAPART
 FORMAT "1442-"
 GROUP 5
END

STRING 110 5 1
BEGIN
 KEY "ora inizio trasporto/consegna"
 PROMPT 60 3 ""
 PICTURE "## ##"
 FIELD ORAPART
 GROUP 5
END

DATE 111 8 1
BEGIN
 KEY "data ritiro da parte del vettore"
 PROMPT 51 3 ""
 FIELD DATAPART
 GROUP 6
 FORMAT "1442-"
END

STRING 112 5 1
BEGIN
 KEY "ora ritiro da parte del vettore"
 PROMPT 60 3 ""
 PICTURE "## ##"
 FIELD ORAPART
 GROUP 6
END

STRING 113 27 1
BEGIN
 KEY "aspetto beni"
 PROMPT 37 1 ""
 FIELD 206@->S0
END

STRING 114 7 1
BEGIN
 KEY "peso"
 PROMPT 73 1 ""
 FIELD PNETTO
END

STRING 115 5 1
BEGIN
 KEY "colli"
 PROMPT 66 1 ""
 FIELD NCOLLI
END

STRING 116 15 
BEGIN
 KEY "causale di trasporto"
 PROMPT 25 4 ""
 FIELD 207@->S0
 FLAGS "H"
END

END

END


//   NOTE SULLA COMPILAZIONE DEI FORM DI STAMPA
//
//   SEZIONE GENERAL
//   ===============
//   Posizionamento:
//    e' possibile effettuari posizionamenti manuali dei form con le seguenti istruzioni:
//    CARATTERE <S> 
//    INIZIALE  <N> <N>
//    FINALE    <N> <N>
//   dove:
//      CARATTERE indica il carattere da stampare per contrassegnare il posizionamento, racchiuso tra doppi apici (eg "X")
//      INIZIALE  indica le coordinate X ed Y per il posizionamento iniziale (dove stampare il primo carattere)
//      FINALE    indica le coordinate X ed Y per il posizionamento finale (dove stampare il secondo carattere)
//   FINALE puo' essere omesso; se definito e' comunque buona norma tenere la coordinata verticale (Y) uguale
//   a quella indicata in INIZIALE, se diversi il programma tiene conto solo della prima.
//   Non e' possibile definire sia posizionamenti manuali che OFFSET, quindi o l'uno o l'altro, preferibilmente
//   e' meglio scegliere OFFSET.
//
//   Modificatori di pictures:
//   i parametri IMP_DECIMALS, QTA_DECIMALS, e PRI_DECIMALS settano i decimali da stampare/arrotondare
//   per i seguenti: importi in genere, quantita', e prezzi. Il primo parametro intero e' per gli importi in lire
//   il secondo per gli importi in valuta. Naturalmente per le quantita' non ha senso fare una cosa del genere, ma per completezza
//   e' stata implementata.
//   PRI_DECIMALS corrisponde al gruppo 29
//   QTA_DECIMALS corrisponde al gruppo 30
//   IMP_DECIMALS corrisponde al gruppo 31
//   pertanto tutti i campi che apparterranno al gruppo 29,30 o 31 avranno gli importi stampati al numero di decimali impostati a
//   seconda se il documento e' in lire o valuta. Se il numero di decimali e' 0 la picture rimarra' invariata.
//   Altri gruppi definiti dall'utente saranno cosi' sintatticamente impostati:
//   NEW_GROUP <n> <lit_dec> <val_dec>
//   Dove <n> e' il numero del gruppo
//        <lit_dec> e' il numero di decimali per i documenti in lire
//        <val_dec> e' il numero di decimali per i documenti in valuta
//   
//   Definizione di liste di esclusione (facoltativo):
//   EXCLUDE esclude dalla stampa le righe che soddisfano la condizione specificata.
//   Si indicano in questo modo: "<tipo riga>,<cod. art>". Naturalmente si possono indicare tutti gli EXLCUDE che si vogliono.
//   Es: EXCLUDE "V01,ART1" escludera' tutte le righe di tipo V01 con codice articolo ART1
//       EXCLUDE ",ART1" escludera' tutte le righe che hanno codice articolo ART1
//       EXCLUDE "V01," escludera' tutte le righe che hanno tipo riga V01
//       EXCLUDE "," non escludera' nulla.
//
//  MESSAGGI UTENTE
//  ===============
//  Note sui messaggi della testata/body/footer:
//
//  _ISAMREAD:
//    lettura generica di un file del database
//    sintassi: _ISAMREAD,<file>,<espressione input>[!<espressione input>!...],{<campo file>|<espressione output>[!<espressione output>!...]}
//    dove: <file> è il numero logico del file o il nome della tabella
//       <espressione input> è un'espressione del tipo <campo file>=<espressione campi form>
//       <espressione campi form> è un'espressione di costanti numeriche, stringhe e valori di campi della form (indicati con il loro numero preceduto da #)
//       <espressione output> è un'espressione del tipo <campo form o gruppo>=<campo file> (se è un gruppo deve essere seguito da @) oppure solo <campo file> (il campo della form è quello corrente)
//  
//  _TABLEREAD:
//    lettura generica di un campo di una tabella
//    sintassi: _TABLEREAD,<tabella>,<chiave>,<campo file>
//    dove: <tabella> nome tabella da leggere
//       <chiave> costante stringa o riferimento a campo della form (preceduto da '#') da usare come chiave di ricerca
//       <campo file> identificativo del campo da leggere dalla tabella
//
//  _DITTA:
//    lettura dei dati della ditta
//    sintassi: _DITTA,{<campo relazione>|<macro>}
//    dove: <campo relazione> è un riferimento alla relazione di gestione dei dati della ditta (es. 113@->DENCOM è la denominazione del comune di residenza della ditta)
//         <macro> è uno delle macro seguenti:
//         !RAGSOC  ragione sociale
//         !IND     indirizzo (fiscale se c'è, oppure di residenza)
//         !NUM     numero civico (fiscale se c'è, oppure di residenza)
//         !CAP     CAP (fiscale se c'è, oppure di residenza)
//         !COM     comune (fiscale se c'è, oppure di residenza)
//         !PROV    provincia (fiscale se c'è, oppure di residenza)
//         !IVA     partita iva
//         !CF      codice fiscale
//         !TEL     numero di telefono (con prefisso)
//         !FAX     numero di fax (con prefisso)
//         !REGSOC  numero di registrazione presso il Tribunale
//         !CCIAA   numero di registrazione presso la camera di commercio
//    nota: la relazione della ditta è così strutturata:
//       %NDITTE (9) Dati ditte
//       + %ANAGR (6) Anagrafica generale (indirizzo, ecc.)
//          + %COMUNI (113@) Comune di residenza
//          + %COMUNI (213@) Comune di residenza fiscale
//    viene utilizzato perche' non e' possibile stabilire altrimenti una relazione con il file ditte
//    dall'interno del form.
//
//  _CLIENTE
//    lettura dei dati del cliente
//    sintassi: _CLIENTE,{<campo relazione>|<macro>}
//    dove: <campo relazione> è un riferimento alla relazione di gestione dei dati del cliente
//         <macro> è uno delle macro seguenti:
//         !RAGSOC  ragione sociale
//         !IND     indirizzo
//         !NUM     numero civico
//         !INDNUM  indirizzo + numero civico
//         !LOC     località
//         !CAP     CAP
//         !COM     comune
//         !PROV    provincia
//         !IVA     partita iva
//         !CF      codice fiscale
//         !PERS    <F> se persona fisica, <G> se giuridica
//         !DATANAS data di nascita
//         !COMNAS  comune di nascita
//         !TEL     primo numero di telefono (con prefisso)
//         !TEL2    secondo numero di telefono (con prefisso)
//         !TEL3    terzo numero di telefono (con prefisso)
//         !FAX     numero di fax (con prefisso)
//    nota: la relazione del cliente è così strutturata:
//       CLIFO (20) Clienti/fornitori
//       + CFVEN (17) Clienti/fornitori per vendite
//       + %COMUNI (113@) Comune di residenza
//       + %COMUNI (213@) Comune di nascita
//    viene utilizzato al posto del file 17 collegato perche' vi sono particolari
//    accorgimenti per quanto riguarda i clienti occasionali.
// 
//  _DESCRIGA:
//    Messaggio per reperire e formattare anche la descrizione estesa sulle righe del documento
//
//  _ALIGN:
//    allineamento della posizione di un campo rispetto ad un altro
//    sintassi: _ALIGN,<campo form>[,<allineamento>][,<allineamento>...]
//    dove: <campo form> è il campo della form (preceduto da '#') da cui prendere l'allineamento
//       <allineamento> è uno dei seguenti valori:
//        TOP    allinea sulla riga d'inizio
//        MIDDLE allinea al centro (effettivo)
//        BOTTOM allinea sulla riga di fine (effettiva, non preimpostata)
//        LEFT   allinea sulla colonna d'inizio
//        RIGHT  allinea sulla colonna di fine
//
//  _PAGENO:
//    Messaggio per stampare il numero di pagina corrente
//
//  _RIEPILOGOIVA:
//    messaggio per stampare la tabella ripelogativa delle aliquote IVA e relative imposte
//    sintassi: _RIEPILOGOIVA,<selettore>,<macro>,<cambio codice>
//    dove: <selettore> è uno dei seguenti:
//        1 = codici IVA a regime normale
//        2 = codici IVA da ventilare
//        4 = codici IVA esenti
//        8 = codici IVA non imponibili
//       16 = codici IVA non soggetti
//       oppure la combinazione di uno o piu' di essi:
//       12 = 4+8, 19 = 1+2+16, 29 = 1+4+8+16 ecc...
//       pertanto per avere i non imponibili in totale il selettore sara' 1,
//       per avere gli esenti il selettore sara' 4; per avere i non soggetti + esenti
//       il selettore sara' 20  e cosi' via.
//    dove: <macro> è uno dei seguenti:
//        COD     colonna dei codici
//        IMP     colonna degli imponibili
//        IVA     colonna delle imposte
//        ALI     colonna delle aliquote
//        DES     colonna delle descrizioni (stampata solo se il regime IVA non e' normale)
//    dove: <cambio codice> è uno dei seguenti:
//        0        indica di non leggere il successivo codice IVA nella tabella riepilogativa
//        1        indica di leggere il successivo codice IVA nella tabella riepilogativa
//
//  _TOTIMPONIBILI:
//    messaggio per stampare diverse totalizzazioni di imponibili
//    sintassi: _TOTIMPONIBILI,<selettore>
//    dove: <selettore> funge da filtro per la somma degli imponibili
//    vedi _RIEPILOGOIVA per la spiegazione dei filtri selettivi
//
//  _SCADENZE:
//    messaggio per stampare le scadenze
//    sintassi: _SCADENZE,<macro>,<cambio codice>
//    dove <macro> e' uno dei seguenti:
//      DATA    : stampa la data di scadenza 
//      IMPORTO : stampa l'importo in scadenza
//    dove <cambio codice> vale 0 o 1 se indica di rendere corrente la prossima scadenza
//
//  CAMPI VIRTUALI
//  ==============
//  Oltre a stampare i campi normali del file e' anche possibile stampare i campi virtuali
//  definiti nei profili semplicemente indicandoli nella istruzione FIELD:
//  per la testata del documento:
//  BOLLI, BASESCONTO, IMPOSTE, PROVVD, SCONTOD, SPESEINC, TOTDOC, TOTMER, TOTNS, TOTPRE, TOTSPE
//  per le righe:
//  IMPLN, IMPLS, IMPNN, IMPNS, IMPOSTA, PREZZOLN, PREZZOLS, PREZZONN, PREZZONS, PROVVR, SCONTOR
//  oltre, naturalmente a quelli definiti dall'utente

