Prima versione funzionante della stampastatistiche temporali.

git-svn-id: svn://10.65.10.50/trunk@5658 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
angelo 1997-11-24 14:48:46 +00:00
parent c05d9177eb
commit 228b667b84
6 changed files with 1278 additions and 1 deletions

View File

@ -26,7 +26,7 @@ PROVVPAG|4|18|2|Provvigione pagata
PAGMAT|4|18|2|Pagamento maturato PAGMAT|4|18|2|Pagamento maturato
PROVVMAT|4|18|2|Provvigione maturata PROVVMAT|4|18|2|Provvigione maturata
TIPOPAGPR|2|1|0|Tipo pagamento della provvigione (?) TIPOPAGPR|2|1|0|Tipo pagamento della provvigione (?)
2 3
CODAGE+NROW| CODAGE+NROW|
CODAGE+ANNO+CODNUM+NDOC+NRIGA| CODAGE+ANNO+CODNUM+NDOC+NRIGA|
CODAGE+DATADOC|X CODAGE+DATADOC|X

View File

@ -1,5 +1,252 @@
// Stampa statistiche temporali per agente
#include <applicat.h>
#include <urldefid.h>
#include <form.h>
#include <mask.h>
#include <printer.h>
#include "provv.h"
#include "agenti.h"
#include "pr1400.h"
#include "pr1400a.h"
class TForm_stampaprstat:public TForm
{
TSorted_cursor *_cur;
TString_array _month_description;
public:
virtual TCursor* cursor() const { return (TCursor*)_cur; }
void set_cursor(TSorted_cursor* c) { _cur = c; }
void set_month_descriptions(const TString_array& d) { _month_description = d; }
virtual bool validate(TForm_item& fld, TToken_string& val);
TForm_stampaprstat(const char *name,const char *code) ;
virtual ~TForm_stampaprstat();
};
TForm_stampaprstat::TForm_stampaprstat(const char *name,const char *code)
: TForm(name,code)
{
}
TForm_stampaprstat::~TForm_stampaprstat()
{
}
bool TForm_stampaprstat::validate(TForm_item& fld, TToken_string& val)
{
const TString code(val.get(0)); // Codice del messaggio
if (code == "_MONTHRANGE") // Per settare la descrizione del range di mesi relativi a questo item
{
const short id = fld.id();
TString& descr = (TString&)_month_description[id - F_MON1];
fld.set(descr);
return TRUE;
}
else
return TForm::validate(fld, val);
}
class TStampa_statistiche_app:public TApplication
{
TMask *_msk;
TForm_stampaprstat *_frm;
protected:
virtual bool create();
virtual bool destroy();
virtual bool menu(MENU_TAG) ;
static bool daterange_handler(TMask_field& f, KEY key);
static bool agerange_handler(TMask_field& f, KEY key);
public:
TStampa_statistiche_app() {};
~TStampa_statistiche_app() {};
};
bool TStampa_statistiche_app::daterange_handler(TMask_field& f, KEY key)
{
if (f.to_check(key))
{
TMask& m = f.mask();
TDate from(m.get_date(F_DATEFROM));
TDate to(m.get_date(F_DATETO));
if (from.ok() && to.ok() && (to < from || to.year() != from.year()))
return f.error_box("L'intervallo date specificato non e' corretto");
}
return TRUE;
}
bool TStampa_statistiche_app::agerange_handler(TMask_field& f, KEY key)
{
if (f.to_check(key))
{
TMask& m = f.mask();
const bool ord_cod = m.get(F_ORDINAMENTO)[0] == 'C';
TString from(m.get(ord_cod ? F_DAAGE : F_DADES));
TString to(m.get(ord_cod ? F_AAGE : F_ADES));
if (from.not_empty() && to.not_empty() && to < from)
return f.error_box("L'intervallo agenti specificato non e' corretto");
}
return TRUE;
}
bool TStampa_statistiche_app::create()
{
_msk = new TMask("pr1400") ;
_frm = new TForm_stampaprstat("pr1400a","");
_msk->set_handler(F_DAAGE,agerange_handler);
_msk->set_handler(F_AAGE,agerange_handler);
_msk->set_handler(F_DADES,agerange_handler);
_msk->set_handler(F_ADES,agerange_handler);
_msk->set_handler(F_DATEFROM,daterange_handler);
_msk->set_handler(F_DATETO,daterange_handler);
dispatch_e_menu(MENU_ITEM(1));
return TRUE;
}
bool TStampa_statistiche_app::menu(MENU_TAG)
{
const char * months[] = { "Gen", "Feb", "Mar", "Apr", "Mag", "Giu",
"Lug", "Ago", "Set", "Ott", "Nov", "Dic" };
TString_array descriptions;
TString cond; // Stringa identificante la condizione di raggruppamento
TString desc; // Stringa per settare la descrizione del range di mesi
TString ds1, ds2; // Date in formato stringa per settare la condizione
TDate date_from, date_to;
TString age_from, age_to;
TString filter_expr;
TArray date_range; // Array di date per settare i range
TSorted_cursor * cur1 = new TSorted_cursor(_frm->relation(),"CODAGE|124->DATADOC","",1);
TSorted_cursor * cur2 = new TSorted_cursor(_frm->relation(),"RAGSOC|124->DATADOC","",2);
_frm->set_cursor(cur1);
TRectype rec_from(LF_AGENTI), rec_to(LF_AGENTI);
while (_msk->run() == K_ENTER)
{
const bool normal_order = _msk->get(F_ORDINAMENTO)[0] != 'R';
date_from = _msk->get_date(F_DATEFROM);
date_to = _msk->get_date(F_DATETO);
age_from = _msk->get(normal_order ? F_DAAGE : F_DADES);
age_to = _msk->get(normal_order ? F_AAGE : F_ADES);
if (!date_from.ok() || !date_to.ok())
{
error_box("Inserire un range di date valido");
continue;
}
descriptions.destroy();
date_range.destroy();
// Setta l'array per il range dei mesi
int month_from = date_from.month();
int month_to = date_to.month();
int inc_month = _msk->get_int(F_GROUPMONTH);
for (int m = month_from; m <= month_to; m += inc_month)
{
desc = months[m - 1];
const int index = m + inc_month > 12 ? 12 : m + inc_month - 1;
if (inc_month > 1)
{
desc << "-";
desc << months[index - 1];
}
descriptions.add(desc);
}
m = descriptions.items();
while (m < 12)
{
descriptions.add(""); // Aggiunge gli elementi vuoti necessari
m++;
}
_frm->set_month_descriptions(descriptions);
// Setta i range delle date per raggruppare le sottosezioni
TDate d(date_from);
for (m = 1; m <= 12; m++)
{
date_range.add(d);
if (d != botime)
{
d.addmonth(inc_month-1);
d.set_end_month();
if (d > date_to)
d = date_to;
date_range.add(d);
d += 1; // Primo giorno del mese successivo
if (d > date_to)
d = botime;
}
else
date_range.add(d); // Tutti quelli che eccedono la data di fine sono botime
}
// Setta le condizioni di raggruppamento per ognuna delle sottosezioni
// I nomi sono PRS1, PRS2, PRS3... PRS6
for (m = 1; m <= 12; m++)
{
desc.format("PRS%d",m);
TForm_subsection& ssec = (TForm_subsection&)_frm->find_field('B', odd_page, desc); // Sottosezione padre
const int base = 2 * (m-1);
ds1 = ((TDate&) date_range[base]).string(ANSI);
ds2 = ((TDate&) date_range[base+1]).string(ANSI);
cond.format("(ANSI(%d->DATADOC)>=\"%s\") && (ANSI(%d->DATADOC)<=\"%s\") && (%d->NRIGA==\"1\")",
LF_PROVV, (const char*)ds1, LF_PROVV, (const char*) ds2, LF_PROVV);
ssec.setcondition(cond, _strexpr);
}
filter_expr.format("(ANSI(%d->DATADOC)>=\"%s\") && (ANSI(%d->DATADOC)<=\"%s\")",
LF_PROVV, (const char*)date_from.string(ansi), LF_PROVV, (const char*) date_to.string(ANSI));
// Setta il filtro sul cursore (attenzione se e' ordinato per ragione sociale)
TSorted_cursor* cur = normal_order ? cur1 : cur2;
// Setta gli estremi (codagente o ragione sociale)
rec_from.zero();
rec_to.zero();
rec_from.put(normal_order ? AGE_CODAGE : AGE_RAGSOC, age_from);
rec_to.put(normal_order ? AGE_CODAGE : AGE_RAGSOC, age_to);
cur->setregion(rec_from, rec_to);
cur->setfilter(filter_expr,TRUE); // Update relation too...
_frm->set_cursor(cur);
// Stampa el todo
const int hh = 6;
const int fh = 1;
const int fl = printer().formlen();
int rows[4]; // Righe orizzontali
rows[0] = hh-2;
rows[1] = hh;
rows[2] = fl-1;
rows[3] = 0;
_frm->genera_intestazioni(odd_page, hh-1);
_frm->genera_fincatura(odd_page, hh-2, fl-1, rows);
_frm->print();
_msk->reset();
}
delete cur1;
delete cur2;
return FALSE;
}
bool TStampa_statistiche_app::destroy()
{
delete _msk;
delete _frm;
return TRUE;
}
int pr1400(int argc, char** argv) int pr1400(int argc, char** argv)
{ {
TStampa_statistiche_app a;
a.run(argc,argv,"Statistiche temporali");
return 0; return 0;
} }

12
pr/pr1400.h Executable file
View File

@ -0,0 +1,12 @@
#define F_DAAGE 101
#define F_AAGE 102
#define F_DADES 103
#define F_ADES 104
#define F_ORDINAMENTO 105
#define F_DATEFROM 106
#define F_DATETO 107
#define F_GROUPMONTH 108
#define F_DESFROM 109
#define F_DESTO 110
#define G_CODAGE 1
#define G_RAGSOC 2

130
pr/pr1400.uml Executable file
View File

@ -0,0 +1,130 @@
#include "pr1400.h"
PAGE "Stampa statistiche temporali" -1 -1 78 12
LISTBOX F_ORDINAMENTO 16
BEGIN
PROMPT 2 2 "Ordinamento per "
FLAGS "U"
ITEM "C|Codice"
MESSAGE HIDE,G_RAGSOC@|SHOW,G_CODAGE@
ITEM "R|Ragione sociale"
MESSAGE SHOW,G_RAGSOC@|HIDE,G_CODAGE@
END
GROUPBOX DLG_NULL 76 4
BEGIN
PROMPT 2 3 "Intervallo agenti"
END
STRING F_DAAGE 5
BEGIN
PROMPT 3 4 "Dall'agente "
FLAGS "UZ"
USE LF_AGENTI
INPUT CODAGE F_DAAGE
DISPLAY "Codice" CODAGE
DISPLAY "Descr@50" RAGSOC
OUTPUT F_DAAGE CODAGE
OUTPUT F_DESFROM RAGSOC
CHECKTYPE NORMAL
GROUP G_CODAGE
END
STRING F_DESFROM 50
BEGIN
PROMPT 25 4 ""
FLAGS "D"
GROUP G_CODAGE
END
STRING F_AAGE 5
BEGIN
PROMPT 3 5 "All'agente "
FLAGS "UZ"
COPY USE F_DAAGE
INPUT CODAGE F_AAGE
COPY DISPLAY F_DAAGE
OUTPUT F_AAGE CODAGE
OUTPUT F_DESTO RAGSOC
CHECKTYPE NORMAL
GROUP G_CODAGE
END
STRING F_DESTO 50
BEGIN
PROMPT 25 5 ""
FLAGS "D"
GROUP G_CODAGE
END
STRING F_DADES 50
BEGIN
PROMPT 3 4 "Dall'agente "
USE LF_AGENTI KEY 2
INPUT RAGSOC F_DADES
DISPLAY "Descr@50" RAGSOC
DISPLAY "Codice@20" CODAGE
OUTPUT F_DADES RAGSOC
CHECKTYPE NORMAL
GROUP G_RAGSOC
END
STRING F_ADES 50
BEGIN
PROMPT 3 5 "All'agente "
COPY USE F_DADES
INPUT RAGSOC F_ADES
COPY DISPLAY F_DADES
OUTPUT F_ADES RAGSOC
CHECKTYPE NORMAL
GROUP G_RAGSOC
END
GROUPBOX DLG_NULL 38 3
BEGIN
PROMPT 2 7 "Intervallo date"
END
DATE F_DATEFROM
BEGIN
PROMPT 3 8 "Da "
END
DATE F_DATETO
BEGIN
PROMPT 24 8 "A "
END
LISTBOX F_GROUPMONTH 2
BEGIN
PROMPT 42 8 "Mesi da raggruppare "
ITEM "1|1"
ITEM "2|2"
ITEM "3|3"
ITEM "4|4"
ITEM "5|5"
ITEM "6|6"
ITEM "7|7"
ITEM "8|8"
ITEM "9|9"
ITEM "10|10"
ITEM "11|11"
ITEM "12|12"
END
BUTTON DLG_PRINT 10 2
BEGIN
PROMPT -12 -1 "~Stampa"
MESSAGE EXIT,K_ENTER
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
ENDMASK

846
pr/pr1400a.frm Executable file
View File

@ -0,0 +1,846 @@
// Form per la stampa delle statistiche temporali per agente.
// Usare frmcomp.
#include "pr1400a.h"
#define G_TOTAGE 1 // Gruppo totale agenti: (provvigione e fatturato delle colonne)
// Le seguenti defines servono per identificare i campi di stampa importi
USE LF_AGENTI
JOIN LF_PROVV KEY 3 INTO CODAGE==CODAGE
END
DESCRIPTION
BEGIN
END
GENERAL
BEGIN
OFFSET 0 0
FONT "Courier New"
SIZE 10
END
SECTION HEADER ODD 6
STRINGA 1 40 1
BEGIN
KEY "nome ditta"
PROMPT 1 1 "Ditta "
MESSAGE _DITTA, !RAGSOC
END
STRINGA 2 10
BEGIN
KEY "Data"
PROMPT 76 1 "Data "
MESSAGE _TODAY
END
NUMERO 3 7
BEGIN
KEY "Nr. pagina"
PROMPT 92 1 "Pagina "
MESSAGE _PAGENO
END
NUMERO 4 32
BEGIN
KEY "Intestazione stampa"
PROMPT 40 2 "Stampa statistiche temporali"
END
END
SECTION BODY ODD 9 COLUMNWISE
STRING 1 6
BEGIN
SPECIAL STRINGA INTESTAZIONE "Agente" "Agente"
SPECIAL NUMERO OFFSET "0" "Offset iniziale campo"
SPECIAL STRINGA FINCATURA "XX" "Fincatura sinistra e destra"
KEY "Codice agente"
PROMPT 1 1 ""
FIELD CODAGE
MESSAGE RESET,G_TOTAGE@
END
STRING 2 30
BEGIN
SPECIAL STRINGA INTESTAZIONE "Ragione sociale" "Ragione sociale"
SPECIAL NUMERO OFFSET "0" "Offset iniziale campo"
SPECIAL STRINGA FINCATURA "XX" "Fincatura sinistra e destra"
KEY "Ragione Sociale agente"
PROMPT 2 1 ""
FIELD RAGSOC
END
STRINGA 3 7
BEGIN
SPECIAL STRINGA INTESTAZIONE "@CMese" "Mese (1)"
SPECIAL NUMERO OFFSET "0" "Offset iniziale campo"
SPECIAL STRINGA FINCATURA "XX" "Fincatura sinistra e destra"
KEY "Mese (1)"
PROMPT 3 1 ""
END
NUMBER 4 14
BEGIN
SPECIAL STRINGA INTESTAZIONE "@CFatturato" "Fatturato (1)"
SPECIAL NUMERO OFFSET "0" "Offset iniziale campo"
SPECIAL STRINGA FINCATURA "XX" "Fincatura sinistra e destra"
KEY "Fatturato (1)"
PROMPT 4 1 ""
END
NUMBER 5 14
BEGIN
SPECIAL STRINGA INTESTAZIONE "@CProvvigione" "Provvigione (1)"
SPECIAL NUMERO OFFSET "0" "Offset iniziale campo"
SPECIAL STRINGA FINCATURA "XX" "Fincatura sinistra e destra"
KEY "Provvigione (1)"
PROMPT 5 1 ""
END
STRINGA 6 7
BEGIN
SPECIAL STRINGA INTESTAZIONE "@CMese" "Mese (2)"
SPECIAL NUMERO OFFSET "0" "Offset iniziale campo"
SPECIAL STRINGA FINCATURA "XX" "Fincatura sinistra e destra"
KEY "Mese (2)"
PROMPT 6 1 ""
END
NUMBER 7 14
BEGIN
SPECIAL STRINGA INTESTAZIONE "@CFatturato" "Fatturato (2)"
SPECIAL NUMERO OFFSET "0" "Offset iniziale campo"
SPECIAL STRINGA FINCATURA "XX" "Fincatura sinistra e destra"
KEY "Fatturato (2)"
PROMPT 7 1 ""
END
NUMBER 8 14
BEGIN
SPECIAL STRINGA INTESTAZIONE "Provvigione" "Provvigione (2)"
SPECIAL NUMERO OFFSET "0" "Offset iniziale campo"
SPECIAL STRINGA FINCATURA "XX" "Fincatura sinistra e destra"
KEY "Provvigione (2)"
PROMPT 8 1 ""
END
/* La sub-section principale e' sulle righe provvigionali
* Seguono poi 12 sottosezioni: PRS1, PRS2, PRS3, PRS4, PRS5, PRS6 ecc..
* tutte con altezza minima 0 e nascoste, in quanto servono solo per
* effettuare totalizzazioni.
* Ognuna avra' una condizione di raggruppamento diverso, (STREXPR) settata
* a run-time dal programma: il controllo viene effettuato sul
* range della data e sul numero di riga (sempre uguale ad 1, per evitare
* che faccia le somme piu' volte dello stesso totale documento).
* La condizione qui elencata (LF_PROVV->CODAGE==LF_AGENTI->CODAGE) e' puramente
* fittizia.
* Il totale delle sottosezioni e' 12, perche' le statistiche sono,
* al massimo, per anno: il raggruppamento minimo e' di un mese.
* I casi limite sono percio' questi: tutto l'anno con raggruppamento di
* 1 mese alla volta oppure tutto l'anno in un raggruppamento unico di 12
* mesi.
*/
SECTION PRS 1 0 0 FILE LF_PROVV
FLAGS "H"
SECTION PRS1 1 0 0 STREXPR LF_PROVV->CODAGE==LF_AGENTI->CODAGE
FLAGS "H"
STRING 101 7
BEGIN
KEY "Raggruppamento mese (1)"
PROMPT 3 1 ""
FLAGS "D"
MESSAGE _MONTHRANGE|COPY,F_MON1
END
NUMBER 201 14
BEING
KEY "Fatturato (1)"
PROMPT 4 1 ""
PICTURE "."
FIELD LF_PROVV->IMPDOC
FLAGS "H"
MESSAGE ADD,F_TOTFAT|ADD,F_FAT1
END
NUMBER 301 14
BEING
KEY "Provvigione (1)"
PROMPT 5 1 ""
PICTURE "."
FIELD LF_PROVV->IMPPRDOC
FLAGS "H"
MESSAGE ADD,F_TOTPRO|ADD,F_PRO1
END
END
SECTION PRS2 1 0 0 STREXPR LF_PROVV->CODAGE==LF_AGENTI->CODAGE
FLAGS "H"
STRING 102 7
BEGIN
KEY "Raggruppamento mese (2)"
PROMPT 6 1 ""
FLAGS "D"
MESSAGE _MONTHRANGE|COPY,F_MON2
END
NUMBER 202 14
BEING
KEY "Fatturato (2)"
PROMPT 7 1 ""
PICTURE "."
FIELD LF_PROVV->IMPDOC
FLAGS "H"
MESSAGE ADD,F_TOTFAT|ADD,F_FAT2
END
NUMBER 302 14
BEING
KEY "Provvigione (2)"
PROMPT 8 1 ""
PICTURE "."
FIELD LF_PROVV->IMPPRDOC
FLAGS "H"
MESSAGE ADD,F_TOTPRO|ADD,F_PRO2
END
END
SECTION PRS3 1 0 0 STREXPR LF_PROVV->CODAGE==LF_AGENTI->CODAGE
FLAGS "H"
STRING 103 7
BEGIN
KEY "Raggruppamento mese (1)"
PROMPT 3 1 ""
FLAGS "D"
MESSAGE _MONTHRANGE|COPY,F_MON3
END
NUMBER 203 14
BEING
KEY "Fatturato (1)"
PROMPT 4 1 ""
PICTURE "."
FIELD LF_PROVV->IMPDOC
FLAGS "H"
MESSAGE ADD,F_TOTFAT|ADD,F_FAT3
END
NUMBER 303 14
BEING
KEY "Provvigione (1)"
PROMPT 5 1 ""
PICTURE "."
FIELD LF_PROVV->IMPPRDOC
FLAGS "H"
MESSAGE ADD,F_TOTPRO|ADD,F_PRO3
END
END
SECTION PRS4 1 0 0 STREXPR LF_PROVV->CODAGE==LF_AGENTI->CODAGE
FLAGS "H"
STRING 104 7
BEGIN
KEY "Raggruppamento mese (2)"
PROMPT 6 1 ""
FLAGS "D"
MESSAGE _MONTHRANGE|COPY,F_MON4
END
NUMBER 204 14
BEING
KEY "Fatturato (2)"
PROMPT 7 1 ""
PICTURE "."
FIELD LF_PROVV->IMPDOC
FLAGS "H"
MESSAGE ADD,F_TOTFAT|ADD,F_FAT4
END
NUMBER 304 14
BEING
KEY "Provvigione (2)"
PROMPT 8 1 ""
PICTURE "."
FIELD LF_PROVV->IMPPRDOC
FLAGS "H"
MESSAGE ADD,F_TOTPRO|ADD,F_PRO4
END
END
SECTION PRS5 1 0 0 STREXPR LF_PROVV->CODAGE==LF_AGENTI->CODAGE
FLAGS "H"
STRING 105 7
BEGIN
KEY "Raggruppamento mese (1)"
PROMPT 3 1 ""
FLAGS "D"
MESSAGE _MONTHRANGE|COPY,F_MON5
END
NUMBER 205 14
BEING
KEY "Fatturato (1)"
PROMPT 4 1 ""
PICTURE "."
FIELD LF_PROVV->IMPDOC
FLAGS "H"
MESSAGE ADD,F_TOTFAT|ADD,F_FAT5
END
NUMBER 305 14
BEING
KEY "Provvigione (1)"
PROMPT 5 1 ""
PICTURE "."
FIELD LF_PROVV->IMPPRDOC
FLAGS "H"
MESSAGE ADD,F_TOTPRO|ADD,F_PRO5
END
END
SECTION PRS6 1 0 0 STREXPR LF_PROVV->CODAGE==LF_AGENTI->CODAGE
FLAGS "H"
STRING 106 7
BEGIN
KEY "Raggruppamento mese (2)"
PROMPT 6 1 ""
FLAGS "D"
MESSAGE _MONTHRANGE|COPY,F_MON6
END
NUMBER 206 14
BEING
KEY "Fatturato (2)"
PROMPT 7 1 ""
PICTURE "."
FIELD LF_PROVV->IMPDOC
FLAGS "H"
MESSAGE ADD,F_TOTFAT|ADD,F_FAT6
END
NUMBER 306 14
BEING
KEY "Provvigione (2)"
PROMPT 8 1 ""
PICTURE "."
FIELD LF_PROVV->IMPPRDOC
FLAGS "H"
MESSAGE ADD,F_TOTPRO|ADD,F_PRO6
END
END
SECTION PRS7 1 0 0 STREXPR LF_PROVV->CODAGE==LF_AGENTI->CODAGE
FLAGS "H"
STRING 107 7
BEGIN
KEY "Raggruppamento mese (1)"
PROMPT 3 1 ""
FLAGS "D"
MESSAGE _MONTHRANGE|COPY,F_MON7
END
NUMBER 207 14
BEING
KEY "Fatturato (1)"
PROMPT 4 1 ""
PICTURE "."
FIELD LF_PROVV->IMPDOC
FLAGS "H"
MESSAGE ADD,F_TOTFAT|ADD,F_FAT7
END
NUMBER 307 14
BEING
KEY "Provvigione (1)"
PROMPT 5 1 ""
PICTURE "."
FIELD LF_PROVV->IMPPRDOC
FLAGS "H"
MESSAGE ADD,F_TOTPRO|ADD,F_PRO7
END
END
SECTION PRS8 1 0 0 STREXPR LF_PROVV->CODAGE==LF_AGENTI->CODAGE
FLAGS "H"
STRING 108 7
BEGIN
KEY "Raggruppamento mese (2)"
PROMPT 6 1 ""
FLAGS "D"
MESSAGE _MONTHRANGE|COPY,F_MON8
END
NUMBER 208 14
BEING
KEY "Fatturato (2)"
PROMPT 7 1 ""
PICTURE "."
FIELD LF_PROVV->IMPDOC
FLAGS "H"
MESSAGE ADD,F_TOTFAT|ADD,F_FAT8
END
NUMBER 308 14
BEING
KEY "Provvigione (2)"
PROMPT 8 1 ""
PICTURE "."
FIELD LF_PROVV->IMPPRDOC
FLAGS "H"
MESSAGE ADD,F_TOTPRO|ADD,F_PRO8
END
END
SECTION PRS9 1 0 0 STREXPR LF_PROVV->CODAGE==LF_AGENTI->CODAGE
FLAGS "H"
STRING 109 7
BEGIN
KEY "Raggruppamento mese (1)"
PROMPT 3 1 ""
FLAGS "D"
MESSAGE _MONTHRANGE|COPY,F_MON9
END
NUMBER 209 14
BEING
KEY "Fatturato (1)"
PROMPT 4 1 ""
PICTURE "."
FIELD LF_PROVV->IMPDOC
FLAGS "H"
MESSAGE ADD,F_TOTFAT|ADD,F_FAT9
END
NUMBER 309 14
BEING
KEY "Provvigione (1)"
PROMPT 5 1 ""
PICTURE "."
FIELD LF_PROVV->IMPPRDOC
FLAGS "H"
MESSAGE ADD,F_TOTPRO|ADD,F_PRO9
END
END
SECTION PRS10 1 0 0 STREXPR LF_PROVV->CODAGE==LF_AGENTI->CODAGE
FLAGS "H"
STRING 110 7
BEGIN
KEY "Raggruppamento mese (2)"
PROMPT 6 1 ""
FLAGS "D"
MESSAGE _MONTHRANGE|COPY,F_MON10
END
NUMBER 210 14
BEING
KEY "Fatturato (2)"
PROMPT 7 1 ""
PICTURE "."
FIELD LF_PROVV->IMPDOC
FLAGS "H"
MESSAGE ADD,F_TOTFAT|ADD,F_FAT10
END
NUMBER 310 14
BEING
KEY "Provvigione (2)"
PROMPT 8 1 ""
PICTURE "."
FIELD LF_PROVV->IMPPRDOC
FLAGS "H"
MESSAGE ADD,F_TOTPRO|ADD,F_PRO10
END
END
SECTION PRS11 1 0 0 STREXPR LF_PROVV->CODAGE==LF_AGENTI->CODAGE
FLAGS "H"
STRING 111 7
BEGIN
KEY "Raggruppamento mese (1)"
PROMPT 3 1 ""
FLAGS "D"
MESSAGE _MONTHRANGE|COPY,F_MON11
END
NUMBER 211 14
BEING
KEY "Fatturato (1)"
PROMPT 4 1 ""
PICTURE "."
FIELD LF_PROVV->IMPDOC
FLAGS "H"
MESSAGE ADD,F_TOTFAT|ADD,F_FAT11
END
NUMBER 311 14
BEING
KEY "Provvigione (1)"
PROMPT 5 1 ""
PICTURE "."
FIELD LF_PROVV->IMPPRDOC
FLAGS "H"
MESSAGE ADD,F_TOTPRO|ADD,F_PRO11
END
END
SECTION PRS12 1 0 0 STREXPR LF_PROVV->CODAGE==LF_AGENTI->CODAGE
FLAGS "H"
STRING 112 7
BEGIN
KEY "Raggruppamento mese (2)"
PROMPT 6 1 ""
FLAGS "D"
MESSAGE _MONTHRANGE|COPY,F_MON12
END
NUMBER 212 14
BEING
KEY "Fatturato (2)"
PROMPT 7 1 ""
PICTURE "."
FIELD LF_PROVV->IMPDOC
FLAGS "H"
MESSAGE ADD,F_TOTFAT|ADD,F_FAT12
END
NUMBER 312 14
BEING
KEY "Provvigione (2)"
PROMPT 8 1 ""
PICTURE "."
FIELD LF_PROVV->IMPPRDOC
FLAGS "H"
MESSAGE ADD,F_TOTPRO|ADD,F_PRO12
END
END
END // Main subsection
// Totali
STRING F_MON1 7
BEGIN
KEY "Mese (1)"
PROMPT 3 1 ""
MESSAGE _MONTHRANGE
END
NUMBER F_FAT1 14
BEING
KEY "Fatturato (1)"
PROMPT 4 1 ""
PICTURE "."
GROUP G_TOTAGE
END
NUMBER F_PRO1 14
BEING
KEY "Provvigione (1)"
PROMPT 5 1 ""
PICTURE "."
GROUP G_TOTAGE
END
STRING F_MON2 7
BEGIN
KEY "Mese (2)"
PROMPT 6 1 ""
MESSAGE _MONTHRANGE
END
NUMBER F_FAT2 14
BEING
KEY "Fatturato (2)"
PROMPT 7 1 ""
PICTURE "."
GROUP G_TOTAGE
END
NUMBER F_PRO2 14
BEING
KEY "Provvigione (2)"
PROMPT 8 1 ""
PICTURE "."
GROUP G_TOTAGE
END
STRING F_MON3 7
BEGIN
KEY "Mese (3)"
PROMPT 3 2 ""
MESSAGE _MONTHRANGE
END
NUMBER F_FAT3 14
BEING
KEY "Fatturato (3)"
PROMPT 4 2 ""
PICTURE "."
GROUP G_TOTAGE
END
NUMBER F_PRO3 14
BEING
KEY "Provvigione (3)"
PROMPT 5 2 ""
PICTURE "."
GROUP G_TOTAGE
END
STRING F_MON4 7
BEGIN
KEY "Mese (4)"
PROMPT 6 2 ""
MESSAGE _MONTHRANGE
END
NUMBER F_FAT4 14
BEING
KEY "Fatturato (4)"
PROMPT 7 2 ""
PICTURE "."
GROUP G_TOTAGE
END
NUMBER F_PRO4 14
BEING
KEY "Provvigione (4)"
PROMPT 8 2 ""
PICTURE "."
GROUP G_TOTAGE
END
STRING F_MON5 7
BEGIN
KEY "Mese (5)"
PROMPT 3 3 ""
MESSAGE _MONTHRANGE
END
NUMBER F_FAT5 14
BEING
KEY "Fatturato (5)"
PROMPT 4 3 ""
PICTURE "."
GROUP G_TOTAGE
END
NUMBER F_PRO5 14
BEING
KEY "Provvigione (5)"
PROMPT 5 3 ""
PICTURE "."
GROUP G_TOTAGE
END
STRING F_MON6 7
BEGIN
KEY "Mese (6)"
PROMPT 6 3 ""
MESSAGE _MONTHRANGE
END
NUMBER F_FAT6 14
BEING
KEY "Fatturato (6)"
PROMPT 7 3 ""
PICTURE "."
GROUP G_TOTAGE
END
NUMBER F_PRO6 14
BEING
KEY "Provvigione (6)"
PROMPT 8 3 ""
PICTURE "."
GROUP G_TOTAGE
END
STRING F_MON7 7
BEGIN
KEY "Mese (7)"
PROMPT 3 4 ""
MESSAGE _MONTHRANGE
END
NUMBER F_FAT7 14
BEING
KEY "Fatturato (7)"
PROMPT 4 4 ""
PICTURE "."
GROUP G_TOTAGE
END
NUMBER F_PRO7 14
BEING
KEY "Provvigione (7)"
PROMPT 5 4 ""
PICTURE "."
GROUP G_TOTAGE
END
STRING F_MON8 7
BEGIN
KEY "Mese (8)"
PROMPT 6 4 ""
MESSAGE _MONTHRANGE
END
NUMBER F_FAT8 14
BEING
KEY "Fatturato (8)"
PROMPT 7 4 ""
PICTURE "."
GROUP G_TOTAGE
END
NUMBER F_PRO8 14
BEING
KEY "Provvigione (8)"
PROMPT 8 4 ""
PICTURE "."
GROUP G_TOTAGE
END
STRING F_MON9 7
BEGIN
KEY "Mese (9)"
PROMPT 3 5 ""
MESSAGE _MONTHRANGE
END
NUMBER F_FAT9 14
BEING
KEY "Fatturato (9)"
PROMPT 4 5 ""
PICTURE "."
GROUP G_TOTAGE
END
NUMBER F_PRO9 14
BEING
KEY "Provvigione (9)"
PROMPT 5 5 ""
PICTURE "."
GROUP G_TOTAGE
END
STRING F_MON10 7
BEGIN
KEY "Mese (10)"
PROMPT 6 5 ""
MESSAGE _MONTHRANGE
END
NUMBER F_FAT10 14
BEING
KEY "Fatturato (10)"
PROMPT 7 5 ""
PICTURE "."
GROUP G_TOTAGE
END
NUMBER F_PRO10 14
BEING
KEY "Provvigione (10)"
PROMPT 8 5 ""
PICTURE "."
GROUP G_TOTAGE
END
STRING F_MON11 7
BEGIN
KEY "Mese (11)"
PROMPT 3 6 ""
MESSAGE _MONTHRANGE
END
NUMBER F_FAT11 14
BEING
KEY "Fatturato (11)"
PROMPT 4 6 ""
PICTURE "."
GROUP G_TOTAGE
END
NUMBER F_PRO11 14
BEING
KEY "Provvigione (11)"
PROMPT 5 6 ""
PICTURE "."
GROUP G_TOTAGE
END
STRING F_MON12 7
BEGIN
KEY "Mese (12)"
PROMPT 6 6 ""
MESSAGE _MONTHRANGE
END
NUMBER F_FAT12 14
BEING
KEY "Fatturato (12)"
PROMPT 7 6 ""
PICTURE "."
GROUP G_TOTAGE
END
NUMBER F_PRO12 14
BEING
KEY "Provvigione (12)"
PROMPT 8 6 ""
PICTURE "."
GROUP G_TOTAGE
END
STRING 45 30
BEGIN
KEY "Totale agente"
PROMPT 2 8 "Totale agente:"
END
NUMBER F_TOTFAT 15
BEGIN
KEY "Totale fatturato per agente"
PROMPT 4 8 ""
PICTURE "."
GROUP G_TOTAGE
END
NUMBER F_TOTPRO 15
BEGIN
KEY "Totale provvigioni per agente"
PROMPT 5 8 ""
PICTURE "."
GROUP G_TOTAGE
END
END // Section body
END // Form

42
pr/pr1400a.h Executable file
View File

@ -0,0 +1,42 @@
// PR1400A.H
#define F_MON1 9
#define F_MON2 10
#define F_MON3 11
#define F_MON4 12
#define F_MON5 13
#define F_MON6 14
#define F_MON7 15
#define F_MON8 16
#define F_MON9 17
#define F_MON10 18
#define F_MON11 19
#define F_MON12 20
#define F_FAT1 21
#define F_FAT2 22
#define F_FAT3 23
#define F_FAT4 24
#define F_FAT5 25
#define F_FAT6 26
#define F_FAT7 27
#define F_FAT8 28
#define F_FAT9 29
#define F_FAT10 30
#define F_FAT11 31
#define F_FAT12 32
#define F_PRO1 33
#define F_PRO2 34
#define F_PRO3 35
#define F_PRO4 36
#define F_PRO5 37
#define F_PRO6 38
#define F_PRO7 39
#define F_PRO8 40
#define F_PRO9 41
#define F_PRO10 42
#define F_PRO11 43
#define F_PRO12 44
#define F_TOTFAT 46
#define F_TOTPRO 47