campo-sirio/cg/cg4700.cpp
alex 657dd8b432 Patch level : xx.7.054
Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
Riportata la versione 1.7 patch 054 sul main trunk


git-svn-id: svn://10.65.10.50/trunk@9658 c028cbd2-c16b-5b4b-a496-9718f37d4682
2001-05-01 08:17:07 +00:00

129 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>
#ifndef __CGLIB03_H
#include "cglib03.h"
#endif
#include "cg4700.h"
class GesAcc_app : public TRelation_application
{
TRelation* _rel;
TMask* _mask;
TTable* _lim;
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; }
//virtual int rewrite(const TMask&);
//virtual void init_query_mode (TMask&);
//virtual void init_query_insert_mode (TMask&);
};
inline GesAcc_app& app()
{
return (GesAcc_app&) main_app();
}
bool GesAcc_app::user_create()
{
_lim = new TTable("LIM");
_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 _mask;
delete _lim;
delete _rel;
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 (k == K_ENTER)
{
real credito (f.get());
real acconto (f.mask().get(F_ACCONTO));
if (credito.sign() < 0)
return f.error_box("Introdurre un valore non negativo");
if (credito > acconto)
return f.error_box("Il credito non puo' essere superiore all'acconto");
if (acconto.is_zero())
if (!credito.is_zero())
return f.error_box("Non e' possibile indicare il credito se l'acconto e' nullo");
}
return TRUE;
}
bool GesAcc_app::msk_acconto(TMask_field& f, KEY k)
{
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("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("Introdurre un valore non negativo");
if (acconto < acconto_minimo)
return f.error_box("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, "Gestione acconti");
return 0;
}