b3ac97fea4
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
132 lines
3.4 KiB
C++
Executable File
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;
|
|
}
|