Non ho fatto nulla!!!!!

git-svn-id: svn://10.65.10.50/trunk@2104 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
villa 1995-11-07 11:39:13 +00:00
parent 93767d062c
commit 1bba777584
5 changed files with 893 additions and 893 deletions

View File

@ -1,99 +1,99 @@
#include <relapp.h> #include <relapp.h>
#include <config.h> #include <config.h>
#include "ve2100.h" #include "ve2100.h"
#define KILL(x) { _msk->field(x).reset_key(1); _msk->disable(x); } #define KILL(x) { _msk->field(x).reset_key(1); _msk->disable(x); }
#define REVIVE(x) { _msk->field(x).set_key(1); _msk->enable(x); } #define REVIVE(x) { _msk->field(x).set_key(1); _msk->enable(x); }
class TTabelle_sconti: public TRelation_application { class TTabelle_sconti: public TRelation_application {
TMask *_msk; // maschera principale TMask *_msk; // maschera principale
TRelation *_rel; // relazione principale TRelation *_rel; // relazione principale
char _sconti; // carattere che indica il tipo di tabella char _sconti; // carattere che indica il tipo di tabella
bool _catven; // abilitazione della gestione della categoria di vendita bool _catven; // abilitazione della gestione della categoria di vendita
TString _gessco; // indicatore di abilitazione degli sconti incondizionati TString _gessco; // indicatore di abilitazione degli sconti incondizionati
virtual bool user_create(); virtual bool user_create();
virtual bool user_destroy(); virtual bool user_destroy();
virtual TMask *get_mask(int) { return _msk; } virtual TMask *get_mask(int) { return _msk; }
virtual bool changing_mask(int) { return FALSE; } virtual bool changing_mask(int) { return FALSE; }
virtual TRelation *get_relation() const { return _rel; } virtual TRelation *get_relation() const { return _rel; }
public: public:
TTabelle_sconti() {} TTabelle_sconti() {}
virtual ~TTabelle_sconti() {} virtual ~TTabelle_sconti() {}
}; };
bool TTabelle_sconti::user_create() { bool TTabelle_sconti::user_create() {
bool gotcha= FALSE; // booleano di avvenuta inizializzazione bool gotcha= FALSE; // booleano di avvenuta inizializzazione
short sci_k_id[4]; // vettore degli identificatori dei campi chiave per la maschera degli sconti incondizionati short sci_k_id[4]; // vettore degli identificatori dei campi chiave per la maschera degli sconti incondizionati
int i; // indice di ciclo int i; // indice di ciclo
_sconti= '*'; // inizializzazione dell'indicatore del tipo di tabella _sconti= '*'; // inizializzazione dell'indicatore del tipo di tabella
if (argc()>2) _sconti= toupper((argv(2))[0]); // se c'è, prende il tipo di tabella dalla linea di comando if (argc()>2) _sconti= toupper((argv(2))[0]); // se c'è, prende il tipo di tabella dalla linea di comando
else { else {
TMask choose("VE2100"); // istanzia la maschera di scelta del tipo di tabella TMask choose("VE2100"); // istanzia la maschera di scelta del tipo di tabella
if (choose.run() == K_ENTER) _sconti= toupper((choose.get(F_TIPOSC))[0]); // prende il tipo di tabella dalla maschera if (choose.run() == K_ENTER) _sconti= toupper((choose.get(F_TIPOSC))[0]); // prende il tipo di tabella dalla maschera
} }
TConfig prassid(CONFIG_DITTA, "ve"); // apre il file di configurazione di ditta TConfig prassid(CONFIG_DITTA, "ve"); // apre il file di configurazione di ditta
switch (_sconti) { switch (_sconti) {
case 'D': // sconti documento case 'D': // sconti documento
_msk= new TMask("VE2100D"); // apre la maschera relativa _msk= new TMask("VE2100D"); // apre la maschera relativa
set_search_field(F_D_CODCAT); // setta il campo di ricerca set_search_field(F_D_CODCAT); // setta il campo di ricerca
gotcha= TRUE; gotcha= TRUE;
break; break;
case 'R': // sconti di riga case 'R': // sconti di riga
_msk= new TMask("VE2100R"); // apre la maschera relativa _msk= new TMask("VE2100R"); // apre la maschera relativa
set_search_field(F_R_RICERCA); // setta il campo di ricerca set_search_field(F_R_RICERCA); // setta il campo di ricerca
_catven= prassid.get_bool("GESLISCV"); // legge il parametro di abilitazione delle categorie di vendita _catven= prassid.get_bool("GESLISCV"); // legge il parametro di abilitazione delle categorie di vendita
if (!_catven) KILL(F_R_CODCAT); // se non è abilitato, viene disabilitato anche il campo if (!_catven) KILL(F_R_CODCAT); // se non è abilitato, viene disabilitato anche il campo
gotcha= TRUE; gotcha= TRUE;
break; break;
case 'I': // sconti incondizionati case 'I': // sconti incondizionati
_gessco= prassid.get("GESSCO"); // legge lo stato del parametro di abilitazione degli sconti _gessco= prassid.get("GESSCO"); // legge lo stato del parametro di abilitazione degli sconti
if (_gessco=="A") { if (_gessco=="A") {
_msk= new TMask("VE2100I"); // apre la maschera relativa _msk= new TMask("VE2100I"); // apre la maschera relativa
set_search_field(F_I_RICERCA); // setta il campo di ricerca set_search_field(F_I_RICERCA); // setta il campo di ricerca
sci_k_id[0]= F_I_CATVEN; // inizializza l'array dei campi da disabilitare condizionalmente sci_k_id[0]= F_I_CATVEN; // inizializza l'array dei campi da disabilitare condizionalmente
sci_k_id[1]= F_I_SCCLIENTI; sci_k_id[1]= F_I_SCCLIENTI;
sci_k_id[2]= F_I_ZONE; sci_k_id[2]= F_I_ZONE;
sci_k_id[3]= F_I_CONDPAG; sci_k_id[3]= F_I_CONDPAG;
for (i=0; i<4; i++) { for (i=0; i<4; i++) {
if (prassid.get_bool("SCOKEY", NULL, i+1)) { // se nel file di config. il campo è abilitato... if (prassid.get_bool("SCOKEY", NULL, i+1)) { // se nel file di config. il campo è abilitato...
REVIVE(sci_k_id[i]); // ...il campo viene abilitato anche sulla maschera... REVIVE(sci_k_id[i]); // ...il campo viene abilitato anche sulla maschera...
gotcha= TRUE; // ...e viene settato il flag di ok 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 } else KILL(sci_k_id[i]); // se nel file di config. il campo non è abilitato viene disabilitato anche sulla maschera
} }
_catven= prassid.get_bool("GESLISCV"); // legge il parametro di abilitazione delle categorie di vendita _catven= prassid.get_bool("GESLISCV"); // legge il parametro di abilitazione delle categorie di vendita
if (!_catven) KILL(sci_k_id[1]); // se non è abilitato, viene disabilitato anche il campo if (!_catven) KILL(sci_k_id[1]); // se non è abilitato, viene disabilitato anche il campo
if (!gotcha) error_box("Non ci sono campi chiave abilitati nella configurazione della ditta"); if (!gotcha) error_box("Non ci sono campi chiave abilitati nella configurazione della ditta");
} else error_box("Gli sconti incondizionati non sono abilitati nella configurazione"); } else error_box("Gli sconti incondizionati non sono abilitati nella configurazione");
break; break;
default: // messaggio di errore se si indica una tabella non valida default: // messaggio di errore se si indica una tabella non valida
error_box("Indicare la tabella sulla linea di comando (D, R o I) oppure selezionarla dalla maschera di partenza"); error_box("Indicare la tabella sulla linea di comando (D, R o I) oppure selezionarla dalla maschera di partenza");
break; break;
} }
if (gotcha) _rel= new TRelation(LF_SCONTI); // se è stata selezionata una tabella, apre la relazione (un unico file) if (gotcha) _rel= new TRelation(LF_SCONTI); // se è stata selezionata una tabella, apre la relazione (un unico file)
return (gotcha); return (gotcha);
} }
bool TTabelle_sconti::user_destroy() { bool TTabelle_sconti::user_destroy() {
delete _rel; delete _rel;
delete _msk; delete _msk;
return TRUE; return TRUE;
} }
int ve2100(int argc, char* argv[]) { int ve2100(int argc, char* argv[]) {
TTabelle_sconti a; TTabelle_sconti a;
a.run(argc, argv, "Tabella sconti "); a.run(argc, argv, "Tabella sconti ");
return 0; return 0;
} }

View File

@ -1,139 +1,139 @@
#include <lffiles.h> #include <lffiles.h>
#include "ve2100i.h" #include "ve2100i.h"
TOOLBAR "" 0 20 60 2 TOOLBAR "" 0 20 60 2
#include <toolbar.h> #include <toolbar.h>
ENDPAGE ENDPAGE
PAGE "Archivio sconti incondizionati " 11 60 14 PAGE "Archivio sconti incondizionati " 11 60 14
LISTA F_I_TIPO 1 LISTA F_I_TIPO 1
BEGIN BEGIN
PROMPT 100 100 "" PROMPT 100 100 ""
FIELD LF_SCONTI->TIPO FIELD LF_SCONTI->TIPO
FLAG "H" FLAG "H"
ITEM "I|Sconti incondizionati" ITEM "I|Sconti incondizionati"
END END
STRING F_I_RICERCA 1 STRING F_I_RICERCA 1
BEGIN BEGIN
PROMPT 100 100 "" PROMPT 100 100 ""
FLAG "H" FLAG "H"
USE LF_SCONTI USE LF_SCONTI
INPUT TIPO F_I_TIPO SELECT INPUT TIPO F_I_TIPO SELECT
INPUT CODCAT F_I_CATVEN INPUT CODCAT F_I_CATVEN
INPUT CODART[1,2] F_I_SCCLIENTI INPUT CODART[1,2] F_I_SCCLIENTI
INPUT CODART[3,4] F_I_ZONE INPUT CODART[3,4] F_I_ZONE
INPUT CODART[5,8] F_I_CONDPAG INPUT CODART[5,8] F_I_CONDPAG
DISPLAY "CV" CODCAT DISPLAY "CV" CODCAT
DISPLAY "SC" CODART[1,2] DISPLAY "SC" CODART[1,2]
DISPLAY "ZN" CODART[3,4] DISPLAY "ZN" CODART[3,4]
DISPLAY "C.P." CODART[5,8] DISPLAY "C.P." CODART[5,8]
DISPLAY "Sconto@25" SCONTO DISPLAY "Sconto@25" SCONTO
OUTPUT F_I_CATVEN CODCAT OUTPUT F_I_CATVEN CODCAT
OUTPUT F_I_SCCLIENTI CODART[1,2] OUTPUT F_I_SCCLIENTI CODART[1,2]
OUTPUT F_I_ZONE CODART[3,4] OUTPUT F_I_ZONE CODART[3,4]
OUTPUT F_I_CONDPAG CODART[5,8] OUTPUT F_I_CONDPAG CODART[5,8]
OUTPUT F_I_SCONTO SCONTO OUTPUT F_I_SCONTO SCONTO
END END
STRING F_I_CATVEN 2 STRING F_I_CATVEN 2
BEGIN BEGIN
PROMPT 2 2 "Cat. vendite " PROMPT 2 2 "Cat. vendite "
FIELD LF_SCONTI->CODCAT FIELD LF_SCONTI->CODCAT
FLAG "U" FLAG "U"
KEY 1 KEY 1
USE %CVE USE %CVE
INPUT CODTAB F_I_CATVEN INPUT CODTAB F_I_CATVEN
DISPLAY "Cat. vend." CODTAB DISPLAY "Cat. vend." CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT F_I_CATVEN CODTAB OUTPUT F_I_CATVEN CODTAB
OUTPUT F_I_DESVEN S0 OUTPUT F_I_DESVEN S0
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
END END
STRING F_I_DESVEN 50 STRING F_I_DESVEN 50
BEGIN BEGIN
PROMPT 24 2 "" PROMPT 24 2 ""
FLAG "D" FLAG "D"
END END
STRING F_I_SCCLIENTI 2 STRING F_I_SCCLIENTI 2
BEGIN BEGIN
PROMPT 2 4 "Sconto cliente " PROMPT 2 4 "Sconto cliente "
FIELD LF_SCONTI->CODART[1,2] FIELD LF_SCONTI->CODART[1,2]
FLAG "U" FLAG "U"
KEY 1 KEY 1
USE LF_SCONTI USE LF_SCONTI
INPUT TIPO "D" SELECT INPUT TIPO "D" SELECT
INPUT CODCAT F_I_SCCLIENTI INPUT CODCAT F_I_SCCLIENTI
DISPLAY "Sc. Cliente" CODCAT DISPLAY "Sc. Cliente" CODCAT
DISPLAY "Descrizione@50" DESCR DISPLAY "Descrizione@50" DESCR
OUTPUT F_I_SCCLIENTI CODCAT OUTPUT F_I_SCCLIENTI CODCAT
OUTPUT F_I_DESSCCLI DESCR OUTPUT F_I_DESSCCLI DESCR
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
END END
STRING F_I_DESSCCLI 50 STRING F_I_DESSCCLI 50
BEGIN BEGIN
PROMPT 24 4 "" PROMPT 24 4 ""
FLAG "D" FLAG "D"
END END
STRING F_I_ZONE 2 STRING F_I_ZONE 2
BEGIN BEGIN
PROMPT 2 6 "Zona " PROMPT 2 6 "Zona "
FIELD LF_SCONTI->CODART[3,4] FIELD LF_SCONTI->CODART[3,4]
FLAG "U" FLAG "U"
KEY 1 KEY 1
USE %ZON USE %ZON
INPUT CODTAB F_I_ZONE INPUT CODTAB F_I_ZONE
DISPLAY "Zona" CODTAB DISPLAY "Zona" CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT F_I_ZONE CODTAB OUTPUT F_I_ZONE CODTAB
OUTPUT F_I_DESZONE S0 OUTPUT F_I_DESZONE S0
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
END END
STRING F_I_DESZONE 50 STRING F_I_DESZONE 50
BEGIN BEGIN
PROMPT 24 6 "" PROMPT 24 6 ""
FLAG "D" FLAG "D"
END END
STRING F_I_CONDPAG 4 STRING F_I_CONDPAG 4
BEGIN BEGIN
PROMPT 2 8 "Cond. pagam. " PROMPT 2 8 "Cond. pagam. "
FIELD LF_SCONTI->CODART[5,8] FIELD LF_SCONTI->CODART[5,8]
FLAG "U" FLAG "U"
KEY 1 KEY 1
USE %CPG USE %CPG
INPUT CODTAB F_I_CONDPAG INPUT CODTAB F_I_CONDPAG
DISPLAY "Cond. pag." CODTAB DISPLAY "Cond. pag." CODTAB
DISPLAY "Descrizione@50" S0 DISPLAY "Descrizione@50" S0
OUTPUT F_I_CONDPAG CODTAB OUTPUT F_I_CONDPAG CODTAB
OUTPUT F_I_DESCONPAG S0 OUTPUT F_I_DESCONPAG S0
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
END END
STRING F_I_DESCONPAG 50 STRING F_I_DESCONPAG 50
BEGIN BEGIN
PROMPT 24 8 "" PROMPT 24 8 ""
FLAG "D" FLAG "D"
END END
GROUPBOX DLG_NULL 78 11 GROUPBOX DLG_NULL 78 11
BEGIN BEGIN
PROMPT 0 0 "" PROMPT 0 0 ""
FLAG "R" FLAG "R"
END END
STRING F_I_SCONTO 25 STRING F_I_SCONTO 25
BEGIN BEGIN
PROMPT 2 12 "Sconto " PROMPT 2 12 "Sconto "
FIELD LF_SCONTI->SCONTO FIELD LF_SCONTI->SCONTO
END END
ENDPAGE ENDPAGE
ENDMASK ENDMASK

View File

@ -1,251 +1,251 @@
#include <relapp.h> #include <relapp.h>
#include <config.h> #include <config.h>
#include "ve2300.h" #include "ve2300.h"
#define DESTROY(x) { _msk->field(x).reset_key(1); _msk->hide(x); } #define DESTROY(x) { _msk->field(x).reset_key(1); _msk->hide(x); }
#define CREATE(x) { _msk->field(x).set_key(1); _msk->show(x); } #define CREATE(x) { _msk->field(x).set_key(1); _msk->show(x); }
#define KILL(x) { _msk->field(x).reset_key(1); _msk->disable(x); } #define KILL(x) { _msk->field(x).reset_key(1); _msk->disable(x); }
#define REVIVE(x) { _msk->field(x).set_key(1); _msk->enable(x); } #define REVIVE(x) { _msk->field(x).set_key(1); _msk->enable(x); }
class TRighe_condizioni_vendita: public TRelation_application { class TRighe_condizioni_vendita: public TRelation_application {
TMask *_msk; // maschera principale TMask *_msk; // maschera principale
TRelation *_rel; // relazione principale TRelation *_rel; // relazione principale
TString16 _rcondven; // stringa che indica il tipo di archivio TString16 _rcondven; // stringa che indica il tipo di archivio
bool _codlis_catven; // booleano di abilitazione del campo CATVEN bool _codlis_catven; // booleano di abilitazione del campo CATVEN
bool _codcon_codcf; // booleano di abilitazioni dei campi TIPOCF e CODCF bool _codcon_codcf; // booleano di abilitazioni dei campi TIPOCF e CODCF
bool _gest_um; // variabile di abilitazione delle unità di misura bool _gest_um; // variabile di abilitazione delle unità di misura
virtual bool user_create(); virtual bool user_create();
virtual bool user_destroy(); virtual bool user_destroy();
virtual TMask *get_mask(int) { return _msk; } // punto d'aggancio tra la maschera della rel.app. e la maschera principale dell'applicazione virtual TMask *get_mask(int) { return _msk; } // punto d'aggancio tra la maschera della rel.app. e la maschera principale dell'applicazione
virtual bool changing_mask(int) { return FALSE; } // ritorna il flag di cambio maschera a seconda dei modi di funzionamento, in questa applicazione la maschera è una sola quindi il flag è FALSE virtual bool changing_mask(int) { return FALSE; } // ritorna il flag di cambio maschera a seconda dei modi di funzionamento, in questa applicazione la maschera è una sola quindi il flag è FALSE
virtual bool changing_keys() const { return TRUE; } // ritorna il flag di rigenerazione della lista delle chiavi ad ogni find(), in questa applicazione le chiavi cambiano continuamente quindi il flag è TRUE virtual bool changing_keys() const { return TRUE; } // ritorna il flag di rigenerazione della lista delle chiavi ad ogni find(), in questa applicazione le chiavi cambiano continuamente quindi il flag è TRUE
virtual TRelation *get_relation() const { return _rel; } // punto d'aggancio tra la relazione della rel.app. e la relazione principale dell'applicazione virtual TRelation *get_relation() const { return _rel; } // punto d'aggancio tra la relazione della rel.app. e la relazione principale dell'applicazione
static void hide_and_show_codriga(void); // procedura di abilitazione/disabilitazione dei tre campi CODRIGA (codice riga) static void hide_and_show_codriga(void); // procedura di abilitazione/disabilitazione dei tre campi CODRIGA (codice riga)
static bool handle_tiporiga(TMask_field &, KEY); // handler del campo TIPORIGA (articolo, gruppo merc., ragg. fiscale) static bool handle_tiporiga(TMask_field &, KEY); // handler del campo TIPORIGA (articolo, gruppo merc., ragg. fiscale)
static bool handle_cod(TMask_field &, KEY); // handler del campo COD (codice listino, numero contratto, codice offerta) static bool handle_cod(TMask_field &, KEY); // handler del campo COD (codice listino, numero contratto, codice offerta)
virtual int write(const TMask &); // metodo usato per scrivere il record sul file virtual int write(const TMask &); // metodo usato per scrivere il record sul file
virtual int rewrite(const TMask &); // metodo usato per aggiornare il record sul file virtual int rewrite(const TMask &); // metodo usato per aggiornare il record sul file
public: public:
TRighe_condizioni_vendita() {} TRighe_condizioni_vendita() {}
virtual ~TRighe_condizioni_vendita() {} virtual ~TRighe_condizioni_vendita() {}
}; };
TRighe_condizioni_vendita &app() { // funzione che ritorna il riferimento alla classe principale dell'applicazione TRighe_condizioni_vendita &app() { // funzione che ritorna il riferimento alla classe principale dell'applicazione
return (TRighe_condizioni_vendita &)main_app(); return (TRighe_condizioni_vendita &)main_app();
} }
bool TRighe_condizioni_vendita::user_create() { bool TRighe_condizioni_vendita::user_create() {
bool gotcha= FALSE; // booleano di avvenuta inizializzazione bool gotcha= FALSE; // booleano di avvenuta inizializzazione
_rcondven= "*"; // inizializzazione dell'indicatore del tipo di archivio _rcondven= "*"; // inizializzazione dell'indicatore del tipo di archivio
if (argc()>2) { // se c'è, prende il tipo di archivio dalla linea di comando if (argc()>2) { // se c'è, prende il tipo di archivio dalla linea di comando
TString temp(argv(2)); TString temp(argv(2));
_rcondven= temp.left(1); // prende solo il primo carattere _rcondven= temp.left(1); // prende solo il primo carattere
} else { } else {
TMask choose("VE2300"); // istanzia la maschera di scelta del tipo di archivio TMask choose("VE2300"); // istanzia la maschera di scelta del tipo di archivio
if (choose.run() == K_ENTER) _rcondven= choose.get(F_TIPORCV); // prende il tipo di archivio dalla maschera if (choose.run() == K_ENTER) _rcondven= choose.get(F_TIPORCV); // prende il tipo di archivio dalla maschera
} }
_rcondven.upper(); // rende la stringa upper-case _rcondven.upper(); // rende la stringa upper-case
_msk= new TMask("VE2300X"); _msk= new TMask("VE2300X");
TConfig prassid(CONFIG_DITTA, "ve"); // apre il file di configurazione della ditta corrente TConfig prassid(CONFIG_DITTA, "ve"); // apre il file di configurazione della ditta corrente
switch (_rcondven[0]) { switch (_rcondven[0]) {
case 'L': // listini case 'L': // listini
DESTROY(F_R_C_TIPOCF); // settaggio dei campi da eliminare... DESTROY(F_R_C_TIPOCF); // settaggio dei campi da eliminare...
DESTROY(F_R_C_CODCF); DESTROY(F_R_C_CODCF);
DESTROY(F_R_C_COD); DESTROY(F_R_C_COD);
DESTROY(F_R_O_COD); DESTROY(F_R_O_COD);
_msk->hide(F_R_C_DESCF); _msk->hide(F_R_C_DESCF);
_msk->hide(F_R_C_DES); _msk->hide(F_R_C_DES);
_msk->hide(F_R_O_DES); _msk->hide(F_R_O_DES);
_msk->hide(F_R_C_RICERCA); _msk->hide(F_R_C_RICERCA);
_msk->hide(F_R_O_RICERCA); _msk->hide(F_R_O_RICERCA);
// _msk->hide(F_R_CO_CODLOTTO); // _msk->hide(F_R_CO_CODLOTTO);
_msk->hide(F_R_O_ARTES); _msk->hide(F_R_O_ARTES);
_codlis_catven= prassid.get_bool("GESLISCV"); // setta il booleano di abilitazione di CATVEN _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 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 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 _msk->set_handler(F_R_L_COD, handle_cod); // impostazione dell'handler sul campo di controllo della testata
gotcha= TRUE; gotcha= TRUE;
break; break;
case 'C': // contratti case 'C': // contratti
DESTROY(F_R_L_CATVEN); // settaggio dei campi da eliminare... DESTROY(F_R_L_CATVEN); // settaggio dei campi da eliminare...
DESTROY(F_R_L_COD); DESTROY(F_R_L_COD);
DESTROY(F_R_O_COD); DESTROY(F_R_O_COD);
_msk->hide(F_R_L_DESVEN); _msk->hide(F_R_L_DESVEN);
_msk->hide(F_R_L_DES); _msk->hide(F_R_L_DES);
_msk->hide(F_R_O_DES); _msk->hide(F_R_O_DES);
_msk->hide(F_R_L_RICERCA); _msk->hide(F_R_L_RICERCA);
_msk->hide(F_R_O_RICERCA); _msk->hide(F_R_O_RICERCA);
_msk->hide(F_R_O_ARTES); _msk->hide(F_R_O_ARTES);
_codcon_codcf= prassid.get_bool("GESCONCC"); // setta il booleano di abilitazione di TIPOCF e CODCF _codcon_codcf= prassid.get_bool("GESCONCC"); // setta il booleano di abilitazione di TIPOCF e CODCF
if (!_codcon_codcf) { // disabilita i campi di gestione clienti/fornitori in base al flag. di config. if (!_codcon_codcf) { // disabilita i campi di gestione clienti/fornitori in base al flag. di config.
KILL(F_R_C_TIPOCF); KILL(F_R_C_TIPOCF);
KILL(F_R_C_CODCF); KILL(F_R_C_CODCF);
} }
set_search_field(F_R_C_RICERCA); // impostazione del campo di ricerca 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 _msk->set_handler(F_R_C_COD, handle_cod); // impostazione dell'handler sul campo di controllo della testata
gotcha= TRUE; gotcha= TRUE;
break; break;
case 'O': // offerte case 'O': // offerte
DESTROY(F_R_L_CATVEN); // settaggio dei campi da eliminare... DESTROY(F_R_L_CATVEN); // settaggio dei campi da eliminare...
DESTROY(F_R_C_TIPOCF); DESTROY(F_R_C_TIPOCF);
DESTROY(F_R_C_CODCF); DESTROY(F_R_C_CODCF);
DESTROY(F_R_L_COD); DESTROY(F_R_L_COD);
DESTROY(F_R_C_COD); DESTROY(F_R_C_COD);
_msk->hide(F_R_C_DESCF); _msk->hide(F_R_C_DESCF);
_msk->hide(F_R_L_DESVEN); _msk->hide(F_R_L_DESVEN);
_msk->hide(F_R_L_DES); _msk->hide(F_R_L_DES);
_msk->hide(F_R_C_DES); _msk->hide(F_R_C_DES);
_msk->hide(F_R_L_RICERCA); _msk->hide(F_R_L_RICERCA);
_msk->hide(F_R_C_RICERCA); _msk->hide(F_R_C_RICERCA);
set_search_field(F_R_O_RICERCA); // impostazione del campo di ricerca 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 _msk->set_handler(F_R_O_COD, handle_cod); // impostazione dell'handler sul campo di controllo della testata
gotcha= TRUE; gotcha= TRUE;
break; break;
default: // messaggio di errore se si indica un archivio non valido default: // messaggio di errore se si indica un archivio non valido
error_box("Indicare l'archivio sulla linea di comando (L, C o O) oppure selezionarla dalla maschera di partenza"); error_box("Indicare l'archivio sulla linea di comando (L, C o O) oppure selezionarla dalla maschera di partenza");
break; break;
} }
if (gotcha) { // se è stato selezionato correttamente un archivio completa l'inizializzazione if (gotcha) { // se è stato selezionato correttamente un archivio completa l'inizializzazione
_rel= new TRelation(LF_RCONDV); // apre la relazione (un unico file) _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(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 _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) _gest_um= TRUE; // abilita la gestione delle unità di misura (di default)
hide_and_show_codriga(); // invoca la procedura di controllo della mutua esclusione dei tre campi CODRIGA hide_and_show_codriga(); // invoca la procedura di controllo della mutua esclusione dei tre campi CODRIGA
} }
return (gotcha); return (gotcha);
} }
bool TRighe_condizioni_vendita::user_destroy() { bool TRighe_condizioni_vendita::user_destroy() {
delete _rel; delete _rel;
delete _msk; delete _msk;
return TRUE; return TRUE;
} }
void TRighe_condizioni_vendita::hide_and_show_codriga() { void TRighe_condizioni_vendita::hide_and_show_codriga() {
TMask *_msk= app()._msk; // prende il puntatore alla maschera principale dell'applicazione TMask *_msk= app()._msk; // prende il puntatore alla maschera principale dell'applicazione
if (_msk->query_mode()) { // se la maschera è in modo query procede con i controlli... if (_msk->query_mode()) { // se la maschera è in modo query procede con i controlli...
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_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 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 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 &_gest_um= app()._gest_um; // prende il riferimento al booleano di abilitazione delle unità di misura
TString &_rcondven= app()._rcondven; // prende il riferimento alla stringa di tipo di archivio 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 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 for (int i=0; i<4; i++) { // ciclo sui quattro campi CODRIGA
if (tag_campo == tag_campi[i]) { // il campo indicato con il tag viene reso visibile if (tag_campo == tag_campi[i]) { // il campo indicato con il tag viene reso visibile
CREATE(id_campi_1[i]); CREATE(id_campi_1[i]);
_msk->show(id_campi_2[i]); _msk->show(id_campi_2[i]);
} else { // i campi non corrispondenti al tag vengono resi invisibili } else { // i campi non corrispondenti al tag vengono resi invisibili
DESTROY(id_campi_1[i]); DESTROY(id_campi_1[i]);
_msk->hide(id_campi_2[i]); _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 (_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...
else { KILL(F_R_UM); } // ...altrimenti viene disattivato else { KILL(F_R_UM); } // ...altrimenti viene disattivato
} }
} }
bool TRighe_condizioni_vendita::handle_tiporiga(TMask_field &fld, KEY k) { bool TRighe_condizioni_vendita::handle_tiporiga(TMask_field &fld, KEY k) {
if (k==K_SPACE) hide_and_show_codriga(); // invoca la procedura di controllo della mutua esclusione dei tre campi CODRIGA if (k==K_SPACE) hide_and_show_codriga(); // invoca la procedura di controllo della mutua esclusione dei tre campi CODRIGA
return TRUE; return TRUE;
} }
bool TRighe_condizioni_vendita::handle_cod(TMask_field &fld, KEY k) { bool TRighe_condizioni_vendita::handle_cod(TMask_field &fld, KEY k) {
if ((k==K_TAB) && fld.get().not_empty()) { 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_um= app()._gest_um; // prende il riferimento al booleano di abilitazione delle unità di misura
TString &_rcondven= app()._rcondven; // prende il riferimento alla stringa di indicazione del tipo di archivio 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 TMask *_msk= app()._msk; // prende il puntatore alla maschera principale dell'applicazione
TLocalisamfile condv(LF_CONDV); // apre il file della testata (condizioni di vendita) TLocalisamfile condv(LF_CONDV); // apre il file della testata (condizioni di vendita)
condv.put("TIPO", _rcondven); // riempie il campo "TIPO" condv.put("TIPO", _rcondven); // riempie il campo "TIPO"
switch (_rcondven[0]) { switch (_rcondven[0]) {
case 'L': // riempie il resto della chiave dei listini case 'L': // riempie il resto della chiave dei listini
condv.put("CATVEN", _msk->get(F_R_L_CATVEN)); condv.put("CATVEN", _msk->get(F_R_L_CATVEN));
condv.put("COD", _msk->get(F_R_L_COD)); condv.put("COD", _msk->get(F_R_L_COD));
break; break;
case 'C': // riempie il resto della chiave dei contratti case 'C': // riempie il resto della chiave dei contratti
condv.put("TIPOCF", _msk->get(F_R_C_TIPOCF)); condv.put("TIPOCF", _msk->get(F_R_C_TIPOCF));
condv.put("CODCF", _msk->get(F_R_C_CODCF)); condv.put("CODCF", _msk->get(F_R_C_CODCF));
condv.put("COD", _msk->get(F_R_C_COD)); condv.put("COD", _msk->get(F_R_C_COD));
break; break;
case 'O': // riempie il resto della chiave delle offerte case 'O': // riempie il resto della chiave delle offerte
condv.put("COD", _msk->get(F_R_O_COD)); condv.put("COD", _msk->get(F_R_O_COD));
break; break;
} }
if (condv.read()==NOERR) { // se la lettura è andata a buon fine abilita/disabilita i campi della maschera in base ai booleani della testata 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 _gest_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" hide_and_show_codriga(); // lancia la funzione che si occupa di abilitare/disabilitare il campo "unità di misura"
if (!condv.get_bool("GESTSCAGL")) { if (!condv.get_bool("GESTSCAGL")) {
KILL(F_R_NSCAGL); // disabilita il campo "numero scaglione" KILL(F_R_NSCAGL); // disabilita il campo "numero scaglione"
_msk->disable(F_R_QLIM); // disabilita il campo "quantità limite scaglione" _msk->disable(F_R_QLIM); // disabilita il campo "quantità limite scaglione"
} else { } else {
REVIVE(F_R_NSCAGL); // abilita il campo "numero scaglione" REVIVE(F_R_NSCAGL); // abilita il campo "numero scaglione"
_msk->enable(F_R_QLIM); // abilita il campo "quantità limite scaglione" _msk->enable(F_R_QLIM); // abilita 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") || condv.get_bool("GESTSCO")) _msk->enable(F_R_SCONTO); // abilita il campo "sconto"
else _msk->disable(F_R_SCONTO); // disabilita il campo "sconto" else _msk->disable(F_R_SCONTO); // disabilita il campo "sconto"
if (!condv.get_bool("GESTSCO")) { if (!condv.get_bool("GESTSCO")) {
_msk->disable(F_R_QOM); // disabilita il campo "quantità art. omaggio" _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_QBASE); // disabilita il campo "quantità base x sconto"
_msk->disable(F_R_CODARTOM); // disabilita il campo "codice articolo omaggio" _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_PROMAGGIO); // disabilita il campo "prezzo omaggio"
_msk->disable(F_R_UMOM); // disabilita il campo "unità di misura art. omaggio" _msk->disable(F_R_UMOM); // disabilita il campo "unità di misura art. omaggio"
} else { } else {
_msk->enable(F_R_QOM); // abilita il campo "quantità art. omaggio" _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_QBASE); // abilita il campo "quantità base x sconto"
_msk->enable(F_R_CODARTOM); // abilita il campo "codice articolo omaggio" _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_PROMAGGIO); // abilita il campo "prezzo omaggio"
_msk->enable(F_R_UMOM); // abilita il campo "unità di misura art. omaggio" _msk->enable(F_R_UMOM); // abilita il campo "unità di misura art. omaggio"
} }
return TRUE; return TRUE;
} else { } else {
error_box("Non esiste una testata corrispondente alla chiave specificata"); error_box("Non esiste una testata corrispondente alla chiave specificata");
return FALSE; return FALSE;
} }
} else return TRUE; } else return TRUE;
} }
int TRighe_condizioni_vendita::write(const TMask &m) { int TRighe_condizioni_vendita::write(const TMask &m) {
m.autosave(_rel); // scrive il contenuto della maschera nel record della relazione m.autosave(_rel); // scrive il contenuto della maschera nel record della relazione
if (_rcondven != "C") { // se non si sta lavorando sui contratti il campo TIPOCF deve essere svuotato sul file if (_rcondven != "C") { // se non si sta lavorando sui contratti il campo TIPOCF deve essere svuotato sul file
TLocalisamfile &f= _rel->lfile(); // prende il file principale della relazione TLocalisamfile &f= _rel->lfile(); // prende il file principale della relazione
TRectype &r= f.curr(); // prende il record corrente del file principale TRectype &r= f.curr(); // prende il record corrente del file principale
f.zero("TIPOCF"); // svuota il campo TIPOCF f.zero("TIPOCF"); // svuota il campo TIPOCF
} }
_rel->write(); // invoca la scrittura della relazione _rel->write(); // invoca la scrittura della relazione
return (_rel->status()); // ritorna lo stato della relazione return (_rel->status()); // ritorna lo stato della relazione
} }
int TRighe_condizioni_vendita::rewrite(const TMask &m) { int TRighe_condizioni_vendita::rewrite(const TMask &m) {
m.autosave(_rel); // scrive il contenuto della maschera nel record della relazione m.autosave(_rel); // scrive il contenuto della maschera nel record della relazione
if (_rcondven != "C") { // se non si sta lavorando sui contratti il campo TIPOCF deve essere svuotato sul file if (_rcondven != "C") { // se non si sta lavorando sui contratti il campo TIPOCF deve essere svuotato sul file
TLocalisamfile &f= _rel->lfile(); // prende il file principale della relazione TLocalisamfile &f= _rel->lfile(); // prende il file principale della relazione
TRectype &r= f.curr(); // prende il record corrente del file principale TRectype &r= f.curr(); // prende il record corrente del file principale
f.zero("TIPOCF"); // svuota il campo TIPOCF f.zero("TIPOCF"); // svuota il campo TIPOCF
} }
_rel->rewrite(); // invoca la riscrittura della relazione _rel->rewrite(); // invoca la riscrittura della relazione
return (_rel->status()); // ritorna lo stato della relazione return (_rel->status()); // ritorna lo stato della relazione
} }
int ve2300(int argc, char* argv[]) { int ve2300(int argc, char* argv[]) {
TRighe_condizioni_vendita a; TRighe_condizioni_vendita a;
a.run(argc, argv, "Righe condizioni vendita "); a.run(argc, argv, "Righe condizioni vendita ");
return 0; return 0;
} }

View File

@ -1,30 +1,30 @@
#include <checks.h> #include <checks.h>
#include <xvt.h> #include <xvt.h>
extern int ve3100(int argc, char **argv); // stampa tabelle sconti (di riga/di documento/incondizionati) extern int ve3100(int argc, char **argv); // stampa tabelle sconti (di riga/di documento/incondizionati)
extern int ve3200(int argc, char **argv); // stampa testate listini/contratti/offerte extern int ve3200(int argc, char **argv); // stampa testate listini/contratti/offerte
extern int ve3400(int argc, char **argv); // stampa anagrafica di magazzino extern int ve3400(int argc, char **argv); // stampa anagrafica di magazzino
int main(int argc, char **argv) { int main(int argc, char **argv) {
int rt= -1; int rt= -1;
const int r= (argc>1)?(atoi(&argv[1][1])):(-1); const int r= (argc>1)?(atoi(&argv[1][1])):(-1);
switch (r) { switch (r) {
case 0: case 0:
rt= ve3100(argc, argv); rt= ve3100(argc, argv);
break; break;
case 1: case 1:
rt= ve3200(argc, argv); rt= ve3200(argc, argv);
break; break;
case 3: case 3:
rt= ve3400(argc, argv); rt= ve3400(argc, argv);
break; break;
default: default:
error_box("Sintassi: %s -[0 [R|D|I] | 1 [L|C|O] | 3]", argv[0]); error_box("Sintassi: %s -[0 [R|D|I] | 1 [L|C|O] | 3]", argv[0]);
break; break;
} }
return (rt); return (rt);
} }

View File

@ -1,374 +1,374 @@
#include <printapp.h> #include <printapp.h>
#include <mask.h> #include <mask.h>
#include <config.h> #include <config.h>
#include <execp.h> #include <execp.h>
#include <mailbox.h> #include <mailbox.h>
#include "veconf.h" #include "veconf.h"
#include "ve3200.h" #include "ve3200.h"
#define RCONDV_APP "ve2 -2" #define RCONDV_APP "ve2 -2"
#define DESTROY(x) { mask.field(x).reset_key(1); mask.hide(x); } #define DESTROY(x) { mask.field(x).reset_key(1); mask.hide(x); }
#define KILL(x) { mask.field(x).reset_key(1); mask.disable(x); } #define KILL(x) { mask.field(x).reset_key(1); mask.disable(x); }
#define CVE 201 #define CVE 201
#define VAL 202 #define VAL 202
#define UMS1 203 #define UMS1 203
#define UMS2 204 #define UMS2 204
#define GMC1 205 #define GMC1 205
#define GMC2 206 #define GMC2 206
#define RFA 207 #define RFA 207
#define ART1 208 #define ART1 208
#define ART2 209 #define ART2 209
class TStampa_condizioni_vendita: public TPrint_application { class TStampa_condizioni_vendita: public TPrint_application {
TRelation *_rel; // relazione principale TRelation *_rel; // relazione principale
TString16 _condven; // stringa che indica il tipo di archivio TString16 _condven; // stringa che indica il tipo di archivio
bool _codlis_catven; // booleano di abilitazione della categoria di vendita nella chiave dei listini bool _codlis_catven; // booleano di abilitazione della categoria di vendita nella chiave dei listini
bool _codcon_codcf; // booleano di abilitazione del codice cliente/fornitore nella chiave dei contratti bool _codcon_codcf; // booleano di abilitazione del codice cliente/fornitore nella chiave dei contratti
bool _listval; // booleano di abilitazione della stampa dei listini in valuta bool _listval; // booleano di abilitazione della stampa dei listini in valuta
bool _testacomp, _righecomp; // booleani di selezione della stampa completa per testata e righe; bool _testacomp, _righecomp; // booleani di selezione della stampa completa per testata e righe;
bool _testastamp; // booleano di testata completa già stampata bool _testastamp; // booleano di testata completa già stampata
bool _gest_val, _gest_um, _gest_sca, _gest_so; // booleani per l'abilitazione di valute, unità di misura, scaglioni e sconti/omaggi bool _gest_val, _gest_um, _gest_sca, _gest_so; // booleani per l'abilitazione di valute, unità di misura, scaglioni e sconti/omaggi
//int _rcondv_link_id; // id del link ipertestuale all'anagrafica di magazzino //int _rcondv_link_id; // id del link ipertestuale all'anagrafica di magazzino
protected: protected:
virtual bool user_create(void); virtual bool user_create(void);
virtual bool user_destroy(void); virtual bool user_destroy(void);
virtual bool set_print(int); virtual bool set_print(int);
virtual void set_page(int, int); virtual void set_page(int, int);
virtual void preprocess_header(void); virtual void preprocess_header(void);
virtual void preprocess_footer(void); virtual void preprocess_footer(void);
//virtual void process_link(int, const char *); //virtual void process_link(int, const char *);
}; };
bool TStampa_condizioni_vendita::user_create() { bool TStampa_condizioni_vendita::user_create() {
bool gotcha= FALSE; // booleano di avvenuta inizializzazione bool gotcha= FALSE; // booleano di avvenuta inizializzazione
int indice; // indice delle variabili di configurazione per le abilitazioni int indice; // indice delle variabili di configurazione per le abilitazioni
_condven= "*"; // inizializzazione dell'indicatore del tipo di archivio _condven= "*"; // inizializzazione dell'indicatore del tipo di archivio
if (argc()>2) _condven= argv(2); // se c'è, prende il tipo di archivio dalla linea di comando if (argc()>2) _condven= argv(2); // se c'è, prende il tipo di archivio dalla linea di comando
else { else {
TMask choose("ve3200"); // istanzia la maschera di scelta del tipo di archivio TMask choose("ve3200"); // istanzia la maschera di scelta del tipo di archivio
if (choose.run() == K_ENTER) _condven= choose.get(F_TIPOCV); // prende il tipo di archivio dalla maschera if (choose.run() == K_ENTER) _condven= choose.get(F_TIPOCV); // prende il tipo di archivio dalla maschera
} }
_condven.upper(); // rende la stringa upper-case _condven.upper(); // rende la stringa upper-case
TConfig prassid(CONFIG_DITTA, "ve"); // apre il file di configurazione della ditta corrente TConfig prassid(CONFIG_DITTA, "ve"); // apre il file di configurazione della ditta corrente
switch (_condven[0]) { switch (_condven[0]) {
case 'L': // listini case 'L': // listini
indice= A_LISTINI; // setta l'indice dell'archivio listini indice= A_LISTINI; // setta l'indice dell'archivio listini
if (!(prassid.get_bool("GES", NULL, indice))) error_box("L'archivio Listini non è abilititato"); // controlla che l'archivio listini sia abilitato if (!(prassid.get_bool("GES", NULL, indice))) error_box("L'archivio Listini non è abilititato"); // controlla che l'archivio listini sia abilitato
else { else {
_codlis_catven= prassid.get_bool("GESLISCV"); // setta il booleano di abilitazione delle categoria di vendita _codlis_catven= prassid.get_bool("GESLISCV"); // setta il booleano di abilitazione delle categoria di vendita
gotcha= TRUE; gotcha= TRUE;
} }
break; break;
case 'C': // contratti case 'C': // contratti
indice= A_CONTRATTI; // setta l'indice dell'archivio contratti indice= A_CONTRATTI; // setta l'indice dell'archivio contratti
if (!(prassid.get_bool("GES", NULL, indice))) error_box("L'archivio Contratti non è abilititato"); // controlla che l'archivio contratti sia abilitato if (!(prassid.get_bool("GES", NULL, indice))) error_box("L'archivio Contratti non è abilititato"); // controlla che l'archivio contratti sia abilitato
else { else {
_codcon_codcf= prassid.get_bool("GESCONCC"); // setta il booleano di abilitazione delle categoria di vendita _codcon_codcf= prassid.get_bool("GESCONCC"); // setta il booleano di abilitazione delle categoria di vendita
gotcha= TRUE; gotcha= TRUE;
} }
break; break;
case 'O': // offerte case 'O': // offerte
indice= A_OFFERTE; // setta l'indice dell'archivio offerte indice= A_OFFERTE; // setta l'indice dell'archivio offerte
if (!(prassid.get_bool("GES", NULL, indice))) error_box("L'archivio Offerte non è abilititato"); // controlla che l'archivio offerte sia abilitato if (!(prassid.get_bool("GES", NULL, indice))) error_box("L'archivio Offerte non è abilititato"); // controlla che l'archivio offerte sia abilitato
else gotcha= TRUE; else gotcha= TRUE;
break; break;
default: // messaggio di errore se si indica un archivio non valido default: // messaggio di errore se si indica un archivio non valido
error_box("Indicare l'archivio sulla linea di comando (L, C o O) oppure selezionarla dalla maschera di partenza"); error_box("Indicare l'archivio sulla linea di comando (L, C o O) oppure selezionarla dalla maschera di partenza");
break; break;
} }
if (gotcha) { // se è stato selezionato correttamente un archivio completa l'inizializzazione if (gotcha) { // se è stato selezionato correttamente un archivio completa l'inizializzazione
_gest_um= prassid.get_bool("GESUM", NULL, indice); // setta il booleano di abilitazione delle unità di misura _gest_um= prassid.get_bool("GESUM", NULL, indice); // setta il booleano di abilitazione delle unità di misura
_gest_sca= prassid.get_bool("GESSCA", NULL, indice); // setta il booleano di abilitazione degli scaglioni _gest_sca= prassid.get_bool("GESSCA", NULL, indice); // setta il booleano di abilitazione degli scaglioni
_gest_so= prassid.get_bool("GESSO", NULL, indice); // setta il booleano di abilitazione degli sconti/omaggi _gest_so= prassid.get_bool("GESSO", NULL, indice); // setta il booleano di abilitazione degli sconti/omaggi
_gest_val= prassid.get_bool("GESVAL"); // legge il booleano di abilitazione della gestione delle valute _gest_val= prassid.get_bool("GESVAL"); // legge il booleano di abilitazione della gestione delle valute
_rel= new TRelation(LF_RCONDV); // crea la relazione principale _rel= new TRelation(LF_RCONDV); // crea la relazione principale
_rel->add(LF_ANAGR, "CODART==CODRIGA", 1, LF_RCONDV, ART1); _rel->add(LF_ANAGR, "CODART==CODRIGA", 1, LF_RCONDV, ART1);
_rel->add(LF_ANAGR, "CODART==CODARTOM", 1, LF_RCONDV, ART2); _rel->add(LF_ANAGR, "CODART==CODARTOM", 1, LF_RCONDV, ART2);
_rel->add("%GMC", "CODTAB[1,3]==CODRIGA", 1, LF_RCONDV, GMC1); _rel->add("%GMC", "CODTAB[1,3]==CODRIGA", 1, LF_RCONDV, GMC1);
_rel->add("%GMC", "CODTAB[4,5]==CODRIGA", 1, LF_RCONDV, GMC2); _rel->add("%GMC", "CODTAB[4,5]==CODRIGA", 1, LF_RCONDV, GMC2);
_rel->add("%RFA", "CODTAB==CODRIGA", 1, LF_RCONDV, RFA); _rel->add("%RFA", "CODTAB==CODRIGA", 1, LF_RCONDV, RFA);
_rel->add(LF_CONDV, "TIPO==TIPO|CATVEN==CATVEN|TIPOCF==TIPOCF|CODCF==CODCF|COD==COD"); _rel->add(LF_CONDV, "TIPO==TIPO|CATVEN==CATVEN|TIPOCF==TIPOCF|CODCF==CODCF|COD==COD");
_rel->add("%CVE", "CODTAB==CATVEN", 1, LF_CONDV, CVE); _rel->add("%CVE", "CODTAB==CATVEN", 1, LF_CONDV, CVE);
_rel->add(LF_CLIFO, "TIPOCF==TIPOCF|CODCF==CODCF", 1, LF_CONDV); _rel->add(LF_CLIFO, "TIPOCF==TIPOCF|CODCF==CODCF", 1, LF_CONDV);
_rel->add("%VAL", "CODTAB==CODVAL", 1, LF_CONDV, VAL); _rel->add("%VAL", "CODTAB==CODVAL", 1, LF_CONDV, VAL);
_rel->add("%UMS", "CODTAB==UM", 1, LF_RCONDV, UMS1); _rel->add("%UMS", "CODTAB==UM", 1, LF_RCONDV, UMS1);
_rel->add("%UMS", "CODTAB==UMOM", 1, LF_RCONDV, UMS2); _rel->add("%UMS", "CODTAB==UMOM", 1, LF_RCONDV, UMS2);
add_cursor(new TCursor(_rel)); // costruisce il cursore sulla relazione e lo passa alla stampa add_cursor(new TCursor(_rel)); // costruisce il cursore sulla relazione e lo passa alla stampa
add_file(LF_RCONDV); // notifica il file delle righe alla stampa add_file(LF_RCONDV); // notifica il file delle righe alla stampa
enable_print_menu(); // abilita il menù di stampa enable_print_menu(); // abilita il menù di stampa
enable_setprint_menu(); // abilita il menù di settaggio della stampa enable_setprint_menu(); // abilita il menù di settaggio della stampa
} }
return (gotcha); return (gotcha);
} }
bool TStampa_condizioni_vendita::user_destroy() { bool TStampa_condizioni_vendita::user_destroy() {
delete _rel; // distrugge la relazione principale delete _rel; // distrugge la relazione principale
return TRUE; return TRUE;
} }
bool TStampa_condizioni_vendita::set_print(int) { bool TStampa_condizioni_vendita::set_print(int) {
TMask mask("ve3200x"); TMask mask("ve3200x");
mask.set(F_TIPO, _condven); // settaggio del campo di tipo archivio mask.set(F_TIPO, _condven); // settaggio del campo di tipo archivio
switch (_condven[0]) { switch (_condven[0]) {
case 'L': // listini case 'L': // listini
DESTROY(F_C_COD); // eliminazione campi di altri archivi DESTROY(F_C_COD); // eliminazione campi di altri archivi
DESTROY(F_C_TIPOCF); DESTROY(F_C_TIPOCF);
DESTROY(F_C_CODCF); DESTROY(F_C_CODCF);
DESTROY(F_O_COD); DESTROY(F_O_COD);
if (!_codlis_catven) KILL(F_L_CATVEN); // disabilita condizionalmente le categorie di vendita if (!_codlis_catven) KILL(F_L_CATVEN); // disabilita condizionalmente le categorie di vendita
if (!_gest_val) KILL(F_L_LISTVALUTA); // disabilita condizionalmente la gestione delle valute if (!_gest_val) KILL(F_L_LISTVALUTA); // disabilita condizionalmente la gestione delle valute
break; break;
case 'C': // contratti case 'C': // contratti
DESTROY(F_L_COD); // settaggio dei campi da eliminare DESTROY(F_L_COD); // settaggio dei campi da eliminare
DESTROY(F_L_CATVEN); DESTROY(F_L_CATVEN);
DESTROY(F_L_LISTVALUTA); DESTROY(F_L_LISTVALUTA);
DESTROY(F_O_COD); DESTROY(F_O_COD);
if (!_codcon_codcf) { // disabilita condizionalmente i clienti/fornitori if (!_codcon_codcf) { // disabilita condizionalmente i clienti/fornitori
KILL(F_C_TIPOCF); KILL(F_C_TIPOCF);
KILL(F_C_CODCF); KILL(F_C_CODCF);
} }
break; break;
case 'O': // offerte case 'O': // offerte
DESTROY(F_L_COD); // settaggio dei campi da eliminare DESTROY(F_L_COD); // settaggio dei campi da eliminare
DESTROY(F_L_CATVEN); DESTROY(F_L_CATVEN);
DESTROY(F_L_LISTVALUTA); DESTROY(F_L_LISTVALUTA);
DESTROY(F_C_TIPOCF); DESTROY(F_C_TIPOCF);
DESTROY(F_C_CODCF); DESTROY(F_C_CODCF);
DESTROY(F_C_COD); DESTROY(F_C_COD);
break; break;
} }
if (mask.run()== K_ENTER) { // lancia la maschera, se viene confermata vengono trovati gli estremi del cursore if (mask.run()== K_ENTER) { // lancia la maschera, se viene confermata vengono trovati gli estremi del cursore
_testastamp= FALSE; // azzera il flag di testa già stampata _testastamp= FALSE; // azzera il flag di testa già stampata
_listval= mask.get_bool(F_L_LISTVALUTA); // legge lo stato del checkbox di abilitazione dei listini in valuta _listval= mask.get_bool(F_L_LISTVALUTA); // legge lo stato del checkbox di abilitazione dei listini in valuta
_testacomp= mask.get_bool(F_TESTACOMP); // legge l'abilitazione della stampa completa della testata _testacomp= mask.get_bool(F_TESTACOMP); // legge l'abilitazione della stampa completa della testata
_righecomp= mask.get_bool(F_RIGHECOMP); // legge l'abilitazione della stampa completa delle righe _righecomp= mask.get_bool(F_RIGHECOMP); // legge l'abilitazione della stampa completa delle righe
TLocalisamfile &rcondv= _rel->lfile(); // prende il file principale TLocalisamfile &rcondv= _rel->lfile(); // prende il file principale
TRectype da(rcondv.curr()); // prepara il record di inizio regione TRectype da(rcondv.curr()); // prepara il record di inizio regione
da.zero(); da.zero();
da.put("TIPO", _condven); da.put("TIPO", _condven);
switch (_condven[0]) { // impostazione della chiave della testata switch (_condven[0]) { // impostazione della chiave della testata
case 'L': // listini case 'L': // listini
if (_codlis_catven) da.put("CATVEN", mask.get(F_L_CATVEN)); if (_codlis_catven) da.put("CATVEN", mask.get(F_L_CATVEN));
else da.blank("CATVEN"); // riempie il campo di blank se non è gestito else da.blank("CATVEN"); // riempie il campo di blank se non è gestito
da.blank("TIPOCF"); // i campi non gestiti vengono riempiti di blank da.blank("TIPOCF"); // i campi non gestiti vengono riempiti di blank
da.blank("CODCF"); da.blank("CODCF");
da.put("COD", mask.get(F_L_COD)); da.put("COD", mask.get(F_L_COD));
break; break;
case 'C': // contratti case 'C': // contratti
da.blank("CATVEN"); // i campi non gestiti vengono riempiti di blank da.blank("CATVEN"); // i campi non gestiti vengono riempiti di blank
if (_codcon_codcf) { if (_codcon_codcf) {
da.put("TIPOCF", mask.get(F_C_TIPOCF)); da.put("TIPOCF", mask.get(F_C_TIPOCF));
da.put("CODCF", mask.get(F_C_CODCF)); da.put("CODCF", mask.get(F_C_CODCF));
} else { } else {
da.blank("TIPOCF"); // riempie i campi di blank se non sono gestiti da.blank("TIPOCF"); // riempie i campi di blank se non sono gestiti
da.blank("CODCF"); da.blank("CODCF");
} }
da.put("COD", mask.get(F_C_COD)); da.put("COD", mask.get(F_C_COD));
break; break;
case 'O': // offerte case 'O': // offerte
da.blank("CATVEN"); // i campi non gestiti vengono riempiti di blank da.blank("CATVEN"); // i campi non gestiti vengono riempiti di blank
da.blank("TIPOCF"); da.blank("TIPOCF");
da.blank("CODCF"); da.blank("CODCF");
da.put("COD", mask.get(F_O_COD)); da.put("COD", mask.get(F_O_COD));
break; break;
} }
TRectype a(da); // prepara il record di fine regione TRectype a(da); // prepara il record di fine regione
if (!(mask.get_bool(F_TUTTERIGHE))) { // setta il filtro sulle righe solo se non è stato selezionato il flag di "tutte le righe" if (!(mask.get_bool(F_TUTTERIGHE))) { // setta il filtro sulle righe solo se non è stato selezionato il flag di "tutte le righe"
da.put("TIPORIGA", mask.get(F_TIPORIGHE)); da.put("TIPORIGA", mask.get(F_TIPORIGHE));
da.put("CODRIGA", mask.get(F_DARIGA_A)); da.put("CODRIGA", mask.get(F_DARIGA_A));
a.put("TIPORIGA", mask.get(F_TIPORIGHE)); a.put("TIPORIGA", mask.get(F_TIPORIGHE));
a.put("CODRIGA", mask.get(F_ARIGA_A)); a.put("CODRIGA", mask.get(F_ARIGA_A));
} }
current_cursor()->setregion(da, a); // setta la regione sul cursore current_cursor()->setregion(da, a); // setta la regione sul cursore
force_setpage(); // forza il lancio della set_page() ad ogni record del file da stampare force_setpage(); // forza il lancio della set_page() ad ogni record del file da stampare
disable_links(); // disabilita tutti i link ipertestuali disable_links(); // disabilita tutti i link ipertestuali
// _rcondv_link_id= enable_link("Collegamento a righe condizioni di vendita", 'g'); // abilita il collegamento // _rcondv_link_id= enable_link("Collegamento a righe condizioni di vendita", 'g'); // abilita il collegamento
return TRUE; return TRUE;
} else return FALSE; } else return FALSE;
} }
/* 1 1 1 1 /* 1 1 1 1
1 2 3 4 5 6 7 8 9 0 1 2 3 1 2 3 4 5 6 7 8 9 0 1 2 3
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012
CF CODCF CV COD DESCR VALIN VALFIN IL UM SC SO ST OB SUC SEQ CF CODCF CV COD DESCR VALIN VALFIN IL UM SC SO ST OB SUC SEQ
. ...... .. ... .................................................. ..-..-.. ..-..-.. . . . . . . ... ... . ...... .. ... .................................................. ..-..-.. ..-..-.. . . . . . . ... ...
CVA CAMBIO DATACAM CVA CAMBIO DATACAM
... ...............,..... ..-..-.. ... ...............,..... ..-..-..
*/ */
/* 1 1 1 1 /* 1 1 1 1
1 2 3 4 5 6 7 8 9 0 1 2 3 1 2 3 4 5 6 7 8 9 0 1 2 3
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012 123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012
T CODRIGA UM S QLIM PREZZO SCONTO A CIVA PERCPROV T CODRIGA UM S QLIM PREZZO SCONTO A CIVA PERCPROV
. .................... .. . ...............,..... ..................,.. ......................... . .... .....,.. . .................... .. . ...............,..... ..................,.. ......................... . .... .....,..
UO QOM QBASE CODARTOM PROMAGGIO CODLOT E UO QOM QBASE CODARTOM PROMAGGIO CODLOT E
.. ...............,..... ...............,..... .................... ..................,.. ...... . .. ...............,..... ...............,..... .................... ..................,.. ...... .
*/ */
void TStampa_condizioni_vendita::preprocess_header() { void TStampa_condizioni_vendita::preprocess_header() {
reset_header(); // l'header viene resettato reset_header(); // l'header viene resettato
int i= 1; // contatore delle linee int i= 1; // contatore delle linee
const long firm= get_firm(); // legge l'id della ditta corrente const long firm= get_firm(); // legge l'id della ditta corrente
TLocalisamfile ditte(LF_NDITTE); // apre il file ditte TLocalisamfile ditte(LF_NDITTE); // apre il file ditte
ditte.zero(); // vuota il record ditte.zero(); // vuota il record
ditte.put("CODDITTA", firm); // riempie la chiave ditte.put("CODDITTA", firm); // riempie la chiave
if (ditte.read()== NOERR) { // se il record della ditta viene trovato viene settato l'header if (ditte.read()== NOERR) { // se il record della ditta viene trovato viene settato l'header
const TString &s= ditte.get("RAGSOC"); // legge la ragione sociale della ditta const TString &s= ditte.get("RAGSOC"); // legge la ragione sociale della ditta
set_header(i, "@1gDitta %ld %s", firm, (const char *)s); // setta il nome e l'id della ditta della prima linea dell'header set_header(i, "@1gDitta %ld %s", firm, (const char *)s); // setta il nome e l'id della ditta della prima linea dell'header
} }
TLocalisamfile &condv= current_cursor()->file(LF_CONDV); TLocalisamfile &condv= current_cursor()->file(LF_CONDV);
i+=2; // stampa breve della testata, occupa almeno due linee i+=2; // stampa breve della testata, occupa almeno due linee
set_header(i-1, "@14gCod @18gDescrizione @69gVal. dal @78gal @87gIL @90gUM @93gSC @96gSO @99gST @109gSeq"); // setta l'header del codice, della descrizione, della validità, dei booleani, ecc. set_header(i-1, "@14gCod @18gDescrizione @69gVal. dal @78gal @87gIL @90gUM @93gSC @96gSO @99gST @109gSeq"); // setta l'header del codice, della descrizione, della validità, dei booleani, ecc.
set_header(i, "@14g%3s @18g%s @69g%s @78g%s @87g%s @90g%s @93g%s @96g%s @99g%s @109g%s", set_header(i, "@14g%3s @18g%s @69g%s @78g%s @87g%s @90g%s @93g%s @96g%s @99g%s @109g%s",
(const char *)(condv.sget("COD")), (const char *)(condv.sget("DESCR")), (const char *)(condv.sget("VALIN")), (const char *)(condv.sget("COD")), (const char *)(condv.sget("DESCR")), (const char *)(condv.sget("VALIN")),
(const char *)(condv.sget("VALFIN")), (const char *)(condv.sget("IMPLORDI")), (const char *)(condv.sget("GESTUM")), (const char *)(condv.sget("VALFIN")), (const char *)(condv.sget("IMPLORDI")), (const char *)(condv.sget("GESTUM")),
(const char *)(condv.sget("GESTSCAGL")), (const char *)(condv.sget("GESTSCO")), (const char *)(condv.sget("SCONST")), (const char *)(condv.sget("GESTSCAGL")), (const char *)(condv.sget("GESTSCO")), (const char *)(condv.sget("SCONST")),
(const char *)(condv.sget("SEQRIC"))); // codice, descriz., validità e booleani (const char *)(condv.sget("SEQRIC"))); // codice, descriz., validità e booleani
if ((_condven=="L") && _codlis_catven) { // siamo sui listini? if ((_condven=="L") && _codlis_catven) { // siamo sui listini?
set_header(i-1, "@11gCV"); // setta l'header della categoria di vendita set_header(i-1, "@11gCV"); // setta l'header della categoria di vendita
set_header(i, "@11g%s", (const char *)(condv.sget("CATVEN"))); // categoria di vendita set_header(i, "@11g%s", (const char *)(condv.sget("CATVEN"))); // categoria di vendita
} }
if (_condven=="C") { // siamo sui contratti? if (_condven=="C") { // siamo sui contratti?
if (_codcon_codcf) { // è abilitato il codice cliente/fornitore? if (_codcon_codcf) { // è abilitato il codice cliente/fornitore?
set_header(i-1, "@1gCF @4gCod.CF"); // setta l'header di clienti/fornitori set_header(i-1, "@1gCF @4gCod.CF"); // setta l'header di clienti/fornitori
set_header(i, "@1g%s @4g%6s", (const char *)(condv.sget("TIPOCF")), (const char *)(condv.sget("CODCF"))); // cliente/fornitore set_header(i, "@1g%s @4g%6s", (const char *)(condv.sget("TIPOCF")), (const char *)(condv.sget("CODCF"))); // cliente/fornitore
} }
set_header(i-1, "@102gOB"); // setta l'header di contratto obbligatorio set_header(i-1, "@102gOB"); // setta l'header di contratto obbligatorio
set_header(i, "@102g%s", (const char *)(condv.sget("OBBLIG"))); // booleano set_header(i, "@102g%s", (const char *)(condv.sget("OBBLIG"))); // booleano
} }
if (_condven=="L") { // siamo su listini? if (_condven=="L") { // siamo su listini?
set_header(i-1, "@105gSuc"); // setta l'header per il codice di listino successivo set_header(i-1, "@105gSuc"); // setta l'header per il codice di listino successivo
set_header(i, "@105g%3s", (const char *)(condv.sget("CODLISSUCC"))); // codice successivo set_header(i, "@105g%3s", (const char *)(condv.sget("CODLISSUCC"))); // codice successivo
} }
if (_gest_val) { // c'è la gestione della valuta? if (_gest_val) { // c'è la gestione della valuta?
i+=2; // occupa altre due linee i+=2; // occupa altre due linee
set_header(i-1, "@1gVal @5gCambio @27gData cambio"); // setta l'header del codice e della descrizione set_header(i-1, "@1gVal @5gCambio @27gData cambio"); // setta l'header del codice e della descrizione
set_header(i, "@1g%s @5g%21s @27g%s", (const char *)condv.sget("CODVAL"), (const char *)condv.sget("CAMBIO"), (const char *)condv.sget("DATACAM")); // cambio e valuta set_header(i, "@1g%s @5g%21s @27g%s", (const char *)condv.sget("CODVAL"), (const char *)condv.sget("CAMBIO"), (const char *)condv.sget("DATACAM")); // cambio e valuta
} }
set_header(++i, ""); // salta una riga set_header(++i, ""); // salta una riga
if (!_righecomp) { // impostazione dell'header delle righe se non c'è la stampa esaustiva if (!_righecomp) { // impostazione dell'header delle righe se non c'è la stampa esaustiva
set_header(++i, "@1gT @3gCodice riga @27gS @29gQuantita' limite @51gPrezzo @73gSconto @99gA @101gIVA @106gProvvig."); // setta l'header della chiave, della quantità limite e del prezzo set_header(++i, "@1gT @3gCodice riga @27gS @29gQuantita' limite @51gPrezzo @73gSconto @99gA @101gIVA @106gProvvig."); // setta l'header della chiave, della quantità limite e del prezzo
if ((_condven=="L") || (_condven=="O")) set_header(i, "@24gUM"); // setta l'header dell'unità di misura if ((_condven=="L") || (_condven=="O")) set_header(i, "@24gUM"); // setta l'header dell'unità di misura
set_header(++i, "@1gUMO @5gQuantita' omaggio @27gQuantita' base @49gCod. art. omagg. @70gPrezzo omaggio"); // setta l'header dello sconto/omaggio set_header(++i, "@1gUMO @5gQuantita' omaggio @27gQuantita' base @49gCod. art. omagg. @70gPrezzo omaggio"); // setta l'header dello sconto/omaggio
if ((_condven=="C") || (_condven=="O")) set_header(i, "@92gLotto"); // setta l'header del lotto if ((_condven=="C") || (_condven=="O")) set_header(i, "@92gLotto"); // setta l'header del lotto
if (_condven=="O") set_header(i, "@99gEsaur."); // setta l'header dell'articolo in esaurimento if (_condven=="O") set_header(i, "@99gEsaur."); // setta l'header dell'articolo in esaurimento
} }
set_header(++i, ""); // aggiunge due linee vuote set_header(++i, ""); // aggiunge due linee vuote
set_header(++i, ""); set_header(++i, "");
} }
void TStampa_condizioni_vendita::preprocess_footer() { void TStampa_condizioni_vendita::preprocess_footer() {
reset_footer(); reset_footer();
int i= 1; // indice di linea int i= 1; // indice di linea
set_footer(i, ""); // salta una linea set_footer(i, ""); // salta una linea
set_footer(++i, "@125gPag @#"); // l'unica linea del footer contiene il numero di pagina set_footer(++i, "@125gPag @#"); // l'unica linea del footer contiene il numero di pagina
} }
void TStampa_condizioni_vendita::set_page(int file, int) { void TStampa_condizioni_vendita::set_page(int file, int) {
if (file== LF_RCONDV) { // se il file in stampa non è il file principale non c'è nulla da fare if (file== LF_RCONDV) { // se il file in stampa non è il file principale non c'è nulla da fare
int i= 0; // indice di riga int i= 0; // indice di riga
if ((printer().getcurrentpage()==1) && _testacomp && (!_testastamp)) { // stampa della testata in forma completa if ((printer().getcurrentpage()==1) && _testacomp && (!_testastamp)) { // stampa della testata in forma completa
if ((_condven=="L") && _codlis_catven) set_row(++i, "Cat. di vendita: @2s @50s", FLD(LF_CONDV, "CATVEN"), FLD(-CVE, "S0")); if ((_condven=="L") && _codlis_catven) set_row(++i, "Cat. di vendita: @2s @50s", FLD(LF_CONDV, "CATVEN"), FLD(-CVE, "S0"));
if ((_condven=="C") && _codcon_codcf) set_row(++i, "Cliente/fornitore: @1s @6s @50s", FLD(LF_CONDV, "TIPOCF"), FLD(LF_CONDV, "CODCF"), FLD(LF_CLIFO, "RAGSOC")); if ((_condven=="C") && _codcon_codcf) set_row(++i, "Cliente/fornitore: @1s @6s @50s", FLD(LF_CONDV, "TIPOCF"), FLD(LF_CONDV, "CODCF"), FLD(LF_CLIFO, "RAGSOC"));
set_row(++i, "Codice: @3s @50s", FLD(LF_CONDV, "COD"), FLD(LF_CONDV, "DESCR")); set_row(++i, "Codice: @3s @50s", FLD(LF_CONDV, "COD"), FLD(LF_CONDV, "DESCR"));
if (_gest_val) { if (_gest_val) {
set_row(++i, "Valuta: @3s @50s", FLD(LF_CONDV, "CODVAL"), FLD(-VAL, "S0")); set_row(++i, "Valuta: @3s @50s", FLD(LF_CONDV, "CODVAL"), FLD(-VAL, "S0"));
set_row(++i, "Cambio: @15.5n (@d)", FLD(LF_CONDV, "CAMBIO"), FLD(LF_CONDV, "DATACAM")); set_row(++i, "Cambio: @15.5n (@d)", FLD(LF_CONDV, "CAMBIO"), FLD(LF_CONDV, "DATACAM"));
} }
set_row(++i, "Validità: dal @d al @d", FLD(LF_CONDV, "VALIN"), FLD(LF_CONDV, "VALFIN")); set_row(++i, "Validità: dal @d al @d", FLD(LF_CONDV, "VALIN"), FLD(LF_CONDV, "VALFIN"));
set_row(++i, "Importi lordi: @f", FLD(LF_CONDV, "IMPLORDI")); set_row(++i, "Importi lordi: @f", FLD(LF_CONDV, "IMPLORDI"));
set_row(++i, "Gestione unità di misura: @f", FLD(LF_CONDV, "GESTUM")); set_row(++i, "Gestione unità di misura: @f", FLD(LF_CONDV, "GESTUM"));
set_row(++i, "Gestione scaglioni: @f", FLD(LF_CONDV, "GESTSCAGL")); set_row(++i, "Gestione scaglioni: @f", FLD(LF_CONDV, "GESTSCAGL"));
set_row(++i, "Gestione sconti: @f", FLD(LF_CONDV, "GESTSCO")); set_row(++i, "Gestione sconti: @f", FLD(LF_CONDV, "GESTSCO"));
set_row(++i, "Gestione sconti standard: @f", FLD(LF_CONDV, "SCONST")); set_row(++i, "Gestione sconti standard: @f", FLD(LF_CONDV, "SCONST"));
if (_condven=="C") set_row(++i, "Contratto obbligatorio: @f", FLD(LF_CONDV, "OBBLIG")); if (_condven=="C") set_row(++i, "Contratto obbligatorio: @f", FLD(LF_CONDV, "OBBLIG"));
if (_condven=="L") set_row(++i, "Codice listino successivo: @3s", FLD(LF_CONDV, "CODLISSUCC")); if (_condven=="L") set_row(++i, "Codice listino successivo: @3s", FLD(LF_CONDV, "CODLISSUCC"));
set_row(++i, "Sequenza di ricerca: @4s", FLD(LF_CONDV, "SEQRIC")); set_row(++i, "Sequenza di ricerca: @4s", FLD(LF_CONDV, "SEQRIC"));
set_row(++i, ""); set_row(++i, "");
set_row(++i, ""); set_row(++i, "");
_testastamp= TRUE; _testastamp= TRUE;
} }
if (_righecomp) { // stampa della riga in forma completa if (_righecomp) { // stampa della riga in forma completa
TLocalisamfile &rcondv= current_cursor()->file(); TLocalisamfile &rcondv= current_cursor()->file();
TLocalisamfile &condv= current_cursor()->file(LF_CONDV); TLocalisamfile &condv= current_cursor()->file(LF_CONDV);
TString tiporiga= rcondv.get("TIPORIGA"); TString tiporiga= rcondv.get("TIPORIGA");
switch (tiporiga[0]) { switch (tiporiga[0]) {
case 'A': case 'A':
set_row(++i, "Riga: @1s @20s", FLD(LF_RCONDV, "TIPORIGA"), FLD(LF_RCONDV, "CODRIGA")); set_row(++i, "Riga: @1s @20s", FLD(LF_RCONDV, "TIPORIGA"), FLD(LF_RCONDV, "CODRIGA"));
set_row(++i, "Articolo: @50s", FLD(-ART1, "DESCR")); set_row(++i, "Articolo: @50s", FLD(-ART1, "DESCR"));
break; break;
case 'G': case 'G':
set_row(++i, "Riga: @1s @3s", FLD(LF_RCONDV, "TIPORIGA"), FLD(LF_RCONDV, "CODRIGA")); set_row(++i, "Riga: @1s @3s", FLD(LF_RCONDV, "TIPORIGA"), FLD(LF_RCONDV, "CODRIGA"));
set_row(++i, "Gruppo merceologico: @50s", FLD(-GMC1, "S0")); set_row(++i, "Gruppo merceologico: @50s", FLD(-GMC1, "S0"));
break; break;
case 'S': case 'S':
set_row(++i, "Riga: @1s @2s", FLD(LF_RCONDV, "TIPORIGA"), FLD(LF_RCONDV, "CODRIGA")); set_row(++i, "Riga: @1s @2s", FLD(LF_RCONDV, "TIPORIGA"), FLD(LF_RCONDV, "CODRIGA"));
set_row(++i, "Sottogruppo merceologico: @50s", FLD(-GMC2, "S0")); set_row(++i, "Sottogruppo merceologico: @50s", FLD(-GMC2, "S0"));
break; break;
case 'R': case 'R':
set_row(++i, "Riga: @1s @2s", FLD(LF_RCONDV, "TIPORIGA"), FLD(LF_RCONDV, "CODRIGA")); set_row(++i, "Riga: @1s @2s", FLD(LF_RCONDV, "TIPORIGA"), FLD(LF_RCONDV, "CODRIGA"));
set_row(++i, "Raggruppamento fiscale: @50s", FLD(-RFA, "S0")); set_row(++i, "Raggruppamento fiscale: @50s", FLD(-RFA, "S0"));
break; break;
} }
if (condv.get_bool("GESTUM")) set_row(++i, "Unità di misura: @2s @50s", FLD(LF_RCONDV, "UM"), FLD(-UMS1, "S0")); if (condv.get_bool("GESTUM")) set_row(++i, "Unità di misura: @2s @50s", FLD(LF_RCONDV, "UM"), FLD(-UMS1, "S0"));
if (condv.get_bool("GESTSCAGL")) { if (condv.get_bool("GESTSCAGL")) {
set_row(++i, "Scaglione: @1s", FLD(LF_RCONDV, "NSCAGL")); set_row(++i, "Scaglione: @1s", FLD(LF_RCONDV, "NSCAGL"));
set_row(++i, "Quantità limite scaglione: @15.5n", FLD(LF_RCONDV, "QLIM")); set_row(++i, "Quantità limite scaglione: @15.5n", FLD(LF_RCONDV, "QLIM"));
} }
set_row(++i, "Prezzo: @18.2n", FLD(LF_RCONDV, "PREZZO")); set_row(++i, "Prezzo: @18.2n", FLD(LF_RCONDV, "PREZZO"));
set_row(++i, "Sconto: @25s", FLD(LF_RCONDV, "SCONTO")); set_row(++i, "Sconto: @25s", FLD(LF_RCONDV, "SCONTO"));
set_row(++i, "Addebito IVA: @f", FLD(LF_RCONDV, "ADDIVA")); set_row(++i, "Addebito IVA: @f", FLD(LF_RCONDV, "ADDIVA"));
set_row(++i, "Codice IVA: @4s", FLD(LF_RCONDV, "CODIVA")); set_row(++i, "Codice IVA: @4s", FLD(LF_RCONDV, "CODIVA"));
set_row(++i, "Percentuale di provvigione: @5.2n", FLD(LF_RCONDV, "PERCPROVV")); set_row(++i, "Percentuale di provvigione: @5.2n", FLD(LF_RCONDV, "PERCPROVV"));
if (condv.get_bool("GESTSCO")) { if (condv.get_bool("GESTSCO")) {
set_row(++i, "Quantità merce omaggio: @15.5n", FLD(LF_RCONDV, "QOM")); set_row(++i, "Quantità merce omaggio: @15.5n", FLD(LF_RCONDV, "QOM"));
set_row(++i, "Quantità base: @15.5n", FLD(LF_RCONDV, "QBASE")); set_row(++i, "Quantità base: @15.5n", FLD(LF_RCONDV, "QBASE"));
set_row(++i, "Articolo omaggio: @20s @50s", FLD(LF_RCONDV, "CODARTOM"), FLD(-ART2, "DESCR")); set_row(++i, "Articolo omaggio: @20s @50s", FLD(LF_RCONDV, "CODARTOM"), FLD(-ART2, "DESCR"));
set_row(++i, "Prezzo omaggio: @18.2n", FLD(LF_RCONDV, "PROMAGGIO")); set_row(++i, "Prezzo omaggio: @18.2n", FLD(LF_RCONDV, "PROMAGGIO"));
if (condv.get_bool("GESTUM")) set_row(++i, "Unità di misura quantità omaggio: @2s @50s", FLD(LF_RCONDV, "UMOM"), FLD(-UMS2, "S0")); if (condv.get_bool("GESTUM")) set_row(++i, "Unità di misura quantità omaggio: @2s @50s", FLD(LF_RCONDV, "UMOM"), FLD(-UMS2, "S0"));
} }
// if ((_condven=="C") || (_condven=="O")) set_row(++i, "Codice lotto: @6s", FLD(LF_RCONDV, "CODLOTTO")); // if ((_condven=="C") || (_condven=="O")) set_row(++i, "Codice lotto: @6s", FLD(LF_RCONDV, "CODLOTTO"));
if (_condven=="O") set_row(++i, "Articolo in esaurimento: @f", FLD(LF_RCONDV, "ARTES")); if (_condven=="O") set_row(++i, "Articolo in esaurimento: @f", FLD(LF_RCONDV, "ARTES"));
set_row(++i, ""); // salta una riga set_row(++i, ""); // salta una riga
} else { // stampa della riga in forma abbreviata } else { // stampa della riga in forma abbreviata
set_row(++i, "@1g@1s @3g@20s @27g@1s @29g@15.5n @51g@18.2n @73g@25s @99g@1s @101g@4s @106g@5.2n", FLD(LF_RCONDV, "TIPORIGA"), FLD(LF_RCONDV, "CODRIGA"), FLD(LF_RCONDV, "NSCAGL"), FLD(LF_RCONDV, "QLIM"), FLD(LF_RCONDV, "PREZZO"), set_row(++i, "@1g@1s @3g@20s @27g@1s @29g@15.5n @51g@18.2n @73g@25s @99g@1s @101g@4s @106g@5.2n", FLD(LF_RCONDV, "TIPORIGA"), FLD(LF_RCONDV, "CODRIGA"), FLD(LF_RCONDV, "NSCAGL"), FLD(LF_RCONDV, "QLIM"), FLD(LF_RCONDV, "PREZZO"),
FLD(LF_RCONDV, "SCONTO"), FLD(LF_RCONDV, "ADDIVA"), FLD(LF_RCONDV, "CODIVA"), FLD(LF_RCONDV, "PERCPROVV")); // codice, prezzo... FLD(LF_RCONDV, "SCONTO"), FLD(LF_RCONDV, "ADDIVA"), FLD(LF_RCONDV, "CODIVA"), FLD(LF_RCONDV, "PERCPROVV")); // codice, prezzo...
if ((_condven=="L") || (_condven=="O")) set_row(i, "@24g@2s", FLD(LF_RCONDV, "UM")); // unità di misura if ((_condven=="L") || (_condven=="O")) set_row(i, "@24g@2s", FLD(LF_RCONDV, "UM")); // unità di misura
set_row(++i, "@1g@2s @5g@15.5n @27g@15.5n @49g@20s @70g@18.2n", FLD(LF_RCONDV, "UMOM"), FLD(LF_RCONDV, "QOM"), FLD(LF_RCONDV, "QBASE"), FLD(LF_RCONDV, "CODARTOM"), FLD(LF_RCONDV, "PROMAGGIO")); // sconto/omaggio set_row(++i, "@1g@2s @5g@15.5n @27g@15.5n @49g@20s @70g@18.2n", FLD(LF_RCONDV, "UMOM"), FLD(LF_RCONDV, "QOM"), FLD(LF_RCONDV, "QBASE"), FLD(LF_RCONDV, "CODARTOM"), FLD(LF_RCONDV, "PROMAGGIO")); // sconto/omaggio
if ((_condven=="C") || (_condven=="O")) set_row(i, "@92g@6s", FLD(LF_RCONDV, "CODLOTTO")); // lotto if ((_condven=="C") || (_condven=="O")) set_row(i, "@92g@6s", FLD(LF_RCONDV, "CODLOTTO")); // lotto
if (_condven=="O") set_row(i, "@99g@1s", FLD(LF_RCONDV, "ARTES")); if (_condven=="O") set_row(i, "@99g@1s", FLD(LF_RCONDV, "ARTES"));
set_row(++i, ""); // salta una riga set_row(++i, ""); // salta una riga
} }
} }
} }
/* /*
void TStampa_condizioni_vendita::process_link(int id, const char *text) { void TStampa_condizioni_vendita::process_link(int id, const char *text) {
if (id== _rcondv_link_id) { if (id== _rcondv_link_id) {
TString body= "1|"; // istanzia la stringa per il corpo del messaggio e gli aggiunge il numero della chiave e il separatore TString body= "1|"; // istanzia la stringa per il corpo del messaggio e gli aggiunge il numero della chiave e il separatore
body << text; // aggiunge al corpo del messaggio il codice dell'articolo per riempire la chiave body << text; // aggiunge al corpo del messaggio il codice dell'articolo per riempire la chiave
TMessage msg(RCONDV_APP, MSG_LN, (const char *)body); // crea il messaggio per l'applicazione TMessage msg(RCONDV_APP, MSG_LN, (const char *)body); // crea il messaggio per l'applicazione
msg.send(); // invia il messaggio msg.send(); // invia il messaggio
TExternal_app ve2_2(RCONDV_APP); // crea l'applicazione esterna TExternal_app ve2_2(RCONDV_APP); // crea l'applicazione esterna
ve2_2.run(); // lancia l'applicazione esterna ve2_2.run(); // lancia l'applicazione esterna
} }
} }
*/ */
int ve3200(int argc, char **argv) { int ve3200(int argc, char **argv) {
TStampa_condizioni_vendita a; TStampa_condizioni_vendita a;
a.run(argc, argv, "Stampa condizioni vendita"); a.run(argc, argv, "Stampa condizioni vendita");
return 0; return 0;
} }