238 lines
5.2 KiB
C++
238 lines
5.2 KiB
C++
|
#include <applicat.h>
|
||
|
#include <config.h>
|
||
|
#include <mask.h>
|
||
|
#include <printer.h>
|
||
|
#include <relation.h>
|
||
|
#include <tabutil.h>
|
||
|
#include <urldefid.h>
|
||
|
#include <utility.h>
|
||
|
#include <form.h>
|
||
|
#include <printapp.h>
|
||
|
|
||
|
#include "anamag.h"
|
||
|
#include "mag.h"
|
||
|
#include "stomag.h"
|
||
|
#include "umart.h"
|
||
|
|
||
|
#include "..\ve\velib03.h"
|
||
|
#include "..\ve\veconf.h"
|
||
|
#include "mglib02.h"
|
||
|
#include "mglib03.h"
|
||
|
#include "mg4300.h"
|
||
|
#include "mg4frm.h"
|
||
|
|
||
|
class TForm_giornalemag : public TForm_stampemg
|
||
|
{
|
||
|
|
||
|
TConfig *conf_ditta;
|
||
|
TArticolo_giacenza * _curr_art;
|
||
|
TString16 _codlist,_catven;
|
||
|
TArticolo_giacenza &curr_art();
|
||
|
public:
|
||
|
bool validate(TForm_item &cf, TToken_string &s);
|
||
|
|
||
|
TForm_giornalemag(const char *name,const char *code) ;
|
||
|
~TForm_giornalemag();
|
||
|
};
|
||
|
|
||
|
bool TForm_giornalemag::validate(TForm_item &cf, TToken_string &s)
|
||
|
{
|
||
|
const TString code(s.get(0)); // prende il primo parametro, il codice del messaggio
|
||
|
TString subcode;
|
||
|
|
||
|
if (code=="_USER") {
|
||
|
}
|
||
|
return TForm_stampemg::validate(cf, s);
|
||
|
}
|
||
|
|
||
|
TArticolo_giacenza &TForm_giornalemag::curr_art()
|
||
|
{
|
||
|
TRectype & magrec=relation()->lfile(LF_MAG).curr();
|
||
|
if (_curr_art==NULL || _curr_art->codice()!=magrec.get(MAG_CODART) ) {
|
||
|
if (_curr_art) delete _curr_art;
|
||
|
_curr_art=new TArticolo_giacenza(magrec.get(MAG_CODART));
|
||
|
}
|
||
|
return *_curr_art;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
TForm_giornalemag::TForm_giornalemag(const char *name,const char *code) :
|
||
|
TForm_stampemg(name,code),_curr_art(NULL)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
|
||
|
TForm_giornalemag::~TForm_giornalemag()
|
||
|
{
|
||
|
if (_curr_art) delete _curr_art;
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
// STAMPA giornale
|
||
|
class TStampa_giornalemag : public TPrint_application
|
||
|
{
|
||
|
static int freq_stampa;
|
||
|
static bool ragg_articoli;
|
||
|
static bool ragg_classi;
|
||
|
static bool ragg_raggart;
|
||
|
static bool ragg_caus;
|
||
|
|
||
|
static TCursor * _cur;
|
||
|
|
||
|
TArray * _files;
|
||
|
TMask * _mask;
|
||
|
TForm_giornalemag * _form; // to be moved into TPrint_application
|
||
|
|
||
|
protected:
|
||
|
virtual bool print_one(int file)
|
||
|
{return TRUE;}
|
||
|
virtual bool user_create();
|
||
|
virtual bool user_destroy();
|
||
|
virtual bool set_print(int i=1);
|
||
|
virtual void set_page(int file,int count)
|
||
|
{ }
|
||
|
|
||
|
public:
|
||
|
static const char * mov_getfunct(TVariable_rectype & r);
|
||
|
static const char * rmov_getfunct(TVariable_rectype & r);
|
||
|
|
||
|
void set_parametri();
|
||
|
TStampa_giornalemag();
|
||
|
};
|
||
|
|
||
|
|
||
|
int TStampa_giornalemag::freq_stampa;
|
||
|
bool TStampa_giornalemag::ragg_articoli;
|
||
|
bool TStampa_giornalemag::ragg_classi;
|
||
|
bool TStampa_giornalemag::ragg_raggart;
|
||
|
bool TStampa_giornalemag::ragg_caus;
|
||
|
TCursor * TStampa_giornalemag::_cur;
|
||
|
|
||
|
|
||
|
TStampa_giornalemag::TStampa_giornalemag()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
bool TStampa_giornalemag::user_create()
|
||
|
{
|
||
|
_mask = new TMask("mg4300");
|
||
|
_files = new TArray();
|
||
|
_files->add(new TLocalisamfile(LF_RMOVMAG));
|
||
|
_files->add(new TLocalisamfile(LF_MOVMAG));
|
||
|
return TRUE;
|
||
|
}
|
||
|
bool TStampa_giornalemag::user_destroy()
|
||
|
{
|
||
|
delete _mask;
|
||
|
delete _files;
|
||
|
return TRUE;
|
||
|
}
|
||
|
|
||
|
const char *
|
||
|
TStampa_giornalemag::mov_getfunct(TVariable_rectype & r)
|
||
|
{
|
||
|
TString80 valore;
|
||
|
TDate datamov(_cur->relation()->lfile(LF_MOVMAG).get_date("DATACOMP"));
|
||
|
TDate datayear(datamov);
|
||
|
datayear.set_month(1);
|
||
|
datayear.set_day(1);
|
||
|
|
||
|
// gestione frequenza
|
||
|
switch (freq_stampa ) {
|
||
|
case 0:
|
||
|
valore << datamov.year() << datamov.month() << ' ' << datamov.day() << ' ';
|
||
|
valore << _cur->relation()->lfile(LF_MOVMAG).get("NUMREG");
|
||
|
break;
|
||
|
case 1:
|
||
|
valore << datamov.year() << datamov.month() << ' ' << datamov.day() << ' ';
|
||
|
break;
|
||
|
case 7:
|
||
|
valore << datamov.year()<< ((datamov.date2julian()-datayear.date2julian())/7) << ' ';
|
||
|
break;
|
||
|
case 31:
|
||
|
valore << datamov.year() << datamov.month() << ' ';
|
||
|
break;
|
||
|
}
|
||
|
return valore;
|
||
|
}
|
||
|
|
||
|
const char *
|
||
|
TStampa_giornalemag::rmov_getfunct(TVariable_rectype & r)
|
||
|
{
|
||
|
TString80 valore;
|
||
|
|
||
|
// gestione ragruppamenti
|
||
|
if (ragg_articoli)
|
||
|
{
|
||
|
valore << _cur->relation()->lfile(LF_ANAMAG).get(ANAMAG_CODART);
|
||
|
} else {
|
||
|
if (ragg_classi)
|
||
|
{
|
||
|
valore << _cur->relation()->lfile(LF_ANAMAG).get(ANAMAG_CLASSEFIS);
|
||
|
if (ragg_raggart)
|
||
|
{
|
||
|
valore << _cur->relation()->lfile(LF_ANAMAG).get(ANAMAG_RAGGFIS);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
if (ragg_caus)
|
||
|
{
|
||
|
valore << _cur->relation()->lfile(-ALIAS_CAUSALI).get("S8");
|
||
|
}
|
||
|
return valore;
|
||
|
}
|
||
|
|
||
|
|
||
|
void TStampa_giornalemag::set_parametri()
|
||
|
{
|
||
|
freq_stampa=_mask->get_int(F_FREQ);
|
||
|
ragg_articoli=_mask->get_bool(F_RAGGARTICOLI );
|
||
|
ragg_classi=_mask->get_bool(F_CLASSEFISART );
|
||
|
ragg_raggart=_mask->get_bool(F_RAGGFISART );
|
||
|
ragg_caus=_mask->get_bool(F_RAGGCAUS );
|
||
|
}
|
||
|
|
||
|
bool TStampa_giornalemag::set_print(int i)
|
||
|
{
|
||
|
while (TRUE) {
|
||
|
if (_mask->run() != K_ENTER)
|
||
|
return FALSE;
|
||
|
|
||
|
_form = new TForm_giornalemag("mg4300", "");
|
||
|
_cur = _form->cursor();
|
||
|
|
||
|
TVariable_rectype *vrec_rmov= new TVariable_rectype(LF_RMOVMAG);
|
||
|
vrec_rmov->add_field(new TVariable_field ("RSORT_FIELD", rmov_getfunct));
|
||
|
TSortedfile *rmovmag= new TSortedfile(LF_RMOVMAG,NULL,"RSORT_FIELD","",2);
|
||
|
rmovmag->set_curr(vrec_rmov);
|
||
|
//_cur->relation()->replace(rmovmag,1,"CODART==CODART");
|
||
|
|
||
|
TVariable_rectype *vrec_mov= new TVariable_rectype(LF_MOVMAG);
|
||
|
vrec_mov->add_field(new TVariable_field ("SORT_FIELD", mov_getfunct));
|
||
|
|
||
|
_cur->relation()->lfile().set_curr(vrec_mov);
|
||
|
|
||
|
TString cfilter("ANNOES==");
|
||
|
cfilter << '"'<< _mask->get(F_ANNOES) << '"';
|
||
|
//_cur->setfilter(cfilter);
|
||
|
|
||
|
set_parametri();
|
||
|
_form->print();
|
||
|
|
||
|
delete _form;
|
||
|
} // while true
|
||
|
return TRUE;
|
||
|
}
|
||
|
|
||
|
|
||
|
int mg4300(int argc, char* argv[])
|
||
|
{
|
||
|
TStampa_giornalemag a;
|
||
|
a.run(argc,argv,"Stampa giornale di magazzino");
|
||
|
return 0;
|
||
|
}
|