1995-03-01 16:47:54 +00:00
//
1994-12-05 14:21:36 +00:00
//Lista movimenti
1995-03-01 16:47:54 +00:00
//
2006-12-13 16:22:33 +00:00
# include "cg3.h"
# include "cg3100.h"
# include "cglib01.h"
# include "cglib03.h"
1994-12-05 14:21:36 +00:00
# include <mask.h>
2002-07-02 16:21:23 +00:00
# include <modaut.h>
1994-12-05 14:21:36 +00:00
# include <printapp.h>
1999-04-06 15:34:39 +00:00
# include <recarray.h>
1995-06-19 14:33:01 +00:00
1996-12-10 08:23:20 +00:00
# include <attiv.h>
# include <causali.h>
# include <clifo.h>
# include <comuni.h>
1994-12-05 14:21:36 +00:00
# include <mov.h>
1996-12-10 08:23:20 +00:00
# include <nditte.h>
# include <pconti.h>
1994-12-05 14:21:36 +00:00
# include <rmov.h>
# include <rmoviva.h>
# include <saldi.h>
1996-12-10 08:23:20 +00:00
2008-11-17 16:10:35 +00:00
enum liste { movimenti = 1 , fatture = 2 , } ;
1994-12-05 14:21:36 +00:00
class TListaMov_application : public TPrintapp
{
2003-10-13 15:03:52 +00:00
static bool filter_func ( const TRelation * ) ;
static bool filter_func_fatture ( const TRelation * ) ;
static bool annoes_handler ( TMask_field & , KEY ) ;
static bool data_inizio ( TMask_field & , KEY ) ;
static bool data_fine ( TMask_field & , KEY ) ;
2002-07-02 16:21:23 +00:00
1996-08-02 12:44:22 +00:00
TRigaiva_array _c ;
1995-03-01 16:47:54 +00:00
TRelation * _relmov1 , * _relmov2 , * _relmov3 ;
1994-12-05 14:21:36 +00:00
TCursor * _curr1 , * _curr2 , * _curr3 ;
TBit_array _err ;
TDate _data_ini , _data_fin , _datareg , _data_prec , _datacomp ;
TString _descr , _descr_doc , _descr_causale ;
1999-04-06 15:34:39 +00:00
TString _tipo_ini , _causale , _app ;
2003-10-13 15:03:52 +00:00
TString4 _causale_ini , _causale_fin , _registro , _registro_ini , _registro_fin ;
2006-12-13 16:22:33 +00:00
TString _tipoatt , _tipo_elenco , _tipo_clifo_prec , _tipoelsucc ;
1999-04-06 15:34:39 +00:00
char _appoggio ;
2008-11-21 12:24:20 +00:00
TString4 _tipodoc , _tipodocumento ;
1994-12-05 14:21:36 +00:00
TString _ragsoc , _indcf , _civcf , _paiv , _codcaus , _dencom , _provcom , _cofi ;
TString _capcf , _codval , _simbolo , _statocf , _comcf , _tipo_fin , _reg_causale ;
long _documenti , _codice_ini , _codice_fin , _numero_reg , _codcf ;
2006-12-13 16:22:33 +00:00
long _gen_documenti ;
1994-12-05 14:21:36 +00:00
long _numreg , _numreg_fin , _numreg_ini , _codalleg , _numeroregp , _codclifosucc ;
long _codcf_prec , _numr , _numero ;
int _ae , _anno , _annoes , _annoeser ;
2003-10-13 15:03:52 +00:00
bool _noseparator , _competence_only ;
1994-12-05 14:21:36 +00:00
real _totdocumenti , _totdoc , _totimponibile , _totimposta , _importo ;
2006-12-13 16:22:33 +00:00
real _gen_totdocumenti , _gen_totimponibile , _gen_totimposta , _gen_op_esenti , _gen_op_non_imp ;
real _op_esenti , _op_non_imp ; //, _impo, _impos;
1994-12-05 14:21:36 +00:00
real _tot_dare , _tot_avere , _tot_avere_giornaliero ;
real _tot_dare_giornaliero , _tot_dare_generale , _tot_avere_generale ;
2006-12-13 16:22:33 +00:00
bool _no_preprocess_page , _salto_pagina , _stampa_anno_comp , _esiste_riga_iva , _nonesiste_riga_iva ;
1998-03-30 14:18:57 +00:00
bool _stampa_parte_iva , _alleg_causale , _stampa_mess_alleg_iva , _allegb ;
int _ricser ;
1995-01-13 10:08:02 +00:00
bool _settata_prima_riga , _causale_gia_stampata , _mov_di_sola_iva ;
2006-12-13 16:22:33 +00:00
int _cur1 , _cur2 , _cur2b , _cur3 , _cur4 , _decidi , /*_tipod,*/ _controllo_mov_errati ;
int _numero_riga , _alleg , _tiporegistro , _scelta_stampa , _nr , _n ;
1995-05-29 16:03:19 +00:00
int _provvis ;
1994-12-05 14:21:36 +00:00
liste _tipo_lista ;
word _flags ;
1995-06-09 15:36:37 +00:00
char _tipoc ;
2008-11-17 16:10:35 +00:00
TString4 _dacodiva , _acodiva ;
1994-12-05 14:21:36 +00:00
protected :
virtual void preprocess_header ( ) ;
virtual bool preprocess_page ( int , int ) ;
virtual print_action postprocess_page ( int , int ) ;
virtual print_action postprocess_print ( int , int ) ;
virtual void set_page ( int , int ) ;
virtual bool set_print ( int m ) ;
void init_print ( const TMask & m ) ;
2000-10-03 13:45:12 +00:00
void print_intra ( int & rr ) ;
2002-05-08 16:25:49 +00:00
2003-10-13 15:03:52 +00:00
void filtra_cursore_provvisori ( TCursor * cur ) const ;
2002-05-08 16:25:49 +00:00
void imposta_parametri_stampa ( const TMask & msk ) ;
2004-02-12 09:56:35 +00:00
bool codiva_filter ( const TRelation * rel ) const ;
bool rmoviva_filter ( const TRectype & rmoviva ) const ;
2002-05-08 16:25:49 +00:00
1994-12-05 14:21:36 +00:00
public :
1995-05-29 16:03:19 +00:00
bool user_create ( ) ;
1994-12-05 14:21:36 +00:00
bool user_destroy ( ) ;
bool segnala_errori_primariga ( ) ;
bool segnala_errori_ogniriga ( ) ;
bool segnala_errori_iva ( ) ;
1995-01-31 14:55:09 +00:00
bool contropartita ( int , int , long , char ) ;
1994-12-05 14:21:36 +00:00
void stampa_errori_rmov ( ) ;
void stampa_errori_mov ( ) ;
2006-12-13 16:22:33 +00:00
void stampa_errori_iva ( int * r , const TRigaiva & riva ) ;
1995-01-31 14:55:09 +00:00
void stampa_errori_contropartita ( int , int , long , char ) ;
1994-12-05 14:21:36 +00:00
void stampa_intestazione ( ) ;
void incrementa_totali ( ) ;
void compila_clifo ( ) ;
void compila_comuni ( ) ;
2008-11-19 16:01:52 +00:00
const char * get_error ( int error ) const ;
1994-12-05 14:21:36 +00:00
2008-11-19 16:01:52 +00:00
bool RicercaDoc ( const char * cod ) const ;
const TString & SimboloValuta ( const char * cod ) const ;
const TString & DescrDoc ( const char * cod ) const ;
const TString & AttivitaRegistro ( const char * cod , int anno ) const ;
1999-04-06 15:34:39 +00:00
TListaMov_application ( char tipost ) ;
1994-12-05 14:21:36 +00:00
virtual ~ TListaMov_application ( ) { }
} ;
2003-06-19 14:29:24 +00:00
2003-10-13 15:03:52 +00:00
HIDDEN inline TListaMov_application & app ( )
1994-12-05 14:21:36 +00:00
{ return ( TListaMov_application & ) main_app ( ) ; }
2003-10-13 15:03:52 +00:00
bool TListaMov_application : : annoes_handler ( TMask_field & f , KEY k )
1994-12-05 14:21:36 +00:00
{
2008-11-17 16:10:35 +00:00
if ( k = = K_TAB & & f . focusdirty ( ) & & ! f . empty ( ) )
1994-12-05 14:21:36 +00:00
{
1996-12-10 08:23:20 +00:00
const int anno = atoi ( f . get ( ) ) ;
2008-11-17 16:10:35 +00:00
TDate dataini , datafin ;
1996-12-10 08:23:20 +00:00
TEsercizi_contabili esc ;
2008-11-17 16:10:35 +00:00
if ( esc . code2range ( anno , dataini , datafin ) )
1994-12-05 14:21:36 +00:00
{
2008-11-17 16:10:35 +00:00
f . mask ( ) . set ( F_DATAINI , dataini ) ;
1996-12-10 08:23:20 +00:00
const int prossimo = esc . next ( anno ) ;
2008-11-17 16:10:35 +00:00
if ( prossimo > 0 )
datafin = esc [ prossimo ] . fine ( ) ;
f . mask ( ) . set ( F_DATAFIN , datafin ) ;
1994-12-05 14:21:36 +00:00
}
}
2008-11-17 16:10:35 +00:00
return true ;
1994-12-05 14:21:36 +00:00
}
2003-10-13 15:03:52 +00:00
bool TListaMov_application : : data_inizio ( TMask_field & f , KEY k )
1994-12-05 14:21:36 +00:00
{
if ( k = = K_ENTER )
{
int decidi ;
int anno = f . mask ( ) . get_int ( F_ANNO ) ;
2004-04-28 20:45:59 +00:00
TDate data = f . mask ( ) . get_date ( F_DATAINI ) ;
1999-04-06 15:34:39 +00:00
if ( app ( ) . _tipo_lista = = movimenti )
1994-12-05 14:21:36 +00:00
decidi = f . mask ( ) . get_int ( F_DECIDI ) ;
1996-12-10 08:23:20 +00:00
TEsercizi_contabili esc ;
1999-04-06 15:34:39 +00:00
if ( esc . exist ( anno ) & & ( ( app ( ) . _tipo_lista = = fatture ) | |
( ( app ( ) . _tipo_lista = = movimenti ) & & ( decidi = = 2 ) ) ) )
1994-12-05 14:21:36 +00:00
{
1996-12-10 08:23:20 +00:00
const TDate inizio = esc [ anno ] . inizio ( ) ;
if ( data . ok ( ) )
{
if ( data < inizio )
{
2003-03-14 15:13:36 +00:00
f . error_box ( TR ( " La data indicata non deve essere inferiore alla data di inizio esercizio " ) ) ;
1996-12-10 08:23:20 +00:00
return FALSE ;
}
}
else //se la data e' vuota
f . mask ( ) . field ( F_DATAINI ) . set ( inizio ) ;
1994-12-05 14:21:36 +00:00
}
}
return TRUE ;
}
2003-10-13 15:03:52 +00:00
bool TListaMov_application : : data_fine ( TMask_field & f , KEY k )
1994-12-05 14:21:36 +00:00
{
if ( k = = K_ENTER )
{
2003-10-13 15:03:52 +00:00
int decidi = 0 ;
1994-12-05 14:21:36 +00:00
int anno = f . mask ( ) . get_int ( F_ANNO ) ;
2004-04-28 20:45:59 +00:00
TDate dataini = f . mask ( ) . get_date ( F_DATAINI ) ;
TDate datafin = f . mask ( ) . get_date ( F_DATAFIN ) ;
1999-04-06 15:34:39 +00:00
if ( app ( ) . _tipo_lista = = movimenti )
1994-12-05 14:21:36 +00:00
decidi = f . mask ( ) . get_int ( F_DECIDI ) ;
1999-04-06 15:34:39 +00:00
if ( ( app ( ) . _tipo_lista = = fatture ) | |
( ( app ( ) . _tipo_lista = = movimenti ) & & ( decidi = = 2 ) ) )
1994-12-05 14:21:36 +00:00
if ( dataini . ok ( ) & & datafin . ok ( ) )
if ( dataini > datafin )
{
2003-03-14 15:13:36 +00:00
f . error_box ( TR ( " La data iniziale non deve essere superiore alla data finale " ) ) ;
1994-12-05 14:21:36 +00:00
return FALSE ;
1996-12-10 08:23:20 +00:00
}
TEsercizi_contabili esc ;
1999-04-06 15:34:39 +00:00
if ( esc . exist ( anno ) & & ( ( app ( ) . _tipo_lista = = fatture ) | | ( ( app ( ) . _tipo_lista = = movimenti ) & & ( decidi = = 2 ) ) ) )
1996-12-10 08:23:20 +00:00
{
const int prossimo = esc . next ( anno ) ;
const TDate fine = esc [ prossimo > 0 ? prossimo : anno ] . fine ( ) ;
if ( datafin . ok ( ) )
{
if ( datafin > fine )
{
2003-03-14 15:13:36 +00:00
f . error_box ( TR ( " La data indicata non deve essere superiore alla data di fine esercizio successivo, oppure, in caso questo non esista, dell'esercizio indicato " ) ) ;
1996-12-10 08:23:20 +00:00
return FALSE ;
}
}
else //se la data e' vuota
f . mask ( ) . set ( F_DATAFIN , fine ) ;
1994-12-05 14:21:36 +00:00
}
}
return TRUE ;
}
2008-11-19 16:01:52 +00:00
bool TListaMov_application : : RicercaDoc ( const char * tipo ) const
1994-12-05 14:21:36 +00:00
{
2003-10-13 15:03:52 +00:00
const TRectype & tab_tpd = cache ( ) . get ( TAB_TPD , tipo ) ;
return ! tab_tpd . empty ( ) ;
1994-12-05 14:21:36 +00:00
}
void TListaMov_application : : compila_clifo ( )
{
2003-03-14 15:13:36 +00:00
TToken_string key ;
key . add ( _tipo_elenco ) ;
key . add ( _codcf ) ;
2003-10-13 15:03:52 +00:00
const TRectype & clifo = cache ( ) . get ( LF_CLIFO , key ) ;
2003-03-14 15:13:36 +00:00
2008-11-17 16:10:35 +00:00
char tipoa = clifo . get_char ( CLI_TIPOAPER ) ;
_alleg = clifo . get_int ( CLI_ALLEG ) ;
_statocf = clifo . get ( CLI_STATOCF ) ;
_comcf = clifo . get ( CLI_COMCF ) ;
_ragsoc = clifo . get ( CLI_RAGSOC ) ;
2003-03-14 15:13:36 +00:00
if ( tipoa = = ' F ' )
1994-12-05 14:21:36 +00:00
{
2003-03-14 15:13:36 +00:00
TString80 cognome , nome ;
2008-11-17 16:10:35 +00:00
cognome = _ragsoc . mid ( 0 , 30 ) ; cognome . trim ( ) ;
nome = _ragsoc . mid ( 30 , 20 ) ; nome . trim ( ) ;
2003-03-14 15:13:36 +00:00
_ragsoc = cognome ;
2003-10-13 15:03:52 +00:00
_ragsoc < < ' ' < < nome ;
1994-12-05 14:21:36 +00:00
}
2003-03-14 15:13:36 +00:00
_indcf = clifo . get ( CLI_INDCF ) ;
_civcf = clifo . get ( CLI_CIVCF ) ;
_paiv = clifo . get ( CLI_PAIV ) ;
_capcf = clifo . get ( CLI_CAPCF ) ;
_dencom = clifo . get ( CLI_LOCCF ) ;
_cofi = clifo . get ( CLI_COFI ) ;
_codalleg = clifo . get_long ( CLI_CODALLEG ) ;
1994-12-05 14:21:36 +00:00
}
void TListaMov_application : : compila_comuni ( )
{
2003-03-14 15:13:36 +00:00
TToken_string key ;
key . add ( _statocf ) ;
key . add ( _comcf ) ;
const TRectype & comuni = cache ( ) . get ( LF_COMUNI , key ) ;
1995-04-28 15:09:49 +00:00
//modifica del 26/04/1995
2003-03-14 15:13:36 +00:00
_dencom = comuni . get ( COM_DENCOM ) ;
1995-04-28 15:09:49 +00:00
if ( ! _dencom . empty ( ) )
_app = " Com " ;
else _app = " Loc " ;
//fine modifica
2003-03-14 15:13:36 +00:00
_provcom = comuni . get ( COM_PROVCOM ) ;
1994-12-05 14:21:36 +00:00
}
2008-11-19 16:01:52 +00:00
const char * TListaMov_application : : get_error ( int err ) const
2003-06-19 11:04:54 +00:00
{
switch ( err )
{
case 0 :
return TR ( " La data operazione non appartiene a nessun esercizio " ) ;
break ;
case 1 :
return TR ( " Anno IVA non compatibile con data operazione " ) ;
break ;
case 2 :
return TR ( " Data operazione successiva all'esercizio di competenza " ) ;
break ;
case 3 :
return TR ( " Movimento con competenza anno precedente " ) ;
break ;
case 4 :
return TR ( " La data di competenza non appartiene a nessun esercizio " ) ;
break ;
case 5 :
return TR ( " Data competenza incompatibile con data operazione " ) ;
break ;
case 6 :
return TR ( " Esercizio incompatibile con data competenza " ) ;
break ;
case 7 :
return TR ( " Codice causale non presente in tabella " ) ;
break ;
case 8 :
return TR ( " Codice causale sospeso " ) ;
break ;
case 9 :
return TR ( " Nella causale e' stato attivato il segnale non va in allegato " ) ;
break ;
case 10 :
return TR ( " Tipo documento non corrisponde a quello indicato in causale " ) ;
break ;
case 11 :
return TR ( " Tipo documento non presente in tabella " ) ;
break ;
case 12 :
return TR ( " Codice registro non corrisponde a quello indicato in causale " ) ;
break ;
case 13 :
return TR ( " Codice registro non presente in tabella " ) ;
break ;
case 14 :
return TR ( " Codice registro sospeso " ) ;
break ;
case 15 :
return TR ( " Tipo registro incompatibile con tipo documento " ) ;
break ;
case 16 :
return TR ( " Non indicato codice cliente/fornitore " ) ;
break ;
case 17 :
return TR ( " Tipo cliente/fornitore non compatibile con tipo registro " ) ;
break ;
case 18 :
return TR ( " Codice cliente/fornitore sospeso " ) ;
break ;
case 19 :
return TR ( " Nel cliente/fornitore e' stato attivato il segnale: non va in allegato " ) ;
break ;
case 20 :
return TR ( " Indicato codice C/F per allegato che richiama se stesso " ) ;
break ;
case 21 :
return TR ( " Indicato codice C/F per allegato sospeso " ) ;
break ;
case 22 :
return TR ( " C/F per allegato riporta un altro C/F per allegato " ) ;
break ;
case 23 :
return TR ( " Indicato codice C/F per allegato con segnale: non va in allegato " ) ;
break ;
case 24 :
return TR ( " Indicato codice C/F per allegato non presente in anagrafica " ) ;
break ;
case 25 :
return TR ( " Codice cliente/fornitore non presente in anagrafica " ) ;
break ;
case 26 :
return TR ( " Movimento con data competenza diversa da data operazione " ) ;
break ;
default :
return " " ;
break ;
}
}
1994-12-05 14:21:36 +00:00
const int AllegClifo ( int gruppo , int conto , long sottoconto )
{
TLocalisamfile clifo ( LF_CLIFO ) ;
int alleg ;
clifo . setkey ( 3 ) ;
clifo . zero ( ) ;
clifo . put ( CLI_GRUPPO , gruppo ) ;
clifo . put ( CLI_CONTO , conto ) ;
clifo . put ( CLI_CODCF , sottoconto ) ;
clifo . read ( ) ;
if ( clifo . good ( ) )
alleg = clifo . curr ( ) . get_int ( CLI_ALLEG ) ;
else
alleg = 0 ;
return alleg ;
}
const char * DescrConto ( long gruppo , long conto , long sottoconto ,
const char * tipocf )
{
2003-10-13 15:03:52 +00:00
TString & tmp = get_tmp_string ( 50 ) ;
1994-12-05 14:21:36 +00:00
2003-10-13 15:03:52 +00:00
TString16 key ;
2003-03-14 15:13:36 +00:00
key < < gruppo ;
1994-12-05 14:21:36 +00:00
if ( conto ! = 0 )
2003-03-14 15:13:36 +00:00
key < < ' | ' < < conto ;
1994-12-05 14:21:36 +00:00
if ( sottoconto ! = 0 )
2003-03-14 15:13:36 +00:00
key < < ' | ' < < sottoconto ;
tmp = cache ( ) . get ( LF_PCON , key , PCN_DESCR ) ;
if ( tmp . empty ( ) )
1994-12-05 14:21:36 +00:00
{
2003-03-14 15:13:36 +00:00
key . format ( " %s|%ld " , tipocf , sottoconto ) ;
const TRectype & clifo = cache ( ) . get ( LF_CLIFO , key ) ;
if ( ! clifo . empty ( ) )
1994-12-05 14:21:36 +00:00
{
char tipoa = clifo . get_char ( " TIPOAPER " ) ;
if ( tipoa = = ' F ' ) //persona fisica
{
2003-10-13 15:03:52 +00:00
const TString & ragsoc = clifo . get ( " RAGSOC " ) ;
2003-03-14 15:13:36 +00:00
tmp = ragsoc . mid ( 0 , 30 ) ;
tmp . trim ( ) ;
tmp < < ' ' < < ragsoc . mid ( 30 ) ;
1994-12-05 14:21:36 +00:00
}
else
2003-03-14 15:13:36 +00:00
tmp = clifo . get ( " RAGSOC " ) ;
1994-12-05 14:21:36 +00:00
}
}
2003-03-14 15:13:36 +00:00
return tmp ;
1994-12-05 14:21:36 +00:00
}
bool CausAlleg ( const char * cod )
{
2003-03-14 15:13:36 +00:00
const TRectype & caus = cache ( ) . get ( LF_CAUSALI , cod ) ;
const bool allegb = caus . get_bool ( CAU_ALLEG ) ;
1994-12-05 14:21:36 +00:00
return allegb ;
}
2008-11-21 12:24:20 +00:00
const char * TipoAttivita ( const char * attreg , long codice_ditta )
1994-12-05 14:21:36 +00:00
{
2008-11-21 12:24:20 +00:00
TString16 key ; key . format ( " %ld|%s " , codice_ditta , attreg ) ;
return cache ( ) . get ( LF_ATTIV , key , ATT_TIPOATT ) ;
1994-12-05 14:21:36 +00:00
}
2008-11-19 16:01:52 +00:00
const TString & TListaMov_application : : SimboloValuta ( const char * cod ) const
{ return cache ( ) . get ( TAB_VAL , cod , " S7 " ) ; }
1994-12-05 14:21:36 +00:00
2008-11-19 16:01:52 +00:00
const TString & TListaMov_application : : DescrDoc ( const char * tipo ) const
{ return cache ( ) . get ( TAB_TPD , tipo , " S0 " ) ; }
1994-12-05 14:21:36 +00:00
2008-11-21 12:24:20 +00:00
const TString & TListaMov_application : : AttivitaRegistro ( const char * cod , int anno ) const
1994-12-05 14:21:36 +00:00
{
2008-11-21 12:24:20 +00:00
TString8 key ; key . format ( " %04d%-3s " , anno , cod ) ;
2003-03-14 15:13:36 +00:00
return cache ( ) . get ( " REG " , key , " S8 " ) ;
1994-12-05 14:21:36 +00:00
}
2003-10-13 15:03:52 +00:00
HIDDEN int tipo_registro ( const char * cod , int anno )
1999-04-06 15:34:39 +00:00
{
2003-10-13 15:03:52 +00:00
TString8 codtab ; codtab . format ( " %4d%-3s " , anno , cod ) ;
2002-05-08 16:25:49 +00:00
const TString & tipo_reg = cache ( ) . get ( " REG " , codtab , " I0 " ) ;
return atoi ( tipo_reg ) ;
}
2008-11-21 12:24:20 +00:00
static bool between ( const TString & code , const TString & mini , const TString & maxi )
2004-02-12 09:56:35 +00:00
{
2008-11-21 12:24:20 +00:00
if ( mini . full ( ) & & code < mini )
return false ;
if ( maxi . full ( ) & & code > maxi )
return false ;
return true ;
}
static bool between ( const TDate & code , const TDate & mini , const TDate & maxi )
{
if ( mini . ok ( ) & & code < mini )
2004-02-12 09:56:35 +00:00
return false ;
2008-11-21 12:24:20 +00:00
if ( maxi . ok ( ) & & code > maxi )
2004-02-12 09:56:35 +00:00
return false ;
2008-11-21 12:24:20 +00:00
return true ;
}
2004-02-12 09:56:35 +00:00
2008-11-21 12:24:20 +00:00
static bool between ( long code , long mini , long maxi )
{
if ( mini > 0 & & code < mini )
return false ;
if ( maxi > 0 & & code > maxi )
return false ;
2004-02-12 09:56:35 +00:00
return true ;
}
2008-11-21 12:24:20 +00:00
bool TListaMov_application : : rmoviva_filter ( const TRectype & rmoviva ) const
{
const TString & codiva = rmoviva . get ( RMI_CODIVA ) ;
return between ( codiva , _dacodiva , _acodiva ) ;
}
2004-02-12 09:56:35 +00:00
bool TListaMov_application : : codiva_filter ( const TRelation * rel ) const
{
bool ok = _dacodiva . empty ( ) & & _acodiva . empty ( ) ; // Test su range codici iva
if ( ! ok )
{
const TRectype & mov = rel - > curr ( LF_MOV ) ;
TRectype rmoviva ( LF_RMOVIVA ) ;
rmoviva . put ( RMI_NUMREG , mov . get ( MOV_NUMREG ) ) ;
TRecord_array righe ( rmoviva , RMI_NUMRIG ) ;
for ( int i = 1 ; ! ok & & i < = righe . rows ( ) ; i + + )
ok = rmoviva_filter ( righe [ i ] ) ;
}
return ok ;
}
2003-10-13 15:03:52 +00:00
bool TListaMov_application : : filter_func_fatture ( const TRelation * rel )
1994-12-05 14:21:36 +00:00
{
2002-05-08 16:25:49 +00:00
const TRectype & mov = rel - > curr ( LF_MOV ) ;
1998-04-30 15:59:34 +00:00
// Altrimenti stampa anche i corrispettivi! Pseudo errore MI2396
2008-11-21 12:24:20 +00:00
const long codcf = mov . get_long ( MOV_CODCF ) ;
1998-04-30 15:59:34 +00:00
if ( codcf < = 0 )
return FALSE ;
2008-11-21 12:24:20 +00:00
const TString & causale = mov . get ( MOV_CODCAUS ) ;
if ( ! between ( causale , app ( ) . _causale_ini , app ( ) . _causale_fin ) )
return false ;
1998-04-30 15:59:34 +00:00
2008-11-21 12:24:20 +00:00
const int ann_reg = mov . get_int ( MOV_ANNOIVA ) ;
const TString4 cod_reg = mov . get ( MOV_REG ) ;
const int tipo_reg = tipo_registro ( cod_reg , ann_reg ) ;
1998-04-30 15:59:34 +00:00
// Considera solo iva acquisti o vendite
if ( tipo_reg ! = 1 & & tipo_reg ! = 2 )
return FALSE ;
2008-11-21 12:24:20 +00:00
if ( app ( ) . _annoes > 0 ) //anno esercizio specificato nella maschera
1994-12-05 14:21:36 +00:00
{
2008-11-21 12:24:20 +00:00
const int annoes = mov . get_int ( MOV_ANNOES ) ;
if ( annoes ! = app ( ) . _annoes )
return false ;
1994-12-05 14:21:36 +00:00
}
2004-02-12 09:56:35 +00:00
2008-11-21 12:24:20 +00:00
if ( ! between ( mov . get_date ( MOV_DATAREG ) , app ( ) . _data_ini , app ( ) . _data_fin ) )
return false ;
2004-02-12 09:56:35 +00:00
2008-11-21 12:24:20 +00:00
if ( ! between ( mov . get ( MOV_TIPO ) , app ( ) . _tipo_ini , app ( ) . _tipo_fin ) )
return false ;
if ( ! between ( mov . get_long ( MOV_CODCF ) , app ( ) . _codice_ini , app ( ) . _codice_fin ) )
return false ;
return app ( ) . codiva_filter ( rel ) ;
1994-12-05 14:21:36 +00:00
}
2003-10-13 15:03:52 +00:00
bool TListaMov_application : : filter_func ( const TRelation * rel )
2002-05-08 16:25:49 +00:00
{
2003-10-13 15:03:52 +00:00
const TRectype & mov = rel - > curr ( LF_MOV ) ;
if ( ( app ( ) . _decidi = = 2 ) & & ( app ( ) . _annoes ! = 0 ) )
{
const int annoes = mov . get_int ( MOV_ANNOES ) ;
if ( annoes ! = app ( ) . _annoes )
return false ;
}
const TString & causale = mov . get ( MOV_CODCAUS ) ;
2008-11-21 12:24:20 +00:00
if ( ! between ( causale , app ( ) . _causale_ini , app ( ) . _causale_fin ) )
2003-10-13 15:03:52 +00:00
return false ;
if ( app ( ) . _scelta_stampa = = 0 ) // Lista movimenti
1994-12-05 14:21:36 +00:00
{
2003-10-13 15:03:52 +00:00
const TString & codreg = mov . get ( MOV_REG ) ;
2008-11-21 12:24:20 +00:00
if ( ! between ( codreg , app ( ) . _registro_ini , app ( ) . _registro_fin ) )
2003-10-13 15:03:52 +00:00
return false ;
}
else // Lista movimenti sola prima nota
{
const TString & cod_reg = mov . get ( MOV_REG ) ;
const int ann_reg = mov . get_int ( MOV_ANNOIVA ) ;
const int tipo_reg = tipo_registro ( cod_reg , ann_reg ) ;
if ( tipo_reg = = 1 | | tipo_reg = = 2 )
return false ;
}
if ( app ( ) . _competence_only & & app ( ) . _annoes = = 0 )
{
2004-04-28 20:45:59 +00:00
const TDate datareg = mov . get_date ( MOV_DATAREG ) ;
2003-10-13 15:03:52 +00:00
const int annoes = mov . get_int ( MOV_ANNOES ) ;
TEsercizi_contabili esc ;
// La data di registrazione appartiene allo stesso esercizio della data di competenza
if ( esc . date2esc ( datareg ) = = annoes )
return false ;
1994-12-05 14:21:36 +00:00
}
2002-05-08 16:25:49 +00:00
2003-10-13 15:03:52 +00:00
return true ;
1994-12-05 14:21:36 +00:00
}
void TListaMov_application : : stampa_errori_rmov ( )
{
2003-10-13 15:03:52 +00:00
const TRectype & rec = current_cursor ( ) - > curr ( LF_RMOV ) ;
1994-12-05 14:21:36 +00:00
int gruppo = rec . get_int ( RMV_GRUPPO ) ;
int conto = rec . get_int ( RMV_CONTO ) ;
1995-01-31 14:55:09 +00:00
long sottoconto = rec . get_long ( RMV_SOTTOCONTO ) ;
int anno = rec . get_int ( RMV_ANNOES ) ;
TDate datareg = rec . get_date ( RMV_DATAREG ) ;
char sez = rec . get_char ( RMV_SEZIONE ) ;
char tipo = rec . get_char ( RMV_TIPOC ) ;
int gruppoc = rec . get_int ( RMV_GRUPPOC ) ;
int contoc = rec . get_int ( RMV_CONTOC ) ;
long sottocontoc = rec . get_long ( RMV_SOTTOCONTOC ) ;
char tipoc = rec . get_char ( RMV_TIPOCC ) ;
1994-12-05 14:21:36 +00:00
bool g = FALSE ;
char t ;
1997-06-19 14:33:52 +00:00
TBill tc ( gruppo , conto , sottoconto ) ;
1994-12-05 14:21:36 +00:00
_nr + + ;
if ( anno ! = _annoeser | | datareg ! = _datareg )
2003-03-14 15:13:36 +00:00
set_row ( _nr + + , FR ( " @11gUno o piu' campi non sono costanti nella riga dell' operazione " ) ) ;
1994-12-05 14:21:36 +00:00
if ( sez ! = ' D ' & & sez ! = ' A ' )
2003-03-14 15:13:36 +00:00
set_row ( _nr + + , FR ( " @11gIndicato tipo movimento Dare/Avere errato " ) ) ;
1994-12-05 14:21:36 +00:00
if ( tc . empty ( ) )
2003-03-14 15:13:36 +00:00
set_row ( _nr + + , FR ( " @11gNon presente codice gruppo/conto/sottoconto " ) ) ;
1994-12-05 14:21:36 +00:00
if ( ! tc . ok ( ) )
2003-03-14 15:13:36 +00:00
set_row ( _nr + + , FR ( " @11gCodice gruppo/conto/sottoconto non corrisponde ad un sottoconto " ) ) ;
1994-12-05 14:21:36 +00:00
2003-03-14 15:13:36 +00:00
TRectype pc ( LF_PCON ) ;
1994-12-05 14:21:36 +00:00
tc . set ( gruppo , 0 , 0l ) ;
if ( ! tc . read ( pc ) )
g = TRUE ;
tc . set ( gruppo , conto , 0l ) ;
if ( ! tc . read ( pc ) )
2003-03-14 15:13:36 +00:00
set_row ( _nr + + , FR ( " @11gCodice gruppo/conto/sottoconto non presente in Piano dei Conti " ) ) ;
1994-12-05 14:21:36 +00:00
else
{
t = pc . get_char ( PCN_TMCF ) ;
if ( t ! = tipo )
2003-03-14 15:13:36 +00:00
set_row ( _nr + + , FR ( " @11gIl tipo C/F indicato non corrisponde a quello presente su Piano dei Conti " ) ) ;
1994-12-05 14:21:36 +00:00
else
{
tc . set ( gruppo , conto , sottoconto ) ;
if ( t ! = ' C ' & & t ! = ' F ' )
{
if ( ! tc . read ( pc ) | | g )
2003-03-14 15:13:36 +00:00
set_row ( _nr + + , FR ( " @11gCodice gruppo/conto/sottoconto non presente in Piano dei Conti " ) ) ;
1994-12-05 14:21:36 +00:00
else
{
bool sosp = tc . sospeso ( ) ;
if ( sosp )
2003-03-14 15:13:36 +00:00
set_row ( _nr + + , FR ( " @11gCodice gruppo/conto/sottoconto sospeso in Piano dei Conti " ) ) ;
1994-12-05 14:21:36 +00:00
}
}
else
{
2003-03-14 15:13:36 +00:00
TToken_string key ;
key . add ( t ) ;
key . add ( sottoconto ) ;
const TRectype & clifo = cache ( ) . get ( LF_CLIFO , key ) ;
if ( ! clifo . empty ( ) )
1994-12-05 14:21:36 +00:00
{
bool sosp = clifo . get_bool ( CLI_SOSPESO ) ;
if ( sosp )
2003-03-14 15:13:36 +00:00
set_row ( _nr + + , FR ( " @11gCodice C/F sospeso in Anagrafica " ) ) ;
1994-12-05 14:21:36 +00:00
}
2003-03-14 15:13:36 +00:00
else set_row ( _nr + + , FR ( " @11gCodice C/F non presente in Anagrafica " ) ) ;
1994-12-05 14:21:36 +00:00
if ( _registro . not_empty ( ) ) //se su mov e' indicato il codice registro
{
TRegistro rg ( _registro , _ae ) ;
const int tiporeg = rg . tipo ( ) ;
if ( ( tiporeg = = 1 & & t ! = ' C ' ) | | ( tiporeg = = 2 & & t ! = ' F ' ) )
2003-03-14 15:13:36 +00:00
set_row ( _nr + + , FR ( " @11gTipo C/F non compatibile con tipo registro " ) ) ;
1994-12-05 14:21:36 +00:00
}
}
}
}
2003-03-14 15:13:36 +00:00
TString key ( 30 ) ;
key . format ( " %d||%d|%d|%ld " , anno , gruppo , conto , sottoconto ) ;
const TRectype & saldi = cache ( ) . get ( LF_SALDI , key ) ;
if ( saldi . empty ( ) )
set_row ( _nr + + , FR ( " @11gCodice gruppo/conto/sottoconto non presente in Saldi p.d.c. " ) ) ;
1994-12-05 14:21:36 +00:00
1995-01-31 14:55:09 +00:00
if ( gruppoc ! = 0 | | contoc ! = 0 | | sottocontoc ! = 0l )
stampa_errori_contropartita ( gruppoc , contoc , sottocontoc , tipoc ) ;
1994-12-05 14:21:36 +00:00
}
1995-01-31 14:55:09 +00:00
void TListaMov_application : : stampa_errori_contropartita ( int gruppo , int conto , long sottoconto , char t )
1994-12-05 14:21:36 +00:00
{
bool g = FALSE ;
1995-01-31 14:55:09 +00:00
1997-06-19 14:33:52 +00:00
TBill tc ;
2003-03-14 15:13:36 +00:00
TRectype pc ( LF_PCON ) ;
1994-12-05 14:21:36 +00:00
tc . set ( gruppo , 0 , 0l ) ;
if ( ! tc . read ( pc ) )
g = TRUE ;
tc . set ( gruppo , conto , 0l ) ;
if ( ! tc . read ( pc ) )
2003-03-14 15:13:36 +00:00
set_row ( _nr + + , FR ( " @11gCodice gruppo/conto/sottoconto di contropartita non presente in Piano dei Conti " ) ) ;
1994-12-05 14:21:36 +00:00
else
{
1995-01-31 14:55:09 +00:00
//t = pc.get_char(PCN_TMCF);
1994-12-05 14:21:36 +00:00
tc . set ( gruppo , conto , sottoconto ) ;
if ( t ! = ' C ' & & t ! = ' F ' )
{
if ( ! tc . read ( pc ) | | g )
2003-03-14 15:13:36 +00:00
set_row ( _nr + + , FR ( " @11gCodice gruppo/conto/sottoconto di contropartita non presente in Piano dei Conti " ) ) ;
1994-12-05 14:21:36 +00:00
else
{
bool sosp = tc . sospeso ( ) ;
if ( sosp )
2003-03-14 15:13:36 +00:00
set_row ( _nr + + , FR ( " @11gCodice gruppo/conto/sottoconto di contropartita sospeso in Piano dei Conti " ) ) ;
1994-12-05 14:21:36 +00:00
}
}
1995-01-31 14:55:09 +00:00
else if ( sottoconto ! = 0l )
1994-12-05 14:21:36 +00:00
{
2003-03-14 15:13:36 +00:00
TToken_string key ;
key . add ( t ) ;
key . add ( sottoconto ) ;
const TRectype & clifo = cache ( ) . get ( LF_CLIFO , key ) ;
if ( ! clifo . empty ( ) )
1994-12-05 14:21:36 +00:00
{
bool sosp = clifo . get_bool ( CLI_SOSPESO ) ;
if ( sosp )
2003-03-14 15:13:36 +00:00
set_row ( _nr + + , FR ( " @11gCodice C/F di contropartita sospeso in Anagrafica " ) ) ;
1994-12-05 14:21:36 +00:00
}
2003-03-14 15:13:36 +00:00
else set_row ( _nr + + , FR ( " @11gCodice C/F di contropartita non presente in Anagrafica " ) ) ;
1994-12-05 14:21:36 +00:00
}
}
}
2006-12-13 16:22:33 +00:00
void TListaMov_application : : stampa_errori_iva ( int * nr , const TRigaiva & riva )
1994-12-05 14:21:36 +00:00
{
2006-12-13 16:22:33 +00:00
const TRectype & tab_iva = cache ( ) . get ( " %IVA " , riva . _codiva ) ;
2003-10-13 15:03:52 +00:00
if ( ! tab_iva . empty ( ) )
1994-12-05 14:21:36 +00:00
{
2006-12-13 16:22:33 +00:00
const bool sosp = tab_iva . get_bool ( " B2 " ) ;
if ( sosp )
2003-03-14 15:13:36 +00:00
set_row ( + + ( * nr ) , FR ( " @11gCodice IVA sospeso " ) ) ;
1994-12-05 14:21:36 +00:00
if ( _stampa_mess_alleg_iva )
2006-12-13 16:22:33 +00:00
{
const int allc = tab_iva . get_int ( " S7 " ) ;
const int allf = tab_iva . get_int ( " S8 " ) ;
1994-12-05 14:21:36 +00:00
if ( allc = = 0 | | allf = = 0 )
2003-03-14 15:13:36 +00:00
set_row ( + + ( * nr ) , FR ( " @11gSul Codice IVA non e' stato indicato un valore per allegato " ) ) ;
2006-12-13 16:22:33 +00:00
}
1994-12-05 14:21:36 +00:00
}
else
2003-03-14 15:13:36 +00:00
set_row ( + + ( * nr ) , FR ( " @11gCodice IVA non presente in tabella " ) ) ;
1994-12-05 14:21:36 +00:00
2006-12-13 16:22:33 +00:00
const int tipodet = riva . _tipodet ;
const int tipocr = riva . _tipocr ;
1994-12-05 14:21:36 +00:00
if ( tipodet = = 1 | | tipodet = = 3 | | tipodet = = 5 | | tipodet = = 9 )
if ( _tiporegistro ! = 2 )
2003-03-14 15:13:36 +00:00
set_row ( + + ( * nr ) , FR ( " @11gCodice di indetraibilita' errato " ) ) ;
1994-12-05 14:21:36 +00:00
if ( _tiporegistro = = 1 )
if ( tipocr ! = 0 & & tipocr ! = 1 & & tipocr ! = 4 & & tipocr ! = 9 )
2003-03-14 15:13:36 +00:00
set_row ( + + ( * nr ) , FR ( " @11gTipo costo/ricavo non valido " ) ) ;
1994-12-05 14:21:36 +00:00
if ( _tiporegistro = = 2 )
if ( tipocr ! = 0 & & tipocr ! = 1 & & tipocr ! = 2 & & tipocr ! = 3 & & tipocr ! = 5 & & tipocr ! = 8 & & tipocr ! = 9 )
2003-03-14 15:13:36 +00:00
set_row ( + + ( * nr ) , FR ( " @11gTipo costo/ricavo non valido " ) ) ;
1994-12-05 14:21:36 +00:00
}
void TListaMov_application : : stampa_errori_mov ( )
{
long i = _err . first_one ( ) ;
if ( i ! = - 1 )
{
for ( ; i < = _err . last_one ( ) ; i + + )
if ( _err [ i ] )
2003-06-19 11:04:54 +00:00
set_row ( + + _n , " @11g%s " , ( const char * ) get_error ( i ) ) ;
1994-12-05 14:21:36 +00:00
}
}
void TListaMov_application : : set_page ( int file , int count )
{
switch ( _tipo_lista )
{
case movimenti :
if ( file = = LF_RMOVIVA )
break ;
if ( file = = LF_RMOV )
{
_nr = 1 ;
2002-07-02 16:21:23 +00:00
const TRectype & rec = current_cursor ( ) - > curr ( LF_RMOV ) ;
2006-12-13 18:18:54 +00:00
1994-12-05 14:21:36 +00:00
set_row ( _nr , " @3n " , FLD ( LF_RMOV , RMV_NUMRIG ) ) ;
1997-10-20 14:23:01 +00:00
set_row ( _nr , " @30g@22s " , FLD ( LF_RMOV , RMV_DESCR ) ) ;
1999-07-16 14:59:11 +00:00
set_row ( _nr , " @54g@3,rn " , FLD ( LF_RMOV , RMV_GRUPPO ) ) ;
set_row ( _nr , " @58g@3,rn " , FLD ( LF_RMOV , RMV_CONTO ) ) ;
set_row ( _nr , " @62g@6,rn " , FLD ( LF_RMOV , RMV_SOTTOCONTO ) ) ;
1997-10-20 14:23:01 +00:00
set_row ( _nr , " @69g#.20t " , & _descr ) ;
1999-04-06 15:34:39 +00:00
_appoggio = toupper ( current_cursor ( ) - > curr ( LF_RMOV ) . get_char ( RMV_SEZIONE ) ) ;
if ( _appoggio = = ' D ' )
1997-10-20 14:23:01 +00:00
set_row ( _nr , " @90g@n " , FLD ( LF_RMOV , RMV_IMPORTO ) ) ;
1994-12-05 14:21:36 +00:00
else
1997-10-20 14:23:01 +00:00
set_row ( _nr , " @110g@n " , FLD ( LF_RMOV , RMV_IMPORTO ) ) ;
1994-12-05 14:21:36 +00:00
}
else if ( file = = LF_MOV )
{
_n = 1 ;
1997-10-20 14:23:01 +00:00
set_row ( _n + + , " " ) ;
2003-03-14 15:13:36 +00:00
set_row ( _n , FR ( " Operazione n. @14g@7n " ) , FLD ( LF_MOV , MOV_NUMREG ) ) ;
set_row ( _n , FR ( " @22gdel@26g@d " ) , FLD ( LF_MOV , MOV_DATAREG ) ) ;
1994-12-05 14:21:36 +00:00
set_row ( _n , " @37g@36s " , FLD ( LF_MOV , MOV_DESCR ) ) ;
2009-03-23 12:31:38 +00:00
set_row ( _n , FR ( " @75gdoc. @7rs " ) , FLD ( LF_MOV , MOV_NUMDOC ) ) ;
set_row ( _n , FR ( " @88gdel@91g@d " ) , FLD ( LF_MOV , MOV_DATADOC ) ) ;
2004-04-28 20:45:59 +00:00
current_cursor ( ) - > curr ( LF_MOV ) . get_int ( MOV_ANNOES ) ; // qui verificare
1994-12-05 14:21:36 +00:00
TDate data = current_cursor ( ) - > curr ( LF_MOV ) . get_date ( MOV_DATAREG ) ;
1996-01-03 15:06:24 +00:00
TDate dcomp = current_cursor ( ) - > curr ( LF_MOV ) . get_date ( MOV_DATACOMP ) ;
1994-12-05 14:21:36 +00:00
TString16 reg = current_cursor ( ) - > curr ( LF_MOV ) . get ( MOV_REG ) ;
int anno = current_cursor ( ) - > curr ( LF_MOV ) . get_int ( MOV_ANNOIVA ) ;
1995-04-19 13:13:21 +00:00
char prov = current_cursor ( ) - > curr ( LF_MOV ) . get_char ( MOV_PROVVIS ) ;
2003-10-13 15:03:52 +00:00
int tipo = tipo_registro ( reg , anno ) ;
1996-12-10 08:23:20 +00:00
TEsercizi_contabili esc ;
2004-04-28 20:45:59 +00:00
esc . date2esc ( data ) ; // qui verificare
1994-12-05 14:21:36 +00:00
if ( ( tipo = = 1 ) | | ( tipo = = 2 ) )
{
2003-03-14 15:13:36 +00:00
set_row ( _n , FR ( " @103greg @3s " ) , FLD ( LF_MOV , MOV_REG ) ) ;
set_row ( _n , FR ( " @111gpr @5n " ) , FLD ( LF_MOV , MOV_PROTIVA ) ) ;
1994-12-05 14:21:36 +00:00
}
1997-06-26 08:37:35 +00:00
else if ( _provvis = = 2 & & prov > = ' ' )
2003-03-14 15:13:36 +00:00
set_row ( _n , FR ( " @103gMov.Provvisorio " ) ) ;
1996-01-03 15:06:24 +00:00
if ( data ! = dcomp )
set_row ( _n , " @119gc.%s " , ( const char * ) dcomp . string ( brief , ' - ' ) ) ;
//fine
1994-12-05 14:21:36 +00:00
set_row ( _n , " @130g@f " , FLD ( LF_MOV , MOV_STAMPATO ) ) ;
}
break ;
default :
break ;
}
}
void TListaMov_application : : stampa_intestazione ( )
{
1997-10-20 14:23:01 +00:00
set_row ( 1 , " " ) ;
1994-12-05 14:21:36 +00:00
if ( _tipo_elenco = = " C " )
2003-03-14 15:13:36 +00:00
set_row ( 2 , FR ( " @bCliente@8g@6n " ) , FLD ( LF_MOV , MOV_CODCF ) ) ;
1994-12-05 14:21:36 +00:00
else
2003-03-14 15:13:36 +00:00
set_row ( 2 , FR ( " @bFornitore@10g@6n " ) , FLD ( LF_MOV , MOV_CODCF ) ) ;
1994-12-20 09:36:33 +00:00
set_row ( 2 , " @b@18g#.35t " , & _ragsoc ) ;
2003-03-14 15:13:36 +00:00
set_row ( 2 , FR ( " @b@54gInd #-.29t #-.10t " ) , & _indcf , & _civcf ) ;
set_row ( 2 , FR ( " @b@98gP.I. #11t " ) , & _paiv ) ;
1994-12-05 14:21:36 +00:00
if ( _alleg = = 0 )
2003-03-14 15:13:36 +00:00
set_row ( 2 , FR ( " @b@121gAllegato SI " ) ) ;
1995-11-17 14:29:24 +00:00
else
2003-03-14 15:13:36 +00:00
set_row ( 2 , FR ( " @b@121gAllegato NO " ) ) ;
set_row ( 3 , FR ( " @b@54gCap #5t " ) , & _capcf ) ;
1995-11-17 14:29:24 +00:00
set_row ( 3 , " @b@64g%s #-.20t Pr #-.5t " ,
( const char * ) _app , & _dencom , & _provcom ) ;
2003-03-14 15:13:36 +00:00
set_row ( 3 , FR ( " @b@98gC.F. #-16t " ) , & _cofi ) ;
1994-12-05 14:21:36 +00:00
if ( _alleg = = 0 )
2003-03-14 15:13:36 +00:00
set_row ( 3 , FR ( " @b@120gRifer@126g#6d " ) , & _codalleg ) ;
1994-12-05 14:21:36 +00:00
}
bool TListaMov_application : : preprocess_page ( int file , int counter )
{
2003-10-13 15:03:52 +00:00
if ( counter )
return TRUE ;
1994-12-05 14:21:36 +00:00
2003-10-13 15:03:52 +00:00
TCursor * cur = current_cursor ( ) ;
1994-12-05 14:21:36 +00:00
switch ( _tipo_lista )
{
case movimenti :
if ( _scelta_stampa = = 0 )
{
if ( file = = LF_MOV )
{
2003-10-13 15:03:52 +00:00
const TRectype & curmov = cur - > curr ( LF_MOV ) ;
1994-12-05 14:21:36 +00:00
_tot_avere = 0 ;
_tot_dare = 0 ;
_c . destroy ( ) ;
_no_preprocess_page = FALSE ;
_esiste_riga_iva = FALSE ;
_nonesiste_riga_iva = FALSE ;
2003-10-13 15:03:52 +00:00
_annoeser = curmov . get_int ( MOV_ANNOES ) ;
_datacomp = curmov . get_date ( MOV_DATACOMP ) ;
_causale = curmov . get ( MOV_CODCAUS ) ;
_registro = curmov . get ( MOV_REG ) ;
_anno = curmov . get_int ( MOV_ANNOIVA ) ;
_tipodoc = curmov . get ( MOV_TIPODOC ) ;
_datareg = curmov . get_date ( MOV_DATAREG ) ;
_tipo_elenco = curmov . get ( MOV_TIPO ) ;
_codcf = curmov . get_long ( MOV_CODCF ) ;
_numero = curmov . get_long ( MOV_NUMREG ) ;
_codval = curmov . get ( MOV_CODVALI ) ;
_tiporegistro = tipo_registro ( _registro , _anno ) ;
1994-12-05 14:21:36 +00:00
_causale_gia_stampata = FALSE ;
1996-12-10 08:23:20 +00:00
TEsercizi_contabili esc ;
_ae = esc . date2esc ( _datareg ) ;
1995-01-13 10:08:02 +00:00
if ( _registro . not_empty ( ) ) //si tratta di fattura
2003-10-13 15:03:52 +00:00
_mov_di_sola_iva = ! cur - > is_first_match ( LF_RMOV ) ;
1995-01-13 10:08:02 +00:00
_descr_doc = DescrDoc ( _tipodoc ) ;
2003-10-13 15:03:52 +00:00
TRectype da ( LF_MOV ) ;
TRectype a ( LF_MOV ) ;
1994-12-05 14:21:36 +00:00
if ( _annoes ! = 0 )
{
da . put ( MOV_ANNOES , _annoes ) ;
a . put ( MOV_ANNOES , _annoes ) ;
}
da . put ( MOV_CODCAUS , _causale_ini ) ;
da . put ( MOV_REG , _registro_ini ) ;
a . put ( MOV_CODCAUS , _causale_fin ) ;
a . put ( MOV_REG , _registro_fin ) ;
2003-10-13 15:03:52 +00:00
if ( ( curmov > = da ) & & ( curmov < = a ) )
2003-03-14 15:13:36 +00:00
{
2003-10-13 15:03:52 +00:00
const TRectype & caus = cache ( ) . get ( LF_CAUSALI , _causale ) ;
2003-03-14 15:13:36 +00:00
_reg_causale = caus . get ( CAU_REG ) ;
_descr_causale = caus . get ( CAU_DESCR ) ;
_alleg_causale = caus . get_bool ( CAU_ALLEG ) ;
_tipodocumento = caus . get ( CAU_TIPODOC ) ;
1994-12-05 14:21:36 +00:00
if ( _controllo_mov_errati = = 1 | | _controllo_mov_errati = = 2 )
{
bool controlla = segnala_errori_primariga ( ) ;
bool verifica = ( _stampa_parte_iva & & segnala_errori_iva ( ) ) | | segnala_errori_ogniriga ( ) ;
if ( ( _controllo_mov_errati = = 1 & & controlla )
| | _controllo_mov_errati = = 2 )
{
stampa_errori_mov ( ) ;
return TRUE ;
}
else if ( _controllo_mov_errati = = 1 & & ! verifica )
return FALSE ;
else return TRUE ;
}
else return TRUE ;
}
}
else if ( file = = LF_RMOV )
{
if ( ! _causale_gia_stampata )
{
set_row ( _nr , " @4g%3s " , ( const char * ) _causale ) ;
1995-01-13 10:08:02 +00:00
set_row ( _nr , " @8g%-.20s " , ( const char * ) _descr_causale ) ;
1994-12-05 14:21:36 +00:00
_causale_gia_stampata = TRUE ;
}
2003-10-13 15:03:52 +00:00
const TRectype & currig = cur - > curr ( LF_RMOV ) ;
int gruppo = currig . get_int ( RMV_GRUPPO ) ;
int conto = currig . get_int ( RMV_CONTO ) ;
long sottoconto = currig . get_long ( RMV_SOTTOCONTO ) ;
const TString4 tipoc = currig . get ( RMV_TIPOC ) ;
1994-12-05 14:21:36 +00:00
_descr = DescrConto ( gruppo , conto , sottoconto , tipoc ) ;
_alleg = AllegClifo ( gruppo , conto , sottoconto ) ;
2003-10-13 15:03:52 +00:00
_importo = currig . get_real ( RMV_IMPORTO ) ;
_appoggio = currig . get_char ( RMV_SEZIONE ) ;
1994-12-05 14:21:36 +00:00
if ( ! _no_preprocess_page )
{
1999-04-06 15:34:39 +00:00
if ( _appoggio = = ' D ' )
1994-12-05 14:21:36 +00:00
{
_tot_dare_generale + = _importo ;
_tot_dare + = _importo ;
}
1999-04-06 15:34:39 +00:00
else
1994-12-05 14:21:36 +00:00
{
_tot_avere + = _importo ;
_tot_avere_generale + = _importo ;
}
2003-10-13 15:03:52 +00:00
if ( _controllo_mov_errati ! = 3 )
stampa_errori_rmov ( ) ;
1994-12-05 14:21:36 +00:00
}
return TRUE ;
}
1994-12-20 09:36:33 +00:00
else if ( _stampa_parte_iva & & file = = LF_RMOVIVA )
1994-12-05 14:21:36 +00:00
{
2003-10-13 15:03:52 +00:00
const TRectype & iva = cur - > curr ( LF_RMOVIVA ) ;
2006-12-13 16:22:33 +00:00
_c . add_riga ( iva ) ;
1994-12-05 14:21:36 +00:00
return TRUE ;
}
}
else //_scelta_stampa == 1
{
if ( file = = LF_MOV )
{
_tot_avere = 0 ;
_tot_dare = 0 ;
_no_preprocess_page = FALSE ;
2003-10-13 15:03:52 +00:00
const TRectype & curmov = cur - > curr ( LF_MOV ) ;
_causale = curmov . get ( MOV_CODCAUS ) ;
_registro = curmov . get ( MOV_REG ) ;
_anno = curmov . get_int ( MOV_ANNOES ) ;
_tipodoc = curmov . get ( MOV_TIPODOC ) ;
1994-12-20 09:36:33 +00:00
_causale_gia_stampata = FALSE ;
2003-10-13 15:03:52 +00:00
TRectype da ( LF_MOV ) ;
TRectype a ( LF_MOV ) ;
1994-12-05 14:21:36 +00:00
if ( _annoes ! = 0 )
{
da . put ( MOV_ANNOES , _annoes ) ;
a . put ( MOV_ANNOES , _annoes ) ;
}
da . put ( MOV_CODCAUS , _causale_ini ) ;
a . put ( MOV_CODCAUS , _causale_fin ) ;
2003-10-13 15:03:52 +00:00
if ( ( curmov > = da ) & & ( curmov < = a ) )
1994-12-05 14:21:36 +00:00
{
2003-03-14 15:13:36 +00:00
const TRectype & caus = cache ( ) . get ( LF_CAUSALI , _causale ) ;
_descr_causale = caus . get ( CAU_DESCR ) ;
_alleg_causale = caus . get_bool ( CAU_ALLEG ) ;
_tipodocumento = caus . get ( CAU_TIPODOC ) ;
1994-12-05 14:21:36 +00:00
2003-10-13 15:03:52 +00:00
_tiporegistro = tipo_registro ( _registro , _anno ) ;
1994-12-05 14:21:36 +00:00
if ( ( _tiporegistro ! = 1 ) & & ( _tiporegistro ! = 2 ) ) //se si tratta di un movimento di sola prima nota
return TRUE ;
}
}
else if ( file = = LF_RMOV )
{
1994-12-20 09:36:33 +00:00
if ( ! _causale_gia_stampata )
{
set_row ( _nr , " @4g%3s " , ( const char * ) _causale ) ;
1995-01-13 10:08:02 +00:00
set_row ( _nr , " @8g%-.20s " , ( const char * ) _descr_causale ) ;
1994-12-20 09:36:33 +00:00
_causale_gia_stampata = TRUE ;
}
2003-10-13 15:03:52 +00:00
const TRectype & rmov = current_cursor ( ) - > curr ( LF_RMOV ) ;
int gruppo = rmov . get_int ( RMV_GRUPPO ) ;
int conto = rmov . get_int ( RMV_CONTO ) ;
long sottoconto = rmov . get_long ( RMV_SOTTOCONTO ) ;
const TString4 tipoc = rmov . get ( RMV_TIPOC ) ;
1994-12-05 14:21:36 +00:00
_descr = DescrConto ( gruppo , conto , sottoconto , tipoc ) ;
2003-10-13 15:03:52 +00:00
_importo = rmov . get_real ( RMV_IMPORTO ) ;
_appoggio = toupper ( rmov . get_char ( RMV_SEZIONE ) ) ;
1994-12-05 14:21:36 +00:00
if ( ! _no_preprocess_page )
{
1999-04-06 15:34:39 +00:00
if ( _appoggio = = ' D ' )
1994-12-05 14:21:36 +00:00
{
_tot_dare_generale + = _importo ;
_tot_dare + = _importo ;
}
1999-04-06 15:34:39 +00:00
else
1994-12-05 14:21:36 +00:00
{
_tot_avere + = _importo ;
_tot_avere_generale + = _importo ;
}
}
return TRUE ;
}
}
break ;
case fatture :
{
if ( file = = LF_MOV )
{
2003-10-13 15:03:52 +00:00
const TRectype & curmov = current_cursor ( ) - > curr ( LF_MOV ) ;
2008-11-19 16:01:52 +00:00
const int anno = curmov . get_int ( MOV_ANNOIVA ) ;
const TString4 codreg = curmov . get ( MOV_REG ) ;
2003-10-13 15:03:52 +00:00
_numr = curmov . get_long ( MOV_NUMREG ) ;
_tipo_elenco = curmov . get ( MOV_TIPO ) ;
_codcf = curmov . get_long ( MOV_CODCF ) ;
2008-11-19 16:01:52 +00:00
int tiporeg = tipo_registro ( codreg , anno ) ;
const TString8 attreg = AttivitaRegistro ( codreg , anno ) ;
1994-12-05 14:21:36 +00:00
if ( tiporeg = = 1 | | tiporeg = = 2 ) //se si tratta di un movimento iva
{
_tipoatt = TipoAttivita ( attreg , get_firm ( ) ) ;
2003-10-13 15:03:52 +00:00
_tipo_elenco = curmov . get ( MOV_TIPO ) ;
_codcf = curmov . get_long ( MOV_CODCF ) ;
_codcaus = curmov . get ( MOV_CODCAUS ) ;
_tipodoc = curmov . get ( MOV_TIPODOC ) ;
_codval = curmov . get ( MOV_CODVALI ) ;
_totdoc = curmov . get_real ( MOV_TOTDOC ) ;
1997-10-20 14:23:01 +00:00
1994-12-05 14:21:36 +00:00
if ( _tipo_elenco ! = _tipo_clifo_prec & & _tipo_clifo_prec ! = " " )
printer ( ) . formfeed ( ) ;
2003-10-13 15:03:52 +00:00
TRectype da ( LF_MOV ) ;
TRectype a ( LF_MOV ) ;
1994-12-05 14:21:36 +00:00
if ( _annoes ! = 0 ) //anno specificato nella maschera
{
da . put ( MOV_ANNOES , _annoes ) ;
a . put ( MOV_ANNOES , _annoes ) ;
}
2003-10-13 15:03:52 +00:00
2002-12-20 16:15:03 +00:00
da . put ( MOV_CODCAUS , _causale_ini ) ;
a . put ( MOV_CODCAUS , _causale_fin ) ;
1994-12-05 14:21:36 +00:00
if ( _data_ini . ok ( ) )
da . put ( MOV_DATAREG , _data_ini ) ;
da . put ( MOV_TIPO , _tipo_ini ) ;
if ( _codice_ini ! = 0 )
da . put ( MOV_CODCF , _codice_ini ) ;
if ( _data_fin . ok ( ) )
a . put ( MOV_DATAREG , _data_fin ) ;
a . put ( MOV_TIPO , _tipo_fin ) ;
if ( _codice_fin ! = 0 )
a . put ( MOV_CODCF , _codice_fin ) ;
2003-10-13 15:03:52 +00:00
if ( ( curmov > = da ) & & ( curmov < = a ) )
1994-12-05 14:21:36 +00:00
{
compila_clifo ( ) ;
compila_comuni ( ) ;
if ( ( _tipo_clifo_prec = = " " ) & & ( _codcf_prec = = 0l ) )
{
_tipo_clifo_prec = _tipo_elenco ;
_codcf_prec = _codcf ;
stampa_intestazione ( ) ;
}
else
if ( _tipo_clifo_prec = = _tipo_elenco & & _codcf_prec = = _codcf )
_settata_prima_riga = FALSE ;
else
{
if ( _salto_pagina & & _tipo_clifo_prec = = _tipo_elenco )
printer ( ) . formfeed ( ) ;
stampa_intestazione ( ) ;
_tipo_clifo_prec = _tipo_elenco ;
_codcf_prec = _codcf ;
_settata_prima_riga = FALSE ;
}
return TRUE ;
}
}
}
else if ( file = = LF_RMOVIVA )
{
2003-10-13 15:03:52 +00:00
const TRectype & rmov = current_cursor ( ) - > curr ( LF_RMOV ) ;
int gruppo = rmov . get_int ( RMV_GRUPPO ) ;
int conto = rmov . get_int ( RMV_CONTO ) ;
1994-12-05 14:21:36 +00:00
2003-03-14 15:13:36 +00:00
TToken_string key ;
key . add ( gruppo ) ;
key . add ( conto ) ;
key . add ( " " ) ;
const TRectype & pcon = cache ( ) . get ( LF_PCON , key ) ;
1994-12-05 14:21:36 +00:00
2008-11-19 16:01:52 +00:00
_ricser = pcon . get_int ( PCN_RICSER ) ;
1994-12-05 14:21:36 +00:00
_simbolo = SimboloValuta ( _codval ) ;
_allegb = CausAlleg ( _codcaus ) ;
_descr_doc = DescrDoc ( _tipodoc ) ;
2006-12-13 16:22:33 +00:00
//_intra = cur->curr(LF_RMOVIVA).get_bool(RMI_INTRA);
1997-10-20 14:23:01 +00:00
1994-12-20 09:36:33 +00:00
if ( ! _settata_prima_riga )
1994-12-05 14:21:36 +00:00
{
1994-12-20 09:36:33 +00:00
reset_print ( ) ;
set_row ( 1 , " " ) ;
1998-04-30 15:59:34 +00:00
set_row ( 2 , " @7,rn " , FLD ( LF_MOV , MOV_NUMREG ) ) ;
1994-12-20 09:36:33 +00:00
set_row ( 2 , " @8g@d " , FLD ( LF_MOV , MOV_DATAREG ) ) ;
set_row ( 2 , " @17g@3,rs " , FLD ( LF_MOV , MOV_REG ) ) ;
1998-04-30 15:59:34 +00:00
set_row ( 2 , " @20g@5,rn " , FLD ( LF_MOV , MOV_PROTIVA ) ) ;
set_row ( 2 , " @26g@2,rn " , FLD ( LF_MOV , MOV_MESELIQ ) ) ;
1994-12-05 14:21:36 +00:00
2006-12-13 16:22:33 +00:00
const TString8 protiva = cur - > curr ( LF_MOV ) . get ( MOV_PROTIVA ) ;
TString8 uprotiva = cur - > curr ( LF_MOV ) . get ( MOV_UPROTIVA ) ;
1994-12-05 14:21:36 +00:00
2006-12-13 16:22:33 +00:00
if ( uprotiva . full ( ) )
2004-04-28 20:45:59 +00:00
{
2008-11-19 16:01:52 +00:00
int i ;
2004-04-28 20:45:59 +00:00
for ( i = 0 ; protiva [ i ] & & ( protiva [ i ] = = uprotiva [ i ] ) ; i + + ) ;
1994-12-05 14:21:36 +00:00
uprotiva = uprotiva . mid ( i ) ;
1994-12-20 09:36:33 +00:00
set_row ( 2 , " @24g/@25g%s " , ( const char * ) uprotiva ) ;
1994-12-05 14:21:36 +00:00
}
2009-03-23 12:31:38 +00:00
set_row ( 2 , " @31g@d " , FLD ( LF_MOV , MOV_DATADOC ) ) ;
set_row ( 2 , " @40g@7,rs " , FLD ( LF_MOV , MOV_NUMDOC ) ) ;
1999-07-16 14:59:11 +00:00
set_row ( 2 , " @48g@3s " , FLD ( LF_MOV , MOV_CODCAUS ) ) ;
set_row ( 2 , " @52g@2s " , FLD ( LF_MOV , MOV_TIPODOC ) ) ;
set_row ( 2 , " @55g%-.12s " , ( const char * ) _descr_doc ) ;
1997-10-20 14:23:01 +00:00
set_row ( 2 , " @67g@n " , FLD ( LF_MOV , MOV_TOTDOC ) ) ;
set_row ( 2 , " @84g@n " , FLD ( LF_RMOVIVA , RMI_IMPONIBILE ) ) ;
1994-12-20 09:36:33 +00:00
set_row ( 2 , " @101g@4s " , FLD ( LF_RMOVIVA , RMI_CODIVA ) ) ;
2006-12-13 16:22:33 +00:00
set_row ( 2 , " @105g@1s " , FLD ( LF_RMOVIVA , RMI_TIPODET ) ) ;
1994-12-05 14:21:36 +00:00
if ( _tipoatt = = " E " )
1998-03-30 14:18:57 +00:00
{
1994-12-05 14:21:36 +00:00
if ( _ricser = = 1 )
1994-12-20 09:36:33 +00:00
set_row ( 2 , " @109g1 " ) ;
1994-12-05 14:21:36 +00:00
else if ( _ricser = = 2 )
1994-12-20 09:36:33 +00:00
set_row ( 2 , " @109g2 " ) ;
1998-03-30 14:18:57 +00:00
}
1994-12-20 09:36:33 +00:00
set_row ( 2 , " @111g@f " , FLD ( LF_RMOVIVA , RMI_INTRA ) ) ;
1997-10-20 14:23:01 +00:00
set_row ( 2 , " @114g@n " , FLD ( LF_RMOVIVA , RMI_IMPOSTA ) ) ;
1995-11-17 14:29:24 +00:00
if ( _allegb )
1994-12-20 09:36:33 +00:00
set_row ( 2 , " @131g* " ) ;
1994-12-05 14:21:36 +00:00
incrementa_totali ( ) ;
_settata_prima_riga = TRUE ;
+ + _documenti ;
}
else if ( _settata_prima_riga )
{
1994-12-20 09:36:33 +00:00
reset_print ( ) ;
1997-10-20 14:23:01 +00:00
set_row ( 1 , " @84g@n " , FLD ( LF_RMOVIVA , RMI_IMPONIBILE ) ) ;
1994-12-20 09:36:33 +00:00
set_row ( 1 , " @101g@4s " , FLD ( LF_RMOVIVA , RMI_CODIVA ) ) ;
2006-12-13 16:22:33 +00:00
set_row ( 1 , " @105g@1s " , FLD ( LF_RMOVIVA , RMI_TIPODET ) ) ;
1997-10-20 14:23:01 +00:00
set_row ( 1 , " @114g@n " , FLD ( LF_RMOVIVA , RMI_IMPOSTA ) ) ;
1994-12-05 14:21:36 +00:00
incrementa_totali ( ) ;
1994-12-20 09:36:33 +00:00
}
1994-12-05 14:21:36 +00:00
return TRUE ;
}
}
break ;
default :
break ;
}
return FALSE ;
}
2000-10-03 13:45:12 +00:00
void TListaMov_application : : print_intra ( int & rr )
{
const TRectype & mov = current_cursor ( ) - > curr ( LF_MOV ) ;
2004-04-28 20:45:59 +00:00
const real corrval = mov . get_real ( MOV_CORRVALUTA ) ;
2000-10-03 13:45:12 +00:00
if ( corrval ! = ZERO )
{
const TString16 codval = mov . get ( MOV_CODVALI ) ;
TString80 str ;
2001-05-01 08:17:07 +00:00
rr + + ;
2000-10-03 13:45:12 +00:00
const TCurrency cl ( mov . get_real ( MOV_CORRLIRE ) ) ;
str = cl . string ( TRUE ) ; str . right_just ( 19 ) ;
2003-03-14 15:13:36 +00:00
set_row ( rr , FR ( " Corrispettivo@14g%s " ) , ( const char * ) str ) ;
2000-10-03 13:45:12 +00:00
const TCurrency cv ( corrval , codval ) ;
str = cv . string ( TRUE ) ; str . right_just ( 19 ) ;
2003-03-14 15:13:36 +00:00
set_row ( rr , FR ( " @34gCorr.in valuta@49g%s " ) , ( const char * ) str ) ;
2000-10-03 13:45:12 +00:00
2001-05-01 08:17:07 +00:00
set_row ( rr , " @70g%-3s " , ( const char * ) codval ) ;
2000-10-03 13:45:12 +00:00
}
}
1994-12-05 14:21:36 +00:00
print_action TListaMov_application : : postprocess_page ( int file , int count )
{
if ( count )
{
reset_print ( ) ;
return NEXT_PAGE ;
}
2006-12-13 16:22:33 +00:00
1994-12-05 14:21:36 +00:00
switch ( _tipo_lista )
{
case movimenti :
if ( file = = LF_RMOV )
{
force_setpage ( ) ;
break ;
}
if ( file = = LF_MOV )
{
reset_print ( ) ;
_err . reset ( ) ;
int n = 1 ;
1995-01-13 10:08:02 +00:00
int r = 0 ;
if ( _scelta_stampa = = 0 )
if ( _registro . not_empty ( ) & & _mov_di_sola_iva )
{
compila_clifo ( ) ;
1995-03-01 16:47:54 +00:00
set_row ( + + r , " @1g%3s %-50s %6ld %-50s " , ( const char * ) _causale , ( const char * ) _descr_causale , _codcf , ( const char * ) _ragsoc ) ;
1995-01-13 10:08:02 +00:00
}
1994-12-05 14:21:36 +00:00
if ( _scelta_stampa = = 0 & & _stampa_parte_iva )
{
for ( int j = 0 ; j < _c . items ( ) ; j + + )
{
2006-12-13 16:22:33 +00:00
const TRigaiva & riga = ( const TRigaiva & ) _c [ j ] ;
1994-12-05 14:21:36 +00:00
//r = j+1;
r + + ;
2003-03-14 15:13:36 +00:00
set_row ( r , FR ( " Imponibile@11g%r " ) , & riga . _imponibile ) ;
set_row ( r , FR ( " @31gImposta@38g%r " ) , & riga . _imposta ) ;
set_row ( r , FR ( " @58gCodice Iva@69g%3s " ) , ( const char * ) riga . _codiva ) ;
2006-12-13 16:22:33 +00:00
set_row ( r , " @76g%s " , ( const char * ) riga . descr_det ( ) ) ;
1998-04-30 15:59:34 +00:00
if ( j = = 0 ) // Se e' la prima riga che stampa
{
const int meseliq = current_cursor ( ) - > file ( LF_MOV ) . get_int ( MOV_MESELIQ ) ;
if ( meseliq > 0 ) // Stampa il mese liquidazione
2003-03-14 15:13:36 +00:00
set_row ( r , FR ( " Mese liq. %2d " ) , meseliq ) ;
1998-04-30 15:59:34 +00:00
}
1994-12-20 09:36:33 +00:00
if ( riga . _intra )
2003-03-14 15:13:36 +00:00
set_row ( r , FR ( " @111gOper.intrac. " ) ) ;
1994-12-05 14:21:36 +00:00
if ( _controllo_mov_errati ! = 3 )
if ( ! _esiste_riga_iva & & ! _nonesiste_riga_iva )
2006-12-13 16:22:33 +00:00
stampa_errori_iva ( & r , riga ) ;
1994-12-05 14:21:36 +00:00
}
2006-12-13 16:22:33 +00:00
2000-10-03 13:45:12 +00:00
print_intra ( r ) ;
1994-12-05 14:21:36 +00:00
if ( _esiste_riga_iva )
2003-03-14 15:13:36 +00:00
set_row ( + + r , FR ( " @11gPresenti righe IVA in una registrazione senza IVA " ) ) ;
1994-12-05 14:21:36 +00:00
if ( _nonesiste_riga_iva )
2003-03-14 15:13:36 +00:00
set_row ( + + r , FR ( " @11gNon presente alcuna riga IVA in una registrazione con IVA " ) ) ;
1994-12-05 14:21:36 +00:00
_c . destroy ( ) ;
2006-12-13 16:22:33 +00:00
} //if(_scelta_stampa==0...
1995-01-13 10:08:02 +00:00
if ( r > 0 )
n = + + r ;
2006-12-13 16:22:33 +00:00
1994-12-05 14:21:36 +00:00
TRecnotype pos , items ;
bool FINITO = FALSE ;
if ( ( _scelta_stampa = = 0 ) & & ( _controllo_mov_errati ! = 3 ) & & ( _tot_dare ! = _tot_avere ) )
2003-03-14 15:13:36 +00:00
set_row ( n + + , FR ( " @11gIl movimento risulta sbilanciato " ) ) ;
1994-12-05 14:21:36 +00:00
pos = current_cursor ( ) - > pos ( ) ;
items = current_cursor ( ) - > items ( ) ;
FINITO = ( pos = = items - 1 ) ;
_datareg = current_cursor ( ) - > file ( LF_MOV ) . get_date ( MOV_DATAREG ) ;
_numreg = current_cursor ( ) - > file ( LF_MOV ) . get_long ( MOV_NUMREG ) ;
TDate datarec ( _datareg ) ;
if ( ! FINITO )
{
TCursor * cur = current_cursor ( ) ;
cur - > save_status ( ) ;
+ + ( * cur ) ;
1995-01-13 10:08:02 +00:00
datarec = cur - > file ( LF_MOV ) . get_date ( MOV_DATAREG ) ;
1994-12-05 14:21:36 +00:00
- - ( * cur ) ;
cur - > restore_status ( ) ;
}
_tot_avere_giornaliero + = _tot_avere ;
_tot_dare_giornaliero + = _tot_dare ;
//stampa i totali giornalieri
2006-12-13 18:18:54 +00:00
if ( FINITO | |
( _datareg ! = datarec ) | | ( _numreg = = _numreg_fin ) )
1994-12-05 14:21:36 +00:00
{
2006-12-13 18:18:54 +00:00
if ( ( _scelta_stampa = = 0 & & _controllo_mov_errati ! = 1 & & _decidi = = 2 ) | | ( _scelta_stampa = = 1 & & _decidi = = 2 ) )
2002-09-13 14:06:05 +00:00
{
2006-12-13 18:18:54 +00:00
set_row ( n , FR ( " @b@60gTotali del giorno %s " ) , _datareg . string ( ) ) ;
set_row ( n + + , " @b@90g%r %r " , & _tot_dare_giornaliero , & _tot_avere_giornaliero ) ;
_tot_avere_giornaliero = 0 ;
_tot_dare_giornaliero = 0 ;
}
if ( ( _scelta_stampa = = 0 & & _controllo_mov_errati ! = 1 & & FINITO ) | | ( _scelta_stampa = = 1 & & FINITO ) )
{
set_row ( n + + , " " ) ;
set_row ( n , FR ( " @b@60gTotale generale " ) ) ;
set_row ( n + + , " @b@90g%r %r " , & _tot_dare_generale , & _tot_avere_generale ) ;
}
}
1994-12-05 14:21:36 +00:00
if ( n = = 1 )
{
force_setpage ( ) ; //probabilmente e' inutile
return NEXT_PAGE ;
}
2006-12-13 16:22:33 +00:00
else
{
_no_preprocess_page = TRUE ;
force_setpage ( FALSE ) ;
return REPEAT_PAGE ;
}
}
break ;
case fatture :
if ( file = = LF_MOV )
{
reset_print ( ) ;
TCursor * cur = current_cursor ( ) ;
int rr = 1 ;
print_intra ( rr ) ;
_totdocumenti + = _totdoc ;
TRecnotype pos , items ;
bool FINITO = FALSE ;
1994-12-05 14:21:36 +00:00
2006-12-13 16:22:33 +00:00
pos = current_cursor ( ) - > pos ( ) ;
items = current_cursor ( ) - > items ( ) ;
1994-12-05 14:21:36 +00:00
2006-12-13 16:22:33 +00:00
FINITO = ( pos = = items - 1 ) ;
1994-12-05 14:21:36 +00:00
2006-12-13 16:22:33 +00:00
if ( ! FINITO )
{
cur - > save_status ( ) ;
+ + ( * cur ) ;
// long numrsucc = cur->file(LF_MOV).get_long(MOV_NUMREG);
_tipoelsucc = cur - > file ( LF_MOV ) . get ( MOV_TIPO ) ;
_codclifosucc = cur - > file ( LF_MOV ) . get_long ( MOV_CODCF ) ;
- - ( * cur ) ;
cur - > restore_status ( ) ;
}
1994-12-05 14:21:36 +00:00
2006-12-13 16:22:33 +00:00
if ( FINITO | | ( _tipo_elenco ! = _tipoelsucc ) | | ( _codcf ! = _codclifosucc ) )
{
set_row ( rr + + , " " ) ;
if ( ( _tipo_elenco = = " C " ) | | ( _tipo_elenco = = " c " ) )
set_row ( rr + + , FR ( " @bTotali Cliente@18gDocumenti Totale documenti@47gAllegati:@63gImponibile@82gImposta@95gop. esenti@110gop. non imp. " ) ) ;
else
set_row ( rr + + , FR ( " @bTotali Fornitore@18gDocumenti Totale documenti@49gAllegati:@63gImponibile@82gImposta@95gop. esenti@110gop. non imp. " ) ) ;
set_row ( rr , " @b@18g%9d " , _documenti ) ;
set_row ( rr , " @b@28g%r " , & _totdocumenti ) ;
set_row ( rr , " @b@57g%r " , & _totimponibile ) ;
set_row ( rr , " @b@73g%r " , & _totimposta ) ;
set_row ( rr , " @b@92g%r " , & _op_esenti ) ;
set_row ( rr , " @b@110g%r " , & _op_non_imp ) ;
//incrementa i totali generali di stampa!!!
_gen_documenti + = _documenti ;
_gen_totdocumenti + = _totdocumenti ;
_gen_totimponibile + = _totimponibile ;
_gen_totimposta + = _totimposta ;
_gen_op_esenti + = _op_esenti ;
_gen_op_non_imp + = _op_non_imp ;
_totimposta = 0 ;
_totimponibile = 0 ;
_op_esenti = 0 ;
_op_non_imp = 0 ;
_documenti = 0 ;
_totdocumenti = 0 ;
//return REPEAT_PAGE;
}
if ( FINITO ) //ha veramente finito questa stupida stampa: stampa i totali generali!
{
TString blank = " " ;
set_row ( rr + + , ( const char * ) blank ) ;
set_row ( rr + + , ( const char * ) blank ) ;
set_row ( rr + + , ( const char * ) blank ) ;
set_row ( rr + + , FR ( " @bTOTALI GENERALI @18gDocumenti Totale documenti@47gAllegati:@63gImponibile@82gImposta@95gop. esenti@110gop. non imp. " ) ) ;
set_row ( rr , " @b@18g%9d " , _gen_documenti ) ;
set_row ( rr , " @b@28g%r " , & _gen_totdocumenti ) ;
set_row ( rr , " @b@57g%r " , & _gen_totimponibile ) ;
set_row ( rr , " @b@73g%r " , & _gen_totimposta ) ;
set_row ( rr , " @b@89g%r " , & _gen_op_esenti ) ;
set_row ( rr , " @b@104g%r " , & _gen_op_non_imp ) ;
//alla fine della stampa azzera i totali generali
_gen_documenti = 0 ;
_gen_totdocumenti = 0 ;
_gen_totimponibile = 0 ;
_gen_totimposta = 0 ;
_gen_op_esenti = 0 ;
_gen_op_non_imp = 0 ;
}
if ( rr > 1 )
return REPEAT_PAGE ;
}
break ;
default :
break ;
1994-12-05 14:21:36 +00:00
}
1997-10-20 14:23:01 +00:00
return NEXT_PAGE ;
1994-12-05 14:21:36 +00:00
}
print_action TListaMov_application : : postprocess_print ( int file , int count )
{
if ( count )
{
reset_print ( ) ;
return NEXT_PAGE ;
}
switch ( _tipo_lista )
{
case movimenti :
break ;
case fatture :
break ;
default :
break ;
}
return NEXT_PAGE ;
}
//cerca errori sulla testata (MOV)
bool TListaMov_application : : segnala_errori_primariga ( )
{
1996-12-10 08:23:20 +00:00
TEsercizi_contabili esc ;
const int ae = esc . date2esc ( _datacomp ) ;
1994-12-05 14:21:36 +00:00
if ( _ae = = 0 )
_err . set ( 0l ) ;
if ( _registro . not_empty ( ) ) //si tratta di fattura
if ( _datareg . year ( ) ! = _anno )
_err . set ( 1 ) ;
if ( _scelta_stampa = = 0 & & _stampa_anno_comp )
if ( _ae ! = _annoeser )
1996-03-08 08:09:23 +00:00
{
1994-12-05 14:21:36 +00:00
if ( _annoes ) //specificato l'anno nella maschera
_err . set ( 2 ) ;
1996-03-08 08:09:23 +00:00
else _err . set ( 3 ) ;
}
1997-05-22 08:45:49 +00:00
else
if ( _datacomp ! = _datareg ) // altrimenti se gli esercizi corrispondono controlla datacomp e dataop
_err . set ( 26 ) ;
1994-12-05 14:21:36 +00:00
if ( ae )
1996-12-10 08:23:20 +00:00
{
const int ar = esc . date2esc ( _datareg ) ; // Esercizio in corso
const int pr = esc . pred ( ar ) ; // Esercizio precedente
1994-12-05 14:21:36 +00:00
if ( ae ! = ar & & ae ! = pr )
_err . set ( 4 ) ;
}
1996-12-10 08:23:20 +00:00
else
_err . set ( 5 ) ;
1994-12-05 14:21:36 +00:00
if ( _annoeser ! = ae )
_err . set ( 6 ) ;
1995-01-13 10:08:02 +00:00
if ( _tipodoc ! = " " )
if ( ! RicercaDoc ( _tipodoc ) )
_err . set ( 11 ) ;
1994-12-05 14:21:36 +00:00
if ( _causale . not_empty ( ) ) //se indicata la causale
{
2003-03-14 15:13:36 +00:00
const TRectype & caus = cache ( ) . get ( LF_CAUSALI , _causale ) ;
if ( caus . empty ( ) )
1994-12-05 14:21:36 +00:00
_err . set ( 7 ) ;
else
{
2003-03-14 15:13:36 +00:00
bool sos = caus . get_bool ( CAU_SOSPESO ) ;
1994-12-05 14:21:36 +00:00
if ( sos )
_err . set ( 8 ) ;
if ( _stampa_mess_alleg_iva & & _alleg_causale )
_err . set ( 9 ) ;
}
1995-01-13 10:08:02 +00:00
if ( _tipodoc ! = _tipodocumento )
1994-12-05 14:21:36 +00:00
_err . set ( 10 ) ;
1995-01-13 10:08:02 +00:00
if ( _registro ! = _reg_causale )
1994-12-05 14:21:36 +00:00
_err . set ( 12 ) ;
if ( _registro . not_empty ( ) ) //movimento iva (fatture)
{
TRegistro rg ( _registro , _datareg . year ( ) ) ;
if ( rg . name ( ) . empty ( ) )
_err . set ( 13 ) ;
else
{
const int tipo = rg . tipo ( ) ;
2004-04-28 20:45:59 +00:00
// TipoIVA i = nessuna_iva;
2003-10-13 15:03:52 +00:00
const TRectype & tabtpd = cache ( ) . get ( " %TPD " , _tipodoc ) ;
if ( ! tabtpd . empty ( ) )
1994-12-05 14:21:36 +00:00
{
2003-10-13 15:03:52 +00:00
const bool cor = tabtpd . get_bool ( " B0 " ) ;
const int i = tabtpd . get_int ( " I0 " ) ;
1994-12-05 14:21:36 +00:00
if ( i = = 1 & & tipo ! = 1 )
_err . set ( 15 ) ;
if ( i = = 2 & & tipo ! = 2 )
_err . set ( 15 ) ;
if ( i = = 9 & & ( tipo ! = 1 & & tipo ! = 2 ) )
_err . set ( 15 ) ;
if ( cor & & ! rg . corrispettivi ( ) )
_err . set ( 15 ) ;
if ( ! cor )
if ( _codcf = = 0l )
_err . set ( 16 ) ;
}
1995-01-24 15:46:03 +00:00
if ( _codcf ! = 0l )
1994-12-05 14:21:36 +00:00
{
1995-01-24 15:46:03 +00:00
if ( ( tipo = = 1 & & _tipo_elenco ! = " C " ) | | ( tipo = = 2 & & _tipo_elenco ! = " F " ) )
_err . set ( 17 ) ;
2003-03-14 15:13:36 +00:00
TToken_string key ;
key . add ( _tipo_elenco ) ;
key . add ( _codcf ) ;
const TRectype & clifo = cache ( ) . get ( LF_CLIFO , key ) ;
if ( ! clifo . empty ( ) )
1995-01-24 15:46:03 +00:00
{
bool sosp = clifo . get_bool ( CLI_SOSPESO ) ;
if ( sosp )
_err . set ( 18 ) ;
bool occ = clifo . get_bool ( CLI_OCCAS ) ;
char alleg = clifo . get_char ( CLI_ALLEG ) ;
long calleg = clifo . get_long ( CLI_CODALLEG ) ;
if ( ! occ )
{
if ( _stampa_mess_alleg_iva & & alleg = = ' 1 ' )
_err . set ( 19 ) ;
if ( calleg ! = 0l )
1995-01-13 10:08:02 +00:00
{
1995-01-24 15:46:03 +00:00
if ( calleg = = _codcf )
_err . set ( 20 ) ;
2003-03-14 15:13:36 +00:00
TToken_string key ;
key . add ( _tipo_elenco ) ;
key . add ( calleg ) ;
const TRectype & clifo = cache ( ) . get ( LF_CLIFO , key ) ;
if ( ! clifo . empty ( ) )
1995-01-24 15:46:03 +00:00
{
bool sospall = clifo . get_bool ( CLI_SOSPESO ) ;
long codall = clifo . get_long ( CLI_CODALLEG ) ;
char alleg = clifo . get_char ( CLI_ALLEG ) ;
if ( sospall )
_err . set ( 21 ) ;
if ( codall ! = 0l )
_err . set ( 22 ) ;
if ( _stampa_mess_alleg_iva & & alleg = = ' 1 ' )
_err . set ( 23 ) ;
}
else _err . set ( 24 ) ;
}
}
}
else _err . set ( 25 ) ;
}
1994-12-05 14:21:36 +00:00
}
}
}
if ( _err . ones ( ) )
return TRUE ;
return FALSE ;
}
//controlli sulla contropartita
1995-01-31 14:55:09 +00:00
bool TListaMov_application : : contropartita ( int gruppo , int conto , long sottoconto , char t )
1994-12-05 14:21:36 +00:00
{
1997-06-19 14:33:52 +00:00
TBill tc ;
2003-03-14 15:13:36 +00:00
TRectype pc ( LF_PCON ) ;
1994-12-05 14:21:36 +00:00
tc . set ( gruppo , 0 , 0l ) ;
if ( ! tc . read ( pc ) )
return TRUE ;
tc . set ( gruppo , conto , 0l ) ;
if ( ! tc . read ( pc ) )
return TRUE ;
1995-01-31 14:55:09 +00:00
//else t = pc.get_char(PCN_TMCF);
1994-12-05 14:21:36 +00:00
tc . set ( gruppo , conto , sottoconto ) ;
if ( t ! = ' C ' & & t ! = ' F ' )
{
if ( ! tc . read ( pc ) )
return TRUE ;
else
{
bool sosp = tc . sospeso ( ) ;
if ( sosp )
return TRUE ;
}
}
1995-01-31 14:55:09 +00:00
else if ( sottoconto ! = 0l )
1994-12-05 14:21:36 +00:00
{
2003-03-14 15:13:36 +00:00
TToken_string key ;
key . add ( t ) ;
key . add ( sottoconto ) ;
const TRectype & clifo = cache ( ) . get ( LF_CLIFO , key ) ;
if ( ! clifo . empty ( ) )
1994-12-05 14:21:36 +00:00
{
bool sosp = clifo . get_bool ( CLI_SOSPESO ) ;
if ( sosp )
return TRUE ;
}
else
return TRUE ;
}
return FALSE ;
}
//guarda se c'e' almeno un errore su almeno una riga (rmov)
bool TListaMov_application : : segnala_errori_ogniriga ( )
{
TLocalisamfile & rmov = current_cursor ( ) - > file ( LF_RMOV ) ;
1995-01-31 14:55:09 +00:00
int gruppo , conto , anno , gruppoc , contoc ;
long sottoconto , sottocontoc ;
1994-12-05 14:21:36 +00:00
TDate datareg ;
1995-03-17 14:31:33 +00:00
char sez , tipo , t , tipoc ;
real importo ;
real dare , avere ;
1994-12-05 14:21:36 +00:00
if ( current_cursor ( ) - > is_first_match ( LF_RMOV ) )
{
1995-03-17 14:31:33 +00:00
dare = avere = ZERO ;
1994-12-05 14:21:36 +00:00
TRecnotype nrec = rmov . recno ( ) ;
rmov . zero ( ) ;
rmov . setkey ( 1 ) ;
rmov . put ( RMV_NUMREG , _numero ) ;
TRectype recc ( rmov . curr ( ) ) ;
for ( rmov . read ( _isgteq ) ; ! rmov . eof ( ) ; rmov . next ( ) )
{
TRectype rec ( rmov . curr ( ) ) ;
if ( rec > recc ) break ;
gruppo = rec . get_int ( RMV_GRUPPO ) ;
conto = rec . get_int ( RMV_CONTO ) ;
sottoconto = rec . get_long ( RMV_SOTTOCONTO ) ;
1995-01-31 14:55:09 +00:00
gruppoc = rec . get_int ( RMV_GRUPPOC ) ;
contoc = rec . get_int ( RMV_CONTOC ) ;
sottocontoc = rec . get_long ( RMV_SOTTOCONTOC ) ;
tipoc = rec . get_char ( RMV_TIPOCC ) ;
1994-12-05 14:21:36 +00:00
anno = rec . get_int ( RMV_ANNOES ) ;
datareg = rec . get_date ( RMV_DATAREG ) ;
sez = rec . get_char ( RMV_SEZIONE ) ;
tipo = rec . get_char ( RMV_TIPOC ) ;
1995-03-17 14:31:33 +00:00
importo = rec . get_real ( RMV_IMPORTO ) ;
if ( sez = = ' D ' )
dare + = importo ;
if ( sez = = ' A ' )
avere + = importo ;
1994-12-05 14:21:36 +00:00
1997-06-19 14:33:52 +00:00
TBill tc ( gruppo , conto , sottoconto ) ;
1994-12-05 14:21:36 +00:00
1995-03-17 14:31:33 +00:00
if ( gruppoc ! = 0 | | contoc ! = 0 | | sottocontoc ! = 0l )
if ( contropartita ( gruppoc , contoc , sottocontoc , tipoc ) )
{
rmov . readat ( nrec ) ;
2006-12-13 16:22:33 +00:00
return true ;
1995-03-17 14:31:33 +00:00
}
1995-01-31 14:55:09 +00:00
1994-12-05 14:21:36 +00:00
if ( anno ! = _annoeser | | datareg ! = _datareg )
{
rmov . readat ( nrec ) ;
2006-12-13 16:22:33 +00:00
return true ;
1994-12-05 14:21:36 +00:00
}
if ( sez ! = ' D ' & & sez ! = ' A ' )
{
rmov . readat ( nrec ) ;
2006-12-13 16:22:33 +00:00
return true ;
1994-12-05 14:21:36 +00:00
}
if ( tc . empty ( ) )
{
rmov . readat ( nrec ) ;
2006-12-13 16:22:33 +00:00
return true ;
1994-12-05 14:21:36 +00:00
}
if ( ! tc . ok ( ) )
{
rmov . readat ( nrec ) ;
2006-12-13 16:22:33 +00:00
return true ;
1994-12-05 14:21:36 +00:00
}
2003-03-14 15:13:36 +00:00
TRectype pc ( LF_PCON ) ;
1994-12-05 14:21:36 +00:00
tc . set ( gruppo , 0 , 0l ) ;
if ( ! tc . read ( pc ) )
{
rmov . readat ( nrec ) ;
2006-12-13 16:22:33 +00:00
return true ;
1994-12-05 14:21:36 +00:00
}
tc . set ( gruppo , conto , 0l ) ;
if ( ! tc . read ( pc ) )
{
rmov . readat ( nrec ) ;
2006-12-13 16:22:33 +00:00
return true ;
1994-12-05 14:21:36 +00:00
}
else t = pc . get_char ( PCN_TMCF ) ;
if ( t ! = tipo )
{
rmov . readat ( nrec ) ;
2006-12-13 16:22:33 +00:00
return true ;
1994-12-05 14:21:36 +00:00
}
tc . set ( gruppo , conto , sottoconto ) ;
if ( t ! = ' C ' & & t ! = ' F ' )
{
if ( ! tc . read ( pc ) )
{
rmov . readat ( nrec ) ;
2006-12-13 16:22:33 +00:00
return true ;
1994-12-05 14:21:36 +00:00
}
else
{
bool sosp = tc . sospeso ( ) ;
if ( sosp )
{
rmov . readat ( nrec ) ;
2006-12-13 16:22:33 +00:00
return true ;
1994-12-05 14:21:36 +00:00
}
}
}
else
{
2003-03-14 15:13:36 +00:00
TToken_string key ;
key . add ( t ) ;
key . add ( sottoconto ) ;
const TRectype & clifo = cache ( ) . get ( LF_CLIFO , key ) ;
if ( ! clifo . empty ( ) )
1994-12-05 14:21:36 +00:00
{
bool sosp = clifo . get_bool ( CLI_SOSPESO ) ;
if ( sosp )
{
rmov . readat ( nrec ) ;
2006-12-13 16:22:33 +00:00
return true ;
1994-12-05 14:21:36 +00:00
}
}
else
{
rmov . readat ( nrec ) ;
2006-12-13 16:22:33 +00:00
return true ;
1994-12-05 14:21:36 +00:00
}
if ( _registro . not_empty ( ) ) //se su mov e' indicato il codice registro
{
TRegistro rg ( _registro , _ae ) ;
const int tiporeg = rg . tipo ( ) ;
if ( ( tiporeg = = 1 & & t ! = ' C ' ) | | ( tiporeg = = 2 & & t ! = ' F ' ) )
{
rmov . readat ( nrec ) ;
2006-12-13 16:22:33 +00:00
return true ;
1994-12-05 14:21:36 +00:00
}
}
}
TLocalisamfile saldi ( LF_SALDI ) ;
saldi . setkey ( 1 ) ;
saldi . zero ( ) ;
saldi . put ( SLD_ANNOES , anno ) ;
saldi . put ( SLD_GRUPPO , gruppo ) ;
saldi . put ( SLD_CONTO , conto ) ;
saldi . put ( SLD_SOTTOCONTO , sottoconto ) ;
1996-06-04 14:18:45 +00:00
saldi . put ( SLD_FLSCA , " " ) ;
1994-12-05 14:21:36 +00:00
if ( saldi . read ( ) ! = NOERR )
{
rmov . readat ( nrec ) ;
2006-12-13 16:22:33 +00:00
return true ;
1994-12-05 14:21:36 +00:00
}
1995-03-17 14:31:33 +00:00
} //for
if ( dare ! = avere )
{
rmov . readat ( nrec ) ;
2006-12-13 16:22:33 +00:00
return true ;
1995-03-17 14:31:33 +00:00
}
1994-12-05 14:21:36 +00:00
rmov . readat ( nrec ) ;
}
2006-12-13 16:22:33 +00:00
return false ;
1994-12-05 14:21:36 +00:00
}
bool TListaMov_application : : segnala_errori_iva ( )
{
TLocalisamfile & rmoviva = current_cursor ( ) - > file ( LF_RMOVIVA ) ;
2008-02-05 12:33:52 +00:00
const TRectype & mv = current_cursor ( ) - > curr ( LF_RMOV ) ;
1994-12-05 14:21:36 +00:00
if ( current_cursor ( ) - > is_first_match ( LF_RMOVIVA ) )
{
2006-12-13 16:22:33 +00:00
const TRecnotype nrec = rmoviva . recno ( ) ;
1994-12-05 14:21:36 +00:00
rmoviva . setkey ( 1 ) ;
rmoviva . zero ( ) ;
rmoviva . put ( RMI_NUMREG , _numero ) ;
2006-12-13 16:22:33 +00:00
const TRectype & rec = rmoviva . curr ( ) ;
const TRectype recc ( rec ) ;
1994-12-05 14:21:36 +00:00
for ( rmoviva . read ( _isgteq ) ; ! rmoviva . eof ( ) ; rmoviva . next ( ) )
{
2006-12-13 16:22:33 +00:00
if ( rec > recc )
break ;
1994-12-05 14:21:36 +00:00
if ( _registro . empty ( ) )
{
rmoviva . readat ( nrec ) ;
2006-12-13 16:22:33 +00:00
_esiste_riga_iva = true ;
return true ;
1994-12-05 14:21:36 +00:00
}
2006-12-13 16:22:33 +00:00
const TString4 cod = rec . get ( RMI_CODIVA ) ;
real percind ;
2008-02-05 12:33:52 +00:00
const int tipodet = get_tipodet_from_rmi ( rec , mv , percind ) ;
2006-12-13 16:22:33 +00:00
const int tipocr = rec . get_int ( RMI_TIPOCR ) ;
2003-10-13 15:03:52 +00:00
const TRectype & tab_iva = cache ( ) . get ( " %IVA " , cod ) ;
if ( ! tab_iva . empty ( ) )
1994-12-05 14:21:36 +00:00
{
int allc = tab_iva . get_int ( " S7 " ) ;
int allf = tab_iva . get_int ( " S8 " ) ;
bool s = tab_iva . get_bool ( " B2 " ) ;
if ( s )
{
rmoviva . readat ( nrec ) ;
2006-12-13 16:22:33 +00:00
return true ;
1994-12-05 14:21:36 +00:00
}
if ( _stampa_mess_alleg_iva )
if ( allc = = 0 | | allf = = 0 )
{
rmoviva . readat ( nrec ) ;
2006-12-13 16:22:33 +00:00
return true ;
1994-12-05 14:21:36 +00:00
}
}
else
{
rmoviva . readat ( nrec ) ;
2006-12-13 16:22:33 +00:00
return true ;
1994-12-05 14:21:36 +00:00
}
if ( tipodet = = 1 | | tipodet = = 3 | | tipodet = = 5 | | tipodet = = 9 )
if ( _tiporegistro ! = 2 )
{
rmoviva . readat ( nrec ) ;
2006-12-13 16:22:33 +00:00
return true ;
1994-12-05 14:21:36 +00:00
}
if ( _tiporegistro = = 1 )
if ( tipocr ! = 0 & & tipocr ! = 1 & & tipocr ! = 4 & & tipocr ! = 9 )
{
rmoviva . readat ( nrec ) ;
2006-12-13 16:22:33 +00:00
return true ;
1994-12-05 14:21:36 +00:00
}
if ( _tiporegistro = = 2 )
if ( tipocr ! = 0 & & tipocr ! = 1 & & tipocr ! = 2 & & tipocr ! = 3 & & tipocr ! = 5 & & tipocr ! = 8 & & tipocr ! = 9 )
{
rmoviva . readat ( nrec ) ;
2006-12-13 16:22:33 +00:00
return true ;
1994-12-05 14:21:36 +00:00
}
}
rmoviva . readat ( nrec ) ;
}
else if ( _registro . not_empty ( ) ) //cioe' si tratta di fattura
{
2006-12-13 16:22:33 +00:00
_nonesiste_riga_iva = true ;
return true ;
1994-12-05 14:21:36 +00:00
}
2006-12-13 16:22:33 +00:00
return false ;
1994-12-05 14:21:36 +00:00
}
void TListaMov_application : : incrementa_totali ( )
{
2003-10-13 15:03:52 +00:00
const TRectype & rmoviva = current_cursor ( ) - > curr ( LF_RMOVIVA ) ;
2004-04-28 20:45:59 +00:00
const real imponibile = rmoviva . get_real ( RMI_IMPONIBILE ) ;
const real imposta = rmoviva . get_real ( RMI_IMPOSTA ) ;
2006-12-13 16:22:33 +00:00
const TString4 codiva = rmoviva . get ( RMI_CODIVA ) ;
2003-10-13 15:03:52 +00:00
const TRectype & tabiva = cache ( ) . get ( " %IVA " , codiva ) ;
1994-12-05 14:21:36 +00:00
if ( ( _tipo_elenco = = " C " ) | | ( _tipo_elenco = = " c " ) )
{
2003-10-13 15:03:52 +00:00
const int colonna = tabiva . get_int ( " S7 " ) ;
2002-05-08 16:25:49 +00:00
if ( ( colonna = = 1 ) | | ( colonna = = 3 ) )
1994-12-05 14:21:36 +00:00
_totimposta + = imposta ;
2002-05-08 16:25:49 +00:00
if ( colonna = = 1 )
1994-12-05 14:21:36 +00:00
_totimponibile + = imponibile ;
else
2002-05-08 16:25:49 +00:00
if ( colonna = = 3 )
1994-12-05 14:21:36 +00:00
_op_esenti + = imponibile ;
}
else
{
2003-10-13 15:03:52 +00:00
const int colonna = tabiva . get_int ( " S8 " ) ;
2002-05-08 16:25:49 +00:00
if ( ( colonna = = 1 ) | | ( colonna = = 3 ) | | ( colonna = = 4 ) )
1994-12-05 14:21:36 +00:00
_totimposta + = imposta ;
2002-05-08 16:25:49 +00:00
if ( colonna = = 1 )
1994-12-05 14:21:36 +00:00
_totimponibile + = imponibile ;
else
2002-05-08 16:25:49 +00:00
if ( colonna = = 3 )
1994-12-05 14:21:36 +00:00
_op_esenti + = imponibile ;
else
2002-05-08 16:25:49 +00:00
if ( colonna = = 4 )
1994-12-05 14:21:36 +00:00
_op_non_imp + = imponibile ;
}
}
2003-10-13 15:03:52 +00:00
void TListaMov_application : : filtra_cursore_provvisori ( TCursor * cur ) const
{
TString filter ;
switch ( _provvis )
{
case 1 : filter = " (PROVVIS= \" \" ) " ; break ; //normale
case 2 : filter = " " ; break ; //globale
2004-11-30 22:02:59 +00:00
default : filter = " (PROVVIS!= \" \" ) " ; break ; //solo provvisori
2003-10-13 15:03:52 +00:00
}
cur - > setfilter ( filter ) ;
}
2002-05-08 16:25:49 +00:00
void TListaMov_application : : imposta_parametri_stampa ( const TMask & msk )
1994-12-05 14:21:36 +00:00
{
1999-04-06 15:34:39 +00:00
set_magic_currency ( TRUE ) ;
2002-05-08 16:25:49 +00:00
1994-12-05 14:21:36 +00:00
reset_files ( ) ;
_curr1 - > set_filterfunction ( filter_func ) ;
_curr2 - > set_filterfunction ( filter_func ) ;
_curr3 - > set_filterfunction ( filter_func_fatture ) ;
switch ( _tipo_lista )
{
case movimenti :
{
2003-10-13 15:03:52 +00:00
_scelta_stampa = msk . get_int ( F_MOVIMENTI ) ;
1994-12-05 14:21:36 +00:00
_annoes = msk . get_int ( F_ANNO ) ;
_decidi = msk . get_int ( F_DECIDI ) ;
_causale_ini = msk . get ( F_CAUSALEINI ) ;
_causale_fin = msk . get ( F_CAUSALEFIN ) ;
if ( _scelta_stampa = = 0 )
{
_registro_ini = msk . get ( F_REGISTROINI ) ;
_registro_fin = msk . get ( F_REGISTROFIN ) ;
}
1999-04-26 15:58:05 +00:00
_numreg_ini = msk . get_long ( F_NUMEROINI ) ;
_numreg_fin = msk . get_long ( F_NUMEROFIN ) ;
1994-12-05 14:21:36 +00:00
_data_ini = msk . get ( F_DATAINI ) ;
_data_fin = msk . get ( F_DATAFIN ) ;
1995-05-29 16:03:19 +00:00
_provvis = msk . get_int ( F_STAMPAMOVP ) ;
2003-10-13 15:03:52 +00:00
_competence_only = msk . get_bool ( F_COMPETENZA ) ;
TRectype da ( LF_MOV ) , a ( LF_MOV ) ;
1994-12-05 14:21:36 +00:00
if ( _decidi = = 1 )
{
select_cursor ( _cur1 ) ;
2003-10-13 15:03:52 +00:00
filtra_cursore_provvisori ( _curr1 ) ;
1994-12-05 14:21:36 +00:00
da . put ( MOV_NUMREG , _numreg_ini ) ;
a . put ( MOV_NUMREG , _numreg_fin ) ;
}
else
{
select_cursor ( _cur2 ) ;
2003-10-13 15:03:52 +00:00
filtra_cursore_provvisori ( _curr2 ) ;
1994-12-05 14:21:36 +00:00
if ( _data_ini . ok ( ) )
da . put ( MOV_DATAREG , _data_ini ) ;
if ( _data_fin . ok ( ) )
a . put ( MOV_DATAREG , _data_fin ) ;
}
2003-10-13 15:03:52 +00:00
current_cursor ( ) - > setregion ( da , a ) ;
add_file ( LF_MOV ) ;
add_file ( LF_RMOV , LF_MOV ) ;
add_file ( LF_RMOVIVA , LF_MOV ) ;
1994-12-05 14:21:36 +00:00
}
break ;
2002-05-08 16:25:49 +00:00
1997-10-20 14:23:01 +00:00
case fatture :
{
1999-04-26 15:58:05 +00:00
_noseparator = msk . get_bool ( F_SEPARATOR ) ;
TString tipo = msk . get ( F_TIPOELENCO ) ;
2002-12-20 16:15:03 +00:00
1999-04-26 15:58:05 +00:00
_data_ini = msk . get ( F_DATAINI ) ;
_data_fin = msk . get ( F_DATAFIN ) ;
_annoes = msk . get_int ( F_ANNO ) ;
2002-12-20 16:15:03 +00:00
_causale_ini = msk . get ( F_DACODCAUS ) ;
_causale_fin = msk . get ( F_ACODCAUS ) ;
2004-03-04 09:48:15 +00:00
_dacodiva = msk . get ( F_DACODIVA ) ;
_acodiva = msk . get ( F_ACODIVA ) ;
2002-12-20 16:15:03 +00:00
1999-04-26 15:58:05 +00:00
if ( tipo = = " C " | | tipo = = " F " )
{
_codice_ini = atol ( msk . get ( F_CODICEINI ) ) ;
_codice_fin = atol ( msk . get ( F_CODICEFIN ) ) ;
}
else
{
_codice_ini = atol ( msk . get ( F_CODICEINI1 ) ) ;
_codice_fin = atol ( msk . get ( F_CODICEFIN1 ) ) ;
}
2002-05-08 16:25:49 +00:00
1999-04-26 15:58:05 +00:00
if ( tipo = = " E " )
{
_tipo_ini = " C " ;
_tipo_fin = " F " ;
}
else
{
_tipo_ini = tipo ;
_tipo_fin = tipo ;
}
select_cursor ( _cur3 ) ;
_curr3 - > setfilter ( " " ) ;
TRectype da ( LF_MOV ) , a ( LF_MOV ) ;
if ( _codice_ini ! = 0 )
da . put ( MOV_CODCF , _codice_ini ) ;
a . put ( MOV_TIPO , _tipo_fin ) ;
if ( _codice_fin ! = 0 )
a . put ( MOV_CODCF , _codice_fin ) ;
da . put ( MOV_TIPO , _tipo_ini ) ;
current_cursor ( ) - > setregion ( da , a ) ;
add_file ( LF_MOV ) ;
add_file ( LF_RMOVIVA , LF_MOV ) ;
1994-12-05 14:21:36 +00:00
}
1999-04-26 15:58:05 +00:00
break ;
2002-05-08 16:25:49 +00:00
1999-04-26 15:58:05 +00:00
default :
break ;
1994-12-05 14:21:36 +00:00
}
1999-04-26 15:58:05 +00:00
init_print ( msk ) ;
2002-05-08 16:25:49 +00:00
}
1994-12-05 14:21:36 +00:00
2002-05-08 16:25:49 +00:00
bool TListaMov_application : : set_print ( int )
{
const char * masc ;
switch ( toupper ( _tipoc ) )
{
case ' C ' :
masc = " cg3100b " ;
_tipo_lista = fatture ;
break ;
case ' M ' :
default :
masc = " cg3100a " ;
_tipo_lista = movimenti ;
break ;
}
TMask msk ( masc ) ;
2002-07-02 16:21:23 +00:00
if ( main_app ( ) . has_module ( CMAUT ) )
msk . show ( - 4 ) ;
else
{
msk . hide ( - 4 ) ;
msk . reset ( - 4 ) ;
}
msk . set_handler ( F_ANNO , annoes_handler ) ;
2002-05-08 16:25:49 +00:00
msk . set_handler ( F_DATAINI , data_inizio ) ;
msk . set_handler ( F_DATAFIN , data_fine ) ;
2002-07-02 16:21:23 +00:00
2002-05-08 16:25:49 +00:00
while ( msk . run ( ) = = K_ENTER )
{
2006-12-13 18:18:54 +00:00
imposta_parametri_stampa ( msk ) ;
print ( ) ;
2002-07-02 16:21:23 +00:00
msk . reset ( - 5 ) ;
2002-05-08 16:25:49 +00:00
}
2006-12-13 16:22:33 +00:00
return false ;
1994-12-05 14:21:36 +00:00
}
bool TListaMov_application : : user_create ( )
{
_relmov1 = new TRelation ( LF_MOV ) ;
_relmov1 - > add ( LF_RMOV , " NUMREG=NUMREG " , 1 ) ;
_relmov1 - > add ( LF_RMOVIVA , " NUMREG=NUMREG " , 1 ) ;
1995-01-31 16:13:30 +00:00
_curr1 = new TCursor ( _relmov1 , " " , 1 ) ;
_cur1 = add_cursor ( _curr1 ) ;
1994-12-05 14:21:36 +00:00
1995-01-31 16:13:30 +00:00
_relmov2 = new TRelation ( LF_MOV ) ;
1994-12-05 14:21:36 +00:00
_relmov2 - > add ( LF_RMOV , " NUMREG=NUMREG " , 1 ) ;
_relmov2 - > add ( LF_RMOVIVA , " NUMREG=NUMREG " , 1 ) ;
1995-01-31 16:13:30 +00:00
_curr2 = new TCursor ( _relmov2 , " " , 2 ) ;
_cur2 = add_cursor ( _curr2 ) ;
1994-12-05 14:21:36 +00:00
1995-01-31 16:13:30 +00:00
_relmov3 = new TRelation ( LF_MOV ) ;
1994-12-05 14:21:36 +00:00
_relmov3 - > add ( LF_RMOVIVA , " NUMREG==NUMREG " , 1 ) ;
_relmov3 - > add ( LF_RMOV , " NUMREG==NUMREG " , 1 ) ;
_curr3 = new TCursor ( _relmov3 , " " , 3 ) ;
_cur3 = add_cursor ( _curr3 ) ;
2003-03-14 15:13:36 +00:00
open_files ( LF_TAB , LF_TABCOM , LF_CAUSALI , LF_CLIFO , LF_COMUNI , LF_ATTIV ,
LF_PCON , LF_SALDI , LF_RMOVIVA , LF_NDITTE , 0 ) ;
1994-12-05 14:21:36 +00:00
2006-12-13 16:22:33 +00:00
return true ;
1994-12-05 14:21:36 +00:00
}
bool TListaMov_application : : user_destroy ( ) // releasev e arrmask
{
1995-03-01 16:47:54 +00:00
delete _relmov1 ;
delete _relmov2 ;
delete _relmov3 ;
1994-12-05 14:21:36 +00:00
2006-12-13 16:22:33 +00:00
return true ;
1994-12-05 14:21:36 +00:00
}
void TListaMov_application : : init_print ( const TMask & msk )
{
1997-10-20 14:23:01 +00:00
const TDate data ( msk . get ( F_DATASTAMPA ) ) ;
1994-12-05 14:21:36 +00:00
printer ( ) . setdate ( data ) ;
1995-01-31 14:55:09 +00:00
printer ( ) . footerlen ( 5 ) ;
1995-01-31 16:13:30 +00:00
1999-04-06 15:34:39 +00:00
set_magic_currency ( TRUE ) ;
1994-12-05 14:21:36 +00:00
switch ( _tipo_lista )
{
case movimenti :
{
1997-10-20 14:23:01 +00:00
set_real_picture ( " ###.###.###.###.### " ) ;
1994-12-05 14:21:36 +00:00
reset_print ( ) ;
_flags = 0 ;
_err . reset ( ) ;
_tot_dare_giornaliero = 0 ;
_tot_avere_giornaliero = 0 ;
_tot_dare_generale = 0 ;
_tot_avere_generale = 0 ;
if ( _scelta_stampa = = 0 )
{
_annoes = msk . get_int ( F_ANNO ) ;
1995-01-31 16:13:30 +00:00
_stampa_parte_iva = msk . get_bool ( F_STAMPA ) ;
1994-12-05 14:21:36 +00:00
if ( _stampa_parte_iva )
_flags | = ST_DATI_IVA ;
1995-01-31 16:13:30 +00:00
_stampa_mess_alleg_iva = msk . get_bool ( F_ALLEGATO ) ;
1994-12-05 14:21:36 +00:00
if ( _stampa_mess_alleg_iva )
_flags | = ST_MESS_ALLEG ;
1995-01-31 16:13:30 +00:00
_stampa_anno_comp = msk . get_bool ( F_ANNOC ) ;
1994-12-05 14:21:36 +00:00
if ( _stampa_anno_comp )
_flags | = ST_ANNO_COMP ;
1995-01-31 16:13:30 +00:00
_controllo_mov_errati = msk . get_int ( F_CONTROLLO ) ;
1994-12-05 14:21:36 +00:00
if ( _controllo_mov_errati = = 1 )
_flags | = ST_SOLO_MOVERR ;
else if ( _controllo_mov_errati = = 2 )
_flags | = ST_CONTROLLO ;
else _flags | = ST_SENZA_CONTR ;
if ( ( _numreg_ini ! = 0 ) & & ( _decidi = = 1 ) )
_flags | = ST_NUMERO ;
if ( ( _data_ini . ok ( ) ) & & ( _decidi = = 2 ) )
_flags | = ST_DATA ;
_causale_ini = msk . get ( F_CAUSALEINI ) ;
if ( _causale_ini ! = " " )
_flags | = ST_CAUSALE ;
_registro_ini = msk . get ( F_REGISTROINI ) ;
if ( _registro_ini ! = " " )
_flags | = ST_REGISTRO ;
if ( ( _data_fin . ok ( ) ) & & ( _decidi = = 2 ) )
_flags | = ST_DATA ;
if ( ( _numreg_fin ! = 0 ) & & ( _decidi = = 2 ) )
_flags | = ST_NUMERO ;
_causale_fin = msk . get ( F_CAUSALEFIN ) ;
if ( _causale_fin ! = " " )
_flags | = ST_CAUSALE ;
_registro_fin = msk . get ( F_REGISTROFIN ) ;
if ( _registro_fin ! = " " )
_flags | = ST_REGISTRO ;
}
else //_scelta_stampa == 1
{
_annoes = msk . get_int ( F_ANNO ) ;
if ( _numreg_ini ! = 0 )
_flags | = ST_NUMERO ;
if ( _data_ini . ok ( ) )
_flags | = ST_DATA ;
_causale_ini = msk . get ( F_CAUSALEINI ) ;
if ( _causale_ini ! = " " )
_flags | = ST_CAUSALE ;
if ( _data_fin . ok ( ) )
_flags | = ST_DATA ;
if ( _numreg_fin ! = 0 )
_flags | = ST_NUMERO ;
_causale_fin = msk . get ( F_CAUSALEFIN ) ;
if ( _causale_fin ! = " " )
_flags | = ST_CAUSALE ;
}
}
break ;
2006-12-13 16:22:33 +00:00
1997-10-20 14:23:01 +00:00
case fatture :
1994-12-05 14:21:36 +00:00
{
1997-10-20 14:23:01 +00:00
if ( _noseparator )
set_real_picture ( " ################ " ) ;
else
set_real_picture ( " ####.###.###.### " ) ;
2006-12-13 16:22:33 +00:00
//resettaggio di tutte le incasinatissime variabili membro...(membro stara' per cazzo?)
_flags = 0 ;
1997-10-20 14:23:01 +00:00
reset_print ( ) ;
_settata_prima_riga = FALSE ;
_tipo_clifo_prec = " " ;
_codcf_prec = 0l ;
_numeroregp = 0 ;
_documenti = 0 ;
_totdocumenti = 0 ;
_totimponibile = 0 ;
_totimposta = 0 ;
_op_esenti = 0 ;
_op_non_imp = 0 ;
2006-12-13 16:22:33 +00:00
_gen_documenti = 0 ;
_gen_totdocumenti = 0 ;
_gen_totimponibile = 0 ;
_gen_totimposta = 0 ;
_gen_op_esenti = 0 ;
_gen_op_non_imp = 0 ;
//caricamento dati dalla maschera
1997-10-20 14:23:01 +00:00
_annoes = msk . get_int ( F_ANNO ) ;
_salto_pagina = ( bool ) ( msk . get ( F_CAMBIO ) = = " X " ) ;
_data_ini = msk . get ( F_DATAINI ) ;
if ( _data_ini . ok ( ) )
_flags | = ST_DATA ;
_data_fin = msk . get ( F_DATAFIN ) ;
2002-12-20 16:15:03 +00:00
_causale_ini = msk . get ( F_DACODCAUS ) ;
if ( _causale_ini ! = " " )
_flags | = ST_CAUSALE ;
1997-10-20 14:23:01 +00:00
if ( _data_fin . ok ( ) )
_flags | = ST_DATA ;
2002-12-20 16:15:03 +00:00
_causale_fin = msk . get ( F_ACODCAUS ) ;
if ( _causale_fin ! = " " )
_flags | = ST_CAUSALE ;
1997-10-20 14:23:01 +00:00
TString tipo = msk . get ( F_TIPOELENCO ) ;
if ( ( tipo = = " C " ) | | ( tipo = = " F " ) )
{
2002-05-08 16:25:49 +00:00
_codice_ini = msk . get_long ( F_CODICEINI ) ;
_codice_fin = msk . get_long ( F_CODICEFIN ) ;
1997-10-20 14:23:01 +00:00
}
else
{
2002-05-08 16:25:49 +00:00
_codice_ini = msk . get_long ( F_CODICEINI1 ) ;
_codice_fin = msk . get_long ( F_CODICEFIN1 ) ;
1997-10-20 14:23:01 +00:00
}
if ( _codice_ini ! = 0 )
_flags | = ST_CODICE ;
if ( _codice_fin ! = 0 )
_flags | = ST_CODICE ;
if ( tipo = = " E " )
{
_tipo_ini = " C " ;
_tipo_fin = " F " ;
}
else
{
_tipo_ini = tipo ;
_tipo_fin = tipo ;
}
1994-12-05 14:21:36 +00:00
}
1997-10-20 14:23:01 +00:00
break ;
default :
break ;
1994-12-05 14:21:36 +00:00
}
}
void TListaMov_application : : preprocess_header ( )
{
2008-11-19 16:01:52 +00:00
int soh = 1 ; // riga d'inizio dell'intestazione
2003-03-14 15:13:36 +00:00
TString sep ( 132 ) ;
TString key ; key . format ( " %d " , get_firm ( ) ) ;
const TString & ragsoc = cache ( ) . get ( LF_NDITTE , key , NDT_RAGSOC ) ;
1994-12-05 14:21:36 +00:00
reset_header ( ) ;
2003-03-14 15:13:36 +00:00
sep < < TR ( " Ditta " ) < < get_firm ( ) ;
1994-12-05 14:21:36 +00:00
sep < < " " < < ragsoc ;
sep . left_just ( 132 ) ;
set_header ( soh + + , ( const char * ) sep ) ;
2003-03-14 15:13:36 +00:00
sep . cut ( 0 ) < < FR ( " Data @> Pag. @# " ) ;
2000-10-03 13:45:12 +00:00
sep . right_just ( 122 ) ;
1994-12-05 14:21:36 +00:00
switch ( _tipo_lista )
{
case movimenti :
if ( _scelta_stampa = = 0 )
{
2003-03-14 15:13:36 +00:00
sep . overwrite ( TR ( " Lista movimenti " ) ) ;
1994-12-05 14:21:36 +00:00
set_header ( soh + + , ( const char * ) sep ) ;
if ( _decidi = = 2 ) // se _decidi e' 1 _annoes e' sempre uguale a zero
{
if ( _annoes ! = 0 )
{
2003-03-14 15:13:36 +00:00
set_header ( soh , FR ( " Cod. eserc.%d " ) , _annoes ) ;
1994-12-05 14:21:36 +00:00
if ( _flags & ST_DATA )
{
2003-03-14 15:13:36 +00:00
set_header ( soh , FR ( " @16gda@19g%s " ) , _data_ini . string ( ) ) ;
set_header ( soh , FR ( " @30ga@32g%s " ) , _data_fin . string ( ) ) ;
1994-12-05 14:21:36 +00:00
}
}
else // _annoes == 0
if ( _flags & ST_DATA )
{
2003-03-14 15:13:36 +00:00
set_header ( soh , FR ( " Dalla data@11g%s " ) , _data_ini . string ( ) ) ;
1994-12-05 14:21:36 +00:00
if ( _data_fin . ok ( ) )
2003-03-14 15:13:36 +00:00
set_header ( soh , FR ( " @23galla data@33g%s " ) , _data_fin . string ( ) ) ;
1994-12-05 14:21:36 +00:00
}
else
2003-03-14 15:13:36 +00:00
set_header ( soh , TR ( " Completa in ordine di data " ) ) ;
1994-12-05 14:21:36 +00:00
}
else
if ( _flags & ST_NUMERO )
{
2003-03-14 15:13:36 +00:00
set_header ( soh , FR ( " dal numero@12g%ld " ) , _numreg_ini ) ;
1994-12-05 14:21:36 +00:00
if ( _numreg_fin ! = 0 )
2003-03-14 15:13:36 +00:00
set_header ( soh , FR ( " @20gal numero@30g%ld " ) , _numreg_fin ) ;
1994-12-05 14:21:36 +00:00
}
else
2003-03-14 15:13:36 +00:00
set_header ( soh , TR ( " Completa in ordine di numero " ) ) ;
1994-12-05 14:21:36 +00:00
if ( _flags & ST_CAUSALE )
{
2003-03-14 15:13:36 +00:00
set_header ( soh , FR ( " @46gdalla causale@60g%s " ) , ( const char * ) _causale_ini ) ;
set_header ( soh + + , FR ( " @64galla causale@77g%s " ) , ( const char * ) _causale_fin ) ;
1994-12-05 14:21:36 +00:00
}
else
2003-03-14 15:13:36 +00:00
set_header ( soh + + , TR ( " tutte le causali " ) ) ;
1994-12-05 14:21:36 +00:00
if ( _flags & ST_REGISTRO )
{
2003-03-14 15:13:36 +00:00
set_header ( soh , FR ( " dal registro %s " ) , ( const char * ) _registro_ini ) ;
set_header ( soh , FR ( " @17gal registro %s " ) , ( const char * ) _registro_fin ) ;
1994-12-05 14:21:36 +00:00
}
else
2003-03-14 15:13:36 +00:00
set_header ( soh , TR ( " tutti i registri " ) ) ;
1994-12-05 14:21:36 +00:00
if ( _flags & ST_DATI_IVA )
2003-03-14 15:13:36 +00:00
set_header ( soh , FR ( " @34gstampa dati iva " ) ) ;
1994-12-05 14:21:36 +00:00
if ( _flags & ST_CONTROLLO )
2003-03-14 15:13:36 +00:00
set_header ( soh , FR ( " @50g(controllo movimenti) " ) ) ;
1994-12-05 14:21:36 +00:00
else if ( _flags & ST_SOLO_MOVERR )
2003-03-14 15:13:36 +00:00
set_header ( soh , FR ( " @50g(solo movimenti errati) " ) ) ;
else set_header ( soh , FR ( " @50g(senza controllo movimenti) " )) ;
1994-12-05 14:21:36 +00:00
if ( _flags & ST_MESS_ALLEG )
{
if ( _flags & ST_ANNO_COMP )
2003-03-14 15:13:36 +00:00
set_header ( soh , FR ( " @78gcon messaggi: data competenza, allegato iva " ) ) ;
1994-12-05 14:21:36 +00:00
else
2003-03-14 15:13:36 +00:00
set_header ( soh , FR ( " @78gcon messaggio: allegato iva " ) ) ;
1994-12-05 14:21:36 +00:00
}
else if ( _flags & ST_ANNO_COMP )
{
if ( _flags & ST_MESS_ALLEG )
2003-03-14 15:13:36 +00:00
set_header ( soh , FR ( " @78gcon messaggi: data competenza, allegato iva " ) ) ;
1994-12-05 14:21:36 +00:00
else
2003-03-14 15:13:36 +00:00
set_header ( soh , FR ( " @78gcon messaggio: data competenza " ) ) ;
1994-12-05 14:21:36 +00:00
}
2002-05-08 16:25:49 +00:00
sep . fill ( ' _ ' ) ;
1994-12-05 14:21:36 +00:00
set_header ( + + soh , ( const char * ) sep ) ;
2003-03-14 15:13:36 +00:00
set_header ( + + soh , FR ( " Rg Cod Causale@30gDescrizione@56gCodice conto@71gDescrizione conto@103gDare@120gAvere@130gSB " ) ) ;
1994-12-05 14:21:36 +00:00
}
else
{
2003-03-14 15:13:36 +00:00
sep . overwrite ( TR ( " Lista movimenti di sola prima nota " ) ) ;
1994-12-05 14:21:36 +00:00
set_header ( soh + + , ( const char * ) sep ) ;
if ( _decidi = = 2 )
{
if ( _annoes ! = 0 )
{
2003-03-14 15:13:36 +00:00
set_header ( soh , FR ( " Cod. comp. %d " ) , _annoes ) ;
1994-12-05 14:21:36 +00:00
if ( _flags & ST_DATA )
{
2003-03-14 15:13:36 +00:00
set_header ( soh , FR ( " @16gda@19g%s " ) , ( const char * ) _data_ini . string ( ) ) ;
set_header ( soh , FR ( " @30ga@32g%s " ) , ( const char * ) _data_fin . string ( ) ) ;
1994-12-05 14:21:36 +00:00
}
}
else
if ( _flags & ST_DATA )
{
2003-03-14 15:13:36 +00:00
set_header ( soh , FR ( " Dalla data@11g%s " ) , ( const char * ) _data_ini . string ( ) ) ;
set_header ( soh , FR ( " @23galla data@33g%s " ) , ( const char * ) _data_fin . string ( ) ) ;
1994-12-05 14:21:36 +00:00
}
else
2003-03-14 15:13:36 +00:00
set_header ( soh , TR ( " Completa in ordine di data " ) ) ;
1994-12-05 14:21:36 +00:00
}
else
if ( _flags & ST_NUMERO )
{
2003-03-14 15:13:36 +00:00
set_header ( soh , FR ( " @46gdal numero@57g%ld " ) , _numreg_ini ) ;
set_header ( soh , FR ( " @65gal numero@75g%ld " ) , _numreg_fin ) ;
1994-12-05 14:21:36 +00:00
}
else
2003-03-14 15:13:36 +00:00
set_header ( soh , FR ( " @46gCompleta in ordine di numero " ) ) ;
1994-12-05 14:21:36 +00:00
if ( _flags & ST_CAUSALE )
{
2003-03-14 15:13:36 +00:00
set_header ( soh , FR ( " @86gdalla causale@100g%3s " ) , ( const char * ) _causale_ini ) ;
2006-12-13 18:18:54 +00:00
set_header ( soh , FR ( " @104galla causale@117g%3s " ) , ( const char * ) _causale_fin ) ;
1994-12-05 14:21:36 +00:00
}
else
2006-12-13 18:18:54 +00:00
set_header ( soh , TR ( " @86gtutte le causali " ) ) ;
2002-05-08 16:25:49 +00:00
sep . fill ( ' _ ' ) ;
2006-12-13 18:18:54 +00:00
set_header ( + + soh , ( const char * ) sep ) ;
set_header ( + + soh , FR ( " Rg Cod Causale@30gDescrizione@56gCodice conto@71gDescrizione conto@103gDare@120gAvere@130gSB " ) ) ;
1994-12-05 14:21:36 +00:00
}
break ;
case fatture :
2003-03-14 15:13:36 +00:00
sep . overwrite ( TR ( " Lista fatture " ) ) ;
1994-12-05 14:21:36 +00:00
set_header ( soh , ( const char * ) sep ) ;
if ( _annoes ! = 0 )
{
2003-03-14 15:13:36 +00:00
set_header ( soh , FR ( " @15gCod. comp %d " ) , _annoes ) ;
1994-12-05 14:21:36 +00:00
if ( _flags & ST_DATA )
{
2003-03-14 15:13:36 +00:00
set_header ( soh , FR ( " @30gdalla data@41g%s " ) , ( const char * ) _data_ini . string ( ) ) ;
set_header ( soh , FR ( " @52galla data@62g%s " ) , ( const char * ) _data_fin . string ( ) ) ;
1994-12-05 14:21:36 +00:00
}
}
else
if ( _flags & ST_DATA )
{
2003-03-14 15:13:36 +00:00
set_header ( soh , FR ( " @15gdalla data %s " ) , ( const char * ) _data_ini . string ( ) ) ;
set_header ( soh , FR ( " @37galla data %s " ) , ( const char * ) _data_fin . string ( ) ) ;
1994-12-05 14:21:36 +00:00
}
else
2003-03-14 15:13:36 +00:00
set_header ( soh , TR ( " @15gcompleta in ordine di data " ) ) ;
1994-12-05 14:21:36 +00:00
if ( _flags & ST_CODICE )
{
2003-03-14 15:13:36 +00:00
set_header ( soh , FR ( " @74gdal codice %ld " ) , _codice_ini ) ;
set_header ( soh , FR ( " @92gal codice %ld " ) , _codice_fin ) ;
1994-12-05 14:21:36 +00:00
}
2002-05-08 16:25:49 +00:00
sep . fill ( ' _ ' ) ;
2008-11-19 16:01:52 +00:00
set_header ( + + soh , sep ) ;
2003-03-14 15:13:36 +00:00
set_header ( + + soh , FR ( " Numero Data Cod Prot. M Documento@48gCod Tp @75gTotale@101gCd Tp T O@129gNo " ) ) ;
set_header ( + + soh , FR ( " Regis. Operaz. Reg Num. L Data@41gNumero@48gCau Dc @55gDescrizione@75gDocumento@90gImponibile@101gIv Det A I@121gImposta@129gAll " ) ) ;
1994-12-05 14:21:36 +00:00
break ;
default :
break ;
2002-05-08 16:25:49 +00:00
}
2008-11-19 16:01:52 +00:00
set_header ( + + soh , sep ) ;
1994-12-05 14:21:36 +00:00
}
1999-04-06 15:34:39 +00:00
TListaMov_application : : TListaMov_application ( char tipost )
2008-11-19 16:01:52 +00:00
: _err ( 80 ) , _tipoc ( tipost )
1999-04-06 15:34:39 +00:00
{ }
1994-12-05 14:21:36 +00:00
int cg3100 ( int argc , char * argv [ ] )
{
2008-11-17 16:10:35 +00:00
const char tipo = argc > 2 ? toupper ( * argv [ 2 ] ) : ' M ' ;
1995-06-09 15:36:37 +00:00
TListaMov_application a ( tipo ) ;
1997-10-20 14:23:01 +00:00
2008-11-17 16:10:35 +00:00
const char * title = NULL ;
1995-06-09 15:36:37 +00:00
switch ( tipo )
{
2008-11-17 16:10:35 +00:00
case ' C ' : title = TR ( " Lista fatture clienti/fornitori " ) ; break ;
default : title = TR ( " Lista movimenti " ) ; break ;
1995-06-09 15:36:37 +00:00
}
a . run ( argc , argv , title ) ;
return TRUE ;
1994-12-05 14:21:36 +00:00
}