33712eacad
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;
|
|
}
|