Stampe di magazzino

git-svn-id: svn://10.65.10.50/trunk@4401 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
augusto 1997-05-23 15:11:42 +00:00
parent 8282a46034
commit d200277732
20 changed files with 15725 additions and 0 deletions

29
mg/mg3.cpp Executable file
View File

@ -0,0 +1,29 @@
#include <xvt.h>
#include <strings.h>
// ******************************
// Gestione stampe di magazzino (anagrafica giacenze,storico,schede, disponibilita)
#include "mg3.h"
#define usage "Error - usage : %s -{0|1|2|3|4}"
int main(int argc, char** argv)
{
int rt = -1;
const int r = (argc > 1) ? atoi(&argv[1][1]) : -1;
switch (r)
{
case 0:
//rt = mg3100(argc,argv) ; break; // stampa giacenze
case 1:
//rt = mg3200(argc,argv) ; break; // stampa storico rimanenze
case 2:
rt = mg3300(argc,argv) ; break; // stampa schede
case 3:
//rt = mg3400(argc,argv) ; break; // stampa disponibilità ....
default:
error_box(usage, argv[0]) ; break;
}
return rt ;
}

9
mg/mg3.h Executable file
View File

@ -0,0 +1,9 @@
#ifndef __MG3_H
#define __MG3_H
int mg3100(int argc, char* argv[]);
int mg3200(int argc, char* argv[]);
int mg3300(int argc, char* argv[]);
int mg3400(int argc, char* argv[]);
#endif // __MG3_H

376
mg/mg3100.cpp Executable file
View File

@ -0,0 +1,376 @@
#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 "..\ve\velib03.h"
#include "..\ve\veconf.h"
#include "mglib03.h"
#include "mg3100.h"
#include "mg3frm.h"
class TForm_giacprezzi : public TForm_stampemg
{
TConfig *conf_ditta;
TCondizione_vendita * listino;
public:
void set_codlistino(const char * codcm,const char * cod);
bool validate(TForm_item &cf, TToken_string &s);
TForm_giacprezzi(const char *name,const char *code) ;
~TForm_giacprezzi();
};
bool TForm_giacprezzi::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") {
subcode=s.get();
if (subcode=="PREZZO") {
TString codart(relation()->lfile(LF_ANAMAG).get("CODART"));
if (listino->ricerca(codart,0.0))
cf.set(listino->get_prezzo().string());
return TRUE;
}
}
return TForm_stampemg::validate(cf, s);
}
void TForm_giacprezzi::set_codlistino(const char * codcatv,const char * codlist)
{
listino->put_listino(codlist,codcatv);
}
TForm_giacprezzi::TForm_giacprezzi(const char *name,const char *code) :
TForm_stampemg(name,code)
{
listino=new TCondizione_vendita(new TConfig(CONFIG_DITTA,""));
listino->set_anamag(relation()->lfile(LF_ANAMAG));
listino->set_umart(relation()->lfile(LF_UMART));
}
TForm_giacprezzi::~TForm_giacprezzi()
{
delete &(listino->config_ditta());
delete listino;
}
class TStampadatist_mask: public TMask
{
static bool handle_ragg(TMask_field &fld, KEY k); // handler
static bool handle_liv(TMask_field &fld, KEY k); // handler
static bool handle_subord(TMask_field &fld, KEY k); // handler
public:
TStampadatist_mask();
~TStampadatist_mask(){};
};
TStampadatist_mask::TStampadatist_mask():
TMask("mg3100")
{
TConfig prassid(CONFIG_DITTA, "ve"); // apre il file di configurazione della ditta corrente
if (prassid.get_bool("GES", NULL, A_LISTINI))
field(F_CATVENLISTINO).enable(prassid.get_bool("GESLISCV"));
else {
field(F_CATVENLISTINO).disable(); field(F_CODLISTINO).disable();
}
TMag_livelli giaclev("FCA"),artlev("FCG");
set_handler(F_TOLIVELLOART, handle_liv);
set_handler(F_TOLIVELLOGIAC, handle_liv);
set_handler(F_ORDINE, handle_ragg);
set_handler(F_DETTAGLIODEP, handle_ragg);
set_handler(F_DETTAGLIOMAG, handle_ragg);
set_handler(F_ORDINEART,handle_subord);
if (!artlev.enabled()) {
TMask_field &f1=field(F_RAGGCODICE);
f1.reset(); f1.check();f1.hide();
}
if (!giaclev.enabled()) {
TMask_field &f2=field(F_RAGGLIVGIAC);
f2.reset(); f2.check();f2.hide();
}
}
bool TStampadatist_mask::handle_subord(TMask_field &fld, KEY k)
{
if (k == K_SPACE)
{
TOperable_field &fraggcod=(TOperable_field &)fld.mask().field(F_RAGGCODICE);
TOperable_field &fragggiac=(TOperable_field &)fld.mask().field(F_RAGGLIVGIAC);
switch (fld.get()[1]) {
case 'C':
if (fld.mask().get(F_ORDINE)=="A")
fraggcod.enable();
else {
if (!fld.mask().get_bool(F_DETTAGLIOMAG) || !fld.mask().get_bool(F_DETTAGLIODEP))
{
fraggcod.reset(); fraggcod.disable();
fragggiac.reset(); fragggiac.disable();
fraggcod.do_message(0);fragggiac.do_message(0);
}
}
break;
case 'M':
case 'D':
fraggcod.reset(); fraggcod.check();fraggcod.disable();
break;
}
}
return TRUE;
}
bool TStampadatist_mask::handle_liv(TMask_field &fld, KEY k)
{
if (k == K_TAB)
{
TOperable_field &ftotmag=(TOperable_field &)fld.mask().field(F_TOTALIMAGAZZINI);
TOperable_field &fdettmag=(TOperable_field &)fld.mask().field(F_DETTAGLIOMAG);
if (fld.mask().get(F_ORDINE)=="A")
{
if (fld.mask().get_int(F_TOLIVELLOART) || fld.mask().get_int(F_TOLIVELLOGIAC))
{
// raggruppamenti prima del dettaglio magazzini
ftotmag.reset(); ftotmag.disable();ftotmag.do_message(0);
} else {
ftotmag.enable();
}
}
}
return TRUE;
}
bool TStampadatist_mask::handle_ragg(TMask_field &fld, KEY k)
{
if (k == K_SPACE)
{
TOperable_field &ftotmag=(TOperable_field &)fld.mask().field(F_TOTALIMAGAZZINI);
TOperable_field &fraggcod=(TOperable_field &)fld.mask().field(F_RAGGCODICE);
TOperable_field &fragggiac=(TOperable_field &)fld.mask().field(F_RAGGLIVGIAC);
if (fld.mask().get(F_ORDINE)=="M")
{
ftotmag.enable();
if (!fld.mask().get_bool(F_DETTAGLIOMAG) || !fld.mask().get_bool(F_DETTAGLIODEP))
{
fraggcod.reset(); fraggcod.disable();
fragggiac.reset(); fragggiac.disable();
fraggcod.do_message(0);fragggiac.do_message(0);
return TRUE;
}
}
fraggcod.enable();
fragggiac.enable();
}
return TRUE;
}
// STAMPA anagrafiche
class TStampa_datistorici : public TPrint_application
{
TArray * _files;
TMask * _mask;
TCursor * _cur;
TForm_giacprezzi * _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)
{ }
void setprint_permagazzini();
void setprint_perarticoli();
public:
TStampa_datistorici() {}
};
bool TStampa_datistorici::user_create()
{
_mask = new TStampadatist_mask();
_files = new TArray();
_files->add(new TLocalisamfile(LF_MAG));
return TRUE;
}
bool TStampa_datistorici::user_destroy()
{
delete _mask;
delete _files;
return TRUE;
}
void TStampa_datistorici::setprint_permagazzini()
{
char subordine=*_mask->get(F_ORDINEART);
TRectype darec(LF_MAG),arec(LF_MAG);
TString cfilter,sortexp,joinexp;
_form = new TForm_giacprezzi("mg3100b", "");
_cur = _form->cursor();
// setta il filtro sul cursore
if (*_mask->get(F_DAART))
cfilter << "(CODART>=" <<'"' << _mask->get(F_DAART)<< "\")&&" ;
if (*_mask->get(F_AART))
cfilter << "(CODART<=" <<'"' << _mask->get(F_AART)<< "\")&&" ;
switch (*_mask->get(F_FILTRO)) {
case '0': // non nulli
cfilter << "(STR(" << LF_MAG << "->GIAC!=\"0\"))&&";
break;
case 'P': // positivi
cfilter << "(STR(" << LF_MAG << "->GIAC>\"0\"))&&";
break;
case 'N': // negativi
cfilter << "(STR(" << LF_MAG << "->GIAC<\"0\"))&&";
break;
case 'S': // sottoscorta
cfilter << "(STR(GIAC<SCORTAMIN))&&";
break;
}
if (cfilter.not_empty())
cfilter.cut(cfilter.len()-2);
// abilita/disabilita le sezioni dei totali
bool showdett;
showdett=_mask->get_bool(F_DETTAGLIODEP);
_form->setdett_permag(_mask->get_int(F_FROMLIVELLOART),_mask->get_int(F_TOLIVELLOART),_mask->get_int(F_FROMLIVELLOGIAC),_mask->get_int(F_TOLIVELLOGIAC),_mask->get_bool(F_TOTALIMAGAZZINI),_mask->get_bool(F_TOTALIDEPOSITI),showdett);
_form->find_field('H',odd_page,FF_FLAGGIAC).set((_mask->get_bool(F_STAMPAGIAC) && *_mask->get(F_FILTRO)!='S') ? "1": "0");
_form->find_field('H',odd_page,FF_FLAGSOTTOS).set((_mask->get_bool(F_STAMPAGIAC) && *_mask->get(F_FILTRO)=='S') ? "1": "0");
_form->find_field('B',odd_page,FF_FLAGVALMEDI).set(_mask->get_bool(F_VALMEDI) ? "1": "0");
_form->find_field('H',odd_page,FF_PREZZIVALORI).set(_mask->get(F_PREZZIVALORI));
_form->find_field('B',odd_page,FF_PREZZIVALORI).set(_mask->get(F_PREZZIVALORI));
_form->set_codlistino(_mask->get(F_CATVENLISTINO),_mask->get(F_CODLISTINO));
darec.put("ANNOES",_mask->get(F_ANNOES));
darec.put("CODMAG",_mask->get(F_DAMAG));
arec.put("ANNOES",_mask->get(F_ANNOES));
arec.put("CODMAG",_mask->get(F_AMAG));
_cur->setfilter(cfilter);
_cur->setregion(darec,arec);
}
// ORDINAMENTO
void TStampa_datistorici::setprint_perarticoli()
{
TRectype darec(LF_ANAMAG),arec(LF_ANAMAG);
TString cfilter,filter,joinexp;
TString sortexp("ANNOES|CODART|LIVELLO|CODMAG");
char subordine=*_mask->get(F_ORDINEART);
_form = new TForm_giacprezzi("mg3100a", "");
_cur = _form->cursor();
if (*_mask->get(F_DAMAG))
filter << "(CODMAG[1,3]>=" <<'"' << _mask->get(F_DAMAG)<< "\")&&" ;
if (*_mask->get(F_AMAG))
filter << "(CODMAG[1,3]<=" <<'"' << _mask->get(F_AMAG)<< "\")&&" ;
switch (*_mask->get(F_FILTRO)) {
case '0': // non nulli
filter << "(STR(" << LF_MAG << "->GIAC!=\"0\"))&&";
break;
case 'P': // positivi
filter << "(STR(" << LF_MAG << "->GIAC>\"0\"))&&";
break;
case 'N': // negativi
filter << "(STR(" << LF_MAG << "->GIAC<\"0\"))&&";
break;
case 'S': // sottoscorta
filter << "(STR(GIAC<SCORTAMIN))&&";
break;
}
if (filter.not_empty())
filter.cut(filter.len()-2);
switch (subordine)
{
case 'C':
_cur->setkey(1);
darec.put("CODART",_mask->get(F_DAART));
arec.put("CODART",_mask->get(F_AART));
_form->find_field('B',odd_page,"H_CATMER").hide();
_form->find_field('B',odd_page,"TOT_CATMER").hide();
_form->setcatmer(FALSE);
break;
case 'D':
_cur->setkey(2);
darec.put("DESCR",_mask->get(F_DADES));
arec.put("DESCR",_mask->get(F_ADES));
_form->find_field('B',odd_page,"H_CATMER").disable();
_form->find_field('B',odd_page,"TOT_CATMER").hide();
_form->setcatmer(FALSE);
break;
case 'M':
_cur->setkey(3);
darec.put("GRMERC",_mask->get(F_DACATMER));
darec.put("CODART",_mask->get(F_DAART));
arec.put("GRMERC",_mask->get(F_ACATMER));
arec.put("CODART",_mask->get(F_AART));
_form->find_field('B',odd_page,"H_CATMER").show();
_form->find_field('B',odd_page,"TOT_CATMER").show();
_form->setcatmer(TRUE);
break;
}
_form->setdett_perart(
_mask->get_int(F_FROMLIVELLOART),
_mask->get_int(F_TOLIVELLOART),
_mask->get_int(F_FROMLIVELLOGIAC),
_mask->get_int(F_TOLIVELLOGIAC),
_mask->get_bool(F_TOTALIMAGAZZINI),
_mask->get_bool(F_TOTALIDEPOSITI));
_form->find_field('H',odd_page,FF_FLAGGIAC).set((_mask->get_bool(F_STAMPAGIAC) && *_mask->get(F_FILTRO)!='S') ? "1": "0");
_form->find_field('H',odd_page,FF_FLAGSOTTOS).set((_mask->get_bool(F_STAMPAGIAC) && *_mask->get(F_FILTRO)=='S') ? "1": "0");
_form->find_field('B',odd_page,FF_FLAGVALMEDI).set(_mask->get_bool(F_VALMEDI) ? "1": "0");
_form->find_field('H',odd_page,FF_PREZZIVALORI).set(_mask->get(F_PREZZIVALORI));
_form->find_field('B',odd_page,FF_PREZZIVALORI).set(_mask->get(F_PREZZIVALORI));
_form->set_codlistino(_mask->get(F_CATVENLISTINO),_mask->get(F_CODLISTINO));
joinexp << "ANNOES==" << _mask->get(F_ANNOES) << "|CODART==CODART";
TSortedfile *mag;
mag= new TSortedfile(LF_MAG,NULL,sortexp,filter,1);
_cur->relation()->replace(mag,1,joinexp);
_cur->setfilter(cfilter);
_cur->setregion(darec,arec);
}
bool TStampa_datistorici::set_print(int i)
{
while (TRUE) {
if (_mask->run() != K_ENTER)
return FALSE;
if (*_mask->get(F_ORDINE)=='A')
{
setprint_perarticoli();
} else {
setprint_permagazzini();
}
_form->print();
delete _form;
} // while true
return TRUE;
}
int mg3100(int argc, char* argv[])
{
TStampa_datistorici a;// derivata da Application e con uso di form
a.run(argc,argv,"Stampa dati storici di giacenza");
return 0;
}

2295
mg/mg3100a.frm Executable file

File diff suppressed because it is too large Load Diff

2185
mg/mg3100b.frm Executable file

File diff suppressed because it is too large Load Diff

778
mg/mg3100c.frm Executable file
View File

@ -0,0 +1,778 @@
USE 109 KEY 2
JOIN 47 TO 109 INTO CODART==CODART
JOIN MAG TO 109 ALIAS 500 INTO CODTAB==CODMAG[1,3]
JOIN MAG TO 109 ALIAS 501 INTO CODTAB==CODMAG
JOIN GMC TO 47 ALIAS 400 INTO CODTAB==GRMERC[1,3]
JOIN GMC TO 47 ALIAS 401 INTO CODTAB==GRMERC
JOIN 49 TO 47 INTO CODART==CODART
END
DESCRIPTION
BEGIN
47->* "Anagrafica articoli"
109->* "Archivio Giacenze"
MAG->* "Tabella magazzini"
49->* "Unità di misura articoli"
END
GENERAL
BEGIN
OFFSET 0 0
FONT "Courier New"
SIZE 8
CARATTERE "X"
INIZIALE 5 2
FINALE 133
END
SECTION HEADER ODD 5
STRINGA 1 40 1
BEGIN
KEY "nome ditta"
PROMPT 1 1 "Ditta "
MESSAGE _DITTA, !RAGSOC
END
STRINGA 2 10
BEGIN
KEY "Data"
PROMPT 120 1 "Data "
MESSAGE _TODAY
END
NUMERO 3 7
BEGIN
KEY "Nr. pagina"
PROMPT 137 1 "Pagina "
MESSAGE _PAGENO
END
NUMERO 4 32
BEGIN
KEY "Intestazione stampa"
PROMPT 45 2 "Stampa dati storici giacenze"
END
STRINGA 5 146
BEGIN
KEY "Separatore (iniziale)"
PROMPT 1 3 "------------------------------------------------------------------------------------------------------------------------------------------------------"
END
LIST 666 1
BEGIN
PROMPT 1 1 ""
FLAG "H"
KEY "FLAG GIACENZA"
ITEM "0|0"
MESSAGE HIDE,14|DISABLE,BO->47
ITEM "1|1"
MESSAGE SHOW,14|ENABLE,BO->47
END
LIST 667 1
BEGIN
PROMPT 1 1 ""
FLAG "H"
KEY "FLAG SOTTOSCORTA"
ITEM "0|0"
MESSAGE HIDE,15|DISABLE,BO->48
ITEM "1|1"
MESSAGE SHOW,15|ENABLE,BO->48
END
STRINGA 6 20
BEGIN
KEY "H1"
PROMPT 2 4 "Codice"
END
STRINGA 7 40
BEGIN
KEY "H1"
PROMPT 24 4 "Descrizione"
END
STRINGA 7 40
BEGIN
KEY "H1"
PROMPT 45 4 "UM"
END
STRINGA 8 12
BEGIN
KEY "H1"
PROMPT 55 4 "Acq."
END
STRINGA 9 12
BEGIN
KEY "H1"
PROMPT 68 4 "Val.Acq."
END
STRINGA 10 12
BEGIN
KEY "H1"
PROMPT 81 4 "Ven."
END
STRINGA 11 12
BEGIN
KEY "H1"
PROMPT 94 4 "Val.Ven."
END
STRINGA 12 12
BEGIN
KEY "H1"
PROMPT 107 4 "Rim."
END
STRINGA 13 12
BEGIN
KEY "H1"
PROMPT 120 4 "Val.Rim."
END
STRINGA 14 12
BEGIN
KEY "H1"
PROMPT 133 4 "Giac."
END
STRINGA 15 12
BEGIN
KEY "H1"
PROMPT 131 4 "Scorta-Giac."
END
STRINGA 17 146
BEGIN
KEY "Separatore (iniziale)"
PROMPT 1 5 "------------------------------------------------------------------------------------------------------------------------------------------------------"
END
END
SECTION BODY ODD 0 COLUMNWISE
LIST 555 1
BEGIN
PROMPT 1 1 ""
FLAG "H"
KEY "FLAG VALORI MEDI"
ITEM "0|N"
MESSAGE SHOW,10@|DISABLE,11@
ITEM "1|Y"
MESSAGE HIDE,10@|ENABLE,11@
END
SECTION HEADER_MAGAZZINO 1 1 1 GROUP
STRINGA 10 12 2
BEGIN
KEY "magazzino"
PROMPT 2 1 ""
FIELD CODMAG[1,3]
END
STRINGA 11 12 2
BEGIN
KEY "magazzino"
PROMPT 3 1 ""
FIELD 500@->s0
MESSAGE RESET,4@|COPY,450
END
END
SECTION GRUPPI_MAGAZZINO 1 1 0 FILE 109 GROUP CODMAG[1,3]
SECTION HEADER_DEPOSITO 1 1 1 GROUP
STRINGA 21 8 1
BEGIN
KEY "CODICE"
PROMPT 2 1 "Deposito"
END
STRINGA 22 34 1
BEGIN
KEY "descr"
PROMPT 3 1 ""
FIELD 501@->s0
MESSAGE RESET,3@|COPY,350
END
END
SECTION GRUPPI_DEPOSITO 1 0 0 FILE 109 GROUP CODMAG[4,5]
STRINGA 30 21 1
BEGIN
FLAGS "H"
KEY "codice ARTICOLO"
PROMPT 2 1 " Articolo:"
FIELD 47->CODART
MESSAGE COPY,251
END
STRINGA 31 21 1
BEGIN
FLAGS "H"
KEY "codice ARTICOLO"
PROMPT 3 1 ""
FIELD 47->DESCR
MESSAGE RESET,2@|COPY,250
END
SECTION GRUPPI_ARTICOLO 1 0 0 FILE 109 GROUP CODART
STRINGA 40 40 1
BEGIN
FLAGS "H"
KEY "livgiac"
PROMPT 3 1 ""
MESSAGE _USER,GRUPPOGIAC|RESET,1@|COPY,150
END
SECTION GRUPPI_LIVELLO_GIACENZE 1 0 0 FILE 109 GROUP LIVELLO
SECTION RIGHE_LIVELLI 0 1 1 GROUP
STRINGA 51 5 2
BEGIN
KEY "CODICE"
PROMPT 2 1 ""
END
STRINGA 52 37 2
BEGIN
KEY "descr"
PROMPT 3 1 ""
MESSAGE _USER,LIVELLIGIAC
END
STRINGA 53 3
BEGIN
KEY "UM"
PROMPT 5 1 ""
FIELD 49->UM
END
NUMERO 41 12
BEGIN
KEY "ACQ"
PROMPT 6 1 ""
FIELD 109->ACQ
PICTURE "########,@#"
MESSAGE ADD,141
END
NUMERO 42 12
BEGIN
KEY "VALACQ"
PROMPT 7 1 ""
FIELD 109->VALACQ
PICTURE "###.###.##@"
MESSAGE ADD,142
GROUP 10
END
NUMERO 82 12
BEGIN
KEY "VALACQ"
PROMPT 7 1 ""
PICTURE "#######,@##"
MESSAGE _NUMEXPR,109->VALACQ/109->ACQ
GROUP 11
END
NUMERO 43 12
BEGIN
KEY "VEN"
PROMPT 8 1 ""
FIELD 109->VEN
PICTURE "########,@#"
MESSAGE ADD,143
END
NUMERO 44 12
BEGIN
KEY "VALV"
PROMPT 9 1 ""
FIELD 109->VALVEN
PICTURE "###.###.##@"
MESSAGE ADD,144
GROUP 10
END
NUMERO 84 12
BEGIN
KEY "VALV"
PROMPT 9 1 ""
PICTURE "#######,@##"
MESSAGE _NUMEXPR,109->VALVEN/109->VEN
GROUP 11
END
NUMERO 45 12
BEGIN
KEY "RIM"
PROMPT 10 1 ""
FIELD 109->RIM
PICTURE "########,@#"
MESSAGE ADD,145
END
NUMERO 46 12
BEGIN
KEY "VALrim"
PROMPT 11 1 ""
PICTURE "###.###.##@"
FIELD 109->VALRIM
MESSAGE ADD,146
GROUP 10
END
NUMERO 86 12
BEGIN
KEY "VALrim"
PROMPT 11 1 ""
PICTURE "#######,@##"
MESSAGE _NUMEXPR,109->VALRIM/109->RIM
GROUP 11
END
NUMERO 47 12
BEGIN
KEY "giac"
PROMPT 12 1 ""
FIELD 109->GIAC
PICTURE "#######@,@#"
MESSAGE ADD,147
END
NUMERO 48 12
BEGIN
KEY "scorta-giac"
PROMPT 12 1 ""
PICTURE "#######@,@#"
MESSAGE _NUMEXPR,109->SCORTAMIN-109->GIAC|ADD,147
END
END // SECTION GROUP LIVELLI
END // LOOP LIVELLI
SECTION TOTALI_LIVELLO_GIAC 1 2 2 GROUP
STRINGA 777
BEGIN
KEY ""
PROMPT 6 1 "----------------------------------------------------------------------------------------------------"
END
STRINGA 150 35 2
BEGIN
KEY "LIVGIAC"
PROMPT 3 2 ""
END
STRINGA 151 7 2
BEGIN
KEY "livgiac"
PROMPT 2 2 " Totale"
END
STRINGA 153 3
BEGIN
KEY "UM"
PROMPT 5 2 ""
FIELD 49->UM
MESSAGE COPY,253
END
NUMERO 141 12
BEGIN
KEY "ACQ"
PROMPT 6 2 ""
PICTURE "########,@#"
MESSAGE ADD,241
GROUP 1
END
NUMERO 142 12
BEGIN
KEY "VALACQ"
PROMPT 7 2 ""
PICTURE "###.###.##@"
MESSAGE ADD,242
GROUP 1 10
END
NUMERO 182 12
BEGIN
KEY "VALACQ"
PROMPT 7 2 ""
PICTURE "#######,@##"
MESSAGE _NUMEXPR,#142/#141
GROUP 11
END
NUMERO 143 12
BEGIN
KEY "ven"
PROMPT 8 2 ""
PICTURE "########,@#"
MESSAGE ADD,243
GROUP 1
END
NUMERO 144 12
BEGIN
KEY "VALven"
PROMPT 9 2 ""
PICTURE "###.###.##@"
MESSAGE ADD,244
GROUP 1 10
END
NUMERO 184 12
BEGIN
KEY "VALven"
PROMPT 9 2 ""
PICTURE "#######,@##"
MESSAGE _NUMEXPR,#144/#143
GROUP 11
END
NUMERO 145 12
BEGIN
KEY "rim"
PROMPT 10 2 ""
PICTURE "########,@#"
MESSAGE ADD,245
GROUP 1
END
NUMERO 146 12
BEGIN
KEY "VALrim"
PROMPT 11 2 ""
PICTURE "###.###.##@"
MESSAGE ADD,246
GROUP 1 10
END
NUMERO 186 12
BEGIN
KEY "VALrim"
PROMPT 11 2 ""
PICTURE "#######,@##"
MESSAGE _NUMEXPR,#146/#145
GROUP 11
END
NUMERO 147 12
BEGIN
KEY "giac"
PROMPT 12 2 ""
PICTURE "########,@#"
MESSAGE ADD,247
GROUP 1
END
END
END // LOOP LIVELLI DI GIACENZA
SECTION TOTALI_ARTICOLO 1 1 1 GROUP
STRINGA 250 21 1
BEGIN
PROMPT 3 1 ""
END
STRINGA 251 21 1
BEGIN
KEY "Livello giac"
PROMPT 2 1 " Articolo "
END
STRINGA 253 3
BEGIN
KEY "UM"
PROMPT 5 1 ""
MESSAGE COPY,353
END
NUMERO 241 12
BEGIN
KEY "ACQ"
PROMPT 6 1 ""
PICTURE "########,@#"
MESSAGE ADD,341
GROUP 2
END
NUMERO 242 12
BEGIN
KEY "VALACQ"
PROMPT 7 1 ""
PICTURE "###.###.##@"
MESSAGE ADD,342
GROUP 2 10
END
NUMERO 282 12
BEGIN
KEY "VALACQ"
PROMPT 7 1 ""
PICTURE "#######,@##"
MESSAGE _NUMEXPR,#242/#241
GROUP 11
END
NUMERO 243 12
BEGIN
KEY "ven"
PROMPT 8 1 ""
PICTURE "########,@#"
MESSAGE ADD,343
GROUP 2
END
NUMERO 244 12
BEGIN
KEY "VALven"
PROMPT 9 1 ""
PICTURE "###.###.##@"
MESSAGE ADD,344
GROUP 2 10
END
NUMERO 284 12
BEGIN
KEY "VALven"
PROMPT 9 1 ""
PICTURE "#######,@##"
MESSAGE _NUMEXPR,#244/#243
GROUP 11
END
NUMERO 245 12
BEGIN
KEY "rim"
PROMPT 10 1 ""
PICTURE "########,@#"
MESSAGE ADD,345
GROUP 2
END
NUMERO 246 12
BEGIN
KEY "VALrim"
PROMPT 11 1 ""
PICTURE "###.###.##@"
MESSAGE ADD,346
GROUP 2 10
END
NUMERO 286 12
BEGIN
KEY "VALrim"
PROMPT 11 1 ""
PICTURE "#######,@##"
MESSAGE _NUMEXPR,#246/#245
GROUP 11
END
NUMERO 247 12
BEGIN
KEY "giac"
PROMPT 12 1 ""
PICTURE "########,@#"
MESSAGE ADD,347
GROUP 2
END
END // SECTION TOTALI
END // LOOP GIAC
SECTION TOTALI_DEPOSITO 1 3 3 GROUP
STRINGA 777
BEGIN
KEY "giac"
PROMPT 6 1 "----------------------------------------------------------------------------------------------------"
END
STRINGA 350 30 2
BEGIN
KEY ""
PROMPT 3 2 ""
END
STRINGA 351 12 2
BEGIN
KEY ""
PROMPT 2 2 " Totale dep."
END
STRINGA 353 3
BEGIN
KEY "UM"
PROMPT 5 2 ""
MESSAGE COPY,453
END
NUMERO 341 12
BEGIN
KEY "ACQ"
PROMPT 6 2 ""
PICTURE "########,@#"
MESSAGE ADD,441
GROUP 3
END
NUMERO 342 12
BEGIN
KEY "VALACQ"
PROMPT 7 2 ""
PICTURE "###.###.##@"
MESSAGE ADD,442
GROUP 3 10
END
NUMERO 382 12
BEGIN
KEY "VALACQ"
PROMPT 7 2 ""
PICTURE "#######,@##"
MESSAGE _NUMEXPR,#342/#341
GROUP 11
END
NUMERO 343 12
BEGIN
KEY "ven"
PROMPT 8 2 ""
PICTURE "########,@#"
MESSAGE ADD,443
GROUP 3
END
NUMERO 344 12
BEGIN
KEY "VALven"
PROMPT 9 2 ""
PICTURE "###.###.##@"
MESSAGE ADD,444
GROUP 3 10
END
NUMERO 384 12
BEGIN
KEY "VALven"
PROMPT 9 2 ""
PICTURE "#######,@##"
MESSAGE _NUMEXPR,#344/#343
GROUP 11
END
NUMERO 345 12
BEGIN
KEY "rim"
PROMPT 10 2 ""
PICTURE "########,@#"
MESSAGE ADD,445
GROUP 3
END
NUMERO 346 12
BEGIN
KEY "VALrim"
PROMPT 11 2 ""
PICTURE "###.###.##@"
MESSAGE ADD,446
GROUP 3 10
END
NUMERO 386 12
BEGIN
KEY "VALrim"
PROMPT 11 2 ""
PICTURE "#######,@##"
MESSAGE _NUMEXPR,#346/#345
GROUP 11
END
NUMERO 347 12
BEGIN
KEY "giac"
PROMPT 12 2 ""
PICTURE "########,@#"
MESSAGE ADD,447
GROUP 3
END
END // SECTION TOTALI
END // loop ragg codice o catmerc
SECTION TOTALI_MAGAZZINO 1 3 3 GROUP
STRINGA 777
BEGIN
KEY ""
PROMPT 6 1 "----------------------------------------------------------------------------------------------------"
END
STRINGA 451 20 2
BEGIN
KEY ""
PROMPT 2 2 " TOTALE MAG."
END
STRINGA 450 22 2
BEGIN
KEY ""
PROMPT 3 2 ""
END
STRINGA 453 3
BEGIN
KEY "UM"
PROMPT 5 2 ""
END
NUMERO 441 12
BEGIN
KEY "ACQ"
PROMPT 6 2 ""
PICTURE "########,@#"
GROUP 4
END
NUMERO 442 12
BEGIN
KEY "VALACQ"
PROMPT 7 2 ""
PICTURE "###.###.##@"
GROUP 4 10
END
NUMERO 482 12
BEGIN
KEY "VALACQ"
PROMPT 7 2 ""
PICTURE "#######,@##"
MESSAGE _NUMEXPR,#442/#441
GROUP 11
END
NUMERO 443 12
BEGIN
KEY "ven"
PROMPT 8 2 ""
PICTURE "########,@#"
GROUP 4
END
NUMERO 444 12
BEGIN
KEY "VALven"
PROMPT 9 2 ""
PICTURE "###.###.##@"
GROUP 4 10
END
NUMERO 484 12
BEGIN
KEY "VALVEN medio"
PROMPT 9 2 ""
PICTURE "#######,@##"
MESSAGE _NUMEXPR,#444/#443
GROUP 11
END
NUMERO 445 12
BEGIN
KEY "rim"
PROMPT 10 2 ""
PICTURE "########,@#"
GROUP 4
END
NUMERO 446 12
BEGIN
KEY "VALrim"
PROMPT 11 2 ""
PICTURE "###.###.##@"
GROUP 4 10
END
NUMERO 486 12
BEGIN
KEY "VALrim medio"
PROMPT 11 2 ""
PICTURE "#######,@##"
MESSAGE _NUMEXPR,#446/#445
GROUP 11
END
NUMERO 447 12
BEGIN
KEY "giac"
PROMPT 12 2 ""
PICTURE "########,@#"
GROUP 4
END
END // SECTION TOTALI
END // section body, loop anamag
SECTION FOOTER ODD 2
STRINGA 100
BEGIN
KEY "NUMP"
PROMPT 50 1 "--------------"
END
NUMERO 101
BEGIN
KEY "NUMPAGE"
PROMPT 50 2 ""
MESSAGE _PAGENO
PICTURE "-###-"
END
END // fine footer
END// fine form

275
mg/mg3200.cpp Executable file
View File

@ -0,0 +1,275 @@
#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 "mglib03.h"
#include "mg3200.h"
#include "mg3frm.h"
class TStampadisp_mask: public TMask
{
static bool handle_ragg(TMask_field &fld, KEY k); // handler
static bool handle_liv(TMask_field &fld, KEY k); // handler
static bool handle_subord(TMask_field &fld, KEY k); // handler
public:
TStampadisp_mask();
~TStampadisp_mask(){};
};
TStampadisp_mask::TStampadisp_mask():
TMask("mg3200")
{
TMag_livelli giaclev("FCA"),artlev("FCG");
set_handler(F_TOLIVELLOART, handle_liv);
set_handler(F_TOLIVELLOGIAC, handle_liv);
set_handler(F_ORDINE, handle_ragg);
set_handler(F_DETTAGLIODEP, handle_ragg);
set_handler(F_DETTAGLIOMAG, handle_ragg);
set_handler(F_ORDINEART,handle_subord);
if (!artlev.enabled()) {
TMask_field &f1=field(F_RAGGCODICE);
f1.reset(); f1.check();f1.hide();
}
if (!giaclev.enabled()) {
TMask_field &f2=field(F_RAGGLIVGIAC);
f2.reset(); f2.check();f2.hide();
}
}
bool TStampadisp_mask::handle_subord(TMask_field &fld, KEY k)
{
if (k == K_SPACE)
{
TOperable_field &fraggcod=(TOperable_field &)fld.mask().field(F_RAGGCODICE);
TOperable_field &fragggiac=(TOperable_field &)fld.mask().field(F_RAGGLIVGIAC);
switch (fld.get()[1]) {
case 'C':
if (fld.mask().get(F_ORDINE)=="A")
fraggcod.enable();
else {
if (!fld.mask().get_bool(F_DETTAGLIOMAG) || !fld.mask().get_bool(F_DETTAGLIODEP))
{
fraggcod.reset(); fraggcod.disable();
fragggiac.reset(); fragggiac.disable();
fraggcod.do_message(0);fragggiac.do_message(0);
}
}
break;
case 'M':
case 'D':
fraggcod.reset(); fraggcod.check();fraggcod.disable();
break;
}
}
return TRUE;
}
bool TStampadisp_mask::handle_liv(TMask_field &fld, KEY k)
{
if (k == K_TAB)
{
TOperable_field &ftotmag=(TOperable_field &)fld.mask().field(F_TOTALIMAGAZZINI);
TOperable_field &fdettmag=(TOperable_field &)fld.mask().field(F_DETTAGLIOMAG);
if (fld.mask().get(F_ORDINE)=="A")
{
if (fld.mask().get_int(F_TOLIVELLOART) || fld.mask().get_int(F_TOLIVELLOGIAC))
{
// raggruppamenti prima del dettaglio magazzini
ftotmag.reset(); ftotmag.disable();ftotmag.do_message(0);
} else {
ftotmag.enable();
}
}
}
return TRUE;
}
bool TStampadisp_mask::handle_ragg(TMask_field &fld, KEY k)
{
if (k == K_SPACE)
{
TOperable_field &ftotmag=(TOperable_field &)fld.mask().field(F_TOTALIMAGAZZINI);
TOperable_field &fraggcod=(TOperable_field &)fld.mask().field(F_RAGGCODICE);
TOperable_field &fragggiac=(TOperable_field &)fld.mask().field(F_RAGGLIVGIAC);
if (fld.mask().get(F_ORDINE)=="M")
{
ftotmag.enable();
if (!fld.mask().get_bool(F_DETTAGLIOMAG) || !fld.mask().get_bool(F_DETTAGLIODEP))
{
fraggcod.reset(); fraggcod.disable();
fragggiac.reset(); fragggiac.disable();
fraggcod.do_message(0);fragggiac.do_message(0);
return TRUE;
}
}
fraggcod.enable();
fragggiac.enable();
}
return TRUE;
}
// mg3200 Stampa
class TStampa_disp : public TPrint_application
{
TArray * _files;
TStampadisp_mask * _mask;
TCursor * _cur;
TForm_stampemg * _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)
{ }
void setprint_permagazzini();
void setprint_perarticoli();
public:
TStampa_disp() {}
};
bool TStampa_disp::user_create()
{
_mask = new TStampadisp_mask;
_files = new TArray();
_files->add(new TLocalisamfile(LF_MAG));
return TRUE;
}
bool TStampa_disp::user_destroy()
{
delete _mask;
delete _files;
return TRUE;
}
void TStampa_disp::setprint_permagazzini()
{
char subordine=*_mask->get(F_ORDINEART);
TRectype darec(LF_MAG),arec(LF_MAG);
TString cfilter,sortexp,joinexp;
_form = new TForm_stampemg("mg3200b", "");
_cur = _form->cursor();
// setta il filtro sul cursore
if (*_mask->get(F_DAART))
cfilter << "(CODART>=" <<'"' << _mask->get(F_DAART)<< "\")&&" ;
if (*_mask->get(F_AART))
cfilter << "(CODART<=" <<'"' << _mask->get(F_AART)<< "\")&&" ;
if (cfilter.not_empty())
cfilter.cut(cfilter.len()-2);
// abilita/disabilita le sezioni dei totali
bool showdett;
showdett=_mask->get_bool(F_DETTAGLIODEP);
_form->setdett_permag(_mask->get_int(F_FROMLIVELLOART),_mask->get_int(F_TOLIVELLOART),_mask->get_int(F_FROMLIVELLOGIAC),_mask->get_int(F_TOLIVELLOGIAC),_mask->get_bool(F_TOTALIMAGAZZINI),_mask->get_bool(F_TOTALIDEPOSITI),showdett);
darec.put("ANNOES",_mask->get(F_ANNOES));
darec.put("CODMAG",_mask->get(F_DAMAG));
arec.put("ANNOES",_mask->get(F_ANNOES));
arec.put("CODMAG",_mask->get(F_AMAG));
_cur->setfilter(cfilter);
_cur->setregion(darec,arec);
}
// ORDINAMENTO
void TStampa_disp::setprint_perarticoli()
{
TRectype darec(LF_ANAMAG),arec(LF_ANAMAG);
TString cfilter,filter,joinexp;
TString sortexp("ANNOES|CODART|LIVELLO|CODMAG");
char subordine=*_mask->get(F_ORDINEART);
_form = new TForm_stampemg("mg3200a", "");
_cur = _form->cursor();
if (*_mask->get(F_DAMAG))
filter << "(CODMAG[1,3]>=" <<'"' << _mask->get(F_DAMAG)<< "\")&&" ;
if (*_mask->get(F_AMAG))
filter << "(CODMAG[1,3]<=" <<'"' << _mask->get(F_AMAG)<< "\")&&" ;
if (filter.not_empty())
filter.cut(filter.len()-2);
switch (subordine)
{
case 'C':
_cur->setkey(1);
darec.put("CODART",_mask->get(F_DAART));
arec.put("CODART",_mask->get(F_AART));
_form->find_field('B',odd_page,"H_CATMER").hide();
_form->find_field('B',odd_page,"TOT_CATMER").hide();
_form->setcatmer(FALSE);
break;
case 'D':
_cur->setkey(2);
darec.put("DESCR",_mask->get(F_DADES));
arec.put("DESCR",_mask->get(F_ADES));
_form->find_field('B',odd_page,"H_CATMER").disable();
_form->find_field('B',odd_page,"TOT_CATMER").hide();
_form->setcatmer(FALSE);
break;
case 'M':
_cur->setkey(3);
darec.put("GRMERC",_mask->get(F_DACATMER));
darec.put("CODART",_mask->get(F_DAART));
arec.put("GRMERC",_mask->get(F_ACATMER));
arec.put("CODART",_mask->get(F_AART));
_form->find_field('B',odd_page,"H_CATMER").show();
_form->find_field('B',odd_page,"TOT_CATMER").show();
_form->setcatmer(TRUE);
break;
}
_form->setdett_perart(
_mask->get_int(F_FROMLIVELLOART),
_mask->get_int(F_TOLIVELLOART),
_mask->get_int(F_FROMLIVELLOGIAC),
_mask->get_int(F_TOLIVELLOGIAC),
_mask->get_bool(F_TOTALIMAGAZZINI),
_mask->get_bool(F_TOTALIDEPOSITI));
joinexp << "ANNOES==" << _mask->get(F_ANNOES) << "|CODART==CODART";
TSortedfile *mag;
mag= new TSortedfile(LF_MAG,NULL,sortexp,filter,1);
_cur->relation()->replace(mag,1,joinexp);
_cur->setfilter(cfilter);
_cur->setregion(darec,arec);
}
bool TStampa_disp::set_print(int i)
{
while (TRUE) {
if (_mask->run() != K_ENTER)
return FALSE;
if (*_mask->get(F_ORDINE)=='A')
{
setprint_perarticoli();
} else {
setprint_permagazzini();
}
_form->print();
delete _form;
} // while true
return TRUE;
}
int mg3200(int argc, char* argv[])
{
TStampa_disp a;// derivata da Application e con uso di form
a.run(argc,argv,"Stampa disponibilità");
return 0;
}

1908
mg/mg3200.frm Executable file

File diff suppressed because it is too large Load Diff

1889
mg/mg3200a.frm Executable file

File diff suppressed because it is too large Load Diff

1784
mg/mg3200b.frm Executable file

File diff suppressed because it is too large Load Diff

174
mg/mg3300.cpp Executable file
View File

@ -0,0 +1,174 @@
#include <applicat.h>
#include <config.h>
#include "mglib05.h" //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
#include <mask.h>
#include <printer.h>
#include <relation.h>
#include <tabutil.h>
#include <urldefid.h>
#include <utility.h>
#include "mglib01.h"
#include "mg3300.h"
#include "mglib04.h"
// mg3300 Stampa
class TStampa_schedemag : public TApplication
{
TMask * _mask;
TForm * _form;
int _codicees;
bool _raggmag;
TString _daart,_aart,_damag,_amag;
TDate _dadata,_adata;
protected:
virtual bool create();
virtual bool destroy();
};
bool TStampa_schedemag::create()
{
_mask = new TMask("mg3300");
while (TRUE) {
if (_mask->run() != K_ENTER)
return FALSE;
// filtro << "CODART>=" <<'"' << _daart<<'"' << " && CODART<=" <<'"' << _aart<<'"' ;
// filtro << " && ANNOES==" <<'"' << _codicees <<'"' ;
// estremi di stanpa
_raggmag=_mask->get_bool(F_RAGGMAG);
_daart=_mask->get(F_DAART);
_aart=_mask->get(F_AART);
_damag=_mask->get(F_DAMAG);
_amag=_mask->get(F_AMAG);
_dadata=_mask->get_date(F_DADATA);
_adata=_mask->get_date(F_ADATA);
_codicees=1996;
TRectype darec(LF_ANAMAG),arec(LF_ANAMAG);
_form = new TForm("mg3300a", "");
TCursor& cur = *_form->cursor();
cur.setkey();
// trova il record iniziale
//darec.put("ANNOES",_codicees);
darec.put("CODART",_daart);
//darec.put("CODMAG",_damag);
// trova il record finale
//arec.put("ANNOES",_codicees);
arec.put("CODART",_aart);
//arec.put("CODMAG",_amag);
cur.setregion(darec,arec);
_form->print();
delete _form;
} // while true
return TRUE;
}
bool TStampa_schedemag::destroy()
{
delete _mask;
return TRUE;
}
// mg3300 Stampa
class TStampa_schede_mag : public TPrint_app2
{
TMask * _mask;
TForm * _form; // to be moved into TPrint_application
int _codicees;
bool _raggmag;
TString _daart,_aart,_damag,_amag;
TDate _dadata,_adata;
protected:
virtual bool print_one(int file);
virtual bool user_create();
virtual bool user_destroy();
virtual bool set_print(int i=1);
virtual void set_page(int file,int count);
public:
TStampa_schede_mag() {}
};
bool TStampa_schede_mag ::print_one(int file)
{
return TRUE;
}
void TStampa_schede_mag ::set_page(int file,int count)
{
}
bool TStampa_schede_mag::set_print(int i)
{
int s;
if (_mask->run() != K_ENTER)
return FALSE;
// filtro << "CODART>=" <<'"' << _daart<<'"' << " && CODART<=" <<'"' << _aart<<'"' ;
// filtro << " && ANNOES==" <<'"' << _codicees <<'"' ;
// estremi di stanpa
_raggmag=_mask->get_bool(F_RAGGMAG);
_daart=_mask->get(F_DAART);
_aart=_mask->get(F_AART);
_damag=_mask->get(F_DAMAG);
_amag=_mask->get(F_AMAG);
_dadata=_mask->get_date(F_DADATA);
_adata=_mask->get_date(F_ADATA);
_codicees=1996;
TRectype darec(LF_MAG),arec(LF_MAG);
TCursor& cur = *_form->cursor();
cur.setkey();
// trova il record iniziale
darec.put("ANNOES",_codicees);
darec.put("CODART",_daart);
darec.put("CODMAG",_damag);
// trova il record finale
arec.put("ANNOES",_codicees);
arec.put("CODART",_aart);
arec.put("CODMAG",_amag);
cur.setregion(darec,arec);
return TRUE;
}
bool TStampa_schede_mag::user_create()
{
_mask = new TMask("mg3300");
_form = new TForm("mg3300a", "");
add_cursor(_form->cursor());
add_file(_form->cursor()->file().num());
return TRUE;
}
bool TStampa_schede_mag::user_destroy()
{
delete _mask;
delete _form;
return TRUE;
}
int mg3300(int argc, char* argv[])
{
//TStampa_schede_mag a; // derivata da Printapp
TStampa_schedemag a;// derivata da Application e con uso di form
a.run(argc,argv,"Stampa schede di magazzino");
return 0;
}

142
mg/mg3300.frm Executable file
View File

@ -0,0 +1,142 @@
USE LF_ANAMAG
JOIN LF_MAG TO LF_ANAMAG INTO CODART==CODART ANNOES=="1996"
JOIN MAG TO LF_MAG INTO CODTAB==CODMAG
JOIN MAG TO LF_MAG ALIAS 500 INTO CODTAB==CODMAG[1,3]
SORT LF_RMOVMAG BY LF_MOVMAG->DATAREG NUMREG NRIG
USING LF_MOVMAG INTO NUMREG==NUMREG
JOIN TO LF_MAG KEY 2 INTO CODART==CODART CODMAG==CODMAG LIVGIAC==LIVELLO
JOIN LF_MOVMAG TO LF_RMOVMAG INTO NUMREG==NUMREG
JOIN LF_UMART TO LF_ANAMAG INTO CODART==CODART
JOIN LF_UMART TO LF_UMART KEY 2 ALIAS 349 INTO CODART==CODART UM==UM
END
DESCRIPTION
BEGIN
47->* "Anagrafica articoli"
109->* "Archivio Giacenze"
MAG->* "Tabella magazzini"
110->* "Movimenti di magazzino"
111->* "Righe Movimenti di magazzino"
49->* "Unità di misura articoli"
END
GENERAL
BEGIN
OFFSET 0 0
FONT "Courier New"
SIZE 12
CARATTERE "X"
INIZIALE 5 2
FINALE 133
END
SECTION HEADER ODD 12
STRINGA 100 20 1
BEGIN
PROMPT 1 10 "----------------------------------------------------"
END
STRINGA 102 20 1
BEGIN
PROMPT 1 1 "----------------------------------------------------"
END
END
SECTION BODY ODD 2
STRINGA 69 20 1
BEGIN
KEY "CODICE GRUPPO"
PROMPT 2 1 "Raggruppamento "
FIELD CODART[1,3]
END
SECTION INFO_ARTICOLO 1 50 1 GROUP
STRINGA 10 20 1
BEGIN
KEY "CODICE articolo"
PROMPT 1 1 ""
MESSAGE _USER,CODGRUPPOART
END
STRINGA 11 50 1
BEGIN
KEY "DESCR.articolo"
PROMPT 1 2 ""
MESSAGE _USER,GRUPPOART
END
END //info articolo
SECTION INFO_LIVGIAC 1 1 1 GROUP
STRINGA 20 20 1
BEGIN
KEY "CODICE articolo"
PROMPT 1 1 ""
MESSAGE _USER,CODGRUPPOART|RESET,FF_STAMPASALDOPREC
END
STRINGA 21 50 1
BEGIN
KEY "Livello giac"
PROMPT 5 1 "Livello "
FIELD 109->livello
MESSAGE RESET,99
END
END // INFO livgiac
SECTION INFO_MAG 1 1 1 GROUP
END // INFO magazzino
SECTION SCHEDA 1 1 1 FILE LF_MAG GROUP CODART
SECTION MOVIMENTI 1 1 1 FILE LF_RMOVMAG
SECTION MOVIMENTO 1 1 1 FILE LF_RMOVMAG GROUP NUMREG
SECTION RIGA_PREC 1 1 1 STREXPR LF_MOVMAG->DATAREG<"19960203"
NUMBER 100 12
BEGIN
PROMPT 1 1 ""
MESSAGE _USER,SALDO|ADD,FF_SALDOPREC_MOV|RESET,FF_STAMPASALDOPREC
END
END // riga di data preceDente
SECTION RIGA_COMP 1 1 1 STREXPR LF_MOVMAG->DATAREG>="19960203"
NUMBER 100 12
BEGIN
PROMPT 1 1 ""
MESSAGE _USER,SALDO|ADD,FF_SALDO_MOV|"1",FF_STAMPASALDOPREC
END
END // riga di data compresa
END // loop movimento
SECTION SALDO_PREC 1 1 1 NUMEXPR #FF_STAMPASALDOPREC=1
NUMBER FF_SALDOPRECSCHEDA 12
BEGIN
PROMPT 1 1 ""
MESSAGE INC,FF_STAMPASALDOPREC
END
END // saldo prec
END // loop movimenti
END // loop schede
END // *****
SECTION FOOTER ODD 2
STRINGA 100
BEGIN
KEY "NUMP"
PROMPT 50 1 "-----"
END
NUMERO 101
BEGIN
KEY "NUMPAGE"
PROMPT 50 2 ""
MESSAGE _PAGENO
PICTURE "-###-"
END
END

9
mg/mg3300.h Executable file
View File

@ -0,0 +1,9 @@
#define F_SCHEDA 101
#define F_DAART 102
#define F_AART 103
#define F_DAMAG 104
#define F_AMAG 105
#define F_DADATA 106
#define F_ADATA 107
#define F_RAGGMAG 108

92
mg/mg3300.uml Executable file
View File

@ -0,0 +1,92 @@
#include "mg3300.h"
PAGE "Stampa Schede di magazzino" -1 -1 78 12
LISTBOX F_SCHEDA 30
BEGIN
PROMPT 2 1 "Tipo scheda "
ITEM "ORDF|Ordinato fornitori"
ITEM "ORDC|Ordinato clienti"
ITEM "ACL|A conto lavoro"
ITEM "INCL|In conto lavoro"
ITEM "PRODC|Componenti in produzione "
ITEM "PRODF|Finiti in produzione "
END
STRING F_DAART 20
BEGIN
PROMPT 2 3 "Dall'articolo "
FLAGS "U"
USE LF_ANAMAG
INPUT CODART F_DAART
DISPLAY "Codice " CODART
DISPLAY "Descrizione@50" DESCR
OUTPUT F_DAART CODART
GROUP 1
CHECKTYPE NORMAL
END
STRING F_AART 20
BEGIN
PROMPT 40 3 "All'articolo "
FLAGS "U"
COPY USE F_DAART
INPUT CODART F_AART
COPY DISPLAY F_DAART
OUTPUT F_AART CODART
GROUP 1
CHECKTYPE NORMAL
END
STRING F_DAMAG 20
BEGIN
PROMPT 2 5 "Dal magazzino "
FLAGS "U"
USE MAG
INPUT CODTAB F_DAMAG
DISPLAY "Codice " CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_DAMAG CODTAB
GROUP 2
CHECKTYPE NORMAL
END
STRING F_AMAG 20
BEGIN
PROMPT 40 5 "Al magazzino "
FLAGS "U"
COPY USE F_DAMAG
INPUT CODTAB F_AMAG
COPY DISPLAY F_DAMAG
OUTPUT F_AMAG CODTAB
GROUP 2
CHECKTYPE NORMAL
END
DATE F_DADATA
BEGIN
PROMPT 2 7 "Dalla data "
END
DATE F_ADATA
BEGIN
PROMPT 40 7 "Alla data "
END
BOOLEAN F_RAGGMAG
BEGIN
PROMPT 2 9 "Raggruppo per magazzini"
END
BUTTON DLG_OK 10 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
ENDMASK

346
mg/mg3300a.frm Executable file
View File

@ -0,0 +1,346 @@
#include "mg3300.h"
USE LF_ANAMAG
SORT LF_RMOVMAG BY LF_MOVMAG->DATAREG NUMREG NRIG
USING LF_MOVMAG INTO NUMREG==NUMREG
JOIN TO LF_ANAMAG KEY 2 INTO CODART==CODART
JOIN LF_MOVMAG TO LF_RMOVMAG INTO NUMREG==NUMREG
JOIN CAU TO LF_MOVMAG INTO CODTAB==CODCAUS
JOIN MAG TO LF_RMOVMAG ALIAS 501 INTO CODTAB==CODMAG
JOIN MAG TO LF_RMOVMAG ALIAS 500 INTO CODTAB==CODMAG[1,3]
JOIN LF_UMART TO LF_ANAMAG INTO CODART==CODART
JOIN LF_UMART TO LF_RMOVMAG KEY 2 ALIAS 349 INTO CODART==CODART UM==UM
END
DESCRIPTION
BEGIN
47->* "Anagrafica articoli"
109->* "Archivio Giacenze"
MAG->* "Tabella magazzini"
110->* "Movimenti di magazzino"
111->* "Righe Movimenti di magazzino"
49->* "Unità di misura articoli"
END
GENERAL
BEGIN
OFFSET 0 0
FONT "Courier New"
SIZE 12
CARATTERE "X"
INIZIALE 5 2
FINALE 133
END
SECTION HEADER ODD 5
STRINGA 1 40 1
BEGIN
KEY "nome ditta"
PROMPT 1 1 "Ditta "
MESSAGE _DITTA, !RAGSOC
END
STRINGA 2 10
BEGIN
KEY "Data"
PROMPT 120 1 "Data "
MESSAGE _TODAY
END
NUMERO 3 7
BEGIN
KEY "Nr. pagina"
PROMPT 137 1 "Pagina "
MESSAGE _PAGENO
END
NUMERO 4 45
BEGIN
KEY "Intestazione stampa"
PROMPT 45 2 "Stampa schede di magazzino :"
MESSAGE _USER,TIPOSCHEDA
END
STRINGA 5 146
BEGIN
KEY "Separatore (iniziale)"
PROMPT 1 3 "------------------------------------------------------------------------------------------------------------------------------------------------------"
END
STRINGA 6 12
BEGIN
PROMPT 27 4 "UM"
END
NUMBER 7 12
BEGIN
PROMPT 31 4 "Quantità"
END
NUMBER 8 12
BEGIN
PROMPT 42 4 "Prezzo"
END
NUMBER 9 12
BEGIN
PROMPT 54 4 "Valore"
END
STRINGA 5 146
BEGIN
KEY "Separatore (iniziale)"
PROMPT 1 5 "------------------------------------------------------------------------------------------------------------------------------------------------------"
END
END
SECTION BODY ODD 2
NUMBER 100 1
BEGIN
FLAGS "H"
MESSAGE RESET,FF_SALDO_GART|RESET,FF_VALORE_GART
END
SECTION HEADER_CATMER 1 2 1 GROUP
STRINGA 10 20 1
BEGIN
KEY "CODICE CATMER"
PROMPT 1 1 "Gruppo merceologico "
MESSAGE _USER,CODCATMER
END
STRINGA 11 50 1
BEGIN
KEY "DESCR."
PROMPT 30 1 ""
MESSAGE _USER,CATMER
END
END //HEADER catmer
SECTION HEADER_ARTICOLO 1 2 1 GROUP
STRINGA 10 20 1
BEGIN
KEY "CODICE articolo"
PROMPT 1 1 "Articolo "
MESSAGE _USER,CODGRUPPOART
END
STRINGA 11 50 1
BEGIN
KEY "DESCR.articolo"
PROMPT 30 1 ""
MESSAGE _USER,GRUPPOART
END
END //HEADER articolo
SECTION GRUPPI_ARTICOLO 1 0 0 FILE LF_ANAMAG GROUP CODART[1,1]
SECTION FILE_LF_RMOVMAG 1 1 0 FILE LF_RMOVMAG
SECTION HEADER_LIVGIAC 1 3 3 GROUP
STRINGA 10 20 1
BEGIN
KEY "CODICE articolo"
PROMPT 1 1 "Articolo "
MESSAGE _USER,CODGRUPPOART
END
STRINGA 11 50 1
BEGIN
KEY "DESCR.articolo"
PROMPT 30 1 ""
MESSAGE _USER,GRUPPOART
END
STRINGA 20 20 1
BEGIN
KEY "CODICE livello"
PROMPT 1 2 ""
MESSAGE _USER,CODGRUPPOGIAC|RESET,FF_STAMPASALDOPREC
END
STRINGA 21 50 1
BEGIN
KEY "Livello giac"
PROMPT 23 2 ""
MESSAGE _USER,GRUPPOGIAC
END
SECTION HEADER_MAG 1 1 1 GROUP
STRINGA 22 50 1
BEGIN
KEY "mag"
PROMPT 5 1 "Magazzino "
FIELD 500@->S0
END
SECTION HEADER_DEP 1 1 1 GROUP
STRINGA 23 50 1
BEGIN
KEY "dep"
PROMPT 7 1 "Deposito "
FIELD 501@->S0
END
END // HEADER deposito
END // HEADER magazzino
STRINGA 24 50 1
BEGIN
KEY "dep"
PROMPT 1 3 "------------------------------------------------------------------------------------------------------------------------------------------------------"
END
END // HEADER livgiac
STRINGA 10
BEGIN
FLAGS "H"
MESSAGE RESET,FF_SALDOPREC_SCHEDA|RESET,FF_VALOREPREC_SCHEDA
END
SECTION SCHEDA_PREC 1 1 1 FILE LF_RMOVMAG GROUP CODART[1,3]
NUMERO 10
BEGIN
FLAGS "H"
FIELD LF_RMOVMAG->NUMREG
MESSAGE COPY,FF_NUM_MOV|RESET,FF_SALDOPREC_MOV|RESET,FF_VALOREPREC_MOV
END
NUMERO 10
BEGIN
FLAGS "H"
FIELD LF_MOVMAG->DATAREG
MESSAGE COPY,FF_DATA_MOV
END
SECTION MOVIMENTO_PREC 1 0 1 FILE LF_RMOVMAG GROUP NUMREG
STRINGA 100 12
BEGIN
PROMPT 1 1 ">>>"
MESSAGE _STREXPR,LF_RMOVMAG->CODART+" "+LF_RMOVMAG->LIVGIAC+" "+LF_RMOVMAG->CODMAG
END
STRINGA 101 12
BEGIN
PROMPT 27 1 ""
FIELD LF_RMOVMAG->UM
END
NUMBER 102 12
BEGIN
FLAGS "H"
MESSAGE _NUMEXPR,LF_RMOVMAG->QUANT*349@->FC|COPY,103
END
NUMBER 103 12
BEGIN
PROMPT 31 1 ""
PICTURE "###.###,@##"
MESSAGE _USER,SALDO|ADD,FF_SALDOPREC_MOV|RESET,FF_STAMPASALDOPREC
END
NUMBER 104 12
BEGIN
PROMPT 42 1 ""
PICTURE "###.###.###"
FIELD LF_RMOVMAG->PREZZO
END
NUMBER 105 12
BEGIN
PROMPT 54 1 ""
PICTURE "###.###.###"
MESSAGE _NUMEXPR,LF_RMOVMAG->PREZZO*#102|ADD,FF_VALOREPREC_MOV
END
END // loop movimento
NUMBER FF_NUM_MOV 32
BEGIN
PROMPT 2 1 "Mov. "
END
STRINGA FF_DATA_MOV 10
BEGIN
PROMPT 12 1 "del "
FIELD LF_MOVMAG->DATAREG
END
STRINGA 100 2
BEGIN
PROMPT 27 1 ""
FIELD LF_UMART->UM
END
NUMBER FF_SALDOPREC_MOV 12
BEGIN
PROMPT 31 1 ""
PICTURE "###.###,@##"
MESSAGE ADD,FF_SALDOPREC_SCHEDA
END
NUMBER 100 12
BEGIN
PROMPT 42 1 ""
PICTURE "###.###.###"
MESSAGE _NUMEXPR,#FF_VALOREPREC_MOV/#FF_SALDOPREC_MOV
END
NUMBER FF_VALOREPREC_MOV 12
BEGIN
PROMPT 54 1 ""
PICTURE "###.###.###"
MESSAGE ADD,FF_VALOREPREC_SCHEDA
END
END // loop scheda
SECTION TOTALI_SCHEDA 1 1 3 GROUP
NUMBER FF_STAMPASALDOPREC
BEGIN
END
STRINGA 100 15
BEGIN
PROMPT 1 1 "Totale scheda"
END
STRINGA 100 2
BEGIN
PROMPT 27 1 ""
FIELD LF_UMART->UM
MESSAGE COPY,FF_UM_GART
END
NUMBER FF_SALDOPREC_SCHEDA 12
BEGIN
PROMPT 31 1 ""
PICTURE "###.###,@##"
MESSAGE ADD,FF_SALDO_GART
END
NUMBER FF_VALOREPREC_SCHEDA 12
BEGIN
PROMPT 54 1 ""
PICTURE "###.###.###"
MESSAGE ADD,FF_VALORE_GART
END
END // TOTALI scheda per articolo
END // loop RMOVMAG
END // ragg articolo (codice o catmer)
SECTION TOTALI_GRUPPIART 1 1 3 GROUP
STRINGA 100 15
BEGIN
PROMPT 1 1 "Totale scheda"
END
STRINGA FF_UM_GART 2
BEGIN
PROMPT 27 1 ""
FIELD LF_UMART->UM
END
NUMBER FF_SALDO_GART 12
BEGIN
PROMPT 31 1 ""
PICTURE "###.###,@##"
END
NUMBER FF_VALORE_GART 12
BEGIN
PROMPT 54 1 ""
PICTURE "###.###.###"
END
END // TOTALI scheda per articolo
END // *****
SECTION FOOTER ODD 2
STRINGA 100
BEGIN
KEY "NUMP"
PROMPT 50 1 "-----"
END
NUMERO 101
BEGIN
KEY "NUMPAGE"
PROMPT 50 2 ""
MESSAGE _PAGENO
PICTURE "-###-"
END
END

269
mg/mg3400.cpp Executable file
View File

@ -0,0 +1,269 @@
#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 "mglib03.h"
#include "mg3400.h"
#include "mg3frm.h"
class TStgiacprezzi_mask: public TMask
{
static bool handle_ragg(TMask_field &fld, KEY k); // handler
static bool handle_liv(TMask_field &fld, KEY k); // handler
static bool handle_subord(TMask_field &fld, KEY k); // handler
public:
TStgiacprezzi_mask();
~TStgiacprezzi_mask(){};
};
TStgiacprezzi_mask::TStgiacprezzi_mask():
TMask("mg3400")
{
TMag_livelli giaclev("FCA"),artlev("FCG");
set_handler(F_TOLIVELLOART, handle_liv);
set_handler(F_TOLIVELLOGIAC, handle_liv);
set_handler(F_ORDINE, handle_ragg);
set_handler(F_DETTAGLIODEP, handle_ragg);
set_handler(F_DETTAGLIOMAG, handle_ragg);
set_handler(F_ORDINEART,handle_subord);
if (!artlev.enabled()) {
TMask_field &f1=field(F_RAGGCODICE);
f1.reset(); f1.check();f1.hide();
}
if (!giaclev.enabled()) {
TMask_field &f2=field(F_RAGGLIVGIAC);
f2.reset(); f2.check();f2.hide();
}
}
bool TStgiacprezzi_mask::handle_subord(TMask_field &fld, KEY k)
{
if (k == K_SPACE)
{
TOperable_field &fraggcod=(TOperable_field &)fld.mask().field(F_RAGGCODICE);
TOperable_field &fragggiac=(TOperable_field &)fld.mask().field(F_RAGGLIVGIAC);
switch (fld.get()[1]) {
case 'C':
if (fld.mask().get(F_ORDINE)=="A")
fraggcod.enable();
else {
if (!fld.mask().get_bool(F_DETTAGLIOMAG) || !fld.mask().get_bool(F_DETTAGLIODEP))
{
fraggcod.reset(); fraggcod.disable();
fragggiac.reset(); fragggiac.disable();
fraggcod.do_message(0);fragggiac.do_message(0);
}
}
break;
case 'M':
case 'D':
fraggcod.reset(); fraggcod.check();fraggcod.disable();
break;
}
}
return TRUE;
}
bool TStgiacprezzi_mask::handle_liv(TMask_field &fld, KEY k)
{
if (k == K_TAB)
{
TOperable_field &ftotmag=(TOperable_field &)fld.mask().field(F_TOTALIMAGAZZINI);
TOperable_field &fdettmag=(TOperable_field &)fld.mask().field(F_DETTAGLIOMAG);
if (fld.mask().get(F_ORDINE)=="A")
{
if (fld.mask().get_int(F_TOLIVELLOART) || fld.mask().get_int(F_TOLIVELLOGIAC))
{
// raggruppamenti prima del dettaglio magazzini
ftotmag.reset(); ftotmag.disable();ftotmag.do_message(0);
} else {
ftotmag.enable();
}
}
}
return TRUE;
}
bool TStgiacprezzi_mask::handle_ragg(TMask_field &fld, KEY k)
{
if (k == K_SPACE)
{
TOperable_field &ftotmag=(TOperable_field &)fld.mask().field(F_TOTALIMAGAZZINI);
TOperable_field &fraggcod=(TOperable_field &)fld.mask().field(F_RAGGCODICE);
TOperable_field &fragggiac=(TOperable_field &)fld.mask().field(F_RAGGLIVGIAC);
if (fld.mask().get(F_ORDINE)=="M")
{
ftotmag.enable();
if (!fld.mask().get_bool(F_DETTAGLIOMAG) || !fld.mask().get_bool(F_DETTAGLIODEP))
{
fraggcod.reset(); fraggcod.disable();
fragggiac.reset(); fragggiac.disable();
fraggcod.do_message(0);fragggiac.do_message(0);
return TRUE;
}
}
fraggcod.enable();
fragggiac.enable();
}
return TRUE;
}
// mg3300 Stampa
class TStampa_giacprezzi : public TPrint_application
{
TArray * _files;
TStgiacprezzi_mask * _mask;
TCursor * _cur;
TForm_stampemg * _form;
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) { }
void setprint_permagazzini();
void setprint_perarticoli();
public:
TStampa_giacprezzi() {}
virtual ~TStampa_giacprezzi() {}
};
// ORDINAMENTO
void TStampa_giacprezzi::setprint_perarticoli()
{
TRectype darec(LF_ANAMAG),arec(LF_ANAMAG);
TString cfilter,filter,joinexp;
TString sortexp("ANNOES|CODART|LIVELLO|CODMAG");
char subordine=*_mask->get(F_ORDINEART);
_form = new TForm_stampemg("mg3400a", "");
_cur = _form->cursor();
if (*_mask->get(F_DAMAG))
filter << "(CODMAG[1,3]>=" <<'"' << _mask->get(F_DAMAG)<< "\")&&" ;
if (*_mask->get(F_AMAG))
filter << "(CODMAG[1,3]<=" <<'"' << _mask->get(F_AMAG)<< "\")&&" ;
if (filter.not_empty())
filter.cut(filter.len()-2);
switch (subordine)
{
case 'C':
_cur->setkey(1);
darec.put("CODART",_mask->get(F_DAART));
arec.put("CODART",_mask->get(F_AART));
_form->find_field('B',odd_page,"H_CATMER").hide();
_form->find_field('B',odd_page,"TOT_CATMER").hide();
_form->setcatmer(FALSE);
break;
case 'D':
_cur->setkey(2);
darec.put("DESCR",_mask->get(F_DADES));
arec.put("DESCR",_mask->get(F_ADES));
_form->find_field('B',odd_page,"H_CATMER").disable();
_form->find_field('B',odd_page,"TOT_CATMER").hide();
_form->setcatmer(FALSE);
break;
case 'M':
_cur->setkey(3);
darec.put("GRMERC",_mask->get(F_DACATMER));
darec.put("CODART",_mask->get(F_DAART));
arec.put("GRMERC",_mask->get(F_ACATMER));
arec.put("CODART",_mask->get(F_AART));
_form->find_field('B',odd_page,"H_CATMER").show();
_form->find_field('B',odd_page,"TOT_CATMER").show();
_form->setcatmer(TRUE);
break;
}
_form->setdett_perart(
_mask->get_int(F_FROMLIVELLOART),
_mask->get_int(F_TOLIVELLOART),
_mask->get_int(F_FROMLIVELLOGIAC),
_mask->get_int(F_TOLIVELLOGIAC),
_mask->get_bool(F_TOTALIMAGAZZINI),
_mask->get_bool(F_TOTALIDEPOSITI));
joinexp << "ANNOES==" << _mask->get(F_ANNOES) << "|CODART==CODART";
TSortedfile *mag;
mag= new TSortedfile(LF_MAG,NULL,sortexp,filter,1);
_cur->relation()->replace(mag,1,joinexp);
_cur->setfilter(cfilter);
_cur->setregion(darec,arec);
}
void TStampa_giacprezzi::setprint_permagazzini()
{
char subordine=*_mask->get(F_ORDINEART);
TRectype darec(LF_MAG),arec(LF_MAG);
TString cfilter,sortexp,joinexp;
_form = new TForm_stampemg("mg3400b", "");
_cur = _form->cursor();
// setta il filtro sul cursore
if (*_mask->get(F_DAART))
cfilter << "(CODART>=" <<'"' << _mask->get(F_DAART)<< "\")&&" ;
if (*_mask->get(F_AART))
cfilter << "(CODART<=" <<'"' << _mask->get(F_AART)<< "\")&&" ;
if (cfilter.not_empty())
cfilter.cut(cfilter.len()-2);
// abilita/disabilita le sezioni dei totali
bool showdett;
showdett=_mask->get_bool(F_DETTAGLIODEP);
_form->setdett_permag(_mask->get_int(F_FROMLIVELLOART),_mask->get_int(F_TOLIVELLOART),_mask->get_int(F_FROMLIVELLOGIAC),_mask->get_int(F_TOLIVELLOGIAC),_mask->get_bool(F_TOTALIMAGAZZINI),_mask->get_bool(F_TOTALIDEPOSITI),showdett);
darec.put("ANNOES",_mask->get(F_ANNOES));
darec.put("CODMAG",_mask->get(F_DAMAG));
arec.put("ANNOES",_mask->get(F_ANNOES));
arec.put("CODMAG",_mask->get(F_AMAG));
_cur->setfilter(cfilter);
_cur->setregion(darec,arec);
}
bool TStampa_giacprezzi::set_print(int i)
{
while (TRUE) {
if (_mask->run() != K_ENTER)
return FALSE;
if (*_mask->get(F_ORDINE)=='A')
{
setprint_perarticoli();
} else {
setprint_permagazzini();
}
_form->print();
delete _form;
} // while true
return TRUE;
}
bool TStampa_giacprezzi::user_create()
{
_mask = new TStgiacprezzi_mask;
_files = new TArray();
_files->add(new TLocalisamfile(LF_MAG));
return TRUE;
}
bool TStampa_giacprezzi::user_destroy()
{
delete _mask;
delete _files;
return TRUE;
}
int mg3400(int argc, char* argv[])
{
TStampa_giacprezzi a;// derivata da Application e con uso di form
a.run(argc,argv,"Stampa giacenze e prezzi");
return 0;
}

1129
mg/mg3400a.frm Executable file

File diff suppressed because it is too large Load Diff

1783
mg/mg3400b.frm Executable file

File diff suppressed because it is too large Load Diff

98
mg/mg3500.cpp Executable file
View File

@ -0,0 +1,98 @@
#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 "mglib03.h"
#include "mg3500.h"
#include "mg3frm.h"
// mg3200 Stampa
class TStampa_storgiac : public TPrint_application
{
TArray * _files;
TMask * _mask;
TCursor * _cur;
TForm_stampemg * _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)
{ }
void setprint_permagazzini();
void setprint_perarticoli();
public:
TStampa_storgiac() {}
};
bool TStampa_storgiac::user_create()
{
_mask = new TMask("mg3500");
_files = new TArray();
_files->add(new TLocalisamfile(LF_STOMAG));
return TRUE;
}
bool TStampa_storgiac::user_destroy()
{
delete _mask;
delete _files;
return TRUE;
}
// ORDINAMENTO
bool TStampa_storgiac::set_print(int i)
{
while (TRUE) {
if (_mask->run() != K_ENTER)
return FALSE;
TRectype darec(LF_ANAMAG),arec(LF_ANAMAG);
TString cfilter,filter,joinexp;
joinexp << "ANNOESRIF==" << _mask->get(F_ANNOES) << "|CODART==CODART";
_form = new TForm_stampemg("mg3500", "");
_cur = _form->cursor();
switch (*_mask->get(F_ORDINE))
{
case 'C':
_cur->setkey(1);
darec.put("CODART",_mask->get(F_DAART));
arec.put("CODART",_mask->get(F_AART));
break;
case 'D':
_cur->setkey(2);
darec.put("DESCR",_mask->get(F_DADES));
arec.put("DESCR",_mask->get(F_ADES));
break;
}
_cur->relation()->replace(new TLocalisamfile(LF_STOMAG),1,joinexp);
_cur->setfilter(cfilter);
_cur->setregion(darec,arec);
_form->print();
delete _form;
} // while true
return TRUE;
}
int mg3500(int argc, char* argv[])
{
TStampa_storgiac a;// derivata da Application e con uso di form
a.run(argc,argv,"Stampa storico rimanenze");
return 0;
}

155
mg/mg3500.frm Executable file
View File

@ -0,0 +1,155 @@
#define LF_UMART2 349
USE LF_ANAMAG KEY 1
JOIN LF_STOMAG TO LF_ANAMAG INTO ANNOESRIF==1996 CODART==CODART
JOIN LF_UMART TO LF_ANAMAG INTO CODART==CODART
JOIN LF_UMART TO LF_STOMAG KEY 2 ALIAS LF_UMART2 INTO CODART==CODART UM==UM
END
DESCRIPTION
BEGIN
47->* "Anagrafica articoli"
109->* "Archivio Giacenze"
MAG->* "Tabella magazzini"
49->* "Unità di misura articoli"
END
GENERAL
BEGIN
OFFSET 0 0
FONT "Courier New"
SIZE 8
CARATTERE "X"
INIZIALE 5 2
FINALE 133
END
SECTION HEADER ODD 4
STRINGA 1 40 1
BEGIN
KEY "nome ditta"
PROMPT 1 1 "Ditta "
MESSAGE _DITTA, !RAGSOC
END
STRINGA 2 10
BEGIN
KEY "Data"
PROMPT 120 1 "Data "
MESSAGE _TODAY
END
NUMERO 3 7
BEGIN
KEY "Nr. pagina"
PROMPT 137 1 "Pagina "
MESSAGE _PAGENO
END
NUMERO 4 32
BEGIN
KEY "Intestazione stampa"
PROMPT 45 2 "Stampa storico rimanenze"
END
STRINGA 5 146
BEGIN
KEY "Separatore (iniziale)"
PROMPT 1 3 "------------------------------------------------------------------------------------------------------------------------------------------------------"
END
END
SECTION BODY ODD 1
SECTION H_ARTICOLO 1 3 1 GROUP
STRINGA 11 20
BEGIN
KEY "CODART"
PROMPT 2 1 "Articolo "
FIELD LF_ANAMAG->CODART
END
STRINGA 12 50
BEGIN
KEY "DESCR"
PROMPT 33 1 ""
FIELD LF_ANAMAG->DESCR
END
END
SECTION GRUPPI_ARTICOLO 1 0 0 COLUMNWISE FILE LF_STOMAG
SECTION HD_ANNI 1 2 1 COLUMNWISE GROUP
NUMERO 13 15
BEGIN
KEY "offset"
PROMPT 1 1 ""
END
NUMERO 13 6
BEGIN
KEY "ANNO"
PROMPT 2 1 "Anno"
END
STRINGA 15 12
BEGIN
KEY "QUANT"
PROMPT 4 1 "Quantità( "
FIELD LF_UMART->UM
END
NUMERO 16 12
BEGIN
KEY "VALORE"
PROMPT 5 1 ") Valore"
END
END // HD ANNI
SECTION BODY_ANNI 1 1 1 COLUMNWISE FILE LF_STOMAG GROUP CODART
NUMERO 13 15
BEGIN
KEY "offset"
PROMPT 1 1 ""
END
NUMERO 14 6
BEGIN
KEY "ANNO"
PROMPT 2 1 ""
FIELD LF_STOMAG->ANNOES
END
NUMERO 15 12
BEGIN
KEY "QUANT"
PROMPT 4 1 ""
PICTURE "###.###,@@@"
MESSAGE _NUMEXPR,LF_STOMAG->QUANT*LF_UMART2@->FC
END
NUMERO 16 12
BEGIN
KEY "VALORE"
PROMPT 5 1 ""
PICTURE "###.###.###"
MESSAGE _NUMEXPR,LF_STOMAG->VALORE*LF_UMART2@->FC
END
END // body anni
END // gruppi anni dello stesso articolo
END // section body, loop anamag
SECTION FOOTER ODD 2
STRINGA 100
BEGIN
KEY "NUMP"
PROMPT 50 1 "--------------"
END
NUMERO 101
BEGIN
KEY "NUMPAGE"
PROMPT 50 2 ""
MESSAGE _PAGENO
PICTURE "-###-"
END
END // fine footer
END // fine form