c434cad322
Files correlati : Ricompilazione Demo : [ ] Commento : Riportata la versione 3.1 patch 650 git-svn-id: svn://10.65.10.50/trunk@14148 c028cbd2-c16b-5b4b-a496-9718f37d4682
239 lines
4.9 KiB
C++
Executable File
239 lines
4.9 KiB
C++
Executable File
#include <applicat.h>
|
|
#include <automask.h>
|
|
#include <defmask.h>
|
|
#include <relation.h>
|
|
#include <reprint.h>
|
|
|
|
#include "ps0872.h"
|
|
#include "ps0872200a.h"
|
|
|
|
class TReportPs08722 : public TReport
|
|
{
|
|
protected:
|
|
virtual bool get_usr_val(const TString& name, TVariant& var) const;
|
|
};
|
|
|
|
class TMaskPs08722 : public TAutomask
|
|
{
|
|
TCursor_sheet * _sht;
|
|
TCursor * _cur;
|
|
TReport _rep;
|
|
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;}
|
|
TMaskPs08722();
|
|
virtual ~TMaskPs08722();
|
|
};
|
|
|
|
TMaskPs08722::TMaskPs08722()
|
|
: TAutomask("ps0872200a"), _sht(NULL), _cur(NULL)
|
|
{
|
|
// crea relazioni, cursori e cursor_sheets
|
|
update_sheet();
|
|
((TButton_field&) field(DLG_SELECT)).set_exit_key(0);
|
|
_select_changed = false;
|
|
}
|
|
|
|
TMaskPs08722::~TMaskPs08722()
|
|
{
|
|
if (_sht != NULL)
|
|
delete _sht;
|
|
}
|
|
|
|
bool TMaskPs08722::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
|
{
|
|
const int id = o.dlg();
|
|
switch (id)
|
|
{
|
|
case F_NUM:
|
|
case F_DACLI:
|
|
case F_DAL:
|
|
if (e == fe_modify)
|
|
_select_changed = true;
|
|
break;
|
|
case F_ACLI:
|
|
if (e == fe_close)
|
|
{
|
|
const long dacli = o.mask().get_long(F_DACLI);
|
|
const long acli = atol(o.get());
|
|
|
|
if (acli > 0 && acli < dacli)
|
|
return error_box("Inserire un codice cliente maggiore o uguale a quello iniziale");
|
|
}
|
|
else
|
|
if (e == fe_modify)
|
|
_select_changed = true;
|
|
break;
|
|
case F_AL:
|
|
if (e == fe_close)
|
|
{
|
|
const TDate dal(o.mask().get_date(F_DAL));
|
|
const TDate al(o.get());
|
|
|
|
if (al.ok() && al < dal)
|
|
return error_box("Inserire una data maggiore o uguale alla data iniziale");
|
|
}
|
|
else
|
|
if (e == fe_modify)
|
|
_select_changed = true;
|
|
break;
|
|
case F_REPORT:
|
|
if (e == fe_modify)
|
|
enable(DLG_SELECT, _sht != NULL && o.get() == "StampaSchedProd");
|
|
break;
|
|
case DLG_SELECT:
|
|
if (e == fe_button)
|
|
{
|
|
if (_select_changed)
|
|
update_sheet();
|
|
_select_changed = false;
|
|
_sht->run();
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
void TMaskPs08722::update_sheet()
|
|
{
|
|
|
|
if (_sht != NULL)
|
|
{
|
|
delete _sht;
|
|
_sht = NULL;
|
|
}
|
|
else
|
|
{
|
|
TFilename name("StampaSchedProd.rep");
|
|
|
|
name.custom_path();
|
|
_rep.load(name);
|
|
}
|
|
|
|
TISAM_recordset * r = (TISAM_recordset *) _rep.recordset();
|
|
|
|
if (r != NULL)
|
|
{
|
|
TVariant var;
|
|
|
|
var = get(F_NUM);
|
|
r->set_var("#NUM", var);
|
|
var = get(F_DACLI);
|
|
r->set_var("#DACLI", var);
|
|
var = get(F_ACLI);
|
|
r->set_var("#ACLI", var);
|
|
var = get_date(F_DAL);
|
|
if (!var.as_date().ok())
|
|
var = botime;
|
|
r->set_var("#DAL", var);
|
|
var = get_date(F_AL);
|
|
if (!var.as_date().ok())
|
|
var = eotime;
|
|
r->set_var("#AL", var);
|
|
var = "F";
|
|
r->set_var("#F", var);
|
|
}
|
|
_select_changed = false;
|
|
_sht = new TCursor_sheet(r->cursor(), " |33->DATADOC|NDOC|CODARTMAG|20->RAGSOC", "Selezione clienti per codice",
|
|
"@1|Data@10|Numero|Articolo@20|Ragione Sociale@50",0,1);
|
|
_sht->check(-1);
|
|
}
|
|
|
|
class TStampaProduzionePs0872 : public TSkeleton_application
|
|
{
|
|
TMaskPs08722 * _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 TMaskPs08722 & mask() const {return *_mask;}
|
|
virtual ~TStampaProduzionePs0872();
|
|
};
|
|
|
|
void TStampaProduzionePs0872::main_loop()
|
|
{
|
|
while (_mask->run() == K_ENTER)
|
|
{
|
|
TReport_book book;
|
|
TReportPs08722 rep;
|
|
TFilename report_name(_mask->get(F_REPORT));
|
|
|
|
report_name.ext("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("#NUM", var);
|
|
var = _mask->get(F_DACLI);
|
|
r->set_var("#DACLI", var);
|
|
var = _mask->get(F_ACLI);
|
|
r->set_var("#ACLI", var);
|
|
var = _mask->get_date(F_DAL);
|
|
if (!var.as_date().ok())
|
|
var = botime;
|
|
r->set_var("#DAL", var);
|
|
var = _mask->get_date(F_AL);
|
|
if (!var.as_date().ok())
|
|
var = eotime;
|
|
r->set_var("#AL", var);
|
|
var = "F";
|
|
r->set_var("#F", var);
|
|
}
|
|
book.add(rep);
|
|
if (book.pages() > 0)
|
|
book.print_or_preview();
|
|
}
|
|
}
|
|
}
|
|
|
|
bool TStampaProduzionePs0872::create()
|
|
{
|
|
_mask = new TMaskPs08722;
|
|
return TSkeleton_application:: create();
|
|
}
|
|
|
|
TStampaProduzionePs0872::~TStampaProduzionePs0872()
|
|
{
|
|
delete _mask;
|
|
}
|
|
|
|
TStampaProduzionePs0872 & app() { return (TStampaProduzionePs0872&) main_app();}
|
|
|
|
bool TReportPs08722::get_usr_val(const TString& name, TVariant& var) const
|
|
{
|
|
if (name == "#TO_PRINT")
|
|
{
|
|
TISAM_recordset * r = (TISAM_recordset *) recordset();
|
|
const long pos = r->cursor()->pos();
|
|
|
|
var = (long) (app().mask().sheet().checked(pos) ? 1 : 0);
|
|
return true;
|
|
}
|
|
return TReport::get_usr_val(name, var);
|
|
}
|
|
|
|
int ps0872200(int argc, char* argv[])
|
|
{
|
|
TStampaProduzionePs0872 a;
|
|
a.run(argc, argv, "Stampa Produzione RealPlast");
|
|
return 0;
|
|
}
|