1999-04-06 15:34:39 +00:00
# include <currency.h>
2002-05-08 16:25:49 +00:00
# include <modaut.h>
1997-01-09 11:49:36 +00:00
# include <msksheet.h>
# include <printapp.h>
# include <utility.h>
2003-10-09 07:29:57 +00:00
# include "cg3.h"
# include "cg3200.h"
# include "cglib02.h"
# include "cglib03.h"
1997-01-09 11:49:36 +00:00
# include <clifo.h>
# include <pconti.h>
# include <mov.h>
# include <rmov.h>
# include <comuni.h>
# include <saldi.h>
# include <causali.h>
# include <nditte.h>
# include <unloc.h>
1999-06-18 15:35:05 +00:00
class TMastrini_record : public TRectype
{
TBill _bill ;
protected :
virtual const TString & get_str ( const char * fieldname ) const ;
virtual int length ( const char * fieldname ) const ;
virtual TFieldtypes type ( const char * fieldname ) const ;
public :
TMastrini_record ( ) : TRectype ( LF_SALDI ) { }
virtual ~ TMastrini_record ( ) { }
} ;
const TString & TMastrini_record : : get_str ( const char * fieldname ) const
{
2003-10-09 07:29:57 +00:00
if ( strcmp ( fieldname , RMV_DESCR ) = = 0 )
1999-06-18 15:35:05 +00:00
{
2003-10-09 07:29:57 +00:00
const int g = atoi ( TRectype : : get_str ( RMV_GRUPPO ) ) ;
const int c = atoi ( TRectype : : get_str ( RMV_CONTO ) ) ;
const long s = atol ( TRectype : : get_str ( RMV_SOTTOCONTO ) ) ;
1999-06-18 15:35:05 +00:00
( ( TBill & ) _bill ) . set ( g , c , s ) ;
const TString & descr = _bill . descrizione ( ) ;
return descr ;
}
return TRectype : : get_str ( fieldname ) ;
}
int TMastrini_record : : length ( const char * fieldname ) const
{
2003-10-09 07:29:57 +00:00
if ( strcmp ( fieldname , RMV_DESCR ) = = 0 )
1999-06-18 15:35:05 +00:00
return 50 ;
return TRectype : : length ( fieldname ) ;
}
TFieldtypes TMastrini_record : : type ( const char * fieldname ) const
{
2003-10-09 07:29:57 +00:00
if ( strcmp ( fieldname , RMV_DESCR ) = = 0 )
1999-06-18 15:35:05 +00:00
return _alfafld ;
return TRectype : : type ( fieldname ) ;
}
1997-01-09 11:49:36 +00:00
class TMastrini_application : public TPrintapp
{
2002-10-23 14:14:55 +00:00
static bool anno_hnd ( TMask_field & f , KEY k ) ;
1997-01-09 11:49:36 +00:00
static bool data_inizio ( TMask_field & f , KEY k ) ;
static bool data_fine ( TMask_field & f , KEY k ) ;
static bool gruppo_hnd ( TMask_field & f , KEY k ) ;
2002-09-13 14:06:05 +00:00
static bool tipocf_hnd ( TMask_field & f , KEY k ) ;
1997-01-09 11:49:36 +00:00
static bool contoi_hnd ( TMask_field & f , KEY k ) ;
static bool contof_hnd ( TMask_field & f , KEY k ) ;
static bool sottoc_handler_ini ( TMask_field & f , KEY k ) ;
static bool sottoc_handler_fine ( TMask_field & f , KEY k ) ;
2002-07-02 16:21:23 +00:00
static bool cdc_handler ( TMask_field & f , KEY k ) ;
1997-01-09 11:49:36 +00:00
static bool memorizza_handler ( TMask_field & f , KEY k ) ;
static bool scelte_notify ( TSheet_field & s , int r , KEY k ) ;
TDociva_array _b ;
TRelation * _rel ;
TMask * _msk ;
TTable * _tabivd , * _tabtpd , * _tabreg ;
TSaldo * _sld ;
1999-05-24 13:34:11 +00:00
TParagraph_string * _d18 , * _d22 , * _d30 ;
1997-01-09 11:49:36 +00:00
TArray _riga , _lista ;
TDate _data_ini , _data_fine , _data_finese , _data_finesesucc , _ultima_data_reg ;
TDate _datareg , _datadoc , _data_inizioese , _datareg_stampa , _inizioes ;
1999-06-18 15:35:05 +00:00
int _cur1 , _cur2 , _gruppo , _conto , _numcarat , _stampanum , _numivd , _annoiva ;
2003-10-09 07:29:57 +00:00
int _numrig , _natdoc , _tipo , _selez_mastrini , _g_prec , _c_prec , _numrivd_int ;
1997-01-09 11:49:36 +00:00
real _progredare , _progreavere , _totprogre_dare_al , _totprogre_avere_al ;
real _totprogre_dare , _totprogre_avere , _importo ;
real _riporto_dare , _riporto_avere , _riporto_parziale_dare , _riporto_parziale_avere ;
real _totale_periodo_dare , _totale_periodo_avere , _totale_prima_dare , _totale_prima_avere ;
real _saldo_periodo , _saldo_progre , _saldo_progre_al , _saldo_progre_prec ;
real _saldo_movimenti , _saldo_progressivi , _totale_saldo , _riporto_footer_dare , _riporto_footer_avere ;
TString _ragsoc , _indulc , _civulc , _capulc , _com , _prov , _comulc ;
long _codice_ditta , _s_prec ;
2002-02-26 16:20:19 +00:00
TString _tipodoc , _codcaus , _descrcaus , _descrdociva , _regiva , _g_contr , _c_contr , _s_contr , _descrcontr ;
1997-01-09 11:49:36 +00:00
char _sezivd , _lettivd ;
TString _descrizione , _sezione , _numdoc , _descrizionemov , _numrivd , _descr ;
TString _dataregs , _datadocs ;
int _gruppocontr , _contocontr , _nummast , _pagina ;
long _sottocontocontr ;
2003-10-09 07:29:57 +00:00
bool _stampaprogre , _stampatotiva , _stampatot , _stampa_mov_prov ;
1997-01-09 11:49:36 +00:00
bool _stampato , _devi_stampare_footer ;
2003-10-09 07:29:57 +00:00
int _stampa_saldo_des ;
1997-01-09 11:49:36 +00:00
int _annomsk , _annoesmsk , _annoes , _annomsksucc , _tipo_mask , _anno_ghost ;
int _anno_corrente , _anno_precedente , _indbil , _numero_pag ;
long _sottoc , _numreg , _numgio , _protiva ;
bool _stampa_progressivi_si , _competenza , /*_inizio_stampa,*/ _puoi_stampare , _stampa_footer_si ;
bool _cambia_mastrino , _gia_stampata_intestazione ;
char _tmcf , _tipo_contr ;
1997-11-11 11:42:40 +00:00
bool _flag_del_cazzo ;
1997-01-09 11:49:36 +00:00
TDate _dataregrmov ;
int _gruppof , _contof ;
long _sottocf ;
TString _dataregrmovstring , _importo_str , _saldo_movimenti_str , _saldo_progressivi_str ;
int _rw , _conta_mastrini , _indice_array , _item , _item_lista , _indice_lista ;
int _ddociva_len ;
1997-10-20 14:23:01 +00:00
2002-07-02 16:21:23 +00:00
bool _noseparator , _print_cdc ;
1997-10-20 14:23:01 +00:00
TString _real_picture ;
2002-05-08 16:25:49 +00:00
2002-07-29 15:19:18 +00:00
TString _cdc , _fsc , _riga_commessa ;
2002-07-02 16:21:23 +00:00
2002-09-13 14:06:05 +00:00
2002-05-08 16:25:49 +00:00
real _totale_commessa_dare , _totale_commessa_avere , _saldo_commessa ;
2002-05-31 10:35:40 +00:00
1997-01-09 11:49:36 +00:00
protected :
virtual bool user_create ( ) ;
virtual bool user_destroy ( ) ;
virtual bool set_print ( int m ) ;
virtual bool preprocess_print ( int file , int counter ) ;
virtual bool preprocess_page ( int , int ) ;
virtual print_action postprocess_page ( int , int ) ;
virtual print_action postprocess_print ( int , int ) ;
virtual void preprocess_header ( ) ;
virtual void preprocess_footer ( ) ;
virtual void set_page ( int , int ) ;
virtual void process_link ( int id , const char * txt ) ;
void set_handlers ( TMask * msk ) const ;
bool mask2sheet ( ) ;
bool sheet2mask ( ) ;
1999-04-06 15:34:39 +00:00
const char * real2str ( const real & r ) const ;
2002-10-23 14:14:55 +00:00
bool show_cdc ( ) ;
1999-04-06 15:34:39 +00:00
1997-01-09 11:49:36 +00:00
public :
int date2esc ( const TDate & d ) ;
void ricerca_clifo ( ) ;
void ricerca_gruppo ( ) ;
int ricerca_clifo ( int riga ) ;
int ricerca_gruppo ( int riga ) ;
2000-10-03 13:45:12 +00:00
void calcola_progressivi ( bool finali = FALSE ) ;
void calcola_progressivi_al ( const TDate & data ) ;
1997-01-09 11:49:36 +00:00
int stampa_progressivi ( int start_riga ) ;
int stampa_progre_riporto ( int start_riga ) ;
void documenti_iva ( ) ;
void ricerca_regiva ( ) ;
void descrizione_causale ( ) ;
int crea_intestazione ( int riga ) ;
void crea_intestazione ( ) ;
void fai_stampa132 ( ) ;
void fai_stampa198 ( ) ;
void stampa_totali132 ( ) ;
void stampa_totali198 ( ) ;
void stampa_totali132_II ( ) ;
void stampa_totali198_II ( ) ;
void carica_array_totali132 ( ) ;
void carica_array_totali198 ( ) ;
void stampa_totaliiva ( ) ;
2002-05-08 16:25:49 +00:00
void stampa_totali_commessa ( ) ;
1997-01-09 11:49:36 +00:00
void ricerca_classe_IV ( bool scelta ) ;
void data_fine_esercizio ( int ) ;
const char * descrizione_gruppo ( ) ;
const char * descrizione_conto ( ) ;
const char * descrizione_sottoconto ( ) ;
const char * descrizione_classe ( char , char , int , int ) ;
bool almeno_un_record ( ) ;
void ricerca_dati_ditta ( ) ;
void conto ( int , int , bool ) ;
bool check_ordine ( TMask_field & f , KEY k ) ;
2002-09-13 14:06:05 +00:00
void setta_riga ( int r , const TString & riga ) ;
1997-01-09 11:49:36 +00:00
int righe_rimaste_da_stampare ( ) ;
TMastrini_application ( ) { }
virtual ~ TMastrini_application ( ) { }
} ;
inline TMastrini_application & app ( ) { return ( TMastrini_application & ) main_app ( ) ; }
int TMastrini_application : : righe_rimaste_da_stampare ( )
{
int righe_rimaste = 0 ;
if ( _nummast = = 2 )
{
if ( printer ( ) . rows_left ( ) ! = 0 )
{
if ( ( _conta_mastrini % 2 ) ! = 0 )
{
if ( ( printer ( ) . formlen ( ) % 2 ) ! = 0 )
righe_rimaste = printer ( ) . rows_left ( ) - ( printer ( ) . formlen ( ) / 2 ) + 1 ; //- 33;
else
righe_rimaste = printer ( ) . rows_left ( ) - ( printer ( ) . formlen ( ) / 2 ) ;
}
else
righe_rimaste = printer ( ) . rows_left ( ) ;
}
else
{
if ( ( _conta_mastrini % 2 ) ! = 0 )
righe_rimaste = printer ( ) . formlen ( ) / 2 ; //32;
else
{
if ( ( printer ( ) . formlen ( ) % 2 ) ! = 0 )
righe_rimaste = ( printer ( ) . formlen ( ) / 2 ) + 1 ; //33;
else
righe_rimaste = printer ( ) . formlen / 2 ;
}
}
}
return righe_rimaste ;
}
void TMastrini_application : : process_link ( int id , const char * txt )
{
2003-10-09 07:29:57 +00:00
TRectype mov ( LF_MOV ) ;
mov . put ( MOV_NUMREG , txt ) ;
mov . edit ( ) ;
/* Vecchio modo barbaro ed obsoleto
const char * const app = " cg2 -0 " ;
1997-01-09 11:49:36 +00:00
TToken_string ss ( 10 ) ;
ss . add ( " 1 " ) ;
ss . add ( txt ) ;
2003-10-09 07:29:57 +00:00
1997-01-09 11:49:36 +00:00
TMessage fs ( cmd2name ( app ) , MSG_LN , ss ) ;
fs . send ( ) ;
TExternal_app pn ( app ) ;
pn . run ( ) ;
2003-10-09 07:29:57 +00:00
*/
1997-01-09 11:49:36 +00:00
}
2002-10-23 14:14:55 +00:00
// Visualizzo le commesse se necessario
bool TMastrini_application : : show_cdc ( )
{
const bool okp = has_module ( CMAUT ) ; // Mostra campo "Stampa commesse"
bool okg = okp ; // Mostra campi del gruppo delle commesse
if ( okg )
{
okg = _msk - > get_int ( F_ANNO ) ! = 0 ; // Controllo anno
if ( okg )
{ // Controllo se conto normale
const char ti = _msk - > get ( F_TIPOCF_INI ) [ 0 ] ;
const char tf = _msk - > get ( F_TIPOCF_FINE ) [ 0 ] ;
okg = ti < = ' ' & & tf < = ' ' ;
}
}
_msk - > show ( - 7 , okg ) ;
_msk - > show ( F_PRINTCDC , okp ) ;
return okg ;
}
2002-07-02 16:21:23 +00:00
bool TMastrini_application : : cdc_handler ( TMask_field & f , KEY k )
{
if ( k = = K_TAB )
{
TMask & m = f . mask ( ) ;
const bool on = ! ( m . field ( F_DACDC ) . empty ( ) & & m . field ( F_ACDC ) . empty ( ) ) ;
if ( ! on )
{
m . reset ( F_DAFSC ) ;
m . reset ( F_AFSC ) ;
}
m . enable ( F_DAFSC , on ) ;
m . enable ( F_AFSC , on ) ;
}
return TRUE ;
}
1997-01-09 11:49:36 +00:00
bool TMastrini_application : : sottoc_handler_ini ( TMask_field & f , KEY key )
{
2000-10-03 13:45:12 +00:00
const TMask & m = f . mask ( ) ;
1997-01-09 11:49:36 +00:00
const short id = f . dlg ( ) ;
2000-10-03 13:45:12 +00:00
const int gruppo = m . get_int ( F_GRUPPOINI ) ;
const int conto = m . get_int ( F_CONTOINI_CONTO ) ;
1997-01-09 11:49:36 +00:00
2000-10-03 13:45:12 +00:00
const long sottoconto = m . get_long ( id ) ;
1997-01-09 11:49:36 +00:00
if ( key = = K_ENTER )
{
if ( sottoconto ! = 0 & & conto = = 0 )
2003-03-14 15:13:36 +00:00
return f . warning_box ( TR ( " Manca il CONTO " ) ) ;
1997-01-09 11:49:36 +00:00
if ( conto ! = 0 & & gruppo = = 0 )
2003-03-14 15:13:36 +00:00
return f . warning_box ( TR ( " Manca il GRUPPO " ) ) ;
1997-01-09 11:49:36 +00:00
}
2000-10-03 13:45:12 +00:00
if ( key = = K_TAB & & m . is_running ( ) )
1997-01-09 11:49:36 +00:00
{
1997-07-01 15:44:57 +00:00
if ( id = = F_SOTTOCINI_CONTO & & ( gruppo ! = 0 | | conto ! = 0 | | sottoconto ! = 0L ) )
1997-01-09 11:49:36 +00:00
{
2003-03-14 15:13:36 +00:00
TString16 key ;
key . format ( " %d|%d|%ld " , gruppo , conto , sottoconto ) ;
const TRectype & pconti = cache ( ) . get ( LF_PCON , key ) ;
if ( pconti . empty ( ) )
return f . warning_box ( TR ( " Sottoconto inesistente " ) ) ;
const TString & ds = pconti . get ( PCN_DESCR ) ;
1997-01-09 11:49:36 +00:00
f . mask ( ) . set ( F_DESCRINI_CONTO , ds ) ;
f . mask ( ) . set ( F_DESCRINI_CLIENTE , ds ) ;
f . mask ( ) . set ( F_DESCRINI_FORN , ds ) ;
}
else
if ( id = = F_SOTTOCINI_CLIENTE | | id = = F_SOTTOCINI_FORN )
{
char tipo = id = = F_SOTTOCINI_CLIENTE ? ' C ' : ' F ' ;
if ( sottoconto ! = 0 )
{
2003-03-14 15:13:36 +00:00
TString16 key ;
key . format ( " %c|%ld " , tipo , sottoconto ) ;
const TRectype & clifo = cache ( ) . get ( LF_CLIFO , key ) ;
if ( clifo . empty ( ) )
return f . warning_box ( TR ( " Anagrafica inesistente " ) ) ;
const TString & rs = clifo . get ( CLI_RAGSOC ) ;
1997-01-09 11:49:36 +00:00
f . mask ( ) . set ( F_DESCRINI_CLIENTE , rs ) ;
f . mask ( ) . set ( F_DESCRINI_FORN , rs ) ;
}
}
}
2000-10-03 13:45:12 +00:00
1997-01-09 11:49:36 +00:00
return TRUE ;
}
bool TMastrini_application : : sottoc_handler_fine ( TMask_field & f , KEY key )
{
2000-10-03 13:45:12 +00:00
const TMask & m = f . mask ( ) ;
1997-01-09 11:49:36 +00:00
const short id = f . dlg ( ) ;
TString ds ;
TString80 rs ;
2000-10-03 13:45:12 +00:00
const int gruppo = m . get_int ( F_GRUPPOFINE ) ;
const int conto = m . get_int ( F_CONTOFINE_CONTO ) ;
1997-01-09 11:49:36 +00:00
2000-10-03 13:45:12 +00:00
const long sottoconto = m . get_long ( id ) ;
1997-01-09 11:49:36 +00:00
if ( key = = K_ENTER )
{
if ( sottoconto ! = 0 & & conto = = 0 )
2003-03-14 15:13:36 +00:00
return f . warning_box ( TR ( " Manca il CONTO " ) ) ;
1997-01-09 11:49:36 +00:00
if ( conto ! = 0 & & gruppo = = 0 )
2003-03-14 15:13:36 +00:00
return f . warning_box ( TR ( " Manca il GRUPPO " ) ) ;
1997-01-09 11:49:36 +00:00
if ( ! app ( ) . check_ordine ( f , key ) )
return FALSE ;
}
2000-10-03 13:45:12 +00:00
if ( key = = K_TAB & & m . is_running ( ) )
1997-01-09 11:49:36 +00:00
{
1997-07-31 14:52:35 +00:00
if ( id = = F_SOTTOCFINE_CONTO & & ( gruppo ! = 0 | | conto ! = 0 | | sottoconto ! = 0L ) )
1997-01-09 11:49:36 +00:00
{
2003-03-14 15:13:36 +00:00
TString16 key ;
key . format ( " %d|%d|%ld " , gruppo , conto , sottoconto ) ;
const TRectype & pconti = cache ( ) . get ( LF_PCON , key ) ;
if ( pconti . empty ( ) )
return f . warning_box ( TR ( " Sottoconto inesistente " ) ) ;
const TString & ds = pconti . get ( PCN_DESCR ) ;
1997-01-09 11:49:36 +00:00
f . mask ( ) . set ( F_DESCRFINE_CONTO , ds ) ;
f . mask ( ) . set ( F_DESCRFINE_CLIENTE , ds ) ;
f . mask ( ) . set ( F_DESCRFINE_FORN , ds ) ;
}
else
if ( id = = F_SOTTOCFINE_CLIENTE | | id = = F_SOTTOCFINE_FORN )
{
char tipo = id = = F_SOTTOCFINE_CLIENTE ? ' C ' : ' F ' ;
if ( sottoconto ! = 0 )
{
2003-03-14 15:13:36 +00:00
TString16 key ;
key . format ( " %c|%ld " , tipo , sottoconto ) ;
const TRectype & clifo = cache ( ) . get ( LF_CLIFO , key ) ;
if ( clifo . empty ( ) )
return f . warning_box ( TR ( " Anagrafica inesistente " ) ) ;
1997-01-09 11:49:36 +00:00
2003-03-14 15:13:36 +00:00
const TString & rs = clifo . get ( CLI_RAGSOC ) ;
f . mask ( ) . set ( F_DESCRFINE_CLIENTE , rs ) ;
1997-01-09 11:49:36 +00:00
f . mask ( ) . set ( F_DESCRFINE_FORN , rs ) ;
}
}
}
return TRUE ;
}
bool TMastrini_application : : gruppo_hnd ( TMask_field & f , KEY k )
{
if ( k = = K_ENTER )
{
int gruppof = f . mask ( ) . get_int ( F_GRUPPOFINE ) ;
if ( gruppof = = 0 )
return TRUE ;
int gruppoi = f . mask ( ) . get_int ( F_GRUPPOINI ) ;
if ( gruppoi > gruppof )
2003-03-14 15:13:36 +00:00
return f . error_box ( TR ( " Il gruppo di partenza deve essere inferiore o uguale al gruppo di arrivo " ) ) ;
1997-01-09 11:49:36 +00:00
}
return TRUE ;
}
2002-09-13 14:06:05 +00:00
bool TMastrini_application : : tipocf_hnd ( TMask_field & f , KEY k )
{
if ( k = = K_SPACE )
2002-10-23 14:14:55 +00:00
app ( ) . show_cdc ( ) ;
2002-09-13 14:06:05 +00:00
return TRUE ;
}
1997-01-09 11:49:36 +00:00
bool TMastrini_application : : contoi_hnd ( TMask_field & f , KEY k )
{
1999-10-22 10:00:18 +00:00
if ( k = = K_TAB & & f . focusdirty ( ) & & f . mask ( ) . is_running ( ) )
1997-01-09 11:49:36 +00:00
{
1997-05-06 12:33:10 +00:00
TMask & m = f . mask ( ) ;
2003-03-14 15:13:36 +00:00
const short id = f . dlg ( ) ;
const int gruppo = m . get_int ( F_GRUPPOINI ) ;
const int conto = m . get_int ( id ) ;
1997-01-09 11:49:36 +00:00
2003-03-14 15:13:36 +00:00
if ( gruppo ! = 0 & & conto ! = 0 )
1997-01-09 11:49:36 +00:00
{
2002-09-13 14:06:05 +00:00
const char tipomsk = m . get ( F_TIPOCF_INI ) [ 0 ] ;
2003-03-14 15:13:36 +00:00
TString key ( 20 ) ;
key . format ( " %d|%d| " , gruppo , conto ) ;
const TRectype & pconti = cache ( ) . get ( LF_PCON , key ) ;
if ( ! pconti . empty ( ) )
1997-01-09 11:49:36 +00:00
{
char tipo = pconti . get_char ( PCN_TMCF ) ;
if ( tipomsk ! = tipo )
2003-03-14 15:13:36 +00:00
return f . warning_box ( TR ( " Conto inesistente " ) ) ;
}
1997-01-09 11:49:36 +00:00
2003-03-14 15:13:36 +00:00
const TString & ds = pconti . get ( PCN_DESCR ) ;
m . set ( F_DESCRINI_CLIENTE , ds ) ;
1997-05-06 12:33:10 +00:00
m . set ( F_DESCRINI_FORN , ds ) ;
m . set ( F_DESCRINI_CONTO , ds ) ;
1997-01-09 11:49:36 +00:00
}
else
{
2003-03-14 15:13:36 +00:00
m . set ( F_DESCRINI_CLIENTE , " " ) ;
m . set ( F_DESCRINI_FORN , " " ) ;
m . set ( F_DESCRINI_CONTO , " " ) ;
1997-01-09 11:49:36 +00:00
}
}
return TRUE ;
}
bool TMastrini_application : : contof_hnd ( TMask_field & f , KEY k )
{
const short id = f . dlg ( ) ;
2002-09-13 14:06:05 +00:00
TMask & m = f . mask ( ) ;
1997-01-09 11:49:36 +00:00
if ( k = = K_ENTER )
{
2002-09-13 14:06:05 +00:00
int gruppof = m . get_int ( F_GRUPPOFINE ) ;
1997-01-09 11:49:36 +00:00
if ( gruppof = = 0 )
return TRUE ;
2002-09-13 14:06:05 +00:00
char tipo = m . get ( F_TIPOCF_INI ) [ 0 ] ;
2000-10-03 13:45:12 +00:00
2002-09-13 14:06:05 +00:00
int gruppoi = m . get_int ( F_GRUPPOINI ) ;
1997-01-09 11:49:36 +00:00
if ( gruppoi < gruppof )
return TRUE ;
2002-09-13 14:06:05 +00:00
int contof = m . get_int ( id ) ;
int contoi = m . get_int ( F_CONTOINI_CONTO ) ;
1997-01-09 11:49:36 +00:00
if ( contoi > contof )
2003-03-14 15:13:36 +00:00
return f . error_box ( TR ( " Il conto di partenza deve essere inferiore o uguale al conto di arrivo " ) ) ;
1997-01-09 11:49:36 +00:00
}
2000-10-03 13:45:12 +00:00
1997-03-10 13:56:33 +00:00
if ( k = = K_TAB & & f . focusdirty ( ) & & f . mask ( ) . is_running ( ) )
1997-01-09 11:49:36 +00:00
{
1997-03-10 13:56:33 +00:00
TString ds ;
2002-09-13 14:06:05 +00:00
int gruppo = m . get_int ( F_GRUPPOFINE ) ;
int conto = m . get_int ( id ) ;
if ( gruppo ! = 0 & & conto ! = 0 & & m . field ( F_DESCRFINE_CONTO ) . empty ( ) )
1997-01-09 11:49:36 +00:00
{
2003-03-14 15:13:36 +00:00
char tipomsk = f . mask ( ) . get ( F_TIPOCF_FINE ) [ 0 ] ;
1997-01-09 11:49:36 +00:00
2003-03-14 15:13:36 +00:00
TString16 key ;
key . format ( " %d|%d| " , gruppo , conto ) ;
const TRectype & pconti = cache ( ) . get ( LF_PCON , key ) ;
if ( pconti . empty ( ) )
return f . warning_box ( TR ( " Sottoconto inesistente " ) ) ;
char tipo = pconti . get_char ( PCN_TMCF ) ;
if ( tipomsk ! = tipo )
return f . warning_box ( TR ( " Conto inesistente " ) ) ;
1997-01-09 11:49:36 +00:00
2003-03-14 15:13:36 +00:00
const TString & ds = pconti . get ( PCN_DESCR ) ;
1997-01-09 11:49:36 +00:00
2002-09-13 14:06:05 +00:00
m . set ( F_DESCRFINE_CLIENTE , ds ) ;
m . set ( F_DESCRFINE_FORN , ds ) ;
m . set ( F_DESCRFINE_CONTO , ds ) ;
1997-01-09 11:49:36 +00:00
}
else
{
2003-03-14 15:13:36 +00:00
f . mask ( ) . set ( F_DESCRFINE_CLIENTE , " " ) ;
f . mask ( ) . set ( F_DESCRFINE_FORN , " " ) ;
f . mask ( ) . set ( F_DESCRFINE_CONTO , " " ) ;
1997-01-09 11:49:36 +00:00
}
}
return TRUE ;
}
bool TMastrini_application : : check_ordine ( TMask_field & f , KEY k )
{
const int gruppof = f . mask ( ) . get_int ( F_GRUPPOFINE ) ;
if ( gruppof = = 0 )
return TRUE ;
const int gruppoi = f . mask ( ) . get_int ( F_GRUPPOINI ) ;
if ( gruppoi < gruppof )
return TRUE ;
int contof = f . mask ( ) . get_int ( F_CONTOFINE_CONTO ) ;
int contoi = f . mask ( ) . get_int ( F_CONTOINI_CONTO ) ;
if ( contoi < contof )
return TRUE ;
long sottocf = f . mask ( ) . get_long ( F_SOTTOCFINE_CONTO ) ;
long sottoci = f . mask ( ) . get_long ( F_SOTTOCINI_CONTO ) ;
if ( sottoci > sottocf )
2003-03-14 15:13:36 +00:00
return f . error_box ( TR ( " Il sottoconto di partenza deve essere inferiore o uguale al sottoconto di arrivo " ) ) ;
1997-01-09 11:49:36 +00:00
return TRUE ;
}
2002-07-02 16:21:23 +00:00
1997-01-09 11:49:36 +00:00
bool TMastrini_application : : memorizza_handler ( TMask_field & f , KEY k )
{
if ( k = = K_SPACE )
1997-03-10 13:56:33 +00:00
{
1997-04-17 10:20:35 +00:00
if ( app ( ) . mask2sheet ( ) )
{
TMask & m = f . mask ( ) ;
m . reset ( - 9 ) ;
m . set_focus_field ( F_TIPOCF_INI ) ;
}
1997-03-10 13:56:33 +00:00
}
1997-04-17 10:20:35 +00:00
return TRUE ;
1997-01-09 11:49:36 +00:00
}
bool TMastrini_application : : scelte_notify ( TSheet_field & s , int r , KEY k )
{
bool ok = TRUE ;
if ( k = = K_INS )
1999-10-22 10:00:18 +00:00
ok = FALSE ;
1997-01-09 11:49:36 +00:00
return ok ;
}
int TMastrini_application : : date2esc ( const TDate & d )
{
TEsercizi_contabili esc ;
return esc . date2esc ( d ) ;
}
//Questa funzione restituisce vero se il record su piano dei conti ha almeno un
//record figlio (e che soddisfa la condizione riguardante la data di registr.).
//Viene successivamente utilizzata per stampare l'intestazione (e i totali)
//oppure no
bool TMastrini_application : : almeno_un_record ( )
{
bool trovato = FALSE ;
if ( current_cursor ( ) - > is_first_match ( LF_RMOV ) )
{
2002-05-08 16:25:49 +00:00
TLocalisamfile & rmov_file = current_cursor ( ) - > file ( LF_RMOV ) ;
const TRecnotype record = rmov_file . recno ( ) ;
TRelation rel ( LF_RMOV ) ;
rel . add ( LF_MOV , " NUMREG==NUMREG " ) ;
TRectype & rmov = rel . curr ( ) ;
TRectype & mov = rel . curr ( LF_MOV ) ;
TString filter ;
if ( _cdc . not_empty ( ) )
2002-07-29 15:19:18 +00:00
{
filter < < ' ( ' < < RMV_CODCMS < < " ==' " < < _cdc < < " ') " ;
if ( _fsc . not_empty ( ) )
filter < < " &&( " < < RMV_FASCMS < < " ==' " < < _fsc < < " ') " ;
}
1997-01-09 11:49:36 +00:00
rmov . zero ( ) ;
rmov . put ( RMV_GRUPPO , _gruppo ) ;
rmov . put ( RMV_CONTO , _conto ) ;
rmov . put ( RMV_SOTTOCONTO , _sottoc ) ;
2002-05-08 16:25:49 +00:00
TCursor cur ( & rel , filter , 2 , & rmov , & rmov ) ;
const long items = cur . items ( ) ;
cur . freeze ( ) ;
for ( cur = 0L ; cur . pos ( ) < items ; + + cur )
{
const int annoes = rmov . get_int ( RMV_ANNOES ) ;
const long numreg = rmov . get_long ( RMV_NUMREG ) ;
2003-03-14 15:13:36 +00:00
const TRectype & mov = cache ( ) . get ( LF_MOV , numreg ) ;
const TDate datacomp = ( mov . get ( MOV_DATACOMP ) ) ;
const TString16 provvis ( mov . get ( MOV_PROVVIS ) ) ;
1997-01-09 11:49:36 +00:00
2002-05-08 16:25:49 +00:00
TDate datareg ;
1997-01-09 11:49:36 +00:00
if ( _annomsk = = 0 )
datareg = rmov . get_date ( RMV_DATAREG ) ;
else
1997-04-11 12:55:31 +00:00
datareg = datacomp ;
1997-01-09 11:49:36 +00:00
2002-05-08 16:25:49 +00:00
if ( ( ( annoes = = _annomsk ) | | ( _annomsk = = 0 ) ) & & ( ( datareg > = _data_ini ) & & ( datareg < = _data_fine ) ) & & ( _stampa_mov_prov | | provvis . blank ( ) ) )
{
trovato = TRUE ;
1997-01-09 11:49:36 +00:00
break ;
2002-05-08 16:25:49 +00:00
}
1997-01-09 11:49:36 +00:00
}
2002-05-08 16:25:49 +00:00
rmov_file . readat ( record ) ;
1997-01-09 11:49:36 +00:00
}
return trovato ;
}
2002-10-23 14:14:55 +00:00
bool TMastrini_application : : anno_hnd ( TMask_field & f , KEY k )
{
if ( f . to_check ( k , TRUE ) )
app ( ) . show_cdc ( ) ;
return TRUE ;
}
1997-01-09 11:49:36 +00:00
bool TMastrini_application : : data_inizio ( TMask_field & f , KEY k )
{
const TDate data = f . mask ( ) . get ( F_DATAINI ) ;
const int anno = f . mask ( ) . get_int ( F_ANNO ) ;
app ( ) . _annomsk = anno ;
if ( k = = K_ENTER )
{
if ( anno ! = 0 )
{
app ( ) . data_fine_esercizio ( anno ) ;
1997-04-08 16:35:14 +00:00
if ( data . ok ( ) )
1997-01-09 11:49:36 +00:00
{
if ( data < app ( ) . _data_inizioese | | data > app ( ) . _data_finese )
{
2003-03-14 15:13:36 +00:00
f . error_box ( TR ( " La data non appartiene all'esercizio indicato " ) ) ;
1997-01-09 11:49:36 +00:00
return FALSE ;
}
else
app ( ) . _data_ini = data ;
}
}
else
{
2003-10-09 07:29:57 +00:00
if ( ! data . ok ( ) )
2003-03-14 15:13:36 +00:00
return f . error_box ( TR ( " La data deve essere obbligatoriamente indicata " ) ) ;
1997-04-02 11:03:15 +00:00
1997-04-08 16:35:14 +00:00
if ( app ( ) . date2esc ( data ) = = 0 )
2003-03-14 15:13:36 +00:00
return f . error_box ( TR ( " La data indicata non appartiene ad alcun esercizio " ) ) ;
1997-04-08 16:35:14 +00:00
else
app ( ) . _data_ini = data ;
1997-01-09 11:49:36 +00:00
}
}
return TRUE ;
}
bool TMastrini_application : : data_fine ( TMask_field & f , KEY k )
{
int annoes ;
TDate data , data_ini ;
annoes = f . mask ( ) . get_int ( F_ANNO ) ;
data = f . mask ( ) . get ( F_DATAFINE ) ;
data_ini = f . mask ( ) . get ( F_DATAINI ) ;
app ( ) . _annomsk = annoes ;
if ( k = = K_ENTER )
{
if ( annoes ! = 0 )
{
app ( ) . data_fine_esercizio ( annoes ) ;
1997-04-08 16:35:14 +00:00
if ( data . ok ( ) )
{
1997-04-02 11:03:15 +00:00
if ( data < app ( ) . _data_inizioese | | data > app ( ) . _data_finese )
{
2003-03-14 15:13:36 +00:00
f . error_box ( TR ( " La data non appartiene all'esercizio indicato " ) ) ;
1997-04-02 11:03:15 +00:00
return FALSE ;
}
else
1997-01-09 11:49:36 +00:00
app ( ) . _data_fine = data ;
1997-04-08 16:35:14 +00:00
}
1997-01-09 11:49:36 +00:00
}
else
{
1997-04-02 11:03:15 +00:00
if ( data = = botime )
2003-03-14 15:13:36 +00:00
return f . error_box ( TR ( " La data deve essere obbligatoriamente indicata " ) ) ;
1997-01-09 11:49:36 +00:00
1997-04-02 11:03:15 +00:00
app ( ) . _anno_ghost = app ( ) . date2esc ( data_ini ) ;
if ( app ( ) . _anno_ghost = = 0 )
2003-03-14 15:13:36 +00:00
return f . error_box ( TR ( " La data indicata non appartiene ad alcun esercizio " ) ) ;
1997-04-02 11:03:15 +00:00
app ( ) . _data_fine = data ;
1997-01-09 11:49:36 +00:00
}
if ( data < data_ini )
{
2003-03-14 15:13:36 +00:00
f . error_box ( TR ( " La data finale non puo' essere inferiore alla data di partenza " ) ) ;
1997-01-09 11:49:36 +00:00
return FALSE ;
}
}
return TRUE ;
}
void TMastrini_application : : fai_stampa132 ( )
{
if ( _nummast = = 1 | | _nummast = = 3 )
_rw = 1 ;
else
if ( _nummast = = 2 )
{
int riga ;
if ( ( _conta_mastrini % 2 ) ! = 0 )
riga = ( printer ( ) . formlen ( ) / 2 ) ; //-1
else
riga = printer ( ) . formlen ( ) ; //-1;
int app1 = printer ( ) . formlen ( ) ;
int app2 = printer ( ) . rows_left ( ) ;
int cur_row = ( app1 - app2 ) ;
if ( cur_row = = riga )
{
//_rw += 2;
_rw = crea_intestazione ( _rw ) ;
_rw = stampa_progre_riporto ( _rw ) ;
if ( _item ! = 0 )
{
for ( int i = _indice_array ; i < _item ; i + + )
{
TString & data = ( TString & ) _riga [ i ] ;
int g1 = data . find ( " g " , 1 ) ;
int c1 = data . find ( " @ " , g1 ) ;
int g2 = data . find ( " g " , c1 ) ;
TString fmt1 = " " ;
TString fmt2 = " " ;
TString str1 , str2 ;
if ( g1 ! = - 1 )
{
fmt1 = data . sub ( 0 , g1 + 1 ) ;
fmt1 < < " %s " ;
str1 = data . sub ( g1 + 1 , c1 ) ;
}
if ( c1 ! = - 1 )
{
fmt2 = data . sub ( c1 , g2 + 1 ) ;
fmt2 < < " %s " ;
str2 = data . sub ( g2 + 1 ) ;
}
if ( fmt1 ! = " " )
set_row ( _rw , fmt1 , ( const char * ) str1 ) ;
if ( fmt2 ! = " " )
set_row ( _rw , fmt2 , ( const char * ) str2 ) ;
_rw + + ;
}
}
}
else
_rw = 1 ;
if ( _item ! = 0 )
_riga . destroy ( ) ;
}
set_row ( _rw , " @0g#t " , & _dataregs ) ;
if ( _stampanum = = 1 )
2000-10-03 13:45:12 +00:00
set_row ( _rw , " @11g$[b]#7ld$[n] " , & _numreg ) ;
1997-01-09 11:49:36 +00:00
else
if ( _stampanum = = 2 )
1999-04-06 15:34:39 +00:00
set_row ( _rw , " @11g#7ld " , & _numgio ) ;
1997-01-09 11:49:36 +00:00
set_row ( _rw , " @19g#t " , & _datadocs ) ;
set_row ( _rw , " @30g#7t " , & _numdoc ) ;
set_row ( _rw , " @38g#3t " , & _codcaus ) ;
2000-10-03 13:45:12 +00:00
set_row ( _rw , " @117g#t #t #t " , & _g_contr , & _c_contr , & _s_contr ) ;
1997-01-09 11:49:36 +00:00
}
void TMastrini_application : : fai_stampa198 ( )
{
if ( _nummast = = 1 | | _nummast = = 3 )
_rw = 1 ;
else
if ( _nummast = = 2 )
{
int riga ;
if ( ( _conta_mastrini % 2 ) ! = 0 )
riga = ( printer ( ) . formlen ( ) / 2 ) ; //-1
else
riga = printer ( ) . formlen ( ) ; //-1;
int app1 = printer ( ) . formlen ( ) ;
int app2 = printer ( ) . rows_left ( ) ;
int cur_row = ( app1 - app2 ) ;
if ( cur_row = = riga )
{
//_rw += 2;
_rw = crea_intestazione ( _rw ) ;
_rw = stampa_progre_riporto ( _rw ) ;
if ( _item ! = 0 )
{
for ( int i = _indice_array ; i < _item ; i + + )
{
TString & data = ( TString & ) _riga [ i ] ;
int g1 = data . find ( " g " , 1 ) ;
int c1 = data . find ( " @ " , g1 ) ;
int g2 = data . find ( " g " , c1 ) ;
TString fmt1 = " " ;
TString fmt2 = " " ;
TString str1 , str2 ;
if ( g1 ! = - 1 )
{
fmt1 = data . sub ( 0 , g1 + 1 ) ;
fmt1 < < " %s " ;
str1 = data . sub ( g1 + 1 , c1 ) ;
}
if ( c1 ! = - 1 )
{
fmt2 = data . sub ( c1 , g2 + 1 ) ;
fmt2 < < " %s " ;
str2 = data . sub ( g2 + 1 ) ;
}
if ( fmt1 ! = " " )
set_row ( _rw , fmt1 , ( const char * ) str1 ) ;
if ( fmt2 ! = " " )
set_row ( _rw , fmt2 , ( const char * ) str2 ) ;
_rw + + ;
}
}
}
else
_rw = 1 ;
if ( _item ! = 0 )
_riga . destroy ( ) ;
}
set_row ( _rw , " @0g#t " , & _dataregs ) ;
if ( _stampanum = = 1 )
{
2000-10-03 13:45:12 +00:00
set_row ( _rw , " @11g$[b]#7ld$[n] " , & _numreg ) ;
1997-01-09 11:49:36 +00:00
set_row ( _rw , " @18g/#3d " , & _numrig ) ;
}
else if ( _stampanum = = 2 )
1999-04-06 15:34:39 +00:00
set_row ( _rw , " @11g#7ld " , & _numgio ) ;
1997-01-09 11:49:36 +00:00
set_row ( _rw , " @23g#t " , & _datadocs ) ;
set_row ( _rw , " @34g#7t " , & _numdoc ) ;
set_row ( _rw , " @42g#3t " , & _codcaus ) ;
2002-02-26 16:20:19 +00:00
// Stampa saldo movimenti / Descrizione contropartita
2002-05-31 10:35:40 +00:00
const TRectype & rmov = current_cursor ( ) - > curr ( LF_RMOV ) ;
_gruppocontr = rmov . get_int ( RMV_GRUPPOC ) ;
_contocontr = rmov . get_int ( RMV_CONTOC ) ;
_sottocontocontr = rmov . get_long ( RMV_SOTTOCONTOC ) ;
_g_contr = rmov . get ( RMV_GRUPPOC ) ;
_c_contr = rmov . get ( RMV_CONTOC ) ;
_s_contr = rmov . get ( RMV_SOTTOCONTOC ) ;
2002-02-26 16:20:19 +00:00
2003-10-09 07:29:57 +00:00
if ( _stampa_saldo_des = = 3 )
2002-05-31 10:35:40 +00:00
{
if ( _sottocontocontr > 0 )
2003-05-05 14:32:23 +00:00
{
conto ( _gruppocontr , _contocontr , FALSE ) ;
2002-05-31 10:35:40 +00:00
TBill tc ( _gruppocontr , _contocontr , _sottocontocontr , _tipo_contr ) ;
_descrcontr . cut ( 0 ) ;
_descrcontr < < _g_contr < < ' ' < < _c_contr < < ' ' < < _s_contr < < ' ' < < tc . descrizione ( ) ;
_descrcontr . cut ( 47 ) ;
set_row ( _rw , " @135g%-48s " , ( const char * ) _descrcontr ) ;
}
else
{
_descrcontr . cut ( 0 ) ;
}
2002-02-26 16:20:19 +00:00
}
else
{
set_row ( _rw , " @151g#t " , & _saldo_movimenti_str ) ;
set_row ( _rw , " @168g#t #t #t " , & _g_contr , & _c_contr , & _s_contr ) ;
}
1997-01-09 11:49:36 +00:00
}
2002-05-08 16:25:49 +00:00
void TMastrini_application : : stampa_totali_commessa ( )
{
if ( _cdc . not_empty ( ) )
{
{
_saldo_commessa = _totale_commessa_dare - _totale_commessa_avere ;
2003-03-14 15:13:36 +00:00
set_row ( _rw , " @32g@b%s " , TR ( " PROGRESSIVI COMMESSA " ) ) ;
2002-05-08 16:25:49 +00:00
if ( _numcarat = = 1 )
{
set_row ( _rw , " @66g%r " , & _saldo_commessa ) ;
set_row ( _rw , " @83g%r " , & _totale_commessa_dare ) ;
set_row ( _rw , " @100g%r " , & _totale_commessa_avere ) ;
}
else
{
set_row ( _rw , " @100g%r " , & _totale_commessa_dare ) ;
set_row ( _rw , " @117g%r " , & _totale_commessa_avere ) ;
2003-10-09 07:29:57 +00:00
if ( _stampa_saldo_des < 3 )
2002-05-08 16:25:49 +00:00
set_row ( _rw , " @135g%r " , & _saldo_commessa ) ;
}
}
}
}
1997-01-09 11:49:36 +00:00
void TMastrini_application : : stampa_totali132 ( )
{
if ( _nummast = = 1 | | _nummast = = 3 )
_rw = 2 ;
2002-07-02 16:21:23 +00:00
const TString sep ( 132 , ' _ ' ) ; //Stampa 132 - (sep(132))
1997-10-20 14:23:01 +00:00
set_row ( _rw + + , " @0g%s " , ( const char * ) sep ) ;
1997-01-09 11:49:36 +00:00
_totprogre_dare = _progredare + _totale_periodo_dare ;
_totprogre_avere = _progreavere + _totale_periodo_avere ;
_saldo_periodo = _totale_periodo_dare - _totale_periodo_avere ;
_saldo_progre = _totprogre_dare - _totprogre_avere ;
_saldo_progre_al = _totprogre_dare_al - _totprogre_avere_al ;
2003-03-14 15:13:36 +00:00
set_row ( _rw , " @32g%s " , TR ( " TOTALI PERIODO " ) ) ;
1997-10-20 14:23:01 +00:00
set_row ( _rw , " @66g%r " , & _saldo_periodo ) ;
set_row ( _rw , " @83g%r " , & _totale_periodo_dare ) ;
set_row ( _rw + + , " @100g%r " , & _totale_periodo_avere ) ;
2003-03-14 15:13:36 +00:00
set_row ( _rw , " @32g%s " , TR ( " TOTALI PROGRESSIVI " ) ) ;
1997-10-20 14:23:01 +00:00
set_row ( _rw , " @66g%r " , & _saldo_progre ) ;
set_row ( _rw , " @83g%r " , & _totprogre_dare ) ;
set_row ( _rw + + , " @100g%r " , & _totprogre_avere ) ;
2002-05-08 16:25:49 +00:00
1997-01-09 11:49:36 +00:00
if ( _stampaprogre ) //Progressivi attuali
{
2003-03-14 15:13:36 +00:00
set_row ( _rw , " @32g%s %s " , TR ( " TOTALI PROGRESSIVI AL " ) , _ultima_data_reg . string ( ) ) ;
1997-10-20 14:23:01 +00:00
set_row ( _rw , " @66g%r " , & _saldo_progre_al ) ;
set_row ( _rw , " @83g%r " , & _totprogre_dare_al ) ;
set_row ( _rw , " @100g%r " , & _totprogre_avere_al ) ;
1997-01-09 11:49:36 +00:00
}
2002-07-02 16:21:23 +00:00
stampa_totali_commessa ( ) ;
1997-01-09 11:49:36 +00:00
_devi_stampare_footer = FALSE ;
}
1999-04-06 15:34:39 +00:00
const char * TMastrini_application : : real2str ( const real & r ) const
{
2003-03-14 15:13:36 +00:00
TString & str = get_tmp_string ( 30 ) ;
real2currency ( str , r ) ;
return str ;
1999-04-06 15:34:39 +00:00
}
1997-01-09 11:49:36 +00:00
void TMastrini_application : : carica_array_totali132 ( )
{
TString sep ( 132 ) ;
TToken_string r ( 255 ) ;
if ( _nummast = = 2 )
_rw = 1 ;
_totprogre_dare = _progredare + _totale_periodo_dare ;
_totprogre_avere = _progreavere + _totale_periodo_avere ;
_saldo_periodo = _totale_periodo_dare - _totale_periodo_avere ;
_saldo_progre = _totprogre_dare - _totprogre_avere ;
_saldo_progre_al = _totprogre_dare_al - _totprogre_avere_al ;
sep . fill ( ' ' ) ;
r . add ( " @0g%s " ) ;
r . add ( sep ) ;
_lista . add ( r ) ;
r = " " ;
2002-02-26 16:20:19 +00:00
sep . fill ( ' _ ' ) ; //Stampa 132 - (sep(132))
1997-01-09 11:49:36 +00:00
r . add ( " @0g%s " ) ;
r . add ( sep ) ;
_lista . add ( r ) ;
r = " " ;
1999-04-06 15:34:39 +00:00
r . add ( " @32g%s@66g%s@83g%s@100g%s " ) ;
2003-03-14 15:13:36 +00:00
r . add ( TR ( " TOTALI PERIODO " ) ) ;
1999-04-06 15:34:39 +00:00
r . add ( real2str ( _saldo_periodo ) ) ;
r . add ( real2str ( _totale_periodo_dare ) ) ;
r . add ( real2str ( _totale_periodo_avere ) ) ;
1997-01-09 11:49:36 +00:00
_lista . add ( r ) ;
r = " " ;
1999-04-06 15:34:39 +00:00
r . add ( " @32g%s@66g%s@83g%s@100g%s " ) ;
2003-03-14 15:13:36 +00:00
r . add ( TR ( " TOTALI PROGRESSIVI " ) ) ;
1999-04-06 15:34:39 +00:00
r . add ( real2str ( _saldo_progre ) ) ;
r . add ( real2str ( _totprogre_dare ) ) ;
r . add ( real2str ( _totprogre_avere ) ) ;
1997-01-09 11:49:36 +00:00
_lista . add ( r ) ;
r = " " ;
if ( _stampaprogre ) //Progressivi attuali
{
1999-04-06 15:34:39 +00:00
r . add ( " @32g%s@55g%s@66g%s@83g%s@100g%s " ) ;
2003-03-14 15:13:36 +00:00
r . add ( TR ( " TOTALI PROGRESSIVI AL " ) ) ;
1997-01-09 11:49:36 +00:00
r . add ( _ultima_data_reg . string ( ) ) ;
1999-04-06 15:34:39 +00:00
r . add ( real2str ( _saldo_progre_al ) ) ;
r . add ( real2str ( _totprogre_dare_al ) ) ;
r . add ( real2str ( _totprogre_avere_al ) ) ;
1997-01-09 11:49:36 +00:00
_lista . add ( r ) ;
r = " " ;
}
2002-07-02 16:21:23 +00:00
1997-01-09 11:49:36 +00:00
if ( _stampatotiva )
{
real totale ;
sep . fill ( ' ' ) ;
r . add ( " @0g%s " ) ;
r . add ( sep ) ;
_lista . add ( r ) ;
r = " " ;
TString fmt ( " @0g%s " ) ;
TString fmt1 ( format ( " @%dg " , _ddociva_len ) ) ;
fmt < < fmt1 < < " %15s " ;
for ( int j = 0 ; j < _b . items ( ) ; j + + )
{
TDociva & riga = ( TDociva & ) _b [ j ] ;
r . add ( fmt ) ;
r . add ( riga . _descrdoc ) ;
totale = riga . _totdociva ;
1999-04-06 15:34:39 +00:00
r . add ( real2str ( totale ) ) ;
1997-01-09 11:49:36 +00:00
_lista . add ( r ) ;
r = " " ;
}
_b . destroy ( ) ;
}
_indice_lista = 0 ;
}
void TMastrini_application : : stampa_totali132_II ( )
{
int riga , cur_row , diff ;
int lim = 0 ;
_item_lista = _lista . items ( ) ;
if ( ( _conta_mastrini % 2 ) ! = 0 )
{
riga = ( printer ( ) . formlen ( ) / 2 ) ; //- 1;
cur_row = printer ( ) . formlen ( ) - printer ( ) . rows_left ( ) ;
diff = riga - cur_row ;
}
else
{
riga = printer ( ) . formlen ( ) ; //- 1;
cur_row = printer ( ) . formlen ( ) - printer ( ) . rows_left ( ) ;
diff = riga - cur_row ;
}
if ( _indice_lista = = 0 & & diff ! = 0 )
{
if ( _item_lista > diff )
lim = diff ;
else
lim = _item_lista ;
}
else
{
lim = _item_lista ;
_rw = 1 ;
_rw = crea_intestazione ( _rw ) ;
_rw = stampa_progre_riporto ( _rw ) ;
if ( ( _conta_mastrini % 2 ) ! = 0 )
{
riga = ( printer ( ) . formlen ( ) / 2 ) ; //- 1;
cur_row = _rw ;
diff = riga - cur_row ;
}
else
{
riga = printer ( ) . formlen ( ) ; //- 1;
cur_row = _rw + ( printer ( ) . formlen ( ) / 2 ) ; //32;
diff = riga - cur_row ;
}
}
for ( int i = _indice_lista ; i < lim ; i + + )
{
TToken_string & data = ( TToken_string & ) _lista [ i ] ;
TString fmt ( data . get ( 0 ) ) ;
TString arg1 ( data . get ( 1 ) ) ;
TString arg2 ( data . get ( 2 ) ) ;
TString arg3 ( data . get ( 3 ) ) ;
TString arg4 ( data . get ( 4 ) ) ;
set_row ( _rw + + , fmt , ( const char * ) arg1 , ( const char * ) arg2 , ( const char * ) arg3 , ( const char * ) arg4 ) ;
_indice_lista + + ;
}
if ( _item_lista < = diff )
_lista . destroy ( ) ;
2002-07-02 16:21:23 +00:00
1997-01-09 11:49:36 +00:00
_devi_stampare_footer = FALSE ;
}
void TMastrini_application : : stampa_totali198 ( )
{
if ( _nummast = = 1 | | _nummast = = 3 )
_rw = 1 ;
2002-07-02 16:21:23 +00:00
const TString sep ( 198 , ' - ' ) ; //Stampa 198 - (sep(198))
2002-05-08 16:25:49 +00:00
set_row ( _rw , " @0g%s " , ( const char * ) sep ) ;
1997-01-09 11:49:36 +00:00
_totprogre_dare = _progredare + _totale_periodo_dare ;
_totprogre_avere = _progreavere + _totale_periodo_avere ;
1997-10-20 14:23:01 +00:00
2003-03-14 15:13:36 +00:00
set_row ( + + _rw , " @32g%s@100g%r " , TR ( " TOTALI PERIODO " ) , & _totale_periodo_dare ) ;
1997-10-20 14:23:01 +00:00
set_row ( _rw , " @117g%r " , & _totale_periodo_avere ) ;
2002-02-26 16:20:19 +00:00
2003-03-14 15:13:36 +00:00
set_row ( + + _rw , " @32g%s@100g%r " , TR ( " TOTALI PROGRESSIVI " ) , & _totprogre_dare ) ;
1997-10-20 14:23:01 +00:00
set_row ( _rw , " @117g%r " , & _totprogre_avere ) ;
2003-10-09 07:29:57 +00:00
// il saldo totale movimenti non viene stampato se stampo le descrizioni delle contropartite
2003-10-09 08:16:19 +00:00
if ( _stampa_saldo_des < 3 )
{
set_row ( _rw , " @135g%r " , & _saldo_progressivi ) ;
2002-05-08 16:25:49 +00:00
set_row ( _rw , " @151g%r " , & _saldo_movimenti ) ;
2003-10-09 08:16:19 +00:00
}
2003-10-09 07:29:57 +00:00
1997-01-09 11:49:36 +00:00
if ( _stampaprogre ) //Progressivi attuali
{
1999-04-06 15:34:39 +00:00
_saldo_progre_al = _totprogre_dare_al - _totprogre_avere_al ;
2003-03-14 15:13:36 +00:00
set_row ( + + _rw , " @32g%s@55g%s " , TR ( " TOTALI PROGRESSIVI AL " ) , _ultima_data_reg . string ( ) ) ;
1997-10-20 14:23:01 +00:00
set_row ( _rw , " @100g%r " , & _totprogre_dare_al ) ;
set_row ( _rw , " @117g%r " , & _totprogre_avere_al ) ;
2003-10-09 07:29:57 +00:00
if ( _stampa_saldo_des < 3 )
2002-02-26 16:20:19 +00:00
set_row ( _rw , " @135g%r " , & _saldo_progre_al ) ;
1997-01-09 11:49:36 +00:00
}
2002-07-02 16:21:23 +00:00
stampa_totali_commessa ( ) ;
1997-01-09 11:49:36 +00:00
_devi_stampare_footer = FALSE ;
}
void TMastrini_application : : carica_array_totali198 ( )
{
TString sep ( 198 ) ;
TToken_string r ( 255 ) ;
if ( _nummast = = 2 )
_rw = 1 ;
sep . fill ( ' ' ) ; //Stampa 132 - (sep(132))
r . add ( " @0g%s " ) ;
r . add ( sep ) ;
_lista . add ( r ) ;
r = " " ;
2002-02-26 16:20:19 +00:00
sep . fill ( ' _ ' ) ; //Stampa 132 - (sep(132))
1997-01-09 11:49:36 +00:00
r . add ( " @0g%s " ) ;
r . add ( sep ) ;
_lista . add ( r ) ;
r = " " ;
_totprogre_dare = _progredare + _totale_periodo_dare ;
_totprogre_avere = _progreavere + _totale_periodo_avere ;
2003-10-09 07:29:57 +00:00
if ( _stampa_saldo_des = = 3 )
2002-02-26 16:20:19 +00:00
r . add ( " @32g%s@100g%s@117g%s " ) ;
else
r . add ( " @32g%s@100g%s@117g%s@151g%s " ) ;
2003-03-14 15:13:36 +00:00
r . add ( TR ( " TOTALI PERIODO " ) ) ;
1999-04-06 15:34:39 +00:00
r . add ( real2str ( _totale_periodo_dare ) ) ;
r . add ( real2str ( _totale_periodo_avere ) ) ;
r . add ( real2str ( _saldo_movimenti ) ) ;
1997-01-09 11:49:36 +00:00
_lista . add ( r ) ;
r = " " ;
2003-10-09 07:29:57 +00:00
if ( _stampa_saldo_des = = 3 )
2002-02-26 16:20:19 +00:00
r . add ( " @32g%s@100g%s@117g%s " ) ;
else
r . add ( " @32g%s@100g%s@117g%s@135g%s " ) ;
2003-03-14 15:13:36 +00:00
r . add ( TR ( " TOTALI PROGRESSIVI " ) ) ;
1999-04-06 15:34:39 +00:00
r . add ( real2str ( _totprogre_dare ) ) ;
r . add ( real2str ( _totprogre_avere ) ) ;
r . add ( real2str ( _saldo_progressivi ) ) ;
1997-01-09 11:49:36 +00:00
_lista . add ( r ) ;
r = " " ;
if ( _stampaprogre ) //Progressivi attuali
{
1999-04-06 15:34:39 +00:00
_saldo_progre_al = _totprogre_dare_al - _totprogre_avere_al ;
2002-02-26 16:20:19 +00:00
r . add ( " @32g%s@55g%s@100g%s@117g%s@135g%s " ) ;
2003-03-14 15:13:36 +00:00
r . add ( TR ( " TOTALI PROGRESSIVI AL " ) ) ;
1997-01-09 11:49:36 +00:00
r . add ( _ultima_data_reg . string ( ) ) ;
1999-04-06 15:34:39 +00:00
r . add ( real2str ( _totprogre_dare_al ) ) ;
r . add ( real2str ( _totprogre_avere_al ) ) ;
r . add ( real2str ( _saldo_progre_al ) ) ;
1997-01-09 11:49:36 +00:00
_lista . add ( r ) ;
r = " " ;
}
if ( _stampatotiva )
{
real totale ;
sep . fill ( ' ' ) ;
r . add ( " @0g%s " ) ;
r . add ( sep ) ;
_lista . add ( r ) ;
r = " " ;
1997-10-20 14:23:01 +00:00
TString16 fmt ;
fmt < < " @0g%s@ " < < _ddociva_len < < " g%15s " ;
1997-01-09 11:49:36 +00:00
for ( int j = 0 ; j < _b . items ( ) ; j + + )
{
TDociva & riga = ( TDociva & ) _b [ j ] ;
r . add ( fmt ) ;
r . add ( riga . _descrdoc ) ;
totale = riga . _totdociva ;
1999-04-06 15:34:39 +00:00
r . add ( real2str ( totale ) ) ;
1997-01-09 11:49:36 +00:00
_lista . add ( r ) ;
r = " " ;
}
_b . destroy ( ) ;
}
_indice_lista = 0 ;
}
void TMastrini_application : : stampa_totali198_II ( )
{
int riga , cur_row , diff ;
int lim = 0 ;
_item_lista = _lista . items ( ) ;
if ( ( _conta_mastrini % 2 ) ! = 0 )
{
riga = ( printer ( ) . formlen ( ) / 2 ) ; //- 1;
cur_row = printer ( ) . formlen ( ) - printer ( ) . rows_left ( ) ;
diff = riga - cur_row ;
}
else
{
riga = printer ( ) . formlen ( ) ; //- 1;
cur_row = printer ( ) . formlen ( ) - printer ( ) . rows_left ( ) ;
diff = riga - cur_row ;
}
if ( _indice_lista = = 0 & & diff ! = 0 )
{
if ( _item_lista > diff )
lim = diff ;
else
lim = _item_lista ;
}
else
{
lim = _item_lista ;
_rw = 1 ;
_rw = crea_intestazione ( _rw ) ;
_rw = stampa_progre_riporto ( _rw ) ;
if ( ( _conta_mastrini % 2 ) ! = 0 )
{
riga = ( printer ( ) . formlen ( ) / 2 ) ; //- 1;
cur_row = _rw ;
diff = riga - cur_row ;
}
else
{
riga = printer ( ) . formlen ( ) ; //- 1;
cur_row = _rw + ( printer ( ) . formlen ( ) / 2 ) ; //32;
diff = riga - cur_row ;
}
}
for ( int i = _indice_lista ; i < lim ; i + + )
{
TToken_string & data = ( TToken_string & ) _lista [ i ] ;
TString fmt ( data . get ( 0 ) ) ;
TString arg1 ( data . get ( 1 ) ) ;
TString arg2 ( data . get ( 2 ) ) ;
TString arg3 ( data . get ( 3 ) ) ;
TString arg4 ( data . get ( 4 ) ) ;
2002-02-26 16:20:19 +00:00
TString arg5 ( data . get ( 5 ) ) ;
1997-01-09 11:49:36 +00:00
2002-02-26 16:20:19 +00:00
set_row ( _rw + + , fmt , ( const char * ) arg1 , ( const char * ) arg2 , ( const char * ) arg3 ,
( const char * ) arg4 , ( const char * ) arg5 ) ;
1997-01-09 11:49:36 +00:00
_indice_lista + + ;
}
if ( _item_lista < = diff )
_lista . destroy ( ) ;
2002-05-08 16:25:49 +00:00
1997-01-09 11:49:36 +00:00
_devi_stampare_footer = FALSE ;
}
2002-09-13 14:06:05 +00:00
void TMastrini_application : : setta_riga ( int r , const TString & riga )
1997-01-09 11:49:36 +00:00
{
2002-09-13 14:06:05 +00:00
TString * p = ( TString * ) _riga . objptr ( r ) ;
if ( p = = NULL )
_riga . add ( riga ) ;
else
* p < < riga ;
1997-01-09 11:49:36 +00:00
}
bool TMastrini_application : : preprocess_page ( int file , int counter )
{
2002-09-13 14:06:05 +00:00
if ( counter )
return TRUE ;
1997-01-09 11:49:36 +00:00
TLocalisamfile & rmov = current_cursor ( ) - > file ( LF_RMOV ) ;
long rec ;
TDate datasucc ;
TString datasuccstring , dataregrmovstring ;
int gruppof , contof ;
long sottocf ;
TString provvis = " " ;
int annoes ;
switch ( file )
{
case LF_SALDI :
// Usati in crea_intestazione()
_devi_stampare_footer = TRUE ;
if ( _nummast = = 3 | | _nummast = = 2 )
{
_rw = 0 ;
_rw + + ;
}
_gruppo = atoi ( current_cursor ( ) - > curr ( LF_SALDI ) . get ( SLD_GRUPPO ) ) ;
_conto = atoi ( current_cursor ( ) - > curr ( LF_SALDI ) . get ( SLD_CONTO ) ) ;
_sottoc = atol ( current_cursor ( ) - > curr ( LF_SALDI ) . get ( SLD_SOTTOCONTO ) ) ;
_cambia_mastrino = TRUE ;
annoes = atoi ( current_cursor ( ) - > curr ( LF_SALDI ) . get ( SLD_ANNOES ) ) ;
conto ( _gruppo , _conto , TRUE ) ;
if ( annoes ! = _anno_corrente & & annoes ! = _anno_precedente )
return FALSE ;
if ( _g_prec = = _gruppo & & _c_prec = = _conto & & _s_prec = = _sottoc )
return FALSE ;
_g_prec = _gruppo ;
_c_prec = _conto ;
_s_prec = _sottoc ;
_saldo_periodo = ZERO ;
_totale_periodo_dare = ZERO ;
_totale_periodo_avere = ZERO ;
_saldo_progre = ZERO ;
_totprogre_dare = ZERO ;
_totprogre_avere = ZERO ;
_saldo_progre_al = ZERO ;
_totprogre_dare_al = ZERO ;
_totprogre_avere_al = ZERO ;
_progredare = ZERO ;
_progreavere = ZERO ;
_totale_prima_dare = ZERO ;
_totale_prima_avere = ZERO ;
_saldo_movimenti = ZERO ;
_saldo_progressivi = ZERO ;
_saldo_progre_prec = ZERO ;
2003-10-09 07:29:57 +00:00
if ( _selez_mastrini = = 2 )
1997-04-14 07:52:07 +00:00
{
2000-10-03 13:45:12 +00:00
calcola_progressivi ( TRUE ) ;
_totale_saldo = _saldo_progre_prec ;
1997-04-14 07:52:07 +00:00
}
1997-01-09 11:49:36 +00:00
2003-10-09 07:29:57 +00:00
if ( ( _selez_mastrini = = 1 ) | | ( _selez_mastrini = = 2 ) )
1997-01-09 11:49:36 +00:00
{
2003-10-09 07:29:57 +00:00
if ( ( _selez_mastrini = = 1 & & almeno_un_record ( ) ) | |
( _selez_mastrini = = 2 & & _totale_saldo ! = ZERO ) )
1997-01-09 11:49:36 +00:00
{
_puoi_stampare = TRUE ;
if ( _nummast = = 3 | | _nummast = = 2 )
{
int cur_row = printer ( ) . formlen ( ) - printer ( ) . rows_left ( ) ;
int diff = printer ( ) . formlen ( ) - cur_row ;
if ( diff < = 13 & & diff ! = 0 )
printer ( ) . formfeed ( ) ;
_rw = crea_intestazione ( _rw ) ;
calcola_progressivi ( ) ;
_saldo_progressivi + = _saldo_progre_prec ;
_rw = stampa_progre_riporto ( _rw ) ;
}
}
else
{
_puoi_stampare = FALSE ;
return FALSE ;
}
}
else
2003-10-09 07:29:57 +00:00
if ( _selez_mastrini = = 3 )
1997-01-09 11:49:36 +00:00
{
1997-04-08 13:54:44 +00:00
calcola_progressivi ( ) ;
1997-01-09 11:49:36 +00:00
if ( _progredare = = ZERO & & _progreavere = = ZERO & & ! almeno_un_record ( ) )
{
_puoi_stampare = FALSE ;
return FALSE ;
}
else
{
_puoi_stampare = TRUE ;
if ( _nummast = = 3 | | _nummast = = 2 )
{
int cur_row = printer ( ) . formlen ( ) - printer ( ) . rows_left ( ) ;
int diff = printer ( ) . formlen ( ) - cur_row ;
if ( diff < = 13 & & diff ! = 0 )
printer ( ) . formfeed ( ) ;
_rw = crea_intestazione ( _rw ) ;
_saldo_progressivi + = _saldo_progre_prec ;
_rw = stampa_progre_riporto ( _rw ) ;
}
}
}
break ;
case LF_RMOV :
2002-05-08 16:25:49 +00:00
{
TLocalisamfile & rmov = current_cursor ( ) - > file ( LF_RMOV ) ;
if ( _cdc . not_empty ( ) & & rmov . get ( RMV_CODCMS ) ! = _cdc )
return FALSE ;
2002-07-02 16:21:23 +00:00
if ( _fsc . not_empty ( ) & & rmov . get ( RMV_FASCMS ) ! = _fsc )
2002-07-29 15:19:18 +00:00
return FALSE ;
2002-05-08 16:25:49 +00:00
1997-01-09 11:49:36 +00:00
//Il flag _gia_stampata_intestazione serve nella stampa in continuo, xche'
//sono costretto a richiamare l'intestazione sia nella preprocess_page (per
//i mastrini con intestazione a meta' pagina), sia nella preprocess_header
//per i mastrini che si trovano a cavallo fra una pagina e quella successiva.
//In quest'ultimo caso infatti quando vado a pagina nuova devo stampare l'intestazione
//ma senza il flag rischio di stamparla due volte.
if ( _nummast = = 3 )
_gia_stampata_intestazione = FALSE ;
if ( _nummast = = 1 | | _nummast = = 3 )
_rw = 1 ;
// Ricerca la contropartita di quel movimento
2002-05-08 16:25:49 +00:00
_numreg = rmov . get_long ( RMV_NUMREG ) ;
_numrig = rmov . get_int ( RMV_NUMRIG ) ;
1997-01-09 11:49:36 +00:00
2002-05-31 10:35:40 +00:00
_gruppocontr = rmov . get_int ( RMV_GRUPPOC ) ;
_contocontr = rmov . get_int ( RMV_CONTOC ) ;
1997-01-09 11:49:36 +00:00
_sottocontocontr = rmov . get_long ( RMV_SOTTOCONTOC ) ;
_g_contr = rmov . get ( RMV_GRUPPOC ) ;
_c_contr = rmov . get ( RMV_CONTOC ) ;
_s_contr = rmov . get ( RMV_SOTTOCONTOC ) ;
2002-07-02 16:21:23 +00:00
1997-01-09 11:49:36 +00:00
// Stampa solo quelli che hanno anno esercizio uguale a quello specificato
// nella maschera. Se non viene specificato li stampa tutti
2002-05-08 16:25:49 +00:00
_importo = rmov . get_real ( RMV_IMPORTO ) ;
1999-04-06 15:34:39 +00:00
_importo_str = real2str ( _importo ) ;
2003-03-14 15:13:36 +00:00
const TRectype & mov = cache ( ) . get ( LF_MOV , _numreg ) ;
_annoes = mov . get_int ( MOV_ANNOES ) ;
_regiva = mov . get ( MOV_REG ) ;
_annoiva = mov . get_int ( MOV_ANNOIVA ) ;
1997-01-09 11:49:36 +00:00
// Controlla se saldo e' diverso da 0
1997-04-11 12:55:31 +00:00
if ( ( ( _annoes = = _annomsk ) | | ( _annomsk = = 0 ) ) & & ( _totale_saldo ! = 0.0 ) )
1997-01-09 11:49:36 +00:00
{
2002-05-08 16:25:49 +00:00
_sezione = rmov . get ( RMV_SEZIONE ) ;
1997-01-09 11:49:36 +00:00
if ( _annomsk = = 0 )
{
2003-03-14 15:13:36 +00:00
_datareg = mov . get ( MOV_DATAREG ) ;
1997-01-09 11:49:36 +00:00
_datareg_stampa = _datareg ;
}
else
if ( _annomsk ! = 0 )
{
2003-03-14 15:13:36 +00:00
_datareg = mov . get ( MOV_DATACOMP ) ;
_datareg_stampa = mov . get ( MOV_DATAREG ) ;
1997-01-09 11:49:36 +00:00
}
2003-03-14 15:13:36 +00:00
provvis = mov . get ( MOV_PROVVIS ) ;
1997-01-09 11:49:36 +00:00
_dataregs = _datareg_stampa . string ( ) ;
if ( ( _stampa_mov_prov ) | | ( ( ! _stampa_mov_prov ) & & ( provvis . trim ( ) . empty ( ) ) ) )
{
if ( ( _datareg > = _data_ini ) & & ( _datareg < = _data_fine ) )
{
// Determino l' anno di competenza dell' operazione in esame
int anno = date2esc ( _datareg_stampa ) ;
if ( anno ! = _annoes )
if ( _numcarat = = 1 )
2001-07-24 13:28:55 +00:00
set_row ( _rw , " @132g* " ) ;
1997-01-09 11:49:36 +00:00
else
1997-10-20 14:23:01 +00:00
set_row ( _rw , " @197g* " ) ;
1997-01-09 11:49:36 +00:00
if ( _stampa_mov_prov & & provvis . trim ( ) . not_empty ( ) )
if ( _numcarat = = 1 )
2000-10-03 13:45:12 +00:00
set_row ( _rw , " @130gP " ) ;
1997-01-09 11:49:36 +00:00
else
1997-10-20 14:23:01 +00:00
set_row ( _rw , " @195gP " ) ;
1997-01-09 11:49:36 +00:00
2003-03-14 15:13:36 +00:00
_codcaus = mov . get ( MOV_CODCAUS ) ;
_tipodoc = mov . get ( MOV_TIPODOC ) ;
1997-01-09 11:49:36 +00:00
if ( _stampatotiva & & ( _tmcf = = ' C ' | | _tmcf = = ' F ' ) )
{
if ( _tipodoc ! = " " )
{
documenti_iva ( ) ;
_b . add_riga ( _descrdociva , _importo , _natdoc ) ;
if ( _descrdociva . len ( ) > _ddociva_len )
_ddociva_len = _descrdociva . len ( ) ;
}
}
2003-03-14 15:13:36 +00:00
_datadoc = ( mov . get ( MOV_DATADOC ) ) ;
1997-01-09 11:49:36 +00:00
_datadocs = _datadoc . string ( ) ;
2003-03-14 15:13:36 +00:00
_numdoc = mov . get ( MOV_NUMDOC ) ;
1997-01-09 11:49:36 +00:00
descrizione_causale ( ) ;
2003-03-14 15:13:36 +00:00
_descrizionemov = mov . get ( MOV_DESCR ) ;
_numgio = atol ( mov . get ( MOV_NUMGIO ) ) ;
1997-01-09 11:49:36 +00:00
2002-07-02 16:21:23 +00:00
_descrizione = rmov . get ( RMV_DESCR ) ;
2002-09-13 14:06:05 +00:00
_d18 - > cut ( 0 ) ; _d22 - > cut ( 0 ) ; _d30 - > cut ( 0 ) ;
1997-01-09 11:49:36 +00:00
if ( _nummast = = 1 | | _nummast = = 3 )
{
if ( _numcarat = = 1 ) // Stampa 132 caratteri
{
if ( _descrizione ! = " " )
{
1999-05-24 13:34:11 +00:00
* _d22 = ( const char * ) _descrizione ;
1997-01-09 11:49:36 +00:00
if ( _descrizionemov ! = " " )
{
* _d18 = ( const char * ) _descrizionemov ;
set_row ( _rw , " @42g#a " , _d18 ) ;
1999-05-24 13:34:11 +00:00
set_row ( _rw , " @61g#a " , _d22 ) ;
1997-01-09 11:49:36 +00:00
}
else if ( _descrizionemov = = " " )
{
* _d18 = ( const char * ) _descrcaus ;
set_row ( _rw , " @42g#a " , _d18 ) ;
1999-05-24 13:34:11 +00:00
set_row ( _rw , " @61g#a " , _d22 ) ;
1997-01-09 11:49:36 +00:00
}
}
else if ( _descrizione = = " " )
if ( _descrizionemov ! = " " )
{
1999-05-24 13:34:11 +00:00
* _d22 = ( const char * ) _descrizionemov ;
1997-01-09 11:49:36 +00:00
* _d18 = ( const char * ) _descrcaus ;
set_row ( _rw , " @42g#a " , _d18 ) ;
1999-05-24 13:34:11 +00:00
set_row ( _rw , " @61g#a " , _d22 ) ;
1997-01-09 11:49:36 +00:00
}
else
if ( _descrizionemov = = " " )
{
conto ( _gruppocontr , _contocontr , FALSE ) ;
TConto tc ( _gruppocontr , _contocontr , _sottocontocontr , _tipo_contr ) ;
2002-02-26 16:20:19 +00:00
_descrcontr = tc . descrizione ( ) ;
1997-01-09 11:49:36 +00:00
* _d18 = ( const char * ) _descrcaus ;
set_row ( _rw , " @42g#a " , _d18 ) ;
2002-02-26 16:20:19 +00:00
if ( _descrcontr ! = " Sconosciuto " )
1997-01-09 11:49:36 +00:00
{
2002-02-26 16:20:19 +00:00
* _d22 = ( const char * ) _descrcontr ;
1999-05-24 13:34:11 +00:00
set_row ( _rw , " @61g#a " , _d22 ) ;
1997-01-09 11:49:36 +00:00
}
}
}
else
if ( _numcarat = = 2 ) // Stampa 198 caratteri
{
if ( _descrizione ! = " " )
{
* _d30 = ( const char * ) _descrizione ;
if ( _descrizionemov ! = " " )
{
1999-05-24 13:34:11 +00:00
* _d22 = ( const char * ) _descrizionemov ;
set_row ( _rw , " @46g#a " , _d22 ) ;
1997-01-09 11:49:36 +00:00
set_row ( _rw , " @70g#a " , _d30 ) ;
}
else if ( _descrizionemov = = " " )
{
1999-05-24 13:34:11 +00:00
* _d22 = ( const char * ) _descrcaus ;
set_row ( _rw , " @46g#a " , _d22 ) ;
1997-01-09 11:49:36 +00:00
set_row ( _rw , " @70g#a " , _d30 ) ;
}
}
else if ( _descrizione = = " " )
2002-05-31 10:35:40 +00:00
if ( _descrizionemov . not_empty ( ) )
1997-01-09 11:49:36 +00:00
{
* _d30 = ( const char * ) _descrizionemov ;
1999-05-24 13:34:11 +00:00
* _d22 = ( const char * ) _descrcaus ;
set_row ( _rw , " @46g#a " , _d22 ) ;
1997-01-09 11:49:36 +00:00
set_row ( _rw , " @70g#a " , _d30 ) ;
}
else
2002-05-31 10:35:40 +00:00
{
conto ( _gruppocontr , _contocontr , FALSE ) ;
TConto tc ( _gruppocontr , _contocontr , _sottocontocontr , _tipo_contr ) ;
_descrcontr = tc . descrizione ( ) ;
* _d22 = ( const char * ) _descrcaus ;
set_row ( _rw , " @46g#a " , _d22 ) ;
if ( _descrcontr ! = " Sconosciuto " )
1997-01-09 11:49:36 +00:00
{
2002-05-31 10:35:40 +00:00
* _d30 = ( const char * ) _descrcontr ;
set_row ( _rw , " @70g#a " , _d30 ) ;
1997-01-09 11:49:36 +00:00
}
2002-05-31 10:35:40 +00:00
}
1997-01-09 11:49:36 +00:00
}
} //if (_nummast == 1 || _nummast == 3)
if ( _nummast = = 2 )
{
TString d18 , d23 , d30 ;
if ( _numcarat = = 1 ) // Stampa 132 caratteri
{
if ( _descrizione ! = " " )
{
d23 = _descrizione ;
2002-07-02 16:21:23 +00:00
if ( _descrizionemov . not_empty ( ) )
1997-01-09 11:49:36 +00:00
d18 = _descrizionemov ;
2002-07-02 16:21:23 +00:00
else
1997-01-09 11:49:36 +00:00
d18 = _descrcaus ;
}
2002-07-02 16:21:23 +00:00
else if ( _descrizione . empty ( ) )
{
if ( _descrizionemov . not_empty ( ) )
{
d23 = _descrizionemov ;
d18 = _descrcaus ;
}
else
{
conto ( _gruppocontr , _contocontr , FALSE ) ;
TConto tc ( _gruppocontr , _contocontr , _sottocontocontr , _tipo_contr ) ;
_descrcontr = tc . descrizione ( ) ;
d18 = _descrcaus ;
if ( _descrcontr ! = " Sconosciuto " )
d23 = _descrcontr ;
}
}
1997-01-09 11:49:36 +00:00
TParagraph_string d_18 ( d18 , 18 ) ;
int i = 0 ;
const char * str ;
while ( ( str = d_18 . get ( ) ) ! = NULL )
{
2002-07-02 16:21:23 +00:00
TString stringa ;
1997-01-09 11:49:36 +00:00
stringa < < " @42g " < < str ;
setta_riga ( i , stringa ) ;
i + + ;
}
TParagraph_string d_23 ( d23 , 23 ) ;
i = 0 ;
while ( ( str = d_23 . get ( ) ) ! = NULL )
{
2002-07-02 16:21:23 +00:00
TString stringa ;
1997-01-09 11:49:36 +00:00
stringa < < " @61g " < < str ;
setta_riga ( i , stringa ) ;
i + + ;
}
}
else
if ( _numcarat = = 2 ) // Stampa 198 caratteri
{
2002-07-02 16:21:23 +00:00
if ( _descrizione . not_empty ( ) )
1997-01-09 11:49:36 +00:00
{
d30 = _descrizione ;
if ( _descrizionemov ! = " " )
d23 = _descrizionemov ;
else if ( _descrizionemov = = " " )
d23 = _descrcaus ;
}
2002-07-02 16:21:23 +00:00
else
{
if ( _descrizionemov . not_empty ( ) )
{
d30 = _descrizionemov ;
d23 = _descrcaus ;
}
else
{
conto ( _gruppocontr , _contocontr , FALSE ) ;
TConto tc ( _gruppocontr , _contocontr , _sottocontocontr , _tipo_contr ) ;
_descrcontr = tc . descrizione ( ) ;
d23 = _descrcaus ;
if ( _descrcontr ! = " Sconosciuto " )
d30 = _descrcontr ;
}
}
1997-01-09 11:49:36 +00:00
TParagraph_string d_23 ( d23 , 23 ) ;
int i = 0 ;
const char * str ;
while ( ( str = d_23 . get ( ) ) ! = NULL )
{
2002-07-02 16:21:23 +00:00
TString stringa ;
1997-01-09 11:49:36 +00:00
stringa < < " @46g " < < str ;
setta_riga ( i , stringa ) ;
i + + ;
}
TParagraph_string d_30 ( d30 , 30 ) ;
i = 0 ;
while ( ( str = d_30 . get ( ) ) ! = NULL )
{
2002-09-13 14:06:05 +00:00
TString stringa ;
1997-01-09 11:49:36 +00:00
stringa < < " @70g " < < str ;
setta_riga ( i , stringa ) ;
i + + ;
}
}
_item = _riga . items ( ) ;
int riga , cur_row , diff ;
if ( ( _conta_mastrini % 2 ) ! = 0 )
{
int app = 0 ;
riga = ( printer ( ) . formlen ( ) / 2 ) ;
if ( printer ( ) . rows_left ( ) = = 0 )
app = printer ( ) . formlen ( ) - _rw ;
else
app = printer ( ) . rows_left ( ) ;
cur_row = printer ( ) . formlen ( ) - app ;
diff = riga - cur_row ;
}
else
{
riga = printer ( ) . formlen ( ) ;
cur_row = printer ( ) . formlen ( ) - printer ( ) . rows_left ( ) ;
diff = riga - cur_row ;
}
bool stampa_riporti ;
int lim = 0 ;
if ( _item > = diff )
{
lim = diff - 1 ;
stampa_riporti = TRUE ;
}
else
{
lim = _item ;
stampa_riporti = FALSE ;
}
_indice_array = 0 ;
int k = _rw ;
for ( int i = 0 ; i < lim ; i + + )
{
TString & data = ( TString & ) _riga [ i ] ;
int g1 = data . find ( " g " , 1 ) ;
int c1 = data . find ( " @ " , g1 ) ;
int g2 = data . find ( " g " , c1 ) ;
TString fmt1 = " " ;
TString fmt2 = " " ;
TString str1 , str2 ;
if ( g1 ! = - 1 )
{
fmt1 = data . sub ( 0 , g1 + 1 ) ;
fmt1 < < " %s " ;
str1 = data . sub ( g1 + 1 , c1 ) ;
}
if ( c1 ! = - 1 )
{
fmt2 = data . sub ( c1 , g2 + 1 ) ;
fmt2 < < " %s " ;
str2 = data . sub ( g2 + 1 ) ;
}
if ( fmt1 ! = " " )
set_row ( k , fmt1 , ( const char * ) str1 ) ;
if ( fmt2 ! = " " )
set_row ( k , fmt2 , ( const char * ) str2 ) ;
k + + ;
_indice_array + + ;
}
if ( stampa_riporti )
{
_rw = k ;
if ( lim = = 0 )
{
if ( _numcarat = = 1 )
{
1997-10-20 14:23:01 +00:00
TString app ( 132 ) ;
1997-01-09 11:49:36 +00:00
app . spaces ( ) ;
1997-10-20 14:23:01 +00:00
set_row ( _rw , " @0g%s " , ( const char * ) app ) ;
1997-01-09 11:49:36 +00:00
}
else
{
1997-10-20 14:23:01 +00:00
TString app ( 198 ) ;
1997-01-09 11:49:36 +00:00
app . spaces ( ) ;
1997-10-20 14:23:01 +00:00
set_row ( _rw , " @0g%s " , ( const char * ) app ) ;
1997-01-09 11:49:36 +00:00
}
}
real dep_dare , dep_avere ;
if ( _stampa_footer_si )
{
_riporto_footer_dare = _progredare + _riporto_parziale_dare ;
_riporto_footer_avere = _progreavere + _riporto_parziale_avere ;
real imp_d , imp_a ;
imp_d = _sezione = = " D " ? _importo : ZERO ;
imp_a = _sezione = = " A " ? _importo : ZERO ;
if ( lim ! = 0 )
{
_riporto_footer_dare + = imp_d ;
_riporto_footer_avere + = imp_a ;
}
dep_dare = _riporto_footer_dare ;
dep_avere = _riporto_footer_avere ;
_stampa_footer_si = FALSE ;
}
else
{
_riporto_footer_dare + = _riporto_parziale_dare ;
_riporto_footer_avere + = _riporto_parziale_avere ;
real imp_d , imp_a ;
imp_d = _sezione = = " D " ? _importo : ZERO ;
imp_a = _sezione = = " A " ? _importo : ZERO ;
if ( lim ! = 0 )
{
_riporto_footer_dare + = imp_d ;
_riporto_footer_avere + = imp_a ;
}
dep_dare = _riporto_footer_dare ;
dep_avere = _riporto_footer_avere ;
}
if ( _nummast ! = 3 | | dep_dare ! = ZERO | | dep_avere ! = ZERO )
{
1999-04-06 15:34:39 +00:00
TString dare ( real2str ( dep_dare ) ) ;
TString avere ( real2str ( dep_avere ) ) ;
1997-01-09 11:49:36 +00:00
if ( _numcarat = = 1 )
{
2003-03-14 15:13:36 +00:00
set_row ( _rw , FR ( " @32gA RIPORTO@83g%s " ) , ( const char * ) dare ) ;
1997-10-20 14:23:01 +00:00
set_row ( _rw , " @100g%s " , ( const char * ) avere ) ;
1997-01-09 11:49:36 +00:00
}
else
if ( _numcarat = = 2 )
{
2003-03-14 15:13:36 +00:00
set_row ( _rw , FR ( " @32gA RIPORTO@100g%s " ) , ( const char * ) dare ) ;
1997-01-09 11:49:36 +00:00
set_row ( _rw , " @117g%s " , ( const char * ) avere ) ;
}
}
if ( lim = = 0 )
{
rmov . prev ( ) ;
_riga . destroy ( ) ;
_item = 0 ;
return TRUE ;
}
_rw - - ;
}
//_riga.destroy();
2003-03-14 15:13:36 +00:00
}
2002-09-13 14:06:05 +00:00
if ( _print_cdc )
{
const TString & cms = rmov . get ( RMV_CODCMS ) ;
if ( cms . not_empty ( ) )
{
TString riga_commessa ;
riga_commessa < < " @0g@b " < < cms ;
riga_commessa < < " @21g " < < cache ( ) . get ( " CMS " , cms , " S0 " ) ;
const TString & fas = rmov . get ( RMV_FASCMS ) ;
if ( fas . not_empty ( ) )
{
riga_commessa < < " @72g " < < fas ;
riga_commessa < < " @83g " < < cache ( ) . get ( " FSC " , fas , " S0 " ) ;
}
const int jump = max ( _d18 - > items ( ) , max ( _d22 - > items ( ) , _d30 - > items ( ) ) ) ;
set_row ( _rw + jump , riga_commessa ) ;
}
}
1997-01-09 11:49:36 +00:00
if ( _sezione = = " D " )
{
_totale_periodo_dare + = _importo ;
_riporto_parziale_dare + = _importo ;
2002-05-08 16:25:49 +00:00
_totale_commessa_dare + = _importo ;
1997-01-09 11:49:36 +00:00
2002-05-31 10:35:40 +00:00
1997-01-09 11:49:36 +00:00
if ( _numcarat = = 1 ) // Stampa 132 caratteri
1997-10-20 14:23:01 +00:00
set_row ( _rw , " @83g%s " , ( const char * ) _importo_str ) ;
2003-10-09 07:29:57 +00:00
else // Stampa 198 caratteri
{
_saldo_progressivi + = _importo ;
_saldo_movimenti + = _importo ;
set_row ( _rw , " @100g%s " , ( const char * ) _importo_str ) ;
}
1997-01-09 11:49:36 +00:00
}
else if ( _sezione = = " A " )
{
_totale_periodo_avere + = _importo ;
_riporto_parziale_avere + = _importo ;
2002-05-08 16:25:49 +00:00
_totale_commessa_avere + = _importo ;
2002-05-31 10:35:40 +00:00
1997-01-09 11:49:36 +00:00
if ( _numcarat = = 1 ) // Stampa 132 caratteri
1997-10-20 14:23:01 +00:00
set_row ( _rw , " @100g%s " , ( const char * ) _importo_str ) ;
2003-10-09 07:29:57 +00:00
else // Stampa 198 caratteri
{
_saldo_progressivi - = _importo ;
_saldo_movimenti - = _importo ;
set_row ( _rw , " @117g%s " , ( const char * ) _importo_str ) ;
}
1997-01-09 11:49:36 +00:00
}
const int righe_rimaste = printer ( ) . rows_left ( ) ;
_stampato = righe_rimaste > = 1 ;
1999-04-06 15:34:39 +00:00
_saldo_progressivi_str = real2str ( _saldo_progressivi ) ;
_saldo_movimenti_str = real2str ( _saldo_movimenti ) ;
1997-01-09 11:49:36 +00:00
if ( _numcarat = = 2 )
{
ricerca_regiva ( ) ;
2003-03-14 15:13:36 +00:00
_protiva = mov . get_long ( MOV_PROTIVA ) ;
1997-01-09 11:49:36 +00:00
if ( _protiva ! = 0 )
1997-10-20 14:23:01 +00:00
set_row ( _rw , " @191g%5d " , _protiva ) ;
1997-01-09 11:49:36 +00:00
if ( _tipo < 3 )
1997-10-20 14:23:01 +00:00
set_row ( _rw , " @183g#t " , & _regiva ) ;
1997-01-09 11:49:36 +00:00
_dataregrmov = current_cursor ( ) - > curr ( LF_RMOV ) . get_date ( RMV_DATAREG ) ;
dataregrmovstring = _dataregrmov . string ( ) ;
//Gestire la stampa di saldo_progressivi nella postprocess_page di RMOV
2003-10-09 08:16:19 +00:00
if ( _stampa_saldo_des < 3 ) // Stampa saldo (non descrizioni)
1997-11-11 11:42:40 +00:00
{
2003-10-09 08:16:19 +00:00
rec = rmov . recno ( ) ;
rmov . next ( ) ;
gruppof = rmov . get_int ( RMV_GRUPPO ) ;
contof = rmov . get_int ( RMV_CONTO ) ;
sottocf = rmov . get_int ( RMV_SOTTOCONTO ) ;
datasucc = rmov . get_date ( RMV_DATAREG ) ;
datasuccstring = datasucc . string ( ) ;
if ( ( ( gruppof ! = _gruppo ) | | ( contof ! = _conto ) | | ( sottocf ! = _sottoc ) ) | | ( rmov . eof ( ) ) )
datasucc = ( " " ) ;
if ( datasucc ! = _dataregrmov | | _stampa_saldo_des = = 2 )
2003-10-09 07:29:57 +00:00
{
2003-10-09 08:16:19 +00:00
if ( _flag_del_cazzo )
{
calcola_progressivi ( ) ;
_saldo_progressivi + = _saldo_progre_prec ;
2003-10-09 07:29:57 +00:00
set_row ( _rw , " @135g%r " , & _saldo_progressivi ) ;
2003-10-09 08:16:19 +00:00
_saldo_progressivi - = _saldo_progre_prec ;
_flag_del_cazzo = FALSE ;
}
else
set_row ( _rw , " @135g%r " , & _saldo_progressivi ) ;
}
rmov . readat ( rec ) ;
1997-11-11 11:42:40 +00:00
}
2001-07-24 13:28:55 +00:00
}
else
{
ricerca_regiva ( ) ;
2003-03-14 15:13:36 +00:00
_protiva = atol ( mov . get ( MOV_PROTIVA ) ) ;
2001-07-24 13:28:55 +00:00
if ( _protiva ! = 0 )
set_row ( _rw , " @127g%5d " , _protiva ) ;
}
1997-01-09 11:49:36 +00:00
_rw = 1 ;
return TRUE ;
}
else
return FALSE ;
}
else
return FALSE ;
}
else
return FALSE ;
break ;
}
default :
break ;
}
return TRUE ;
}
void TMastrini_application : : set_page ( int file , int counter )
{
switch ( file )
{
case LF_SALDI :
reset_print ( ) ;
break ;
case LF_RMOV :
reset_print ( ) ;
if ( _numcarat = = 1 )
fai_stampa132 ( ) ;
2002-05-08 16:25:49 +00:00
else
fai_stampa198 ( ) ;
1997-01-09 11:49:36 +00:00
break ;
default :
break ;
}
}
print_action TMastrini_application : : postprocess_page ( int file , int counter )
{
if ( _nummast = = 1 | | _nummast = = 3 )
{
if ( counter )
{
if ( _nummast = = 1 ) //Il salto pagina a rottura di mastrino viene
printer ( ) . formfeed ( ) ; //fatto solo quando seleziono un mastrino per pagina
reset_print ( ) ; // per evitare che stampi di nuovo il totale prec.
_stampa_progressivi_si = TRUE ;
_stampa_footer_si = TRUE ;
_riporto_dare = ZERO ;
_riporto_avere = ZERO ;
_riporto_footer_dare = ZERO ;
_riporto_footer_avere = ZERO ;
_riporto_parziale_dare = ZERO ;
_riporto_parziale_avere = ZERO ;
_ddociva_len = 0 ;
return NEXT_PAGE ;
}
}
else
if ( _nummast = = 2 )
{
int item_lista = _lista . items ( ) ;
if ( counter & & item_lista = = 0 )
{
reset_print ( ) ; // per evitare che stampi di nuovo il totale prec.
_stampa_progressivi_si = TRUE ;
_stampa_footer_si = TRUE ;
_riporto_dare = ZERO ;
_riporto_avere = ZERO ;
_riporto_footer_dare = ZERO ;
_riporto_footer_avere = ZERO ;
_riporto_parziale_dare = ZERO ;
_riporto_parziale_avere = ZERO ;
_ddociva_len = 0 ;
return NEXT_PAGE ;
}
}
switch ( file )
{
case LF_SALDI :
{
if ( _nummast = = 1 | | _nummast = = 3 )
{
2003-10-09 07:29:57 +00:00
if ( _selez_mastrini = = 3 )
1997-01-09 11:49:36 +00:00
{
reset_print ( ) ;
if ( _numcarat = = 1 )
stampa_totali132 ( ) ;
2002-05-31 10:35:40 +00:00
else if ( _numcarat = = 2 )
2002-05-08 16:25:49 +00:00
stampa_totali198 ( ) ;
2002-05-31 10:35:40 +00:00
1997-01-09 11:49:36 +00:00
if ( _stampatotiva )
stampa_totaliiva ( ) ;
}
2003-10-09 07:29:57 +00:00
else if ( _selez_mastrini = = 2 )
1997-01-09 11:49:36 +00:00
{
reset_print ( ) ;
1997-04-11 12:55:31 +00:00
if ( ( _totale_saldo ! = 0.0 ) & & ( _puoi_stampare ) )
2002-05-08 16:25:49 +00:00
{
1997-01-09 11:49:36 +00:00
if ( _numcarat = = 1 )
stampa_totali132 ( ) ;
2002-05-08 16:25:49 +00:00
else
stampa_totali198 ( ) ;
}
1997-01-09 11:49:36 +00:00
if ( _stampatotiva )
stampa_totaliiva ( ) ;
}
2003-10-09 07:29:57 +00:00
else if ( _selez_mastrini = = 1 )
1997-01-09 11:49:36 +00:00
{
reset_print ( ) ;
if ( _puoi_stampare )
2002-05-08 16:25:49 +00:00
{
1997-01-09 11:49:36 +00:00
if ( _numcarat = = 1 )
stampa_totali132 ( ) ;
2002-05-31 10:35:40 +00:00
else if ( _numcarat = = 2 )
2002-05-08 16:25:49 +00:00
stampa_totali198 ( ) ;
}
2002-05-31 10:35:40 +00:00
1997-01-09 11:49:36 +00:00
if ( _stampatotiva )
stampa_totaliiva ( ) ;
}
}
else
if ( _nummast = = 2 )
{
if ( ! counter )
{
if ( _numcarat = = 1 )
carica_array_totali132 ( ) ;
else
2002-05-08 16:25:49 +00:00
carica_array_totali198 ( ) ;
1997-01-09 11:49:36 +00:00
}
2003-10-09 07:29:57 +00:00
if ( _selez_mastrini = = 3 )
1997-01-09 11:49:36 +00:00
{
reset_print ( ) ;
if ( _numcarat = = 1 )
stampa_totali132_II ( ) ;
2002-05-08 16:25:49 +00:00
else
stampa_totali198_II ( ) ;
1997-01-09 11:49:36 +00:00
}
2003-10-09 07:29:57 +00:00
else if ( _selez_mastrini = = 2 )
1997-01-09 11:49:36 +00:00
{
reset_print ( ) ;
1997-04-11 12:55:31 +00:00
if ( ( _totale_saldo ! = 0.0 ) & & ( _puoi_stampare ) )
1997-01-09 11:49:36 +00:00
if ( _numcarat = = 1 )
stampa_totali132_II ( ) ;
2002-05-08 16:25:49 +00:00
else
stampa_totali198_II ( ) ;
1997-01-09 11:49:36 +00:00
}
2003-10-09 07:29:57 +00:00
else if ( _selez_mastrini = = 1 )
1997-01-09 11:49:36 +00:00
{
reset_print ( ) ;
if ( _puoi_stampare )
if ( _numcarat = = 1 )
stampa_totali132_II ( ) ;
2002-05-08 16:25:49 +00:00
else
stampa_totali198_II ( ) ;
1997-01-09 11:49:36 +00:00
}
int item_lista = _lista . items ( ) ;
if ( item_lista = = 0 )
{
int righe_rimaste = righe_rimaste_da_stampare ( ) ;
righe_rimaste = righe_rimaste - _rw ; //_rw sono le righe dei totali gia' settate, mentre
//righe rimaste conteneva le righe senza quelle dei totali gia' settate
if ( righe_rimaste > 0 )
{
_rw + + ; //incremento la riga altrimenti copro l'ultimo totale settato con una riga bianca
for ( int i = 0 ; i < righe_rimaste ; i + + )
2002-07-02 16:21:23 +00:00
set_row ( _rw + + , " @0g " ) ;
1997-01-09 11:49:36 +00:00
}
}
}
// _stampa_progressivi_si = TRUE;
return REPEAT_PAGE ;
}
case LF_RMOV :
force_setpage ( ) ;
break ;
default :
break ;
}
return NEXT_PAGE ;
}
print_action TMastrini_application : : postprocess_print ( int file , int counter )
2000-10-03 13:45:12 +00:00
{
2002-05-31 10:35:40 +00:00
if ( file = = LF_SALDI )
2000-10-03 13:45:12 +00:00
{
2002-05-08 16:25:49 +00:00
reset_print ( ) ;
2002-07-02 16:21:23 +00:00
// stampa_totali_commessa();
2002-05-08 16:25:49 +00:00
print_one ( file ) ;
2000-10-03 13:45:12 +00:00
_msk - > reset ( - 9 ) ;
2002-05-08 16:25:49 +00:00
}
2002-05-31 10:35:40 +00:00
1997-01-09 11:49:36 +00:00
return NEXT_PAGE ;
}
// Stampa dei totali documenti iva se richiesta
void TMastrini_application : : stampa_totaliiva ( )
{
real totale ;
if ( _nummast = = 1 | | _nummast = = 3 )
{
_rw = 7 ;
_ddociva_len + + ;
if ( _stampatotiva )
2002-05-08 16:25:49 +00:00
{
TString16 fmt ; fmt . format ( " @%dg " , _ddociva_len ) ;
fmt < < " %15s " ;
1997-01-09 11:49:36 +00:00
for ( int j = 0 ; j < _b . items ( ) ; j + + )
{
TDociva & riga = ( TDociva & ) _b [ j ] ;
set_row ( _rw + j , " @0g%s " , ( const char * ) riga . _descrdoc ) ;
totale = riga . _totdociva ;
1999-04-06 15:34:39 +00:00
TString string = real2str ( totale ) ;
1997-01-09 11:49:36 +00:00
set_row ( _rw + j , fmt , ( const char * ) string ) ;
}
2002-05-08 16:25:49 +00:00
}
1997-01-09 11:49:36 +00:00
_b . destroy ( ) ;
}
}
// Ricerca della descrizione relativa al codice causale di MOV.dta
// sull'archivio CAUS.dta
void TMastrini_application : : descrizione_causale ( )
{
2003-03-14 15:13:36 +00:00
const TRectype & caus = cache ( ) . get ( LF_CAUSALI , _codcaus ) ;
_descrcaus = caus . get ( CAU_DESCR ) ;
1997-01-09 11:49:36 +00:00
}
// Ricerca sulla tabella dei tipi documento, la descrizione e la natura del
// documento, accedendovi tramite il tipo documento trovato su MOV.dta
void TMastrini_application : : documenti_iva ( )
{
TString dep ;
_tabtpd - > curr ( ) . zero ( ) ;
dep < < format ( " %2s " , ( const char * ) _tipodoc ) ;
_tabtpd - > curr ( ) . put ( " CODTAB " , ( const char * ) dep ) ;
_tabtpd - > read ( ) ;
_descrdociva = _tabtpd - > curr ( ) . get ( " S0 " ) ;
_natdoc = atoi ( _tabtpd - > curr ( ) . get ( " I0 " ) ) ;
}
void TMastrini_application : : ricerca_regiva ( )
{
TString16 dep ;
_tabreg - > curr ( ) . zero ( ) ;
dep < < format ( " %04d " , _annoiva ) ;
dep < < format ( " %3s " , ( const char * ) _regiva ) ;
_tabreg - > curr ( ) . put ( " CODTAB " , ( const char * ) dep ) ;
_tabreg - > read ( ) ;
_tipo = _tabreg - > get_int ( " I0 " ) ;
}
bool TMastrini_application : : preprocess_print ( int file , int counter )
{
if ( file = = LF_SALDI )
{
_g_prec = 0 ;
_c_prec = 0 ;
_s_prec = 0 ;
_saldo_periodo = ZERO ;
_totale_periodo_dare = ZERO ;
_totale_periodo_avere = ZERO ;
_saldo_progre = ZERO ;
_totprogre_dare = ZERO ;
_totprogre_avere = ZERO ;
_saldo_progre_al = ZERO ;
_totprogre_dare_al = ZERO ;
_totprogre_avere_al = ZERO ;
_progredare = ZERO ;
_progreavere = ZERO ;
_totale_prima_dare = ZERO ;
_totale_prima_avere = ZERO ;
_saldo_movimenti = ZERO ;
_saldo_progressivi = ZERO ;
_saldo_progre_prec = ZERO ;
_riporto_parziale_dare = ZERO ;
_riporto_parziale_avere = ZERO ;
_protiva = 0 ;
1997-11-11 11:42:40 +00:00
_flag_del_cazzo = _nummast = = 1 ;
1997-01-09 11:49:36 +00:00
_stampa_progressivi_si = TRUE ;
_stampa_footer_si = TRUE ;
}
return TRUE ;
}
2002-07-02 16:21:23 +00:00
bool TMastrini_application : : set_print ( int m )
1997-01-09 11:49:36 +00:00
{
2002-05-08 16:25:49 +00:00
KEY tasto = K_ENTER ;
while ( tasto = = K_ENTER )
1997-01-09 11:49:36 +00:00
{
2002-05-08 16:25:49 +00:00
_puoi_stampare = TRUE ;
// Controlla se esistono impostazioni di stampa in coda
if ( sheet2mask ( ) )
{
// Simula l'immediata pressione del tasto stampa senza nemmeno lanciare la maschera
tasto = K_ENTER ;
1997-01-09 11:49:36 +00:00
}
2002-05-08 16:25:49 +00:00
else
{
tasto = _msk - > run ( ) ;
if ( tasto = = K_ENTER )
{
// Se lo sheet e' vuoto allora usa solo la maschera corrente per la stampa,
// altrimenti estrae il primo elemento sovrascrivendo la maschera corrente.
// Questa figata cerca di correggere gli errori MI6185 e MI3592 in una botta
TSheet_field & sht = ( TSheet_field & ) _msk - > field ( F_SCELTE ) ;
if ( sht . items ( ) ! = 0 )
sheet2mask ( ) ; // Estrae la prima riga dalla coda di stampa
}
}
if ( tasto ! = K_ENTER )
break ;
_noseparator = _msk - > get_bool ( F_SEPARATOR ) ;
if ( _noseparator )
_real_picture = " ################ " ;
else
_real_picture = " ####.###.###.### " ;
set_real_picture ( _real_picture ) ;
set_magic_currency ( TRUE ) ;
1997-10-20 14:23:01 +00:00
1997-01-09 11:49:36 +00:00
_codice_ditta = get_firm ( ) ;
_annomsk = _msk - > get_int ( F_ANNO ) ;
2002-05-08 16:25:49 +00:00
1997-01-09 11:49:36 +00:00
int gruppoini = _msk - > get_int ( F_GRUPPOINI ) ;
int contoini = _msk - > get_int ( F_CONTOINI_CONTO ) ;
long sottocontoini = _msk - > get_long ( F_SOTTOCINI_CONTO ) ;
int gruppofine = _msk - > get_int ( F_GRUPPOFINE ) ;
int contofine = _msk - > get_int ( F_CONTOFINE_CONTO ) ;
long sottocontofine = _msk - > get_long ( F_SOTTOCFINE_CONTO ) ;
2002-05-08 16:25:49 +00:00
1997-01-09 11:49:36 +00:00
_stampaprogre = _msk - > get_bool ( F_STAMPAPROGRE ) ;
_stampatotiva = _msk - > get_bool ( F_STAMPATOTIVA ) ;
_stampanum = _msk - > get_int ( F_STAMPANUM ) ;
_stampa_mov_prov = _msk - > get_bool ( F_STAMPAMOVPROV ) ;
2003-10-09 07:29:57 +00:00
_selez_mastrini = _msk - > get_int ( F_SELEZ_STAMPA ) ;
2002-05-08 16:25:49 +00:00
1997-01-09 16:32:19 +00:00
_numcarat = _msk - > get_int ( F_NUMCARAT ) ;
2003-10-09 07:29:57 +00:00
_stampa_saldo_des = _numcarat = = 2 ? _msk - > get_int ( F_SALDO_DES ) : 0 ;
1997-01-09 16:32:19 +00:00
_nummast = _msk - > get_int ( F_NUMMAST ) ;
1997-03-10 13:56:33 +00:00
_data_ini = _msk - > get_date ( F_DATAINI ) ;
_data_fine = _msk - > get_date ( F_DATAFINE ) ;
2002-05-08 16:25:49 +00:00
1997-04-11 12:55:31 +00:00
TEsercizi_contabili esc ;
2002-05-08 16:25:49 +00:00
1997-01-09 11:49:36 +00:00
if ( _annomsk ! = 0 )
1997-04-11 12:55:31 +00:00
_anno_corrente = _annomsk ;
else
{
_anno_ghost = esc . date2esc ( _data_ini ) ;
_anno_corrente = _anno_ghost ;
_inizioes = esc [ _anno_ghost ] . inizio ( ) ;
}
2002-05-08 16:25:49 +00:00
1997-04-11 12:55:31 +00:00
data_fine_esercizio ( _anno_corrente ) ; // Ricalcola _data_inizioese e _data_finese
if ( ! _data_ini . ok ( ) ) _data_ini = _data_inizioese ;
if ( ! _data_fine . ok ( ) ) _data_fine = _data_finese ;
2002-05-08 16:25:49 +00:00
1997-01-09 11:49:36 +00:00
_anno_precedente = esc . pred ( _anno_corrente ) ;
2002-05-08 16:25:49 +00:00
1997-04-11 12:55:31 +00:00
ricerca_dati_ditta ( ) ;
2002-05-08 16:25:49 +00:00
1997-01-09 11:49:36 +00:00
if ( _nummast = = 1 | | _nummast = = 3 )
printer ( ) . footerlen ( 4 ) ;
1997-01-14 11:28:53 +00:00
else
1997-01-09 11:49:36 +00:00
printer ( ) . footerlen ( 2 ) ;
2002-05-08 16:25:49 +00:00
1997-01-09 11:49:36 +00:00
//Crea il cursore su gruppo, conto e sottoconto del file RMOV
2002-05-08 16:25:49 +00:00
1997-01-09 11:49:36 +00:00
reset_files ( ) ; //resetta l'albero di stampa
add_file ( LF_SALDI ) ;
1997-04-03 15:37:59 +00:00
add_file ( LF_RMOV , LF_SALDI ) ;
2002-05-08 16:25:49 +00:00
1999-06-18 15:35:05 +00:00
if ( _msk - > get_bool ( F_SORTDESC ) )
select_cursor ( _cur2 ) ;
else
select_cursor ( _cur1 ) ;
2002-05-08 16:25:49 +00:00
1997-04-03 15:37:59 +00:00
TRectype da ( LF_SALDI ) , a ( LF_SALDI ) ;
1997-01-09 11:49:36 +00:00
da . put ( SLD_GRUPPO , gruppoini ) ;
da . put ( SLD_CONTO , contoini ) ;
da . put ( SLD_SOTTOCONTO , sottocontoini ) ;
a . put ( SLD_GRUPPO , gruppofine ) ;
a . put ( SLD_CONTO , contofine ) ;
1997-04-03 15:37:59 +00:00
a . put ( SLD_SOTTOCONTO , sottocontofine ) ;
1997-01-09 11:49:36 +00:00
current_cursor ( ) - > setregion ( da , a ) ;
if ( _stampatotiva )
_b . destroy ( ) ;
2002-05-08 16:25:49 +00:00
1997-01-09 11:49:36 +00:00
//_inizio_stampa = TRUE;
_numero_pag = 1 ;
if ( _nummast = = 3 )
_pagina = 0 ;
else
_pagina = 1 ;
_cambia_mastrino = FALSE ;
_rw = 0 ;
_conta_mastrini = 0 ;
_indice_lista = 0 ;
_ddociva_len = 0 ;
2002-05-08 16:25:49 +00:00
1997-01-09 11:49:36 +00:00
_riga . destroy ( ) ;
_lista . destroy ( ) ;
2002-05-08 16:25:49 +00:00
2003-10-09 07:29:57 +00:00
switch ( _selez_mastrini )
1997-01-09 11:49:36 +00:00
{
1997-10-20 14:23:01 +00:00
case 1 : _totale_saldo = 1.0 ; break ;
case 2 : _totale_saldo = 0.0 ; break ;
case 3 : _totale_saldo = 1.0 ; break ;
1997-01-09 11:49:36 +00:00
default : break ;
}
2002-05-08 16:25:49 +00:00
1997-01-09 11:49:36 +00:00
enable_print_menu ( ) ;
2000-10-03 13:45:12 +00:00
enable_link ( " Collegamento prima nota: " , ' b ' ) ;
2002-05-08 16:25:49 +00:00
2002-07-02 16:21:23 +00:00
_print_cdc = _msk - > get_bool ( F_PRINTCDC ) ;
2002-10-23 14:14:55 +00:00
if ( _msk - > field ( F_DACDC ) . active ( ) & & ( _msk - > get ( F_DACDC ) . not_empty ( ) | | _msk - > get ( F_ACDC ) . not_empty ( ) ) )
2002-05-08 16:25:49 +00:00
{
TRelation rel ( " CMS " ) ;
TRectype darec ( rel . curr ( ) ) , arec ( rel . curr ( ) ) ;
darec . put ( " CODTAB " , _msk - > get ( F_DACDC ) ) ;
arec . put ( " CODTAB " , _msk - > get ( F_ACDC ) ) ;
TCursor cur ( & rel , " " , 1 , & darec , & arec ) ;
const long items = cur . items ( ) ;
cur . freeze ( ) ;
2002-07-02 16:21:23 +00:00
TRelation fscrel ( " FSC " ) ;
TRectype da_fsc ( fscrel . curr ( ) ) , a_fsc ( fscrel . curr ( ) ) ;
da_fsc . put ( " CODTAB " , _msk - > get ( F_DAFSC ) ) ;
a_fsc . put ( " CODTAB " , _msk - > get ( F_AFSC ) ) ;
TCursor fsccur ( & fscrel , " " , 1 , & da_fsc , & a_fsc ) ;
const TRecnotype fsc_items = fsccur . items ( ) ;
fsccur . freeze ( ) ;
2002-05-08 16:25:49 +00:00
for ( cur = 0L ; cur . pos ( ) < items ; + + cur )
{
_cdc = rel . curr ( ) . get ( " CODTAB " ) ;
2002-07-02 16:21:23 +00:00
if ( ! da_fsc . empty ( ) | | ! a_fsc . empty ( ) )
{
for ( fsccur = 0L ; fsccur . pos ( ) < fsc_items ; + + fsccur )
{
_fsc = fsccur . curr ( ) . get ( " CODTAB " ) ;
2002-07-29 15:19:18 +00:00
do
{
_totale_commessa_dare = _totale_commessa_avere = ZERO ;
print ( ) ;
}
while ( need_to_repeat_print ( ) ) ;
}
}
else
{
2002-07-02 16:21:23 +00:00
_fsc . cut ( 0 ) ;
2002-07-29 15:19:18 +00:00
do
{
_totale_commessa_dare = _totale_commessa_avere = ZERO ;
print ( ) ;
}
while ( need_to_repeat_print ( ) ) ;
}
2002-05-08 16:25:49 +00:00
}
}
else
{
_cdc . cut ( 0 ) ;
2002-07-02 16:21:23 +00:00
_fsc . cut ( 0 ) ;
do
print ( ) ;
while ( need_to_repeat_print ( ) ) ;
2002-05-08 16:25:49 +00:00
}
2002-07-02 16:21:23 +00:00
_msk - > reset ( - 8 ) ;
2002-05-31 10:35:40 +00:00
1997-01-09 11:49:36 +00:00
}
2002-05-08 16:25:49 +00:00
return FALSE ;
1997-01-09 11:49:36 +00:00
}
void TMastrini_application : : data_fine_esercizio ( int anno )
{
TEsercizi_contabili esc ;
_data_inizioese = esc [ anno ] . inizio ( ) ;
1997-04-11 12:55:31 +00:00
_data_finese = esc [ anno ] . fine ( ) ;
1997-01-09 11:49:36 +00:00
}
void TMastrini_application : : preprocess_header ( )
{
if ( _nummast = = 1 )
{
2003-10-09 07:29:57 +00:00
if ( _selez_mastrini = = 3 ) // Tutti
1997-01-09 11:49:36 +00:00
crea_intestazione ( ) ;
else
2003-10-09 07:29:57 +00:00
if ( _selez_mastrini = = 2 ) // Con saldo non nullo
1997-01-09 11:49:36 +00:00
{
2003-10-09 07:29:57 +00:00
if ( ( ! _totale_saldo . is_zero ( ) ) & & ( _puoi_stampare ) )
1997-01-09 11:49:36 +00:00
crea_intestazione ( ) ;
}
2003-10-09 07:29:57 +00:00
else if ( _selez_mastrini = = 1 )
1997-01-09 11:49:36 +00:00
if ( _puoi_stampare )
crea_intestazione ( ) ;
}
else
if ( _nummast = = 3 & & ! _gia_stampata_intestazione )
{
2003-10-09 07:29:57 +00:00
if ( _selez_mastrini = = 3 ) // Tutti
1997-01-09 11:49:36 +00:00
crea_intestazione ( ) ;
else
2003-10-09 07:29:57 +00:00
if ( _selez_mastrini = = 2 ) // Con saldo non nullo
1997-01-09 11:49:36 +00:00
{
2003-10-09 07:29:57 +00:00
if ( ( ! _totale_saldo . is_zero ( ) ) & & ( _puoi_stampare ) )
1997-01-09 11:49:36 +00:00
crea_intestazione ( ) ;
}
2003-10-09 07:29:57 +00:00
else if ( _selez_mastrini = = 1 ) // Movimentati nel periodo
1997-01-09 11:49:36 +00:00
if ( _puoi_stampare )
crea_intestazione ( ) ;
}
}
void TMastrini_application : : preprocess_footer ( )
{
reset_footer ( ) ;
if ( _nummast ! = 1 & & _nummast ! = 3 )
return ;
if ( _devi_stampare_footer )
{
real dep_dare , dep_avere ;
if ( _stampa_footer_si )
{
_riporto_footer_dare = _progredare + _riporto_parziale_dare ;
_riporto_footer_avere = _progreavere + _riporto_parziale_avere ;
real imp_d , imp_a ;
imp_d = _sezione = = " D " ? _importo : ZERO ;
imp_a = _sezione = = " A " ? _importo : ZERO ;
dep_dare = _stampato ? _riporto_footer_dare : _riporto_footer_dare - imp_d ;
dep_avere = _stampato ? _riporto_footer_avere : _riporto_footer_avere - imp_a ;
_stampa_footer_si = FALSE ;
}
else
{
_riporto_footer_dare + = _riporto_parziale_dare ;
_riporto_footer_avere + = _riporto_parziale_avere ;
real imp_d , imp_a ;
imp_d = _sezione = = " D " ? _importo : ZERO ;
imp_a = _sezione = = " A " ? _importo : ZERO ;
dep_dare = _stampato ? _riporto_footer_dare : _riporto_footer_dare - imp_d ;
dep_avere = _stampato ? _riporto_footer_avere : _riporto_footer_avere - imp_a ;
}
if ( _nummast ! = 3 | | dep_dare ! = ZERO | | dep_avere ! = ZERO )
{
1999-04-06 15:34:39 +00:00
TString dare ( real2str ( dep_dare ) ) ;
TString avere ( real2str ( dep_avere ) ) ;
1997-01-09 11:49:36 +00:00
if ( _numcarat = = 1 )
{
2003-03-14 15:13:36 +00:00
set_footer ( 2 , FR ( " @32gA RIPORTO@83g%s " ) , ( const char * ) dare ) ;
1997-10-20 14:23:01 +00:00
set_footer ( 2 , " @100g%s " , ( const char * ) avere ) ;
1997-01-09 11:49:36 +00:00
}
else
if ( _numcarat = = 2 )
{
2003-03-14 15:13:36 +00:00
set_footer ( 2 , FR ( " @32gA RIPORTO@100g%s " ) , ( const char * ) dare ) ;
1997-01-09 11:49:36 +00:00
set_footer ( 2 , " @117g%s " , ( const char * ) avere ) ;
}
}
}
}
void TMastrini_application : : conto ( int gruppo , int conto , bool no_contropartita )
{
2003-03-14 15:13:36 +00:00
TString16 key ;
key . format ( " %d|%d| " , gruppo , conto ) ;
const TRectype & pconti = cache ( ) . get ( LF_PCON , key ) ;
2003-05-05 14:32:23 +00:00
1997-01-09 11:49:36 +00:00
if ( no_contropartita )
{
_indbil = pconti . get_int ( PCN_INDBIL ) ;
_tmcf = pconti . get_char ( PCN_TMCF ) ;
}
else
_tipo_contr = pconti . get_char ( PCN_TMCF ) ;
}
void TMastrini_application : : ricerca_dati_ditta ( )
{
long app ;
2003-03-14 15:13:36 +00:00
const TRectype & nditte = cache ( ) . get ( LF_NDITTE , _codice_ditta ) ;
app = nditte . get_long ( NDT_CODDITTA ) ;
_ragsoc = nditte . get ( NDT_RAGSOC ) ;
1997-01-09 11:49:36 +00:00
2003-03-14 15:13:36 +00:00
TString16 key ;
key . format ( " %ld|1 " , app ) ;
const TRectype & unloc = cache ( ) . get ( LF_UNLOC , key ) ;
_indulc = unloc . get ( ULC_INDULC ) ;
_civulc = unloc . get ( ULC_CIVULC ) ;
1997-01-09 11:49:36 +00:00
int len = _indulc . len ( ) ;
if ( len < = 31 )
{
if ( len < = 26 )
_indulc < < " " < < _civulc ;
else
_indulc < < " " < < _civulc . mid ( 0 , 5 ) ;
}
else
{
_indulc = _indulc . mid ( 0 , 31 ) ;
_indulc < < " " < < _civulc . mid ( 0 , 5 ) ;
}
2003-03-14 15:13:36 +00:00
_capulc = unloc . get ( ULC_CAPULC ) ;
_comulc = unloc . get ( ULC_COMULC ) ;
1997-01-09 11:49:36 +00:00
2003-03-14 15:13:36 +00:00
key . format ( " |%s " , ( const char * ) _comulc ) ;
const TRectype & comuni = cache ( ) . get ( LF_COMUNI , key ) ;
_com = comuni . get ( COM_DENCOM ) ;
_prov = comuni . get ( COM_PROVCOM ) ;
1997-01-09 11:49:36 +00:00
}
// Crea l'intestazione per la stampa a 132 e a 198 caratteri
void TMastrini_application : : crea_intestazione ( )
{
2001-07-24 13:28:55 +00:00
TString sep ( 133 ) , sep1 ( 198 ) ;
1997-01-09 11:49:36 +00:00
reset_header ( ) ;
int np = get_page_number ( ) ;
if ( _cambia_mastrino )
{
if ( _nummast ! = 3 )
_pagina = 1 ;
_cambia_mastrino = FALSE ;
}
if ( _numcarat = = 1 )
{
if ( _nummast = = 3 )
{
if ( _pagina ! = np )
sep < < " Pag. @# " ;
}
else
sep < < " Pag. " < < _pagina ;
sep . right_just ( 132 ) ;
set_header ( 1 , ( const char * ) sep ) ;
}
else if ( _numcarat = = 2 )
{
if ( _nummast = = 3 )
{
if ( _pagina ! = np )
sep1 < < " Pagina @# " ;
}
else
sep1 < < " Pagina " < < _pagina ;
sep1 . right_just ( 198 ) ;
set_header ( 1 , ( const char * ) sep1 ) ;
}
if ( _nummast ! = 3 )
_pagina + + ;
if ( _nummast ! = 3 | | _pagina ! = np )
{
2003-03-14 15:13:36 +00:00
set_header ( 1 , " @0g%s@6g%5ld " , TR ( " DITTA " ) , _codice_ditta ) ;
1997-01-09 11:49:36 +00:00
set_header ( 1 , " @12g%-.45s " , ( const char * ) _ragsoc ) ;
set_header ( 1 , " @59g%s " , ( const char * ) _indulc ) ;
//set_header (1, "@86g%-.9s", (const char*) _civulc);
1997-11-11 11:42:40 +00:00
set_header ( 1 , " @97g%-.5s " , ( const char * ) _capulc ) ;
1997-01-09 11:49:36 +00:00
set_header ( 1 , " @103g%-.18s " , ( const char * ) _com ) ;
set_header ( 1 , " @122g%-.3s " , ( const char * ) _prov ) ;
2002-05-08 16:25:49 +00:00
}
2002-07-02 16:21:23 +00:00
2002-05-08 16:25:49 +00:00
if ( _cdc . not_empty ( ) )
2002-07-02 16:21:23 +00:00
{
const TString & desc_cdc = cache ( ) . get ( " CMS " , _cdc , " S0 " ) ;
if ( _fsc . not_empty ( ) )
{
const TString & desc_fsc = cache ( ) . get ( " FSC " , _fsc , " S0 " ) ;
2003-03-14 15:13:36 +00:00
set_header ( 2 , FR ( " @bCommessa %s %s - Fase %s %s " ) ,
2002-07-02 16:21:23 +00:00
( const char * ) _cdc , ( const char * ) desc_cdc ,
( const char * ) _fsc , ( const char * ) desc_fsc ) ;
}
else
2003-03-14 15:13:36 +00:00
set_header ( 2 , FR ( " @bCommessa %s %s " ) , ( const char * ) _cdc , ( const char * ) desc_cdc ) ;
1997-01-09 11:49:36 +00:00
}
2002-07-02 16:21:23 +00:00
1997-01-09 11:49:36 +00:00
if ( _nummast = = 3 )
2003-03-14 15:13:36 +00:00
set_header ( 3 , " @0g%s@12g@b%3d %3d %6ld " , TR ( " Sottoconto " ) , _gruppo , _conto , _sottoc ) ;
1997-01-09 11:49:36 +00:00
else
2003-03-14 15:13:36 +00:00
set_header ( 3 , " @0g%s@12g%3d %3d %6ld " , TR ( " Sottoconto " ) , _gruppo , _conto , _sottoc ) ;
2002-05-08 16:25:49 +00:00
switch ( _tmcf )
{
case ' C ' : _tipo_mask = 1 ; break ;
case ' F ' : _tipo_mask = 2 ; break ;
default : _tipo_mask = 3 ; break ;
}
1997-01-09 11:49:36 +00:00
switch ( _tipo_mask )
{
case 1 : ricerca_clifo ( ) ;
break ;
case 2 : ricerca_clifo ( ) ;
break ;
case 3 : ricerca_gruppo ( ) ;
break ;
default : break ;
}
if ( _numcarat = = 1 )
{
2002-02-26 16:20:19 +00:00
sep . fill ( ' _ ' ) ; //Stampa 132 - (sep(132))
1997-01-09 11:49:36 +00:00
set_header ( 6 , ( const char * ) sep ) ;
2001-07-24 13:28:55 +00:00
set_header ( 7 , " %s@19g%s@117g%s@132g%s " ,
2003-03-14 15:13:36 +00:00
TR ( " Operazione " ) , TR ( " Documento " ) , TR ( " Contro " ) , TR ( " A " ) ) ;
1997-01-09 11:49:36 +00:00
if ( _stampa_mov_prov )
2000-10-03 13:45:12 +00:00
set_header ( 7 , " @130gM " ) ;
2003-03-14 15:13:36 +00:00
set_header ( 8 , TR ( " Data " ) ) ;
1997-01-09 11:49:36 +00:00
if ( _stampanum < 3 )
2003-03-14 15:13:36 +00:00
set_header ( 8 , " @11g%s " , TR ( " Numero " ) ) ;
2001-07-24 13:28:55 +00:00
set_header ( 8 , " @19g%s@30g%s@38g%s@61g%s@95g%s@111g%s@117g%s@127g%s@132g%s " ,
2003-03-14 15:13:36 +00:00
TR ( " Data " ) , TR ( " Numero " ) , TR ( " Cod.Causale " ) , TR ( " Descrizione " ) ,
TR ( " Dare " ) , TR ( " Avere " ) , TR ( " Partita " ) , TR ( " Prot. " ) , TR ( " C " ) ) ;
1997-01-09 11:49:36 +00:00
if ( _stampa_mov_prov )
2003-03-14 15:13:36 +00:00
set_header ( 8 , " @130g%s " , TR ( " P " ) ) ;
2002-02-26 16:20:19 +00:00
sep . fill ( ' _ ' ) ;
1997-01-09 11:49:36 +00:00
set_header ( 9 , ( const char * ) sep ) ;
}
2003-10-09 07:29:57 +00:00
else
1997-10-20 14:23:01 +00:00
{
2002-02-26 16:20:19 +00:00
sep1 . fill ( ' _ ' ) ; //Stampa 198 - (sep1(198))
1997-10-20 14:23:01 +00:00
set_header ( 6 , " @0g%s " , ( const char * ) sep1 ) ;
2003-10-09 07:29:57 +00:00
if ( _stampa_saldo_des = = 3 )
2002-02-26 16:20:19 +00:00
{
2002-07-02 16:21:23 +00:00
set_header ( 7 , " %s@23g%s@183g%s@190g%s@197g%s " ,
2003-03-14 15:13:36 +00:00
TR ( " Operazione " ) , TR ( " Documento " ) ,
TR ( " Reg " ) , TR ( " Numero " ) , TR ( " A " ) ) ;
2002-02-26 16:20:19 +00:00
}
else
{
2002-07-02 16:21:23 +00:00
set_header ( 7 , " %s@23g%s@169g%s@183g%s@190g%s@197g%s " ,
2003-03-14 15:13:36 +00:00
TR ( " Operazione " ) , TR ( " Documento " ) , TR ( " Contro " ) ,
TR ( " Reg " ) , TR ( " Numero " ) , TR ( " A " ) ) ;
2002-02-26 16:20:19 +00:00
}
1997-10-20 14:23:01 +00:00
if ( _stampa_mov_prov )
2003-03-14 15:13:36 +00:00
set_header ( 7 , " @195g%s " , TR ( " M " ) ) ;
set_header ( 8 , TR ( " Data " ) ) ;
1997-10-20 14:23:01 +00:00
if ( _stampanum < 3 )
2003-03-14 15:13:36 +00:00
set_header ( 8 , " @11g%s " , TR ( " Numero " ) ) ;
2002-02-26 16:20:19 +00:00
2003-10-09 07:29:57 +00:00
switch ( _stampa_saldo_des )
2002-02-26 16:20:19 +00:00
{
2003-10-09 07:29:57 +00:00
case 1 :
2002-07-02 16:21:23 +00:00
set_header ( 8 , " @23g%s@34g%s@42g%s@70g%s@112g%s@127g%s@135g%s@152g%s@169g%s@183g%s@189g%s@197g%s " ,
2003-03-14 15:13:36 +00:00
TR ( " Data " ) , TR ( " Numero " ) , TR ( " Cod.Causale " ) , TR ( " Descrizione " ) , TR ( " Dare " ) , TR ( " Avere " ) ,
TR ( " Saldo progre. " ) , TR ( " Saldo movim. " ) , TR ( " Partita " ) , TR ( " Iva " ) , TR ( " Protoc. " ) , TR ( " C " ) ) ;
2003-10-09 07:29:57 +00:00
break ;
case 2 :
set_header ( 8 , " @23g%s@34g%s@42g%s@70g%s@112g%s@127g%s@135g%s@152g%s@169g%s@183g%s@189g%s@197g%s " ,
TR ( " Data " ) , TR ( " Numero " ) , TR ( " Cod.Causale " ) , TR ( " Descrizione " ) , TR ( " Dare " ) , TR ( " Avere " ) ,
TR ( " Saldo scalare " ) , TR ( " Saldo movim. " ) , TR ( " Partita " ) , TR ( " Iva " ) , TR ( " Protoc. " ) , TR ( " C " ) ) ;
break ;
case 3 :
set_header ( 8 , " @23g%s@34g%s@42g%s@70g%s@112g%s@127g%s@135g%s@183g%s@189g%s@197g%s " ,
TR ( " Data " ) , TR ( " Numero " ) , TR ( " Cod.Causale " ) , TR ( " Descrizione " ) , TR ( " Dare " ) , TR ( " Avere " ) ,
TR ( " Contropartita " ) , TR ( " Iva " ) , TR ( " Protoc. " ) , TR ( " C " ) ) ;
break ;
default :
break ;
2002-02-26 16:20:19 +00:00
}
1999-04-06 15:34:39 +00:00
1997-10-20 14:23:01 +00:00
if ( _stampa_mov_prov )
2003-03-14 15:13:36 +00:00
set_header ( 8 , " @195g%s " , TR ( " P " ) ) ;
2002-02-26 16:20:19 +00:00
sep1 . fill ( ' _ ' ) ;
1997-10-20 14:23:01 +00:00
set_header ( 9 , " @0g%s " , ( const char * ) sep1 ) ;
}
1997-01-09 11:49:36 +00:00
calcola_progressivi ( ) ;
_saldo_progressivi + = _saldo_progre_prec ;
if ( _stampa_progressivi_si )
{
if ( _numcarat = = 1 )
{
2003-03-14 15:13:36 +00:00
set_header ( 10 , " @42g%s@66g%s " , TR ( " PROGRESSIVI PRECEDENTI " ) , real2str ( _saldo_progre_prec ) ) ;
1999-04-06 15:34:39 +00:00
set_header ( 10 , " @83g%s " , real2str ( _progredare ) ) ;
set_header ( 10 , " @100g%s " , real2str ( _progreavere ) ) ;
1997-01-09 11:49:36 +00:00
}
2003-10-09 07:29:57 +00:00
else
1997-01-09 11:49:36 +00:00
{
2003-03-14 15:13:36 +00:00
set_header ( 10 , " @70g%s@100g%s " , TR ( " PROGRESSIVI PRECEDENTI " ) , real2str ( _progredare ) ) ;
1999-04-06 15:34:39 +00:00
set_header ( 10 , " @117g%s " , real2str ( _progreavere ) ) ;
2003-10-09 07:29:57 +00:00
if ( _stampa_saldo_des < 3 )
2002-02-26 16:20:19 +00:00
set_header ( 10 , " @135g%s " , real2str ( _saldo_progre_prec ) ) ;
1997-01-09 11:49:36 +00:00
}
_riporto_dare = _progredare ;
_riporto_avere = _progreavere ;
_stampa_progressivi_si = FALSE ;
}
else
{
_riporto_dare + = _riporto_parziale_dare ;
_riporto_avere + = _riporto_parziale_avere ;
real dep_dare , dep_avere , imp_d , imp_a ;
imp_d = _sezione = = " D " ? _importo : ZERO ;
imp_a = _sezione = = " A " ? _importo : ZERO ;
dep_dare = _stampato ? _riporto_dare : _riporto_dare - imp_d ;
dep_avere = _stampato ? _riporto_avere : _riporto_avere - imp_a ;
if ( _nummast ! = 3 | | dep_dare ! = ZERO | | dep_avere ! = 0 )
{
if ( _numcarat = = 1 )
{
2003-03-14 15:13:36 +00:00
set_header ( 10 , " @32g%s@83g%s " , TR ( " A RIPORTO " ) , real2str ( dep_dare ) ) ;
1999-04-06 15:34:39 +00:00
set_header ( 10 , " @100g%s " , real2str ( dep_avere ) ) ;
1997-01-09 11:49:36 +00:00
}
2002-07-02 16:21:23 +00:00
else
1997-01-09 11:49:36 +00:00
{
2003-03-14 15:13:36 +00:00
set_header ( 10 , " @32g%s@100g%s " , TR ( " A RIPORTO " ) , real2str ( dep_dare ) ) ;
1999-04-06 15:34:39 +00:00
set_header ( 10 , " @117g%s " , real2str ( dep_avere ) ) ;
1997-01-09 11:49:36 +00:00
}
}
_riporto_parziale_dare = ZERO ;
_riporto_parziale_avere = ZERO ;
}
2002-07-02 16:21:23 +00:00
1997-01-09 11:49:36 +00:00
if ( _numcarat = = 1 )
{
sep = " " ;
2002-07-02 16:21:23 +00:00
set_header ( 11 , " @0g%s " , ( const char * ) sep ) ;
1997-01-09 11:49:36 +00:00
}
2002-07-02 16:21:23 +00:00
else
{
sep1 = " " ;
set_header ( 11 , " @0g%s " , ( const char * ) sep1 ) ;
}
1997-10-22 12:24:43 +00:00
if ( _pagina ! = np & & _nummast = = 3 )
1997-01-09 11:49:36 +00:00
_pagina = np ;
}
int TMastrini_application : : crea_intestazione ( int start_riga )
{
TString sep ( 132 ) , sep1 ( 198 ) ;
int r = start_riga + 2 ;
sep = " " ;
reset_header ( ) ;
int np = get_page_number ( ) ;
_conta_mastrini + + ;
if ( _nummast = = 3 )
_gia_stampata_intestazione = TRUE ;
if ( _nummast = = 2 )
if ( _cambia_mastrino )
{
_numero_pag = 1 ;
_cambia_mastrino = FALSE ;
}
if ( _nummast = = 3 )
{
if ( _pagina ! = np )
{
if ( _numcarat = = 1 )
{
2003-03-14 15:13:36 +00:00
sep < < FR ( " Pag. @# " ) ;
1997-01-09 11:49:36 +00:00
set_row ( r , " @126g%s " , ( const char * ) sep ) ;
}
else if ( _numcarat = = 2 )
{
2003-03-14 15:13:36 +00:00
sep < < FR ( " Pagina @# " ) ;
1997-01-09 11:49:36 +00:00
set_row ( r , " @190g%s " , ( const char * ) sep ) ;
}
}
}
else
{
if ( _numcarat = = 1 )
2003-03-14 15:13:36 +00:00
set_row ( r , " @126g%s %2d " , TR ( " Pag. " ) , _numero_pag + + ) ;
1997-01-09 11:49:36 +00:00
else if ( _numcarat = = 2 )
2003-03-14 15:13:36 +00:00
set_row ( r , " @190g%s %2d " , TR ( " Pagina " ) , _numero_pag + + ) ;
1997-01-09 11:49:36 +00:00
}
if ( _nummast ! = 3 | | _pagina ! = np )
{
2003-03-14 15:13:36 +00:00
set_row ( r , " @0g%s@6g%5ld " , TR ( " DITTA " ) , _codice_ditta ) ;
1997-01-09 11:49:36 +00:00
set_row ( r , " @12g%-45s " , ( const char * ) _ragsoc ) ;
set_row ( r , " @59g%s " , ( const char * ) _indulc ) ;
//set_row (r, "@86g%-9s", (const char*) _civulc);
1997-11-11 11:42:40 +00:00
set_row ( r , " @97g%-5s " , ( const char * ) _capulc ) ;
1997-01-09 11:49:36 +00:00
set_row ( r , " @103g%-18s " , ( const char * ) _com ) ;
set_row ( r , " @122g%-3s " , ( const char * ) _prov ) ;
r + = 2 ;
}
if ( _nummast = = 3 )
2003-03-14 15:13:36 +00:00
set_row ( r , " @0g%s@12g@b%3d %3d %6ld " , TR ( " Sottoconto " ) , _gruppo , _conto , _sottoc ) ;
1997-01-09 11:49:36 +00:00
else
2003-03-14 15:13:36 +00:00
set_row ( r , " @0g%s@12g%3d %3d %6ld " , TR ( " Sottoconto " ) , _gruppo , _conto , _sottoc ) ;
1997-01-09 11:49:36 +00:00
if ( _tmcf = = ' C ' )
_tipo_mask = 1 ;
1997-10-20 14:23:01 +00:00
else if ( _tmcf = = ' F ' )
_tipo_mask = 2 ;
else if ( _tmcf = = ' \0 ' )
_tipo_mask = 3 ;
1997-01-09 11:49:36 +00:00
switch ( _tipo_mask )
{
case 1 : r = ricerca_clifo ( r ) ;
break ;
case 2 : r = ricerca_clifo ( r ) ;
break ;
case 3 : r = ricerca_gruppo ( r ) ;
break ;
default : break ;
}
r + + ;
if ( _numcarat = = 1 )
{
2002-02-26 16:20:19 +00:00
sep . fill ( ' _ ' ) ; //Stampa 132 - (sep(132))
2002-07-02 16:21:23 +00:00
set_row ( r + + , " @0g%s " , ( const char * ) sep ) ;
2003-03-14 15:13:36 +00:00
set_row ( r + + , " %s@19g%s@117g%s@131g%s " , TR ( " Operazione " ) , TR ( " Documento " ) , TR ( " Contro " ) , TR ( " A " ) ) ;
1997-01-09 11:49:36 +00:00
if ( _stampa_mov_prov )
2003-03-14 15:13:36 +00:00
set_header ( r - 1 , " @130g%s " , TR ( " M " ) ) ;
set_row ( r , TR ( " Data " ) ) ;
1997-01-09 11:49:36 +00:00
if ( _stampanum < 3 )
2003-03-14 15:13:36 +00:00
set_row ( r , " @11g%s " , TR ( " Numero " ) ) ;
set_row ( r + + , FR ( " @19gData@30gNumero@38gCod.Causale@61gDescrizione@95gDare@111gAvere@117gPartita@131gC " ) ) ;
1997-01-09 11:49:36 +00:00
if ( _stampa_mov_prov )
2000-10-03 13:45:12 +00:00
set_header ( r - 1 , " @130gP " ) ;
2002-02-26 16:20:19 +00:00
sep . fill ( ' _ ' ) ;
2002-07-02 16:21:23 +00:00
set_row ( r + + , " @0g%s " , ( const char * ) sep ) ;
1997-01-09 11:49:36 +00:00
}
1997-10-20 14:23:01 +00:00
else
{
2002-02-26 16:20:19 +00:00
sep1 . fill ( ' _ ' ) ; //Stampa 198 - (sep1(198))
1997-10-20 14:23:01 +00:00
set_row ( r + + , " @0g%s " , ( const char * ) sep1 ) ;
2003-10-09 07:29:57 +00:00
if ( _stampa_saldo_des = = 2 )
2003-03-14 15:13:36 +00:00
set_row ( r + + , FR ( " Operazione@23gDocumento@183gReg@190gNumero@197gA " ) ) ;
2002-02-26 16:20:19 +00:00
else
2003-03-14 15:13:36 +00:00
set_row ( r + + , FR ( " Operazione@23gDocumento@169gContro@183gReg@190gNumero@197gA " ) ) ;
1997-10-20 14:23:01 +00:00
if ( _stampa_mov_prov )
set_row ( r - 1 , " @195gM " ) ;
set_row ( r , " Data " ) ;
if ( _stampanum < 3 )
set_row ( r , " @11gnumero " ) ;
2003-03-14 15:13:36 +00:00
set_row ( r , FR ( " @23gData@34gNumero@42gCod.Causale@70gDescrizione@112gDare@127gAvere " ) ) ;
2003-10-09 07:29:57 +00:00
if ( _stampa_saldo_des = = 2 )
2003-03-14 15:13:36 +00:00
set_row ( r + + , FR ( " @135gContropartita@183gIva@189gProtoc.@197gC " ) ) ;
2002-02-26 16:20:19 +00:00
else
2003-03-14 15:13:36 +00:00
set_row ( r + + , FR ( " @135gSaldo progre.@152gSaldo movim.@169gPartita@183gIva@189gProtoc.@197gC " ) ) ;
1997-10-20 14:23:01 +00:00
if ( _stampa_mov_prov )
set_row ( r - 1 , " @195gP " ) ;
2002-02-26 16:20:19 +00:00
sep1 . fill ( ' _ ' ) ;
1997-10-20 14:23:01 +00:00
set_row ( r + + , " @0g%s " , ( const char * ) sep1 ) ;
}
_pagina = np ;
1997-01-09 11:49:36 +00:00
return r ;
}
int TMastrini_application : : stampa_progre_riporto ( int start_riga )
{
TString sep ( 132 ) , sep1 ( 198 ) ;
int r = start_riga ;
if ( _stampa_progressivi_si )
{
r = stampa_progressivi ( r ) ;
_riporto_dare = _progredare ;
_riporto_avere = _progreavere ;
_stampa_progressivi_si = FALSE ;
}
else
{
_riporto_dare + = _riporto_parziale_dare ;
_riporto_avere + = _riporto_parziale_avere ;
real dep_dare , dep_avere , imp_d , imp_a ;
imp_d = _sezione = = " D " ? _importo : ZERO ;
imp_a = _sezione = = " A " ? _importo : ZERO ;
dep_dare = _stampato ? _riporto_dare : _riporto_dare - imp_d ;
dep_avere = _stampato ? _riporto_avere : _riporto_avere - imp_a ;
if ( _nummast ! = 3 | | dep_dare ! = ZERO | | dep_avere ! = ZERO )
{
if ( _numcarat = = 1 )
{
2003-03-14 15:13:36 +00:00
set_row ( r , " @32g%s@83g%r " , TR ( " A RIPORTO " ) , & dep_dare ) ;
1997-10-20 14:23:01 +00:00
set_row ( r + + , " @100g%r " , & dep_avere ) ;
1997-01-09 11:49:36 +00:00
}
if ( _numcarat = = 2 )
{
2003-03-14 15:13:36 +00:00
set_row ( r , " @32g%s@100g%r " , TR ( " A RIPORTO " ) , & dep_dare ) ;
1997-10-20 14:23:01 +00:00
set_row ( r + + , " @117g%r " , & dep_avere ) ;
1997-01-09 11:49:36 +00:00
}
}
_riporto_parziale_dare = ZERO ;
_riporto_parziale_avere = ZERO ;
}
if ( _numcarat = = 1 )
{
sep = " " ;
2002-07-02 16:21:23 +00:00
set_row ( r + + , " @0g%s " , ( const char * ) sep ) ;
1997-01-09 11:49:36 +00:00
}
1997-10-20 14:23:01 +00:00
else
{
sep1 = " " ;
2002-07-02 16:21:23 +00:00
set_row ( r + + , " @0g%s " , ( const char * ) sep1 ) ;
1997-10-20 14:23:01 +00:00
}
1997-01-09 11:49:36 +00:00
return r ;
}
2000-10-03 13:45:12 +00:00
void TMastrini_application : : calcola_progressivi_al ( const TDate & data_fin )
1997-01-09 11:49:36 +00:00
{
2002-05-08 16:25:49 +00:00
TLocalisamfile & rmov_file = current_cursor ( ) - > file ( LF_RMOV ) ;
const TRecnotype record = rmov_file . recno ( ) ;
1997-01-09 11:49:36 +00:00
_totale_prima_dare = ZERO ;
_totale_prima_avere = ZERO ;
2002-05-08 16:25:49 +00:00
TRelation rel ( LF_RMOV ) ;
rel . add ( LF_MOV , " NUMREG==NUMREG " ) ;
TRectype & rmov = rel . curr ( ) ;
const TRectype & mov = rel . curr ( LF_MOV ) ;
TString filter ;
if ( _cdc . not_empty ( ) )
2002-07-02 16:21:23 +00:00
{
2002-05-08 16:25:49 +00:00
filter < < RMV_CODCMS < < " == \" " < < _cdc < < " \" " ;
2002-07-29 15:19:18 +00:00
if ( _fsc . not_empty ( ) )
filter < < " &&( " < < RMV_FASCMS < < " == \" " < < _fsc < < " \" ) " ;
}
1997-01-09 11:49:36 +00:00
rmov . zero ( ) ;
rmov . put ( RMV_GRUPPO , _gruppo ) ;
rmov . put ( RMV_CONTO , _conto ) ;
rmov . put ( RMV_SOTTOCONTO , _sottoc ) ;
2002-05-08 16:25:49 +00:00
TCursor cur ( & rel , filter , 2 , & rmov , & rmov ) ;
const long items = cur . items ( ) ;
cur . freeze ( ) ;
for ( cur = 0L ; cur . pos ( ) < items ; + + cur )
1997-01-09 11:49:36 +00:00
{
2002-05-08 16:25:49 +00:00
const int annoes = rmov . get_int ( RMV_ANNOES ) ;
TDate datareg = rmov . get ( RMV_DATAREG ) ;
const char sezione = rmov . get_char ( RMV_SEZIONE ) ;
const real importo = rmov . get ( RMV_IMPORTO ) ;
1997-01-09 11:49:36 +00:00
long numreg = rmov . get_long ( RMV_NUMREG ) ;
2003-03-14 15:13:36 +00:00
const TRectype & mov = cache ( ) . get ( LF_MOV , numreg ) ;
const TDate datacomp = ( mov . get ( MOV_DATACOMP ) ) ;
TDate data ;
const TString16 provvis ( mov . get ( MOV_PROVVIS ) ) ;
2001-05-01 08:17:07 +00:00
if ( _stampa_mov_prov | | ( ! _stampa_mov_prov & & provvis . blank ( ) ) )
1997-01-09 11:49:36 +00:00
{
1997-04-11 12:55:31 +00:00
if ( _annomsk = = 0 )
{
datareg = rmov . get_date ( RMV_DATAREG ) ;
data = _inizioes ;
}
else
1997-01-09 11:49:36 +00:00
{
datareg = datacomp ;
data = _data_inizioese ;
}
2002-05-08 16:25:49 +00:00
const int gruppo = rmov . get_int ( RMV_GRUPPO ) ;
const int conto = rmov . get_int ( RMV_CONTO ) ;
const long sottoc = rmov . get_long ( RMV_SOTTOCONTO ) ;
1997-04-11 12:55:31 +00:00
if ( ( gruppo ! = _gruppo ) | | ( conto ! = _conto ) | | ( sottoc ! = _sottoc ) )
break ;
2000-10-03 13:45:12 +00:00
else
{
//Legge movimenti con data > inizio esercizio e < data_fin
if ( ( ( annoes = = _annomsk ) | | ( _annomsk = = 0 ) ) & & ( datareg > = data ) & & ( datareg < = data_fin ) )
if ( sezione = = ' D ' )
_totale_prima_dare + = importo ;
else
_totale_prima_avere + = importo ;
}
1997-01-09 11:49:36 +00:00
} // if ((_stampa_mov_prov) || ((!_stampa_mov_prov) && (provvis.trim().empty())))
}
2002-05-08 16:25:49 +00:00
// Riposiziona rmov
rmov_file . readat ( record ) ;
1997-01-09 11:49:36 +00:00
}
2000-10-03 13:45:12 +00:00
void TMastrini_application : : calcola_progressivi ( bool finali )
1997-01-09 11:49:36 +00:00
{
/* fv 20/3/96: aggiustato per nuova struttura saldi - modificata ricerca
* record scaricati e assegnazione dare / avere relativo - Controllare che
* non occorra considerare il saldo di chiusura ( SALDOFIN ) aggiunto al
* record */
1998-03-30 14:18:57 +00:00
TLocalisamfile saldi ( LF_SALDI ) ;
1997-01-09 11:49:36 +00:00
real progdare_attuale , progavere_attuale , progdare_prec , progavere_prec ;
2001-05-01 08:17:07 +00:00
real saldo , progredare_eseprec , progreavere_eseprec , saldoini_attuale , saldofine_attuale ;
1997-01-09 11:49:36 +00:00
char salini , salini_attuale , salfine_attuale ;
2001-05-01 08:17:07 +00:00
saldo = ZERO ; // Saldo iniziale (Guy: Ovvio no?)
2002-05-08 16:25:49 +00:00
if ( _cdc . empty ( ) )
{
// Ricerca sull'archivio saldi dei record con gruppo,conto,sottoconto
// uguali a quelli di rmov per il calcolo dei progressivi precedenti
1997-01-09 11:49:36 +00:00
2002-05-08 16:25:49 +00:00
saldi . setkey ( 2 ) ;
saldi . zero ( ) ;
saldi . put ( SLD_GRUPPO , _gruppo ) ;
saldi . put ( SLD_CONTO , _conto ) ;
saldi . put ( SLD_SOTTOCONTO , _sottoc ) ;
const TRectype record ( saldi . curr ( ) ) ;
for ( saldi . read ( _isgteq ) ; saldi . good ( ) & & saldi . curr ( ) = = record ; saldi . next ( ) )
{
if ( ! saldi . get_bool ( SLD_FLSCA ) )
1997-01-09 11:49:36 +00:00
{
2002-05-08 16:25:49 +00:00
const int annoes_saldi = saldi . curr ( ) . get_int ( SLD_ANNOES ) ;
//Calcola i progressivi dell'esercizio attuale
if ( annoes_saldi = = _anno_corrente )
2001-05-01 08:17:07 +00:00
{
2002-05-08 16:25:49 +00:00
progdare_attuale = saldi . get_real ( SLD_PDARE ) ;
progavere_attuale = saldi . get_real ( SLD_PAVERE ) ;
if ( _stampa_mov_prov )
{
progdare_attuale + = saldi . get_real ( SLD_PDAREPRO ) ;
progavere_attuale + = saldi . get_real ( SLD_PAVEREPRO ) ;
}
saldo = saldi . get_real ( SLD_SALDO ) ;
salini = saldi . get ( SLD_FLAGSALINI ) [ 0 ] ;
_ultima_data_reg = saldi . get_date ( SLD_DATAULMOV ) ;
saldoini_attuale = saldi . get_real ( SLD_SALDO ) ;
salini_attuale = saldi . get_char ( SLD_FLAGSALINI ) ;
saldofine_attuale = saldi . get_real ( SLD_SALDOFIN ) ;
salfine_attuale = saldi . get_char ( SLD_FLAGSALFIN ) ;
}
} // if (!saldi.get_bool(SLD_FLSCA))
} // FOR
//Se il saldo dell'esercizio attuale non e' diverso da zero, allora il saldo
// finale dell'esercizio precedente devo calcolarmelo tenendo conto dell'indbil
if ( _annomsk ! = 0 )
{
if ( ( _indbil = = 1 ) | | ( _indbil = = 2 ) | | ( _indbil = = 5 ) )
{
const TRecnotype pos = saldi . recno ( ) ;
// W96SALDI del 18-07-96 saldofin_esprec usa il flag TRUE xche' deve
// considerare anche il saldo finale
saldo = _sld - > saldofin_esprec ( _anno_corrente , _gruppo , _conto , _sottoc , TRUE , _stampa_mov_prov ) ;
saldi . readat ( pos ) ;
if ( saldo > ZERO )
{
progredare_eseprec = saldo ;
progdare_prec = saldo ;
}
else if ( saldo < ZERO )
{
saldo = - saldo ;
progreavere_eseprec = saldo ;
progavere_prec = saldo ;
2001-05-01 08:17:07 +00:00
}
}
1997-01-09 11:49:36 +00:00
}
}
2000-10-03 13:45:12 +00:00
2001-05-01 08:17:07 +00:00
if ( finali )
2002-05-08 16:25:49 +00:00
{
2001-05-01 08:17:07 +00:00
calcola_progressivi_al ( _data_fine ) ;
2002-05-08 16:25:49 +00:00
}
2001-05-01 08:17:07 +00:00
else
{
TDate giorno_prima = _data_ini ; - - giorno_prima ; // CM500429
calcola_progressivi_al ( giorno_prima ) ;
}
1997-01-09 11:49:36 +00:00
//Calcolo dei progressivi precedenti: somma di tutti quei movimenti di rmov
//che hanno la data di registrazione inferiore alla data di inizio stampa,
//dei progressivi dell'anno esercizio precedente, e dei progressivi dei
//movimenti scaricati dell'esercizio attuale.
_progredare = progredare_eseprec + _totale_prima_dare ;
_progreavere = progreavere_eseprec + _totale_prima_avere ;
_saldo_progre_prec = _progredare - _progreavere ;
//Calcolo dei progressivi al <ultima data registrazione>
//Se sulla maschera e' stato selezionato il controllo competenza esercizio
//Sommo i progressivi dell'esercizio precedente e quelli dell'esercizio attuale
//altrimenti solo quelli dell'esercizio attuale
if ( _annomsk ! = 0 )
{
_totprogre_dare_al = progdare_attuale + progdare_prec ;
_totprogre_avere_al = progavere_attuale + progavere_prec ;
if ( salini_attuale = = ' D ' )
_totprogre_dare_al + = saldoini_attuale ;
2001-05-01 08:17:07 +00:00
else
_totprogre_avere_al + = saldoini_attuale ;
1997-01-09 11:49:36 +00:00
if ( salfine_attuale = = ' D ' )
_totprogre_dare_al + = saldofine_attuale ;
2001-05-01 08:17:07 +00:00
else
_totprogre_avere_al + = saldofine_attuale ;
1997-01-09 11:49:36 +00:00
}
else
{
_totprogre_dare_al = progdare_attuale ;
_totprogre_avere_al = progavere_attuale ;
if ( salini_attuale = = ' D ' )
_totprogre_dare_al + = saldoini_attuale ;
else if ( salini_attuale = = ' A ' )
_totprogre_avere_al + = saldoini_attuale ;
if ( salfine_attuale = = ' D ' )
_totprogre_dare_al + = saldofine_attuale ;
else if ( salfine_attuale = = ' A ' )
2001-05-01 08:17:07 +00:00
_totprogre_avere_al + = saldofine_attuale ;
1997-01-09 11:49:36 +00:00
}
}
int TMastrini_application : : stampa_progressivi ( int start_riga )
{
int r = start_riga ;
if ( _numcarat = = 1 )
1997-10-20 14:23:01 +00:00
{
2003-03-14 15:13:36 +00:00
set_row ( r , FR ( " @42gPROGRESSIVI PRECEDENTI@66g%r " ) , & _saldo_progre_prec ) ;
1997-10-20 14:23:01 +00:00
set_row ( r , " @83g%r " , & _progredare ) ;
set_row ( r + + , " @100g%r " , & _progreavere ) ;
}
else
{
2003-03-14 15:13:36 +00:00
set_row ( r , FR ( " @70gPROGRESSIVI PRECEDENTI@100g%r " ) , & _progredare ) ;
1997-10-20 14:23:01 +00:00
set_row ( r , " @117g%r " , & _progreavere ) ;
2003-10-09 07:29:57 +00:00
if ( _stampa_saldo_des < 3 )
2002-02-26 16:20:19 +00:00
set_row ( r + + , " @135g%r " , & _saldo_progre_prec ) ;
1997-10-20 14:23:01 +00:00
}
1997-01-09 11:49:36 +00:00
return r ;
}
// Se la ricerca selezionata nella maschera e' per clienti, oppure fornitori, // allora ricerco su CLIFO i relativi dati, e su PCON il relativo gruppo,conto,// sottoconto e IV direttiva CEE
void TMastrini_application : : ricerca_clifo ( )
{
TString ragsoc , paiv , cofi , indcf , capcf , ptel , tel , statocf , comcf , dencom , provcom , dep ;
TString16 dataini , datafine ;
TString descriz , descriz2 ;
int numrivd ;
indcf = " " ;
2003-03-14 15:13:36 +00:00
TString16 key ;
key . format ( " %c|%ld " , _tmcf , _sottoc ) ;
const TRectype & clifo = cache ( ) . get ( LF_CLIFO , key ) ;
1997-01-09 11:49:36 +00:00
TConto tc ( _gruppo , _conto , _sottoc , _tmcf ) ;
ragsoc = tc . descrizione ( ) ;
paiv = clifo . get ( CLI_PAIV ) ;
cofi = clifo . get ( CLI_COFI ) ;
indcf = clifo . get ( CLI_INDCF ) ;
indcf . trim ( ) ;
indcf < < " " < < clifo . get ( CLI_CIVCF ) ;
capcf = clifo . get ( CLI_CAPCF ) ;
ptel = clifo . get ( CLI_PTEL ) ;
tel = clifo . get ( CLI_TEL ) ;
statocf = clifo . get ( CLI_STATOCF ) ;
comcf = clifo . get ( CLI_COMCF ) ;
2003-03-14 15:13:36 +00:00
key . format ( " %s|%s " , ( const char * ) statocf , ( const char * ) comcf ) ;
const TRectype & comuni = cache ( ) . get ( LF_COMUNI , key ) ;
if ( ! comuni . empty ( ) )
1997-01-09 11:49:36 +00:00
{
2003-03-14 15:13:36 +00:00
dencom = comuni . get ( COM_DENCOM ) ;
provcom = comuni . get ( COM_PROVCOM ) ;
1997-01-09 11:49:36 +00:00
}
else
{
dencom = clifo . get ( CLI_LOCCF ) ;
provcom = " " ;
}
2003-03-14 15:13:36 +00:00
key . format ( " %d|%d| " , _gruppo , _conto ) ;
const TRectype & pconti = cache ( ) . get ( LF_PCON , key ) ;
1997-01-09 11:49:36 +00:00
_sezivd = pconti . get_char ( PCN_SEZIVD ) ;
_lettivd = pconti . get_char ( PCN_LETTIVD ) ;
numrivd = pconti . get_int ( PCN_NUMRIVD ) ;
_numrivd = itor ( numrivd ) ;
_numivd = pconti . get_int ( PCN_NUMIVD ) ;
descriz = descrizione_classe ( _sezivd , _lettivd , numrivd , _numivd ) ;
if ( _numivd ! = 0 ) //Ora devo stampare la descrizione del livello della
{ //classe immediatamente precedente a quello appena
if ( _numrivd ! = " " ) //stampato
descriz2 = descrizione_classe ( _sezivd , _lettivd , _numrivd_int , 0 ) ;
else
descriz2 = descrizione_classe ( _sezivd , _lettivd , 0 , 0 ) ;
}
else
if ( _numrivd ! = " " )
descriz2 = descrizione_classe ( _sezivd , _lettivd , 0 , 0 ) ;
else
descriz2 = " " ;
set_header ( 3 , " @27g%-.30s " , ( const char * ) descrizione_gruppo ( ) ) ;
set_header ( 3 , " @59g%-.30s " , ( const char * ) descrizione_conto ( ) ) ;
set_header ( 3 , " @91g%-.41s " , ( const char * ) ragsoc ) ;
if ( _nummast = = 3 )
2003-03-14 15:13:36 +00:00
set_header ( 4 , " @r%s@8g@b%c " , TR ( " Classe " ) , _lettivd ) ;
1997-01-09 11:49:36 +00:00
else
2003-03-14 15:13:36 +00:00
set_header ( 4 , " %s@8g%c " , TR ( " Classe " ) , _lettivd ) ;
1997-01-09 11:49:36 +00:00
set_header ( 4 , " @10g%-8s " , ( const char * ) _numrivd ) ;
if ( _numivd ! = 0 )
set_header ( 4 , " @19g%2d " , _numivd ) ;
if ( descriz2 ! = " " )
{
set_header ( 4 , " @23g%-50s " , ( const char * ) descriz2 ) ;
set_header ( 4 , " @80g%-50s " , ( const char * ) descriz ) ;
}
else
set_header ( 4 , " @23g%-50s " , ( const char * ) descriz ) ;
2002-05-08 16:25:49 +00:00
1997-01-09 11:49:36 +00:00
dataini = _data_ini . string ( ) ;
datafine = _data_fine . string ( ) ;
if ( _annomsk = = 0 )
{
if ( _nummast = = 3 )
{
2003-03-14 15:13:36 +00:00
set_header ( 5 , FR ( " @rPeriodo@10g@b%s " ) , ( const char * ) dataini ) ;
1997-01-09 11:49:36 +00:00
set_header ( 5 , " @22g@b%s@r " , ( const char * ) datafine ) ;
}
else
{
2003-03-14 15:13:36 +00:00
set_header ( 5 , FR ( " Periodo@10g%s " ) , ( const char * ) dataini ) ;
1997-01-09 11:49:36 +00:00
set_header ( 5 , " @22g%s " , ( const char * ) datafine ) ;
}
}
else
{
if ( _nummast = = 3 )
{
2003-03-14 15:13:36 +00:00
set_header ( 5 , FR ( " @rComp. da@9g@b%s " ) , ( const char * ) dataini ) ;
1997-01-09 11:49:36 +00:00
set_header ( 5 , " @20g@ra@22g@b%s@r " , ( const char * ) datafine ) ;
}
else
{
2003-03-14 15:13:36 +00:00
set_header ( 5 , FR ( " Comp. da@9g%s " ) , ( const char * ) dataini ) ;
1997-01-09 11:49:36 +00:00
set_header ( 5 , " @20ga@22g%s " , ( const char * ) datafine ) ;
}
}
2003-03-14 15:13:36 +00:00
set_header ( 5 , FR ( " @33gP.I.@37g%-11s " ) , ( const char * ) paiv ) ;
set_header ( 5 , FR ( " @49gCF@52g%-16s " ) , ( const char * ) cofi ) ;
1997-10-20 14:23:01 +00:00
set_header ( 5 , " @66g%-.25s " , ( const char * ) indcf ) ;
1997-01-09 11:49:36 +00:00
set_header ( 5 , " @95g%-5s " , ( const char * ) capcf ) ;
set_header ( 5 , " @101g%-.24s " , ( const char * ) dencom ) ;
set_header ( 5 , " @126g%-5s " , ( const char * ) provcom ) ;
if ( _numcarat = = 2 )
{
2002-02-26 16:20:19 +00:00
set_header ( 5 , " @135g%-4s " , ( const char * ) ptel ) ;
1997-01-09 11:49:36 +00:00
if ( tel ! = " " )
set_header ( 5 , " @138g/@139g%-10s " , ( const char * ) tel ) ;
}
}
int TMastrini_application : : ricerca_clifo ( int start )
{
TString ragsoc , paiv , cofi , indcf , capcf , ptel , tel , statocf , comcf , dencom , provcom , dep ;
TString16 dataini , datafine ;
TString descriz , descriz2 ;
int numrivd ;
int r = start ;
indcf = " " ;
2003-03-14 15:13:36 +00:00
TString16 key ;
key . format ( " %c|%ld " , _tmcf , _sottoc ) ;
const TRectype & clifo = cache ( ) . get ( LF_CLIFO , key ) ;
1997-01-09 11:49:36 +00:00
TConto tc ( _gruppo , _conto , _sottoc , _tmcf ) ;
ragsoc = tc . descrizione ( ) ;
paiv = clifo . get ( CLI_PAIV ) ;
cofi = clifo . get ( CLI_COFI ) ;
indcf = clifo . get ( CLI_INDCF ) ;
indcf . trim ( ) ;
indcf < < " " < < clifo . get ( CLI_CIVCF ) ;
capcf = clifo . get ( CLI_CAPCF ) ;
ptel = clifo . get ( CLI_PTEL ) ;
tel = clifo . get ( CLI_TEL ) ;
statocf = clifo . get ( CLI_STATOCF ) ;
comcf = clifo . get ( CLI_COMCF ) ;
2003-03-14 15:13:36 +00:00
key . format ( " %s|%s " , ( const char * ) statocf , ( const char * ) comcf ) ;
const TRectype & comuni = cache ( ) . get ( LF_COMUNI , key ) ;
if ( ! comuni . empty ( ) )
1997-01-09 11:49:36 +00:00
{
2003-03-14 15:13:36 +00:00
dencom = comuni . get ( COM_DENCOM ) ;
provcom = comuni . get ( COM_PROVCOM ) ;
1997-01-09 11:49:36 +00:00
}
else
{
dencom = clifo . get ( CLI_LOCCF ) ;
provcom = " " ;
}
2003-03-14 15:13:36 +00:00
key . format ( " %d|%d| " , _gruppo , _conto ) ;
const TRectype & pconti = cache ( ) . get ( LF_PCON , key ) ;
1997-01-09 11:49:36 +00:00
_sezivd = pconti . get_char ( PCN_SEZIVD ) ;
_lettivd = pconti . get_char ( PCN_LETTIVD ) ;
numrivd = pconti . get_int ( PCN_NUMRIVD ) ;
_numrivd = itor ( numrivd ) ;
_numivd = pconti . get_int ( PCN_NUMIVD ) ;
descriz = descrizione_classe ( _sezivd , _lettivd , numrivd , _numivd ) ;
if ( _numivd ! = 0 ) //Ora devo stampare la descrizione del livello della
{ //classe immediatamente precedente a quello appena
if ( _numrivd ! = " " ) //stampato
descriz2 = descrizione_classe ( _sezivd , _lettivd , _numrivd_int , 0 ) ;
else
descriz2 = descrizione_classe ( _sezivd , _lettivd , 0 , 0 ) ;
}
else
if ( _numrivd ! = " " )
descriz2 = descrizione_classe ( _sezivd , _lettivd , 0 , 0 ) ;
else
descriz2 = " " ;
set_row ( r , " @27g%-30s " , ( const char * ) descrizione_gruppo ( ) ) ;
set_row ( r , " @59g%-30s " , ( const char * ) descrizione_conto ( ) ) ;
set_row ( r + + , " @91g%-30s " , ( const char * ) ragsoc ) ;
if ( _nummast = = 3 )
2003-03-14 15:13:36 +00:00
set_row ( r , " @r%s@8g@b%c " , TR ( " Classe " ) , _lettivd ) ;
1997-01-09 11:49:36 +00:00
else
2003-03-14 15:13:36 +00:00
set_row ( r , " %s@8g%c " , TR ( " Classe " ) , _lettivd ) ;
1997-01-09 11:49:36 +00:00
set_row ( r , " @10g%-8s " , ( const char * ) _numrivd ) ;
if ( _numivd ! = 0 )
set_row ( r , " @19g%2d " , _numivd ) ;
if ( descriz2 ! = " " )
{
set_row ( r , " @23g%-50s " , ( const char * ) descriz2 ) ;
set_row ( r + + , " @80g%-50s " , ( const char * ) descriz ) ;
}
else
set_row ( r + + , " @23g%-50s " , ( const char * ) descriz ) ;
dataini = _data_ini . string ( ) ;
datafine = _data_fine . string ( ) ;
if ( _annomsk = = 0 )
{
if ( _nummast = = 3 )
{
2003-03-14 15:13:36 +00:00
set_row ( r , " @r%s@10g@b%s " , TR ( " Periodo " ) , ( const char * ) dataini ) ;
1997-01-09 11:49:36 +00:00
set_row ( r , " @22g%s@r " , ( const char * ) datafine ) ;
}
else
{
2003-03-14 15:13:36 +00:00
set_row ( r , " %s@10g%s " , TR ( " Periodo " ) , ( const char * ) dataini ) ;
1997-01-09 11:49:36 +00:00
set_row ( r , " @22g%s " , ( const char * ) datafine ) ;
}
}
else
{
if ( _nummast = = 3 )
{
2003-03-14 15:13:36 +00:00
set_row ( r , " @r%s@9g@b%s " , TR ( " Comp.dal " ) , ( const char * ) dataini ) ;
set_row ( r , " @20g@r%s@22g@b%s@r " , TR ( " al " ) , ( const char * ) datafine ) ;
1997-01-09 11:49:36 +00:00
}
else
{
2003-03-14 15:13:36 +00:00
set_row ( r , " %s@9g%s " , TR ( " Comp.dal " ) , ( const char * ) dataini ) ;
set_row ( r , " @20g%s@22g%s " , TR ( " al " ) , ( const char * ) datafine ) ;
1997-01-09 11:49:36 +00:00
}
}
2003-03-14 15:13:36 +00:00
set_row ( r , FR ( " @33gP.I.@37g%-11s " ) , ( const char * ) paiv ) ;
set_row ( r , FR ( " @49gCF@52g%-16s " ) , ( const char * ) cofi ) ;
set_row ( r , " @66g%-.25s " , ( const char * ) indcf ) ;
1997-01-09 11:49:36 +00:00
set_row ( r , " @95g%-5s " , ( const char * ) capcf ) ;
set_row ( r , " @101g%-.24s " , ( const char * ) dencom ) ;
set_row ( r , " @126g%-5s " , ( const char * ) provcom ) ;
if ( _numcarat = = 2 )
{
2002-02-26 16:20:19 +00:00
set_row ( r , " @135g%-4s " , ( const char * ) ptel ) ;
1997-01-09 11:49:36 +00:00
if ( tel ! = " " )
set_row ( r + + , " @138g/@139g%-10s " , ( const char * ) tel ) ;
}
return r ;
}
// Se la ricerca selezionata sulla maschera e' per gruppo, conto, sottoconto
// ricerca i corrispondenti su PCON, con relativa IV direttiva CEE
void TMastrini_application : : ricerca_classe_IV ( bool scelta )
{
2003-03-14 15:13:36 +00:00
TString16 key ;
1997-01-09 11:49:36 +00:00
2003-03-14 15:13:36 +00:00
if ( scelta )
key . format ( " %d|%d|%ld " , _gruppo , _conto , _sottoc ) ;
else
key . format ( " %d|%d| " , _gruppo , _conto ) ;
const TRectype & pconti = cache ( ) . get ( LF_PCON , key ) ;
1997-01-09 11:49:36 +00:00
_sezivd = pconti . get_char ( PCN_SEZIVD ) ;
_lettivd = pconti . get_char ( PCN_LETTIVD ) ;
_numrivd_int = pconti . get_int ( PCN_NUMRIVD ) ;
_numrivd = itor ( _numrivd_int ) ;
_numivd = pconti . get_int ( PCN_NUMIVD ) ;
}
void TMastrini_application : : ricerca_gruppo ( )
{
TString80 descr , descriz , descriz2 , dep ;
TString dataini , datafine ;
ricerca_classe_IV ( TRUE ) ; //Esiste a livello di sottoconto
if ( _sezivd = = ' 0 ' ) //Non esiste a livello di sottoconto
ricerca_classe_IV ( FALSE ) ; //Allora la cerco a livello di conto
descriz = descrizione_classe ( _sezivd , _lettivd , _numrivd_int , _numivd ) ;
if ( _numivd ! = 0 ) //Ora devo stampare la descrizione del livello della
{ //classe immediatamente precedente a quello appena
if ( _numrivd ! = " " ) //stampato
descriz2 = descrizione_classe ( _sezivd , _lettivd , _numrivd_int , 0 ) ;
else
descriz2 = descrizione_classe ( _sezivd , _lettivd , 0 , 0 ) ;
}
else
if ( _numrivd ! = " " )
descriz2 = descrizione_classe ( _sezivd , _lettivd , 0 , 0 ) ;
else
descriz2 = " " ;
set_header ( 3 , " @27g%-.30s " , ( const char * ) descrizione_gruppo ( ) ) ;
set_header ( 3 , " @59g%-.30s " , ( const char * ) descrizione_conto ( ) ) ;
set_header ( 3 , " @91g%-.41s " , ( const char * ) descrizione_sottoconto ( ) ) ;
if ( _nummast = = 3 )
2003-03-14 15:13:36 +00:00
set_header ( 4 , " @0g@r%s@12g@b%c " , TR ( " Classe " ) , _lettivd ) ;
1997-01-09 11:49:36 +00:00
else
2003-03-14 15:13:36 +00:00
set_header ( 4 , " @0g%s@12g%c " , TR ( " Classe " ) , _lettivd ) ;
1997-01-09 11:49:36 +00:00
set_header ( 4 , " @14g%-8s " , ( const char * ) _numrivd ) ;
if ( _numivd ! = 0 )
set_header ( 4 , " @23g%d " , _numivd ) ;
if ( descriz2 ! = " " )
{
set_header ( 4 , " @27g%-50s " , ( const char * ) descriz2 ) ;
set_header ( 4 , " @80g%-50s " , ( const char * ) descriz ) ;
}
else
set_header ( 4 , " @27g%-50s " , ( const char * ) descriz ) ;
dataini = _data_ini . string ( ) ;
datafine = _data_fine . string ( ) ;
if ( _annomsk = = 0 )
{
if ( _nummast = = 3 )
{
2003-03-14 15:13:36 +00:00
set_header ( 5 , " @r%s@12g@b%s " , TR ( " Periodo " ) , ( const char * ) dataini ) ;
1997-01-09 11:49:36 +00:00
set_header ( 5 , " @24g@b%s@r " , ( const char * ) datafine ) ;
}
else
{
2003-03-14 15:13:36 +00:00
set_header ( 5 , " %s@12g%s " , TR ( " Periodo " ) , ( const char * ) dataini ) ;
1997-01-09 11:49:36 +00:00
set_header ( 5 , " @24g%s " , ( const char * ) datafine ) ;
}
}
else
{
if ( _nummast = = 3 )
{
2003-03-14 15:13:36 +00:00
set_header ( 5 , " @r%s@23g@b%s " , TR ( " Periodo di competenza " ) , ( const char * ) dataini ) ;
1997-01-09 11:49:36 +00:00
set_header ( 5 , " @35g%s@r " , ( const char * ) datafine ) ;
}
else
{
2003-03-14 15:13:36 +00:00
set_header ( 5 , " %s@23g%s " , TR ( " Periodo di competenza " ) , ( const char * ) dataini ) ;
1997-01-09 11:49:36 +00:00
set_header ( 5 , " @35g%s " , ( const char * ) datafine ) ;
}
}
}
int TMastrini_application : : ricerca_gruppo ( int start )
{
TString80 descr , descriz , descriz2 , dep ;
TString dataini , datafine ;
int r = start ;
ricerca_classe_IV ( TRUE ) ; //Esiste a livello di sottoconto
if ( _sezivd = = ' 0 ' ) //Non esiste a livello di sottoconto
ricerca_classe_IV ( FALSE ) ; //Allora la cerco a livello di conto
descriz = descrizione_classe ( _sezivd , _lettivd , _numrivd_int , _numivd ) ;
if ( _numivd ! = 0 ) //Ora devo stampare la descrizione del livello della
{ //classe immediatamente precedente a quello appena
if ( _numrivd ! = " " ) //stampato
descriz2 = descrizione_classe ( _sezivd , _lettivd , _numrivd_int , 0 ) ;
else
descriz2 = descrizione_classe ( _sezivd , _lettivd , 0 , 0 ) ;
}
else
if ( _numrivd ! = " " )
descriz2 = descrizione_classe ( _sezivd , _lettivd , 0 , 0 ) ;
else
descriz2 = " " ;
set_row ( r , " @27g%-.30s " , ( const char * ) descrizione_gruppo ( ) ) ;
set_row ( r , " @59g%-.30s " , ( const char * ) descrizione_conto ( ) ) ;
set_row ( r + + , " @91g%-.41s " , ( const char * ) descrizione_sottoconto ( ) ) ;
if ( _nummast = = 3 )
2003-03-14 15:13:36 +00:00
set_row ( r , " @0g@r%s@12g@b%c " , TR ( " Classe " ) , _lettivd ) ;
1997-01-09 11:49:36 +00:00
else
2003-03-14 15:13:36 +00:00
set_row ( r , " @0g%s@12g%c " , TR ( " Classe " ) , _lettivd ) ;
1997-01-09 11:49:36 +00:00
set_row ( r , " @14g%-8s " , ( const char * ) _numrivd ) ;
if ( _numivd ! = 0 )
set_row ( r , " @23g%d " , _numivd ) ;
if ( descriz2 ! = " " )
{
set_row ( r , " @27g%-50s " , ( const char * ) descriz2 ) ;
set_row ( r + + , " @80g%-50s " , ( const char * ) descriz ) ;
}
else
set_row ( r + + , " @27g%-50s " , ( const char * ) descriz ) ;
dataini = _data_ini . string ( ) ;
datafine = _data_fine . string ( ) ;
if ( _annomsk = = 0 )
{
if ( _nummast = = 3 )
{
2003-03-14 15:13:36 +00:00
set_row ( r , " @r%s@12g@b%s " , TR ( " Periodo " ) , ( const char * ) dataini ) ;
1997-01-09 11:49:36 +00:00
set_row ( r , " @24g%s@r " , ( const char * ) datafine ) ;
}
else
{
2003-03-14 15:13:36 +00:00
set_row ( r , " %s@12g%s " , TR ( " Periodo " ) , ( const char * ) dataini ) ;
1997-01-09 11:49:36 +00:00
set_row ( r , " @24g%s " , ( const char * ) datafine ) ;
}
}
else
{
if ( _nummast = = 3 )
{
2003-03-14 15:13:36 +00:00
set_row ( r , " @r%s@23g@b%s " , TR ( " Periodo di competenza " ) , ( const char * ) dataini ) ;
1997-01-09 11:49:36 +00:00
set_row ( r , " @35g%s@r " , ( const char * ) datafine ) ;
2002-07-02 16:21:23 +00:00
2002-07-29 15:19:18 +00:00
if ( _cdc . not_empty ( ) )
{
const TString & desc_cdc = cache ( ) . get ( " CMS " , _cdc , " S0 " ) ;
if ( _fsc . not_empty ( ) )
{
const TString & desc_fsc = cache ( ) . get ( " FSC " , _fsc , " S0 " ) ;
2003-03-14 15:13:36 +00:00
set_row ( + + r , FR ( " @bCommessa %s %s - Fase %s %s " ) ,
2002-07-29 15:19:18 +00:00
( const char * ) _cdc , ( const char * ) desc_cdc ,
( const char * ) _fsc , ( const char * ) desc_fsc ) ;
}
else
2003-03-14 15:13:36 +00:00
set_row ( + + r , FR ( " @bCommessa %s %s " ) , ( const char * ) _cdc , ( const char * ) desc_cdc ) ;
2002-07-29 15:19:18 +00:00
}
1997-01-09 11:49:36 +00:00
}
else
{
2003-03-14 15:13:36 +00:00
set_row ( r , " %s@23g%s " , TR ( " Periodo di competenza " ) , ( const char * ) dataini ) ;
1997-01-09 11:49:36 +00:00
set_row ( r , " @35g%s " , ( const char * ) datafine ) ;
}
}
return r ;
}
const char * TMastrini_application : : descrizione_classe ( char sezione , char lettera , int numr , int numero )
{
2003-03-14 15:13:36 +00:00
TString16 key ;
1997-01-09 11:49:36 +00:00
if ( numr = = 0 & & numero = = 0 )
2003-03-14 15:13:36 +00:00
key . format ( " %c%c " , sezione , lettera ) ;
1997-01-09 11:49:36 +00:00
else
if ( numero = = 0 )
2003-03-14 15:13:36 +00:00
key . format ( " %c%c%04d " , sezione , lettera , numr ) ;
else
1997-01-09 11:49:36 +00:00
{
if ( numr ! = 0 )
2003-03-14 15:13:36 +00:00
key . format ( " %c%c%04d%02d " , sezione , lettera , numr , numero ) ;
1997-01-09 11:49:36 +00:00
else
2003-03-14 15:13:36 +00:00
key . format ( " %c%c %02d " , sezione , lettera , numero ) ;
}
1997-01-09 11:49:36 +00:00
2003-03-14 15:13:36 +00:00
return cache ( ) . get ( " %IVD " , key , " S0 " ) ;
1997-01-09 11:49:36 +00:00
}
//Ricerca la descrizione relativa al gruppo da stampare
const char * TMastrini_application : : descrizione_gruppo ( )
{
2003-03-14 15:13:36 +00:00
TString16 key ;
key . format ( " %d " , _gruppo ) ;
1997-01-09 11:49:36 +00:00
2003-03-14 15:13:36 +00:00
return cache ( ) . get ( LF_PCON , key , PCN_DESCR ) ;
1997-01-09 11:49:36 +00:00
}
// Ricerca la descrizione relativa al conto da stampare
const char * TMastrini_application : : descrizione_conto ( )
{
2003-03-14 15:13:36 +00:00
TString16 key ;
key . format ( " %d|%d " , _gruppo , _conto ) ;
return cache ( ) . get ( LF_PCON , key , PCN_DESCR ) ;
1997-01-09 11:49:36 +00:00
}
const char * TMastrini_application : : descrizione_sottoconto ( )
{
2003-03-14 15:13:36 +00:00
TString16 key ;
key . format ( " %d|%d|%ld " , _gruppo , _conto , _sottoc ) ;
return cache ( ) . get ( LF_PCON , key , PCN_DESCR ) ;
1997-01-09 11:49:36 +00:00
}
// Funzione per settare tutti gli handlers della maschera principale
// o di quella dello spreadsheet della seconda pagina
void TMastrini_application : : set_handlers ( TMask * msk ) const
{
2002-10-23 14:14:55 +00:00
msk - > set_handler ( F_ANNO , anno_hnd ) ;
1997-05-06 12:33:10 +00:00
msk - > set_handler ( F_DATAINI , data_inizio ) ;
msk - > set_handler ( F_DATAFINE , data_fine ) ;
msk - > set_handler ( F_GRUPPOFINE , gruppo_hnd ) ;
2002-09-13 14:06:05 +00:00
msk - > set_handler ( F_TIPOCF_INI , tipocf_hnd ) ;
msk - > set_handler ( F_TIPOCF_FINE , tipocf_hnd ) ;
1997-05-06 12:33:10 +00:00
msk - > set_handler ( F_CONTOINI_CONTO , contoi_hnd ) ;
msk - > set_handler ( F_CONTOFINE_CONTO , contof_hnd ) ;
1997-01-09 11:49:36 +00:00
msk - > set_handler ( F_SOTTOCINI_CONTO , sottoc_handler_ini ) ;
msk - > set_handler ( F_SOTTOCINI_CLIENTE , sottoc_handler_ini ) ;
msk - > set_handler ( F_SOTTOCINI_FORN , sottoc_handler_ini ) ;
msk - > set_handler ( F_SOTTOCFINE_CONTO , sottoc_handler_fine ) ;
msk - > set_handler ( F_SOTTOCFINE_CLIENTE , sottoc_handler_fine ) ;
msk - > set_handler ( F_SOTTOCFINE_FORN , sottoc_handler_fine ) ;
2002-07-02 16:21:23 +00:00
msk - > set_handler ( F_DACDC , cdc_handler ) ;
msk - > set_handler ( F_ACDC , cdc_handler ) ;
1997-01-09 11:49:36 +00:00
}
// Copia i parametri della prima pagina in una nuova riga dello spreadsheet
// a meno che non ci siano gia'
bool TMastrini_application : : mask2sheet ( )
{
1997-04-17 10:20:35 +00:00
bool ok = _msk - > check_fields ( ) ;
1997-01-09 11:49:36 +00:00
1997-04-17 10:20:35 +00:00
if ( ok )
1997-01-09 11:49:36 +00:00
{
1997-04-17 10:20:35 +00:00
TToken_string row ( 120 ) ;
short id = F_ANNO ;
for ( int pos = _msk - > id2pos ( id ) ; pos > = 0 ; pos = _msk - > id2pos ( + + id ) )
row . add ( _msk - > fld ( pos ) . get ( ) ) ;
if ( ! row . empty_items ( ) )
1997-01-09 11:49:36 +00:00
{
1997-04-17 10:20:35 +00:00
TSheet_field & sht = ( TSheet_field & ) _msk - > field ( F_SCELTE ) ;
TString_array & rows = sht . rows_array ( ) ;
ok = rows . find ( row ) < 0 ; // Aggiunge solo se non c'e' gia'
if ( ok )
{
rows . add ( row ) ;
sht . force_update ( ) ;
}
}
1997-01-09 11:49:36 +00:00
}
1997-04-17 10:20:35 +00:00
1997-01-09 11:49:36 +00:00
return ok ;
}
bool TMastrini_application : : sheet2mask ( )
{
TSheet_field & sht = ( TSheet_field & ) _msk - > field ( F_SCELTE ) ;
bool ok = sht . items ( ) > 0 ;
if ( ok )
{
TString_array & rows = sht . rows_array ( ) ;
1997-04-17 10:20:35 +00:00
TToken_string & row = rows . row ( 0 ) ;
1997-01-09 11:49:36 +00:00
short id = F_ANNO ;
2002-07-02 16:21:23 +00:00
FOR_EACH_TOKEN ( row , val )
{
2002-05-08 16:25:49 +00:00
// Scarta i listbox perche' azzerano i conti!
1997-04-17 10:20:35 +00:00
if ( id ! = F_TIPOCF_INI & & id ! = F_TIPOCF_FINE )
2002-07-02 16:21:23 +00:00
_msk - > set ( id , val ) ;
id + + ;
1997-04-17 10:20:35 +00:00
}
rows . destroy ( 0 , TRUE ) ;
1997-01-09 11:49:36 +00:00
}
return ok ;
}
bool TMastrini_application : : user_create ( )
{
TToken_string exp ;
1999-06-18 15:35:05 +00:00
_rel = new TRelation ( LF_SALDI ) ;
_rel - > lfile ( ) . set_curr ( new TMastrini_record ) ;
1997-01-09 11:49:36 +00:00
exp . add ( " GRUPPO=GRUPPO " ) ;
exp . add ( " CONTO=CONTO " ) ;
exp . add ( " SOTTOCONTO=SOTTOCONTO " ) ;
_rel - > add ( LF_RMOV , exp , 2 , LF_SALDI ) ;
2002-09-13 14:06:05 +00:00
_rel - > add ( " CMS " , " CODTAB==CODCMS " , 1 , LF_RMOV , 501 ) ;
_rel - > add ( " FSC " , " CODTAB==FASCMS " , 1 , LF_RMOV , 502 ) ;
1997-01-09 11:49:36 +00:00
_cur1 = add_cursor ( new TCursor ( _rel , " FLSCA= \" \" " , 2 ) ) ;
2003-03-14 15:13:36 +00:00
open_files ( LF_TAB , LF_TABCOM , LF_NDITTE , LF_UNLOC , LF_COMUNI , LF_MOV ,
LF_CLIFO , LF_CAUSALI , 0 ) ;
1999-06-18 15:35:05 +00:00
_cur2 = add_cursor ( new TSorted_cursor ( _rel , " DESCR " , " FLSCA= \" \" " , 2 ) ) ;
1997-01-09 11:49:36 +00:00
_tabivd = new TTable ( TAB_IVD ) ;
_tabtpd = new TTable ( TAB_TPD ) ;
_tabreg = new TTable ( TAB_REG ) ;
_sld = new TSaldo ( ) ;
_d18 = new TParagraph_string ( " " , 18 ) ;
1999-05-24 13:34:11 +00:00
_d22 = new TParagraph_string ( " " , 22 ) ;
1997-01-09 11:49:36 +00:00
_d30 = new TParagraph_string ( " " , 30 ) ;
_msk = new TMask ( " cg3200a " ) ;
set_handlers ( _msk ) ;
_msk - > set_handler ( F_MEMORIZZA , memorizza_handler ) ;
TSheet_field & sht = ( TSheet_field & ) _msk - > field ( F_SCELTE ) ;
sht . set_notify ( scelte_notify ) ;
TMask & sm = sht . sheet_mask ( ) ;
set_handlers ( & sm ) ;
_gia_stampata_intestazione = FALSE ;
return TRUE ;
}
bool TMastrini_application : : user_destroy ( )
{
delete _msk ;
delete _rel ;
delete _tabivd ;
delete _tabtpd ;
delete _tabreg ;
delete _sld ;
delete _d18 ;
1999-05-24 13:34:11 +00:00
delete _d22 ;
1997-01-09 11:49:36 +00:00
delete _d30 ;
return TRUE ;
}
int cg3200 ( int argc , char * argv [ ] )
{
TMastrini_application a ;
2003-03-14 15:13:36 +00:00
a . run ( argc , argv , TR ( " Stampa Mastrini " ) ) ;
1997-01-09 11:49:36 +00:00
return 0 ;
2002-09-13 14:06:05 +00:00
}