// Handler di MarcoclaD sui campi delle maschere #ifndef __CHECKS_H #include #endif #ifndef __MASK_H #include #endif #ifndef __MASKFLD_H #include #endif #ifndef __KEYS_H #include #endif #ifndef __STRINGS_H #include #endif #ifndef __VEUML_H #include "veuml.h" #endif #ifndef __VEUML1_H #include "veuml1.h" #endif #ifndef __VE0100_H #include "ve0100.h" #endif #ifndef __VE0100C_H #include "ve0100c.h" #endif #ifndef __PAGAMENT_H #include "..\cg\pagament.h" #endif #ifndef __SCONTI_H #include "sconti.h" #endif 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; }