304 lines
		
	
	
		
			7.5 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			304 lines
		
	
	
		
			7.5 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
// Handler di MarcoclaD sui campi delle maschere
 | 
						|
 | 
						|
#ifndef __CHECKS_H
 | 
						|
#include <checks.h>
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef __MASK_H
 | 
						|
#include <mask.h>
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef __MASKFLD_H
 | 
						|
#include <maskfld.h>
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef __KEYS_H
 | 
						|
#include <keys.h>
 | 
						|
#endif
 | 
						|
 | 
						|
#ifndef __STRINGS_H
 | 
						|
#include <strings.h>
 | 
						|
#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;
 | 
						|
}
 |