Files correlati : cg4.exe Ricompilazione Demo : [ ] Commento : Aggiunto il supporto delle lingue a cg4 git-svn-id: svn://10.65.10.50/trunk@10946 c028cbd2-c16b-5b4b-a496-9718f37d4682
		
			
				
	
	
		
			140 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			140 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C++
		
	
	
		
			Executable File
		
	
	
	
	
//Gestione acconti: questo assurdo prg viene usato solo se ho un acconto da versare
 | 
						|
//(cosa stabilita dal prg di calcolo acconti) e serve per versare meno, cioe'
 | 
						|
//per frodare il fisco.
 | 
						|
#include <relapp.h>
 | 
						|
#include <config.h>
 | 
						|
#include <currency.h>
 | 
						|
#include <msksheet.h>
 | 
						|
#include <prefix.h>
 | 
						|
#include <tabutil.h>
 | 
						|
#include "cglib03.h"
 | 
						|
#include "cg4700.h"
 | 
						|
 | 
						|
 | 
						|
class GesAcc_app : public TRelation_application
 | 
						|
{
 | 
						|
    TRelation*       _rel;
 | 
						|
    TMask*           _mask; 
 | 
						|
  
 | 
						|
  private:               
 | 
						|
    static bool msk_ditta(TMask_field& f, KEY k);
 | 
						|
    static bool msk_credito(TMask_field&, KEY);
 | 
						|
    static bool msk_acconto(TMask_field&, KEY);    
 | 
						|
    
 | 
						|
  protected:
 | 
						|
    virtual bool       user_create();
 | 
						|
    virtual bool       user_destroy();
 | 
						|
    virtual TRelation* get_relation() const { return _rel; }
 | 
						|
    virtual TMask*     get_mask(int mode);
 | 
						|
    virtual bool       changing_mask(int mode) {return FALSE; }
 | 
						|
};                    
 | 
						|
 | 
						|
inline GesAcc_app& app() 
 | 
						|
{
 | 
						|
  return (GesAcc_app&) main_app();
 | 
						|
}
 | 
						|
 | 
						|
bool GesAcc_app::user_create()
 | 
						|
{ 
 | 
						|
  _rel = new TRelation("%LIA");
 | 
						|
  
 | 
						|
  _mask = new TMask("cg4700a");
 | 
						|
  _mask->set_handler(F_ACCONTO, msk_acconto);
 | 
						|
  _mask->set_handler(F_CREDITO, msk_credito);
 | 
						|
  _mask->set_handler(F_CODDITTA, msk_ditta);
 | 
						|
  
 | 
						|
  set_search_field(F_CODDITTA);
 | 
						|
  
 | 
						|
  return TRUE; 
 | 
						|
}
 | 
						|
 | 
						|
bool GesAcc_app::user_destroy()
 | 
						|
{                                  
 | 
						|
  delete _rel;
 | 
						|
  delete _mask;
 | 
						|
  
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
bool GesAcc_app::msk_ditta(TMask_field& f, KEY k)
 | 
						|
{
 | 
						|
  if (f.to_check(k))
 | 
						|
  {
 | 
						|
    TFirm fr(atol(f.get()));
 | 
						|
    TMask& m = f.mask();
 | 
						|
 | 
						|
    m.set(F_CODVAL, fr.codice_valuta());
 | 
						|
  }
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
bool GesAcc_app::msk_credito(TMask_field& f, KEY k)
 | 
						|
{
 | 
						|
  if (f.to_check(k))
 | 
						|
  {
 | 
						|
    const TMask& m = f.mask();
 | 
						|
    const int anno = m.get_int(F_ANNO);
 | 
						|
    TIva_round ir;
 | 
						|
    ir.set_default_iva_mode(anno);
 | 
						|
    real n = f.get();
 | 
						|
    ir.round(n);
 | 
						|
    f.set(n.string());
 | 
						|
  }
 | 
						|
 | 
						|
  if (k == K_ENTER)
 | 
						|
  {
 | 
						|
    real credito (f.get());
 | 
						|
    real acconto (f.mask().get(F_ACCONTO));
 | 
						|
    if (credito.sign() < 0)
 | 
						|
       return f.error_box(TR("Introdurre un valore non negativo"));
 | 
						|
    if (credito > acconto)
 | 
						|
      return f.error_box(TR("Il credito non puo' essere superiore all'acconto"));
 | 
						|
  }
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
bool GesAcc_app::msk_acconto(TMask_field& f, KEY k)
 | 
						|
{
 | 
						|
  if (f.to_check(k))
 | 
						|
  {
 | 
						|
    const TMask& m = f.mask();
 | 
						|
    const int anno = m.get_int(F_ANNO);
 | 
						|
    TIva_round ir;
 | 
						|
    ir.set_default_iva_mode(anno);
 | 
						|
    real n = f.get();
 | 
						|
    ir.round(n);
 | 
						|
    f.set(n.string());
 | 
						|
  }
 | 
						|
 | 
						|
  if (k == K_ENTER)
 | 
						|
  {       
 | 
						|
    const TMask& m = f.mask();
 | 
						|
    TInteressi_IVA_table ver;
 | 
						|
    if (ver.read(m.get_int(F_ANNO),12)!=NOERR)
 | 
						|
      warning_box(FR("Errore %d in lettura tabella versamenti ed interessi."),ver.status());
 | 
						|
    const TCurrency acconto_minimo = ver.get(I_ACCONTOIVA);
 | 
						|
 | 
						|
    const TCurrency acconto = real(f.get());
 | 
						|
    if (!acconto.is_zero())
 | 
						|
    {
 | 
						|
      if (acconto.sign() < 0)
 | 
						|
        return f.error_box(TR("Introdurre un valore non negativo")); 
 | 
						|
      if (acconto < acconto_minimo)   
 | 
						|
        return f.error_box(FR("L'importo dell'acconto inserito deve essere superiore a %s"), acconto_minimo.string(TRUE));
 | 
						|
    }
 | 
						|
  }  
 | 
						|
  return TRUE;
 | 
						|
}
 | 
						|
 | 
						|
TMask* GesAcc_app::get_mask(int /* mode */)
 | 
						|
{
 | 
						|
  return _mask;
 | 
						|
}
 | 
						|
 | 
						|
int cg4700(int argc, char* argv[])
 | 
						|
{
 | 
						|
  GesAcc_app app;
 | 
						|
  app.run(argc, argv, TR("Gestione acconti"));
 | 
						|
  return 0;
 | 
						|
}
 |