2e968de2c9
git-svn-id: svn://10.65.10.50/trunk@6595 c028cbd2-c16b-5b4b-a496-9718f37d4682
271 lines
7.2 KiB
C++
Executable File
271 lines
7.2 KiB
C++
Executable File
// Handler di MarcoclaD sui campi delle maschere
|
|
|
|
#include <checks.h>
|
|
#include <mask.h>
|
|
|
|
#include "veuml.h"
|
|
#include "veuml1.h"
|
|
#include "ve0100.h"
|
|
#include "ve0100c.h"
|
|
|
|
#include "..\cg\cgpagame.h"
|
|
#include "sconti.h"
|
|
|
|
bool ora_hndl( TMask_field& field, KEY key )
|
|
|
|
{
|
|
if (field.to_check(key))
|
|
{
|
|
TFixed_string ora( field.get( ), 6 );
|
|
|
|
ora.trim( );
|
|
if (ora.not_empty() || field.required() )
|
|
{
|
|
if ( isdigit( ora[ 0 ] ) )
|
|
{
|
|
if ( ora[ 2 ] != ':')
|
|
{
|
|
if ( ora.len( ) > 4 )
|
|
ora.overwrite( ":", 2 );
|
|
else
|
|
ora.insert( ":", 2 );
|
|
}
|
|
}
|
|
const bool ok = ((isdigit(ora[0]))&&(isdigit(ora[1]))&&(isdigit(ora[3]))&&(isdigit(ora[4]))) &&
|
|
((atoi(&(ora[0]))<24)&&(atoi(&(ora[3]))<60));
|
|
if (ok )
|
|
field.set((ora));
|
|
else
|
|
return error_box("Ora errata o formato non valido");
|
|
}
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool dummy_hndl(TMask_field& field, KEY key)
|
|
{
|
|
warning_box( "Al campo %d è arrivato un KEY %d", field.dlg( ), key );
|
|
return TRUE;
|
|
}
|
|
|
|
// Handler per il calcolo delle date di pagamento
|
|
bool condpag_hndl( TMask_field& field, KEY key )
|
|
{
|
|
if ( field.to_check(key))
|
|
{
|
|
TMask& m = field.mask( );
|
|
TString16 condpag( m.get( F_CODPAG ) );
|
|
TString16 data( m.get( F_DATAINSC ) );
|
|
if ( condpag.not_empty() && data.not_empty())
|
|
{
|
|
TPagamento pag( condpag, data );
|
|
pag.set_total( 100, 10, 10 );
|
|
pag.set_rate_auto( );
|
|
const int numrate = pag.n_rate( );
|
|
for( int i = 0; i < numrate; i ++ )
|
|
m.set( F_DATASCAD1 + i, pag.data_rata(i).string());
|
|
for( ; i < 5; i ++ )
|
|
m.hide( F_DATASCAD1 + i );
|
|
}
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
// handler delle righe
|
|
|
|
void row_set_handler( TMask& m, const int field, const int index )
|
|
{
|
|
switch ( index )
|
|
{
|
|
case 1:
|
|
m.set_handler( field, dummy_hndl );
|
|
break;
|
|
default:
|
|
yesnofatal_box( FALSE, "Funzione di handler sulla riga non definita( %d ).", index );
|
|
}
|
|
}
|
|
|
|
HIDDEN TString16 curr_um;
|
|
HIDDEN real curr_fc(1.0);
|
|
|
|
bool codart_handler( TMask_field& f, KEY key )
|
|
{
|
|
// Se qualcuno cerca di modificare la maschera
|
|
if ( key == K_TAB && f.focusdirty())
|
|
{
|
|
TMask& row_mask = f.mask();
|
|
// TMask & mask = app().edit_mask();
|
|
TMask & mask = row_mask.get_sheet()->mask();
|
|
TCond_vendita & condv = app().condv();
|
|
|
|
condv.set_testa(&mask);
|
|
condv.set_riga(&row_mask);
|
|
|
|
TLocalisamfile & anamag = ((TEdit_field &) f).browse()->cursor()->file();
|
|
TLocalisamfile & umart = ((TEdit_field &) row_mask.field(FR_UMQTA)).browse()->cursor()->file();
|
|
|
|
condv.set_anamag(anamag);
|
|
condv.set_umart(umart);
|
|
TString80 codart(f.get());
|
|
anamag.setkey(1);
|
|
anamag.put("CODART", codart);
|
|
if (anamag.read() != NOERR)
|
|
{
|
|
TLocalisamfile codalt(LF_CODCORR);
|
|
|
|
codalt.setkey(2);
|
|
codalt.put("CODARTALT", codart);
|
|
if (codalt.read() == NOERR)
|
|
{
|
|
codart = codalt.get("CODART");
|
|
anamag.zero();
|
|
anamag.put("CODART", codart);
|
|
if (anamag.read() == NOERR)
|
|
f.set(codart);
|
|
}
|
|
}
|
|
|
|
if (anamag.good())
|
|
{
|
|
const TString16 lingua = mask.get(F_CODLIN);
|
|
const TString codart(row_mask.get(FR_CODART));
|
|
TString desc(anamag.get("DESCR"));
|
|
|
|
if (lingua.not_empty())
|
|
{
|
|
TLocalisamfile deslin(LF_DESLIN);
|
|
|
|
deslin.setkey(2);
|
|
deslin.put("CODART", codart);
|
|
deslin.put("CODLIN", lingua);
|
|
if (deslin.read() == NOERR)
|
|
desc = deslin.get("DESCR");
|
|
}
|
|
row_mask.set(FR_DESCR, desc);
|
|
|
|
umart.setkey(1);
|
|
umart.zero();
|
|
umart.put("CODART", codart);
|
|
if (umart.read(_isgteq) == NOERR && codart == umart.get("CODART"))
|
|
{
|
|
curr_um = umart.get("UM");
|
|
curr_fc = umart.get_real("FC");
|
|
}
|
|
else
|
|
{
|
|
curr_um.cut(0);
|
|
curr_fc = 1.0;
|
|
}
|
|
row_mask.set(FR_UMQTA, curr_um);
|
|
}
|
|
|
|
condv.ricerca();
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool umart_handler( TMask_field& f, KEY key )
|
|
{
|
|
// Se qualcuno cerca di modificare la maschera
|
|
if ( key == K_TAB && f.focusdirty())
|
|
{
|
|
TMask& row_mask = f.mask( );
|
|
// TMask & mask = app().edit_mask();
|
|
TMask & mask = row_mask.get_sheet()->mask();
|
|
TLocalisamfile & anamag = ((TEdit_field &) row_mask.field(FR_CODART)).browse()->cursor()->file();
|
|
TLocalisamfile & umart = ((TEdit_field &) f).browse()->cursor()->file();
|
|
TCond_vendita & condv = app().condv();
|
|
|
|
condv.set_testa(&mask);
|
|
condv.set_riga(&row_mask);
|
|
condv.set_anamag(anamag);
|
|
condv.set_umart(umart);
|
|
condv.ricerca(FALSE);
|
|
|
|
const TString16 um(f.get());
|
|
real fc(1.0);
|
|
|
|
if (um.not_empty() && curr_um.not_empty() && um != curr_um)
|
|
{
|
|
umart.setkey(2);
|
|
umart.put("CODART", row_mask.get(FR_CODART));
|
|
umart.put("UM", um);
|
|
if (umart.read() == NOERR)
|
|
{
|
|
real qta(row_mask.get_real(FR_QTA));
|
|
qta *= curr_fc;
|
|
fc = umart.get_real("FC");
|
|
qta /= fc;
|
|
row_mask.set(FR_QTA, qta);
|
|
}
|
|
|
|
}
|
|
curr_um = um;
|
|
curr_fc = fc;
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool descr_handler( TMask_field& f, KEY key )
|
|
{
|
|
if (key == K_TAB && f.focusdirty())
|
|
{
|
|
const TString s(f.get());
|
|
if (s.find('\n') < 0)
|
|
{
|
|
TLocalisamfile & anamag = ((TEdit_field &) f).browse()->cursor()->file();
|
|
|
|
anamag.zero();
|
|
anamag.setkey(2);
|
|
anamag.put("DESCR", ((TZoom_field &) f).get_first_line());
|
|
if (anamag.read() == NOERR)
|
|
{
|
|
f.mask().set(FR_CODART, anamag.get("CODART"));
|
|
f.mask().field(FR_CODART).set_dirty();
|
|
f.mask().check_field(FR_CODART);
|
|
}
|
|
}
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool qta_handler( TMask_field& f, KEY key )
|
|
{
|
|
// Se qualcuno cerca di modificare la maschera
|
|
if ( key == K_TAB && f.focusdirty())
|
|
{
|
|
TMask& row_mask = f.mask( );
|
|
// TMask & mask = app().edit_mask();
|
|
TMask & mask = row_mask.get_sheet()->mask();
|
|
TLocalisamfile & anamag = ((TEdit_field &) row_mask.field(FR_CODART)).browse()->cursor()->file();
|
|
TLocalisamfile & umart = ((TEdit_field &) row_mask.field(FR_UMQTA)).browse()->cursor()->file();
|
|
TCond_vendita & condv = app().condv();
|
|
|
|
condv.set_testa(&mask);
|
|
condv.set_riga(&row_mask);
|
|
condv.set_anamag(anamag);
|
|
condv.set_umart(umart);
|
|
condv.ricerca(FALSE);
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
bool cod_handler( TMask_field& f, KEY key )
|
|
{
|
|
if ( key == K_TAB && f.focusdirty())
|
|
{
|
|
TMask& row_mask = f.mask( );
|
|
TMask & mask = row_mask.get_sheet()->mask();
|
|
real cambio = mask.get(F_CAMBIO);
|
|
|
|
if (cambio != 0.0)
|
|
{
|
|
real prezzo = row_mask.get(FR_PREZZO);
|
|
|
|
prezzo /= mask.get_real(F_CAMBIO);
|
|
row_mask.set(FR_PREZZO, prezzo);
|
|
}
|
|
}
|
|
return TRUE;
|
|
}
|