campo-sirio/fe/fe0200.cpp
guy b3ac97fea4 Patch level : 10.0
Files correlati     : fe0100a.msk fetbcon.msk fe0.exe
Ricompilazione Demo : [ ]
Commento            :
Prima versione che tenta di rispettare le specifiche in "totalone.pdf"
(nome originale del file ministeriale ottenuto tramite copia e incolla casuale)


git-svn-id: svn://10.65.10.50/branches/R_10_00@22372 c028cbd2-c16b-5b4b-a496-9718f37d4682
2011-07-05 16:06:34 +00:00

132 lines
3.4 KiB
C++
Executable File

// gestione tabelle di modulo contabilità
#include <automask.h>
#include <modtbapp.h>
///////////////////////////////////////////////////////////
// Maschera gestione contratti FE
///////////////////////////////////////////////////////////
class TFE_contract_mask : public TAutomask
{
TSheet_field& rate_sheet() const;
protected:
virtual bool on_field_event(TOperable_field &o, TField_event e, long jolly);
virtual void autoload(const TRelation& rel);
virtual void autosave(TRelation& rel) const;
public:
TFE_contract_mask() : TAutomask("fetbcon") {}
};
// L'ultimo (e unico) sheet della maschera contiene la rateizzazione delle fatture
TSheet_field& TFE_contract_mask::rate_sheet() const
{
int f;
for (f = fields()-1; f > 0 && !fld(f).is_sheet(); f--);
CHECK(f > 0, "Rate sheet non found");
return (TSheet_field&)fld(f);
}
// carica i normalmente i campi standard e la sequenza degli R* nello sheet
void TFE_contract_mask::autoload(const TRelation& rel)
{
TAutomask::autoload(rel);
TSheet_field& s = rate_sheet();
s.destroy();
const TRectype& curr = rel.curr();
char anno[] = "I0"; // I[0,1,2,3] contengono i 4 anni solari
char imp[] = "R0"; // R[0,2,4,6] contengono i 4 importi annuali
char iva[] = "R1"; // R[1,3,5,7] contengono le 4 imposte annuali
for (int i = 0; i < 4; i++)
{
TToken_string& row = s.row(i);
row.add(curr.get(anno));
row.add(curr.get(imp));
row.add(curr.get(iva));
anno[1]++; // I0 -> I1
imp[1]+=2; // R0 -> R2
iva[1]+=2; // R1 -> R3
}
}
// salva i normalmente i campi standard e la sequenza degli R* dallo sheet
void TFE_contract_mask::autosave(TRelation& rel) const
{
TAutomask::autosave(rel);
TSheet_field& s = rate_sheet();
TRectype& curr = rel.curr();
char anno[] = "I0"; // I[0,1,2,3] contengono i 4 anni solari
char imp[] = "R0"; // R[0,2,4,6] contengono i 4 importi annuali
char iva[] = "R1"; // R[1,3,5,7] contengono le 4 imposte annuali
for (int i = 0; i < s.items(); i++)
{
TToken_string& row = s.row(i);
curr.put(anno, row.get(0));
curr.put(imp, row.get());
curr.put(iva, row.get());
anno[1]++; // I0 -> I1
imp[1]+=2; // R0 -> R2
iva[1]+=2; // R1 -> R3
}
}
bool TFE_contract_mask::on_field_event(TOperable_field &o, TField_event e, long jolly)
{
switch (e)
{
case se_query_add:
case se_query_del:
return false; // Non permetto aggiunta/cancellazione di righe
default: break;
}
return true;
}
///////////////////////////////////////////////////////////
// Applicazione generica di gestione tabelle di modulo
///////////////////////////////////////////////////////////
// applicazione per la gestione delle tabelle di lavanderia
class TFE_table_app : public TTable_module_application
{
protected: // TRelation_application
virtual TMask* user_create_mask();
public:
};
// Ridefinire questo metodo per le eventuali maschere speciali
// che abbiano controlli speciali da effettuare nella on_field_event
TMask* TFE_table_app::user_create_mask()
{
TMask* m = NULL;
const TString4 name = get_relation()->file(0).name();
if (name == "CON")
m = new TFE_contract_mask;
else
m = TTable_module_application::user_create_mask();
if (m != NULL)
{
TString str; m->get_caption(str);
if (str.full())
main_app().set_title(str);
}
return m;
}
int fe0200(int argc, char* argv[])
{
TFE_table_app a;
a.run(argc, argv, TR("Tabella modulo dati rilevanti"));
return 0;
}