176 lines
3.6 KiB
C++
176 lines
3.6 KiB
C++
|
#include <applicat.h>
|
||
|
#include <automask.h>
|
||
|
#include <defmask.h>
|
||
|
#include <relation.h>
|
||
|
#include <reprint.h>
|
||
|
|
||
|
#include "ps0920.h"
|
||
|
#include "ps0920100a.h"
|
||
|
|
||
|
#include <rdoc.h>
|
||
|
|
||
|
class TMaskPs09201 : public TAutomask
|
||
|
{
|
||
|
TCursor_sheet * _sht;
|
||
|
bool _select_changed;
|
||
|
|
||
|
protected:
|
||
|
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||
|
void update_sheet();
|
||
|
|
||
|
public:
|
||
|
TCursor_sheet & sheet() const { return *_sht;}
|
||
|
TMaskPs09201();
|
||
|
virtual ~TMaskPs09201();
|
||
|
};
|
||
|
|
||
|
TMaskPs09201::TMaskPs09201()
|
||
|
: TAutomask("ps0920100a"), _sht(NULL)
|
||
|
{
|
||
|
((TButton_field&) field(DLG_SELECT)).set_exit_key(0);
|
||
|
_select_changed = true;
|
||
|
}
|
||
|
|
||
|
TMaskPs09201::~TMaskPs09201()
|
||
|
{
|
||
|
if (_sht != NULL)
|
||
|
delete _sht;
|
||
|
}
|
||
|
|
||
|
bool TMaskPs09201::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||
|
{
|
||
|
const int id = o.dlg();
|
||
|
switch (id)
|
||
|
{
|
||
|
case F_NUM:
|
||
|
case F_ANNO:
|
||
|
case F_CODCLI:
|
||
|
_select_changed = true;
|
||
|
break;
|
||
|
case DLG_SELECT:
|
||
|
if (e == fe_button)
|
||
|
{
|
||
|
if (_select_changed)
|
||
|
update_sheet();
|
||
|
_select_changed = false;
|
||
|
_sht->run();
|
||
|
}
|
||
|
break;
|
||
|
default:
|
||
|
break;
|
||
|
}
|
||
|
return TRUE;
|
||
|
}
|
||
|
|
||
|
void TMaskPs09201::update_sheet()
|
||
|
{
|
||
|
|
||
|
if (_sht != NULL)
|
||
|
{
|
||
|
delete _sht;
|
||
|
_sht = NULL;
|
||
|
}
|
||
|
|
||
|
_select_changed = false;
|
||
|
|
||
|
TRelation * r = new TRelation(LF_RIGHEDOC);
|
||
|
TRectype from(r->curr());
|
||
|
const long codcli = get_long(F_CODCLI);
|
||
|
TString codartfrom; codartfrom.format("%03ld", codcli);
|
||
|
|
||
|
from.put(RDOC_CODNUM, get(F_NUM));
|
||
|
from.put(RDOC_ANNO, get(F_ANNO));
|
||
|
from.put(RDOC_PROVV, "D");
|
||
|
from.put(RDOC_CODART, codartfrom);
|
||
|
|
||
|
TRectype to(from);
|
||
|
|
||
|
TString codartto; codartto.format("%03ld", codcli + 1);
|
||
|
to.put(RDOC_CODART, codartto);
|
||
|
TCursor * c = new TSorted_cursor(r, "CODNUM|NDOC|NRIGA", "RIGAEVASA!=\"X\"", 2, &from, &to);
|
||
|
_sht = new TCursor_sheet(c, " |CODNUM|NDOC|NRIGA|DATACONS|CODART|DESCR", "Selezione articoli",
|
||
|
"@1|Ordine@6|N.Doc.@7|N.Riga@6|Data\nConsegna@10|Articolo@20|Descr@50",0,1);
|
||
|
_sht->uncheck(-1);
|
||
|
}
|
||
|
|
||
|
class TStampaProduzionePs0920 : public TSkeleton_application
|
||
|
{
|
||
|
TMaskPs09201 * _mask;
|
||
|
virtual bool check_autorization() const {return false;}
|
||
|
virtual const char * extra_modules() const {return "ve";}
|
||
|
|
||
|
|
||
|
protected:
|
||
|
virtual void main_loop();
|
||
|
virtual bool create();
|
||
|
|
||
|
public:
|
||
|
const TMaskPs09201 & mask() const {return *_mask;}
|
||
|
virtual ~TStampaProduzionePs0920();
|
||
|
};
|
||
|
|
||
|
void TStampaProduzionePs0920::main_loop()
|
||
|
{
|
||
|
while (_mask->run() == K_ENTER)
|
||
|
{
|
||
|
TReport_book book;
|
||
|
TCursor_sheet & s = _mask->sheet();
|
||
|
TCursor * cur = s.cursor();
|
||
|
const long items = cur->items();
|
||
|
|
||
|
for (long pos= 0L; pos <items; pos++)
|
||
|
{
|
||
|
if (s.checked(pos))
|
||
|
{
|
||
|
*cur = pos;
|
||
|
TRectype & rec = cur->curr();
|
||
|
TReport rep;
|
||
|
TFilename report_name("OrdineProd.rep");
|
||
|
|
||
|
report_name.custom_path();
|
||
|
if (rep.load(report_name))
|
||
|
{
|
||
|
TRecordset * r = rep.recordset();
|
||
|
|
||
|
if (r != NULL)
|
||
|
{
|
||
|
TVariant var;
|
||
|
|
||
|
var = _mask->get(F_NUM);
|
||
|
r->set_var("#S_NUM", var);
|
||
|
var = rec.get(RDOC_ANNO);
|
||
|
r->set_var("#S_ANNO", var);
|
||
|
var = rec.get(RDOC_NDOC);
|
||
|
r->set_var("#S_NDOC", var);
|
||
|
var = rec.get(RDOC_NRIGA);
|
||
|
r->set_var("#S_NRIGA", var);
|
||
|
}
|
||
|
}
|
||
|
book.add(rep);
|
||
|
}
|
||
|
}
|
||
|
if (book.pages() > 0)
|
||
|
book.print_or_preview();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
bool TStampaProduzionePs0920::create()
|
||
|
{
|
||
|
_mask = new TMaskPs09201;
|
||
|
return TSkeleton_application:: create();
|
||
|
}
|
||
|
|
||
|
TStampaProduzionePs0920::~TStampaProduzionePs0920()
|
||
|
{
|
||
|
delete _mask;
|
||
|
}
|
||
|
|
||
|
TStampaProduzionePs0920 & app() { return (TStampaProduzionePs0920&) main_app();}
|
||
|
|
||
|
int ps0920100(int argc, char* argv[])
|
||
|
{
|
||
|
TStampaProduzionePs0920 a;
|
||
|
a.run(argc, argv, "Stampa ordini di produzione");
|
||
|
return 0;
|
||
|
}
|