1996-10-15 11:50:17 +00:00
# include "cglib04.h"
# include "cg6804.h"
# include "cg6804a.h"
HIDDEN TVar_sc & app ( ) { return ( TVar_sc & ) main_app ( ) ; }
TVar_sc : : TVar_sc ( ) : _control_rec ( " " ) , _trasf ( " " ) , _std ( " " ) , _numpart ( " " ) , _tmcf ( " " )
{
}
char TVar_sc : : TipoConto ( int g , int c )
{
TLocalisamfile pcon ( LF_PCON ) ;
char tipo = ' ' ;
pcon . setkey ( 1 ) ;
pcon . zero ( ) ;
pcon . put ( PCN_GRUPPO , g ) ;
pcon . put ( PCN_CONTO , c ) ;
pcon . put ( PCN_SOTTOCONTO , 0l ) ;
if ( pcon . read ( ) = = NOERR )
tipo = pcon . get_char ( PCN_TMCF ) ;
return tipo ;
}
bool TVar_sc : : create ( )
{
TApplication : : create ( ) ;
_part = new TLocalisamfile ( LF_PARTITE ) ;
_scad = new TLocalisamfile ( LF_SCADENZE ) ;
_pagsca = new TLocalisamfile ( LF_PAGSCA ) ;
_rec_part = new TRectype ( LF_PARTITE ) ;
_rec_scad = new TRectype ( LF_SCADENZE ) ;
_rec_pagsca = new TRectype ( LF_PAGSCA ) ;
_msk = new TMask ( " cg6804a " ) ;
_mask = new TMask ( " cg6804b " ) ;
TSheet_field & rp = ( TSheet_field & ) ( _mask - > field ( F_RIGAPART ) ) ;
rp . set_notify ( a_notify ) ;
rp . sheet_mask ( ) . set_handler ( 101 , tipocf_handler ) ;
rp . sheet_mask ( ) . set_handler ( 104 , codcf_handler ) ;
rp . sheet_mask ( ) . set_handler ( 108 , rifpart_handler ) ;
rp . sheet_mask ( ) . set_handler ( 115 , datareg_handler ) ;
rp . sheet_mask ( ) . set_handler ( 111 , codcaus_handler ) ;
rp . sheet_mask ( ) . set_handler ( 109 , datadoc_handler ) ;
rp . sheet_mask ( ) . set_handler ( 110 , numdoc_handler ) ;
rp . sheet_mask ( ) . set_handler ( 117 , contocl_handler ) ;
rp . sheet_mask ( ) . set_handler ( 119 , tipomov_handler ) ;
rp . sheet_mask ( ) . set_handler ( 121 , sezione_handler ) ;
rp . sheet_mask ( ) . set_handler ( 123 , tipopag_handler ) ;
rp . sheet_mask ( ) . set_handler ( 122 , datapag_handler ) ;
rp . sheet_mask ( ) . set_handler ( 124 , codval_handler ) ;
rp . sheet_mask ( ) . set_handler ( 125 , datacam_handler ) ;
rp . sheet_mask ( ) . set_handler ( 126 , cambio_handler ) ;
1996-10-15 12:23:04 +00:00
rp . sheet_mask ( ) . set_handler ( 100 , gestione_handler ) ;
rp . sheet_mask ( ) . set_handler ( DLG_OK , registra_dati_comuni ) ;
rp . sheet_mask ( ) . set_handler ( DLG_DELREC , elimina_partita ) ;
1996-10-15 11:50:17 +00:00
rp . swap_columns ( 105 , 106 ) ;
rp . swap_columns ( 105 , 107 ) ;
rp . swap_columns ( 105 , 108 ) ;
rp . swap_columns ( 105 , 109 ) ;
rp . swap_columns ( 105 , 110 ) ;
1996-10-15 12:23:04 +00:00
1996-10-15 11:50:17 +00:00
_registrato = FALSE ;
_aperti = FALSE ;
dispatch_e_menu ( BAR_ITEM ( 1 ) ) ;
return TRUE ;
}
bool TVar_sc : : destroy ( )
{
delete _mask ;
delete _msk ;
delete _rec_part ;
delete _rec_scad ;
delete _rec_pagsca ;
delete _part ;
delete _scad ;
delete _pagsca ;
// delete _tab_reg;
if ( _aperti )
{
delete _tpart ;
delete _tscad ;
delete _tpagsca ;
}
return TApplication : : destroy ( ) ;
}
void TVar_sc : : apri_temp_file ( )
{
TString80 tmppart = " % " ;
tmppart < < get_firm_dir ( ) ;
tmppart < < " \\ " < < TEMP_PART ;
TString80 tmpscad = " % " ;
tmpscad < < get_firm_dir ( ) ;
tmpscad < < " \\ " < < TEMP_SCAD ;
TString80 tmppagsca = " % " ;
tmppagsca < < get_firm_dir ( ) ;
tmppagsca < < " \\ " < < TEMP_PAGSCA ;
_tpart = new TIsamtempfile ( LF_PARTITE , tmppart , 0 ) ;
_tscad = new TIsamtempfile ( LF_SCADENZE , tmpscad , 0 ) ;
_tpagsca = new TIsamtempfile ( LF_PAGSCA , tmppagsca , 0 ) ;
_aperti = TRUE ;
}
void TVar_sc : : leggi_record_controllo ( )
{
_tras_file . read_control_rec ( ) ;
_control_rec = _tras_file . record ( ) ;
}
bool TVar_sc : : main_loop ( )
{
_dittaric = get_firm ( ) ;
if ( ! esegui_controlli ( ) ) return FALSE ;
apri_temp_file ( ) ;
if ( ! video_SC ( ) )
{
if ( _registrato )
{
setta_parametri_record ( " " , " C " ) ;
leggi_record_controllo ( ) ;
TString str ;
str . spaces ( 60 ) ;
_control_rec . overwrite ( str , 241 ) ;
_tras_file . write_control_rec ( _control_rec , 1024 ) ;
}
return FALSE ;
}
return FALSE ;
}
bool TVar_sc : : a_notify ( TSheet_field & s , int r , KEY k )
{
if ( k = = K_INS )
return FALSE ;
return TRUE ;
}
bool TVar_sc : : gestione_handler ( TMask_field & f , KEY k )
{
if ( k = = K_SPACE )
{
TMask & m = f . mask ( ) ;
if ( ! m . check_fields ( ) ) return FALSE ;
char tipocf = f . mask ( ) . get ( 101 ) [ 0 ] ;
int gruppo = f . mask ( ) . get_int ( 102 ) ;
int conto = f . mask ( ) . get_int ( 103 ) ;
long sottoc = f . mask ( ) . get_long ( 104 ) ;
int anno = f . mask ( ) . get_int ( 106 ) ;
TString npart = f . mask ( ) . get ( 107 ) ;
int nriga = f . mask ( ) . get_int ( 108 ) ;
int tipomov = f . mask ( ) . get_int ( 119 ) ;
if ( tipomov = = 1 )
{
TMask * msk = new TMask ( " cg6804d " ) ;
KEY k ;
TSheet_field & rp = ( TSheet_field & ) msk - > field ( F_RIGASCAD ) ;
rp . set_notify ( a_notify ) ;
rp . sheet_mask ( ) . set_handler ( 109 , nrata_handler ) ;
rp . sheet_mask ( ) . set_handler ( 111 , codpag_handler ) ;
rp . sheet_mask ( ) . set_handler ( 112 , tpscad_handler ) ;
rp . sheet_mask ( ) . set_handler ( 113 , ultclass_handler ) ;
rp . sheet_mask ( ) . set_handler ( 110 , datascad_handler ) ;
rp . sheet_mask ( ) . set_handler ( 120 , banca_handler ) ;
rp . sheet_mask ( ) . set_handler ( 122 , banca_handler ) ;
rp . sheet_mask ( ) . set_handler ( 123 , codag_handler ) ;
rp . sheet_mask ( ) . set_handler ( 124 , datasoll_handler ) ;
rp . sheet_mask ( ) . set_handler ( 116 , importo_handler ) ;
rp . sheet_mask ( ) . set_handler ( 117 , impval_handler ) ;
rp . sheet_mask ( ) . set_handler ( DLG_DELREC , elimina_scadenza ) ;
1996-11-04 11:48:07 +00:00
rp . swap_columns ( 105 , 106 ) ;
rp . swap_columns ( 105 , 107 ) ;
rp . swap_columns ( 105 , 108 ) ;
rp . swap_columns ( 105 , 109 ) ;
rp . swap_columns ( 105 , 110 ) ;
1996-10-15 11:50:17 +00:00
app ( ) . setta_mask_scad ( tipocf , gruppo , conto , sottoc , anno , npart , nriga , * msk ) ;
k = msk - > run ( ) ;
switch ( k )
{
case K_ESC :
break ;
case K_QUIT :
break ;
case K_SAVE :
{
app ( ) . registra_scadenze ( * msk ) ;
app ( ) . _registrato = TRUE ;
}
break ;
default :
break ;
}
delete msk ;
}
else
{
TMask * msk = new TMask ( " cg6804e " ) ;
KEY k ;
TSheet_field & rp = ( TSheet_field & ) msk - > field ( F_RIGAPAGSCA ) ;
rp . set_notify ( a_notify ) ;
rp . sheet_mask ( ) . set_handler ( 110 , rifpartita_handler ) ;
rp . sheet_mask ( ) . set_handler ( 111 , accsal_handler ) ;
rp . sheet_mask ( ) . set_handler ( 113 , importo_handler ) ;
rp . sheet_mask ( ) . set_handler ( 120 , impvalp_handler ) ;
rp . sheet_mask ( ) . set_handler ( 131 , passat_handler ) ;
rp . sheet_mask ( ) . set_handler ( 127 , banca_handler ) ;
rp . sheet_mask ( ) . set_handler ( 129 , banca_handler ) ;
rp . sheet_mask ( ) . set_handler ( 130 , codag_handler ) ;
rp . sheet_mask ( ) . set_handler ( 124 , contropartita_handler ) ;
rp . sheet_mask ( ) . set_handler ( 115 , ritenute_handler ) ;
rp . sheet_mask ( ) . set_handler ( 116 , sezione_abb_handler ) ;
rp . sheet_mask ( ) . set_handler ( 117 , abbuoni_handler ) ;
rp . sheet_mask ( ) . set_handler ( 118 , sezione_dc_handler ) ;
rp . sheet_mask ( ) . set_handler ( 119 , diffcambio_handler ) ;
rp . sheet_mask ( ) . set_handler ( DLG_DELREC , elimina_pagamenti ) ;
1996-11-04 11:48:07 +00:00
rp . swap_columns ( 105 , 106 ) ;
rp . swap_columns ( 105 , 107 ) ;
rp . swap_columns ( 105 , 108 ) ;
rp . swap_columns ( 105 , 109 ) ;
rp . swap_columns ( 105 , 110 ) ;
rp . swap_columns ( 105 , 111 ) ;
1996-10-15 11:50:17 +00:00
app ( ) . setta_mask_pagsca ( tipocf , gruppo , conto , sottoc , anno , npart , nriga , * msk ) ;
k = msk - > run ( ) ;
switch ( k )
{
case K_ESC :
break ;
case K_QUIT :
break ;
case K_SAVE :
{
app ( ) . registra_pagamenti ( * msk ) ;
app ( ) . _registrato = TRUE ;
}
break ;
default :
break ;
}
delete msk ;
}
}
return TRUE ;
}
char TVar_sc : : sezione ( char tipo , int gruppo , int conto , long sottoc , int anno , const TString & npart , int nriga , TString & codval , TMask & m )
{
char sez = ' \0 ' ;
TSheet_field & part = ( TSheet_field & ) m . field ( F_RIGAPART ) ;
for ( int i = 0 ; i < part . items ( ) ; i + + )
{
TToken_string & row = part . row ( i ) ;
char tp = row . get ( 0 ) [ 0 ] ;
int g = row . get_int ( 1 ) ;
int c = row . get_int ( 2 ) ;
long s = row . get_long ( 3 ) ;
int an = row . get_int ( 5 ) ;
TString np = row . get ( 6 ) ;
int nr = row . get_int ( 7 ) ;
if ( tipo = = tp & & gruppo = = g & & conto = = c & & sottoc = = s & &
anno = = an & & npart = = np & & nriga = = nr )
{
sez = part . sheet_mask ( ) . get ( 121 ) [ 0 ] ;
codval = part . sheet_mask ( ) . get ( 124 ) ;
codval . trim ( ) ;
break ;
}
}
return sez ;
}
void TVar_sc : : descr_condpag ( const TString & codpag , int tipopag , const TString & ultclass , TString & d_condpag )
{
if ( ultclass . not_empty ( ) )
{
TTable clr ( " %CLR " ) ;
TString dep ( format ( " %d%s " , tipopag , ( const char * ) ultclass ) ) ;
clr . zero ( ) ;
clr . put ( " CODTAB " , dep ) ;
if ( clr . read ( ) = = NOERR )
d_condpag = clr . get ( " S0 " ) ;
else
d_condpag = " " ;
}
else
{
1996-10-31 16:59:54 +00:00
TTable rpg ( " %RPG " ) ;
int tipo ;
TString dep ;
for ( int i = 0 ; ! rpg . eof ( ) ; rpg . next ( ) , i + + )
{
dep . format ( " %-s%3d " , ( const char * ) codpag , i ) ;
rpg . zero ( ) ;
rpg . put ( " CODTAB " , dep ) ;
if ( rpg . read ( ) = = NOERR )
{
tipo = rpg . get_int ( " I1 " ) ;
if ( tipo = = tipopag )
{
switch ( tipo )
{
case 1 : d_condpag = " Rimessa diretta " ;
break ;
case 2 : d_condpag = " Tratta " ;
break ;
case 3 : d_condpag = " Ricevuta bancaria " ;
break ;
case 4 : d_condpag = " Cessione " ;
break ;
case 5 : d_condpag = " Paghero' " ;
break ;
case 6 : d_condpag = " Lettera di credito " ;
break ;
case 7 : d_condpag = " Tratta accettata " ;
break ;
case 8 : d_condpag = " Rapporti interbancari diretti " ;
break ;
case 9 : d_condpag = " Bonifico " ;
break ;
case 10 : d_condpag = " Altro " ;
break ;
default : break ;
} ;
break ;
}
}
else
{
d_condpag = " " ;
break ;
}
}
}
1996-10-15 11:50:17 +00:00
}
void TVar_sc : : setta_mask_scad ( char tipo , int gruppo , int conto , long sottoc ,
int anno , const TString & numpart , int nriga , TMask & m )
{
_tscad - > setkey ( 1 ) ;
_tscad - > zero ( ) ;
_tscad - > put ( SCAD_TIPOCF , tipo ) ;
if ( gruppo ! = 0 )
_tscad - > put ( SCAD_GRUPPO , gruppo ) ;
if ( conto ! = 0 )
_tscad - > put ( SCAD_CONTO , conto ) ;
if ( sottoc ! = 0 )
_tscad - > put ( SCAD_SOTTOCONTO , sottoc ) ;
if ( anno ! = 0 )
_tscad - > put ( SCAD_ANNO , anno ) ;
_tscad - > put ( SCAD_NUMPART , numpart ) ;
if ( nriga ! = 0 )
_tscad - > put ( SCAD_NRIGA , nriga ) ;
TRectype scadenza ( _tscad - > curr ( ) ) ;
TSheet_field & scad = ( TSheet_field & ) m . field ( F_RIGASCAD ) ;
const long last_c = _tscad - > items ( ) ;
_tscad - > read ( _isgteq ) ;
for ( int i = 0 ; ! _tscad - > eof ( ) ; _tscad - > next ( ) , i + + )
{
TString part_rec = scadenza . get ( SCAD_NUMPART ) ;
TString part_file = _tscad - > get ( SCAD_NUMPART ) ;
if ( _tscad - > curr ( ) ! = scadenza | | part_rec ! = part_file ) break ;
TToken_string & row = scad . row ( i ) ;
TString tipoc ( _tscad - > get ( SCAD_TIPOCF ) ) ;
int nrata = _tscad - > get_int ( SCAD_NRATA ) ;
TString16 datascad ( _tscad - > get_date ( SCAD_DATASCAD ) ) ;
TString16 codpag ( _tscad - > get ( SCAD_CODPAG ) ) ;
int tipopag = _tscad - > get_int ( SCAD_TIPOPAG ) ;
TString ultclass ( _tscad - > get ( SCAD_ULTCLASS ) ) ;
real importo ( _tscad - > get_real ( SCAD_IMPORTO ) ) ;
real impval ( _tscad - > get_real ( SCAD_IMPORTOVAL ) ) ;
TString descr ( _tscad - > get ( SCAD_DESCR ) ) ;
long nsabi = _tscad - > get_long ( SCAD_CODABIPR ) ;
long nscab = _tscad - > get_long ( SCAD_CODCABPR ) ;
long vsabi = _tscad - > get_long ( SCAD_CODABI ) ;
long vscab = _tscad - > get_long ( SCAD_CODCAB ) ;
TString codag ( _tscad - > get ( SCAD_CODAG ) ) ;
TString16 datasoll ( _tscad - > get_date ( SCAD_DATASOLL ) ) ;
int nsoll = _tscad - > get_int ( SCAD_NSOLL ) ;
TString d_conto , d_condpag , codval ;
codval = " " ;
char sez = sezione ( tipo , gruppo , conto , sottoc , anno , numpart , nriga , codval , * _mask ) ;
descr_conto ( tipoc , gruppo , conto , sottoc , d_conto ) ;
descr_condpag ( codpag , tipopag , ultclass , d_condpag ) ;
TString16 str ;
row . add ( tipo ) ;
str . format ( " %3d " , gruppo ) ;
row . add ( str ) ;
str . format ( " %3d " , conto ) ;
row . add ( str ) ;
str . format ( " %6ld " , sottoc ) ;
row . add ( str ) ;
row . add ( d_conto ) ;
str . format ( " %4d " , anno ) ;
row . add ( str ) ;
row . add ( numpart ) ;
str . format ( " %4d " , nriga ) ;
row . add ( str ) ;
str . format ( " %4d " , nrata ) ;
row . add ( str ) ;
row . add ( datascad ) ;
row . add ( codpag ) ;
str . format ( " %d " , tipopag ) ;
row . add ( str ) ;
row . add ( ultclass ) ;
row . add ( d_condpag ) ;
row . add ( sez ) ;
row . add ( importo . string ( ) ) ;
row . add ( impval . string ( ) ) ;
row . add ( descr ) ;
str . format ( " %5ld " , nsabi ) ;
row . add ( str ) ;
str . format ( " %5ld " , nscab ) ;
row . add ( str ) ;
str . format ( " %5ld " , vsabi ) ;
row . add ( str ) ;
str . format ( " %5ld " , vscab ) ;
row . add ( str ) ;
row . add ( codag ) ;
row . add ( datasoll ) ;
str . format ( " %2d " , nsoll ) ;
row . add ( str ) ;
}
}
void TVar_sc : : setta_mask_pagsca ( char tipo , int gruppo , int conto , long sottoc ,
int anno , const TString & numpart , int nriga , TMask & m )
{
_tpagsca - > setkey ( 1 ) ;
_tpagsca - > zero ( ) ;
_tpagsca - > put ( PAGSCA_TIPOC , tipo ) ;
if ( gruppo ! = 0 )
_tpagsca - > put ( PAGSCA_GRUPPO , gruppo ) ;
if ( conto ! = 0 )
_tpagsca - > put ( PAGSCA_CONTO , conto ) ;
if ( sottoc ! = 0 )
_tpagsca - > put ( PAGSCA_SOTTOCONTO , sottoc ) ;
if ( anno ! = 0 )
_tpagsca - > put ( PAGSCA_ANNO , anno ) ;
_tpagsca - > put ( PAGSCA_NUMPART , numpart ) ;
TRectype pagamenti ( _tpagsca - > curr ( ) ) ;
TSheet_field & pag = ( TSheet_field & ) m . field ( F_RIGAPAGSCA ) ;
const long last_c = _tpagsca - > items ( ) ;
_tpagsca - > read ( _isgteq ) ;
for ( int i = 0 ; ! _tpagsca - > eof ( ) ; _tpagsca - > next ( ) , i + + )
{
TString rec = pagamenti . get ( PAGSCA_NUMPART ) ;
TString file = _tpagsca - > get ( PAGSCA_NUMPART ) ;
if ( _tpagsca - > curr ( ) ! = pagamenti | | file ! = rec ) break ;
int nrigp = _tpagsca - > get_int ( PAGSCA_NRIGP ) ;
int nriga_fatt = _tpagsca - > get_int ( PAGSCA_NRIGA ) ;
if ( nriga ! = nrigp ) continue ;
TToken_string & row = pag . row ( i ) ;
TString tipoc ( _tpagsca - > get ( PAGSCA_TIPOC ) ) ;
int nrata = _tpagsca - > get_int ( PAGSCA_NRATA ) ;
TString16 accsal ( _tpagsca - > get ( PAGSCA_ACCSAL ) ) ;
real importo ( _tpagsca - > get_real ( PAGSCA_IMPORTO ) ) ;
real ritenute ( _tpagsca - > get_real ( PAGSCA_RITENUTE ) ) ;
real abbuoni ( _tpagsca - > get_real ( PAGSCA_ABBUONI ) ) ;
real diffcam ( _tpagsca - > get_real ( PAGSCA_DIFFCAM ) ) ;
real impval ( _tpagsca - > get_real ( PAGSCA_IMPORTOVAL ) ) ;
TString tipocc ( _tpagsca - > get ( PAGSCA_TIPOCC ) ) ;
int gruppoc = _tpagsca - > get_int ( PAGSCA_GRUPPOC ) ;
int contoc = _tpagsca - > get_int ( PAGSCA_CONTOC ) ;
long sottocc = _tpagsca - > get_long ( PAGSCA_SOTTOCONTC ) ;
long nsabi = _tpagsca - > get_long ( PAGSCA_CODABIPR ) ;
long nscab = _tpagsca - > get_long ( PAGSCA_CODCABPR ) ;
long vsabi = _tpagsca - > get_long ( PAGSCA_CODABI ) ;
long vscab = _tpagsca - > get_long ( PAGSCA_CODCAB ) ;
TString codag ( _tpagsca - > get ( PAGSCA_CODAG ) ) ;
char passat = _tpagsca - > get_char ( PAGSCA_PASSATT ) ;
TString d_conto , d_contoc , codval ;
char sezab = ' \0 ' ;
char sezdc = ' \0 ' ;
char sez = sezione ( tipo , gruppo , conto , sottoc , anno , numpart , nriga , codval , * _mask ) ;
descr_conto ( tipoc , gruppo , conto , sottoc , d_conto ) ;
descr_conto ( tipocc , gruppoc , contoc , sottocc , d_contoc ) ; // Contropartita
if ( abbuoni ! = ZERO )
{
sezab ;
if ( passat = = ' A ' )
sezab = ' D ' ;
else
if ( passat = = ' P ' )
sezab = ' A ' ;
if ( sezab ! = sez )
abbuoni = abbuoni * - 1 ;
}
if ( diffcam ! = ZERO )
{
sezdc = sez ;
if ( diffcam < ZERO )
{
diffcam = diffcam * - 1 ;
if ( sez = = ' D ' )
sezdc = ' A ' ;
else
if ( sez = = ' A ' )
sezdc = ' D ' ;
}
}
TString16 str ;
row . add ( tipo ) ;
str . format ( " %3d " , gruppo ) ;
row . add ( str ) ;
str . format ( " %3d " , conto ) ;
row . add ( str ) ;
str . format ( " %6ld " , sottoc ) ;
row . add ( str ) ;
row . add ( d_conto ) ;
str . format ( " %4d " , anno ) ;
row . add ( str ) ;
row . add ( numpart ) ;
str . format ( " %4d " , nriga_fatt ) ;
row . add ( str ) ;
str . format ( " %4d " , nrata ) ;
row . add ( str ) ;
str . format ( " %4d " , nrigp ) ;
row . add ( str ) ;
row . add ( accsal ) ;
str . format ( " %c " , sez ) ;
row . add ( str ) ;
row . add ( importo . string ( ) ) ;
if ( ritenute ! = ZERO )
row . add ( str ) ;
else
row . add ( " " ) ;
row . add ( ritenute . string ( ) ) ;
str . format ( " %c " , sezab ) ;
row . add ( str ) ;
row . add ( abbuoni . string ( ) ) ;
str . format ( " %c " , sezdc ) ;
row . add ( str ) ;
row . add ( diffcam . string ( ) ) ;
row . add ( impval . string ( ) ) ;
row . add ( tipocc ) ;
str . format ( " %3d " , gruppoc ) ;
row . add ( str ) ;
str . format ( " %3d " , contoc ) ;
row . add ( str ) ;
str . format ( " %6ld " , sottocc ) ;
row . add ( str ) ;
row . add ( d_contoc ) ;
str . format ( " %5ld " , nsabi ) ;
row . add ( str ) ;
str . format ( " %5ld " , nscab ) ;
row . add ( str ) ;
str . format ( " %5ld " , vsabi ) ;
row . add ( str ) ;
str . format ( " %5ld " , vscab ) ;
row . add ( str ) ;
row . add ( codag ) ;
str . format ( " %c " , passat ) ;
row . add ( str ) ;
}
}
bool TVar_sc : : video_SC ( )
{
KEY tasto ;
do
{
_msk - > reset ( F_ANNO ) ;
_msk - > reset ( F_NUMPART ) ;
_msk - > reset ( F_NRIGA ) ;
tasto = _msk - > run ( ) ;
if ( tasto ! = K_ENTER ) return FALSE ;
_tipocf = _msk - > get ( F_TIPOCF ) [ 0 ] ;
_gruppo = _msk - > get_int ( F_GRUPPO ) ;
_conto = _msk - > get_int ( F_CONTO ) ;
_sottoc = _msk - > get_long ( F_SOTTOCONTO ) ;
_anno = _msk - > get_int ( F_ANNO ) ;
_numpart = _msk - > get ( F_NUMPART ) ;
_nriga = _msk - > get_int ( F_NRIGA ) ;
setta_campi_maschera ( * _mask ) ;
1996-10-15 12:23:04 +00:00
_mask - > force_update ( ) ;
1996-10-15 11:50:17 +00:00
tasto = _mask - > run ( ) ;
switch ( tasto )
{
case K_ESC :
break ;
case K_QUIT :
break ;
case K_SAVE :
{
registra_partita ( * _mask ) ;
_registrato = TRUE ;
}
break ;
default :
break ;
}
}
while ( tasto ! = K_QUIT ) ; //K_ENTER
return TRUE ;
}
bool TVar_sc : : descr_conto ( const TString & tipo , int g , int c , long s , TString & d_conto )
{
if ( tipo = = " C " | | tipo = = " F " )
{
TLocalisamfile clifo ( LF_CLIFO ) ;
clifo . setkey ( 1 ) ;
clifo . zero ( ) ;
clifo . put ( CLI_TIPOCF , tipo ) ;
clifo . put ( CLI_CODCF , s ) ;
if ( clifo . read ( ) = = NOERR )
{
d_conto = clifo . get ( CLI_RAGSOC ) ;
return TRUE ;
}
else
{
d_conto = " " ;
return FALSE ;
}
}
else
{
TLocalisamfile pcon ( LF_PCON ) ;
pcon . setkey ( 1 ) ;
pcon . zero ( ) ;
pcon . put ( PCN_GRUPPO , g ) ;
pcon . put ( PCN_CONTO , c ) ;
pcon . put ( PCN_SOTTOCONTO , s ) ;
if ( pcon . read ( ) = = NOERR )
{
d_conto = pcon . get ( PCN_DESCR ) ;
return TRUE ;
}
else
{
d_conto = " " ;
return FALSE ;
}
}
return TRUE ;
}
bool TVar_sc : : descr_caus ( const TString & codcaus , TString & d_caus )
{
TLocalisamfile cau ( LF_CAUSALI ) ;
cau . setkey ( 1 ) ;
cau . zero ( ) ;
cau . put ( " CODCAUS " , ( const char * ) codcaus ) ;
if ( cau . read ( ) = = NOERR )
{
d_caus = cau . get ( CAU_DESCR ) ;
_dd_caus = cau . get_bool ( CAU_DATADOC ) ;
_nd_caus = cau . get_bool ( CAU_NUMDOC ) ;
_tm_caus = cau . get_int ( CAU_TIPOMOV ) ;
_movval = cau . get_bool ( CAU_MOVVAL ) ;
return TRUE ;
}
else
{
d_caus = " " ;
_dd_caus = FALSE ;
_nd_caus = FALSE ;
_tm_caus = 0 ;
_movval = FALSE ;
return FALSE ;
}
return TRUE ;
}
bool TVar_sc : : descr_contocl ( int g , int c , TString & d_conto )
{
TLocalisamfile pcon ( LF_PCON ) ;
pcon . setkey ( 1 ) ;
pcon . zero ( ) ;
pcon . put ( PCN_GRUPPO , g ) ;
pcon . put ( PCN_CONTO , c ) ;
pcon . read ( ) ;
if ( ( g = = pcon . get_int ( PCN_GRUPPO ) ) & & ( c = = pcon . get_int ( PCN_CONTO ) ) )
{
d_conto = pcon . get ( PCN_DESCR ) ;
return TRUE ;
}
else
{
d_conto = " " ;
return FALSE ;
}
return TRUE ;
}
void TVar_sc : : setta_campi_maschera ( TMask & m )
{
if ( _gruppo = = 0 & & _conto = = 0 & & _sottoc = = 0 & & _anno = = 0
& & _numpart . empty ( ) & & _nriga = = 0 )
{
_tpart - > setkey ( 1 ) ;
_tpart - > zero ( ) ;
_tpart - > first ( ) ;
}
else
{
_tpart - > setkey ( 1 ) ;
_tpart - > zero ( ) ;
_tpart - > put ( PART_TIPOCF , _tipocf ) ;
if ( _gruppo ! = 0 )
_tpart - > put ( PART_GRUPPO , _gruppo ) ;
if ( _conto ! = 0 )
_tpart - > put ( PART_CONTO , _conto ) ;
if ( _sottoc ! = 0 )
_tpart - > put ( PART_SOTTOCONTO , _sottoc ) ;
if ( _anno ! = 0 )
_tpart - > put ( PART_ANNO , _anno ) ;
_tpart - > put ( PART_NUMPART , _numpart ) ;
if ( _nriga ! = 0 )
_tpart - > put ( PART_NRIGA , _nriga ) ;
TRectype partita ( _tpart - > curr ( ) ) ;
_tpart - > read ( _isgteq ) ;
if ( _tpart - > curr ( ) ! = partita )
{
_tpart - > zero ( ) ;
_tpart - > first ( ) ;
}
}
TSheet_field & partita = ( TSheet_field & ) m . field ( F_RIGAPART ) ;
const long last_c = _tpart - > items ( ) ;
partita . destroy ( ) ;
for ( int i = 0 ; ! _tpart - > eof ( ) ; _tpart - > next ( ) , i + + )
{
TToken_string & row = partita . row ( i ) ;
TString16 tipoc ( _tpart - > get ( PART_TIPOCF ) ) ;
int gruppo = _tpart - > get_int ( PART_GRUPPO ) ;
int conto = _tpart - > get_int ( PART_CONTO ) ;
long sottoc = _tpart - > get_long ( PART_SOTTOCONTO ) ;
int anno = _tpart - > get_int ( PART_ANNO ) ;
TString16 numpart ( _tpart - > get ( PART_NUMPART ) ) ;
int nriga = _tpart - > get_int ( PART_NRIGA ) ;
TString16 datareg ( _tpart - > get_date ( PART_DATAREG ) ) ;
TString16 codcaus ( _tpart - > get ( PART_CODCAUS ) ) ;
int gruppocl = _tpart - > get_int ( PART_GRUPPOCL ) ;
int contocl = _tpart - > get_int ( PART_CONTOCL ) ;
int tipomov = _tpart - > get_int ( PART_TIPOMOV ) ;
TString descr ( _tpart - > get ( PART_DESCR ) ) ;
TString16 sezione ( _tpart - > get ( PART_SEZ ) ) ;
TString16 datapag ( _tpart - > get_date ( PART_DATAPAG ) ) ;
TString16 codval ( _tpart - > get ( PART_CODVAL ) ) ;
TString16 datacam ( _tpart - > get_date ( PART_DATACAM ) ) ;
TString16 numdoc ( _tpart - > get ( PART_NUMDOC ) ) ;
TString16 datadoc ( _tpart - > get_date ( PART_DATADOC ) ) ;
int tipopag = _tpart - > get_int ( PART_TIPOPAG ) ;
real cambio ( _tpart - > get_real ( PART_CAMBIO ) ) ;
long numreg = _tpart - > get_long ( PART_NREG ) ;
int numrig = _tpart - > get_int ( PART_NUMRIG ) ;
TString d_conto , d_caus , d_contocl ;
descr_conto ( tipoc , gruppo , conto , sottoc , d_conto ) ;
descr_caus ( codcaus , d_caus ) ;
descr_contocl ( gruppocl , contocl , d_contocl ) ;
TString16 str ;
row . add ( tipoc ) ;
str . format ( " %3d " , gruppo ) ;
row . add ( str ) ;
str . format ( " %3d " , conto ) ;
row . add ( str ) ;
str . format ( " %6ld " , sottoc ) ;
row . add ( str ) ;
row . add ( d_conto ) ;
str . format ( " %4d " , anno ) ;
row . add ( str ) ;
row . add ( numpart ) ;
str . format ( " %4d " , nriga ) ;
row . add ( str ) ;
row . add ( datadoc ) ;
row . add ( numdoc ) ;
row . add ( codcaus ) ;
row . add ( d_caus ) ;
str . format ( " %7ld " , numreg ) ;
row . add ( str ) ;
str . format ( " %3d " , numrig ) ;
row . add ( str ) ;
row . add ( datareg ) ;
str . format ( " %3d " , gruppocl ) ;
row . add ( str ) ;
str . format ( " %3d " , contocl ) ;
row . add ( str ) ;
row . add ( d_contocl ) ;
str . format ( " %d " , tipomov ) ;
row . add ( str ) ;
row . add ( descr ) ;
row . add ( sezione ) ;
row . add ( datapag ) ;
str . format ( " %d " , tipopag ) ;
row . add ( str ) ;
row . add ( codval ) ;
row . add ( datacam ) ;
row . add ( cambio . string ( ) ) ;
row . add ( tipoc ) ;
str . format ( " %3d " , gruppo ) ;
row . add ( str ) ;
str . format ( " %3d " , conto ) ;
row . add ( str ) ;
str . format ( " %6ld " , sottoc ) ;
row . add ( str ) ;
row . add ( d_conto ) ;
row . add ( tipoc ) ;
str . format ( " %3d " , gruppo ) ;
row . add ( str ) ;
str . format ( " %3d " , conto ) ;
row . add ( str ) ;
str . format ( " %6ld " , sottoc ) ;
row . add ( str ) ;
row . add ( d_conto ) ;
}
}
bool TVar_sc : : tipo_contocl ( int g , int c , TString & tipo )
{
TLocalisamfile pcon ( LF_PCON ) ;
pcon . setkey ( 1 ) ;
pcon . zero ( ) ;
pcon . put ( PCN_GRUPPO , g ) ;
pcon . put ( PCN_CONTO , c ) ;
pcon . read ( ) ;
if ( ( g = = pcon . get_int ( PCN_GRUPPO ) ) & & ( c = = pcon . get_int ( PCN_CONTO ) ) )
{
tipo = pcon . get ( PCN_TMCF ) ;
return TRUE ;
}
else
{
tipo = " " ;
return FALSE ;
}
return TRUE ;
}
bool TVar_sc : : codvaluta ( const TString & codval )
{
TTable val ( " %VAL " ) ;
TString dep ;
dep . format ( " %-3s " , ( const char * ) codval ) ;
val . zero ( ) ;
val . put ( " CODTAB " , dep ) ;
if ( val . read ( ) = = NOERR )
return TRUE ;
else
return FALSE ;
return TRUE ;
}
int TVar_sc : : tipo_movimento ( char tipo , int gruppo , int conto , long sottoc , int anno , const TString & npart , int nriga , TMask & m )
{
int tipomov = 0 ;
TSheet_field & part = ( TSheet_field & ) m . field ( F_RIGAPART ) ;
for ( int i = 0 ; i < part . items ( ) ; i + + )
{
TToken_string & row = part . row ( i ) ;
char tp = row . get ( 0 ) [ 0 ] ;
int g = row . get_int ( 1 ) ;
int c = row . get_int ( 2 ) ;
long s = row . get_long ( 3 ) ;
int an = row . get_int ( 5 ) ;
TString np = row . get ( 6 ) ;
int nr = row . get_int ( 7 ) ;
if ( tipo = = tp & & gruppo = = g & & conto = = c & & sottoc = = s & &
anno = = an & & npart = = np & & nriga = = nr )
{
tipomov = part . sheet_mask ( ) . get_int ( 119 ) ;
break ;
}
}
return tipomov ;
}
// *****************************************
// ***** HANDLER sulla riga di partita *****
// *****************************************
bool TVar_sc : : tipocf_handler ( TMask_field & f , KEY k )
{
if ( ( k = = K_TAB | | k = = K_ENTER ) & & f . mask ( ) . is_running ( ) )
{
TString16 tipocf ( f . get ( ) ) ;
if ( tipocf ! = " " & & tipocf ! = " C " & & tipocf ! = " F " )
return f . warning_box ( " Tipo anagrafica errato " ) ;
}
return TRUE ;
}
bool TVar_sc : : codcf_handler ( TMask_field & f , KEY k )
{
if ( ( k = = K_TAB | | k = = K_ENTER ) & & f . mask ( ) . is_running ( ) )
{
TString tipocf = f . mask ( ) . get ( 101 ) ;
int gruppo = f . mask ( ) . get_int ( 102 ) ;
int conto = f . mask ( ) . get_int ( 103 ) ;
long sottoc = atol ( f . get ( ) ) ;
TString desc ;
if ( ! app ( ) . descr_conto ( tipocf , gruppo , conto , sottoc , desc ) )
return f . warning_box ( " Codice anagrafica errato " ) ;
}
return TRUE ;
}
bool TVar_sc : : rifpart_handler ( TMask_field & f , KEY k )
{
if ( ( k = = K_TAB | | k = = K_ENTER ) & & f . mask ( ) . is_running ( ) )
{
int anno = f . mask ( ) . get_int ( 106 ) ;
TString numpart = f . mask ( ) . get ( 107 ) ;
int nriga = atoi ( f . get ( ) ) ;
if ( anno = = 0 | | numpart . empty ( ) | | nriga = = 0 )
return f . warning_box ( " Riferimento partita errato " ) ;
}
return TRUE ;
}
bool TVar_sc : : datareg_handler ( TMask_field & f , KEY k )
{
if ( ( k = = K_TAB | | k = = K_ENTER ) & & f . mask ( ) . is_running ( ) )
{
if ( ! ( TDate : : isdate ( f . get ( ) ) ) )
return warning_box ( " Data errata o formato non valido " ) ;
}
return TRUE ;
}
bool TVar_sc : : codcaus_handler ( TMask_field & f , KEY k )
{
if ( ( k = = K_TAB | | k = = K_ENTER ) & & f . mask ( ) . is_running ( ) )
{
TString appoggio ;
TString codcaus = f . get ( ) ;
int tipomov = f . mask ( ) . get_int ( 119 ) ;
if ( codcaus . not_empty ( ) )
if ( ! app ( ) . descr_caus ( codcaus , appoggio ) )
return f . warning_box ( " Valore non valido per codice causale " ) ;
long nreg = f . mask ( ) . get_long ( 113 ) ;
if ( nreg ! = 0 & & codcaus . empty ( ) )
return f . warning_box ( " Se e' indicato il numero di operazione la causale deve essere significativa " ) ;
if ( tipomov = = 0 )
f . mask ( ) . set ( 119 , app ( ) . _tm_caus ) ;
else
{
if ( codcaus . not_empty ( ) )
if ( tipomov ! = app ( ) . _tm_caus )
return f . warning_box ( " Tipo movimento partita non congruo con tipo movimento indicato sulla causale " ) ;
}
}
return TRUE ;
}
bool TVar_sc : : datadoc_handler ( TMask_field & f , KEY k )
{
if ( ( k = = K_TAB | | k = = K_ENTER ) & & f . mask ( ) . is_running ( ) )
{
TString appoggio ;
TString codcaus = f . mask ( ) . get ( 111 ) ;
TString datadoc = f . get ( ) ;
datadoc . trim ( ) ;
app ( ) . descr_caus ( codcaus , appoggio ) ;
if ( datadoc . empty ( ) & & app ( ) . _dd_caus )
return f . warning_box ( " Data documento obbligatoria " ) ;
}
return TRUE ;
}
bool TVar_sc : : numdoc_handler ( TMask_field & f , KEY k )
{
if ( ( k = = K_TAB | | k = = K_ENTER ) & & f . mask ( ) . is_running ( ) )
{
TString appoggio ;
TString codcaus = f . mask ( ) . get ( 111 ) ;
TString numdoc = f . get ( ) ;
app ( ) . descr_caus ( codcaus , appoggio ) ;
if ( numdoc . empty ( ) & & app ( ) . _nd_caus )
return f . warning_box ( " Numero documento obbligatorio " ) ;
}
return TRUE ;
}
bool TVar_sc : : contocl_handler ( TMask_field & f , KEY k )
{
if ( ( k = = K_TAB | | k = = K_ENTER ) & & f . mask ( ) . is_running ( ) )
{
TString tmcf ;
int gruppo = f . mask ( ) . get_int ( 116 ) ;
int conto = atoi ( f . get ( ) ) ;
if ( gruppo = = 0 & & conto = = 0 ) return TRUE ;
if ( ! app ( ) . tipo_contocl ( gruppo , conto , tmcf ) )
return f . warning_box ( " Codice conto non esistente su piano dei conti " ) ;
TString tipo = f . mask ( ) . get ( 101 ) ;
if ( tipo ! = tmcf )
return f . warning_box ( " Tipo conto C/F non congruo con tipo anagrafica " ) ;
}
return TRUE ;
}
bool TVar_sc : : tipomov_handler ( TMask_field & f , KEY k )
{
if ( ( k = = K_TAB | | k = = K_ENTER ) & & f . mask ( ) . is_running ( ) )
{
int tipomov = atoi ( f . get ( ) ) ;
if ( tipomov ! = 1 & & tipomov ! = 2 & & tipomov ! = 3 & & tipomov ! = 5 & & tipomov ! = 6 )
return f . warning_box ( " Tipo movimento errato " ) ;
TString appoggio = " " ;
TString codcaus = f . mask ( ) . get ( 111 ) ;
if ( codcaus . not_empty ( ) )
{
app ( ) . descr_caus ( codcaus , appoggio ) ;
if ( tipomov ! = app ( ) . _tm_caus )
return f . warning_box ( " Tipo movimento partita non congruo con tipo movimento indicato sulla causale " ) ;
}
}
return TRUE ;
}
bool TVar_sc : : sezione_handler ( TMask_field & f , KEY k )
{
if ( ( k = = K_TAB | | k = = K_ENTER ) & & f . mask ( ) . is_running ( ) )
{
TString sezione = f . get ( ) ;
if ( sezione ! = " D " & & sezione ! = " A " )
return f . warning_box ( " Sezione dare/avere errata " ) ;
}
return TRUE ;
}
bool TVar_sc : : tipopag_handler ( TMask_field & f , KEY k )
{
if ( ( k = = K_TAB | | k = = K_ENTER ) & & f . mask ( ) . is_running ( ) )
{
int tipomov = f . mask ( ) . get_int ( 119 ) ;
int tipopag = atoi ( f . get ( ) ) ;
if ( tipomov = = 1 & & tipopag ! = 0 )
return f . warning_box ( " In caso di fattura non e' possibile indicare il tipo pagamento " ) ;
1996-10-15 12:23:04 +00:00
if ( tipomov ! = 1 & & tipomov ! = 2 )
1996-10-15 11:50:17 +00:00
if ( tipopag < 1 | | tipopag > 9 )
return f . warning_box ( " Tipo pagamento errato " ) ;
}
return TRUE ;
}
bool TVar_sc : : datapag_handler ( TMask_field & f , KEY k )
{
if ( ( k = = K_TAB | | k = = K_ENTER ) & & f . mask ( ) . is_running ( ) )
{
int tipomov = f . mask ( ) . get_int ( 119 ) ;
TString datapag ( f . get ( ) ) ;
datapag . trim ( ) ;
if ( tipomov = = 1 & & datapag . not_empty ( ) )
return f . warning_box ( " In caso di fattura non e' possibile indicare la data del pagamento " ) ;
if ( tipomov ! = 1 )
if ( datapag . empty ( ) | | ! ( TDate : : isdate ( datapag ) ) )
return f . warning_box ( " Se il movimento non e' una fattura la data di pagamento deve essere indicata " ) ;
}
return TRUE ;
}
bool TVar_sc : : codval_handler ( TMask_field & f , KEY k )
{
if ( ( k = = K_TAB | | k = = K_ENTER ) & & f . mask ( ) . is_running ( ) )
{
TString codval ( f . get ( ) ) ;
if ( codval . not_empty ( ) )
{
if ( ! app ( ) . codvaluta ( codval ) )
return f . warning_box ( " Codice valuta non presente in tabella " ) ;
TConfig conf ( CONFIG_DITTA ) ;
TString valuta = conf . get ( " GesVal " ) ;
if ( codval . not_empty & & valuta . empty ( ) )
return f . warning_box ( " Non e' possibile indicare il codice valuta se non indicata la gestione valuta sui parametri ditta " ) ;
if ( codval . empty ( ) & & valuta . not_empty ( ) )
return f . warning_box ( " Il codice valuta deve essere indicato in quanto indicata la gestione in valuta sui parametri ditta " ) ;
TString codcaus ( f . mask ( ) . get ( 111 ) ) ;
if ( codcaus . not_empty ( ) )
{
TString appoggio ;
if ( app ( ) . descr_caus ( codcaus , appoggio ) )
{
if ( app ( ) . _movval & & codval . empty ( ) )
return f . warning_box ( " Il codice valuta deve essere indicato in quanto indicata la gestione in valuta sulla causale " ) ;
if ( ! app ( ) . _movval & & codval . not_empty ( ) )
return f . warning_box ( " Non e' possibile indicare il codice in valuta se non indicato il flag gestione valuta sulla causale " ) ;
}
}
}
else
{
TDate datacam ( f . mask ( ) . get_date ( 125 ) ) ;
real cambio ( f . mask ( ) . get_real ( 126 ) ) ;
if ( datacam . ok ( ) )
return f . warning_box ( " Non e' possibile indicare la data cambio se non e' indicato il codice valuta " ) ;
if ( cambio ! = ZERO )
return f . warning_box ( " Non e' possibile indicare il cambio se non e' indicato il codice valuta " ) ;
}
}
return TRUE ;
}
bool TVar_sc : : datacam_handler ( TMask_field & f , KEY k )
{
if ( ( k = = K_TAB | | k = = K_ENTER ) & & f . mask ( ) . is_running ( ) )
{
TString codval ( f . mask ( ) . get ( 124 ) ) ;
TString datacam ( f . get ( ) ) ;
datacam . trim ( ) ;
if ( codval . not_empty ( ) )
if ( datacam . empty ( ) | | ! ( TDate : : isdate ( datacam ) ) )
return f . warning_box ( " Se il codice valuta e' indicato la data cambio deve essere significativa " ) ;
}
return TRUE ;
}
bool TVar_sc : : cambio_handler ( TMask_field & f , KEY k )
{
if ( ( k = = K_TAB | | k = = K_ENTER ) & & f . mask ( ) . is_running ( ) )
{
TString codval ( f . mask ( ) . get ( 124 ) ) ;
real cambio ( f . get ( ) ) ;
if ( codval . not_empty ( ) )
if ( cambio = = ZERO )
return f . warning_box ( " Se il codice valuta e' indicato il cambio deve essere significativo " ) ;
}
return TRUE ;
}
// ******************************************
// ***** HANDLER sulla riga di scadenza *****
// ******************************************
bool TVar_sc : : nrata_handler ( TMask_field & f , KEY k )
{
if ( ( k = = K_TAB | | k = = K_ENTER ) & & f . mask ( ) . is_running ( ) )
{
int nrata = atoi ( f . get ( ) ) ;
if ( nrata = = 0 )
return f . warning_box ( " Il numero di rata deve essere significativo " ) ;
}
return TRUE ;
}
bool TVar_sc : : codpag_handler ( TMask_field & f , KEY k )
{
1996-10-31 16:59:54 +00:00
if ( ( k = = K_TAB | | k = = K_ENTER ) )
1996-10-15 11:50:17 +00:00
{
TString descr ;
TString codpag = f . get ( ) ;
1996-10-15 12:23:04 +00:00
if ( codpag . not_empty ( ) )
1996-10-31 16:59:54 +00:00
{
if ( f . mask ( ) . is_running ( ) )
1996-10-15 12:23:04 +00:00
{
1996-10-31 16:59:54 +00:00
TTable cpg ( " %CPG " ) ;
TString dep ( format ( " %-4s " , ( const char * ) codpag ) ) ;
cpg . zero ( ) ;
cpg . put ( " CODTAB " , dep ) ;
if ( cpg . read ( ) ! = NOERR )
return f . warning_box ( " Codice di pagamento errato o non presente in tabella " ) ;
1996-10-15 12:23:04 +00:00
}
1996-10-31 16:59:54 +00:00
TTable rpg ( " %RPG " ) ;
int tipo ;
1996-10-15 12:23:04 +00:00
int tipopag = f . mask ( ) . get_int ( 112 ) ;
1996-10-31 16:59:54 +00:00
TString dep ;
for ( int i = 0 ; ! rpg . eof ( ) ; rpg . next ( ) , i + + )
1996-10-15 12:23:04 +00:00
{
1996-10-31 16:59:54 +00:00
dep . format ( " %-s%3d " , ( const char * ) codpag , i ) ;
rpg . zero ( ) ;
rpg . put ( " CODTAB " , dep ) ;
if ( rpg . read ( ) = = NOERR )
{
tipo = rpg . get_int ( " I1 " ) ;
if ( tipo = = tipopag )
{
switch ( tipo )
{
case 1 : descr = " Rimessa diretta " ;
break ;
case 2 : descr = " Tratta " ;
break ;
case 3 : descr = " Ricevuta bancaria " ;
break ;
case 4 : descr = " Cessione " ;
break ;
case 5 : descr = " Paghero' " ;
break ;
case 6 : descr = " Lettera di credito " ;
break ;
case 7 : descr = " Tratta accettata " ;
break ;
case 8 : descr = " Rapporti interbancari diretti " ;
break ;
case 9 : descr = " Bonifico " ;
break ;
case 10 : descr = " Altro " ;
break ;
default : break ;
} ;
break ;
}
}
else
{
descr = " " ;
break ;
}
}
if ( f . mask ( ) . is_running ( ) )
{
if ( tipopag ! = 0 )
{
if ( tipopag ! = tipo )
return f . warning_box ( " Il tipo pagamento della scadenza non e' congruo con il tipo pagamento del codice di pagamento " ) ;
}
else
f . mask ( ) . set ( 112 , tipo ) ;
1996-10-15 12:23:04 +00:00
}
}
1996-10-15 11:50:17 +00:00
TString ultclass = f . mask ( ) . get ( 113 ) ;
if ( ultclass . empty ( ) )
f . mask ( ) . set ( 114 , descr ) ;
}
return TRUE ;
}
bool TVar_sc : : tpscad_handler ( TMask_field & f , KEY k )
{
if ( ( k = = K_TAB | | k = = K_ENTER ) & & f . mask ( ) . is_running ( ) )
{
1996-10-15 12:23:04 +00:00
TString codpag = f . mask ( ) . get ( 111 ) ;
if ( codpag . empty ( ) ) return TRUE ;
1996-10-15 11:50:17 +00:00
int tipopag = atoi ( f . get ( ) ) ;
if ( tipopag < 1 | | tipopag > 9 )
return f . warning_box ( " Tipo pagamento errato " ) ;
TTable cpg ( " %CPG " ) ;
TString dep ( format ( " %-4s " , ( const char * ) codpag ) ) ;
int tipo = 0 ;
cpg . zero ( ) ;
cpg . put ( " CODTAB " , dep ) ;
if ( cpg . read ( ) = = NOERR )
tipo = atoi ( cpg . get ( " S4 " ) ) ;
if ( tipopag ! = tipo )
return f . warning_box ( " Il tipo pagamento della scadenza non e' congruo con il tipo pagamento del codice di pagamento " ) ;
}
return TRUE ;
}
bool TVar_sc : : ultclass_handler ( TMask_field & f , KEY k )
{
if ( ( k = = K_TAB | | k = = K_ENTER ) & & f . mask ( ) . is_running ( ) )
{
TString descr ;
TString ultclass = f . get ( ) ;
int tipopag = f . mask ( ) . get_int ( 112 ) ;
1996-10-31 16:59:54 +00:00
if ( ultclass . empty ( ) )
{
TTable rpg ( " %RPG " ) ;
int tipo ;
TString codpag = f . mask ( ) . get ( 111 ) ;
int tipopag = f . mask ( ) . get_int ( 112 ) ;
TString dep ;
for ( int i = 0 ; ! rpg . eof ( ) ; rpg . next ( ) , i + + )
{
dep . format ( " %-s%3d " , ( const char * ) codpag , i ) ;
rpg . zero ( ) ;
rpg . put ( " CODTAB " , dep ) ;
if ( rpg . read ( ) = = NOERR )
{
tipo = rpg . get_int ( " I1 " ) ;
if ( tipo = = tipopag )
{
switch ( tipo )
{
case 1 : descr = " Rimessa diretta " ;
break ;
case 2 : descr = " Tratta " ;
break ;
case 3 : descr = " Ricevuta bancaria " ;
break ;
case 4 : descr = " Cessione " ;
break ;
case 5 : descr = " Paghero' " ;
break ;
case 6 : descr = " Lettera di credito " ;
break ;
case 7 : descr = " Tratta accettata " ;
break ;
case 8 : descr = " Rapporti interbancari diretti " ;
break ;
case 9 : descr = " Bonifico " ;
break ;
case 10 : descr = " Altro " ;
break ;
default : break ;
} ;
break ;
}
}
else
{
descr = " " ;
break ;
}
}
f . mask ( ) . set ( 114 , descr ) ;
return TRUE ;
}
1996-10-15 11:50:17 +00:00
TTable clr ( " %CLR " ) ;
TString dep ( format ( " %d%s " , tipopag , ( const char * ) ultclass ) ) ;
clr . zero ( ) ;
clr . put ( " CODTAB " , dep ) ;
if ( clr . read ( ) = = NOERR )
descr = clr . get ( " S0 " ) ;
else
return f . warning_box ( " Ulteriore classificazione errata o non presente in tabella " ) ;
f . mask ( ) . set ( 114 , descr ) ;
}
return TRUE ;
}
bool TVar_sc : : datascad_handler ( TMask_field & f , KEY k )
{
if ( ( k = = K_TAB | | k = = K_ENTER ) & & f . mask ( ) . is_running ( ) )
{
TString datascad ( f . get ( ) ) ;
datascad . trim ( ) ;
if ( datascad . empty ( ) | | ! ( TDate : : isdate ( datascad ) ) )
return f . warning_box ( " Data scadenza errata " ) ;
}
return TRUE ;
}
bool TVar_sc : : banca_handler ( TMask_field & f , KEY k )
{
if ( ( k = = K_TAB | | k = = K_ENTER ) & & f . mask ( ) . is_running ( ) )
{
TString mess ;
long abi ;
long cab = atol ( f . get ( ) ) ;
int id = f . dlg ( ) ;
if ( id = = 120 )
{
abi = f . mask ( ) . get_long ( 119 ) ;
mess = " Codice nostra banca errato o non presente in tabella " ;
}
else
if ( id = = 122 )
{
abi = f . mask ( ) . get_long ( 121 ) ;
mess = " Codice vostra banca errato o non presente in tabella " ;
}
else
if ( id = = 127 )
{
abi = f . mask ( ) . get_long ( 126 ) ;
mess = " Codice nostra banca errato o non presente in tabella " ;
}
else
if ( id = = 129 )
{
abi = f . mask ( ) . get_long ( 128 ) ;
mess = " Codice vostra banca errato o non presente in tabella " ;
}
if ( abi = = 0 & & cab = = 0 ) return TRUE ;
TTable ban ( " %BAN " ) ;
TString dep ;
if ( abi ! = 0 & & cab ! = 0 )
dep . format ( " %05ld%05ld " , abi , cab ) ;
if ( abi ! = 0 & & cab = = 0 )
dep . format ( " %05ld " , abi ) ;
ban . zero ( ) ;
ban . put ( " CODTAB " , dep ) ;
if ( ban . read ( ) ! = NOERR )
return f . warning_box ( " %s " , ( const char * ) mess ) ;
}
return TRUE ;
}
bool TVar_sc : : codag_handler ( TMask_field & f , KEY k )
{
if ( ( k = = K_TAB | | k = = K_ENTER ) & & f . mask ( ) . is_running ( ) )
{
TString dep ;
TString codag = f . get ( ) ;
if ( codag . empty ( ) ) return TRUE ;
TTable age ( " AGE " ) ;
if ( real : : is_natural ( codag ) )
dep . format ( " %05s " , ( const char * ) codag ) ;
else
dep . format ( " %-5s " , ( const char * ) codag ) ;
age . zero ( ) ;
age . put ( " CODTAB " , dep ) ;
if ( age . read ( ) ! = NOERR )
return f . warning_box ( " Codice agente errato o non presente in tabella " ) ;
}
return TRUE ;
}
bool TVar_sc : : datasoll_handler ( TMask_field & f , KEY k )
{
if ( ( k = = K_TAB | | k = = K_ENTER ) & & f . mask ( ) . is_running ( ) )
{
TString datasoll ( f . get ( ) ) ;
datasoll . trim ( ) ;
if ( datasoll . empty ) return TRUE ;
if ( ! ( TDate : : isdate ( datasoll ) ) )
return f . warning_box ( " Data sollecito errata " ) ;
}
return TRUE ;
}
bool TVar_sc : : importo_handler ( TMask_field & f , KEY k )
{
if ( ( k = = K_TAB | | k = = K_ENTER ) & & f . mask ( ) . is_running ( ) )
{
real importo ( f . get ( ) ) ;
if ( importo = = ZERO )
return f . warning_box ( " L'importo del pagamento deve essere significativo " ) ;
}
return TRUE ;
}
bool TVar_sc : : impval_handler ( TMask_field & f , KEY k )
{
if ( ( k = = K_TAB | | k = = K_ENTER ) & & f . mask ( ) . is_running ( ) )
{
TString codval ;
real importo ( f . get ( ) ) ;
char tipo = f . mask ( ) . get ( 101 ) [ 0 ] ;
int g = f . mask ( ) . get_int ( 102 ) ;
int c = f . mask ( ) . get_int ( 103 ) ;
long s = f . mask ( ) . get_long ( 104 ) ;
int anno = f . mask ( ) . get_int ( 106 ) ;
TString npart = f . mask ( ) . get ( 107 ) ;
int nriga = f . mask ( ) . get_int ( 108 ) ;
app ( ) . sezione ( tipo , g , c , s , anno , npart , nriga , codval , * ( app ( ) . _mask ) ) ;
if ( codval . empty ( ) & & importo ! = ZERO )
return f . warning_box ( " L'importo in valuta della scadenza non puo' essere indicato se non indicato il codice valuta " ) ;
if ( codval . not_empty ( ) & & importo = = ZERO )
return f . warning_box ( " L'importo in valuta della scadenza deve essere significativo " ) ;
}
return TRUE ;
}
// *******************************************
// ***** HANDLER sulla riga di pagamento *****
// *******************************************
bool TVar_sc : : record_partite ( char tipo , int g , int c , long s , int anno , TString & npart , int nriga )
{
TRecnotype nrec = _tpart - > recno ( ) ;
TIsamtempfile & part = * _tpart ;
part . zero ( ) ;
part . put ( PART_TIPOCF , tipo ) ;
part . put ( PART_GRUPPO , g ) ;
part . put ( PART_CONTO , c ) ;
part . put ( PART_SOTTOCONTO , s ) ;
part . put ( PART_ANNO , anno ) ;
part . put ( PART_NUMPART , npart ) ;
part . put ( PART_NRIGA , nriga ) ;
if ( part . read ( ) = = NOERR )
{
_tpart - > readat ( nrec ) ;
return TRUE ;
}
_tpart - > readat ( nrec ) ;
return FALSE ;
}
bool TVar_sc : : record_scadenze ( char tipo , int g , int c , long s , int anno , TString & npart , int nriga , int nrata )
{
TRecnotype nrec = _tscad - > recno ( ) ;
TIsamtempfile & scad = * _tscad ;
scad . zero ( ) ;
scad . put ( SCAD_TIPOCF , tipo ) ;
scad . put ( SCAD_GRUPPO , g ) ;
scad . put ( SCAD_CONTO , c ) ;
scad . put ( SCAD_SOTTOCONTO , s ) ;
scad . put ( SCAD_ANNO , anno ) ;
scad . put ( SCAD_NUMPART , npart ) ;
scad . put ( SCAD_NRIGA , nriga ) ;
scad . put ( SCAD_NRATA , nrata ) ;
if ( scad . read ( ) = = NOERR )
{
_tscad - > readat ( nrec ) ;
return TRUE ;
}
_tscad - > readat ( nrec ) ;
return FALSE ;
}
bool TVar_sc : : rifpartita_handler ( TMask_field & f , KEY k )
{
if ( ( k = = K_TAB | | k = = K_ENTER ) & & f . mask ( ) . is_running ( ) )
{
int nriga = f . mask ( ) . get_int ( 108 ) ;
int nrata = f . mask ( ) . get_int ( 109 ) ;
if ( nriga = = 9999 | | nrata = = 9999 ) return TRUE ;
char t = f . mask ( ) . get ( 101 ) [ 0 ] ;
int g = f . mask ( ) . get_int ( 102 ) ;
int c = f . mask ( ) . get_int ( 103 ) ;
long s = f . mask ( ) . get_long ( 104 ) ;
int anno = f . mask ( ) . get_int ( 106 ) ;
TString npart = f . mask ( ) . get ( 107 ) ;
if ( ! app ( ) . record_partite ( t , g , c , s , anno , npart , nriga ) )
return f . warning_box ( " Non esiste la riga partita corrispondente " ) ;
if ( ! app ( ) . record_scadenze ( t , g , c , s , anno , npart , nriga , nrata ) )
return f . warning_box ( " Non esiste la rata di scadenza corrispondente " ) ;
}
return TRUE ;
}
bool TVar_sc : : accsal_handler ( TMask_field & f , KEY k )
{
if ( ( k = = K_TAB | | k = = K_ENTER ) & & f . mask ( ) . is_running ( ) )
{
TString accsal = f . get ( ) ;
char t = f . mask ( ) . get ( 101 ) [ 0 ] ;
int g = f . mask ( ) . get_int ( 102 ) ;
int c = f . mask ( ) . get_int ( 103 ) ;
long s = f . mask ( ) . get_long ( 104 ) ;
int anno = f . mask ( ) . get_int ( 106 ) ;
TString npart = f . mask ( ) . get ( 107 ) ;
int nriga = f . mask ( ) . get_int ( 110 ) ;
int tipo = app ( ) . tipo_movimento ( t , g , c , s , anno , npart , nriga , * ( app ( ) . _mask ) ) ;
if ( ( tipo = = 2 | | tipo = = 5 ) & & accsal = = " S " )
return f . warning_box ( " Il flag in acconto / a saldo non puo' essere indicato in caso di Nota credito e Insoluto " ) ;
if ( accsal ! = " S " & & accsal ! = " A " )
return f . warning_box ( " Flag in acconto / a saldo errato " ) ;
}
return TRUE ;
}
bool TVar_sc : : passat_handler ( TMask_field & f , KEY k )
{
if ( ( k = = K_TAB | | k = = K_ENTER ) & & f . mask ( ) . is_running ( ) )
{
real abbuoni ( f . mask ( ) . get_real ( 117 ) ) ;
TString passat = f . get ( ) ;
if ( abbuoni ! = ZERO )
if ( passat ! = " P " & & passat ! = " A " )
return f . warning_box ( " Flag attivo / passivo errato " ) ;
}
return TRUE ;
}
bool TVar_sc : : impvalp_handler ( TMask_field & f , KEY k )
{
if ( ( k = = K_TAB | | k = = K_ENTER ) & & f . mask ( ) . is_running ( ) )
{
TString codval ;
real importo ( f . get ( ) ) ;
char tipo = f . mask ( ) . get ( 101 ) [ 0 ] ;
int g = f . mask ( ) . get_int ( 102 ) ;
int c = f . mask ( ) . get_int ( 103 ) ;
long s = f . mask ( ) . get_long ( 104 ) ;
int anno = f . mask ( ) . get_int ( 106 ) ;
TString npart = f . mask ( ) . get ( 107 ) ;
int nriga = f . mask ( ) . get_int ( 110 ) ;
app ( ) . sezione ( tipo , g , c , s , anno , npart , nriga , codval , * ( app ( ) . _mask ) ) ;
if ( codval . empty ( ) & & importo ! = ZERO )
return f . warning_box ( " L'importo in valuta del pagamento non puo' essere indicato se non indicato il codice valuta " ) ;
if ( codval . not_empty ( ) & & importo = = ZERO )
return f . warning_box ( " L'importo in valuta del pagamento deve essere significativo " ) ;
}
return TRUE ;
}
bool TVar_sc : : sezione_abb_handler ( TMask_field & f , KEY k )
{
if ( ( k = = K_TAB | | k = = K_ENTER ) & & f . mask ( ) . is_running ( ) )
{
TString sez ( f . get ( ) ) ;
real abbuoni ( f . mask ( ) . get ( 117 ) ) ;
if ( sez ! = " D " & & sez ! = " A " & & sez ! = " " )
return f . warning_box ( " Valore non valido per sezione " ) ;
if ( abbuoni ! = ZERO & & sez . empty ( ) )
return f . warning_box ( " Se gli abbuoni sono significativi la sezione deve essere indicata " ) ;
if ( sez = = " D " )
f . mask ( ) . set ( 131 , " A " ) ;
else
if ( sez = = " A " )
f . mask ( ) . set ( 131 , " P " ) ;
else
f . mask ( ) . set ( 131 , " " ) ;
}
return TRUE ;
}
bool TVar_sc : : ritenute_handler ( TMask_field & f , KEY k )
{
if ( ( k = = K_TAB | | k = = K_ENTER ) & & f . mask ( ) . is_running ( ) )
{
TString codval ;
char tipo = f . mask ( ) . get ( 101 ) [ 0 ] ;
int g = f . mask ( ) . get_int ( 102 ) ;
int c = f . mask ( ) . get_int ( 103 ) ;
long s = f . mask ( ) . get_long ( 104 ) ;
int anno = f . mask ( ) . get_int ( 106 ) ;
TString npart = f . mask ( ) . get ( 107 ) ;
int nriga = f . mask ( ) . get_int ( 110 ) ;
real ritenute ( f . get ( ) ) ;
int tipomov = app ( ) . tipo_movimento ( tipo , g , c , s , anno , npart , nriga , * ( app ( ) . _mask ) ) ;
if ( ( tipomov = = 2 | | tipomov = = 5 ) & & ritenute ! = ZERO )
return f . warning_box ( " La ritenuta non puo' essere indicata in caso di Nota credito e Insoluto " ) ;
char sez = app ( ) . sezione ( tipo , g , c , s , anno , npart , nriga , codval , * ( app ( ) . _mask ) ) ;
TString str ( format ( " %c " , sez ) ) ;
if ( ritenute ! = ZERO )
f . mask ( ) . set ( 114 , str ) ;
else
f . mask ( ) . set ( 114 , " " ) ;
}
return TRUE ;
}
bool TVar_sc : : abbuoni_handler ( TMask_field & f , KEY k )
{
if ( k = = K_TAB )
{
TString codval ;
char tipo = f . mask ( ) . get ( 101 ) [ 0 ] ;
int g = f . mask ( ) . get_int ( 102 ) ;
int c = f . mask ( ) . get_int ( 103 ) ;
long s = f . mask ( ) . get_long ( 104 ) ;
int anno = f . mask ( ) . get_int ( 106 ) ;
TString npart = f . mask ( ) . get ( 107 ) ;
int nriga = f . mask ( ) . get_int ( 110 ) ;
app ( ) . sezione ( tipo , g , c , s , anno , npart , nriga , codval , * ( app ( ) . _mask ) ) ;
if ( codval . not_empty ( ) )
( ( TReal_field & ) f ) . set_decimals ( 3 ) ;
else
( ( TReal_field & ) f ) . set_decimals ( 0 ) ;
}
if ( ( k = = K_TAB | | k = = K_ENTER ) & & f . mask ( ) . is_running ( ) )
{
TString accsal ( f . mask ( ) . get ( 111 ) ) ;
real abbuoni ( f . get ( ) ) ;
if ( accsal = = " A " & & abbuoni ! = ZERO )
return f . warning_box ( " Gli abbuoni possono essere indicati solo se a SALDO " ) ;
}
return TRUE ;
}
bool TVar_sc : : sezione_dc_handler ( TMask_field & f , KEY k )
{
if ( ( k = = K_TAB | | k = = K_ENTER ) & & f . mask ( ) . is_running ( ) )
{
TString sez ( f . get ( ) ) ;
real diffcam ( f . mask ( ) . get ( 119 ) ) ;
if ( sez ! = " D " & & sez ! = " A " & & sez ! = " " )
return f . warning_box ( " Valore non valido per sezione " ) ;
if ( diffcam ! = ZERO & & sez . empty ( ) )
return f . warning_box ( " Se la differenza cambio e' significativa la sezione deve essere indicata " ) ;
}
return TRUE ;
}
bool TVar_sc : : diffcambio_handler ( TMask_field & f , KEY k )
{
if ( ( k = = K_TAB | | k = = K_ENTER ) & & f . mask ( ) . is_running ( ) )
{
TString codval ;
char tipo = f . mask ( ) . get ( 101 ) [ 0 ] ;
int g = f . mask ( ) . get_int ( 102 ) ;
int c = f . mask ( ) . get_int ( 103 ) ;
long s = f . mask ( ) . get_long ( 104 ) ;
int anno = f . mask ( ) . get_int ( 106 ) ;
TString npart = f . mask ( ) . get ( 107 ) ;
int nriga = f . mask ( ) . get_int ( 110 ) ;
app ( ) . sezione ( tipo , g , c , s , anno , npart , nriga , codval , * ( app ( ) . _mask ) ) ;
TString accsal ( f . mask ( ) . get ( 111 ) ) ;
real diffcam ( f . get ( ) ) ;
if ( accsal = = " A " & & diffcam ! = ZERO )
return f . warning_box ( " La differenza cambio puo' essere indicata solo se a SALDO " ) ;
if ( codval . empty ( ) & & diffcam ! = ZERO )
return f . warning_box ( " La differenza cambio puo' essere indicata solo in caso di valuta " ) ;
}
return TRUE ;
}
bool TVar_sc : : contropartita_handler ( TMask_field & f , KEY k )
{
if ( ( k = = K_TAB | | k = = K_ENTER ) & & f . mask ( ) . is_running ( ) )
{
char tipo = f . mask ( ) . get ( 101 ) [ 0 ] ;
int g = f . mask ( ) . get_int ( 102 ) ;
int c = f . mask ( ) . get_int ( 103 ) ;
long s = f . mask ( ) . get_long ( 104 ) ;
int anno = f . mask ( ) . get_int ( 106 ) ;
TString npart = f . mask ( ) . get ( 107 ) ;
int nriga = f . mask ( ) . get_int ( 110 ) ;
int tipomov = app ( ) . tipo_movimento ( tipo , g , c , s , anno , npart , nriga , * ( app ( ) . _mask ) ) ;
if ( ( tipomov = = 2 | | tipomov = = 5 ) & & ( g ! = 0 | | c ! = 0 | | s ! = 0 ) )
return f . warning_box ( " La contropartita non puo' essere indicata in caso di Nota credito e Insoluto " ) ;
TString tipocf = f . mask ( ) . get ( 121 ) ;
if ( tipocf = = " C " | | tipocf = = " F " )
{
long codcf = f . mask ( ) . get_long ( 124 ) ;
if ( codcf = = 0 ) return TRUE ;
TLocalisamfile clifo ( LF_CLIFO ) ;
clifo . setkey ( 1 ) ;
clifo . zero ( ) ;
clifo . put ( CLI_TIPOCF , tipocf ) ;
clifo . put ( CLI_CODCF , codcf ) ;
if ( clifo . read ( ) ! = NOERR )
return f . warning_box ( " Codice di contropartita errato o non presente in anagrafica clienti/fornitori " ) ;
}
else
{
int gruppo = f . mask ( ) . get_int ( 122 ) ;
int conto = f . mask ( ) . get_int ( 123 ) ;
long sottoc = f . mask ( ) . get_long ( 124 ) ;
if ( gruppo = = 0 & & conto = = 0 & & sottoc = = 0 ) return TRUE ;
TLocalisamfile pcon ( LF_PCON ) ;
pcon . setkey ( 1 ) ;
pcon . zero ( ) ;
pcon . put ( PCN_GRUPPO , gruppo ) ;
pcon . put ( PCN_CONTO , conto ) ;
pcon . put ( PCN_SOTTOCONTO , sottoc ) ;
if ( pcon . read ( ) ! = NOERR )
return f . warning_box ( " Codice contropartita errato o non presente in piano conti " ) ;
}
}
return TRUE ;
}
bool TVar_sc : : registra_dati_comuni ( TMask_field & f , KEY k )
{
if ( k = = K_ENTER & & f . mask ( ) . is_running ( ) )
{
long nreg = f . mask ( ) . get_long ( 113 ) ;
int nrig = f . mask ( ) . get_int ( 114 ) ;
if ( nreg ! = 0 & & nrig ! = 0 )
{
TDate datareg ( f . mask ( ) . get_date ( 115 ) ) ;
TString numdoc ( f . mask ( ) . get ( 110 ) ) ;
TDate datadoc ( f . mask ( ) . get_date ( 109 ) ) ;
TString codcaus ( f . mask ( ) . get ( 111 ) ) ;
TSheet_field & part = ( TSheet_field & ) app ( ) . _mask - > field ( F_RIGAPART ) ;
for ( int i = 0 ; i < part . items ( ) ; i + + )
{
TToken_string & row = part . row ( i ) ;
long numreg = row . get_long ( 12 ) ;
int numrig = row . get_int ( 13 ) ;
if ( nreg ! = numreg | | nrig ! = numrig ) continue ;
TString d_caus ;
app ( ) . descr_caus ( codcaus , d_caus ) ;
row . add ( datadoc , 8 ) ;
row . add ( numdoc , 9 ) ;
row . add ( codcaus , 10 ) ;
row . add ( d_caus , 11 ) ;
row . add ( datareg , 14 ) ;
}
part . force_update ( ) ;
}
}
return TRUE ;
}
bool TVar_sc : : cancella_partita ( TMask_field & f )
{
TIsamtempfile & part = * _tpart ;
char tipo = f . mask ( ) . get ( 101 ) [ 0 ] ;
int gruppo = f . mask ( ) . get_int ( 102 ) ;
int conto = f . mask ( ) . get_int ( 103 ) ;
long sottoc = f . mask ( ) . get_long ( 104 ) ;
int anno = f . mask ( ) . get_int ( 106 ) ;
TString numpart = f . mask ( ) . get ( 107 ) ;
int nriga = f . mask ( ) . get_int ( 108 ) ;
int tipomov = f . mask ( ) . get_int ( 119 ) ;
if ( ! controlla_abbuoni_diffcam ( tipo , gruppo , conto , sottoc , anno , numpart , nriga , 0 ) )
return f . message_box ( " Impossibile eliminare questa partita in quanto esistono uno o piu' pagamenti riferiti ad essa contenenti abbuoni o differenze cambio " ) ;
part . setkey ( 1 ) ;
part . zero ( ) ;
part . put ( PART_TIPOCF , tipo ) ;
part . put ( PART_GRUPPO , gruppo ) ;
part . put ( PART_CONTO , conto ) ;
part . put ( PART_SOTTOCONTO , sottoc ) ;
part . put ( PART_ANNO , anno ) ;
part . put ( PART_NUMPART , numpart ) ;
part . put ( PART_NRIGA , nriga ) ;
if ( part . read ( ) = = NOERR )
{
part . remove ( ) ;
if ( tipomov = = 1 )
{
TIsamtempfile & scad = * _tscad ;
scad . setkey ( 1 ) ;
scad . zero ( ) ;
scad . put ( SCAD_TIPOCF , tipo ) ;
scad . put ( SCAD_GRUPPO , gruppo ) ;
scad . put ( SCAD_CONTO , conto ) ;
scad . put ( SCAD_SOTTOCONTO , sottoc ) ;
scad . put ( SCAD_ANNO , anno ) ;
scad . put ( SCAD_NUMPART , numpart ) ;
scad . put ( SCAD_NRIGA , nriga ) ;
TRectype scadenza ( scad . curr ( ) ) ;
for ( scad . read ( _isgteq ) ; ! scad . eof ( ) ; scad . next ( ) )
{
TString rec = scadenza . get ( SCAD_NUMPART ) ;
TString file = scad . get ( SCAD_NUMPART ) ;
if ( scad . curr ( ) ! = scadenza | | file ! = rec ) break ;
int nrata = scad . get_int ( SCAD_NRATA ) ;
scad . remove ( ) ;
sgancia_pagamenti ( tipo , gruppo , conto , sottoc , anno , numpart , nriga , nrata ) ;
}
}
else
if ( tipomov ! = 1 )
{
TIsamtempfile & pagsca = * _tpagsca ;
pagsca . setkey ( 1 ) ;
pagsca . zero ( ) ;
pagsca . put ( PAGSCA_TIPOC , tipo ) ;
pagsca . put ( PAGSCA_GRUPPO , gruppo ) ;
pagsca . put ( PAGSCA_CONTO , conto ) ;
pagsca . put ( PAGSCA_SOTTOCONTO , sottoc ) ;
pagsca . put ( PAGSCA_ANNO , anno ) ;
pagsca . put ( PAGSCA_NUMPART , numpart ) ;
TRectype pagamenti ( pagsca . curr ( ) ) ;
for ( pagsca . read ( _isgteq ) ; ! pagsca . eof ( ) ; pagsca . next ( ) )
{
TString rec = pagamenti . get ( PAGSCA_NUMPART ) ;
TString file = pagsca . get ( PAGSCA_NUMPART ) ;
if ( pagsca . curr ( ) ! = pagamenti | | file ! = rec ) break ;
int nrigp = pagsca . get_int ( PAGSCA_NRIGP ) ;
if ( nriga ! = nrigp ) continue ;
pagsca . remove ( ) ;
}
}
}
else
return f . warning_box ( " Non esiste la riga di partita richiesta sull'archivio delle partite " ) ;
return TRUE ;
}
bool TVar_sc : : controlla_abbuoni_diffcam ( char tipo , int g , int c , long s , int anno , TString & npart , int nriga , int nrata )
{
TIsamtempfile & pagsca = * _tpagsca ;
pagsca . setkey ( 1 ) ;
pagsca . zero ( ) ;
pagsca . put ( PAGSCA_TIPOC , tipo ) ;
pagsca . put ( PAGSCA_GRUPPO , g ) ;
pagsca . put ( PAGSCA_CONTO , c ) ;
pagsca . put ( PAGSCA_SOTTOCONTO , s ) ;
pagsca . put ( PAGSCA_ANNO , anno ) ;
pagsca . put ( PAGSCA_NUMPART , npart ) ;
pagsca . put ( PAGSCA_NRIGA , nriga ) ;
if ( nrata ! = 0 )
pagsca . put ( PAGSCA_NRATA , nrata ) ;
TRectype pagamenti ( pagsca . curr ( ) ) ;
for ( pagsca . read ( _isgteq ) ; ! pagsca . eof ( ) ; pagsca . next ( ) )
{
TString rec = pagamenti . get ( PAGSCA_NUMPART ) ;
TString file = pagsca . get ( PAGSCA_NUMPART ) ;
if ( pagsca . curr ( ) ! = pagamenti | | file ! = rec ) break ;
real abbuoni = pagsca . get_real ( PAGSCA_ABBUONI ) ;
real diffcam = pagsca . get_real ( PAGSCA_DIFFCAM ) ;
if ( abbuoni ! = ZERO | | diffcam ! = ZERO )
return FALSE ;
}
return TRUE ;
}
bool TVar_sc : : elimina_partita ( TMask_field & f , KEY k )
{
if ( k = = K_SPACE & & f . mask ( ) . is_running ( ) )
if ( ! app ( ) . cancella_partita ( f ) )
return FALSE ;
return TRUE ;
}
void TVar_sc : : sgancia_pagamenti ( char tipo , int g , int c , long s , int anno , TString & npart , int nriga , int nrata )
{
TIsamtempfile & pagsca = * _tpagsca ;
pagsca . setkey ( 1 ) ;
pagsca . zero ( ) ;
pagsca . put ( PAGSCA_TIPOC , tipo ) ;
pagsca . put ( PAGSCA_GRUPPO , g ) ;
pagsca . put ( PAGSCA_CONTO , c ) ;
pagsca . put ( PAGSCA_SOTTOCONTO , s ) ;
pagsca . put ( PAGSCA_ANNO , anno ) ;
pagsca . put ( PAGSCA_NUMPART , npart ) ;
pagsca . put ( PAGSCA_NRIGA , nriga ) ;
pagsca . put ( PAGSCA_NRATA , nrata ) ;
TRectype pagamenti ( pagsca . curr ( ) ) ;
for ( pagsca . read ( _isgteq ) ; ! pagsca . eof ( ) ; pagsca . next ( ) )
{
TString rec = pagamenti . get ( PAGSCA_NUMPART ) ;
TString file = pagsca . get ( PAGSCA_NUMPART ) ;
if ( pagsca . curr ( ) ! = pagamenti | | file ! = rec ) break ;
TRectype pag ( pagsca . curr ( ) ) ;
pag . put ( PAGSCA_NRIGA , 9999 ) ;
pag . put ( PAGSCA_NRATA , 9999 ) ;
TRecnotype nrec = pagsca . recno ( ) ;
pagsca . remove ( ) ;
pagsca . curr ( ) = pag ;
if ( pagsca . read ( ) = = NOERR )
{
real importo = pagsca . get_real ( PAGSCA_IMPORTO ) + pag . get_real ( PAGSCA_IMPORTO ) ;
real impval = pagsca . get_real ( PAGSCA_IMPORTOVAL ) + pag . get_real ( PAGSCA_IMPORTOVAL ) ;
real ritenute = pagsca . get_real ( PAGSCA_RITENUTE ) + pag . get_real ( PAGSCA_RITENUTE ) ;
pagsca . put ( PAGSCA_IMPORTO , importo ) ;
pagsca . put ( PAGSCA_IMPORTOVAL , impval ) ;
pagsca . put ( PAGSCA_RITENUTE , ritenute ) ;
pagsca . put ( PAGSCA_ACCSAL , " A " ) ;
pagsca . rewrite ( ) ;
}
else
{
pagsca . curr ( ) = pag ;
pagsca . write ( ) ;
}
pagsca . readat ( nrec ) ;
}
}
bool TVar_sc : : elimina_scadenza ( TMask_field & f , KEY k )
{
if ( k = = K_SPACE & & f . mask ( ) . is_running ( ) )
if ( ! app ( ) . cancella_scadenza ( f ) )
return FALSE ;
return TRUE ;
}
bool TVar_sc : : cancella_scadenza ( TMask_field & f )
{
TIsamtempfile & scad = * _tscad ;
char tipo = f . mask ( ) . get ( 101 ) [ 0 ] ;
int gruppo = f . mask ( ) . get_int ( 102 ) ;
int conto = f . mask ( ) . get_int ( 103 ) ;
long sottoc = f . mask ( ) . get_long ( 104 ) ;
int anno = f . mask ( ) . get_int ( 106 ) ;
TString numpart = f . mask ( ) . get ( 107 ) ;
int nriga = f . mask ( ) . get_int ( 108 ) ;
int nrata = f . mask ( ) . get_int ( 109 ) ;
if ( ! controlla_abbuoni_diffcam ( tipo , gruppo , conto , sottoc , anno , numpart , nriga , nrata ) )
return f . message_box ( " Impossibile eliminare questa scadenza in quanto esistono uno o piu' pagamenti riferiti ad essa contenenti abbuoni o differenze cambio " ) ;
scad . setkey ( 1 ) ;
scad . zero ( ) ;
scad . put ( SCAD_TIPOCF , tipo ) ;
scad . put ( SCAD_GRUPPO , gruppo ) ;
scad . put ( SCAD_CONTO , conto ) ;
scad . put ( SCAD_SOTTOCONTO , sottoc ) ;
scad . put ( SCAD_ANNO , anno ) ;
scad . put ( SCAD_NUMPART , numpart ) ;
scad . put ( SCAD_NRIGA , nriga ) ;
scad . put ( SCAD_NRATA , nrata ) ;
if ( scad . read ( ) = = NOERR )
{
scad . remove ( ) ;
sgancia_pagamenti ( tipo , gruppo , conto , sottoc , anno , numpart , nriga , nrata ) ;
}
else
return f . warning_box ( " Non esiste la scadenza richiesta sull'archivio delle scadenze " ) ;
return TRUE ;
}
bool TVar_sc : : elimina_pagamenti ( TMask_field & f , KEY k )
{
if ( k = = K_SPACE & & f . mask ( ) . is_running ( ) )
if ( ! app ( ) . cancella_pagamenti ( f ) )
return FALSE ;
return TRUE ;
}
bool TVar_sc : : cancella_pagamenti ( TMask_field & f )
{
TIsamtempfile & pagsca = * _tpagsca ;
char tipo = f . mask ( ) . get ( 101 ) [ 0 ] ;
int gruppo = f . mask ( ) . get_int ( 102 ) ;
int conto = f . mask ( ) . get_int ( 103 ) ;
long sottoc = f . mask ( ) . get_long ( 104 ) ;
int anno = f . mask ( ) . get_int ( 106 ) ;
TString numpart = f . mask ( ) . get ( 107 ) ;
int nriga = f . mask ( ) . get_int ( 108 ) ;
int nrata = f . mask ( ) . get_int ( 109 ) ;
int nrigp = f . mask ( ) . get_int ( 110 ) ;
pagsca . setkey ( 1 ) ;
pagsca . zero ( ) ;
pagsca . put ( PAGSCA_TIPOC , tipo ) ;
pagsca . put ( PAGSCA_GRUPPO , gruppo ) ;
pagsca . put ( PAGSCA_CONTO , conto ) ;
pagsca . put ( PAGSCA_SOTTOCONTO , sottoc ) ;
pagsca . put ( PAGSCA_ANNO , anno ) ;
pagsca . put ( PAGSCA_NUMPART , numpart ) ;
pagsca . put ( PAGSCA_NRIGA , nriga ) ;
pagsca . put ( PAGSCA_NRATA , nrata ) ;
pagsca . put ( PAGSCA_NRIGP , nrigp ) ;
if ( pagsca . read ( ) = = NOERR )
{
pagsca . remove ( ) ;
}
else
return f . warning_box ( " Non esiste il pagamento richiesto sull'archivio dei pagamenti " ) ;
return TRUE ;
}
void TVar_sc : : registra_partita ( TMask & m )
{
TSheet_field & part = ( TSheet_field & ) m . field ( F_RIGAPART ) ;
for ( int i = 0 ; i < part . items ( ) ; i + + )
{
TToken_string & row = part . row ( i ) ;
char tipo = row . get ( 0 ) [ 0 ] ;
int gruppo = row . get_int ( 1 ) ;
int conto = row . get_int ( 2 ) ;
long sottoc = row . get_long ( 3 ) ;
int anno = row . get_int ( 5 ) ;
TString numpart = row . get ( 6 ) ;
int nriga = row . get_int ( 7 ) ;
TDate datadoc ( row . get ( 8 ) ) ;
TString numdoc = row . get ( 9 ) ;
TString codcaus = row . get ( 10 ) ;
long nreg = row . get_long ( 12 ) ;
int nrig = row . get_int ( 13 ) ;
TDate datareg ( row . get ( 14 ) ) ;
int gruppocl = row . get_int ( 15 ) ;
int contocl = row . get_int ( 16 ) ;
int tipomov = row . get_int ( 18 ) ;
TString descr = row . get ( 19 ) ;
char sez = row . get ( 20 ) [ 0 ] ;
TDate datapag ( row . get ( 21 ) ) ;
int tipopag = row . get_int ( 22 ) ;
TString codval ( row . get ( 23 ) ) ;
TDate datacam ( row . get ( 24 ) ) ;
real cambio ( row . get ( 25 ) ) ;
_tpart - > setkey ( 1 ) ;
_tpart - > zero ( ) ;
_tpart - > put ( PART_TIPOCF , tipo ) ;
_tpart - > put ( PART_GRUPPO , gruppo ) ;
_tpart - > put ( PART_CONTO , conto ) ;
_tpart - > put ( PART_SOTTOCONTO , sottoc ) ;
_tpart - > put ( PART_ANNO , anno ) ;
_tpart - > put ( PART_NUMPART , numpart ) ;
_tpart - > put ( PART_NRIGA , nriga ) ;
if ( _tpart - > read ( ) = = NOERR )
{
_tpart - > put ( PART_TIPOCF , tipo ) ;
_tpart - > put ( PART_GRUPPO , gruppo ) ;
_tpart - > put ( PART_CONTO , conto ) ;
_tpart - > put ( PART_SOTTOCONTO , sottoc ) ;
_tpart - > put ( PART_ANNO , anno ) ;
_tpart - > put ( PART_NUMPART , numpart ) ;
_tpart - > put ( PART_NRIGA , nriga ) ;
_tpart - > put ( PART_DATADOC , datadoc ) ;
_tpart - > put ( PART_NUMDOC , numdoc ) ;
_tpart - > put ( PART_CODCAUS , codcaus ) ;
_tpart - > put ( PART_NREG , nreg ) ;
_tpart - > put ( PART_NUMRIG , nrig ) ;
_tpart - > put ( PART_DATAREG , datareg ) ;
_tpart - > put ( PART_GRUPPOCL , gruppocl ) ;
_tpart - > put ( PART_CONTOCL , contocl ) ;
_tpart - > put ( PART_TIPOMOV , tipomov ) ;
_tpart - > put ( PART_DESCR , descr ) ;
_tpart - > put ( PART_SEZ , sez ) ;
_tpart - > put ( PART_DATAPAG , datapag ) ;
_tpart - > put ( PART_TIPOPAG , tipopag ) ;
_tpart - > put ( PART_CODVAL , codval ) ;
_tpart - > put ( PART_DATACAM , datacam ) ;
_tpart - > put ( PART_CAMBIO , cambio ) ;
_tpart - > rewrite ( ) ;
}
else
{
_tpart - > put ( PART_TIPOCF , tipo ) ;
_tpart - > put ( PART_GRUPPO , gruppo ) ;
_tpart - > put ( PART_CONTO , conto ) ;
_tpart - > put ( PART_SOTTOCONTO , sottoc ) ;
_tpart - > put ( PART_ANNO , anno ) ;
_tpart - > put ( PART_NUMPART , numpart ) ;
_tpart - > put ( PART_NRIGA , nriga ) ;
_tpart - > put ( PART_DATADOC , datadoc ) ;
_tpart - > put ( PART_NUMDOC , numdoc ) ;
_tpart - > put ( PART_CODCAUS , codcaus ) ;
_tpart - > put ( PART_NREG , nreg ) ;
_tpart - > put ( PART_NUMRIG , nrig ) ;
_tpart - > put ( PART_DATAREG , datareg ) ;
_tpart - > put ( PART_GRUPPOCL , gruppocl ) ;
_tpart - > put ( PART_CONTOCL , contocl ) ;
_tpart - > put ( PART_TIPOMOV , tipomov ) ;
_tpart - > put ( PART_DESCR , descr ) ;
_tpart - > put ( PART_SEZ , sez ) ;
_tpart - > put ( PART_DATAPAG , datapag ) ;
_tpart - > put ( PART_TIPOPAG , tipopag ) ;
_tpart - > put ( PART_CODVAL , codval ) ;
_tpart - > put ( PART_DATACAM , datacam ) ;
_tpart - > put ( PART_CAMBIO , cambio ) ;
_tpart - > write ( ) ;
}
}
}
void TVar_sc : : registra_scadenze ( TMask & m )
{
TSheet_field & scad = ( TSheet_field & ) m . field ( F_RIGASCAD ) ;
for ( int i = 0 ; i < scad . items ( ) ; i + + )
{
TToken_string & row = scad . row ( i ) ;
char tipo = row . get ( 0 ) [ 0 ] ;
int gruppo = row . get_int ( 1 ) ;
int conto = row . get_int ( 2 ) ;
long sottoc = row . get_long ( 3 ) ;
int anno = row . get_int ( 5 ) ;
TString numpart = row . get ( 6 ) ;
int nriga = row . get_int ( 7 ) ;
int nrata = row . get_int ( 8 ) ;
TDate datascad ( row . get ( 9 ) ) ;
TString codpag = row . get ( 10 ) ;
int tipopag = row . get_int ( 11 ) ;
TString ultclass = row . get ( 12 ) ;
real importo ( row . get ( 15 ) ) ;
real impval ( row . get ( 16 ) ) ;
TString descr = row . get ( 17 ) ;
long nsabi = row . get_long ( 19 ) ;
long nscab = row . get_long ( 19 ) ;
long vsabi = row . get_long ( 20 ) ;
long vscab = row . get_long ( 21 ) ;
TString codag = row . get ( 22 ) ;
TDate datasoll ( row . get ( 23 ) ) ;
int nsoll = row . get_int ( 24 ) ;
_tscad - > setkey ( 1 ) ;
_tscad - > zero ( ) ;
_tscad - > put ( SCAD_TIPOCF , tipo ) ;
_tscad - > put ( SCAD_GRUPPO , gruppo ) ;
_tscad - > put ( SCAD_CONTO , conto ) ;
_tscad - > put ( SCAD_SOTTOCONTO , sottoc ) ;
_tscad - > put ( SCAD_ANNO , anno ) ;
_tscad - > put ( SCAD_NUMPART , numpart ) ;
_tscad - > put ( SCAD_NRIGA , nriga ) ;
_tscad - > put ( SCAD_NRATA , nrata ) ;
if ( _tscad - > read ( ) = = NOERR )
{
_tscad - > put ( SCAD_TIPOCF , tipo ) ;
_tscad - > put ( SCAD_GRUPPO , gruppo ) ;
_tscad - > put ( SCAD_CONTO , conto ) ;
_tscad - > put ( SCAD_SOTTOCONTO , sottoc ) ;
_tscad - > put ( SCAD_ANNO , anno ) ;
_tscad - > put ( SCAD_NUMPART , numpart ) ;
_tscad - > put ( SCAD_NRIGA , nriga ) ;
_tscad - > put ( SCAD_NRATA , nrata ) ;
_tscad - > put ( SCAD_DATASCAD , datascad ) ;
_tscad - > put ( SCAD_CODPAG , codpag ) ;
_tscad - > put ( SCAD_TIPOPAG , tipopag ) ;
_tscad - > put ( SCAD_ULTCLASS , ultclass ) ;
_tscad - > put ( SCAD_IMPORTO , importo ) ;
_tscad - > put ( SCAD_IMPORTOVAL , impval ) ;
_tscad - > put ( SCAD_DESCR , descr ) ;
_tscad - > put ( SCAD_CODABIPR , nsabi ) ;
_tscad - > put ( SCAD_CODCABPR , nscab ) ;
_tscad - > put ( SCAD_CODABI , vsabi ) ;
_tscad - > put ( SCAD_CODCAB , vscab ) ;
_tscad - > put ( SCAD_CODAG , codag ) ;
_tscad - > put ( SCAD_DATASOLL , datasoll ) ;
_tscad - > put ( SCAD_NSOLL , nsoll ) ;
_tscad - > rewrite ( ) ;
}
else
{
_tscad - > put ( SCAD_TIPOCF , tipo ) ;
_tscad - > put ( SCAD_GRUPPO , gruppo ) ;
_tscad - > put ( SCAD_CONTO , conto ) ;
_tscad - > put ( SCAD_SOTTOCONTO , sottoc ) ;
_tscad - > put ( SCAD_ANNO , anno ) ;
_tscad - > put ( SCAD_NUMPART , numpart ) ;
_tscad - > put ( SCAD_NRIGA , nriga ) ;
_tscad - > put ( SCAD_NRATA , nrata ) ;
_tscad - > put ( SCAD_DATASCAD , datascad ) ;
_tscad - > put ( SCAD_CODPAG , codpag ) ;
_tscad - > put ( SCAD_TIPOPAG , tipopag ) ;
_tscad - > put ( SCAD_ULTCLASS , ultclass ) ;
_tscad - > put ( SCAD_IMPORTO , importo ) ;
_tscad - > put ( SCAD_IMPORTOVAL , impval ) ;
_tscad - > put ( SCAD_DESCR , descr ) ;
_tscad - > put ( SCAD_CODABIPR , nsabi ) ;
_tscad - > put ( SCAD_CODCABPR , nscab ) ;
_tscad - > put ( SCAD_CODABI , vsabi ) ;
_tscad - > put ( SCAD_CODCAB , vscab ) ;
_tscad - > put ( SCAD_CODAG , codag ) ;
_tscad - > put ( SCAD_DATASOLL , datasoll ) ;
_tscad - > put ( SCAD_NSOLL , nsoll ) ;
_tscad - > write ( ) ;
}
}
}
void TVar_sc : : registra_pagamenti ( TMask & m )
{
TString passat ;
TSheet_field & pag = ( TSheet_field & ) m . field ( F_RIGAPAGSCA ) ;
for ( int i = 0 ; i < pag . items ( ) ; i + + )
{
TToken_string & row = pag . row ( i ) ;
char tipo = row . get ( 0 ) [ 0 ] ;
int gruppo = row . get_int ( 1 ) ;
int conto = row . get_int ( 2 ) ;
long sottoc = row . get_long ( 3 ) ;
int anno = row . get_int ( 5 ) ;
TString numpart = row . get ( 6 ) ;
int nriga = row . get_int ( 7 ) ;
int nrata = row . get_int ( 8 ) ;
int nrigp = row . get_int ( 9 ) ;
TString accsal = row . get ( 10 ) ;
real importo ( row . get ( 12 ) ) ;
real ritenute ( row . get ( 14 ) ) ;
real abbuoni ( row . get ( 16 ) ) ;
real diffcam ( row . get ( 18 ) ) ;
real impval ( row . get ( 19 ) ) ;
char tipoc = row . get ( 20 ) [ 0 ] ;
int gruppoc = row . get_int ( 21 ) ;
int contoc = row . get_int ( 22 ) ;
long sottocc = row . get_long ( 23 ) ;
long nsabi = row . get_long ( 25 ) ;
long nscab = row . get_long ( 26 ) ;
long vsabi = row . get_long ( 27 ) ;
long vscab = row . get_long ( 28 ) ;
TString codag = row . get ( 29 ) ;
TString codval = " " ;
char sez = sezione ( tipo , gruppo , conto , sottoc , anno , numpart , nriga , codval , * _mask ) ;
char sezab = row . get ( 15 ) [ 0 ] ;
if ( sezab ! = sez )
abbuoni = abbuoni * - 1 ;
if ( sezab = = ' A ' )
passat = " P " ;
else
if ( sezab = = ' D ' )
passat = " A " ;
char sezdc = row . get ( 17 ) [ 0 ] ;
if ( sezdc ! = sez )
diffcam = diffcam * - 1 ;
_tpagsca - > setkey ( 1 ) ;
_tpagsca - > zero ( ) ;
_tpagsca - > put ( PAGSCA_TIPOC , tipo ) ;
_tpagsca - > put ( PAGSCA_GRUPPO , gruppo ) ;
_tpagsca - > put ( PAGSCA_CONTO , conto ) ;
_tpagsca - > put ( PAGSCA_SOTTOCONTO , sottoc ) ;
_tpagsca - > put ( PAGSCA_ANNO , anno ) ;
_tpagsca - > put ( PAGSCA_NUMPART , numpart ) ;
_tpagsca - > put ( PAGSCA_NRIGA , nriga ) ;
_tpagsca - > put ( PAGSCA_NRATA , nrata ) ;
_tpagsca - > put ( PAGSCA_NRIGP , nrigp ) ;
if ( _tpagsca - > read ( ) = = NOERR )
{
_tpagsca - > put ( PAGSCA_TIPOC , tipo ) ;
_tpagsca - > put ( PAGSCA_GRUPPO , gruppo ) ;
_tpagsca - > put ( PAGSCA_CONTO , conto ) ;
_tpagsca - > put ( PAGSCA_SOTTOCONTO , sottoc ) ;
_tpagsca - > put ( PAGSCA_ANNO , anno ) ;
_tpagsca - > put ( PAGSCA_NUMPART , numpart ) ;
_tpagsca - > put ( PAGSCA_NRIGA , nriga ) ;
_tpagsca - > put ( PAGSCA_NRATA , nrata ) ;
_tpagsca - > put ( PAGSCA_NRIGP , nrigp ) ;
_tpagsca - > put ( PAGSCA_ACCSAL , accsal ) ;
_tpagsca - > put ( PAGSCA_IMPORTO , importo ) ;
_tpagsca - > put ( PAGSCA_RITENUTE , ritenute ) ;
_tpagsca - > put ( PAGSCA_ABBUONI , abbuoni ) ;
_tpagsca - > put ( PAGSCA_DIFFCAM , diffcam ) ;
_tpagsca - > put ( PAGSCA_IMPORTOVAL , impval ) ;
_tpagsca - > put ( PAGSCA_TIPOCC , tipoc ) ;
_tpagsca - > put ( PAGSCA_GRUPPOC , gruppoc ) ;
_tpagsca - > put ( PAGSCA_CONTOC , contoc ) ;
_tpagsca - > put ( PAGSCA_SOTTOCONTC , sottocc ) ;
_tpagsca - > put ( PAGSCA_CODABIPR , nsabi ) ;
_tpagsca - > put ( PAGSCA_CODCABPR , nscab ) ;
_tpagsca - > put ( PAGSCA_CODABI , vsabi ) ;
_tpagsca - > put ( PAGSCA_CODCAB , vscab ) ;
_tpagsca - > put ( PAGSCA_CODAG , codag ) ;
_tpagsca - > put ( PAGSCA_PASSATT , passat ) ;
_tpagsca - > rewrite ( ) ;
}
else
{
_tpagsca - > put ( PAGSCA_TIPOC , tipo ) ;
_tpagsca - > put ( PAGSCA_GRUPPO , gruppo ) ;
_tpagsca - > put ( PAGSCA_CONTO , conto ) ;
_tpagsca - > put ( PAGSCA_SOTTOCONTO , sottoc ) ;
_tpagsca - > put ( PAGSCA_ANNO , anno ) ;
_tpagsca - > put ( PAGSCA_NUMPART , numpart ) ;
_tpagsca - > put ( PAGSCA_NRIGA , nriga ) ;
_tpagsca - > put ( PAGSCA_NRATA , nrata ) ;
_tpagsca - > put ( PAGSCA_NRIGP , nrigp ) ;
_tpagsca - > put ( PAGSCA_ACCSAL , accsal ) ;
_tpagsca - > put ( PAGSCA_IMPORTO , importo ) ;
_tpagsca - > put ( PAGSCA_RITENUTE , ritenute ) ;
_tpagsca - > put ( PAGSCA_ABBUONI , abbuoni ) ;
_tpagsca - > put ( PAGSCA_DIFFCAM , diffcam ) ;
_tpagsca - > put ( PAGSCA_IMPORTOVAL , impval ) ;
_tpagsca - > put ( PAGSCA_TIPOCC , tipoc ) ;
_tpagsca - > put ( PAGSCA_GRUPPOC , gruppoc ) ;
_tpagsca - > put ( PAGSCA_CONTOC , contoc ) ;
_tpagsca - > put ( PAGSCA_SOTTOCONTC , sottocc ) ;
_tpagsca - > put ( PAGSCA_CODABIPR , nsabi ) ;
_tpagsca - > put ( PAGSCA_CODCABPR , nscab ) ;
_tpagsca - > put ( PAGSCA_CODABI , vsabi ) ;
_tpagsca - > put ( PAGSCA_CODCAB , vscab ) ;
_tpagsca - > put ( PAGSCA_CODAG , codag ) ;
_tpagsca - > put ( PAGSCA_PASSATT , passat ) ;
_tpagsca - > write ( ) ;
}
}
}
bool TVar_sc : : leggi_trasfer ( )
{
_trasf = _tras_file . path ( _dittaric ) ;
_trasf < < HEADER ;
_tras_file . open ( _trasf ) ;
if ( _tras_file . exist ( ) )
{
if ( _tras_file . read_control_rec ( ) )
_control_rec = _tras_file . record ( ) ;
else
return error_box ( " Rilevati gravi errori negli archivi:procedura interrotta " ) ;
}
else
return error_box ( " Al momento non presenti trasferimenti attivi sulla ditta selezionata " ) ;
return TRUE ;
}
bool TVar_sc : : esegui_controlli ( )
{
TConfig conf ( CONFIG_DITTA ) ;
_std = conf . get ( " FlStTra " ) ;
if ( ! prefix ( ) . exist ( _dittaric ) )
return error_box ( " Rilevati gravi errori negli archivi: procedura interrotta " ) ;
if ( ! leggi_trasfer ( ) )
return FALSE ;
if ( ! controlli ( ) )
return FALSE ;
return TRUE ;
}
void TVar_sc : : setta_parametri_record ( const TString & sigla , const TString & flag )
{
TConfig conf ( CONFIG_DITTA ) ;
conf . set ( " FlStTra " , flag ) ;
leggi_record_controllo ( ) ;
_control_rec . overwrite ( sigla , 240 ) ;
const int size = 1024 ;
_tras_file . write_control_rec ( _control_rec , size ) ;
}
bool TVar_sc : : controlli ( )
{
TString16 chiave , sigla ;
chiave = _control_rec . sub ( 241 , 256 ) ;
chiave . trim ( ) ;
sigla = _control_rec . sub ( 240 , 241 ) ;
sigla . trim ( ) ;
if ( _std = = " M " & & sigla = = " Z " & & chiave ! = " " )
return error_box ( " Variazione NON POSSIBILE: trasferimento movimenti gia' iniziato " ) ;
if ( _std = = " M " & & sigla = = " U " )
return error_box ( " Variazione NON POSSIBILE: trasferimento movimenti gia' iniziato " ) ;
if ( _std = = " M " & & sigla = = " B " )
return error_box ( " Variazione NON POSSIBILE: trasferimento movimenti saldaconto gia' iniziato " ) ;
if ( _std = = " * " )
{
warning_box ( " Trasferimento interamente completato: proseguire per cancellare il file " ) ;
_tras_file . remove_all ( ) ;
setta_parametri_record ( " " , " " ) ;
return FALSE ;
}
if ( _std = = " T " )
return error_box ( " Variazione NON POSSIBILE: eseguire prima la ricezione delle tabelle " ) ;
return TRUE ;
}
bool TVar_sc : : menu ( MENU_TAG m )
{
if ( m = = BAR_ITEM ( 1 ) )
return main_loop ( ) ;
return FALSE ;
}
1996-10-15 12:23:04 +00:00