265 lines
7.9 KiB
C++
Executable File
265 lines
7.9 KiB
C++
Executable File
#ifndef __TCLIFOR_H
|
|
#include "tclifor.h"
|
|
#endif
|
|
|
|
#ifndef __VEUML1_H
|
|
#include "veuml1.h"
|
|
#endif
|
|
|
|
#ifndef __VE1000O_H
|
|
#include "ve1000o.h"
|
|
#endif
|
|
|
|
const TString& TData_picker::get( const TString& table, const TString& codtab, const TString& field )
|
|
{
|
|
if( table != _tablename )
|
|
{
|
|
delete _table;
|
|
_table = new TTable( table );
|
|
_tablename = table;
|
|
}
|
|
if( codtab != _table->curr( ).get( "CODTAB" ) )
|
|
{
|
|
_table->zero( );
|
|
_table->put( "CODTAB", codtab );
|
|
_table->read( );
|
|
}
|
|
return _table->get( field );
|
|
};
|
|
|
|
const TString& TData_picker::get( const int file, const TString& fieldname )
|
|
{
|
|
return lfile( file ).get( fieldname );
|
|
}
|
|
|
|
int TData_picker::get_int( const int file, const TString& fieldname )
|
|
{
|
|
return lfile( file ).get_int( fieldname );
|
|
}
|
|
|
|
long TData_picker::get_long( const int file, const TString& fieldname )
|
|
{
|
|
return lfile( file ).get_long( fieldname );
|
|
}
|
|
|
|
bool TData_picker::get_bool( const int file, const TString& fieldname )
|
|
{
|
|
return lfile( file ).get_bool( fieldname );
|
|
}
|
|
|
|
int TCliFor::write_occas( )
|
|
{
|
|
if( !occasionale( ) )
|
|
return NOERR;
|
|
TRelation occas( LF_OCCAS );
|
|
occas_mask( ).autosave( &occas );
|
|
return occas.write( );
|
|
}
|
|
|
|
TCliFor::TCliFor( ) : TData_picker( LF_CLIFO ), _occas_mask( "ve1000o" )
|
|
{
|
|
_occas_mask.set_handler( O_CODICE, occas_code_handler );
|
|
add( LF_CFVEN, "TIPOCF=TIPOCF|CODCF=CODCF" );
|
|
}
|
|
|
|
void TCliFor::load( const char tipocf, const long codcf, const TString& ocfpi )
|
|
{
|
|
_tipocf = tipocf;
|
|
_codcf = codcf;
|
|
zero( );
|
|
curr( ).put( "TIPOCF", tipocf );
|
|
curr( ).put( "CODCF", codcf );
|
|
lfile( ).setkey( 1 );
|
|
if( read( ) != NOERR )
|
|
yesnofatal_box( "Il %s %d non è stato trovato!", tipocf == 'C'?"cliente":"fornitore", codcf );
|
|
_occas = curr().get_bool( "OCCAS" );
|
|
if ( occasionale( ) )
|
|
{
|
|
TRelation occrel( LF_OCCAS );
|
|
occrel.curr( ).zero( );
|
|
occrel.curr( ).put( "CFPI", ocfpi );
|
|
occrel.read( );
|
|
occas_mask( ).autoload( &occrel );
|
|
}
|
|
}
|
|
|
|
void TCliForVendite::update_mask( TMask_vendite& m, bool onload )
|
|
{
|
|
TString16 stato;
|
|
|
|
// Setta i campi che appartengono al file LF_CLIFO
|
|
bool occas = occasionale( );
|
|
m.show( F_OCFPI, occas );
|
|
m.show( F_OCCASEDIT, occas );
|
|
// In forse per l'Occasionale, sicuri per il Normale
|
|
m.show( F_COFI, !occas );
|
|
m.show( F_STATOPAIVA, !occas );
|
|
m.show( F_PAIVA, !occas );
|
|
set( m, F_RAGSOC, LF_CLIFO, "RAGSOC" );
|
|
if( !onload )
|
|
{
|
|
set( m, F_CODVAL, LF_CLIFO, "CODVAL" );
|
|
set( m, F_CODLIN, LF_CLIFO, "CODLIN" );
|
|
set( m, F_CODPAG, LF_CLIFO, "CODPAG" );
|
|
set( m, F_CODABIA, LF_CLIFO, "CODABI" );
|
|
set( m, F_CODCABA, LF_CLIFO, "CODCAB" );
|
|
// Setta i campi che appartengono al file LF_CFVEN
|
|
set( m, F_CODABIP, LF_CFVEN, "CODABIPR" );
|
|
set( m, F_CODCABP, LF_CFVEN, "CODCABPR" );
|
|
set( m, F_RAGGR, LF_CFVEN, "RAGGDOC" );
|
|
set( m, F_CODINDSP, LF_CFVEN, "CODINDSP" );
|
|
set( m, F_CODAG, LF_CFVEN, "CODAG" );
|
|
set( m, F_CODSPMEZZO, LF_CFVEN, "CODSPMEZZO" );
|
|
set( m, F_CODPORTO, LF_CFVEN, "CODPORTO" );
|
|
set( m, F_CODNOTESP1, LF_CFVEN, "CODNOTESP1" );
|
|
set( m, F_CODNOTESP2, LF_CFVEN, "CODNOTESP2" );
|
|
set( m, F_CODVETT1, LF_CFVEN, "CODVETT1" );
|
|
set( m, F_CODVETT2, LF_CFVEN, "CODVETT2" );
|
|
set( m, F_CODVETT3, LF_CFVEN, "CODVETT3" );
|
|
set( m, F_SPESEINC, LF_CFVEN, "ADDSPINC" );
|
|
set( m, F_ADDBRB, LF_CFVEN, "ADDBOLLIRB" );
|
|
set( m, F_ADDBTR, LF_CFVEN, "ADDBOLLITR" );
|
|
}
|
|
if ( occasionale ( ) )
|
|
{
|
|
m.set( F_COFI, "" );
|
|
m.set( F_PAIVA, "" );
|
|
m.set( F_OCFPI, occas_mask( ).get( O_CODICE ) );
|
|
m.set( F_RAGSOC, occas_mask( ).get( O_RAGSOC ) );
|
|
m.set( F_INDCF, occas_mask( ).get( O_INDIRIZZO ) );
|
|
m.set( F_CIVCF, occas_mask( ).get( O_NUMERO ) );
|
|
m.set( F_CAPCF, occas_mask( ).get( O_CAP ) );
|
|
m.set( F_COMCF, occas_mask( ).get( O_COMUNE ) );
|
|
m.set( F_STATOCF, stato = occas_mask( ).get( O_STATO ) );
|
|
}
|
|
else
|
|
{
|
|
set( m, F_COFI, LF_CLIFO, "COFI" );
|
|
set( m, F_INDCF, LF_CLIFO, "INDCF" );
|
|
set( m, F_CIVCF, LF_CLIFO, "CIVCF" );
|
|
set( m, F_STATOPAIVA, LF_CLIFO, "STATOPAIV" );
|
|
set( m, F_PAIVA, LF_CLIFO, "PAIV" );
|
|
set( m, F_LOCALITACF, LF_CLIFO, "LOCALITACF" );
|
|
set( m, F_CAPCF, LF_CLIFO, "CAPCF" );
|
|
set( m, F_COMCF, LF_CLIFO, "COMCF" );
|
|
stato = get( LF_CLIFO, "STATOCF" );
|
|
m.set( F_STATOCF, stato );
|
|
}
|
|
if ( !stato.blank( ) )
|
|
m.set( F_DESSTATOCF, get( "%STA", stato, "S0" ) );
|
|
TString16 tmpstr( m.get( F_CODPAG ) );
|
|
if( !tmpstr.blank( ) )
|
|
{
|
|
m.field( F_CODPAG ).on_hit( );
|
|
m.field( F_CODPAG ).check( );
|
|
}
|
|
tmpstr = m.get( F_CODLIN );
|
|
if( !tmpstr.blank( ) )
|
|
m.field( F_CODLIN ).check( );
|
|
imposta_dati_comune( m );
|
|
imposta_indirizzo_spedizione( m );
|
|
}
|
|
|
|
void TCliFor::edita_occasionale( )
|
|
{
|
|
CHECK( occasionale( ), "Impossibile editare come occasionale un cliente non occasionale!" );
|
|
_occas_mask.run( );
|
|
};
|
|
|
|
bool TCliFor::occas_code_handler(TMask_field& f, KEY key)
|
|
{
|
|
if (key == K_TAB)
|
|
{
|
|
const char* code = f.get();
|
|
if (*code)
|
|
{
|
|
TRelation occas(LF_OCCAS);
|
|
occas.lfile().put("CFPI", code);
|
|
if (occas.read(_isequal) == NOERR)
|
|
{
|
|
f.mask().autoload(&occas);
|
|
f.mask().send_key(K_TAB, O_COMUNE); // Forza decodifica comuni
|
|
f.mask().send_key(K_TAB, O_COMUNENAS);
|
|
}
|
|
}
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
void TCliForVendite::imposta_dati_comune( TMask_vendite& m )
|
|
{
|
|
TLocalisamfile comuni(LF_COMUNI);
|
|
comuni.setkey( 1 );
|
|
if( occasionale( ) )
|
|
{
|
|
comuni.put( "COM", occas_mask( ).get( O_COMUNE ));
|
|
comuni.put( "STATO", occas_mask( ).get( O_STATO ) );
|
|
}
|
|
else
|
|
{
|
|
comuni.put( "COM", get( LF_CLIFO, "COMCF" ));
|
|
comuni.put( "STATO", get( LF_CLIFO, "STATOCF" ) );
|
|
}
|
|
comuni.read( );
|
|
m.set( F_DENCOM, comuni.get( "DENCOM" ) );
|
|
m.set( F_PROVCOM, comuni.get( "PROVCOM" ) );
|
|
}
|
|
|
|
void TCliForVendite::imposta_indirizzo_spedizione( TMask_vendite& m )
|
|
{
|
|
TString16 stato;
|
|
if( occasionale( ) )
|
|
{
|
|
m.set( F_CODINDSP, "" );
|
|
m.disable( F_CODINDSP );
|
|
m.set( F_RAGSOCSP, occas_mask( ).get( O_RAGSOC ) );
|
|
m.set( F_INDSP, occas_mask( ).get( O_INDIRIZZO ) );
|
|
m.set( F_CIVSP, occas_mask( ).get( O_NUMERO ) );
|
|
// Sugli occasionali non c'è la località
|
|
m.set( F_LOCALITASP, "" );
|
|
m.set( F_CAPSP, occas_mask( ).get( O_CAP ) );
|
|
m.set( F_COMSP, occas_mask( ).get( O_COMUNE ) );
|
|
m.set( F_STATOSP, stato = occas_mask( ).get( O_STATO ) );
|
|
}
|
|
else
|
|
{
|
|
TString16 codindsp( m.get( F_CODINDSP ) );
|
|
if( codindsp.blank( ) )
|
|
{
|
|
m.set( F_RAGSOCSP, "" );
|
|
m.set( F_INDSP, "" );
|
|
m.set( F_CIVSP, "" );
|
|
m.set( F_LOCALITASP, "" );
|
|
m.set( F_CAPSP, "" );
|
|
m.set( F_COMSP, "" );
|
|
m.set( F_STATOSP, "" );
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
TLocalisamfile indsped( LF_INDSP );
|
|
indsped.setkey( 1 );
|
|
indsped.put( "TIPOCF", _tipocf );
|
|
indsped.put( "CODCF", _codcf );
|
|
indsped.put( "CODIND", atoi( codindsp ) );
|
|
if( indsped.read( ) != NOERR )
|
|
yesnofatal_box( "Indirizzo di spedizione non trovato!" );
|
|
m.set( F_RAGSOCSP, indsped.get( "RAGSOC" ) );
|
|
m.set( F_INDSP, indsped.get( "INDIR" ) );
|
|
m.set( F_CIVSP, indsped.get( "CIV" ) );
|
|
m.set( F_LOCALITASP, indsped.get( "LOCALITA" ) );
|
|
m.set( F_CAPSP, indsped.get( "CAP" ) );
|
|
m.set( F_COMSP, indsped.get( "COM" ) );
|
|
m.set( F_STATOSP, stato = indsped.get( "STATO" ) );
|
|
}
|
|
}
|
|
if ( !stato.blank( ) )
|
|
m.set( F_DESSTATOSP, get( "%STA", stato, "S0" ) );
|
|
TLocalisamfile comuni(LF_COMUNI);
|
|
comuni.setkey( 1 );
|
|
comuni.put( "COM", m.get( F_COMSP ) );
|
|
comuni.put( "STATO", m.get( F_STATOSP ) );
|
|
comuni.read( );
|
|
m.set( F_DENCOMSP, comuni.get( "DENCOM" ) );
|
|
m.set( F_PROVCOMSP, comuni.get( "PROVCOM" ) );
|
|
} |