campo-sirio/ve/tclifor.cpp
gianluca 662b7d8bba Creato programma stampa anagrafica magazzino, modificati prec. prog. di vendita
git-svn-id: svn://10.65.10.50/trunk@1817 c028cbd2-c16b-5b4b-a496-9718f37d4682
1995-09-12 09:08:09 +00:00

183 lines
5.1 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 );
};
void TData_picker::set( TMask& m, const int mskfield, const TString& value )
{
if( present( m, mskfield ) )
{
m.set( mskfield, value, TRUE );
m.field( mskfield ).check( );
}
};
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& m, bool onload )
{
// Setta i campi che appartengono al file LF_CLIFO
bool occas = occasionale( );
show( m, F_OCFPI, occas );
show( m, 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" );
// Questo nonb va qua, ma nella read
set( m, F_DATAINSC, m.get( F_DATADOC ) );
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 ( ) )
{
// set( m, F_COFI, "" );
// set( m, F_PAIVA, "" );
set( m, F_OCFPI, occas_mask( ).get( O_CODICE ) );
set( m, F_RAGSOC, occas_mask( ).get( O_RAGSOC ) );
set( m, F_INDCF, occas_mask( ).get( O_INDIRIZZO ) );
set( m, F_CIVCF, occas_mask( ).get( O_NUMERO ) );
set( m, F_CAPCF, occas_mask( ).get( O_CAP ) );
set( m, F_COMCF, occas_mask( ).get( O_COMUNE ) );
set( m, F_STATOCF, occas_mask( ).get( O_STATO ) );
}
else
{
set( m, F_COFI, LF_CLIFO, "COMCF" );
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" );
set( m, F_STATOCF, LF_CLIFO, "STATOCF" );
}
}
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;
}