campo-sirio/ps/ps1001300.cpp
luca 687c9a462b Patch level :10.0
Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
Aggiunto ps1001200 (è il vecchio crpa1)
Aggiunto ed iniziato il ps1001300 (nuovo programma per la variazione del budget)


git-svn-id: svn://10.65.10.50/trunk@20362 c028cbd2-c16b-5b4b-a496-9718f37d4682
2010-04-20 15:02:03 +00:00

133 lines
3.2 KiB
C++
Executable File

#include <applicat.h>
#include <automask.h>
#include <textset.h>
#include "../ca/rmovana.h"
#include "ps1001.h"
#include "ps1001300a.h"
///////////////////////////////////////////////////////////
// TAutomask
///////////////////////////////////////////////////////////
class TVariazione_budget_mask : public TAutomask
{
protected:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
void carica_rmovana();
public:
TVariazione_budget_mask();
};
TVariazione_budget_mask::TVariazione_budget_mask() :TAutomask ("ps1001300a")
{
}
bool TVariazione_budget_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
switch (o.dlg())
{
case F_CODCMS:
{
if (e == fe_modify)
carica_rmovana();
}
break;
default:
break;
}
return true;
}
void TVariazione_budget_mask::carica_rmovana()
{
TWait_cursor hourglass;
TString query;
query << "USE RMOVANA KEY 4\n";
query << "SELECT ((MOVANA.TIPOMOV=\"P\")||(MOVANA.TIPOMOV=\"V\"))\n";
query << "JOIN MOVANA INTO NUMREG==NUMREG\n";
query << "FROM CODCMS=#CODCMS\n";
query << "TO CODCMS=#CODCMS\n";
//instanzio un TISAM_recordset sulle rmovana
TISAM_recordset rmovana(query);
rmovana.set_var("#CODCMS", get(F_CODCMS));
const long rmovana_items = rmovana.items();
//recupero sheet e realtiva mashera di riga
TSheet_field& sf_righe = sfield(F_RIGHE);
TMask& msk = sf_righe.sheet_mask();
sf_righe.destroy();
//per ogni riga del recordset va ad aggiornare lo sheet sulla maschera (aggiunge la riga)
for (bool ok = rmovana.move_first(); ok; ok = rmovana.move_next())
{
TToken_string& row = sf_righe.row(-1);
row.add(rmovana.get(RMOVANA_CODCCOSTO).as_string(), 0);
row.add(rmovana.get(RMOVANA_CODFASE).as_string(), 1);
row.add(rmovana.get(RMOVANA_CODCONTO).as_string(), 2);
real valore = rmovana.get(RMOVANA_IMPORTO).as_real();
const char sezione = rmovana.get(RMOVANA_SEZIONE).as_string()[0];
TImporto importo(sezione, valore);
importo.normalize('D');
valore = importo.valore();
TString str_valore;
str_valore << valore;
row.add(str_valore, 3);
row.add(rmovana.get(RMOVANA_NUMREG).as_int(), 4);
row.add(rmovana.get(RMOVANA_NUMRIG).as_int(), 5);
row.add(rmovana.get(RMOVANA_DESCR).as_string(), 6);
}
sf_righe.force_update();
}
///////////////////////////////////////
// TSkeleton_application
///////////////////////////////////////
class TVariazione_budget : public TSkeleton_application
{
virtual bool check_autorization() const { return false; }
virtual const char * extra_modules() const { return "ca"; }
TVariazione_budget_mask* _msk;
protected:
public:
virtual bool create();
virtual bool destroy();
virtual void main_loop();
TVariazione_budget() {};
};
bool TVariazione_budget::create()
{
_msk = new TVariazione_budget_mask();
return TSkeleton_application::create();
}
bool TVariazione_budget::destroy()
{
delete _msk;
return TApplication::destroy();
}
void TVariazione_budget::main_loop()
{
KEY tasto;
tasto = _msk->run();
}
int ps1001300 (int argc, char* argv[])
{
TVariazione_budget main_app;
main_app.run(argc, argv, TR("Variazione budget"));
return true;
}