campo-sirio/mg/mg4300.cpp

238 lines
5.2 KiB
C++
Raw Normal View History

#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;
}