1998-11-04 18:04:26 +00:00
# include <execp.h>
# include <mailbox.h>
# include <msksheet.h>
# include <printapp.h>
1999-10-22 10:00:18 +00:00
# include <sheet.h>
1998-11-04 18:04:26 +00:00
# include <tabutil.h>
# include <utility.h>
# 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>
# include "cgp3.h"
# include "cgp3100.h"
# include "cglib02.h"
# include "cglib03.h"
class TMastrini_application : public TPrintapp
{
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 ) ;
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 ;
TLocalisamfile * _mov ;
TLocalisamfile * _nditte ;
TLocalisamfile * _unloc ;
TLocalisamfile * _comuni ;
TLocalisamfile * _clifo ;
TLocalisamfile * _caus ;
TSaldo * _sld ;
TParagraph_string * _d18 , * _d23 , * _d30 ;
TArray _riga , _lista ;
TDate _data_ini , _data_fine , _data_finese , _data_finesesucc , _ultima_data_reg ;
TDate _datareg , _datadoc , _data_inizioese , _datareg_stampa , _inizioes ;
int _cur1 , _gruppo , _conto , _numcarat , _stampanum , _numivd , _annoiva ;
int _numrig , _natdoc , _tipo , _tipostampa , _g_prec , _c_prec , _numrivd_int ;
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 ;
TString _tipodoc , _codcaus , _descrcaus , _descrdociva , _regiva ;
TString _g_contr , _c_contr , _s_contr ;
char _sezivd , _lettivd ;
TString _descrizione , _sezione , _numdoc , _descrizionemov , _numrivd , _descr ;
TString _dataregs , _datadocs ;
int _nummast , _pagina ;
int _gruppocontr , _contocontr ;
long _sottocontocontr ;
bool _stampaprogre , _stampatotiva , _stampatot , _stampa_mov_prov ;
bool _stampato , _devi_stampare_footer ;
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 ;
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 ;
bool _noseparator ;
TString _real_picture ;
TString256 TMP ;
TString _str_tipo , _str_sotto ;
real _gb_saldo_periodo , _gb_totale_periodo_dare , _gb_totale_periodo_avere ;
real _gb_saldo_progre , _gb_totprogre_dare , _gb_totprogre_avere ;
real _gb_saldo_progre_al , _gb_totprogre_dare_al , _gb_totprogre_avere_al ;
bool _gb_last_page ;
TConfig * _collins ;
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 ) ;
2007-01-03 17:17:41 +00:00
virtual bool process_link ( int id , const char * txt ) ;
1998-11-04 18:04:26 +00:00
void set_handlers ( TMask * msk ) const ;
bool mask2sheet ( ) ;
bool sheet2mask ( ) ;
// Aggiorna totali di Gastone Bizzarri
void aggiorna_totali_gb ( ) ;
public :
//TDate _inizioEs,_fineEs;
int date2esc ( const TDate & d ) ;
void ricerca_clifo ( ) ;
void ricerca_gruppo ( ) ;
int ricerca_clifo ( int riga ) ;
int ricerca_gruppo ( int riga ) ;
void calcola_progressivi ( ) ;
void calcola_progressivi_al ( ) ;
void stampa_progressivi ( ) ;
int stampa_progressivi ( int start_riga ) ;
void stampa_progre_riporto ( ) ;
int stampa_progre_riporto ( int start_riga ) ;
void documenti_iva ( ) ;
void ricerca_regiva ( ) ;
void descrizione_causale ( ) ;
void saldi_zero ( ) ;
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 ( ) ;
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 ) ;
void setta_riga ( int r , TString riga ) ;
int righe_rimaste_da_stampare ( ) ;
const char * trans ( const char * italian ) ;
TMastrini_application ( ) { }
virtual ~ TMastrini_application ( ) { }
} ;
inline TMastrini_application & app ( ) { return ( TMastrini_application & ) main_app ( ) ; }
const char * TMastrini_application : : trans ( const char * italian )
{
TString80 key ( italian ) ;
key . replace ( ' ' , ' _ ' ) ;
const TString & str = _collins - > get ( key , NULL , - 1 , italian ) ;
return str ;
}
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
2007-05-28 12:47:45 +00:00
righe_rimaste = printer ( ) . formlen ( ) / 2 ;
1998-11-04 18:04:26 +00:00
}
}
}
return righe_rimaste ;
}
2007-01-03 17:17:41 +00:00
bool TMastrini_application : : process_link ( int id , const char * txt )
1998-11-04 18:04:26 +00:00
{
2007-01-03 17:17:41 +00:00
TRectype mov ( LF_MOV ) ;
mov . put ( MOV_NUMREG , txt ) ;
return mov . edit ( ) ;
1998-11-04 18:04:26 +00:00
}
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 )
return f . error_box ( " Il gruppo di partenza deve essere inferiore o uguale al gruppo di arrivo " ) ;
}
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 ( contof = = 0 | | contoi < contof )
return TRUE ;
return f . error_box ( " Il conto di partenza deve essere inferiore o uguale al conto di arrivo " ) ;
}
bool TMastrini_application : : memorizza_handler ( TMask_field & f , KEY k )
{
if ( k = = K_SPACE )
{
if ( app ( ) . mask2sheet ( ) )
{
TMask & m = f . mask ( ) ;
m . reset ( - 9 ) ;
m . set_focus_field ( F_GRUPPOINI ) ;
}
}
return TRUE ;
}
bool TMastrini_application : : scelte_notify ( TSheet_field & s , int r , KEY k )
{
bool ok = TRUE ;
if ( k = = K_INS )
return ok = FALSE ;
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 ;
int gruppo , conto ;
TDate datareg , datacomp ;
TLocalisamfile & rmov = current_cursor ( ) - > file ( LF_RMOV ) ;
1999-10-22 10:00:18 +00:00
1998-11-04 18:04:26 +00:00
if ( current_cursor ( ) - > is_first_match ( LF_RMOV ) )
{
1999-10-22 10:00:18 +00:00
long record = rmov . recno ( ) ;
1998-11-04 18:04:26 +00:00
rmov . zero ( ) ;
rmov . put ( RMV_GRUPPO , _gruppo ) ;
rmov . put ( RMV_CONTO , _conto ) ;
// rmov.put(RMV_SOTTOCONTO, _sottoc);
1999-10-22 10:00:18 +00:00
for ( int err = rmov . read ( _isgteq ) ; err = = NOERR ; err = rmov . next ( ) )
1998-11-04 18:04:26 +00:00
{
1999-10-22 10:00:18 +00:00
const int annoes = rmov . get_int ( RMV_ANNOES ) ;
const long numreg = rmov . get_long ( RMV_NUMREG ) ;
1998-11-04 18:04:26 +00:00
_mov - > setkey ( 1 ) ;
_mov - > curr ( ) . zero ( ) ;
_mov - > curr ( ) . put ( MOV_NUMREG , numreg ) ;
_mov - > read ( ) ;
if ( _mov - > bad ( ) )
_mov - > zero ( ) ;
datacomp = _mov - > curr ( ) . get ( MOV_DATACOMP ) ;
const char provvis = _mov - > curr ( ) . get_char ( MOV_PROVVIS ) ;
if ( _annomsk = = 0 )
datareg = rmov . get_date ( RMV_DATAREG ) ;
else
datareg = datacomp ;
gruppo = rmov . get_int ( RMV_GRUPPO ) ;
conto = rmov . get_int ( RMV_CONTO ) ;
// sottoc = rmov.get_long(RMV_SOTTOCONTO);
if ( ( gruppo ! = _gruppo ) | | ( conto ! = _conto ) /*||(sottoc != _sottoc)*/ )
break ;
else
if ( ( ( annoes = = _annomsk ) | | ( _annomsk = = 0 ) ) & & ( ( datareg > = _data_ini ) & & ( datareg < = _data_fine ) ) & & ( _stampa_mov_prov | | provvis < = ' ' ) )
{
trovato = TRUE ;
break ;
}
}
rmov . readat ( record ) ;
}
return trovato ;
}
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 ) ;
if ( data . ok ( ) )
{
if ( data < app ( ) . _data_inizioese | | data > app ( ) . _data_finese )
{
f . error_box ( " La data non appartiene all'esercizio indicato " ) ;
return FALSE ;
}
else
app ( ) . _data_ini = data ;
}
}
else
{
if ( data = = botime )
return f . error_box ( " La data deve essere obbligatoriamente indicata " ) ;
if ( app ( ) . date2esc ( data ) = = 0 )
return f . error_box ( " La data indicata non appartiene ad alcun esercizio " ) ;
else
app ( ) . _data_ini = data ;
}
}
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 ) ;
if ( data . ok ( ) )
{
if ( data < app ( ) . _data_inizioese | | data > app ( ) . _data_finese )
{
f . error_box ( " La data non appartiene all'esercizio indicato " ) ;
return FALSE ;
}
else
app ( ) . _data_fine = data ;
}
}
else
{
if ( data = = botime )
return f . error_box ( " La data deve essere obbligatoriamente indicata " ) ;
app ( ) . _anno_ghost = app ( ) . date2esc ( data_ini ) ;
if ( app ( ) . _anno_ghost = = 0 )
return f . error_box ( " La data indicata non appartiene ad alcun esercizio " ) ;
//app()._inizioes = app()._inizioEs;
//if (data < app()._inizioEs || data > app()._fineEs)
//{
// f.error_box("La data non appartiene all'esercizio indicato");
// return FALSE;
//}
//else
app ( ) . _data_fine = data ;
}
if ( data < data_ini )
{
f . error_box ( " La data finale non puo' essere inferiore alla data di partenza " ) ;
return FALSE ;
}
}
return TRUE ;
}
void TMastrini_application : : saldi_zero ( )
{
TLocalisamfile & rmov = current_cursor ( ) - > file ( LF_RMOV ) ;
real saldo_dare , saldo_avere ;
long record ;
saldo_dare = saldo_avere = 0.0 ;
if ( current_cursor ( ) - > is_first_match ( LF_RMOV ) )
{
record = rmov . recno ( ) ;
while ( ! rmov . eof ( ) )
{
long numreg = rmov . get_long ( RMV_NUMREG ) ;
_mov - > setkey ( 1 ) ;
_mov - > curr ( ) . zero ( ) ;
_mov - > curr ( ) . put ( MOV_NUMREG , numreg ) ;
_mov - > read ( ) ;
if ( _mov - > bad ( ) )
_mov - > zero ( ) ;
char provvis = _mov - > curr ( ) . get_char ( MOV_PROVVIS ) ;
int gruppo = atoi ( rmov . get ( RMV_GRUPPO ) ) ;
int conto = atoi ( rmov . get ( RMV_CONTO ) ) ;
// long sottoc = atol(rmov.get(RMV_SOTTOCONTO));
if ( ( gruppo = = _gruppo ) & & ( conto = = _conto ) /*&&(sottoc == _sottoc)*/ )
{
if ( _stampa_mov_prov | | provvis < = ' ' )
{
char sezione = rmov . curr ( ) . get ( RMV_SEZIONE ) [ 0 ] ;
real importo = rmov . curr ( ) . get_real ( RMV_IMPORTO ) ;
if ( sezione = = ' D ' )
saldo_dare + = importo ;
else
saldo_avere + = importo ;
}
}
else break ;
rmov . next ( ) ;
}
rmov . readat ( record ) ;
}
_totale_saldo = saldo_dare - saldo_avere ;
}
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 )
set_row ( _rw , " @11g$[r]#7d$[n] " , & _numreg ) ;
else
if ( _stampanum = = 2 )
{
set_row ( _rw , " @11g#7d " , & _numgio ) ;
}
set_row ( _rw , " @19g#t " , & _datadocs ) ;
set_row ( _rw , " @30g#7t " , & _numdoc ) ;
set_row ( _rw , " @38g#3t " , & _codcaus ) ;
// set_row (_rw,"@117g#3t #3t #6t", &_g_contr, &_c_contr, &_s_contr);
set_row ( _rw , " @117g#1t #6t " , & _str_tipo , & _str_sotto ) ;
}
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 )
{
set_row ( _rw , " @11g$[r]#7d$[n] " , & _numreg ) ;
set_row ( _rw , " @18g/#3d " , & _numrig ) ;
}
else if ( _stampanum = = 2 )
set_row ( _rw , " @11g#7d " , & _numgio ) ;
set_row ( _rw , " @23g#t " , & _datadocs ) ;
set_row ( _rw , " @34g#7t " , & _numdoc ) ;
set_row ( _rw , " @42g#3t " , & _codcaus ) ;
// Stampa saldo movimenti
set_row ( _rw , " @151g#t " , & _saldo_movimenti_str ) ;
// set_row (_rw,"@168g#3t #3t #6t", &_g_contr, &_c_contr, &_s_contr);
set_row ( _rw , " @168g#1t #6t " , & _str_tipo , & _str_sotto ) ;
}
void TMastrini_application : : aggiorna_totali_gb ( )
{
_gb_saldo_periodo + = _saldo_periodo ;
_gb_totale_periodo_dare + = _totale_periodo_dare ;
_gb_totale_periodo_avere + = _totale_periodo_avere ;
_gb_saldo_progre + = _saldo_progre ;
_gb_totprogre_dare + = _totprogre_dare ;
_gb_totprogre_avere + = _totprogre_avere ;
_gb_saldo_progre_al + = _saldo_progre_al ;
_gb_totprogre_dare_al + = _totprogre_dare_al ;
_gb_totprogre_avere_al + = _totprogre_avere_al ;
}
void TMastrini_application : : stampa_totali132 ( )
{
TString sep ( 132 ) ;
if ( _nummast = = 1 | | _nummast = = 3 )
_rw = 2 ;
sep . fill ( ' - ' ) ; //Stampa 132 - (sep(132))
set_row ( _rw + + , " @0g%s " , ( const char * ) sep ) ;
_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 ;
set_row ( _rw , " @32g%s " , trans ( " TOTALI PERIODO " ) ) ;
set_row ( _rw , " @66g%r " , & _saldo_periodo ) ;
set_row ( _rw , " @83g%r " , & _totale_periodo_dare ) ;
set_row ( _rw + + , " @100g%r " , & _totale_periodo_avere ) ;
set_row ( _rw , " @32g%s " , trans ( " TOTALI PROGRESSIVI " ) ) ;
set_row ( _rw , " @66g%r " , & _saldo_progre ) ;
set_row ( _rw , " @83g%r " , & _totprogre_dare ) ;
set_row ( _rw + + , " @100g%r " , & _totprogre_avere ) ;
if ( _stampaprogre ) //Progressivi attuali
{
set_row ( _rw , " @32g%s %s " , trans ( " TOTALI PROGRESSIVI AL " ) , _ultima_data_reg . string ( ) ) ;
set_row ( _rw , " @66g%r " , & _saldo_progre_al ) ;
set_row ( _rw , " @83g%r " , & _totprogre_dare_al ) ;
set_row ( _rw , " @100g%r " , & _totprogre_avere_al ) ;
}
_devi_stampare_footer = FALSE ;
aggiorna_totali_gb ( ) ;
}
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 = " " ;
sep . fill ( ' - ' ) ; //Stampa 132 - (sep(132))
r . add ( " @0g%s " ) ;
r . add ( sep ) ;
_lista . add ( r ) ;
r = " " ;
r . add ( " @32g%s@66g%s@83g%s@100g%s " ) ;
r . add ( trans ( " TOTALI PERIODO " ) ) ;
r . add ( _saldo_periodo . string ( _real_picture ) ) ;
r . add ( _totale_periodo_dare . string ( _real_picture ) ) ;
r . add ( _totale_periodo_avere . string ( _real_picture ) ) ;
_lista . add ( r ) ;
r = " " ;
r . add ( " @32g%s@66g%s@83g%s@100g%s " ) ;
r . add ( trans ( " TOTALI PROGRESSIVI " ) ) ;
r . add ( _saldo_progre . string ( _real_picture ) ) ;
r . add ( _totprogre_dare . string ( _real_picture ) ) ;
r . add ( _totprogre_avere . string ( _real_picture ) ) ;
_lista . add ( r ) ;
r = " " ;
if ( _stampaprogre ) //Progressivi attuali
{
r . add ( " @32g%s@55g%s@66g%s@83g%s@100g%s " ) ;
r . add ( trans ( " TOTALI PROGRESSIVI AL " ) ) ;
r . add ( _ultima_data_reg . string ( ) ) ;
r . add ( _saldo_progre_al . string ( _real_picture ) ) ;
r . add ( _totprogre_dare_al . string ( _real_picture ) ) ;
r . add ( _totprogre_avere_al . string ( _real_picture ) ) ;
_lista . add ( r ) ;
r = " " ;
}
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 ;
r . add ( totale . string ( _real_picture ) ) ;
_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 ( ) ;
_devi_stampare_footer = FALSE ;
}
void TMastrini_application : : stampa_totali198 ( )
{
if ( _nummast = = 1 | | _nummast = = 3 )
_rw = 1 ;
TString sep ( 198 ) ;
sep . fill ( ' - ' ) ; //Stampa 198 - (sep(198))
set_row ( _rw + + , " @0g%s " , ( const char * ) sep ) ;
_totprogre_dare = _progredare + _totale_periodo_dare ;
_totprogre_avere = _progreavere + _totale_periodo_avere ;
set_row ( _rw , " @32g%s@100g%r " , trans ( " TOTALI PERIODO " ) , & _totale_periodo_dare ) ;
set_row ( _rw , " @117g%r " , & _totale_periodo_avere ) ;
set_row ( _rw + + , " @151g%r " , & _saldo_movimenti ) ;
set_row ( _rw , " @32g%s@100g%r " , trans ( " TOTALI PROGRESSIVI " ) , & _totprogre_dare ) ;
set_row ( _rw , " @117g%r " , & _totprogre_avere ) ;
set_row ( _rw + + , " @134g%r " , & _saldo_progressivi ) ;
if ( _stampaprogre ) //Progressivi attuali
{
_saldo_progre_al = _totprogre_dare_al - _totprogre_avere_al ;
set_row ( _rw , " @32g%s@55g%s " , trans ( " TOTALI PROGRESSIVI AL " ) , _ultima_data_reg . string ( ) ) ;
set_row ( _rw , " @100g%r " , & _totprogre_dare_al ) ;
set_row ( _rw , " @117g%r " , & _totprogre_avere_al ) ;
set_row ( _rw , " @134g%r " , & _saldo_progre_al ) ;
}
_devi_stampare_footer = FALSE ;
aggiorna_totali_gb ( ) ;
}
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 = " " ;
sep . fill ( ' - ' ) ; //Stampa 132 - (sep(132))
r . add ( " @0g%s " ) ;
r . add ( sep ) ;
_lista . add ( r ) ;
r = " " ;
_totprogre_dare = _progredare + _totale_periodo_dare ;
_totprogre_avere = _progreavere + _totale_periodo_avere ;
r . add ( " @32g%s@100g%s@117g%s@151g%s " ) ;
r . add ( trans ( " TOTALI PERIODO " ) ) ;
r . add ( _totale_periodo_dare . string ( _real_picture ) ) ;
r . add ( _totale_periodo_avere . string ( _real_picture ) ) ;
r . add ( _saldo_movimenti . string ( _real_picture ) ) ;
_lista . add ( r ) ;
r = " " ;
r . add ( " @32g%s@100g%s@117g%s@134g%s " ) ;
r . add ( trans ( " TOTALI PROGRESSIVI " ) ) ;
r . add ( _totprogre_dare . string ( _real_picture ) ) ;
r . add ( _totprogre_avere . string ( _real_picture ) ) ;
r . add ( _saldo_progressivi . string ( _real_picture ) ) ;
_lista . add ( r ) ;
r = " " ;
if ( _stampaprogre ) //Progressivi attuali
{
_saldo_progre_al = _totprogre_dare_al - _totprogre_avere_al ;
r . add ( " @32g%s@55g%s@100g%s@117g%s@134g%s " ) ;
r . add ( trans ( " TOTALI PROGRESSIVI AL " ) ) ;
r . add ( _ultima_data_reg . string ( ) ) ;
r . add ( _totprogre_dare_al . string ( _real_picture ) ) ;
r . add ( _totprogre_avere_al . string ( _real_picture ) ) ;
r . add ( _saldo_progre_al . string ( _real_picture ) ) ;
_lista . add ( r ) ;
r = " " ;
}
if ( _stampatotiva )
{
real totale ;
sep . fill ( ' ' ) ;
r . add ( " @0g%s " ) ;
r . add ( sep ) ;
_lista . add ( r ) ;
r = " " ;
// Guy: Real dick programmig!
// TString fmt ("@0g%s");
// TString fmt1(format("@%dg", _ddociva_len));
// fmt << fmt1 << "%15s";
TString16 fmt ;
fmt < < " @0g%s@ " < < _ddociva_len < < " g%15s " ;
for ( int j = 0 ; j < _b . items ( ) ; j + + )
{
TDociva & riga = ( TDociva & ) _b [ j ] ;
r . add ( fmt ) ;
r . add ( riga . _descrdoc ) ;
totale = riga . _totdociva ;
r . add ( totale . string ( _real_picture ) ) ;
_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 ) ) ;
set_row ( _rw + + , fmt , ( const char * ) arg1 , ( const char * ) arg2 , ( const char * ) arg3 , ( const char * ) arg4 ) ;
_indice_lista + + ;
}
if ( _item_lista < = diff )
_lista . destroy ( ) ;
_devi_stampare_footer = FALSE ;
}
void TMastrini_application : : setta_riga ( int r , TString riga )
{
TString * p = ( TString * ) _riga . objptr ( r ) ;
if ( ! p )
{
p = new TString ;
_riga . add ( p ) ;
}
* p < < riga ;
}
bool TMastrini_application : : preprocess_page ( int file , int counter )
{
TLocalisamfile & rmov = current_cursor ( ) - > file ( LF_RMOV ) ;
long rec ;
TDate datasucc ;
TString datasuccstring , dataregrmovstring ;
int gruppof , contof ;
long sottocf ;
TString provvis = " " ;
int annoes ;
if ( counter )
return TRUE ;
switch ( file )
{
case LF_SALDI :
{
// Usati in crea_intestazione()
_devi_stampare_footer = TRUE ;
if ( _nummast = = 3 | | _nummast = = 2 )
{
_rw = 0 ;
_rw + + ;
}
const TRectype & recsaldi = current_cursor ( ) - > curr ( LF_SALDI ) ;
_gruppo = recsaldi . get_int ( SLD_GRUPPO ) ;
_conto = recsaldi . get_int ( SLD_CONTO ) ;
_sottoc = recsaldi . get_long ( SLD_SOTTOCONTO ) ;
_cambia_mastrino = TRUE ;
annoes = recsaldi . get_int ( 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 ;
if ( _tipostampa = = 2 )
{
// saldi_zero();
calcola_progressivi ( ) ;
_totale_saldo = _totprogre_dare_al - _totprogre_avere_al ;
}
// else
// _totale_saldo = 1.0;
if ( ( _tipostampa = = 1 ) | | ( _tipostampa = = 2 ) )
{
if ( ( _tipostampa = = 1 & & almeno_un_record ( ) ) | |
( _tipostampa = = 2 & & _totale_saldo ! = ZERO ) )
{
_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
if ( _tipostampa = = 3 )
{
calcola_progressivi ( ) ;
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 :
{
//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
TLocalisamfile & rmov = current_cursor ( ) - > file ( LF_RMOV ) ;
const TRectype & curmov = rmov . curr ( ) ;
_numreg = curmov . get_long ( RMV_NUMREG ) ;
_numrig = curmov . get_int ( RMV_NUMRIG ) ;
_gruppocontr = curmov . get_int ( RMV_GRUPPOC ) ;
_contocontr = curmov . get_int ( RMV_CONTOC ) ;
_sottocontocontr = curmov . get_long ( RMV_SOTTOCONTOC ) ;
_g_contr = curmov . get ( RMV_GRUPPOC ) ;
_c_contr = curmov . get ( RMV_CONTOC ) ;
_s_contr = curmov . get ( RMV_SOTTOCONTOC ) ;
_str_tipo = curmov . get ( RMV_TIPOC ) ;
_str_sotto = curmov . get ( RMV_SOTTOCONTO ) ;
// Stampa solo quelli che hanno anno esercizio uguale a quello specificato
// nella maschera. Se non viene specificato li stampa tutti
_importo = curmov . get_real ( RMV_IMPORTO ) ;
_importo_str = _importo . string ( _real_picture ) ;
_mov - > setkey ( 1 ) ;
_mov - > curr ( ) . zero ( ) ;
_mov - > curr ( ) . put ( MOV_NUMREG , _numreg ) ;
_mov - > read ( ) ;
if ( _mov - > bad ( ) )
_mov - > zero ( ) ;
_annoes = _mov - > get_int ( MOV_ANNOES ) ;
_regiva = _mov - > curr ( ) . get ( MOV_REG ) ;
_annoiva = _mov - > curr ( ) . get_int ( MOV_ANNOIVA ) ;
// Controlla se saldo e' diverso da 0
if ( ( ( _annoes = = _annomsk ) | | ( _annomsk = = 0 ) ) & & ( _totale_saldo ! = 0.0 ) )
{
_sezione = current_cursor ( ) - > curr ( LF_RMOV ) . get ( RMV_SEZIONE ) ;
if ( _annomsk = = 0 )
{
_datareg = ( _mov - > curr ( ) . get ( MOV_DATAREG ) ) ;
_datareg_stampa = _datareg ;
}
else
if ( _annomsk ! = 0 )
{
_datareg = _mov - > curr ( ) . get ( MOV_DATACOMP ) ;
_datareg_stampa = _mov - > curr ( ) . get ( MOV_DATAREG ) ;
}
provvis = _mov - > curr ( ) . get ( MOV_PROVVIS ) ;
_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 )
set_row ( _rw , " @131g* " ) ;
else
set_row ( _rw , " @197g* " ) ;
if ( _stampa_mov_prov & & provvis . trim ( ) . not_empty ( ) )
if ( _numcarat = = 1 )
set_row ( _rw , " @129gP " ) ;
else
set_row ( _rw , " @195gP " ) ;
_codcaus = _mov - > curr ( ) . get ( MOV_CODCAUS ) ;
_tipodoc = _mov - > curr ( ) . get ( MOV_TIPODOC ) ;
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 ( ) ;
}
}
_datadoc = ( _mov - > curr ( ) . get ( MOV_DATADOC ) ) ;
_datadocs = _datadoc . string ( ) ;
_numdoc = _mov - > curr ( ) . get ( MOV_NUMDOC ) ;
descrizione_causale ( ) ;
_descrizionemov = _mov - > curr ( ) . get ( MOV_DESCR ) ;
_numgio = atol ( _mov - > curr ( ) . get ( MOV_NUMGIO ) ) ;
_descrizione = current_cursor ( ) - > curr ( LF_RMOV ) . get ( RMV_DESCR ) ;
if ( _nummast = = 1 | | _nummast = = 3 )
{
if ( _numcarat = = 1 ) // Stampa 132 caratteri
{
if ( _descrizione ! = " " )
{
* _d23 = ( const char * ) _descrizione ;
if ( _descrizionemov ! = " " )
{
* _d18 = ( const char * ) _descrizionemov ;
set_row ( _rw , " @42g#a " , _d18 ) ;
set_row ( _rw , " @61g#a " , _d23 ) ;
}
else if ( _descrizionemov = = " " )
{
* _d18 = ( const char * ) _descrcaus ;
set_row ( _rw , " @42g#a " , _d18 ) ;
set_row ( _rw , " @61g#a " , _d23 ) ;
}
}
else if ( _descrizione = = " " )
if ( _descrizionemov ! = " " )
{
* _d23 = ( const char * ) _descrizionemov ;
* _d18 = ( const char * ) _descrcaus ;
set_row ( _rw , " @42g#a " , _d18 ) ;
set_row ( _rw , " @61g#a " , _d23 ) ;
}
else
if ( _descrizionemov = = " " )
{
conto ( _gruppocontr , _contocontr , FALSE ) ;
TConto tc ( _gruppocontr , _contocontr , _sottocontocontr , _tipo_contr ) ;
TString80 descr_contr = tc . descrizione ( ) ;
//set_row (1,"@42g%.18s", (const char*) _descrcaus);
//if (descr_contr != "Sconosciuto")
// set_row (1,"@61g%.23s", (const char*) descr_contr);
* _d18 = ( const char * ) _descrcaus ;
set_row ( _rw , " @42g#a " , _d18 ) ;
if ( descr_contr ! = " Sconosciuto " )
{
* _d23 = ( const char * ) descr_contr ;
set_row ( _rw , " @61g#a " , _d23 ) ;
}
}
}
else
if ( _numcarat = = 2 ) // Stampa 198 caratteri
{
if ( _descrizione ! = " " )
{
* _d30 = ( const char * ) _descrizione ;
if ( _descrizionemov ! = " " )
{
* _d23 = ( const char * ) _descrizionemov ;
set_row ( _rw , " @46g#a " , _d23 ) ;
set_row ( _rw , " @70g#a " , _d30 ) ;
}
else if ( _descrizionemov = = " " )
{
//set_row (1,"@46g%.23s", (const char*) _descrcaus);
//set_row (1,"@70g%.30s", (const char*) _descrizione);
* _d23 = ( const char * ) _descrcaus ;
set_row ( _rw , " @46g#a " , _d23 ) ;
set_row ( _rw , " @70g#a " , _d30 ) ;
}
}
else if ( _descrizione = = " " )
if ( _descrizionemov ! = " " )
{
//set_row (1,"@46g%.23s", (const char*) _descrcaus);
//set_row (1,"@70g%.30s", (const char*) _descrizionemov);
* _d30 = ( const char * ) _descrizionemov ;
* _d23 = ( const char * ) _descrcaus ;
set_row ( _rw , " @46g#a " , _d23 ) ;
set_row ( _rw , " @70g#a " , _d30 ) ;
}
else
if ( _descrizionemov = = " " )
{
conto ( _gruppocontr , _contocontr , FALSE ) ;
TConto tc ( _gruppocontr , _contocontr , _sottocontocontr , _tipo_contr ) ;
TString descr_contr = tc . descrizione ( ) ;
//set_row (1,"@46g%.23s", (const char*) _descrcaus);
//if (descr_contr != "Sconosciuto")
// set_row (1,"@70g%.30s", (const char*) descr_contr);
* _d23 = ( const char * ) _descrcaus ;
set_row ( _rw , " @46g#a " , _d23 ) ;
if ( descr_contr ! = " Sconosciuto " )
{
* _d30 = ( const char * ) descr_contr ;
set_row ( _rw , " @70g#a " , _d30 ) ;
}
}
}
} //if (_nummast == 1 || _nummast == 3)
if ( _nummast = = 2 )
{
TString d18 , d23 , d30 ;
if ( _numcarat = = 1 ) // Stampa 132 caratteri
{
if ( _descrizione ! = " " )
{
d23 = _descrizione ;
if ( _descrizionemov ! = " " )
d18 = _descrizionemov ;
else if ( _descrizionemov = = " " )
d18 = _descrcaus ;
}
else if ( _descrizione = = " " )
if ( _descrizionemov ! = " " )
{
d23 = _descrizionemov ;
d18 = _descrcaus ;
}
else
if ( _descrizionemov = = " " )
{
conto ( _gruppocontr , _contocontr , FALSE ) ;
TConto tc ( _gruppocontr , _contocontr , _sottocontocontr , _tipo_contr ) ;
TString80 descr_contr = tc . descrizione ( ) ;
d18 = _descrcaus ;
if ( descr_contr ! = " Sconosciuto " )
d23 = descr_contr ;
}
TParagraph_string d_18 ( d18 , 18 ) ;
int i = 0 ;
const char * str ;
while ( ( str = d_18 . get ( ) ) ! = NULL )
{
TString stringa = " " ;
stringa < < " @42g " < < str ;
setta_riga ( i , stringa ) ;
i + + ;
}
TParagraph_string d_23 ( d23 , 23 ) ;
i = 0 ;
while ( ( str = d_23 . get ( ) ) ! = NULL )
{
TString stringa = " " ;
stringa < < " @61g " < < str ;
setta_riga ( i , stringa ) ;
i + + ;
}
}
else
if ( _numcarat = = 2 ) // Stampa 198 caratteri
{
if ( _descrizione ! = " " )
{
d30 = _descrizione ;
if ( _descrizionemov ! = " " )
d23 = _descrizionemov ;
else if ( _descrizionemov = = " " )
d23 = _descrcaus ;
}
else if ( _descrizione = = " " )
if ( _descrizionemov ! = " " )
{
d30 = _descrizionemov ;
d23 = _descrcaus ;
}
else
if ( _descrizionemov = = " " )
{
conto ( _gruppocontr , _contocontr , FALSE ) ;
TConto tc ( _gruppocontr , _contocontr , _sottocontocontr , _tipo_contr ) ;
TString descr_contr = tc . descrizione ( ) ;
d23 = _descrcaus ;
if ( descr_contr ! = " Sconosciuto " )
d30 = descr_contr ;
}
TParagraph_string d_23 ( d23 , 23 ) ;
int i = 0 ;
const char * str ;
while ( ( str = d_23 . get ( ) ) ! = NULL )
{
TString stringa = " " ;
stringa < < " @46g " < < str ;
setta_riga ( i , stringa ) ;
i + + ;
}
TParagraph_string d_30 ( d30 , 30 ) ;
i = 0 ;
while ( ( str = d_30 . get ( ) ) ! = NULL )
{
TString stringa = " " ;
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 )
{
TString app ( 132 ) ;
app . spaces ( ) ;
set_row ( _rw , " @0g%s " , ( const char * ) app ) ;
}
else
{
TString app ( 198 ) ;
app . spaces ( ) ;
set_row ( _rw , " @0g%s " , ( const char * ) app ) ;
}
}
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 )
{
TString dare ( dep_dare . string ( _real_picture ) ) ;
TString avere ( dep_avere . string ( _real_picture ) ) ;
if ( _numcarat = = 1 )
{
set_row ( _rw , " @32gA RIPORTO@83g%s " , ( const char * ) dare ) ;
set_row ( _rw , " @100g%s " , ( const char * ) avere ) ;
}
else
if ( _numcarat = = 2 )
{
set_row ( _rw , " @32gA RIPORTO@100g%s " , ( const char * ) dare ) ;
set_row ( _rw , " @117g%s " , ( const char * ) avere ) ;
}
}
if ( lim = = 0 )
{
rmov . prev ( ) ;
_riga . destroy ( ) ;
_item = 0 ;
return TRUE ;
}
_rw - - ;
// return TRUE;
}
//_riga.destroy();
} //if (_nummast == 2)
if ( _sezione = = " D " )
{
_totale_periodo_dare + = _importo ;
_riporto_parziale_dare + = _importo ;
if ( _numcarat = = 1 ) // Stampa 132 caratteri
set_row ( _rw , " @83g%s " , ( const char * ) _importo_str ) ;
else
if ( _numcarat = = 2 ) // Stampa 198 caratteri
{
_saldo_progressivi + = _importo ;
_saldo_movimenti + = _importo ;
set_row ( _rw , " @100g%s " , ( const char * ) _importo_str ) ;
}
}
else if ( _sezione = = " A " )
{
_totale_periodo_avere + = _importo ;
_riporto_parziale_avere + = _importo ;
if ( _numcarat = = 1 ) // Stampa 132 caratteri
set_row ( _rw , " @100g%s " , ( const char * ) _importo_str ) ;
else
if ( _numcarat = = 2 ) // Stampa 198 caratteri
{
_saldo_progressivi - = _importo ;
_saldo_movimenti - = _importo ;
set_row ( _rw , " @117g%s " , ( const char * ) _importo_str ) ;
}
}
const int righe_rimaste = printer ( ) . rows_left ( ) ;
_stampato = righe_rimaste > = 1 ;
_saldo_progressivi_str = _saldo_progressivi . string ( _real_picture ) ;
_saldo_movimenti_str = _saldo_movimenti . string ( _real_picture ) ;
if ( _numcarat = = 2 )
{
ricerca_regiva ( ) ;
_protiva = atol ( _mov - > curr ( ) . get ( MOV_PROTIVA ) ) ;
if ( _protiva ! = 0 )
set_row ( _rw , " @191g%5d " , _protiva ) ;
if ( _tipo < 3 )
set_row ( _rw , " @183g#t " , & _regiva ) ;
_dataregrmov = current_cursor ( ) - > curr ( LF_RMOV ) . get_date ( RMV_DATAREG ) ;
dataregrmovstring = _dataregrmov . string ( ) ;
//Gestire la stampa di saldo_progressivi nella postprocess_page di RMOV
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 )
{
/* Il flag del cazzo, beato lui */
real saldo_prog ( _saldo_progressivi ) ;
if ( _stampa_progressivi_si )
{
calcola_progressivi ( ) ;
saldo_prog + = _saldo_progre_prec ;
}
set_row ( _rw , " @134g%r " , & saldo_prog ) ;
}
rmov . readat ( rec ) ;
}
_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 ( ) ;
else if ( _numcarat = = 2 )
fai_stampa198 ( ) ;
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 )
{
if ( _tipostampa = = 3 )
{
reset_print ( ) ;
if ( _numcarat = = 1 )
stampa_totali132 ( ) ;
else if ( _numcarat = = 2 )
stampa_totali198 ( ) ;
if ( _stampatotiva )
stampa_totaliiva ( ) ;
}
else if ( _tipostampa = = 2 )
{
reset_print ( ) ;
if ( ( _totale_saldo ! = 0.0 ) & & ( _puoi_stampare ) )
if ( _numcarat = = 1 )
stampa_totali132 ( ) ;
else if ( _numcarat = = 2 )
stampa_totali198 ( ) ;
if ( _stampatotiva )
stampa_totaliiva ( ) ;
}
else if ( _tipostampa = = 1 )
{
reset_print ( ) ;
if ( _puoi_stampare )
if ( _numcarat = = 1 )
stampa_totali132 ( ) ;
else if ( _numcarat = = 2 )
stampa_totali198 ( ) ;
if ( _stampatotiva )
stampa_totaliiva ( ) ;
}
}
else
if ( _nummast = = 2 )
{
if ( ! counter )
{
if ( _numcarat = = 1 )
carica_array_totali132 ( ) ;
else
if ( _numcarat = = 2 )
carica_array_totali198 ( ) ;
}
if ( _tipostampa = = 3 )
{
reset_print ( ) ;
if ( _numcarat = = 1 )
stampa_totali132_II ( ) ;
else if ( _numcarat = = 2 )
stampa_totali198_II ( ) ;
}
else if ( _tipostampa = = 2 )
{
reset_print ( ) ;
if ( ( _totale_saldo ! = 0.0 ) & & ( _puoi_stampare ) )
if ( _numcarat = = 1 )
stampa_totali132_II ( ) ;
else if ( _numcarat = = 2 )
stampa_totali198_II ( ) ;
}
else if ( _tipostampa = = 1 )
{
reset_print ( ) ;
if ( _puoi_stampare )
if ( _numcarat = = 1 )
stampa_totali132_II ( ) ;
else if ( _numcarat = = 2 )
stampa_totali198_II ( ) ;
}
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
TString sep = " " ;
for ( int i = 0 ; i < righe_rimaste ; i + + )
set_row ( _rw + + , " @0g%s " , ( const char * ) sep ) ;
}
}
}
// _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 )
{
if ( file = = LF_SALDI )
{
TPrinter & p = printer ( ) ;
// Stampa totali Bizzarri
if ( p . current_row ( ) > 0 )
{
int t1 , t2 , t3 , t4 , t5 ; // Tabulatori
reset_header ( ) ; // Azzera header e footer;
reset_footer ( ) ;
_gb_last_page = TRUE ;
TPrintrow row ; // Stampa riga vuota
p . print ( row ) ;
if ( _numcarat = = 1 )
{
TString line ( 132 , ' = ' ) ;
row . put ( line ) ;
t1 = 32 ; t2 = 55 ; t3 = 66 ; t4 = 83 ; t5 = 100 ;
}
else
{
TString line ( 198 , ' = ' ) ;
row . put ( line ) ;
t1 = 32 ; t2 = 55 ; t3 = 100 ; t4 = 117 ; t5 = 134 ;
}
// Stampa una fila di uguali
p . print ( row ) ;
row . reset ( ) ;
row . put ( trans ( " TOTALI GLOBALI PERIODO " ) , t1 ) ;
row . put ( _gb_saldo_periodo . string ( _real_picture ) , t3 ) ;
row . put ( _gb_totale_periodo_dare . string ( _real_picture ) , t4 ) ;
row . put ( _gb_totale_periodo_avere . string ( _real_picture ) , t5 ) ;
p . print ( row ) ;
row . reset ( ) ;
row . put ( trans ( " TOTALI GLOBALI PROGRESSIVI " ) , t1 ) ;
row . put ( _gb_saldo_progre . string ( _real_picture ) , t3 ) ;
row . put ( _gb_totprogre_dare . string ( _real_picture ) , t4 ) ;
row . put ( _gb_totprogre_avere . string ( _real_picture ) , t5 ) ;
p . print ( row ) ;
if ( _stampaprogre ) //Progressivi attuali
{
row . reset ( ) ;
row . put ( trans ( " TOTALI GLOBALI AL " ) , t1 ) ;
row . put ( _ultima_data_reg . string ( ) , t2 ) ;
row . put ( _gb_saldo_progre_al . string ( _real_picture ) , t3 ) ;
row . put ( _gb_totprogre_dare_al . string ( _real_picture ) , t4 ) ;
row . put ( _gb_totprogre_avere_al . string ( _real_picture ) , t5 ) ;
p . print ( row ) ;
}
}
_msk - > reset ( F_GRUPPOINI ) ;
_msk - > reset ( F_CONTOINI_CONTO ) ;
_msk - > reset ( F_DESCRINI_CONTO ) ;
_msk - > reset ( F_GRUPPOFINE ) ;
_msk - > reset ( F_CONTOFINE_CONTO ) ;
_msk - > reset ( F_DESCRFINE_CONTO ) ;
}
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 + + ;
TString fmt ( format ( " @%dg " , _ddociva_len ) ) ;
fmt < < " %15s " ;
if ( _stampatotiva )
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 ;
TString string = totale . string ( _real_picture ) ;
set_row ( _rw + j , fmt , ( const char * ) string ) ;
}
_b . destroy ( ) ;
}
}
// Ricerca della descrizione relativa al codice causale di MOV.dta
// sull'archivio CAUS.dta
void TMastrini_application : : descrizione_causale ( )
{
_caus - > setkey ( 1 ) ;
_caus - > curr ( ) . zero ( ) ;
_caus - > curr ( ) . put ( CAU_CODCAUS , _codcaus ) ;
_caus - > read ( ) ;
if ( _caus - > bad ( ) )
_caus - > zero ( ) ;
_descrcaus = _caus - > curr ( ) . get ( CAU_DESCR ) ;
}
// 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 - > zero ( ) ;
dep . format ( " %2s " , ( const char * ) _tipodoc ) ;
_tabtpd - > curr ( ) . put ( " CODTAB " , dep ) ;
_tabtpd - > read ( ) ;
_descrdociva = _tabtpd - > get ( " S0 " ) ;
_natdoc = _tabtpd - > get_int ( " 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 ;
_gb_saldo_periodo = ZERO ;
_gb_totale_periodo_dare = ZERO ;
_gb_totale_periodo_avere = ZERO ;
_gb_saldo_progre = ZERO ;
_gb_totprogre_dare = ZERO ;
_gb_totprogre_avere = ZERO ;
_gb_saldo_progre_al = ZERO ;
_gb_totprogre_dare_al = ZERO ;
_gb_totprogre_avere_al = ZERO ;
_gb_last_page = FALSE ;
_protiva = 0 ;
_stampa_progressivi_si = TRUE ;
_stampa_footer_si = TRUE ;
}
return TRUE ;
}
bool TMastrini_application : : set_print ( int )
{
_puoi_stampare = TRUE ;
KEY tasto ;
// 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 ;
}
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
}
}
_noseparator = _msk - > get_bool ( F_SEPARATOR ) ;
if ( _noseparator )
_real_picture = " ################ " ;
else
_real_picture = " ####.###.###.### " ;
set_real_picture ( _real_picture ) ;
if ( tasto = = K_ENTER )
{
_codice_ditta = get_firm ( ) ;
_annomsk = _msk - > get_int ( F_ANNO ) ;
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);
_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 ) ;
_tipostampa = _msk - > get_int ( F_TIPOSTAMPA ) ;
_numcarat = _msk - > get_int ( F_NUMCARAT ) ;
_nummast = _msk - > get_int ( F_NUMMAST ) ;
_data_ini = _msk - > get_date ( F_DATAINI ) ;
_data_fine = _msk - > get_date ( F_DATAFINE ) ;
TEsercizi_contabili esc ;
if ( _annomsk ! = 0 )
_anno_corrente = _annomsk ;
else
{
_anno_ghost = esc . date2esc ( _data_ini ) ;
_anno_corrente = _anno_ghost ;
_inizioes = esc [ _anno_ghost ] . inizio ( ) ;
}
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 ;
_anno_precedente = esc . pred ( _anno_corrente ) ;
ricerca_dati_ditta ( ) ;
int formato = _msk - > get_int ( F_FORMATO ) ; // Molto scenografico!
if ( _nummast = = 1 | | _nummast = = 3 )
printer ( ) . footerlen ( 4 ) ;
else
printer ( ) . footerlen ( 2 ) ;
//Crea il cursore su gruppo, conto e sottoconto del file RMOV
reset_files ( ) ; //resetta l'albero di stampa
add_file ( LF_SALDI ) ;
add_file ( LF_RMOV , LF_SALDI ) ;
select_cursor ( _cur1 ) ;
TRectype da ( LF_SALDI ) , a ( LF_SALDI ) ;
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 ) ;
// a.put(SLD_SOTTOCONTO,sottocontofine);
current_cursor ( ) - > setregion ( da , a ) ;
if ( _stampatotiva )
_b . destroy ( ) ;
//_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 ;
_riga . destroy ( ) ;
_lista . destroy ( ) ;
switch ( _tipostampa )
{
case 1 : _totale_saldo = 1.0 ; break ;
case 2 : _totale_saldo = 0.0 ; break ;
case 3 : _totale_saldo = 1.0 ; break ;
default : break ;
}
enable_print_menu ( ) ;
enable_link ( " Collegamento prima nota: " , ' r ' ) ;
return TRUE ;
}
else
return FALSE ;
}
void TMastrini_application : : data_fine_esercizio ( int anno )
{
TEsercizi_contabili esc ;
_data_inizioese = esc [ anno ] . inizio ( ) ;
_data_finese = esc [ anno ] . fine ( ) ;
}
void TMastrini_application : : preprocess_header ( )
{
if ( _gb_last_page )
return ;
if ( _nummast = = 1 )
{
if ( _tipostampa = = 3 )
crea_intestazione ( ) ;
else
if ( _tipostampa = = 2 )
{
if ( ( _totale_saldo ! = 0.0 ) & & ( _puoi_stampare ) )
crea_intestazione ( ) ;
}
else if ( _tipostampa = = 1 )
if ( _puoi_stampare )
crea_intestazione ( ) ;
}
else
if ( _nummast = = 3 & & ! _gia_stampata_intestazione )
{
if ( _tipostampa = = 3 )
crea_intestazione ( ) ;
else
if ( _tipostampa = = 2 )
{
if ( ( _totale_saldo ! = 0.0 ) & & ( _puoi_stampare ) )
crea_intestazione ( ) ;
}
else if ( _tipostampa = = 1 )
if ( _puoi_stampare )
crea_intestazione ( ) ;
}
}
void TMastrini_application : : preprocess_footer ( )
{
if ( _gb_last_page )
return ;
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 )
{
TString dare ( dep_dare . string ( _real_picture ) ) ;
TString avere ( dep_avere . string ( _real_picture ) ) ;
if ( _numcarat = = 1 )
{
set_footer ( 2 , " @32gA RIPORTO@83g%s " , ( const char * ) dare ) ;
set_footer ( 2 , " @100g%s " , ( const char * ) avere ) ;
}
else
{
set_footer ( 2 , " @32gA RIPORTO@100g%s " , ( const char * ) dare ) ;
set_footer ( 2 , " @117g%s " , ( const char * ) avere ) ;
}
}
}
}
void TMastrini_application : : conto ( int gruppo , int conto , bool no_contropartita )
{
TLocalisamfile pconti ( LF_PCON ) ;
pconti . setkey ( 1 ) ;
pconti . zero ( ) ;
pconti . put ( PCN_GRUPPO , gruppo ) ;
pconti . put ( PCN_CONTO , conto ) ;
pconti . read ( ) ;
if ( pconti . bad ( ) )
pconti . zero ( ) ;
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 ;
_nditte - > setkey ( 1 ) ;
_nditte - > curr ( ) . zero ( ) ;
_nditte - > curr ( ) . put ( NDT_CODDITTA , _codice_ditta ) ;
_nditte - > read ( ) ;
app = _nditte - > curr ( ) . get_long ( NDT_CODDITTA ) ;
_ragsoc = _nditte - > curr ( ) . get ( NDT_RAGSOC ) ;
_unloc - > setkey ( 1 ) ;
_unloc - > curr ( ) . zero ( ) ;
_unloc - > curr ( ) . put ( ULC_CODDITTA , app ) ;
_unloc - > curr ( ) . put ( ULC_CODULC , " 1 " ) ;
_unloc - > read ( ) ;
_indulc = _unloc - > curr ( ) . get ( ULC_INDULC ) ;
_civulc = _unloc - > curr ( ) . get ( ULC_CIVULC ) ;
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 ) ;
}
_capulc = _unloc - > curr ( ) . get ( ULC_CAPULC ) ;
_comulc = _unloc - > curr ( ) . get ( ULC_COMULC ) ;
_comuni - > setkey ( 1 ) ;
_comuni - > zero ( ) ;
_comuni - > put ( COM_COM , _comulc ) ;
_comuni - > read ( ) ;
if ( _comuni - > good ( ) )
{
_com = _comuni - > get ( COM_DENCOM ) ;
_prov = _comuni - > get ( COM_PROVCOM ) ;
}
else
{
_com = " " ;
_prov = " " ;
}
}
// Crea l'intestazione per la stampa a 132 e a 198 caratteri
void TMastrini_application : : crea_intestazione ( )
{
TString sep ( 132 ) , sep1 ( 198 ) ;
sep = " " ;
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 ) ;
sep = " " ;
set_header ( 2 , " @1g%s " , ( const char * ) sep ) ;
//set_header(1,"@126gPag. %2d", _numero_pag++);
}
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 ) ;
sep1 = " " ;
set_header ( 2 , " @1g%s " , ( const char * ) sep1 ) ;
//set_header(1,"@190gPagina %2d", _numero_pag++);
}
if ( _nummast ! = 3 )
_pagina + + ;
if ( _nummast ! = 3 | | _pagina ! = np )
{
set_header ( 1 , " @0g%s@6g%5ld " , trans ( " DITTA " ) , _codice_ditta ) ;
set_header ( 1 , " @12g%-.45s " , ( const char * ) _ragsoc ) ;
set_header ( 1 , " @59g%s " , ( const char * ) _indulc ) ;
//set_header (1, "@86g%-.9s", (const char*) _civulc);
set_header ( 1 , " @97g%-.5s " , ( const char * ) _capulc ) ;
set_header ( 1 , " @103g%-.18s " , ( const char * ) _com ) ;
set_header ( 1 , " @122g%-.3s " , ( const char * ) _prov ) ;
}
if ( _nummast = = 3 )
set_header ( 3 , " @0g%s@12g@b%3d %3d " , trans ( " Conto " ) , _gruppo , _conto ) ;
else
set_header ( 3 , " @0g%s@12g%3d %3d " , trans ( " Conto " ) , _gruppo , _conto ) ;
/*
if ( _tmcf = = ' C ' )
_tipo_mask = 1 ;
else if ( _tmcf = = ' F ' )
_tipo_mask = 2 ;
else if ( _tmcf = = ' \0 ' )
*/
_tipo_mask = 3 ;
switch ( _tipo_mask )
{
case 1 : ricerca_clifo ( ) ;
break ;
case 2 : ricerca_clifo ( ) ;
break ;
case 3 : ricerca_gruppo ( ) ;
break ;
default : break ;
}
if ( _numcarat = = 1 )
{
sep . fill ( ' - ' ) ; //Stampa 132 - (sep(132))
set_header ( 6 , ( const char * ) sep ) ;
set_header ( 7 , " %s@19g%s@117g%s@131g%s " ,
trans ( " Operazione " ) , trans ( " Documento " ) , trans ( " Sotto " ) , trans ( " A " ) ) ;
if ( _stampa_mov_prov )
set_header ( 7 , " @129gM " ) ;
set_header ( 8 , trans ( " Data " ) ) ;
if ( _stampanum < 3 )
set_header ( 8 , " @11g%s " , trans ( " Numero " ) ) ;
set_header ( 8 , " @19g%s@30g%s@38g%s@61g%s@95g%s@111g%s@117g%s@131g%s " ,
trans ( " Data " ) , trans ( " Numero " ) , trans ( " Cod.Causale " ) , trans ( " Descrizione " ) ,
trans ( " Dare " ) , trans ( " Avere " ) , trans ( " Conto " ) , trans ( " C " ) ) ;
if ( _stampa_mov_prov )
set_header ( 8 , " @129g%s " , trans ( " P " ) ) ;
sep . fill ( ' - ' ) ;
set_header ( 9 , ( const char * ) sep ) ;
}
else
{
sep1 . fill ( ' - ' ) ; //Stampa 198 - (sep1(198))
set_header ( 6 , " @0g%s " , ( const char * ) sep1 ) ;
set_header ( 7 , " %s@23g%s@34g%s@169g%s@183g%s@190g%s@197g%s " ,
trans ( " Operazione " ) , trans ( " Data " ) , trans ( " Numero " ) , trans ( " Sotto " ) ,
trans ( " Reg " ) , trans ( " Numero " ) , trans ( " A " ) ) ;
if ( _stampa_mov_prov )
set_header ( 7 , " @195g%s " , trans ( " M " ) ) ;
set_header ( 8 , trans ( " Data " ) ) ;
if ( _stampanum < 3 )
set_header ( 8 , " @11g%s " , trans ( " Numero " ) ) ;
set_header ( 8 , " @23g%s@42g%s@70g%s@112g%s@127g%s@135g%s@152g%s@169g%s@183g%s@189g%s@197g%s " ,
trans ( " Documento " ) , trans ( " Cod.Causale " ) , trans ( " Descrizione " ) , trans ( " Dare " ) , trans ( " Avere " ) ,
trans ( " Saldo progre. " ) , trans ( " Saldo movim. " ) , trans ( " Conto " ) , trans ( " Iva " ) ,
trans ( " Protoc. " ) , trans ( " C " ) ) ;
if ( _stampa_mov_prov )
set_header ( 8 , " @195g%s " , trans ( " P " ) ) ;
sep1 . fill ( ' - ' ) ;
set_header ( 9 , " @0g%s " , ( const char * ) sep1 ) ;
}
calcola_progressivi ( ) ;
// Il saldo dei progressivi va aggiornato solo se e' la prima pagina del mastrino!
if ( _nummast = = 1 & & _stampa_progressivi_si )
_saldo_progressivi + = _saldo_progre_prec ;
if ( _stampa_progressivi_si )
{
if ( _numcarat = = 1 )
{
set_header ( 10 , " @42g%s@66g%s " , trans ( " PROGRESSIVI PRECEDENTI " ) , _saldo_progre_prec . string ( _real_picture ) ) ;
set_header ( 10 , " @83g%s " , _progredare . string ( _real_picture ) ) ;
set_header ( 10 , " @100g%s " , _progreavere . string ( _real_picture ) ) ;
}
if ( _numcarat = = 2 )
{
set_header ( 10 , " @70g%s@100g%s " , trans ( " PROGRESSIVI PRECEDENTI " ) , _progredare . string ( _real_picture ) ) ;
set_header ( 10 , " @117g%s " , _progreavere . string ( _real_picture ) ) ;
set_header ( 10 , " @134g%s " , _saldo_progre_prec . string ( _real_picture ) ) ;
}
_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 )
{
set_header ( 10 , " @32g%s@83g%s " , trans ( " A RIPORTO " ) , dep_dare . string ( _real_picture ) ) ;
set_header ( 10 , " @100g%s " , dep_avere . string ( _real_picture ) ) ;
}
if ( _numcarat = = 2 )
{
set_header ( 10 , " @32g%s@100g%s " , trans ( " A RIPORTO " ) , dep_dare . string ( _real_picture ) ) ;
set_header ( 10 , " @117g%s " , dep_avere . string ( _real_picture ) ) ;
}
}
_riporto_parziale_dare = ZERO ;
_riporto_parziale_avere = ZERO ;
}
if ( _numcarat = = 1 )
{
sep = " " ;
set_header ( 11 , " @1g%s " , ( const char * ) sep ) ;
}
else if ( _numcarat = = 2 )
{
sep1 = " " ;
set_header ( 11 , " @1g%s " , ( const char * ) sep1 ) ;
}
if ( _pagina ! = np & & _nummast = = 3 )
_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 )
{
sep < < " Pag. @# " ;
set_row ( r , " @126g%s " , ( const char * ) sep ) ;
}
else if ( _numcarat = = 2 )
{
sep < < " Pagina @# " ;
set_row ( r , " @190g%s " , ( const char * ) sep ) ;
}
}
}
else
{
if ( _numcarat = = 1 )
set_row ( r , " @126g%s %2d " , trans ( " Pag. " ) , _numero_pag + + ) ;
else if ( _numcarat = = 2 )
set_row ( r , " @190g%s %2d " , trans ( " Pagina " ) , _numero_pag + + ) ;
}
if ( _nummast ! = 3 | | _pagina ! = np )
{
set_row ( r , " @0g%s@6g%5ld " , trans ( " DITTA " ) , _codice_ditta ) ;
set_row ( r , " @12g%-45s " , ( const char * ) _ragsoc ) ;
set_row ( r , " @59g%s " , ( const char * ) _indulc ) ;
//set_row (r, "@86g%-9s", (const char*) _civulc);
set_row ( r , " @97g%-5s " , ( const char * ) _capulc ) ;
set_row ( r , " @103g%-18s " , ( const char * ) _com ) ;
set_row ( r , " @122g%-3s " , ( const char * ) _prov ) ;
r + = 2 ;
}
if ( _nummast = = 3 )
set_row ( r , " @0g%s@12g@b%3d %3d " , trans ( " Conto " ) , _gruppo , _conto ) ;
else
set_row ( r , " @0g%s@12g%3d %3d " , trans ( " Conto " ) , _gruppo , _conto ) ;
/*
if ( _tmcf = = ' C ' )
_tipo_mask = 1 ;
else if ( _tmcf = = ' F ' )
_tipo_mask = 2 ;
else if ( _tmcf = = ' \0 ' )
*/
_tipo_mask = 3 ;
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 )
{
sep . fill ( ' - ' ) ; //Stampa 132 - (sep(132))
set_row ( r + + , " @1g%s " , ( const char * ) sep ) ;
set_row ( r + + , " %s@19g%s@117g%s@131g%s " ,
trans ( " Operazione " ) , trans ( " Documento " ) , trans ( " Sotto " ) , trans ( " A " ) ) ;
if ( _stampa_mov_prov )
set_header ( r - 1 , " @129g%s " , trans ( " M " ) ) ;
set_row ( r , trans ( " Data " ) ) ;
if ( _stampanum < 3 )
set_row ( r , " @11g%s " , trans ( " Numero " ) ) ;
set_row ( r + + , " @19gData@30gNumero@38gCod.Causale@61gDescrizione@95gDare@111gAvere@117gConto@131gC " ) ;
if ( _stampa_mov_prov )
set_header ( r - 1 , " @129gP " ) ;
sep . fill ( ' - ' ) ;
set_row ( r + + , " @1g%s " , ( const char * ) sep ) ;
}
else
{
sep1 . fill ( ' - ' ) ; //Stampa 198 - (sep1(198))
set_row ( r + + , " @0g%s " , ( const char * ) sep1 ) ;
set_row ( r + + , " Operazione@23gData@34gNumero@169gContro@183gReg@190gNumero@197gA " ) ;
if ( _stampa_mov_prov )
set_row ( r - 1 , " @195gM " ) ;
set_row ( r , " Data " ) ;
if ( _stampanum < 3 )
set_row ( r , " @11gnumero " ) ;
set_row ( r , " @23gDocumento@42gCod.Causale@70gDescrizione@112gDare@127gAvere " ) ;
set_row ( r + + , " @135gSaldo progre.@152gSaldo movim.@169gConto@183gIva@189gProtoc.@197gC " ) ;
if ( _stampa_mov_prov )
set_row ( r - 1 , " @195gP " ) ;
sep1 . fill ( ' - ' ) ;
set_row ( r + + , " @0g%s " , ( const char * ) sep1 ) ;
}
_pagina = np ;
return r ;
}
void TMastrini_application : : stampa_progre_riporto ( )
{
TString sep ( 132 ) , sep1 ( 198 ) ;
if ( _nummast = = 1 | | _nummast = = 3 )
_rw = 1 ;
if ( _stampa_progressivi_si )
{
stampa_progressivi ( ) ;
_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 )
{
set_row ( _rw , " @32g%s@83g%r " , trans ( " A RIPORTO " ) , & dep_dare ) ;
set_row ( _rw + + , " @100g%r " , & dep_avere ) ;
}
if ( _numcarat = = 2 )
{
set_row ( _rw , " @32g%s@100g%r " , trans ( " A RIPORTO " ) , & dep_dare ) ;
set_row ( _rw + + , " @117g%r " , & dep_avere ) ;
}
}
_riporto_parziale_dare = ZERO ;
_riporto_parziale_avere = ZERO ;
}
if ( _numcarat = = 1 )
{
sep = " " ;
set_row ( _rw , " @1g%s " , ( const char * ) sep ) ;
}
else
{
sep1 = " " ;
set_row ( _rw , " @1g%s " , ( const char * ) sep1 ) ;
}
}
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 )
{
set_row ( r , " @32g%s@83g%r " , trans ( " A RIPORTO " ) , & dep_dare ) ;
set_row ( r + + , " @100g%r " , & dep_avere ) ;
}
if ( _numcarat = = 2 )
{
set_row ( r , " @32g%s@100g%r " , trans ( " A RIPORTO " ) , & dep_dare ) ;
set_row ( r + + , " @117g%r " , & dep_avere ) ;
}
}
_riporto_parziale_dare = ZERO ;
_riporto_parziale_avere = ZERO ;
}
if ( _numcarat = = 1 )
{
sep = " " ;
set_row ( r + + , " @1g%s " , ( const char * ) sep ) ;
}
else
{
sep1 = " " ;
set_row ( r + + , " @1g%s " , ( const char * ) sep1 ) ;
}
return r ;
}
void TMastrini_application : : calcola_progressivi_al ( )
{
long record , annoes ;
// long sottoc;
int gruppo , conto ;
TDate datareg , datacomp ;
TLocalisamfile & rmov = current_cursor ( ) - > file ( LF_RMOV ) ;
char sezione ;
real importo ;
TDate data ;
_totale_prima_dare = ZERO ;
_totale_prima_avere = ZERO ;
record = rmov . recno ( ) ;
rmov . zero ( ) ;
rmov . put ( RMV_GRUPPO , _gruppo ) ;
rmov . put ( RMV_CONTO , _conto ) ;
// rmov.put(RMV_SOTTOCONTO, _sottoc);
for ( rmov . read ( ) ; ! rmov . eof ( ) ; rmov . next ( ) )
{
annoes = rmov . get_int ( RMV_ANNOES ) ;
datareg = rmov . get_date ( RMV_DATAREG ) ;
sezione = rmov . get ( RMV_SEZIONE ) [ 0 ] ;
importo = rmov . get_real ( RMV_IMPORTO ) ;
long numreg = rmov . get_long ( RMV_NUMREG ) ;
_mov - > setkey ( 1 ) ;
_mov - > curr ( ) . zero ( ) ;
_mov - > curr ( ) . put ( MOV_NUMREG , numreg ) ;
_mov - > read ( ) ;
if ( _mov - > bad ( ) )
_mov - > zero ( ) ;
datacomp = ( _mov - > curr ( ) . get ( MOV_DATACOMP ) ) ;
TString provvis ( _mov - > curr ( ) . get ( MOV_PROVVIS ) ) ;
if ( ( _stampa_mov_prov ) | | ( ( ! _stampa_mov_prov ) & & ( provvis . trim ( ) . empty ( ) ) ) )
{
if ( _annomsk = = 0 )
{
datareg = rmov . get_date ( RMV_DATAREG ) ;
data = _inizioes ;
}
else
{
datareg = datacomp ;
data = _data_inizioese ;
}
gruppo = rmov . get_int ( RMV_GRUPPO ) ;
conto = rmov . get_int ( RMV_CONTO ) ;
// sottoc = rmov.get_long(RMV_SOTTOCONTO);
if ( ( gruppo ! = _gruppo ) | | ( conto ! = _conto ) /*||(sottoc != _sottoc)*/ )
break ;
else if ( ( ( annoes = = _annomsk ) | | ( _annomsk = = 0 ) ) & & ( datareg > = data ) & & ( datareg < _data_ini ) ) //Legge movimenti con data < data iniziale
if ( sezione = = ' D ' )
_totale_prima_dare + = importo ;
else
_totale_prima_avere + = importo ;
} // if ((_stampa_mov_prov) || ((!_stampa_mov_prov) && (provvis.trim().empty())))
}
rmov . readat ( record ) ;
}
void TMastrini_application : : calcola_progressivi ( )
{
/* 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 */
TLocalisamfile saldi ( LF_SALDI ) ;
real progdare_attuale , progavere_attuale , progdare_prec , progavere_prec ;
real progredare_eseprec , progreavere_eseprec , pdarep , paverep ;
TImporto saldoini_attuale , saldofine_attuale ;
pdarep = ZERO ;
paverep = ZERO ;
// Ricerca sull'archivio saldi dei record con gruppo,conto,sottoconto
// uguali a quelli di rmov per il calcolo dei progressivi precedenti
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 ) )
continue ;
int annoes_saldi = saldi . get_int ( SLD_ANNOES ) ;
//Calcola i progressivi dell'esercizio attuale
if ( annoes_saldi = = _anno_corrente )
{
progdare_attuale + = saldi . get_real ( SLD_PDARE ) ;
progavere_attuale + = saldi . get_real ( SLD_PAVERE ) ;
_ultima_data_reg = saldi . get_date ( SLD_DATAULMOV ) ;
saldoini_attuale + = TImporto ( saldi . get_char ( SLD_FLAGSALINI ) , saldi . get_real ( SLD_SALDO ) ) ;
saldofine_attuale + = TImporto ( saldi . get_char ( SLD_FLAGSALFIN ) , saldi . get_real ( SLD_SALDOFIN ) ) ;
}
//Calcola i progressivi dell'esercizio precedente
if ( annoes_saldi = = _anno_precedente )
{
pdarep + = saldi . get_real ( SLD_PDARE ) ;
paverep + = saldi . get_real ( SLD_PAVERE ) ;
if ( _stampa_mov_prov )
{
progredare_eseprec + = saldi . get_real ( SLD_PDARE ) + saldi . get_real ( SLD_PDAREPRO ) ;
progreavere_eseprec + = saldi . get_real ( SLD_PAVERE ) + saldi . get_real ( SLD_PAVEREPRO ) ;
}
}
} // 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 /*&& saldo == ZERO*/ ) // Guy: Non capisco perche' sia commentato!
{
if ( ( _indbil = = 1 ) | | ( _indbil = = 2 ) | | ( _indbil = = 5 ) )
{
/* Guy: cambio implementazione
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 ) ;
saldi . readat ( pos ) ;
if ( saldo > ZERO )
{
progredare_eseprec = saldo ;
progdare_prec = saldo ;
}
else
if ( saldo < ZERO )
{
saldo = - saldo ;
progreavere_eseprec = saldo ;
progavere_prec = saldo ;
}
*/
progredare_eseprec = progdare_prec = ZERO ;
saldi . curr ( ) = record ;
for ( saldi . read ( _isgteq ) ; saldi . good ( ) & & saldi . curr ( ) = = record ; saldi . next ( ) )
{
if ( saldi . get_bool ( SLD_FLSCA ) )
continue ;
_sottoc = saldi . get_long ( SLD_SOTTOCONTO ) ;
real saldoprec = _sld - > saldofin_esprec ( _anno_corrente , _gruppo , _conto , _sottoc , TRUE ) ;
if ( saldoprec > ZERO )
{
progredare_eseprec + = saldoprec ;
progdare_prec + = saldoprec ;
}
else
{
progreavere_eseprec - = saldoprec ;
progavere_prec - = saldoprec ;
}
}
}
}
calcola_progressivi_al ( ) ;
//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 alla <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
_totprogre_dare_al = progdare_attuale ;
_totprogre_avere_al = progavere_attuale ;
if ( _annomsk ! = 0 )
{
_totprogre_dare_al + = progdare_prec ;
_totprogre_avere_al + = progavere_prec ;
}
saldoini_attuale . normalize ( ) ;
if ( saldoini_attuale . sezione ( ) = = ' D ' )
_totprogre_dare_al + = saldoini_attuale . valore ( ) ;
else
_totprogre_avere_al + = saldoini_attuale . valore ( ) ;
saldofine_attuale . normalize ( ) ;
if ( saldofine_attuale . sezione ( ) = = ' D ' )
_totprogre_dare_al + = saldofine_attuale . valore ( ) ;
else
_totprogre_avere_al + = saldofine_attuale . valore ( ) ;
}
void TMastrini_application : : stampa_progressivi ( )
{
if ( _nummast = = 1 | | _nummast = = 3 )
_rw = 1 ;
if ( _numcarat = = 1 )
{
set_row ( _rw , " @42gPROGRESSIVI PRECEDENTI@66g%r " , & _saldo_progre_prec ) ;
set_row ( _rw , " @83g%r " , & _progredare ) ;
set_row ( _rw + + , " @100g%r " , & _progreavere ) ;
}
else
{
set_row ( _rw , " @70gPROGRESSIVI PRECEDENTI@100g%r " , & _progredare ) ;
set_row ( _rw , " @117g%r " , & _progreavere ) ;
set_row ( _rw + + , " @134g%r " , & _saldo_progre_prec ) ;
}
}
int TMastrini_application : : stampa_progressivi ( int start_riga )
{
int r = start_riga ;
if ( _numcarat = = 1 )
{
set_row ( r , " @42gPROGRESSIVI PRECEDENTI@66g%r " , & _saldo_progre_prec ) ;
set_row ( r , " @83g%r " , & _progredare ) ;
set_row ( r + + , " @100g%r " , & _progreavere ) ;
}
else
{
set_row ( r , " @70gPROGRESSIVI PRECEDENTI@100g%r " , & _progredare ) ;
set_row ( r , " @117g%r " , & _progreavere ) ;
set_row ( r + + , " @134g%r " , & _saldo_progre_prec ) ;
}
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 ;
TLocalisamfile clifo ( LF_CLIFO ) ;
TLocalisamfile pconti ( LF_PCON ) ;
TString16 dataini , datafine ;
TString descriz , descriz2 ;
int numrivd ;
indcf = " " ;
clifo . setkey ( 1 ) ;
clifo . zero ( ) ;
clifo . put ( CLI_TIPOCF , _tmcf ) ;
clifo . put ( CLI_CODCF , _sottoc ) ;
clifo . read ( ) ;
if ( clifo . bad ( ) )
clifo . zero ( ) ;
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 ) ;
_comuni - > setkey ( 1 ) ;
_comuni - > zero ( ) ;
_comuni - > put ( COM_STATO , statocf ) ;
_comuni - > put ( COM_COM , comcf ) ;
_comuni - > read ( ) ;
if ( _comuni - > good ( ) )
{
dencom = _comuni - > get ( COM_DENCOM ) ;
provcom = _comuni - > get ( COM_PROVCOM ) ;
}
else
{
//dencom="";
dencom = clifo . get ( CLI_LOCCF ) ;
provcom = " " ;
}
pconti . setkey ( 1 ) ;
pconti . zero ( ) ;
pconti . put ( PCN_GRUPPO , _gruppo ) ;
pconti . put ( PCN_CONTO , _conto ) ;
pconti . read ( ) ;
_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 )
set_header ( 4 , " @r%s@8g@b%c " , trans ( " Classe " ) , _lettivd ) ;
else
set_header ( 4 , " %s@8g%c " , trans ( " Classe " ) , _lettivd ) ;
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 ) ;
*/
dataini = _data_ini . string ( ) ;
datafine = _data_fine . string ( ) ;
if ( _annomsk = = 0 )
{
if ( _nummast = = 3 )
{
set_header ( 5 , " @rPeriodo@10g@b%s " , ( const char * ) dataini ) ;
set_header ( 5 , " @22g@b%s@r " , ( const char * ) datafine ) ;
}
else
{
set_header ( 5 , " Periodo@10g%s " , ( const char * ) dataini ) ;
set_header ( 5 , " @22g%s " , ( const char * ) datafine ) ;
}
}
else
{
if ( _nummast = = 3 )
{
set_header ( 5 , " @rComp. da@9g@b%s " , ( const char * ) dataini ) ;
set_header ( 5 , " @20g@ra@22g@b%s@r " , ( const char * ) datafine ) ;
}
else
{
set_header ( 5 , " Comp. da@9g%s " , ( const char * ) dataini ) ;
set_header ( 5 , " @20ga@22g%s " , ( const char * ) datafine ) ;
}
}
set_header ( 5 , " @33gP.I.@37g%-11s " , ( const char * ) paiv ) ;
set_header ( 5 , " @49gCF@52g%-16s " , ( const char * ) cofi ) ;
set_header ( 5 , " @66g%-.25s " , ( const char * ) indcf ) ;
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 )
{
set_header ( 5 , " @134g%-4s " , ( const char * ) ptel ) ;
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 ;
TLocalisamfile clifo ( LF_CLIFO ) ;
TLocalisamfile pconti ( LF_PCON ) ;
TString16 dataini , datafine ;
TString descriz , descriz2 ;
int numrivd ;
int r = start ;
indcf = " " ;
clifo . setkey ( 1 ) ;
clifo . zero ( ) ;
clifo . put ( CLI_TIPOCF , _tmcf ) ;
clifo . put ( CLI_CODCF , _sottoc ) ;
clifo . read ( ) ;
if ( clifo . bad ( ) )
clifo . zero ( ) ;
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 ) ;
_comuni - > setkey ( 1 ) ;
_comuni - > zero ( ) ;
_comuni - > put ( COM_STATO , statocf ) ;
_comuni - > put ( COM_COM , comcf ) ;
_comuni - > read ( ) ;
if ( _comuni - > good ( ) )
{
dencom = _comuni - > get ( COM_DENCOM ) ;
provcom = _comuni - > get ( COM_PROVCOM ) ;
}
else
{
//dencom="";
dencom = clifo . get ( CLI_LOCCF ) ;
provcom = " " ;
}
pconti . setkey ( 1 ) ;
pconti . zero ( ) ;
pconti . put ( PCN_GRUPPO , _gruppo ) ;
pconti . put ( PCN_CONTO , _conto ) ;
pconti . read ( ) ;
_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 )
set_row ( r , " @r%s@8g@b%c " , trans ( " Classe " ) , _lettivd ) ;
else
set_row ( r , " %s@8g%c " , trans ( " Classe " ) , _lettivd ) ;
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 )
{
set_row ( r , " @r%s@10g@b%s " , trans ( " Periodo " ) , ( const char * ) dataini ) ;
set_row ( r , " @22g%s@r " , ( const char * ) datafine ) ;
}
else
{
set_row ( r , " %s@10g%s " , trans ( " Periodo " ) , ( const char * ) dataini ) ;
set_row ( r , " @22g%s " , ( const char * ) datafine ) ;
}
}
else
{
if ( _nummast = = 3 )
{
set_row ( r , " @r%s@9g@b%s " , trans ( " Comp.dal " ) , ( const char * ) dataini ) ;
set_row ( r , " @20g@r%s@22g@b%s@r " , trans ( " al " ) , ( const char * ) datafine ) ;
}
else
{
set_row ( r , " %s@9g%s " , trans ( " Comp.dal " ) , ( const char * ) dataini ) ;
set_row ( r , " @20g%s@22g%s " , trans ( " al " ) , ( const char * ) datafine ) ;
}
}
set_row ( r , " @33gP.I.@37g%-11s " , ( const char * ) paiv ) ;
set_row ( r , " @49gCF@52g%-16s " , ( const char * ) cofi ) ;
set_row ( r , " @66g%-.25s " , ( const char * ) indcf ) ;
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 )
{
set_row ( r , " @134g%-4s " , ( const char * ) ptel ) ;
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 )
{
TLocalisamfile pconti ( LF_PCON ) ;
pconti . setkey ( 1 ) ;
pconti . zero ( ) ;
pconti . put ( PCN_GRUPPO , _gruppo ) ;
pconti . put ( PCN_CONTO , _conto ) ;
if ( scelta )
pconti . put ( PCN_SOTTOCONTO , _sottoc ) ;
pconti . read ( ) ;
_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 )
set_header ( 4 , " @0g@r%s@12g@b%c " , trans ( " Classe " ) , _lettivd ) ;
else
set_header ( 4 , " @0g%s@12g%c " , trans ( " Classe " ) , _lettivd ) ;
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 )
{
set_header ( 5 , " @r%s@12g@b%s " , trans ( " Periodo " ) , ( const char * ) dataini ) ;
set_header ( 5 , " @24g@b%s@r " , ( const char * ) datafine ) ;
}
else
{
set_header ( 5 , " %s@12g%s " , trans ( " Periodo " ) , ( const char * ) dataini ) ;
set_header ( 5 , " @24g%s " , ( const char * ) datafine ) ;
}
}
else
{
if ( _nummast = = 3 )
{
set_header ( 5 , " @r%s@23g@b%s " , trans ( " Periodo di competenza " ) , ( const char * ) dataini ) ;
set_header ( 5 , " @35g%s@r " , ( const char * ) datafine ) ;
}
else
{
set_header ( 5 , " %s@23g%s " , trans ( " Periodo di competenza " ) , ( const char * ) dataini ) ;
set_header ( 5 , " @35g%s " , ( const char * ) datafine ) ;
}
}
}
int TMastrini_application : : ricerca_gruppo ( int start )
{
TString dataini , datafine ;
int r = start ;
/* Guy: non la stampo e non la ricerco nemmeno
TString80 descr , descriz , descriz2 , dep ;
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());
r + + ;
/*
if ( _nummast = = 3 )
set_row ( r , " @0g@r%s@12g@b%c " , trans ( " Classe " ) , _lettivd ) ;
else
set_row ( r , " @0g%s@12g%c " , trans ( " Classe " ) , _lettivd ) ;
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 )
{
set_row ( r , " @r%s@12g@b%s " , trans ( " Periodo " ) , ( const char * ) dataini ) ;
set_row ( r , " @24g%s@r " , ( const char * ) datafine ) ;
}
else
{
set_row ( r , " %s@12g%s " , trans ( " Periodo " ) , ( const char * ) dataini ) ;
set_row ( r , " @24g%s " , ( const char * ) datafine ) ;
}
}
else
{
if ( _nummast = = 3 )
{
set_row ( r , " @r%s@23g@b%s " , trans ( " Periodo di competenza " ) , ( const char * ) dataini ) ;
set_row ( r , " @35g%s@r " , ( const char * ) datafine ) ;
}
else
{
set_row ( r , " %s@23g%s " , trans ( " Periodo di competenza " ) , ( const char * ) dataini ) ;
set_row ( r , " @35g%s " , ( const char * ) datafine ) ;
}
}
return r ;
}
const char * TMastrini_application : : descrizione_classe ( char sezione , char lettera , int numr , int numero )
{
TTable tabivd ( TAB_IVD ) ;
TString dep , dep2 ;
tabivd . zero ( ) ;
if ( numr = = 0 & & numero = = 0 )
dep = format ( " %c%c " , sezione , lettera ) ;
else
if ( numero = = 0 )
{
if ( numr ! = 0 )
dep = format ( " %1c%1c%04d " , sezione , lettera , numr ) ;
else
dep = format ( " %c%c " , sezione , lettera ) ;
}
else
{
if ( numr ! = 0 )
dep = format ( " %1c%1c%04d%02d " , sezione , lettera , numr , numero ) ;
else
dep = format ( " %c%c %02d " , sezione , lettera , numero ) ;
}
tabivd . put ( " CODTAB " , dep ) ;
tabivd . read ( ) ;
dep2 = tabivd . get ( " CODTAB " ) ;
if ( dep = = dep2 )
TMP = tabivd . get ( " S0 " ) ;
else
TMP = " " ;
return TMP ;
}
//Ricerca la descrizione relativa al gruppo da stampare
const char * TMastrini_application : : descrizione_gruppo ( )
{
TLocalisamfile pconti ( LF_PCON ) ;
pconti . zero ( ) ;
pconti . put ( PCN_GRUPPO , _gruppo ) ;
if ( pconti . read ( ) ! = NOERR ) pconti . zero ( ) ;
TMP = pconti . get ( PCN_DESCR ) ;
return TMP ;
}
// Ricerca la descrizione relativa al conto da stampare
const char * TMastrini_application : : descrizione_conto ( )
{
TLocalisamfile pconti ( LF_PCON ) ;
pconti . zero ( ) ;
pconti . put ( PCN_GRUPPO , _gruppo ) ;
pconti . put ( PCN_CONTO , _conto ) ;
if ( pconti . read ( ) ! = NOERR ) pconti . zero ( ) ;
TMP = pconti . get ( PCN_DESCR ) ;
return TMP ;
}
const char * TMastrini_application : : descrizione_sottoconto ( )
{
TLocalisamfile pconti ( LF_PCON ) ;
pconti . zero ( ) ;
pconti . put ( PCN_GRUPPO , _gruppo ) ;
pconti . put ( PCN_CONTO , _conto ) ;
pconti . put ( PCN_SOTTOCONTO , _sottoc ) ;
if ( pconti . read ( ) ! = NOERR ) pconti . zero ( ) ;
TMP = pconti . get ( PCN_DESCR ) ;
return TMP ;
}
// 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
{
msk - > set_handler ( F_DATAINI , data_inizio ) ;
msk - > set_handler ( F_DATAFINE , data_fine ) ;
msk - > set_handler ( F_GRUPPOFINE , gruppo_hnd ) ;
}
// Copia i parametri della prima pagina in una nuova riga dello spreadsheet
// a meno che non ci siano gia'
bool TMastrini_application : : mask2sheet ( )
{
bool ok = _msk - > check_fields ( ) ;
if ( ok )
{
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 ( ) )
{
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 ( ) ;
}
}
}
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 ( ) ;
TToken_string & row = rows . row ( 0 ) ;
row . restart ( ) ;
short id = F_ANNO ;
for ( int pos = _msk - > id2pos ( id ) ; pos > = 0 ; pos = _msk - > id2pos ( + + id ) )
{
const char * val = row . get ( ) ;
_msk - > fld ( pos ) . set ( val ) ;
}
rows . destroy ( 0 , TRUE ) ;
}
return ok ;
}
bool TMastrini_application : : user_create ( )
{
_rel = new TRelation ( LF_SALDI ) ;
1999-10-22 10:00:18 +00:00
TSortedfile * rmov = new TSortedfile ( LF_RMOV , NULL , " GRUPPO|CONTO|DATAREG|SOTTOCONTO " , " " , 2 ) ;
_rel - > add ( rmov , " GRUPPO==GRUPPO|CONTO==CONTO " , 2 , LF_SALDI ) ;
/* Debugging purpose
TCursor_sheet dbgsht ( & rmov - > cursor ( ) , " GRUPPO|CONTO|DATAREG|SOTTOCONTO|NUMREG|NUMRIG " ,
" Test sorter " , " Gruppo|Conto|Data@10|Sottoconto|Numreg|Numrig " ) ;
dbgsht . run ( ) ;
*/
// rmov->cursor() = 0L;
1998-11-04 18:04:26 +00:00
_cur1 = add_cursor ( new TCursor ( _rel , " FLSCA= \" \" " , 2 ) ) ;
1999-10-22 10:00:18 +00:00
1998-11-04 18:04:26 +00:00
_nditte = new TLocalisamfile ( LF_NDITTE ) ;
_unloc = new TLocalisamfile ( LF_UNLOC ) ;
_comuni = new TLocalisamfile ( LF_COMUNI ) ;
_mov = new TLocalisamfile ( LF_MOV ) ;
_clifo = new TLocalisamfile ( LF_CLIFO ) ;
_caus = new TLocalisamfile ( LF_CAUSALI ) ;
_tabivd = new TTable ( TAB_IVD ) ;
_tabtpd = new TTable ( TAB_TPD ) ;
_tabreg = new TTable ( TAB_REG ) ;
_sld = new TSaldo ( ) ;
_d18 = new TParagraph_string ( " " , 18 ) ;
_d23 = new TParagraph_string ( " " , 23 ) ;
_d30 = new TParagraph_string ( " " , 30 ) ;
_msk = new TMask ( " cgp3100a " ) ;
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 ;
_collins = new TConfig ( " cg3200.ini " , " Main " ) ;
const TString & language = _collins - > get ( " Language " ) ;
_collins - > set_paragraph ( language ) ;
return TRUE ;
}
bool TMastrini_application : : user_destroy ( )
{
delete _msk ;
delete _mov ;
delete _nditte ;
delete _unloc ;
delete _comuni ;
delete _clifo ;
delete _caus ;
delete _tabreg ;
delete _tabtpd ;
delete _tabivd ;
delete _sld ;
delete _d18 ;
delete _d23 ;
delete _d30 ;
delete _rel ;
delete _collins ;
return TRUE ;
}
int cgp3100 ( int argc , char * argv [ ] )
{
TMastrini_application a ;
a . run ( argc , argv , " Stampa Mastrini per Conti " ) ;
return 0 ;
}