diff --git a/ve/ve1100.cpp b/ve/ve1100.cpp index 0675f0171..634efa303 100755 --- a/ve/ve1100.cpp +++ b/ve/ve1100.cpp @@ -17,9 +17,16 @@ #include "ve1100.h" #include "ve0100b.h" +#include "ve0100c.h" +// !! Attenzione: per la compilazione di questo programma deve essere definito il simbolo +// !! __VE1100_DOWNSIZE, altrimenti in righedoc.cpp si creano degli +// !! unresolved reference in fase di link + + + //////////////////////////////////////////////////////////////////////////// // classe TDocVen_Form customizzata dalla Form per i documenti di vendita //////////////////////////////////////////////////////////////////////////// @@ -43,7 +50,8 @@ public: -TDocVen_Form::TDocVen_Form(const char* name, TRelation &rel): TForm(name), _firmrel(rel) { +TDocVen_Form::TDocVen_Form(const char* name, TRelation &rel): TForm(), _firmrel(rel) { + read(name); _total_prog= new TPiede_documento; _riga= new TRiga; _cliente= new TCliFor; @@ -67,7 +75,7 @@ word TDocVen_Form::set_body(word p, bool u) { } 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... + 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 } @@ -171,34 +179,34 @@ bool TDocVen_Form::validate(TForm_item &cf, TToken_string &s) { } return (TRUE); } // fine _TABLEREAD - + if (code== "_ALIGN") { // allineamento della posizione di un campo rispetto ad un altro - // sintassi: _ALIGN,,[,] + // sintassi: _ALIGN,[,][,...] // dove: è il campo della form (preceduto da '#') da cui prendere l'allineamento - // è uno dei seguenti valori: + // è uno dei seguenti valori: // TOP allinea sulla riga d'inizio // MIDDLE allinea al centro (effettivo) // BOTTOM allinea sulla riga di fine (effettiva, non preimpostata) - // è uno dei seguenti valori: // LEFT allinea sulla colonna d'inizio // RIGHT allinea sulla colonna di fine - TString in(s.get()), alver(s.get()); + TString in(s.get()); if (in[0]== '#') in.ltrim(1); TForm_item &fi= cf.find_field(in); - if (alver[0]=='!') alver.ltrim(1); - if (alver== "TOP") cf.y()= fi.y(); - if (alver== "MIDDLE") cf.y()= fi.y()+ fi.effective_height()/2; - if (alver== "BOTTOM") cf.y()= fi.y()+ fi.effective_height()-1; - if (s.items()==4) { - TString alor(s.get()); - if (alor[0]=='!') alor.ltrim(1); - if (alor== "LEFT") cf.x()= fi.x(); - if (alor== "RIGHT") cf.x()= fi.x()+ fi.width(); + int i= 2; + while (i|} diff --git a/ve/ve2300.cpp b/ve/ve2300.cpp index 28790db6e..337f09ce8 100755 --- a/ve/ve2300.cpp +++ b/ve/ve2300.cpp @@ -3,6 +3,7 @@ #include #include "ve2300.h" +#include "veconf.h" #define DESTROY(x) { _msk->field(x).reset_key(1); _msk->hide(x); } #define CREATE(x) { _msk->field(x).set_key(1); _msk->show(x); } @@ -18,7 +19,8 @@ class TRighe_condizioni_vendita: public TRelation_application { TString16 _rcondven; // stringa che indica il tipo di archivio bool _codlis_catven; // booleano di abilitazione del campo CATVEN bool _codcon_codcf; // booleano di abilitazioni dei campi TIPOCF e CODCF - bool _gest_um; // variabile di abilitazione delle unità di misura + bool _um; // booleano di abilitazione locale delle unità di misura + bool _gest_um, _gest_sca, _gest_so; // variabili di abilitazione deunità di misura, scaglioni e sconti/omaggi virtual bool user_create(); virtual bool user_destroy(); @@ -77,6 +79,9 @@ bool TRighe_condizioni_vendita::user_create() { _msk->hide(F_R_O_ARTES); _codlis_catven= prassid.get_bool("GESLISCV"); // setta il booleano di abilitazione di CATVEN if (!_codlis_catven) KILL(F_R_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 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 gotcha= TRUE; @@ -96,6 +101,9 @@ bool TRighe_condizioni_vendita::user_create() { KILL(F_R_C_TIPOCF); KILL(F_R_C_CODCF); } + _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 set_search_field(F_R_C_RICERCA); // impostazione del campo di ricerca _msk->set_handler(F_R_C_COD, handle_cod); // impostazione dell'handler sul campo di controllo della testata gotcha= TRUE; @@ -112,6 +120,9 @@ bool TRighe_condizioni_vendita::user_create() { _msk->hide(F_R_C_DES); _msk->hide(F_R_L_RICERCA); _msk->hide(F_R_C_RICERCA); + _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 set_search_field(F_R_O_RICERCA); // impostazione del campo di ricerca _msk->set_handler(F_R_O_COD, handle_cod); // impostazione dell'handler sul campo di controllo della testata gotcha= TRUE; @@ -124,7 +135,7 @@ bool TRighe_condizioni_vendita::user_create() { _rel= new TRelation(LF_RCONDV); // apre la relazione (un unico file) _msk->set(F_R_TIPO, _rcondven); // settaggio del campo di tipo archivio _msk->set_handler(F_R_TIPORIGA, handle_tiporiga); // impostazione dell'handler sul campo di selezione del tipo della riga - _gest_um= TRUE; // abilita la gestione delle unità di misura (di default) + _um= _gest_um; // abilita le unità di misura in base alla configurazione hide_and_show_codriga(); // invoca la procedura di controllo della mutua esclusione dei tre campi CODRIGA } return (gotcha); @@ -142,7 +153,7 @@ void TRighe_condizioni_vendita::hide_and_show_codriga() { short id_campi_1[4]= { F_R_CODRIGA_A, F_R_CODRIGA_G, F_R_CODRIGA_S, F_R_CODRIGA_R }; // vettore degli identificatori dei tre campi CODRIGA in mutua esclusione short id_campi_2[4]= { F_R_DESRIGA_A, F_R_DESRIGA_G, F_R_DESRIGA_S, F_R_DESRIGA_R }; // vettore degli identificatori dei tre campi CODRIGA in mutua esclusione char tag_campi[4]= { 'A', 'G', 'S', 'R' }; // vettore dei tag di TIPORIGA per i tre campi CODRIGA in mutua esclusione - bool &_gest_um= app()._gest_um; // prende il riferimento al booleano di abilitazione delle unità di misura + bool &_um= app()._um; // prende il riferimento al booleano di abilitazione locale delle unità di misura TString &_rcondven= app()._rcondven; // prende il riferimento alla stringa di tipo di archivio char tag_campo= toupper(_msk->get(F_R_TIPORIGA)[0]); // prende il tag del campo da abilitare in TIPORIGA for (int i=0; i<4; i++) { // ciclo sui quattro campi CODRIGA @@ -154,7 +165,7 @@ void TRighe_condizioni_vendita::hide_and_show_codriga() { _msk->hide(id_campi_2[i]); } } - if (_gest_um && (tag_campo=='A')) { REVIVE(F_R_UM); } // se la gest. delle u.m. è abilitata, il campo viene attivato se la riga è un articolo... + if (_um && (tag_campo=='A')) { REVIVE(F_R_UM); } // se la gest. delle u.m. è abilitata, il campo viene attivato se la riga è un articolo... else { KILL(F_R_UM); } // ...altrimenti viene disattivato } } @@ -167,6 +178,9 @@ bool TRighe_condizioni_vendita::handle_tiporiga(TMask_field &fld, KEY k) { bool TRighe_condizioni_vendita::handle_cod(TMask_field &fld, KEY k) { if ((k==K_TAB) && fld.get().not_empty()) { bool &_gest_um= app()._gest_um; // prende il riferimento al booleano di abilitazione delle unità di misura + bool &_gest_so= app()._gest_so; // prende il riferimento al booleano di abilitazione degli sconti/omaggi + bool &_gest_sca= app()._gest_sca; // prende il riferimento al booleano di abilitazione degli scaglioni + bool &_um= app()._um; // prende il riferimento al booleano di abilitazione locale delle unità di misura TString &_rcondven= app()._rcondven; // prende il riferimento alla stringa di indicazione del tipo di archivio TMask *_msk= app()._msk; // prende il puntatore alla maschera principale dell'applicazione TLocalisamfile condv(LF_CONDV); // apre il file della testata (condizioni di vendita) @@ -186,29 +200,29 @@ bool TRighe_condizioni_vendita::handle_cod(TMask_field &fld, KEY k) { break; } if (condv.read()==NOERR) { // se la lettura è andata a buon fine abilita/disabilita i campi della maschera in base ai booleani della testata - _gest_um= condv.get_bool("GESTUM"); // legge lo stato di abilitazione della gestione delle unità di misura + if (_gest_um) _um= condv.get_bool("GESTUM"); // legge lo stato di abilitazione della gestione delle unità di misura hide_and_show_codriga(); // lancia la funzione che si occupa di abilitare/disabilitare il campo "unità di misura" - if (!condv.get_bool("GESTSCAGL")) { - KILL(F_R_NSCAGL); // disabilita il campo "numero scaglione" - _msk->disable(F_R_QLIM); // disabilita il campo "quantità limite scaglione" - } else { + if (_gest_sca && condv.get_bool("GESTSCAGL")) { REVIVE(F_R_NSCAGL); // abilita il campo "numero scaglione" _msk->enable(F_R_QLIM); // abilita il campo "quantità limite scaglione" + } else { + KILL(F_R_NSCAGL); // disabilita il campo "numero scaglione" + _msk->disable(F_R_QLIM); // disabilita il campo "quantità limite scaglione" } - if (condv.get_bool("SCONST") || condv.get_bool("GESTSCO")) _msk->enable(F_R_SCONTO); // abilita il campo "sconto" + if (condv.get_bool("SCONST") || (_gest_um && condv.get_bool("GESTSCO"))) _msk->enable(F_R_SCONTO); // abilita il campo "sconto" else _msk->disable(F_R_SCONTO); // disabilita il campo "sconto" - if (!condv.get_bool("GESTSCO")) { + if (_gest_so && condv.get_bool("GESTSCO")) { + _msk->enable(F_R_QOM); // abilita il campo "quantità art. omaggio" + _msk->enable(F_R_QBASE); // abilita il campo "quantità base x sconto" + _msk->enable(F_R_CODARTOM); // abilita il campo "codice articolo omaggio" + _msk->enable(F_R_PROMAGGIO); // abilita il campo "prezzo omaggio" + if (_gest_um) _msk->enable(F_R_UMOM); // abilita il campo "unità di misura art. omaggio" + } else { _msk->disable(F_R_QOM); // disabilita il campo "quantità art. omaggio" _msk->disable(F_R_QBASE); // disabilita il campo "quantità base x sconto" _msk->disable(F_R_CODARTOM); // disabilita il campo "codice articolo omaggio" _msk->disable(F_R_PROMAGGIO); // disabilita il campo "prezzo omaggio" _msk->disable(F_R_UMOM); // disabilita il campo "unità di misura art. omaggio" - } else { - _msk->enable(F_R_QOM); // abilita il campo "quantità art. omaggio" - _msk->enable(F_R_QBASE); // abilita il campo "quantità base x sconto" - _msk->enable(F_R_CODARTOM); // abilita il campo "codice articolo omaggio" - _msk->enable(F_R_PROMAGGIO); // abilita il campo "prezzo omaggio" - _msk->enable(F_R_UMOM); // abilita il campo "unità di misura art. omaggio" } return TRUE; } else { diff --git a/ve/vebol.frm b/ve/vebol.frm index dfe26230b..3ef1db022 100755 --- a/ve/vebol.frm +++ b/ve/vebol.frm @@ -1,10 +1,7 @@ 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 INTO CODART==CODART JOIN %CPG TO 33 ALIAS 201 INTO CODTAB==CODPAG JOIN %AGE TO 33 ALIAS 202 INTO CODTAB==CODAG @@ -18,10 +15,7 @@ DESCRIPTION BEGIN 34->* "Righe documenti di vendita" 33->* "Documenti di vendita" - 17->* "Clienti/Fornitori per vendite" - 20->* "Clienti/Fornitori" 16->* "Indirizzi di spedizione (destinazione)" - 116@->* "Indirizzi di spedizione (destinatario)" 47->* "Anagrafica magazzino" 201@->* "Tabella condizioni di pagamento" 202@->* "Tabella agenti" @@ -36,38 +30,37 @@ BEGIN OFFSET 0 0 FONT "Courier New" SIZE 12 - MODULE BUFFETTI_BOLLA_01 + MODULE "BUFFETTI_BOLLA_01" END -///////////////////////////////////////////////// SECTION HEADER ODD 33 STRING 1 36 1 BEGIN KEY "nome ditta" PROMPT 5 6 "" - MESSAGE _DITTA,!RAGSOC + MESSAGE INIT _DITTA,!RAGSOC END STRING 2 36 1 BEGIN KEY "indirizzo ditta" PROMPT 5 7 "" - MESSAGE _DITTA,!IND + MESSAGE INIT _DITTA,!IND END STRING 3 5 1 BEGIN KEY "cap ditta" PROMPT 5 8 "" - MESSAGE _DITTA,!CAP + MESSAGE INIT _DITTA,!CAP END STRING 4 30 1 BEGIN KEY "comune ditta" PROMPT 12 8 "" - MESSAGE _DITTA,!COM + MESSAGE INIT _DITTA,!COM END STRING 5 5 1 @@ -80,7 +73,7 @@ STRING 6 16 1 BEGIN KEY "partita iva ditta" PROMPT 11 9 "" - MESSAGE _DITTA,!IVA + MESSAGE INIT _DITTA,!IVA END STRING 7 9 1 @@ -93,50 +86,42 @@ STRING 8 16 1 BEGIN KEY "codice fiscale ditta" PROMPT 15 10 "" - MESSAGE _DITTA,!CF + MESSAGE INIT _DITTA,!CF END STRING 14 35 2 BEGIN KEY "destinatario, ditta" PROMPT 44 16 "" - FIELD 20->RAGSOC + MESSAGE INIT _CLIENTE,!RAGSOC END STRING 15 35 2 BEGIN KEY "destinatario, indirizzo" PROMPT 44 18 "" - FIELD 20->INDCF -END - -STRING 48 5 1 -BEGIN - KEY "" - PROMPT 1 1 "" - FLAGS "H" - FIELD 116@->COM + MESSAGE INIT _CLIENTE,!IND END STRING 16 5 1 BEGIN KEY "destinatario, cap" PROMPT 44 20 "" - MESSAGE _ISAMREAD,13,COM==#48,CAPCOM + MESSAGE INIT _CLIENTE,!CAP END STRING 17 30 2 BEGIN KEY "destinatario, comune" PROMPT 50 20 "" - MESSAGE _ISAMREAD,13,COM==#48,DENCOM + MESSAGE INIT _CLIENTE,!COM END STRING 18 2 1 BEGIN - KEY "destinatario, procincia" + KEY "destinatario, provincia" PROMPT 72 21 "" - MESSAGE _ISAMREAD,13,COM=#48,PROVCOM + MESSAGE INIT _CLIENTE,!PROV END DATE 19 8 1 @@ -180,14 +165,14 @@ STRING 33 21 1 BEGIN KEY "destinazione, comune" PROMPT 5 20 "" - MESSAGE _ISAMREAD,13,COM=#49,DENCOM + MESSAGE INIT _ISAMREAD,13,COM=#49,DENCOM END STRING 34 2 BEGIN KEY "destinazione, provincia" PROMPT 28 20 "" - MESSAGE _ISAMREAD,13,COM=#49,PROVCOM + MESSAGE INIT _ISAMREAD,13,COM=#49,PROVCOM END NUMBER 22 @@ -230,7 +215,7 @@ STRING 27 11 1 BEGIN KEY "partita iva cliente" PROMPT 12 29 "" - FIELD 20->PAIV + MESSAGE INIT _CLIENTE,!IVA END STRING 28 18 1 @@ -256,8 +241,7 @@ END END -///////////////////////////////////////////////// -SECTION BODY ODD 1 +SECTION BODY ODD 5 STRING 32 13 1 BEGIN @@ -266,13 +250,20 @@ BEGIN FIELD 34->CODART END -STRING 33 30 1 +STRING 33 10 4 BEGIN KEY "descrizione articolo" PROMPT 25 1 "" FIELD 47->DESCR END +STRING 90 12 1 +BEGIN + KEY "campo di prova per gli allineamenti" + PROMPT 42 1 "allineamento" + MESSAGE INIT _ALIGN,#33,BOTTOM +END + STRING 34 2 1 BEGIN KEY "unità di misura" @@ -292,12 +283,11 @@ STRING 36 10 1 BEGIN KEY "quantità lettere" PROMPT 72 1 "" - MESSAGE _CIFRELETTERE,#35 + MESSAGE INIT _CIFRELETTERE,#35 END END -///////////////////////////////////////////////// SECTION FOOTER ODD 9 STRING 47 5 1 @@ -308,7 +298,6 @@ END END -///////////////////////////////////////////////// SECTION FOOTER LAST 9 LIST 37 1 1