1995-11-07 11:39:13 +00:00
# include <printapp.h>
# include <mask.h>
# include <config.h>
# include "veconf.h"
# include "ve3200.h"
# define RCONDV_APP "ve2 -2"
1996-11-12 09:32:02 +00:00
# define DESTROY(x) { ((TEditable_field &)mask.field(x)).reset_key(1); mask.hide(x); }
# define KILL(x) { ((TEditable_field &)mask.field(x)).reset_key(1); mask.disable(x); }
1995-11-07 11:39:13 +00:00
# define CVE 201
# define VAL 202
# define UMS1 203
# define UMS2 204
# define GMC1 205
# define GMC2 206
# define RFA 207
# define ART1 208
# define ART2 209
class TStampa_condizioni_vendita : public TPrint_application {
1998-01-23 09:57:34 +00:00
TRelation * _rel ; // relazione principale
TString16 _condven ; // stringa che indica il tipo di archivio
1995-11-07 11:39:13 +00:00
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 _listval ; // booleano di abilitazione della stampa dei listini in valuta
bool _testacomp , _righecomp ; // booleani di selezione della stampa completa per testata e righe;
1999-07-16 14:59:11 +00:00
bool _printdesagg ; // Stampa anche la descrizione aggiuntiva, solo se abilitata anche la stampa completa delle righe
2004-05-04 13:21:37 +00:00
bool _printstorico ; // Stampa prz storico e Data prz storico
1995-11-07 11:39:13 +00:00
bool _testastamp ; // booleano di testata completa gi<67> stampata
bool _gest_val , _gest_um , _gest_sca , _gest_so ; // booleani per l'abilitazione di valute, unit<69> di misura, scaglioni e sconti/omaggi
1999-07-16 14:59:11 +00:00
bool _filter_by_grm ; //Filtro per gruppo merceologico nel caso di stampa righe articoli
TString _codiva , _um , _descragg ;
2004-06-04 11:20:51 +00:00
TString _strprezzo , _stromaggio , _strstorico ; //stringhe per la stampa del prezzo dell'articolo (normale, omaggiato e storico!)
1995-11-07 11:39:13 +00:00
protected :
1996-11-30 12:16:55 +00:00
static bool tipo_handler ( TMask_field & f , KEY k ) ;
1995-11-07 11:39:13 +00:00
virtual bool user_create ( void ) ;
virtual bool user_destroy ( void ) ;
virtual bool set_print ( int ) ;
virtual void set_page ( int , int ) ;
1999-04-06 15:34:39 +00:00
virtual bool preprocess_page ( int , int ) ;
1995-11-07 11:39:13 +00:00
virtual void preprocess_header ( void ) ;
virtual void preprocess_footer ( void ) ;
2001-06-25 10:41:20 +00:00
TString & curr2str ( const char * fname , TString & str ) ;
1998-01-23 09:57:34 +00:00
public :
// @cmember Disabilita la verifica del modulo in chiave
virtual bool check_autorization ( ) const
{ return FALSE ; }
1995-11-07 11:39:13 +00:00
} ;
1996-11-30 12:16:55 +00:00
inline TStampa_condizioni_vendita & app ( ) { return ( TStampa_condizioni_vendita & ) main_app ( ) ; }
1995-11-07 11:39:13 +00:00
1996-11-30 12:16:55 +00:00
// Gruppi della maschera:
// 1 : Listini
// 2 : Contratti
// 3 : Offerte
// 4 : Articoli(listini)[DA..A]
// 5 : Gr.Merc(listini)[DA..A]
// 6 : Raggr.Fisc(listini)[DA..A]
// 7 : Articoli(contratti)[DA..A]
// 8 : Gr.Merc(contratti)[DA..A]
// 9 : Raggr.Fisc(contratti)[DA..A]
// 10 : Articoli(offerte)[DA..A]
// 11 : Gr.Merc(offerte)[DA..A]
// 12 : Raggr.Fisc(offerte)[DA..A]
bool TStampa_condizioni_vendita : : tipo_handler ( TMask_field & f , KEY k )
{
if ( k = = K_SPACE )
{
TMask & m = f . mask ( ) ;
const char s = f . get ( ) [ 0 ] ;
const char arc = app ( ) . _condven [ 0 ] ;
int base = 3 ;
int other1 , other2 ;
if ( arc = = ' C ' ) base = 6 ;
else if ( arc = = ' O ' ) base = 9 ;
if ( s = = ' A ' ) { base + = 1 ; other1 = base + 1 ; other2 = base + 2 ; } // articoli
else if ( s = = ' G ' ) { base + = 2 ; other1 = base + 1 ; other2 = base - 1 ; } // gr. merc
else { base + = 3 ; other1 = base - 1 ; other2 = base - 2 ; } // raggr. fiscale
m . reset ( - base ) ;
m . show ( - base ) ;
m . hide ( - other1 ) ;
m . hide ( - other2 ) ;
}
return TRUE ;
}
1995-11-07 11:39:13 +00:00
bool TStampa_condizioni_vendita : : user_create ( ) {
1996-03-20 16:15:18 +00:00
bool gotcha = FALSE ; // booleano di avvenuta inizializzazione
2004-04-28 22:06:07 +00:00
int indice = 0 ; // indice delle variabili di configurazione per le abilitazioni
1996-03-20 16:15:18 +00:00
_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
1997-05-23 14:56:15 +00:00
if ( ! ( prassid . get_bool ( " GES " , NULL , indice ) ) ) error_box ( " L'archivio Listini non <20> abilitato " ) ; // controlla che l'archivio listini sia abilitato
1996-03-20 16:15:18 +00:00
else {
_codlis_catven = prassid . get_bool ( " GESLISCV " ) ; // setta il booleano di abilitazione delle categoria di vendita
gotcha = TRUE ;
}
break ;
case ' C ' : // contratti
indice = A_CONTRATTI ; // setta l'indice dell'archivio contratti
1997-05-23 14:56:15 +00:00
if ( ! ( prassid . get_bool ( " GES " , NULL , indice ) ) ) error_box ( " L'archivio Contratti non <20> abilitato " ) ; // controlla che l'archivio contratti sia abilitato
1996-03-20 16:15:18 +00:00
else {
_codcon_codcf = prassid . get_bool ( " GESCONCC " ) ; // setta il booleano di abilitazione delle categoria di vendita
gotcha = TRUE ;
}
break ;
case ' O ' : // offerte
indice = A_OFFERTE ; // setta l'indice dell'archivio offerte
1997-05-23 14:56:15 +00:00
if ( ! ( prassid . get_bool ( " GES " , NULL , indice ) ) ) error_box ( " L'archivio Offerte non <20> abilitato " ) ; // controlla che l'archivio offerte sia abilitato
1996-03-20 16:15:18 +00:00
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 ;
}
2004-05-04 13:21:37 +00:00
if ( gotcha )
{ // se <20> stato selezionato correttamente un archivio completa l'inizializzazione
1996-03-20 16:15:18 +00:00
_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
1996-06-27 09:43:00 +00:00
_rel - > add ( LF_ANAMAG , " CODART==CODRIGA " , 1 , LF_RCONDV , ART1 ) ;
_rel - > add ( LF_ANAMAG , " CODART==CODARTOM " , 1 , LF_RCONDV , ART2 ) ;
1999-04-06 15:34:39 +00:00
_rel - > add ( LF_UMART , " CODART==CODART " , 1 , LF_ANAMAG ) ;
1996-08-21 10:45:43 +00:00
_rel - > add ( " GMC " , " CODTAB[1,3]==CODRIGA " , 1 , LF_RCONDV , GMC1 ) ;
_rel - > add ( " GMC " , " CODTAB[4,5]==CODRIGA " , 1 , LF_RCONDV , GMC2 ) ;
_rel - > add ( " RFA " , " CODTAB==CODRIGA " , 1 , LF_RCONDV , RFA ) ;
1996-03-20 16:15:18 +00:00
_rel - > add ( LF_CONDV , " TIPO==TIPO|CATVEN==CATVEN|TIPOCF==TIPOCF|CODCF==CODCF|COD==COD " ) ;
1996-08-21 10:45:43 +00:00
_rel - > add ( " CVE " , " CODTAB==CATVEN " , 1 , LF_CONDV , CVE ) ;
1996-03-20 16:15:18 +00:00
_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
2000-05-05 15:25:49 +00:00
set_magic_currency ( TRUE ) ;
1996-03-20 16:15:18 +00:00
}
return ( gotcha ) ;
1995-11-07 11:39:13 +00:00
}
bool TStampa_condizioni_vendita : : user_destroy ( ) {
delete _rel ; // distrugge la relazione principale
return TRUE ;
}
bool TStampa_condizioni_vendita : : set_print ( int ) {
1996-03-20 16:15:18 +00:00
TMask mask ( " ve3200x " ) ;
mask . set ( F_TIPO , _condven ) ; // settaggio del campo di tipo archivio
1996-11-30 12:16:55 +00:00
mask . set_handler ( F_TIPORIGHE , tipo_handler ) ;
1996-03-20 16:15:18 +00:00
switch ( _condven [ 0 ] ) {
case ' L ' : // listini
1996-11-30 12:16:55 +00:00
mask . show ( - 1 ) ; // nasconde i campi dei listini
mask . hide ( - 5 ) ; // nasconde i campi del gr. merc
mask . hide ( - 6 ) ; // nasconde i campi del raggr. fisc.
mask . hide ( - 2 ) ; // nasconde i campi dei contratti
mask . hide ( - 3 ) ; // nasconde i campi delle offerte
1996-03-20 16:15:18 +00:00
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
2002-05-08 16:25:49 +00:00
mask . show ( - 2 ) ; // mostra i campi dei contratti
1996-11-30 12:16:55 +00:00
mask . hide ( - 8 ) ; // nasconde i campi del gr. merc
mask . hide ( - 9 ) ; // nasconde i campi del raggr. fisc.
mask . hide ( - 1 ) ; // nasconde i campi dei listini
mask . hide ( - 3 ) ; // nasconde i campi delle offerte
1996-03-20 16:15:18 +00:00
DESTROY ( F_L_COD ) ; // settaggio dei campi da eliminare
DESTROY ( F_L_CATVEN ) ;
DESTROY ( F_L_LISTVALUTA ) ;
DESTROY ( F_O_COD ) ;
2002-05-08 16:25:49 +00:00
if ( ! _codcon_codcf )
{ // disabilita condizionalmente i clienti/fornitori
1996-03-20 16:15:18 +00:00
KILL ( F_C_TIPOCF ) ;
KILL ( F_C_CODCF ) ;
2002-05-08 16:25:49 +00:00
mask . set ( F_C_TIPOCF , " " ) ;
mask . set ( F_C_CODCF , 0L ) ;
1996-03-20 16:15:18 +00:00
}
break ;
case ' O ' : // offerte
1996-11-30 12:16:55 +00:00
mask . show ( - 3 ) ; // nasconde i campi delle offerte
mask . hide ( - 11 ) ; // nasconde i campi del gr. merc
mask . hide ( - 12 ) ; // nasconde i campi del raggr. fisc.
mask . hide ( - 1 ) ; // nasconde i campi dei listini
mask . hide ( - 2 ) ; // nasconde i campi dei contratti
1996-03-20 16:15:18 +00:00
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-11-07 11:39:13 +00:00
if ( mask . run ( ) = = K_ENTER ) { // lancia la maschera, se viene confermata vengono trovati gli estremi del cursore
1996-03-20 16:15:18 +00:00
_testastamp = FALSE ; // azzera il flag di testa gi<67> stampata
_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
2002-12-20 16:15:03 +00:00
_printdesagg = mask . get_bool ( F_PRINTDESAGG ) ; //legge l'abilitazione della stampa della descrizione aggiuntiva
2004-05-04 13:21:37 +00:00
_printstorico = mask . get_bool ( F_PRINTSTORICO ) ; //legge l'abilitazione della stampa del prz storico e della relativa data
1996-03-20 16:15:18 +00:00
TLocalisamfile & rcondv = _rel - > lfile ( ) ; // prende il file principale
TRectype da ( rcondv . curr ( ) ) ; // prepara il record di inizio regione
da . zero ( ) ;
da . put ( " TIPO " , _condven ) ;
1995-11-07 11:39:13 +00:00
switch ( _condven [ 0 ] ) { // impostazione della chiave della testata
1996-03-20 16:15:18 +00:00
case ' L ' : // listini
if ( _codlis_catven ) da . put ( " CATVEN " , mask . get ( F_L_CATVEN ) ) ;
else da . blank ( " CATVEN " ) ; // riempie il campo di blank se non <20> gestito
da . put ( " COD " , mask . get ( F_L_COD ) ) ;
break ;
case ' C ' : // contratti
da . blank ( " CATVEN " ) ; // i campi non gestiti vengono riempiti di blank
if ( _codcon_codcf ) {
da . put ( " TIPOCF " , mask . get ( F_C_TIPOCF ) ) ;
da . put ( " CODCF " , mask . get ( F_C_CODCF ) ) ;
} else {
da . blank ( " TIPOCF " ) ; // riempie i campi di blank se non sono gestiti
da . blank ( " CODCF " ) ;
}
da . put ( " COD " , mask . get ( F_C_COD ) ) ;
break ;
case ' O ' : // offerte
da . blank ( " CATVEN " ) ; // i campi non gestiti vengono riempiti di blank
da . blank ( " TIPOCF " ) ;
da . blank ( " CODCF " ) ;
da . put ( " COD " , mask . get ( F_O_COD ) ) ;
1996-11-30 12:16:55 +00:00
break ;
1995-11-07 11:39:13 +00:00
}
1999-07-16 14:59:11 +00:00
TString filter ;
1995-11-07 11:39:13 +00:00
TRectype a ( da ) ; // prepara il record di fine regione
1999-07-16 14:59:11 +00:00
_filter_by_grm = mask . get_bool ( F_GRM_FILT ) ;
if ( ! _filter_by_grm )
1999-04-06 15:34:39 +00:00
{
da . put ( " TIPORIGA " , mask . get ( F_TIPORIGHE ) ) ;
da . put ( " CODRIGA " , mask . get ( F_DARIGA_A ) ) ;
a . put ( " TIPORIGA " , mask . get ( F_TIPORIGHE ) ) ;
a . put ( " CODRIGA " , mask . get ( F_ARIGA_A ) ) ;
}
else // Elenco righe per articoli ma filtrate sul gruppo merceologico
{
da . put ( " TIPORIGA " , " A " ) ; a . put ( " TIPORIGA " , " A " ) ;
if ( mask . get ( F_DFLT_G_C ) . not_empty ( ) )
{
filter < < " ( " < < LF_ANAMAG < < " ->GRMERC>= \" " < < mask . get ( F_DFLT_G_C ) ;
filter < < " \" ) " ;
}
if ( mask . get ( F_DFLT_G_C ) . not_empty ( ) )
{
if ( filter . not_empty ( ) )
filter < < " && " ;
filter < < " ( " < < LF_ANAMAG < < " ->GRMERC<= \" " < < mask . get ( F_AFLT_G_C ) ;
filter < < " \" ) " ;
}
}
1999-07-16 14:59:11 +00:00
current_cursor ( ) - > setfilter ( filter , _filter_by_grm ) ;
1999-04-06 15:34:39 +00:00
1996-03-20 16:15:18 +00:00
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
disable_links ( ) ; // disabilita tutti i link ipertestuali
1995-11-07 11:39:13 +00:00
// _rcondv_link_id= enable_link("Collegamento a righe condizioni di vendita", 'g'); // abilita il collegamento
return TRUE ;
} else return FALSE ;
}
/* 1 1 1 1
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
. . . . . . . . . . . . . . . . . . , . . . . . . . - . . - . .
*/
/* 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
2004-05-04 13:21:37 +00:00
DATAPREZZOSTORICO PREZZOSTORICO
. . . . . . . . . . . . . . . . . , . . . . . . . . . . . . . . . . . . . . , . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . , . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1995-11-07 11:39:13 +00:00
*/
1999-04-06 15:34:39 +00:00
bool TStampa_condizioni_vendita : : preprocess_page ( int i , int c )
{
if ( i = = LF_RCONDV )
{
TLocalisamfile & rcondv = current_cursor ( ) - > file ( ) ;
TLocalisamfile & anamag = current_cursor ( ) - > file ( - ART1 ) ;
_codiva = rcondv . get ( " CODIVA " ) ;
_um = rcondv . get ( " UM " ) ;
1999-07-16 14:59:11 +00:00
if ( _printdesagg )
{
_descragg = anamag . get ( " DESCRAGG " ) ;
_descragg . replace ( ' \n ' , ' ' ) ;
_descragg . strip_d_spaces ( ) ;
}
1999-04-06 15:34:39 +00:00
if ( _codiva . empty ( ) )
_codiva = anamag . get ( " CODIVA " ) ;
if ( _um . empty ( ) )
_um = current_cursor ( ) - > file ( LF_UMART ) . get ( " UM " ) ; // Prima unit<69> di misura per sto articolo
}
return TRUE ;
}
1995-11-07 11:39:13 +00:00
void TStampa_condizioni_vendita : : preprocess_header ( ) {
1996-03-20 16:15:18 +00:00
reset_header ( ) ; // l'header viene resettato
1995-11-07 11:39:13 +00:00
int i = 1 ; // contatore delle linee
const long firm = get_firm ( ) ; // legge l'id della ditta corrente
1996-11-30 12:16:55 +00:00
const bool is_listino = _condven = = " L " ;
const bool is_contratto = _condven = = " C " ;
TString rw ( 132 ) ; rw . fill ( ' - ' ) ;
1995-11-07 11:39:13 +00:00
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
1996-03-20 16:15:18 +00:00
const TString & s = ditte . get ( " RAGSOC " ) ; // legge la ragione sociale della ditta
1996-11-30 12:16:55 +00:00
set_header ( i , " @1gDitta %ld %s@100gData @< " , firm , ( const char * ) s ) ; // setta il nome e l'id della ditta della prima linea dell'header
1995-11-07 11:39:13 +00:00
}
TLocalisamfile & condv = current_cursor ( ) - > file ( LF_CONDV ) ;
i + = 2 ; // stampa breve della testata, occupa almeno due linee
1996-11-30 12:16:55 +00:00
set_header ( i + + , ( const char * ) rw ) ;
// setta l'header del codice, della descrizione, della validit<69> , dei booleani, ecc.
set_header ( i , " @14gCod @18gDescrizione @69gVal. dal @80gal @91gIL @94gUM @97gSC @100gSO @103gST @116gSeq " ) ;
if ( is_listino )
{
// siamo sui listini?
if ( _codlis_catven )
set_header ( i , " @11gCV " ) ; // setta l'header della categoria di vendita
set_header ( i , " @109gSucc. " ) ;
}
if ( is_contratto )
{ // siamo sui contratti?
if ( _codcon_codcf )
// <20> abilitato il codice cliente/fornitore?
set_header ( i , " @1gCF @4gCod.CF " ) ; // setta l'header di clienti/fornitori
set_header ( i , " @106gOB " ) ; // setta l'header di contratto obbligatorio
}
if ( _gest_val )
// se c'<27> la gestione della valuta occupa altre due linee
set_header ( + + i , " @1gVal @5gCambio @27gData cambio " ) ; // setta l'header del codice e della descrizione
if ( ! _righecomp )
1998-11-04 18:04:26 +00:00
{
// impostazione dell'header delle righe in forma abbreviata
2001-06-25 10:41:20 +00:00
set_header ( + + i , " @1gT @3gCodice riga @27gDescrizione @77gS @79gQuantita' limite @109gPrezzo@117gPz per Conf " ) ; // setta l'header della chiave, della quantit<69> limite e del prezzo
1999-04-06 15:34:39 +00:00
/*if ((_condven=="L") || (_condven=="O")) */
set_header ( i , " @24gUM " ) ; // setta l'header dell'unit<69> di misura
1999-07-16 14:59:11 +00:00
i + + ;
if ( _filter_by_grm )
set_header ( i , " @3gGr.Merc. " ) ;
2002-12-20 16:15:03 +00:00
set_header ( i , " @27gSconto @53gA @55gIVA @60gProvvig. @109gUlt. Aum. " ) ; // setta l'header della chiave, della quantit<69> limite e del prezzo
2004-05-04 13:21:37 +00:00
if ( ( _condven = = " C " ) | | ( _condven = = " O " ) )
set_header ( i , " @69gLotto " ) ; // setta l'header del lotto
1996-11-30 12:16:55 +00:00
set_header ( + + i , " @1gUMO @5gQuantita' omaggio @27gQuantita' base @49gCod. art. omagg. @70gPrezzo omaggio " ) ; // setta l'header dello sconto/omaggio
2004-05-04 13:21:37 +00:00
if ( _condven = = " O " )
set_header ( i , " @73gEsaur. " ) ; // setta l'header dell'articolo in esaurimento
if ( _condven = = " C " & & _printstorico ) //header della riga prezii e date storici
2004-06-04 11:20:51 +00:00
set_header ( + + i , " @79gData prezzo storico @101gPrezzo storico " ) ;
1996-11-30 12:16:55 +00:00
}
set_header ( + + i , ( const char * ) rw ) ;
set_header ( + + i , " @14g%3s " , ( const char * ) condv . get ( " COD " ) ) ;
1996-03-20 16:15:18 +00:00
set_header ( i , " @18g%s " , ( const char * ) condv . get ( " DESCR " ) ) ;
set_header ( i , " @69g%s " , ( const char * ) condv . get ( " VALIN " ) ) ;
1996-11-30 12:16:55 +00:00
set_header ( i , " @80g%s " , ( const char * ) condv . get ( " VALFIN " ) ) ;
set_header ( i , " @91g%s " , ( const char * ) condv . get ( " IMPLORDI " ) ) ;
set_header ( i , " @94g%s " , ( const char * ) condv . get ( " GESTUM " ) ) ;
set_header ( i , " @97g%s " , ( const char * ) condv . get ( " GESTSCAGL " ) ) ;
set_header ( i , " @100g%s " , ( const char * ) condv . get ( " GESTSCO " ) ) ;
set_header ( i , " @103g%s " , ( const char * ) condv . get ( " SCONST " ) ) ;
set_header ( i , " @116g%s " , ( const char * ) condv . get ( " SEQRIC " ) ) ;
if ( is_listino )
{
if ( _codlis_catven )
// siamo sui listini?
set_header ( i , " @11g%s " , ( const char * ) ( condv . get ( " CATVEN " ) ) ) ; // categoria di vendita
set_header ( i , " @109g%3s " , ( const char * ) ( condv . get ( " CODLISSUCC " ) ) ) ; // codice successivo
1995-11-07 11:39:13 +00:00
}
1996-11-30 12:16:55 +00:00
if ( is_contratto )
1996-03-20 16:15:18 +00:00
{ // siamo sui contratti?
if ( _codcon_codcf )
{ // <20> abilitato il codice cliente/fornitore?
set_header ( i , " @1g%s " , ( const char * ) condv . get ( " TIPOCF " ) ) ; // cliente/fornitore
set_header ( i , " @4g%6s " , ( const char * ) condv . get ( " CODCF " ) ) ; // cliente/fornitore
}
1996-11-30 12:16:55 +00:00
set_header ( i , " @106g%s " , ( const char * ) ( condv . get ( " OBBLIG " ) ) ) ; // booleano
1995-11-07 11:39:13 +00:00
}
1996-11-30 12:16:55 +00:00
1996-03-20 16:15:18 +00:00
if ( _gest_val )
{ // c'<27> la gestione della valuta?
1996-11-30 12:16:55 +00:00
set_header ( + + i , " @1g%3s " , ( const char * ) condv . get ( " CODVAL " ) ) ; // cambio e valuta
1996-03-20 16:15:18 +00:00
set_header ( i , " @5g%21s " , ( const char * ) condv . get ( " CAMBIO " ) ) ; // cambio e valuta
set_header ( i , " @27g%s " , ( const char * ) condv . get ( " DATACAM " ) ) ; // cambio e valuta
}
1995-11-07 11:39:13 +00:00
set_header ( + + i , " " ) ; // aggiunge due linee vuote
set_header ( + + i , " " ) ;
}
void TStampa_condizioni_vendita : : preprocess_footer ( ) {
1996-03-20 16:15:18 +00:00
reset_footer ( ) ;
int i = 1 ; // indice di linea
set_footer ( i , " " ) ; // salta una linea
1995-11-07 11:39:13 +00:00
set_footer ( + + i , " @125gPag @# " ) ; // l'unica linea del footer contiene il numero di pagina
}
2001-06-25 10:41:20 +00:00
TString & TStampa_condizioni_vendita : : curr2str ( const char * fname , TString & str )
{
const TRectype & condv = current_cursor ( ) - > curr ( LF_CONDV ) ;
const TRectype & rcondv = current_cursor ( ) - > curr ( LF_RCONDV ) ;
const TString8 codval = condv . get ( " CODVAL " ) ;
TPrice prezzo ( rcondv . get_real ( fname ) , codval ) ;
if ( ! _listval ) //se non viene selezionato "listino in valuta" -> il prezzo viene espresso nella valuta della ditta
prezzo . change_to_firm_val ( ) ;
str = prezzo . string ( TRUE ) ;
str . right_just ( 14 ) ;
return str ;
}
1995-11-07 11:39:13 +00:00
void TStampa_condizioni_vendita : : set_page ( int file , int ) {
1996-03-20 16:15:18 +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 ( ( 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 = = " 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 " ) ) ;
if ( _gest_val ) {
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 , " Validit<EFBFBD> : dal @d al @d " , FLD ( LF_CONDV , " VALIN " ) , FLD ( LF_CONDV , " VALFIN " ) ) ;
1995-11-07 11:39:13 +00:00
set_row ( + + i , " Importi lordi: @f " , FLD ( LF_CONDV , " IMPLORDI " ) ) ;
set_row ( + + i , " Gestione unit<69> di misura: @f " , FLD ( LF_CONDV , " GESTUM " ) ) ;
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 standard: @f " , FLD ( LF_CONDV , " SCONST " ) ) ;
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 " ) ) ;
set_row ( + + i , " Sequenza di ricerca: @4s " , FLD ( LF_CONDV , " SEQRIC " ) ) ;
set_row ( + + i , " " ) ;
set_row ( + + i , " " ) ;
_testastamp = TRUE ;
1996-03-20 16:15:18 +00:00
}
2002-12-20 16:15:03 +00:00
if ( _righecomp )
{ // stampa della riga in forma completa
1995-11-07 11:39:13 +00:00
TLocalisamfile & rcondv = current_cursor ( ) - > file ( ) ;
TLocalisamfile & condv = current_cursor ( ) - > file ( LF_CONDV ) ;
TString tiporiga = rcondv . get ( " TIPORIGA " ) ;
1996-03-20 16:15:18 +00:00
switch ( tiporiga [ 0 ] ) {
case ' A ' :
set_row ( + + i , " Riga: @1s @20s " , FLD ( LF_RCONDV , " TIPORIGA " ) , FLD ( LF_RCONDV , " CODRIGA " ) ) ;
set_row ( + + i , " Articolo: @50s " , FLD ( - ART1 , " DESCR " ) ) ;
1999-07-16 14:59:11 +00:00
if ( _printdesagg )
set_row ( + + i , " Descrizione aggiuntiva: #-100t " , & _descragg ) ;
if ( _filter_by_grm )
set_row ( + + i , " Gruppo merceologico: @s " , FLD ( - ART1 , " GRMERC " , 0 , 3 ) ) ;
1996-03-20 16:15:18 +00:00
break ;
case ' G ' :
set_row ( + + i , " Riga: @1s @3s " , FLD ( LF_RCONDV , " TIPORIGA " ) , FLD ( LF_RCONDV , " CODRIGA " ) ) ;
set_row ( + + i , " Gruppo merceologico: @50s " , FLD ( - GMC1 , " S0 " ) ) ;
break ;
case ' S ' :
set_row ( + + i , " Riga: @1s @2s " , FLD ( LF_RCONDV , " TIPORIGA " ) , FLD ( LF_RCONDV , " CODRIGA " ) ) ;
set_row ( + + i , " Sottogruppo merceologico: @50s " , FLD ( - GMC2 , " S0 " ) ) ;
break ;
case ' R ' :
1996-11-30 12:16:55 +00:00
set_row ( + + i , " Riga: @1s @5s " , FLD ( LF_RCONDV , " TIPORIGA " ) , FLD ( LF_RCONDV , " CODRIGA " ) ) ;
1996-03-20 16:15:18 +00:00
set_row ( + + i , " Raggruppamento fiscale: @50s " , FLD ( - RFA , " S0 " ) ) ;
break ;
}
1999-04-06 15:34:39 +00:00
//if (condv.get_bool("GESTUM"))
set_row ( + + i , " Unit<EFBFBD> di misura: #t " , & _um ) ;
1996-03-20 16:15:18 +00:00
if ( condv . get_bool ( " GESTSCAGL " ) ) {
set_row ( + + i , " Scaglione: @1s " , FLD ( LF_RCONDV , " NSCAGL " ) ) ;
1996-11-30 12:16:55 +00:00
set_row ( + + i , " Quantit<EFBFBD> limite scaglione: @pn " , FLD ( LF_RCONDV , " QLIM " , " #########,@@@@@ " ) ) ;
2001-06-25 10:41:20 +00:00
}
curr2str ( " PREZZO " , _strprezzo ) ;
set_row ( + + i , " Prezzo: #t " , & _strprezzo ) ;
2004-05-04 13:21:37 +00:00
if ( _printstorico & & tiporiga [ 0 ] = = ' A ' )
2004-06-04 11:20:51 +00:00
{
curr2str ( " PRZSTO " , _strstorico ) ;
set_row ( + + i , " Prezzo storico: #t " , & _strstorico ) ;
}
1999-04-06 15:34:39 +00:00
set_row ( + + i , " Pz per conf.: @pn " , FLD ( - ART1 , " PPCONF " , " ###.###.###,@@ " ) ) ;
2002-12-20 16:15:03 +00:00
set_row ( + + i , " Data ultimo aumento: @d " , FLD ( LF_RCONDV , " DATAULTAUM " ) ) ;
2004-05-04 13:21:37 +00:00
if ( _printstorico & & tiporiga [ 0 ] = = ' A ' )
set_row ( + + i , " Data prezzo storico: @d " , FLD ( LF_RCONDV , " DATAPRZSTO " ) ) ;
1996-03-20 16:15:18 +00:00
set_row ( + + i , " Sconto: @25s " , FLD ( LF_RCONDV , " SCONTO " ) ) ;
set_row ( + + i , " Addebito IVA: @f " , FLD ( LF_RCONDV , " ADDIVA " ) ) ;
1999-04-06 15:34:39 +00:00
set_row ( + + i , " Codice IVA: #4t " , & _codiva ) ;
1996-11-30 12:16:55 +00:00
set_row ( + + i , " Percentuale di provvigione: @pn " , FLD ( LF_RCONDV , " PERCPROVV " , " ###,@@ " ) ) ;
1996-03-20 16:15:18 +00:00
if ( condv . get_bool ( " GESTSCO " ) ) {
2001-06-25 10:41:20 +00:00
curr2str ( " PROMAGGIO " , _stromaggio ) ;
1996-11-30 12:16:55 +00:00
set_row ( + + i , " Quantit<EFBFBD> merce omaggio: @pn " , FLD ( LF_RCONDV , " QOM " , " ##########,@@@@@ " ) ) ;
set_row ( + + i , " Quantit<EFBFBD> base: @pn " , FLD ( LF_RCONDV , " QBASE " , " ##########,@@@@@ " ) ) ;
1996-03-20 16:15:18 +00:00
set_row ( + + i , " Articolo omaggio: @20s @50s " , FLD ( LF_RCONDV , " CODARTOM " ) , FLD ( - ART2 , " DESCR " ) ) ;
2001-06-25 10:41:20 +00:00
set_row ( + + i , " Prezzo omaggio: #t " , & _stromaggio ) ;
1996-03-20 16:15:18 +00:00
if ( condv . get_bool ( " GESTUM " ) ) set_row ( + + i , " Unit<EFBFBD> di misura quantit<69> 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 = = " O " ) set_row ( + + i , " Articolo in esaurimento: @f " , FLD ( LF_RCONDV , " ARTES " ) ) ;
set_row ( + + i , " " ) ; // salta una riga
2002-12-20 16:15:03 +00:00
}
else
{ // stampa della riga in forma abbreviata
1998-11-04 18:04:26 +00:00
TLocalisamfile & rcondv = current_cursor ( ) - > file ( ) ;
TLocalisamfile & condv = current_cursor ( ) - > file ( LF_CONDV ) ;
2001-06-25 10:41:20 +00:00
TString8 tiporiga = rcondv . get ( " TIPORIGA " ) ;
curr2str ( " PREZZO " , _strprezzo ) ;
set_row ( + + i , " @1g@1s @3g@20s @77g@1s @79g@pn @101g#t@117g@pn " ,
1996-11-30 12:16:55 +00:00
FLD ( LF_RCONDV , " TIPORIGA " ) , FLD ( LF_RCONDV , " CODRIGA " ) ,
FLD ( LF_RCONDV , " NSCAGL " ) , FLD ( LF_RCONDV , " QLIM " , " ##########,@@@@@ " ) ,
2001-06-25 10:41:20 +00:00
& _strprezzo , FLD ( - ART1 , " PPCONF " ) ) ;
2004-05-04 13:21:37 +00:00
switch ( tiporiga [ 0 ] )
{
1998-11-04 18:04:26 +00:00
case ' A ' :
set_row ( i , " @27g@50s " , FLD ( - ART1 , " DESCR " ) ) ; //
break ;
case ' G ' :
set_row ( i , " @27g@50s " , FLD ( - GMC1 , " S0 " ) ) ; //
break ;
case ' S ' :
set_row ( i , " @27g@50s " , FLD ( - GMC2 , " S0 " ) ) ; //
break ;
case ' R ' :
set_row ( i , " @27g@50s " , FLD ( - RFA , " S0 " ) ) ; //
break ;
}
2002-12-20 16:15:03 +00:00
set_row ( i , " @24g#t " , & _um ) ; // unit<69> di misura
1999-10-22 10:00:18 +00:00
if ( tiporiga [ 0 ] = = ' A ' & & _printdesagg )
{
2002-12-20 16:15:03 +00:00
set_row ( + + i , " @27g#-82t@109g@10s " , & _descragg , FLD ( LF_RCONDV , " DATAULTAUM " ) ) ;
1999-10-22 10:00:18 +00:00
}
1998-11-04 18:04:26 +00:00
// seconda riga: info accessorie
1999-07-16 14:59:11 +00:00
i + + ;
if ( _filter_by_grm )
set_row ( i , " @3g@3s " , FLD ( - ART1 , " GRMERC " , 0 , 3 ) ) ;
set_row ( i , " @27g@25s @53g@1s @55g#4t @60g@5.2n " ,
1996-11-30 12:16:55 +00:00
FLD ( LF_RCONDV , " SCONTO " ) , FLD ( LF_RCONDV , " ADDIVA " ) ,
1999-04-06 15:34:39 +00:00
& _codiva , FLD ( LF_RCONDV , " PERCPROVV " , " ###,@@ " ) ) ; // codice, prezzo...
1998-11-04 18:04:26 +00:00
if ( ( _condven = = " C " ) | | ( _condven = = " O " ) )
1999-04-06 15:34:39 +00:00
set_row ( i , " @69g@6s " , FLD ( LF_RCONDV , " CODLOTTO " ) ) ; // lotto
1998-11-04 18:04:26 +00:00
if ( _condven = = " O " )
set_row ( i , " @73g@1s " , FLD ( LF_RCONDV , " ARTES " ) ) ;
// terza riga (opzionale)
if ( condv . get_bool ( " GESTSCO " ) )
2001-06-25 10:41:20 +00:00
{
curr2str ( " PROMAGGIO " , _stromaggio ) ;
set_row ( + + i , " @1g@2s @5g@pn @27g@pn @49g@20s @70g#t " ,
1996-11-30 12:16:55 +00:00
FLD ( LF_RCONDV , " UMOM " ) , FLD ( LF_RCONDV , " QOM " , " ##########,@@@@@ " ) ,
FLD ( LF_RCONDV , " QBASE " , " ##########,@@@@@ " ) , FLD ( LF_RCONDV , " CODARTOM " ) ,
2001-06-25 10:41:20 +00:00
& _stromaggio ) ; // sconto/omaggio
1998-11-04 18:04:26 +00:00
}
2004-05-04 13:21:37 +00:00
// quarta riga: storico (solo per contratti,opzionale)
if ( _printstorico )
{
2004-06-04 11:20:51 +00:00
curr2str ( " PRZSTO " , _strstorico ) ;
set_row ( + + i , " @79g@10s @101g#t " , FLD ( LF_RCONDV , " DATAPRZSTO " ) , & _strstorico ) ;
2004-05-04 13:21:37 +00:00
}
1996-03-20 16:15:18 +00:00
set_row ( + + i , " " ) ; // salta una riga
}
}
1995-11-07 11:39:13 +00:00
}
int ve3200 ( int argc , char * * argv ) {
TStampa_condizioni_vendita a ;
a . run ( argc , argv , " Stampa condizioni vendita " ) ;
return 0 ;
}