1995-09-25 15:36:30 +00:00
# include <printapp.h>
# include <mask.h>
1995-10-17 16:49:47 +00:00
# include <config.h>
# include <execp.h>
# include <mailbox.h>
1995-09-25 15:36:30 +00:00
1995-10-17 16:49:47 +00:00
# include "veconf.h"
1995-09-25 15:36:30 +00:00
# include "ve3200.h"
1995-10-17 16:49:47 +00:00
# define RCONDV_APP "ve2 -2"
1995-09-25 15:36:30 +00:00
1995-10-17 16:49:47 +00:00
# define DESTROY(x) { mask.field(x).reset_key(1); mask.hide(x); }
# define KILL(x) { mask.field(x).reset_key(1); mask.disable(x); }
1995-09-25 15:36:30 +00:00
1995-10-17 16:49:47 +00:00
# define CVE 201
# define VAL 202
# define UMS1 203
# define UMS2 204
1995-09-25 15:36:30 +00:00
class TStampa_condizioni_vendita : public TPrint_application {
TRelation * _rel ; // relazione principale
1995-10-17 16:49:47 +00:00
TString16 _condven ; // stringa che indica il tipo di archivio
bool _codlis_catven ; // booleano di abilitazione della categoria di vendita nella chiave dei listini
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 _gest_val , _gest_um , _gest_sca , _gest_so ; // booleani per l'abilitazione di valute, unit<69> di misura, scaglioni e sconti/omaggi
int _rcondv_link_id ; // id del link ipertestuale all'anagrafica di magazzino
1995-09-25 15:36:30 +00:00
protected :
virtual bool user_create ( void ) ;
virtual bool user_destroy ( void ) ;
virtual bool set_print ( int ) ;
virtual void set_page ( int , int ) ;
virtual void preprocess_header ( void ) ;
1995-10-17 16:49:47 +00:00
//virtual void process_link(int, const char *);
1995-09-25 15:36:30 +00:00
} ;
bool TStampa_condizioni_vendita : : user_create ( ) {
1995-10-17 16:49:47 +00:00
bool gotcha = FALSE ; // booleano di avvenuta inizializzazione
int indice ; // indice delle variabili di configurazione per le abilitazioni
_condven = " * " ; // inizializzazione dell'indicatore del tipo di archivio
if ( argc ( ) > 2 ) _condven = argv ( 2 ) ; // se c'<27> , prende il tipo di archivio dalla linea di comando
else {
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
}
_condven . upper ( ) ; // rende la stringa upper-case
TConfig prassid ( CONFIG_DITTA , " ve " ) ; // apre il file di configurazione della ditta corrente
switch ( _condven [ 0 ] ) {
case ' L ' : // listini
indice = A_LISTINI ; // setta l'indice dell'archivio listini
if ( ! ( prassid . get_bool ( " GES " , NULL , indice ) ) ) error_box ( " L'archivio Listini non <20> abilititato " ) ; // controlla che l'archivio listini sia abilitato
else {
_codlis_catven = prassid . get_bool ( " CODLISCV " ) ; // setta il booleano di abilitazione delle categoria di vendita
gotcha = TRUE ;
}
break ;
case ' C ' : // contratti
indice = A_CONTRATTI ; // setta l'indice dell'archivio contratti
if ( ! ( prassid . get_bool ( " GES " , NULL , indice ) ) ) error_box ( " L'archivio Contratti non <20> abilititato " ) ; // controlla che l'archivio contratti sia abilitato
else gotcha = TRUE ;
break ;
case ' O ' : // offerte
indice = A_OFFERTE ; // setta l'indice dell'archivio offerte
if ( ! ( prassid . get_bool ( " GES " , NULL , indice ) ) ) error_box ( " L'archivio Offerte non <20> abilititato " ) ; // controlla che l'archivio offerte sia abilitato
else gotcha = TRUE ;
break ;
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 " ) ;
break ;
}
if ( gotcha ) { // se <20> stato selezionato correttamente un archivio completa l'inizializzazione
_gest_um = prassid . get_bool ( " GESUM " , NULL , indice ) ; // setta il booleano di abilitazione delle unit<69> di misura
_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_val = prassid . get_bool ( " GESVAL " ) ; // legge il booleano di abilitazione della gestione delle valute
_rel = new TRelation ( LF_RCONDV ) ; // crea la relazione principale
_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 ( LF_CLIFO , " TIPOCF==TIPOCF|CODCF==CODCF " , 1 , LF_CONDV ) ;
_rel - > add ( " %VAL " , " CODTAB==CODVAL " , 1 , LF_CONDV , VAL ) ;
_rel - > add ( " %UMS " , " CODTAB==UM " , 1 , LF_RCONDV , UMS1 ) ;
_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_file ( LF_RCONDV ) ; // notifica il file delle righe alla stampa
enable_print_menu ( ) ; // abilita il men<65> di stampa
enable_setprint_menu ( ) ; // abilita il men<65> di settaggio della stampa
}
return ( gotcha ) ;
1995-09-25 15:36:30 +00:00
}
bool TStampa_condizioni_vendita : : user_destroy ( ) {
delete _rel ; // distrugge la relazione principale
return TRUE ;
}
bool TStampa_condizioni_vendita : : set_print ( int ) {
1995-10-17 16:49:47 +00:00
TMask mask ( " ve3200x " ) ;
mask . set ( F_TIPO , _condven ) ; // settaggio del campo di tipo archivio
switch ( _condven [ 0 ] ) {
case ' L ' : // listini
DESTROY ( F_C_COD ) ; // eliminazione campi di altri archivi
DESTROY ( F_C_TIPOCF ) ;
DESTROY ( F_C_CODCF ) ;
DESTROY ( F_O_COD ) ;
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
break ;
case ' C ' : // contratti
DESTROY ( F_L_COD ) ; // settaggio dei campi da eliminare
DESTROY ( F_L_CATVEN ) ;
DESTROY ( F_L_LISTVALUTA ) ;
DESTROY ( F_O_COD ) ;
break ;
case ' O ' : // offerte
DESTROY ( F_L_COD ) ; // settaggio dei campi da eliminare
DESTROY ( F_L_CATVEN ) ;
DESTROY ( F_L_LISTVALUTA ) ;
DESTROY ( F_C_TIPOCF ) ;
DESTROY ( F_C_CODCF ) ;
DESTROY ( F_C_COD ) ;
break ;
}
1995-09-25 15:36:30 +00:00
if ( mask . run ( ) = = K_ENTER ) { // lancia la maschera, se viene confermata vengono trovati gli estremi del cursore
1995-10-17 16:49:47 +00:00
_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
_righecomp = mask . get_bool ( F_RIGHECOMP ) ; // legge l'abilitazione della stampa completa delle righe
TLocalisamfile & rcondv = _rel - > lfile ( ) ; // prende il file principale
TString filtro ;
filtro < < " (TIPO== \" " < < _condven < < " \" ) " ;
switch ( _condven [ 0 ] ) { // impostazione della chiave della testata
case ' L ' : // listini
if ( _codlis_catven ) filtro < < " &&(CATVEN== \" " < < mask . get ( F_L_CATVEN ) < < " \" ) " ;
filtro < < " &&(COD== \" " < < mask . get ( F_L_COD ) < < " \" ) " ;
break ;
case ' C ' : // contratti
filtro < < " &&(TIPOCF== \" " < < mask . get ( F_C_TIPOCF ) < < " \" ) " ;
filtro < < " &&(CODCF== \" " < < mask . get ( F_C_CODCF ) < < " \" ) " ;
filtro < < " &&(COD== \" " < < mask . get ( F_C_COD ) < < " \" ) " ;
break ;
case ' O ' : // offerte
filtro < < " &&(COD== \" " < < mask . get ( F_O_COD ) < < " \" ) " ;
break ;
}
if ( ! ( mask . get_bool ( F_TUTTERIGHE ) ) ) {
filtro < < " &&(TIPORIGA== \" " < < mask . get ( F_TIPORIGHE ) < < " \" ) " ;
filtro < < " &&(CODRIGA>= \" " < < mask . get ( F_DARIGA_A ) < < " \" ) " ;
filtro < < " &&(CODORIGA<= \" " < < mask . get ( F_ARIGA_A ) < < " \" ) " ;
}
current_cursor ( ) - > setfilter ( filtro ) ;
force_setpage ( ) ; // forza il lancio della set_page() ad ogni record del file da stampare
disable_links ( ) ; // disabilita tutti i link ipertestuali
// _rcondv_link_id= enable_link("Collegamento a righe condizioni di vendita", 'g'); // abilita il collegamento
1995-09-25 15:36:30 +00:00
return TRUE ;
} else return FALSE ;
}
/* 1 1 1 1
1995-10-17 16:49:47 +00:00
1 2 3 4 5 6 7 8 9 0 1 2 3
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012
CF CODCF CV COD DESCR VALIN VALFIN IL UM SC SO ST OB SUC SEQ
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - . . - . . . . - . . - . . . . . . . . . . . . . .
CVA CAMBIO DATACAM
. . . . . . . . . . . . . . . . . . , . . . . . . . - . . - . .
*/
1995-09-25 15:36:30 +00:00
1995-10-17 16:49:47 +00:00
/* 1 1 1 1
1 2 3 4 5 6 7 8 9 0 1 2 3
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012
T CODRIGA UM S QLIM PREZZO SCONTO A CIVA PERCPROV
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . , . . . . . . . . . . . . . . . . . . . . . . . , . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . , . .
UO QOM QBASE CODARTOM PROMAGGIO CODLOT E
. . . . . . . . . . . . . . . . . , . . . . . . . . . . . . . . . . . . . . , . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . , . . . . . . . . .
*/
void TStampa_condizioni_vendita : : preprocess_header ( ) {
reset_header ( ) ; // l'header viene resettato
int i = 1 ; // contatore delle linee
set_header ( i , " @125gPag @# " ) ; // la prima linea contiene, sicuramente, il numero di pagina
const long firm = get_firm ( ) ; // legge l'id della ditta corrente
TLocalisamfile ditte ( LF_NDITTE ) ; // apre il file ditte
ditte . zero ( ) ; // vuota il record
ditte . put ( " CODDITTA " , firm ) ; // riempie la chiave
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
set_header ( i , " Ditta %ld %s " , firm , ( const char * ) s ) ; // setta il nome e l'id della ditta della prima linea dell'header
}
if ( ( get_page_number ( ) = = 1 ) & & ( ! _testacomp ) ) { // se siamo sulla prima pagina si stampa la testata
set_header ( + + i , " @14gCod @18gDescrizione @69gVal. dal @78gal @87gIL @90gUM @93gSC @96gSO @99gST @109gSeq " ) ; // setta l'header del codice, della descrizione, della validit<69> , dei booleani, ecc.
if ( ( _condven = = " L " ) & & _codlis_catven ) set_header ( i , " @11gCV " ) ; // setta l'header della categoria di vendita
if ( _condven = = " C " ) set_header ( i , " CF @4gCod.CF @102gOB " ) ; // setta l'header di clienti/fornitori e di contratto obbligatorio
if ( ( _condven = = " L " ) | | ( _condven = = " C " ) ) set_header ( i , " @105gSuc " ) ; // setta l'header per il codice di listino successivo
if ( _gest_val ) set_header ( + + i , " Val @5gCambio @27gData cambio " ) ; // setta l'header del codice e della descrizione
set_header ( + + i , " " ) ; // salta una riga
}
if ( ! _righecomp ) {
set_header ( + + i , " T @2gCodice riga @27gS @29gQuantita' limite @51gPrezzo @73gSconto @99gA @101gIVA @106gProvvig. " ) ; // setta l'header della chiave, della quantit<69> limite e del prezzo
if ( ( _condven = = " L " ) | | ( _condven = = " O " ) ) set_header ( i , " @24gUM " ) ; // setta l'header dell'unit<69> di misura
set_header ( + + i , " UMO @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 = = " O " ) set_header ( i , " @99gEsaur. " ) ; // setta l'header dell'articolo in esaurimento
}
set_header ( + + i , " " ) ; // aggiunge due linee vuote
set_header ( + + i , " " ) ;
1995-09-25 15:36:30 +00:00
}
void TStampa_condizioni_vendita : : set_page ( int file , int ) {
1995-10-17 16:49:47 +00:00
if ( file = = LF_RCONDV ) { // se il file in stampa non <20> il file principale non c'<27> nulla da fare
int i = 0 ; // indice di riga
if ( get_page_number ( ) = = 1 ) { // se siamo sulla prima pagina deve essere stampata anche la testata
if ( _testacomp ) { // stampa della testata in forma completa
// ...
} else { // stampa della testata in forma abbreviata
set_row ( + + i , " @14g@3s @18g@50s @69g@d @78g@d @87g@1s @90g@1s @93g@1s @96g@1s @99g@1s @109g@3s " , FLD ( LF_CONDV , " COD " ) , FLD ( LF_CONDV , " DESCR " ) , FLD ( LF_CONDV , " VALIN " ) , FLD ( LF_CONDV , " VALFIN " ) , FLD ( LF_CONDV , " IMPLORDI " ) , FLD ( LF_CONDV , " GESTUM " ) ,
FLD ( LF_CONDV , " GESTSCAGL " ) , FLD ( LF_CONDV , " GESTSCO " ) , FLD ( LF_CONDV , " SCONST " ) , FLD ( LF_CONDV , " SEQRIC " ) ) ; // codice, descriz., validit<69> e booleani
if ( ( _condven = = " L " ) & & _codlis_catven ) set_row ( i , " @11g@2s " , FLD ( LF_CONDV , " CATVEN " ) ) ; // categoria di vendita
if ( _condven = = " C " ) set_row ( i , " @1s @4g@6s @102g@1s " , FLD ( LF_CONDV , " TIPOCF " ) , FLD ( LF_CONDV , " CODCF " ) , FLD ( LF_CONDV , " OBBLIG " ) ) ; // cliente/fornitore e booleano
if ( ( _condven = = " L " ) | | ( _condven = = " C " ) ) set_row ( i , " @105g@3s " , FLD ( LF_CONDV , " CODLISSUCC " ) ) ; // codice successivo
if ( _gest_val ) set_row ( + + i , " @3s @5g@15.5n @27g@d " , FLD ( LF_CONDV , " CODVAL " ) , FLD ( LF_CONDV , " CAMBIO " ) , FLD ( LF_CONDV , " DATACAM " ) ) ; // cambio e valuta
set_row ( + + i , " " ) ; // salta una riga
}
}
if ( _righecomp ) { // stampa della riga in forma completa
// ...
} else { // stampa della riga in forma abbreviata
set_row ( + + i , " @1s @2g@20s @27g@1s @29g@15.5n @51g@18.2n @73g25s @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...
if ( ( _condven = = " L " ) | | ( _condven = = " O " ) ) set_row ( i , " @24g@2s " , FLD ( LF_RCONDV , " UM " ) ) ; // unit<69> di misura
set_row ( + + i , " @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 = = " O " ) set_row ( i , " @99g@1s " , FLD ( LF_RCONDV , " ARTES " ) ) ;
set_row ( + + i , " " ) ; // salta una riga
}
}
1995-09-25 15:36:30 +00:00
}
1995-10-17 16:49:47 +00:00
/*
1995-09-25 15:36:30 +00:00
void TStampa_condizioni_vendita : : process_link ( int id , const char * text ) {
1995-10-17 16:49:47 +00:00
if ( id = = _rcondv_link_id ) {
1995-09-25 15:36:30 +00:00
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
1995-10-17 16:49:47 +00:00
TMessage msg ( RCONDV_APP , MSG_LN , ( const char * ) body ) ; // crea il messaggio per l'applicazione
1995-09-25 15:36:30 +00:00
msg . send ( ) ; // invia il messaggio
1995-10-17 16:49:47 +00:00
TExternal_app ve2_2 ( RCONDV_APP ) ; // crea l'applicazione esterna
ve2_2 . run ( ) ; // lancia l'applicazione esterna
}
1995-09-25 15:36:30 +00:00
}
1995-10-17 16:49:47 +00:00
*/
1995-09-25 15:36:30 +00:00
1995-10-17 16:49:47 +00:00
int ve3200 ( int argc , char * * argv ) {
1995-09-25 15:36:30 +00:00
TStampa_condizioni_vendita a ;
a . run ( argc , argv , " Stampa condizioni vendita " ) ;
return 0 ;
}