campo-sirio/ps/ps0920100.cpp
bonazzi d327a5c85f Patch level : 12.0 no patch
Files correlati     : 
Commento            :

Aggiornati programmi personalizzati per poterli compilare.
Manca ps0883

git-svn-id: svn://10.65.10.50/branches/R_10_00@23224 c028cbd2-c16b-5b4b-a496-9718f37d4682
2016-09-08 20:06:48 +00:00

182 lines
3.9 KiB
C++
Executable File

#include <applicat.h>
#include <automask.h>
#include <defmask.h>
#include <relation.h>
#include <reprint.h>
#include <sheet.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;
TMaskPs09201();
virtual ~TMaskPs09201();
};
TCursor_sheet& TMaskPs09201::sheet() const
{
if (_sht == NULL) // Non si sa mai!
((TMaskPs09201*)this)->update_sheet();
return *_sht;
}
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
{
virtual bool check_autorization() const { return false; }
virtual const char* extra_modules() const { return "ve"; }
protected:
virtual void main_loop();
virtual bool create();
public:
virtual ~TStampaProduzionePs0920();
};
void TStampaProduzionePs0920::main_loop()
{
TMaskPs09201 m;
while (m.run() == K_ENTER)
{
TCursor_sheet& s = m.sheet();
if (s.one_checked())
{
TReport_book book;
TCursor & cur = *s.cursor();
TReport rep;
if (m.get_bool(F_PAGEBREAK))
rep.load("OrdineProdSP.rep");
else
rep.load("OrdineProd.rep");
const long items = cur.items();
for (long pos = 0L; pos < items; pos++)
{
if (s.checked(pos))
{
cur = pos;
const TRectype & rec = cur.curr();
TRecordset & r = *rep.recordset();
TVariant var;
var = rec.get(RDOC_CODNUM);
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);
var = rec.get(RDOC_IDRIGA);
r.set_var("#S_IDRIGA", var);
book.add(rep);
}
}
book.print_or_preview();
}
}
}
bool TStampaProduzionePs0920::create()
{
return TSkeleton_application:: create();
}
TStampaProduzionePs0920::~TStampaProduzionePs0920()
{
}
TStampaProduzionePs0920 & app() { return (TStampaProduzionePs0920&) main_app();}
int ps0920100(int argc, char* argv[])
{
TStampaProduzionePs0920 a;
a.run(argc, argv, "Stampa ordini di produzione");
return 0;
}