2017-02-15 13:29:34 +00:00
# include <automask.h>
# include <defmask.h>
# include <relapp.h>
# include <tabutil.h>
# include <filetext.h>
# include <velib.h>
# include <real.h>
# include "lilib01.h"
# include "li0.h"
# include "li0200a.h"
# define CONFIG_DICINT "DICINT.ini"
class TResDI_mask : public TAutomask
{
private :
TSheet_field & sheet ; // Sheet
public :
bool on_field_event ( TOperable_field & o , TField_event e , long jolly ) { return true ; } ;
TResDI_mask ( ) : TAutomask ( " li0200a " ) , sheet ( sfield ( DOCUMENTI_STATO ) ) { load_config ( ) ; } ;
void load_config ( ) ;
void elabTipiDoc ( TToken_string & tipi , TToken_string & stati ) ;
} ;
void TResDI_mask : : load_config ( )
{
set ( FLD_TABIVA_CODTAB , ini_get_string ( CONFIG_DITTA , " li " , " CODIVA " ) ) ;
TToken_string tipidoc ( ini_get_string ( CONFIG_DITTA , " li " , " TIPIDOC " ) ) ;
TString_array & strarr = sheet . rows_array ( ) ;
sheet . hide ( ) ;
sheet . destroy ( ) ;
for ( int i = 0 ; i < tipidoc . items ( ) ; i + + )
{
TString td = tipidoc . get ( i ) ;
TToken_string stati ( ini_get_string ( CONFIG_DITTA , " li " , td ) ) ;
for ( int j = 0 ; j < stati . items ( ) ; j + + )
{
TToken_string row , s ( stati . get ( j ) , ' , ' ) ;
row . add ( td ) ;
row . add ( s . get ( 0 ) ) ;
row . add ( s . get ( 1 ) ) ;
strarr . add ( row ) ;
}
}
sheet . force_update ( ) ;
sheet . show ( ) ;
}
void TResDI_mask : : elabTipiDoc ( TToken_string & tipi , TToken_string & stati )
{
for ( int i = 0 ; i < sheet . items ( ) ; i + + )
{
TToken_string row = sheet . row ( i ) ;
int statoin = row . get_int ( 1 ) , statoout = row . get_int ( 2 ) ;
for ( ; statoin < = statoout ; statoin + + )
{
// Immetto nelle due TToken_string i valori per gestire la classe TLista_documenti
// Per ogni posizione metto il documento e stato interessato, es. F01: da 1 a 3 -> tipi {F01|F01|F01} stati {1|2|3}
tipi . add ( row . get ( 0 ) ) ;
stati . add ( statoin ) ;
}
}
}
class TResDI_app : public TSkeleton_application
{
void elab ( TResDI_mask & m ) ;
public :
virtual void main_loop ( ) ;
} ;
void TResDI_app : : elab ( TResDI_mask & m )
{
int clifoda = m . get_long ( F_CODICE_CLIFO_DA ) , clifoa = m . get_long ( F_CODICE_CLIFO_A ) ;
// Creo le TToken_string necessarie per filtrare i documenti
TToken_string tipi , stati ;
m . elabTipiDoc ( tipi , stati ) ;
TRelation r_clifo ( LF_CLIFO ) ;
TRectype fil_from ( r_clifo . curr ( ) ) , fil_to ( r_clifo . curr ( ) ) ;
fil_from . put ( " TIPOCF " , " C " ) ;
fil_to . put ( " TIPOCF " , " C " ) ;
if ( clifoda > 0 )
fil_from . put ( " CODCF " , clifoda ) ;
if ( clifoa > 0 )
fil_to . put ( " CODCF " , clifoa ) ;
TCursor c_clifo ( & r_clifo , " " , 1 , & fil_from , & fil_to ) ;
TLog_report log ( TR ( " Resoconto plafond " ) ) ;
for ( c_clifo = 0 ; c_clifo . pos ( ) < c_clifo . items ( ) ; + + c_clifo )
{
TRectype row_clifo ( c_clifo . curr ( ) ) ;
TLi_manager currentCli ( row_clifo . get_char ( " TIPOCF " ) , row_clifo . get_long ( " CODCF " ) , TDate ( TODAY ) . year ( ) ) ; // Inizializzo l'oggetto per la gestione del plafond
if ( currentCli . hasValidPlafond ( ) )
{
real plafond = currentCli . getPlafond ( ) ;
real resPlafond = currentCli . getPlaRes ( tipi , stati ) ;
TString msg ;
msg < < " \n Dichiarazione di intento cliente N. " < < row_clifo . get_long ( " CODCF " ) < < " \n Ragione sociale: " < < row_clifo . get ( " RAGSOC " ) < < " \n Plafond totale: " < < static_cast < TCurrency > ( plafond ) . string ( ) < < " <EFBFBD> \n " ;
log . log ( 0 , msg ) ;
2017-02-16 14:39:57 +00:00
msg = TString ( " Plafond disponibile: " ) < < static_cast < TCurrency > ( resPlafond ) . string ( ) < < " <EFBFBD> " ;
log . log ( 0 , msg ) ;
msg = TString ( " Tipo dichiarazione: " ) < < ( currentCli . isSoluzione ( ) ? " Singola \n " : " A concorrenza \n " ) ;
2017-02-15 13:29:34 +00:00
log . log ( 0 , msg ) ;
}
}
log . print_or_preview ( ) ;
}
void TResDI_app : : main_loop ( )
{
TResDI_mask m ;
while ( m . run ( ) = = K_ENTER )
{
elab ( m ) ;
}
}
int li0200 ( int argc , char * argv [ ] )
{
TResDI_app a ;
a . run ( argc , argv , TR ( " Stato lettere di intento " ) ) ;
return 0 ;
}