campo-sirio/db/db1200.cpp
alex 96f33c01ee Patch level : 4.0 979
Files correlati     : ve6.exe
Ricompilazione Demo : [ ]
Commento            :

Riportata la versione 3.1 patch 979


git-svn-id: svn://10.65.10.50/trunk@15623 c028cbd2-c16b-5b4b-a496-9718f37d4682
2007-09-17 15:33:04 +00:00

164 lines
4.6 KiB
C++
Executable File

#include <applicat.h>
#include <printer.h>
#include "dblib.h"
#include "db1200a.h"
class TStampa_anagrafica : public TSkeleton_application
{
TForm * _form;
TMask * _msk;
protected:
virtual void main_loop();
virtual bool create();
virtual bool destroy();
void configura_profilo();
public:
TStampa_anagrafica ();
virtual ~TStampa_anagrafica() {}
};
TStampa_anagrafica::TStampa_anagrafica()
{}
bool TStampa_anagrafica::create()
{
_msk = new TMask("db1200a");
_form = new TForm("db1200a");
return TSkeleton_application::create();
}
bool TStampa_anagrafica::destroy()
{
if (_form) delete _form;
if (_msk) delete _msk;
return TSkeleton_application::destroy();
}
void TStampa_anagrafica::configura_profilo()
{
int ordinamento = _msk->get_int(F_SORT);
TRectype da(LF_DIST);
TRectype a(LF_DIST);
TString sda = _msk->get(F_DISTDA);
TString sa = _msk->get(F_DISTA);
TString stemp;
da.put("CODDIST", _msk->get(F_DISTDA));
a.put("CODDIST", _msk->get(F_DISTA));
TCursor * cur = _form->cursor();
TString filtrorighe,filtrodist;
const bool r_lavorazioni = _msk->get_bool(F_RIGHE_LAVORAZIONI);
const bool r_articoli = _msk->get_bool(F_RIGHE_ARTICOLI);
const bool r_virtuali = _msk->get_bool(F_RIGHE_VIRTUALI);
const bool r_variabili = _msk->get_bool(F_RIGHE_VARIABILI);
const bool lavorazioni = _msk->get_bool(F_DIST_LAVORAZIONI);
const bool articoli = _msk->get_bool(F_DIST_ARTICOLI);
const bool virtuali = _msk->get_bool(F_DIST_VIRTUALI);
bool update=FALSE;
if (articoli)
{
filtrodist << "(CODDIST!=" << LF_ANAMAG << "->CODART)";
update=TRUE;
}
if (lavorazioni)
{
if (filtrodist.not_empty())
filtrodist << "&&";
filtrodist << "(CODDIST!=" << LF_TAB << "->CODTAB)";
update=TRUE;
}
if (virtuali)
{
if (filtrodist.not_empty())
filtrodist << "&&";
filtrodist << "(VIRTUALE==\" \")";
}
cur->setregion (da,a);
cur->setfilter ("");
if (filtrodist.not_empty())
cur->setfilter (filtrodist,update);
const bool righe = _msk->get_bool(F_DETT_RIGHE);
_form->find_field('S', odd_page, "RIGHE_SUB").enable(righe);
if (righe)
_form->find_field('B', odd_page, 1).section().set_height(2);
else
_form->find_field('B', odd_page, 1).section().set_height(1);
if (r_articoli)
{
filtrorighe << "(" << LF_RDIST << "->TIPO!=\"A\")";
}
if (r_lavorazioni)
{
if (filtrorighe.not_empty())
filtrorighe << "&&";
filtrorighe << "(" << LF_RDIST << "->TIPO!=\"L\")";
}
if (r_virtuali)
{
if (filtrorighe.not_empty())
filtrorighe << "&&";
filtrorighe << "(" << LF_RDIST << "->TIPO!=\"D\")";
}
if (r_variabili)
{
if (filtrorighe.not_empty())
filtrorighe << "&&";
filtrorighe << "(" << LF_RDIST << "->TIPO!=\"V\")";
}
if (ordinamento)
{
if (filtrorighe.not_empty())
filtrorighe << "&&";
filtrorighe.insert("(");
filtrorighe << "(" << LF_RDIST << "->SORT" << ordinamento << "!=0))";
}
// Sostituisce il file delle Righe distinte
if (righe)
{
TRelation* rel = _form->relation();
stemp= "CODDIST|NRIG";
if (ordinamento)
stemp << "|SORT" << ordinamento;
TSortedfile *sf = new TSortedfile(LF_RDIST, NULL,stemp);
sf->cursor().setfilter(filtrorighe, TRUE);
rel->replace(sf, 3);
}
}
void TStampa_anagrafica::main_loop()
{
while (_msk->run()!=K_QUIT)
{
configura_profilo();
// Fincature & altro
const int hh = 6;
const int fl = printer().formlen();
int rows[4]; // Righe orizzontali
rows[0] = hh-2;
rows[1] = hh;
rows[2] = fl-1;
rows[3] = 0;
_form->genera_intestazioni(odd_page, hh-1);
_form->genera_fincatura(odd_page, hh-2, fl-1, rows);
if (_form->cursor()->items() > 0)
_form->print();
}
}
int db1200(int argc, char* argv[])
{
TStampa_anagrafica app;
app.run(argc, argv, TR("Stampa anagrafica distinte"));
return 0;
}