Sistemata stampa doc. vendita. Corretti bug stampe sconti e condiz. vendita.

git-svn-id: svn://10.65.10.50/trunk@1934 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
gianluca 1995-10-09 15:47:28 +00:00
parent 5964b25487
commit a586455adb
9 changed files with 282 additions and 375 deletions

View File

@ -1,4 +1,6 @@
#include "ve4.h"
#include "batbtip.h"
//#include "ve4.h"
TOOLBAR "" 0 20 60 2

View File

@ -1,3 +1,4 @@
#include <applicat.h>
#include <config.h>
#include <form.h>
@ -10,43 +11,6 @@
#include <urldefid.h>
#include <utility.h>
// !! fatto (in ordine d'esecuzione):
// !! ------------------------------
// !! - lettura parametri linea di comando per eventuale esecuzione batch
// !! - impostazione di flag di interattività posto a true se non ci sono parametri sulla linea
// !! di comando; influisce su:
// !! - apertura maschera richiesta dati
// !! - richiesta di stampa definitiva
// !! - richiesta d'interruzione in caso di stato non valido durante stampa definitiva
// !! - interruzione forzata in caso di impossibilità di rinumerazione definitiva
// !! - impostazione di flag di stampa definitiva (da linea di comando o richiesta con box);
// !! influisce su:
// !! - controllo stati durante la stampa
// !! - lancio della procedura di rinumerazione definitiva
// !! - lettura tabelle codice numerazione e tipo documento
// !! - lancio batch della stampa se sono presenti i parametri sulla linea di comando
// !! - creazione e apertura della maschera e lettura dati
// !! - impostazione della regione del cursore del form
// !! - ciclo di lettura del form con stampa della posizione corrente e lancio (eventuale)
// !! della rinumerazione
// !! - intercettazione dei seguenti messaggi custom nel form:
// !! - _ISAMREAD per letture generiche dal database
// !! - _TABLEREAD per lettura generiche da tabelle del database
// !! - _DITTA per ottenere dati di configurazione sulla ditta in uso
// !! - _CIFRELETTERE per la conversione di un valore in lettere
// !! - chiusura applicazione
// !! da fare:
// !! -------
// !! - verificare le messaggistiche verso l'utente e il controllo dell'interattività
// !! - aggiungere lettura del tipo di modulo dal form (quando sarà fatto)
// !! - completare routine di scelta di cosa fare al cambio del modulo
// !! - aggiungere tutti gli altri messaggi di gestione dei documenti di vendita (clienti,
// !! totalizzatori, calcoli, ecc.)
// !! - tutto il resto!
#include "ve1100.h"
#include "ve0100b.h"
@ -58,9 +22,12 @@
class TDocVen_Form: public TForm {
TRelation &_firmrel; // relazione di gestione dei dati della ditta corrente
TString _module; // codice del modulo di carta associato a questo al form
protected:
virtual bool validate(TForm_item &, TToken_string &);
virtual void extended_parse_general(TScanner &); // gestione dei parametri estesi nella sezione general
virtual bool validate(TForm_item &, TToken_string &); // gestione dei messaggi estesi nei campi
public:
const TString &get_module_code() { return _module; } // ritorna il codice del modulo di carta
TDocVen_Form(const char *, TRelation &);
};
@ -68,12 +35,17 @@ public:
TDocVen_Form::TDocVen_Form(const char* name, TRelation &rel): TForm(name), _firmrel(rel) {}
void TDocVen_Form::extended_parse_general(TScanner &scanner) {
if (scanner.popkey() == "MO") _module = scanner.string(); // se viene riconosciuto il token per l'impostazione del modulo legge il codice...
else scanner.push(); // ...altrimenti rimette il token nella coda dello scanner
}
bool TDocVen_Form::validate(TForm_item &cf, TToken_string &s) {
const TString code(s.get(0)); // prende il primo parametro, il codice del messaggio
if (code== "_ISAMREAD") {
// lettura generica di un file del database
// sintassi: _ISAMREAD <file> <espressione input>,<espressione input>,... <espressione output>,<espressione output>,...
// 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 #)
@ -85,7 +57,8 @@ bool TDocVen_Form::validate(TForm_item &cf, TToken_string &s) {
TString f_code(s.get()); // prende il codice del file da leggere
if (atoi(f_code) != 0) file= new TLocalisamfile(atoi(f_code)); // se il codice è numerico allora è un file
else file= new TTable(f_code); // altrimenti è una tabella
TToken_string in(s.get(), ',');
file->zero(); // vuota il record corrente del file
TToken_string in(s.get(), '!');
for (i=0; i<in.items(); i++) { // scansione sugli elementi dell'input
TString curr(in.get(i));
poseq= curr.find("=="); // divide la stringa corrente in lvalue e rvalue
@ -93,8 +66,8 @@ bool TDocVen_Form::validate(TForm_item &cf, TToken_string &s) {
poseq= curr.find('=');
if (poseq != -1) posrv= poseq+1;
} else posrv= poseq+2;
const TString &fld= curr.left(poseq); // preleva il nome del campo del file alla sinistra dell'uguale
const TString &expr= curr.mid(posrv); // preleva l'espressione di assegnamento alla destra dell'uguale
TString fld(curr.left(poseq)); // preleva il nome del campo del file alla sinistra dell'uguale
TString expr(curr.mid(posrv)); // preleva l'espressione di assegnamento alla destra dell'uguale
TExpression rval(expr, _strexpr);
for (j=0; j<rval.numvar(); j++) { // scansione delle variabili dell'espressione di rvalue
TString var= rval.varname(j);
@ -105,7 +78,7 @@ bool TDocVen_Form::validate(TForm_item &cf, TToken_string &s) {
file->put(fld, (const char *)rval); // scrive il risultato dell'espressione nel campo del file
}
if (file->read()== NOERR) { // tenta una lettura del file
TToken_string out(s.get(), ',');
TToken_string out(s.get(), '!');
for (i=0; i<out.items(); i++) { // scansione sugli elementi dell'output
TString curr(out.get(i));
poseq= curr.find("=="); // divide la stringa corrente in lvalue e rvalue
@ -117,7 +90,7 @@ bool TDocVen_Form::validate(TForm_item &cf, TToken_string &s) {
const TString &dat= file->get(curr); // preleva il nome del campo del file e lo legge dal record
cf.set(dat); // setta il campo letto dal file nel campo corrente della form
} else {
TString fld= curr.left(poseq); // preleva il nome del campo del form alla sinistra dell'uguale
TString fld(curr.left(poseq)); // preleva il nome del campo del form alla sinistra dell'uguale
const TString &dat= file->get(curr.mid(posrv)); // preleva il nome del campo del file alla destra dell'uguale e lo legge dal record
if (fld[0]=='#') fld.ltrim(1);
if (fld.right(1)== "@") { // se c'è la a-commerciale è un gruppo
@ -148,11 +121,12 @@ bool TDocVen_Form::validate(TForm_item &cf, TToken_string &s) {
if (code== "_TABLEREAD") {
// lettura generica di un campo di una tabella
// sintassi: _TABLEREAD <tabella> <chiave> <campo file>
// 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
TTable tab(s.get()); // prende il nome della tabella
tab.zero(); // vuota il record corrente della tabella
TString in(s.get()); // prende il valore o il campo da usare come codice di ricerca
if (in.left(1)== '#') {
in.ltrim(1);
@ -169,25 +143,25 @@ bool TDocVen_Form::validate(TForm_item &cf, TToken_string &s) {
if (code== "_DITTA") {
// lettura dei dati della ditta
// sintassi: _DITTA {<campo relazione>|<macro>}
// 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)
// &IVA partita iva
// &CF codice fiscale
// &TEL numero di telefono (con prefisso)
// &FAX numero di fax (con prefisso)
// !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)
// !IVA partita iva
// !CF codice fiscale
// !TEL numero di telefono (con prefisso)
// !FAX numero di fax (con prefisso)
// nota: la relazione di 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
TString in(s.get());
if (in[0]=='&') {
if (in[0]=='!') {
in.ltrim(1);
bool _fisc= _firmrel.lfile(6).get("INDRF").not_empty();
if (in=="RAGSOC") cf.set(_firmrel.lfile().get("RAGSOC"));
@ -228,13 +202,13 @@ bool TDocVen_Form::validate(TForm_item &cf, TToken_string &s) {
if (code== "_CIFRELETTERE") {
// conversione di un reale da cifre a lettere
// sintassi: _CIFRELETTERE [<campo form>]
// sintassi: _CIFRELETTERE[,<campo form>]
// dove: <campo form> è il campo della form (preceduto da '#') da cui prendere il valore, se non è specificato è sottointeso il campo corrente
// nota: prende il valore del campo specificato e scrive la sua conversione in lettere nel campo corrente
TString in;
if (s.items()==2) {
in= s.get();
if (in.left(1)== '#') in.ltrim(1);
if (in[0]== '#') in.ltrim(1);
TForm_item &fi= cf.find_field(in);
in= fi.get();
} else in= cf.get();
@ -256,7 +230,7 @@ enum behaviour {
skip,
go,
cancel
};
};
@ -275,7 +249,7 @@ protected:
int select(void);
virtual void print(void);
virtual void on_firm_change(void);
virtual behaviour on_module_change(const TString &); // funzione chiamata ad ogni cambio modulo durante la stampa
virtual behaviour on_module_change(const TString &, TString &); // funzione chiamata ad ogni cambio modulo durante la stampa
virtual bool query_final_print(void); // funzione chiamata all'inizializzazione per sapere se la stampa è definitiva
};
@ -293,6 +267,7 @@ bool TStampa_Doc_Vendita::create() {
_provv= argv(4); // il terzo è il flag di numerazione provvisoria
_dalnum= atol(argv(5)); // il quarto è il numero di documento di partenza
_alnum= atol(argv(6)); // il quinto è il numero di documento di fine
_definitiva= (strcmp(argv(7), "D")==0); // il sesto è se la stampa è definitiva (rinumerazione dei documenti)
_interattivo= FALSE;
print();
} else { // oppure lancio della maschera
@ -318,8 +293,7 @@ int TStampa_Doc_Vendita::select() {
if (m.run() == K_ENTER) {
_codnum= m.get(F_CODNUM); // lettura dei dati dalla maschera
_anno= m.get_int(F_ANNO);
//_provv= (m.get_bool(F_PROVV))?("P"):("D");
_provv = m.get(F_PROVV);
_provv= m.get(F_PROVV);
_dalnum= m.get_long(F_DA_NDOC);
_alnum= m.get_long(F_A_NDOC);
return 1;
@ -333,91 +307,105 @@ bool TStampa_Doc_Vendita::menu(MENU_TAG) { // procedura di dispatch dei menu
}
void TStampa_Doc_Vendita::print() {
_definitiva= query_final_print(); // legge il flag di stampa definitiva
printer().open(); // apre la stampante
TFilename nomeform, profilo; // istanzia le stringhe per il nome del form di stampa e del profilo di configurazione
TString modulo, modulo_prec; // istanzia le stringhe per l'inseguimento del modulo di carta
//TToken_string stati("",','); // token string con gli stati validi dei documenti
TTable tip("%TIP"); // istanzia la tabella dei tipi di documento per i profili
TRelation rel(LF_DOC); // istanzia la relazione sul file principale
TLocalisamfile &doc= rel.lfile(); // prende il riferimento al file principale
TCursor cur(&rel); // crea il cursore principale dalla relazione
doc.put("CODNUM", _codnum); // compone la chiave per il record di inizio cursore
_definitiva= query_final_print(); // legge il flag di stampa definitiva
printer().open(); // apre la stampante
TFilename nomeform, profilo; // istanzia le stringhe per il nome del form di stampa e del profilo di configurazione
TString modulo_prec; // istanzia la stringa per l'inseguimento del modulo di carta
TTable tip("%TIP"); // istanzia la tabella dei tipi di documento per i profili
TRelation rel(LF_DOC); // istanzia la relazione sul file principale
TCursor cur(&rel); // crea il cursore principale dalla relazione
TLocalisamfile &doc= cur.file(); // prende il riferimento al file principale
doc.zero(); // vuota il record del file
doc.put("CODNUM", _codnum); // compone la chiave per il record di inizio cursore
doc.put("ANNO", _anno);
doc.put("PROVV", _provv);
doc.put("NDOC", _dalnum);
doc.read(); // posiziona il file sul record
TRectype darec= doc.curr(); // copia il record di inizio cursore
doc.put("NDOC", _alnum); // compone la chiave per il record di fine cursore
doc.read(); // posiziona il file sul record
TRectype arec= doc.curr(); // copia il record di fine cursore
cur.setregion(darec, arec); // imposta il filtro sul cursore di stampa
for (int i= 0; i<cur.items(); i++)// ciclo sugli elementi del cursore di stampa
{
cur= i; // posiziona il cursore
doc.read(); // posiziona il file sul record
TRectype darec= doc.curr(); // copia il record di inizio cursore
doc.zero(); // vuota il record del file
doc.put("CODNUM", _codnum); // compone la chiave per il record di fine cursore
doc.put("ANNO", _anno);
doc.put("PROVV", _provv);
doc.put("NDOC", _alnum);
doc.read(); // posiziona il file sul record
TRectype arec= doc.curr(); // copia il record di fine cursore
cur.setregion(darec, arec); // imposta il filtro sul cursore di stampa (nell'ordine giusto :-)
for (cur= 0; cur.pos()<cur.items(); ++cur) { // ciclo sugli elementi del cursore di stampa
tip.put("CODTAB", doc.get("TIPODOC")); // posiziona la tabella dei tipi di documento
int err=tip.read();
if (err==NOERR) // legge la tabella
{
nomeform= tip.get("S5"); // legge il nome del form di stampa
profilo= tip.get("S4"); // legge il nome del profilo di configurazione
profilo.ext("ini");
int err=tip.read(); // legge la tabella
if (err==NOERR) { // se non ci sono errori procede con la stampa
nomeform= tip.get("S5"); // legge il nome del form di stampa
profilo= tip.get("S4"); // legge il nome del profilo di configurazione
profilo.ext("ini"); // aggiunge l'estensione al nome del file del profilo
TConfig config(profilo, "STAMPA"); // apre il file di configurazione del profilo
TToken_string stati ((const char*)config.get("STATIVALIDI"), ','); // legge gli stati validi di questo tipo di documento
if (_definitiva && (stati.get_pos(doc.get("STATO"))== -1)) // se lo stato del doc. corrente non è valido...
{
TToken_string stati((const char*)config.get("STATIVALIDI"), ','); // legge gli stati validi di questo tipo di documento
if (_definitiva && (stati.get_pos(doc.get("STATO"))== -1)) { // se lo stato del doc. corrente non è valido...
if (_interattivo) error_box("Non è possibile stampare un documento con stato non valido"); // ...viene mostrato un messaggio (solo in modo interattivo)...
break; // ...e la stampa viene interrotta
}
behaviour whattodo= go; // istanzia la variabile di comportamento
TDocVen_Form f(nomeform, *_firmrel); // istanzia il form
// !! modulo= f.get_module_code(); // legge dal form il codice del modulo di carta per la stampa
if (modulo_prec.empty()) modulo_prec= modulo; // se siamo al primo passaggio la variabile di modulo precedente viene riempita
if (modulo != modulo_prec) whattodo= on_module_change(modulo); // se il modulo è cambiato dalla stampa precedente interroga la funzione per sapere che comportamento tenere
if (whattodo==cancel) // se non si può procedere la stampa viene interrotta
break;
else if (whattodo==go) // altrimenti prosegue
{
TCursor &fcur= *(f.cursor()); // ricava il riferimento al cursore originale del form
darec= arec= doc.curr(); // prepara i record per il filtro
fcur.setregion(darec, arec); // setta il filtro sul form (solo il record corrente)
f.print(0,0); // stampa il record corrente del form
if (_definitiva && (numerazione_definitiva(doc) != NOERR)) // se la stampa è definitiva viene lanciata la procedura di rinumerazione
{
if (_interattivo) error_box("Non è possibile completare la procedura di numerazione definitiva dei documenti");
break;
}
}
}
else
{
// error_box("Il documento corrente non può essere trovato nella tabella dei tipi di documento");
error_box ("Errore %d leggendo da %TIP.", err);
break;
}
}
printer().close(); // chiude la stampante
}
behaviour TStampa_Doc_Vendita::on_module_change(const TString &modulo) {
// !! qui va messa la reazione al cambio di modulo
// !! - se non si è in interattivo bisogna, immagino, ritornare sempre "skip"
// !! - se si è in interattivo bisogna chiedere all'utente il da farsi, eventualmente
// !! fornendo il nome esteso del modulo da inserire facendo una seek sulla tabella
return skip;
behaviour whattodo= go; // istanzia la variabile di comportamento
TDocVen_Form f(nomeform, *_firmrel); // istanzia il form
const TString &modulo= f.get_module_code(); // legge dal form il codice del modulo di carta per la stampa
if (modulo_prec.empty()) modulo_prec= modulo; // se siamo al primo passaggio la variabile di modulo precedente viene riempita
if (modulo != modulo_prec) whattodo= on_module_change(modulo, modulo_prec); // se il modulo è cambiato dalla stampa precedente interroga la funzione per sapere che comportamento tenere
if (whattodo==cancel) break; // se non si può procedere la stampa viene interrotta
else if (whattodo==go) { // altrimenti prosegue
TCursor &fcur= *(f.cursor()); // ricava il riferimento al cursore originale del form
TLocalisamfile &rdoc= fcur.file(); // ricava il riferimento al file principale del cursore del form
TRectype darec_r(rdoc.curr()); // istanzia il record di filtro per il cursore
darec_r.zero(); // vuota il record
darec_r.put("CODNUM", _codnum); // compone la chiave parziale per il filtro sul cursore dal file principale del cursore di selezione dei documenti
darec_r.put("ANNO", _anno);
darec_r.put("PROVV", _provv);
darec_r.put("NDOC", doc.get("NDOC"));
TRectype arec_r(darec_r); // istanzia il secondo record per il filtro sul cursore
fcur.setregion(darec_r, arec_r); // setta il filtro sul cursore del form
f.print(); // stampa il form corrente
if (_definitiva && (numerazione_definitiva(doc) != NOERR)) { // se la stampa è definitiva viene lanciata la procedura di rinumerazione
if (_interattivo) error_box("Non è possibile completare la procedura di numerazione definitiva dei documenti");
break;
}
}
} else {
error_box("Il documento corrente non è stato trovato nella tabella dei tipi di documento (errore %d)", err);
break;
}
}
printer().close(); // chiude la stampante
}
bool TStampa_Doc_Vendita::query_final_print() {
if (_interattivo) { // se siamo in interattivo viene richiesto all'utente se la stampa è definitiva o meno
if (yesno_box("E' una stampa definitiva?")) return TRUE;
else return FALSE;
} else return (strcmp(argv(7), "D")==0); // altrimenti lo legge dalla linea di comando
}
behaviour TStampa_Doc_Vendita::on_module_change(const TString &modulo, TString &modulo_prec) {
if (!_interattivo) return skip; // se siamo in interattivo il documento viene saltato...
else { // ...altrimenti viene chiesto all'utente il da farsi
int risp= yesnocancel_box("Il modulo di carta è cambiato: inserisci il modulo '%s' e premi 'Sì' per continuare, 'No' per saltare il documento o 'Cancel' per interrompere la stampa", modulo);
behaviour ret;
switch (risp) {
case K_YES:
modulo_prec= modulo; // aggiorna l'inseguitore dei moduli
ret= go; // la stampa può continuare
break;
case K_NO:
ret= skip; // il documento viene saltato
break;
case K_ESC:
ret= cancel; // la stampa viene interrotta
break;
}
return ret;
}
}
bool TStampa_Doc_Vendita::query_final_print() {
if (_interattivo) { // se siamo in interattivo viene richiesto all'utente se la stampa è definitiva o meno
if (yesno_box("E' una stampa definitiva?")) return TRUE;
else return FALSE;
} else return _definitiva; // altrimenti ritorna il valore letto dalla linea di comando
}
int ve1100(int argc, char* argv[]) {
TStampa_Doc_Vendita a;
a.run(argc, argv, "Stampa documenti di vendita");
return (0);
}
int ve1100(int argc, char* argv[]) {
TStampa_Doc_Vendita a;
a.run(argc, argv, "Stampa documenti di vendita");
return (0);
}

View File

@ -5,6 +5,7 @@ PAGE "STAMPA DOCUMENTI VENDITA" -1 -1 40 19
STRING F_CODNUM 4 4
BEGIN
PROMPT 1 1 "Codice Num. "
FLAG "U"
USE NUM
INPUT CODTAB F_CODNUM
DISPLAY "Cod. Num." CODTAB
@ -19,9 +20,11 @@ BEGIN
CHECKTYPE REQUIRED
END
BOOLEAN F_PROVV
LIST F_PROVV 8
BEGIN
PROMPT 26 4 "Provvis."
PROMPT 26 4 ""
ITEM "P|Provvis."
ITEM "D|Definit."
END
RADIOBUTTON F_DATA_O_NUM 20
@ -44,7 +47,7 @@ END
NUMBER F_DA_NDOC 7 0
BEGIN
PROMPT 2 8 "Dal num. "
USE 33 KEY 1
USE 33 KEY 1 SELECT CODNUM==#F_CODNUM|ANNO==#F_ANNO
JOIN 20 INTO CODCF=CODCF TIPOCF=TIPOCF
JOIN 13 TO 20 INTO COM=COMCF
INPUT CODNUM F_CODNUM SELECT

View File

@ -58,7 +58,7 @@ bool TTabelle_sconti::user_create() {
sci_k_id[2]= F_I_ZONE;
sci_k_id[3]= F_I_CONDPAG;
for (i=0; i<4; i++) {
if (prassid.get_bool("ScoKey", "ve", i)) { // se nel file di config. il campo è abilitato...
if (prassid.get_bool("SCOKEY", "ve", i)) { // se nel file di config. il campo è abilitato...
REVIVE(sci_k_id[i]); // ...il campo viene abilitato anche sulla maschera...
gotcha= TRUE; // ...e viene settato il flag di ok
} else KILL(sci_k_id[i]); // se nel file di config. il campo non è abilitato viene disabilitato anche sulla maschera

View File

@ -67,7 +67,7 @@ bool TCondizioni_vendita::user_create() {
TConfig prassid(CONFIG_DITTA, "ve"); // apre il file di configurazione della ditta corrente
switch (_condven[0]) {
case 'L': { // listini
if (!(prassid.get_bool("Ges", NULL, A_LISTINI))) error_box("L'archivio Listini non è abilititato"); // controlla che l'archivio listini sia abilitato
if (!(prassid.get_bool("GES", NULL, A_LISTINI))) error_box("L'archivio Listini non è abilititato"); // controlla che l'archivio listini sia abilitato
else {
// eliminazione campi di altri archivi
DESTROY(F_C_COD);
@ -77,17 +77,17 @@ bool TCondizioni_vendita::user_create() {
DESTROY(F_C_OBBLIG);
set_search_field(F_L_COD); // impostazione del campo di ricerca
_msk->set_handler(F_LC_CODSUCC, handle_codsucc); // setta l'handler per il campo di codice successivo
_codlis_catven= prassid.get_bool("CodLisCV"); // setta il booleano di abilitazione delle categoria di vendita
_codlis_catven= prassid.get_bool("CODLISCV"); // setta il booleano di abilitazione delle categoria di vendita
if (!_codlis_catven) KILL(F_L_CATVEN); // disabilita condizionalmente le categorie di vendita
_gest_um= prassid.get_bool("GesUM", NULL, A_LISTINI); // setta il booleano di abilitazione delle unità di misura
_gest_sca= prassid.get_bool("GesSca", NULL, A_LISTINI); // setta il booleano di abilitazione degli scaglioni
_gest_so= prassid.get_bool("GesSO", NULL, A_LISTINI); // setta il booleano di abilitazione degli sconti/omaggi
_gest_um= prassid.get_bool("GESUM", NULL, A_LISTINI); // setta il booleano di abilitazione delle unità di misura
_gest_sca= prassid.get_bool("GESSCA", NULL, A_LISTINI); // setta il booleano di abilitazione degli scaglioni
_gest_so= prassid.get_bool("GESSO", NULL, A_LISTINI); // setta il booleano di abilitazione degli sconti/omaggi
gotcha= TRUE;
}
break;
}
case 'C': // contratti
if (!(prassid.get_bool("Ges", NULL, A_CONTRATTI))) error_box("L'archivio Contratti non è abilititato"); // controlla che l'archivio listini sia abilitato
if (!(prassid.get_bool("GES", NULL, A_CONTRATTI))) error_box("L'archivio Contratti non è abilititato"); // controlla che l'archivio listini sia abilitato
else {
// settaggio dei campi da eliminare
DESTROY(F_L_COD);
@ -95,14 +95,14 @@ bool TCondizioni_vendita::user_create() {
DESTROY(F_L_CATVEN);
DESTROY(F_LC_CODSUCC);
set_search_field(F_C_COD); // impostazione del campo di ricerca
_gest_um= prassid.get_bool("GesUM", NULL, A_CONTRATTI); // setta il booleano di abilitazione delle unità di misura
_gest_sca= prassid.get_bool("GesSca", NULL, A_CONTRATTI); // setta il booleano di abilitazione degli scaglioni
_gest_so= prassid.get_bool("GesSO", NULL, A_CONTRATTI); // setta il booleano di abilitazione degli sconti/omaggi
_gest_um= prassid.get_bool("GESUM", NULL, A_CONTRATTI); // setta il booleano di abilitazione delle unità di misura
_gest_sca= prassid.get_bool("GESSCA", NULL, A_CONTRATTI); // setta il booleano di abilitazione degli scaglioni
_gest_so= prassid.get_bool("GESSO", NULL, A_CONTRATTI); // setta il booleano di abilitazione degli sconti/omaggi
gotcha= TRUE;
}
break;
case 'O': // offerte
if (!(prassid.get_bool("Ges", NULL, A_OFFERTE))) error_box("L'archivio Offerte non è abilititato"); // controlla che l'archivio listini sia abilitato
if (!(prassid.get_bool("GES", NULL, A_OFFERTE))) error_box("L'archivio Offerte non è abilititato"); // controlla che l'archivio listini sia abilitato
else {
// settaggio dei campi da eliminare
DESTROY(F_L_COD);
@ -113,9 +113,9 @@ bool TCondizioni_vendita::user_create() {
DESTROY(F_C_OBBLIG);
set_search_field(F_O_COD); // impostazione del campo di ricerca
_msk->set_handler(F_LC_CODSUCC, handle_codsucc); // setta l'handler per il campo di codice successivo
_gest_um= prassid.get_bool("GesUM", NULL, A_OFFERTE); // setta il booleano di abilitazione delle unità di misura
_gest_sca= prassid.get_bool("GesSca", NULL, A_OFFERTE); // setta il booleano di abilitazione degli scaglioni
_gest_so= prassid.get_bool("GesSO", NULL, A_OFFERTE); // setta il booleano di abilitazione degli sconti/omaggi
_gest_um= prassid.get_bool("GESUM", NULL, A_OFFERTE); // setta il booleano di abilitazione delle unità di misura
_gest_sca= prassid.get_bool("GESSCA", NULL, A_OFFERTE); // setta il booleano di abilitazione degli scaglioni
_gest_so= prassid.get_bool("GESSO", NULL, A_OFFERTE); // setta il booleano di abilitazione degli sconti/omaggi
gotcha= TRUE;
}
break;
@ -132,7 +132,7 @@ bool TCondizioni_vendita::user_create() {
if (!_gest_um) _msk->disable(F_GESTUM); // disabilita condizionalmente il booleano di gestione delle unità di misura
if (!_gest_sca) _msk->disable(F_GESTSCAGL); // disabilita condizionalmente il booleano di gestione degli scaglioni
if (!_gest_so) _msk->disable(F_GESTSCO); // disabilita condizionalmente il booleano di gestione degli sconti/omaggi
_gest_val= prassid.get_bool("GesVal"); // legge il booleano di abilitazione delle gastione delle valute
_gest_val= prassid.get_bool("GESVAL"); // legge il booleano di abilitazione delle gastione delle valute
if (!_gest_val) { // se la gestione delle valute è disabilitata i campi di gestione vengono disabilitati
_msk->disable(F_CODVAL);
_msk->disable(F_CAMBIO);

View File

@ -89,7 +89,7 @@ bool TRighe_condizioni_vendita::user_create() {
_msk->hide(F_R_O_RICERCA);
_msk->hide(F_R_CO_CODLOTTO);
_msk->hide(F_R_O_ARTES);
_codlis_catven= prassid.get_bool("CodLisCV"); // setta il booleano di abilitazione di CATVEN
_codlis_catven= prassid.get_bool("COSLISCV"); // setta il booleano di abilitazione di CATVEN
if (!_codlis_catven) KILL(F_R_L_CATVEN); // disabilita condizionalmente le categorie di vendita
set_search_field(F_R_L_RICERCA); // impostazione del campo di ricerca
_msk->set_handler(F_R_L_COD, handle_cod); // impostazione dell'handler sul campo di controllo della testata

View File

@ -1,4 +1,3 @@
<<<<<<< veacc.frm
// Completare la sezione "iva" nel body
// Manca il campo "causale" nella section footer
@ -6,8 +5,6 @@
// Una volta completato, togliere dalla relazione i files che non servono.
=======
>>>>>>> 1.2
USE 33
JOIN 34 ALIAS 101 INTO CODNUM=CODNUM ANNO=ANNO PROVV=PROVV NDOC=NDOC
JOIN 17 ALIAS 201 INTO TIPOCF=TIPOCF CODCF=CODCF
@ -129,11 +126,7 @@ BEGIN
PROMPT 15 6 ""
END
<<<<<<< veacc.frm
STRINGA 9
=======
NUMERO 11
>>>>>>> 1.2
BEGIN
KEY "reg.soc.trib...."
PROMPT 5 6 "REG.SOC.TRIB.R.E. 8897"
@ -208,13 +201,8 @@ BEGIN
FIELD 1102@->CAPCOM
END
<<<<<<< veacc.frm
STRINGA 85 50 1
=======
STRINGA 83 30 1
>>>>>>> 1.2
BEGIN
<<<<<<< veacc.frm
FLAGS "H"
PROMPT 1 1 ""
FIELD 16->COM
@ -222,8 +210,6 @@ END
STRINGA 86 30 1
BEGIN
=======
>>>>>>> 1.2
KEY "destinazione, comune"
PROMPT 1 14 ""
FIELD 1102@->DENCOM
@ -240,12 +226,8 @@ DATA 23 8 1
BEGIN
KEY "data conferma"
PROMPT 28 19 ""
<<<<<<< veacc.frm
FIELD DATADOCRIF
FORMAT "1444-"
=======
FIELD 33->DATADOCRIF
>>>>>>> 1.2
END
STRINGA 24 48 1

View File

@ -1,40 +1,34 @@
// - Manca la gestione del campo "causale"
// - Il cliente deve essere gestito con il nuovo messaggio _CLIENTE, per ora è gestito con
// l'aggancio alla relazione
// - Controllare la posizione dei campi precendentemente compositi (indirizzi, comuni, ecc.)
USE 33
JOIN 34 INTO CODNUM==CODNUM ANNO==ANNO PROVV==PROVV NDOC==NDOC
JOIN 17 INTO TIPOCF==TIPOCF CODCF==CODCF
JOIN 20 INTO TIPOCF==TIPOCF CODCF==CODCF
JOIN 16 INTO TIPOCF==TIPOCF CODCF==CODCF CODIND==CODINDSP
USE 34
JOIN 33 INTO CODNUM==CODNUM ANNO==ANNO PROVV==PROVV NDOC==NDOC
JOIN 17 TO 33 INTO TIPOCF==TIPOCF CODCF==CODCF
JOIN 20 TO 33 INTO TIPOCF==TIPOCF CODCF==CODCF
JOIN 16 TO 33 INTO TIPOCF==TIPOCF CODCF==CODCF CODIND==CODINDSP
JOIN 16 TO 17 ALIAS 116 INTO TIPOCF==TIPOCF CODCF==CODCF CODIND==CODINDSP
JOIN 47 TO 34 INTO CODART==CODART
JOIN 52 INTO TIPOCF==TIPOCF CODCF==CODCF
JOIN %CPG INTO CODTAB==CODPAG
JOIN %AGE INTO CODTAB==CODAG
JOIN %POR INTO CODTAB==CODPORTO
JOIN %BAN INTO CODTAB==CODABIA+CODCABA
JOIN %VET INTO CODTAB==CODVETT1
JOIN %ASP INTO CODTAB==ASPBENI1
JOIN 47 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
END
DESCRIPTION
BEGIN
33->* "Documenti di vendita"
34->* "Righe documenti di vendita"
33->* "Documenti di vendita"
17->* "Clienti/Fornitori per vendite"
20->* "Clienti/Fornitori"
47 ->* "Righe listini"
52 ->* "Contratti clienti"
16 ->* "Indirizzi di spedizione"
116->* "Indirizzi di spedizione"
%CPG->* "Condizioni di pagamento"
%AGE ->* "Agenti"
%MSP ->* "Modalità di spedizioni"
%POR ->* "Modalità di consegna"
%BAN ->* "Banche"
16->* "Indirizzi di spedizione (destinazione)"
116@->* "Indirizzi di spedizione (destinatario)"
47->* "Anagrafica magazzino"
201@->* "Tabella condizioni di pagamento"
202@->* "Tabella agenti"
203@->* "Tabella porto"
204@->* "Tabella banche"
205@->* "Tabella vettori"
206@->* "Tabella apsetto beni"
END
GENERAL
@ -42,349 +36,360 @@ BEGIN
OFFSET 0 0
FONT "Courier New"
SIZE 12
MODULE BUFFETTI_BOLLA_01
END
SECTION HEADER ODD 33
STRINGA 1 36 1
STRING 1 36 1
BEGIN
KEY "nome ditta"
PROMPT 5 6 ""
MESSAGE _DITTA &RAGSOC
MESSAGE _DITTA,!RAGSOC
END
STRINGA 2 36 1
STRING 2 36 1
BEGIN
KEY "indirizzo ditta"
PROMPT 5 7 ""
MESSAGE _DITTA &IND
MESSAGE _DITTA,!IND
END
STRINGA 3 5 1
STRING 3 5 1
BEGIN
KEY "cap ditta"
PROMPT 5 8 ""
MESSAGE _DITTA &CAP
MESSAGE _DITTA,!CAP
END
STRINGA 4 30 1
STRING 4 30 1
BEGIN
KEY "comune ditta"
PROMPT 12 8 ""
MESSAGE _DITTA &COM
MESSAGE _DITTA,!COM
END
STRINGA 5 5 1
STRING 5 5 1
BEGIN
KEY "scritta P.IVA"
PROMPT 5 9 "P.IVA"
END
STRINGA 6 16 1
STRING 6 16 1
BEGIN
KEY "partita iva ditta"
PROMPT 11 9 ""
MESSAGE _DITTA &IVA
MESSAGE _DITTA,!IVA
END
STRINGA 7 9 1
STRING 7 9 1
BEGIN
KEY "scritta COD.FISC."
PROMPT 5 10 "COD.FISC."
END
STRINGA 8 16 1
STRING 8 16 1
BEGIN
KEY "codice fiscale ditta"
PROMPT 15 10 ""
MESSAGE _DITTA &CF
MESSAGE _DITTA,!CF
END
STRINGA 14 35 2
STRING 14 35 2
BEGIN
KEY "destinatario, ditta"
PROMPT 44 16 ""
FIELD 20->RAGSOC
END
STRINGA 15 35 2
STRING 15 35 2
BEGIN
KEY "destinatario, indirizzo"
PROMPT 44 18 ""
FIELD 20->INDCF
END
STRINGA 48 5 1
STRING 48 5 1
BEGIN
FLAGS "H"
KEY ""
PROMPT 1 1 ""
FLAGS "H"
FIELD 116@->COM
END
STRINGA 16 5 1
STRING 16 5 1
BEGIN
KEY "destinatario, cap"
PROMPT 44 20 ""
MESSAGE _ISAMREAD 13 COM==#48 CAPCOM
MESSAGE _ISAMREAD,13,COM==#48,CAPCOM
END
STRINGA 17 30 2
STRING 17 30 2
BEGIN
KEY "destinatario, comune"
PROMPT 50 20 ""
MESSAGE _ISAMREAD 13 COM==#48 DENCOM
MESSAGE _ISAMREAD,13,COM==#48,DENCOM
END
STRINGA 18 2 1
STRING 18 2 1
BEGIN
KEY "destinatario, procincia"
PROMPT 72 21 ""
MESSAGE _ISAMREAD 13 COM=#48 PROVCOM
MESSAGE _ISAMREAD,13,COM=#48,PROVCOM
END
DATA 19 8 1
DATE 19 8 1
BEGIN
KEY "data bolla"
PROMPT 60 25 ""
FIELD DATADOC
FIELD 33->DATADOC
FORMAT "1442-"
END
NUMERO 20
NUMBER 20
BEGIN
KEY "numero bolla"
PROMPT 71 25 ""
FIELD NDOC
FIELD 33->NDOC
END
STRINGA 21 30 2
STRING 21 30 2
BEGIN
KEY "destinazione, indirizzo"
PROMPT 5 16 ""
FIELD 16->INDIR
END
STRINGA 32 5 1
STRING 32 5 1
BEGIN
KEY "destinazione, cap"
PROMPT 5 18 ""
FIELD 16->CAP
END
STRINGA 49 5 1
STRING 49 5 1
BEGIN
FLAGS "H"
KEY ""
PROMPT 1 1 ""
FLAGS "H"
FIELD 16->COM
END
STRINGA 33 21 1
STRING 33 21 1
BEGIN
KEY "destinazione, comune"
PROMPT 5 20 ""
MESSAGE _ISAMREAD 13 COM=#49 DENCOM
MESSAGE _ISAMREAD,13,COM=#49,DENCOM
END
STRINGA 34 2
STRING 34 2
BEGIN
KEY "destinazione, provincia"
PROMPT 28 20 ""
MESSAGE _ISAMREAD 13 COM=#49 PROVCOM
MESSAGE _ISAMREAD,13,COM=#49,PROVCOM
END
NUMERO 22
NUMBER 22
BEGIN
KEY "ordine"
PROMPT 3 25 ""
FIELD NUMDOCRIF
FIELD 33->NUMDOCRIF
END
DATA 23 8 1
DATE 23 8 1
BEGIN
KEY "data conferma"
PROMPT 16 25 ""
FIELD DATADOCRIF
FIELD 33->DATADOCRIF
FORMAT "1442-"
END
STRINGA 24 48 1
STRING 24 48 1
BEGIN
KEY "condizioni pagamento"
PROMPT 3 27 ""
FIELD %CPG->S0
FIELD 201@->S0
END
STRINGA 25 29 1
STRING 25 29 1
BEGIN
KEY "banca appoggio"
PROMPT 53 27 ""
FIELD %BAN->S0
FIELD 204@->S0
END
STRINGA 26 7 1
STRING 26 7 1
BEGIN
KEY "codice cliente"
PROMPT 3 29 ""
FIELD CODCF
FIELD 33->CODCF
END
STRINGA 27 11 1
STRING 27 11 1
BEGIN
KEY "partita iva cliente"
PROMPT 12 29 ""
FIELD 20->PAIV
END
STRINGA 28 18 1
STRING 28 18 1
BEGIN
KEY "porto"
PROMPT 41 25 ""
FIELD %POR->S0
FIELD 203@->S0
END
NUMERO 29
NUMBER 29
BEGIN
KEY "codice agente"
PROMPT 29 29 ""
FIELD CODAG
FIELD 33->CODAG
END
STRINGA 30 28 1
STRING 30 28 1
BEGIN
KEY "nome agente"
PROMPT 33 29 ""
FIELD %AGE->S0
FIELD 202@->S0
END
END
SECTION BODY ODD 24
SECTION BODY ODD 1
STRINGA 32 13 1
STRING 32 13 1
BEGIN
KEY "codice articolo"
PROMPT 5 34 ""
PROMPT 5 1 ""
FIELD 34->CODART
END
STRINGA 33 30 1
STRING 33 30 1
BEGIN
KEY "descrizione articolo"
PROMPT 25 34 ""
PROMPT 25 1 ""
FIELD 47->DESCR
END
STRINGA 34 2 1
STRING 34 2 1
BEGIN
KEY "unità di misura"
PROMPT 56 34 ""
PROMPT 56 1 ""
FIELD 34->UMQTA
END
STRINGA 35 10 1
NUMBER 35 6 3
BEGIN
KEY "quantità"
PROMPT 60 34 ""
PROMPT 60 1 ""
PICTURE "@@@@@@,###"
FIELD 34->QTA
END
STRINGA 36 10 1
STRING 36 10 1
BEGIN
KEY "quantità lettere"
PROMPT 72 34 ""
FIELD 34->QTA
MESSAGE _CIFRELETTERE
PROMPT 72 1 ""
MESSAGE _CIFRELETTERE,#35
END
END
SECTION FOOTER ODD 9
STRINGA 47 5 1
STRING 47 5 1
BEGIN
KEY "scritta SEGUE"
PROMPT 72 70 "SEGUE"
PROMPT 72 9 "SEGUE"
END
END
SECTION FOOTER LAST 9
LISTA 37 1 1
LIST 37 1 1
BEGIN
KEY "trasporto a cura del mittente"
PROMPT 4 59 ""
PROMPT 4 1 ""
FIELD 33->CODSPMEZZO
ITEM "|"
ITEM "D|"
ITEM "V|"
ITEM "M|x"
FIELD CODSPMEZZO
END
LISTA 38 1 1
LIST 38 1 1
BEGIN
KEY "trasporto a cura del destinatario"
PROMPT 13 59 ""
PROMPT 13 1 ""
FIELD 33->CODSPMEZZO
ITEM "|"
ITEM "D|x"
FIELD CODSPMEZZO
ITEM "V|"
ITEM "M|"
END
LISTA 39 1 1
LIST 39 1 1
BEGIN
KEY "trasporto a cura del vettore"
PROMPT 23 59 ""
PROMPT 23 1 ""
FIELD 33->CODSPMEZZO
ITEM "|"
ITEM "D|"
ITEM "V|x"
FIELD CODSPMEZZO
ITEM "M|"
END
STRINGA 40 45 1
STRING 40 45 1
BEGIN
KEY "nome vettore"
PROMPT 3 62 ""
FIELD %VET->S0
PROMPT 3 4 ""
FIELD 205@->S0
END
STRINGA 41 45 1
STRING 41 45 1
BEGIN
KEY "indirizzo vettore"
PROMPT 3 64 ""
FIELD %VET->S1
PROMPT 3 6 ""
FIELD 205@->S1
END
DATA 42 8 1
DATE 42 8 1
BEGIN
KEY "data inizio trasporto"
PROMPT 51 61 ""
FIELD DATAPART
PROMPT 51 3 ""
FIELD 33->DATAPART
FORMAT "1442-"
END
STRINGA 43 5 1
STRING 43 5 1
BEGIN
KEY "ora inizio trasporto"
PROMPT 60 61 ""
FIELD ORAPART
PROMPT 60 3 ""
FIELD 33->ORAPART
END
STRINGA 44 27 1
STRING 44 27 1
BEGIN
KEY "aspetto beni"
PROMPT 37 59 ""
FIELD %ASP->S0
PROMPT 37 1 ""
FIELD 206@->S0
END
STRINGA 45 7 1
STRING 45 7 1
BEGIN
KEY "peso"
PROMPT 73 59 ""
FIELD PNETTO
PROMPT 73 1 ""
FIELD 33->PNETTO
END
STRINGA 46 5 1
STRING 46 5 1
BEGIN
KEY "colli"
PROMPT 66 59 ""
FIELD NCOLLI
PROMPT 66 1 ""
FIELD 33->NCOLLI
END
END
END

View File

@ -1,4 +1,3 @@
<<<<<<< vefat.frm
// - I FIELD sul file 20 (clifo) vanno sostituiti con messaggi _CLIENTE.
// - "Cliente provincia" e' gestito dalla relazione. Dovra' essere gestito da un messaggio _CLIENTE
@ -19,10 +18,7 @@
//
// Togliere dalla relazione i files che non servono, quando tutti i campi sono OK.
=======
>>>>>>> 1.2
USE 33
<<<<<<< vefat.frm
JOIN 34 INTO CODNUM==CODNUM ANNO==ANNO PROVV==PROVV NDOC==NDOC
JOIN 17 INTO TIPOCF==TIPOCF CODCF==CODCF
JOIN 20 INTO TIPOCF==TIPOCF CODCF==CODCF
@ -37,34 +33,11 @@ JOIN %POR INTO CODTAB==CODPORTO
JOIN %BAN INTO CODTAB==CODABIA+CODCABA
JOIN %VET INTO CODTAB==CODVETT1
JOIN %ASP INTO CODTAB==ASPBENI1
=======
JOIN 34 ALIAS 101 INTO CODNUM=CODNUM ANNO=ANNO PROVV=PROVV NDOC=NDOC
JOIN 17 ALIAS 201 INTO TIPOCF=TIPOCF CODCF=CODCF
JOIN 20 ALIAS 202 INTO TIPOCF=TIPOCF CODCF=CODCF
JOIN %CPG ALIAS 301 INTO CODTAB=CODPAG
JOIN %VAL ALIAS 302 INTO CODTAB=CODVAL
JOIN %LNG ALIAS 303 INTO CODTAB=CODLIN
JOIN AGE ALIAS 304 INTO CODTAB=CODAG
JOIN MSP ALIAS 305 INTO CODTAB=CODSPMEZZO
JOIN POR ALIAS 306 INTO CODTAB=CODPORTO
JOIN 47 TO 101@ ALIAS 401 INTO CODART=CODART
JOIN 52 ALIAS 601 INTO TIPOCF=TIPOCF CODCF=CODCF
JOIN 16 ALIAS 701 INTO TIPOCF=TIPOCF CODCF=CODCF CODIND=CODINDSP
JOIN 16 TO 201@ ALIAS 801 INTO TIPOCF=TIPOCF CODCF=CODCF CODIND=CODINDSP
JOIN %BAN ALIAS 901 INTO CODTAB=CODABIA+CODCABA
JOIN %BAN ALIAS 902 INTO CODTAB=CODABIP+CODCABP
JOIN NDO ALIAS 1001 INTO CODTAB=CODNOTESP1
JOIN NDO ALIAS 1002 INTO CODTAB=CODNOTESP2
JOIN 13 TO 304@ ALIAS 1101 INTO COM=COMCF
JOIN 13 TO 304@ ALIAS 1102 INTO COM=COM
>>>>>>> 1.2
END
DESCRIPTION
BEGIN
33->* "Documenti di vendita"
<<<<<<< vefat.frm
34->* "Righe documenti di vendita"
17->* "Clienti/Fornitori per vendite"
20->* "Clienti/Fornitori"
@ -78,27 +51,6 @@ BEGIN
%MSP ->* "Modalità di spedizioni"
%POR ->* "Modalità di consegna"
%BAN ->* "Banche"
=======
101@->* "Righe documenti di vendita"
201@->* "Clienti/Fornitori per vendite"
202@->* "Clienti/Fornitori"
301@->* "CPG"
302@->* "VAL"
303@->* "LNG"
304@->* "AGE"
305@->* "MSP"
306@->* "POR"
401@->* "Righe listini"
601@->* "Contratti clienti"
701@->* "Indirizzi di spedizione"
801@->* "Indirizzi di spedizione"
901@->* "Tabella banche"
902@->* "Tabella banche"
1001@->* "Tabella Note Documento"
1002@->* "Tabella Note Documento"
1101@->* "Comuni"
1102@->* "Comuni"
>>>>>>> 1.2
END
GENERAL
@ -223,23 +175,15 @@ DATA 20 8 1
BEGIN
KEY "data conferma"
PROMPT 20 23 ""
<<<<<<< vefat.frm
FIELD DATADOCRIF
FORMAT "1444-"
=======
FIELD 33->DATADOCRIF
>>>>>>> 1.2
END
STRINGA 21 49 1
BEGIN
KEY "condizioni di pagamento"
PROMPT 3 25 ""
<<<<<<< vefat.frm
FIELD %CPG->S0
=======
FIELD 901@->S0
>>>>>>> 1.2
END
STRINGA 22 29 1
@ -285,26 +229,12 @@ BEGIN
PROMPT 50 15 ""
END
<<<<<<< vefat.frm
STRINGA 30 2 1
BEGIN
KEY "cliente provincia"
PROMPT 73 16 ""
FIELD 13->PROVCOM
END
=======
STRINGA 29 20 1
BEGIN
KEY "cliente localita 2"
PROMPT 50 16 ""
END
STRINGA 30 2 1
BEGIN
KEY "cliente provincia"
PROMPT 73 16 ""
END
>>>>>>> 1.2
STRINGA 31 2 1
BEGIN
@ -587,10 +517,7 @@ STRINGA 75 12 1
BEGIN
KEY "netto da pagare"
PROMPT 71 66 ""
<<<<<<< vefat.frm
MESSAGE _COD_TESTA NETPAG
=======
>>>>>>> 1.2
END
END