//In ab0 è stato modicata la gestione del piano dei conti:

//ab0 sono stati aggiunti dei commenti
//ab0100.cpp è stato commentato tutto quello che riguarda il livello di struttura
//in quanto questo campo non viene più utilizzato ed è stato aggiornato ab0200.h
//la maschera è stata modificata: aggiunto il compo "conto sospeso" e tolto quello del
//livello di struttura
//AB1 esegue la stampa delle tabelle e del piano dei conti
//sono state aggiunti i relativi file delle maschere


git-svn-id: svn://10.65.10.50/trunk@5434 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
sauro 1997-10-23 15:13:47 +00:00
parent 5b25e45971
commit d0542d7ca9
19 changed files with 932 additions and 124 deletions

View File

@ -12,9 +12,9 @@ int main(int argc,char** argv)
switch (n) switch (n)
{ {
case 0: case 0:
ab0100(argc,argv); break; ab0100(argc,argv); break; //Sintassi ab0 -0 tab_name -utente
case 1: case 1:
ab0200(argc,argv); break; ab0200(argc,argv); break; //Sintassi ab0 -1 -utente
case 2: case 2:
//ab0300(argc,argv); break; //ab0300(argc,argv); break;
// case 3: // case 3:

View File

@ -1,4 +1,3 @@
#include <applicat.h> #include <applicat.h>
#include <tabapp.h> #include <tabapp.h>
#include <strings.h> #include <strings.h>
@ -9,6 +8,7 @@
#include <prefix.h> #include <prefix.h>
#include "batbpdb.h" #include "batbpdb.h"
#include "batbarb.h"
class Tabanabil_application : public Tab_application class Tabanabil_application : public Tab_application
{ {
@ -89,7 +89,8 @@ bool Tabanabil_application::user_create()
_msk->set_handler(F_GIORNO_FINE, giorno_handler); _msk->set_handler(F_GIORNO_FINE, giorno_handler);
_msk->set_handler(F_MESE_FINE, mese_handler); _msk->set_handler(F_MESE_FINE, mese_handler);
} }
if (_tabname == "%ARB")
set_search_field(F_CODTAB_ESE);
return TRUE; return TRUE;
} }

View File

@ -21,6 +21,12 @@ class TPconAb : public TRelation_application
int _indbil,_newindbil; int _indbil,_newindbil;
bool _isparametri; bool _isparametri;
static bool ContoSezBilOpp(TMask_field& f, KEY key);
static bool IndBil (TMask_field& f, KEY key);
// static bool LivelloStrutt (TMask_field& f, KEY key);
// const char * extra_modules() const { return format("%d",CGAUT); }
void ScriviContoSezOpp (const TString& codice, const TString& val);
protected: protected:
virtual bool user_create(); virtual bool user_create();
virtual bool user_destroy(); virtual bool user_destroy();
@ -35,14 +41,6 @@ protected:
virtual void init_insert_mode (TMask&); virtual void init_insert_mode (TMask&);
public: public:
static bool ContoSezBilOpp(TMask_field& f, KEY key);
static bool IndBil (TMask_field& f, KEY key);
static bool LivelloStrutt (TMask_field& f, KEY key);
const char * extra_modules() const { return format("%d",CGAUT); }
void ScriviContoSezOpp (const TString& codice, const TString& val);
TPconAb() {} ; TPconAb() {} ;
}; };
/* /*
@ -111,7 +109,7 @@ bool TPconAb::IndBil(TMask_field& f, KEY k)
return TRUE; return TRUE;
} }
/*
// Handler che controlla la validita' del campo "Livello di struttura": // Handler che controlla la validita' del campo "Livello di struttura":
// il suo valore deve essere >= 1 e <= 99. // il suo valore deve essere >= 1 e <= 99.
@ -127,7 +125,7 @@ bool TPconAb::LivelloStrutt(TMask_field& f, KEY k)
return TRUE; return TRUE;
} }
*/
void TPconAb::init_query_mode(TMask&) void TPconAb::init_query_mode(TMask&)
{ {
if (_isparametri) if (_isparametri)
@ -222,7 +220,7 @@ bool TPconAb::user_create()
_msk->set_handler(F_CODCONTR, ContoSezBilOpp); _msk->set_handler(F_CODCONTR, ContoSezBilOpp);
_msk->set_handler(F_INDBIL, IndBil); _msk->set_handler(F_INDBIL, IndBil);
_msk->set_handler(F_LIVELLO, LivelloStrutt); // _msk->set_handler(F_LIVELLO, LivelloStrutt);
_isparametri = FALSE; _isparametri = FALSE;

View File

@ -1,11 +1,8 @@
// campi maschera ab0200a.uml // campi maschera ab0200a.uml
#define F_CODICE 101 #define F_CODICE 101
#define F_DESCRIZ1 102 #define F_DESCRIZ 102
#define F_DESCRIZ2 103 #define F_INDBIL 103
#define F_LIVELLO 104 #define F_CODCONTR 104
#define F_INDBIL 105 #define F_DETTAGLIO 105
#define F_CODCONTR 106 #define SOSPENDI 106
#define F_DETTAGLIO 107
#define F_DESCRCONTR1 108
#define F_DESCRCONTR2 109

View File

@ -1,6 +1,6 @@
#include "ab0200.h" #include "ab0200.h"
TOOLBAR "" 0 20 0 2 TOOLBAR "" 0 19 0 2
#include <toolbar.h> #include <toolbar.h>
@ -8,66 +8,51 @@ ENDPAGE
PAGE "Piano dei Conti" 0 -1 0 19 PAGE "Piano dei Conti" 0 -1 0 19
GROUPBOX DLG_NULL 76 5 GROUPBOX DLG_NULL 76 6
BEGIN BEGIN
PROMPT 1 0 "" PROMPT 1 0 ""
FLAGS "R" FLAGS "R"
END END
NUMBER F_CODICE 10 NUMBER F_CODICE 12
BEGIN BEGIN
PROMPT 2 1 "Codice tabella " PROMPT 2 2 "Codice tabella "
HELP "Codice della tabella Piano dei Conti" HELP "Codice della tabella Piano dei Conti"
FIELD LF_ABPCON->CODCBL FIELD LF_ABPCON->CODCBL
KEY 1 KEY 1
USE LF_ABPCON KEY 1 USE LF_ABPCON KEY 1
INPUT CODCBL F_CODICE INPUT CODCBL F_CODICE
DISPLAY "Codice@11" CODCBL DISPLAY "Codice@12" CODCBL
DISPLAY "Descrizione@40" DESCRIZ[1,40] DISPLAY "Descrizione@40" DESCRIZ
DISPLAY "I.B." INDBIL DISPLAY "I.B." INDBIL
DISPLAY "Codice opp.@11" CODCONTR DISPLAY "Codice opp.@12" CODCONTR
DISPLAY "Sospeso@2" SOSPESO
OUTPUT F_CODICE CODCBL OUTPUT F_CODICE CODCBL
OUTPUT F_DESCRIZ1 DESCRIZ[1,40] OUTPUT F_DESCRIZ DESCRIZ
OUTPUT F_DESCRIZ2 DESCRIZ[41,]
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
FLAGS "Z" FLAGS "ZRU"
END END
STRING F_DESCRIZ1 40 STRING F_DESCRIZ 80 40
BEGIN BEGIN
PROMPT 2 2 "I parte descrizione " PROMPT 2 4 "Descrizione "
FIELD LF_ABPCON->DESCRIZ[1,40] FIELD LF_ABPCON->DESCRIZ
KEY 2 KEY 2
USE LF_ABPCON KEY 2 USE LF_ABPCON KEY 2
INPUT DESCRIZ[1,40] F_DESCRIZ1 INPUT DESCRIZ F_DESCRIZ
DISPLAY "Descrizione@40" DESCRIZ[1,40] DISPLAY "Descrizione@40" DESCRIZ
DISPLAY "Codice@11" CODCBL DISPLAY "Codice@12" CODCBL
DISPLAY "I.B." INDBIL DISPLAY "I.B." INDBIL
DISPLAY "Codice opp.@11" CODCONTR DISPLAY "Codice opp.@12" CODCONTR
DISPLAY "Sospeso@2" SOSPESO
COPY OUTPUT F_CODICE COPY OUTPUT F_CODICE
HELP "Prima parte della descrizione" HELP "Prima parte della descrizione"
WARNING "Manca la descrizione" WARNING "Manca la descrizione"
CHECKTYPE REQUIRED // Guy: perche' non cosi'? CHECKTYPE REQUIRED // Guy: perche' non cosi'?
END END
STRING F_DESCRIZ2 40
BEGIN
PROMPT 2 3 "II parte descrizione "
FIELD LF_ABPCON->DESCRIZ[41,]
KEY 2
HELP "Seconda parte della descrizione"
END
NUMBER F_LIVELLO 2 LIST F_INDBIL 15
BEGIN
PROMPT 2 6 "Livello di struttura (1-99) "
HELP "Inserire il livello di struttura: il valore deve essere compreso fra 1 e 99"
FIELD LF_ABPCON->LIVELLO
FLAGS "R"
CHECKTYPE REQUIRED
END
LIST F_INDBIL 16
BEGIN BEGIN
PROMPT 2 8 "Indicatore di bilancio " PROMPT 2 8 "Indicatore di bilancio "
FIELD LF_ABPCON->INDBIL FIELD LF_ABPCON->INDBIL
@ -79,55 +64,40 @@ BEGIN
ITEM "9|Varie" ITEM "9|Varie"
END END
NUMBER F_CODCONTR 10 NUMBER F_CODCONTR 12
BEGIN BEGIN
PROMPT 2 10 "Conto di sez.bil.opposta " PROMPT 2 10 "Conto di sez.bil.opposta "
HELP "Inserire il conto di sezione di bilancio opposta" HELP "Inserire il conto di sezione di bilancio opposta"
FIELD LF_ABPCON->CODCONTR FIELD LF_ABPCON->CODCONTR
USE LF_ABPCON USE LF_ABPCON
INPUT CODCBL F_CODCONTR INPUT CODCBL F_CODCONTR
DISPLAY "Codice@11" CODCBL DISPLAY "Codice@12" CODCBL
DISPLAY "Descrizione@40" DESCRIZ[1,40] DISPLAY "Descrizione@40" DESCRIZ
DISPLAY "I.B." INDBIL DISPLAY "I.B." INDBIL
DISPLAY "Codice@11" CODCONTR DISPLAY "Codice@12" CODCONTR
DISPLAY "Sospeso@2" SOSPESO
OUTPUT F_CODCONTR CODCBL OUTPUT F_CODCONTR CODCBL
OUTPUT F_DESCRCONTR1 DESCRIZ[1,40]
OUTPUT F_DESCRCONTR2 DESCRIZ[41,]
CHECKTYPE NORMAL CHECKTYPE NORMAL
ADD RUN AB0 -1 #F_CODICE #F_INDBIL ADD RUN AB0 -1 #F_CODICE #F_INDBIL
FLAGS "Z" FLAGS "ZRU"
END END
STRING F_DESCRCONTR1 40
BEGIN
PROMPT 30 11 ""
USE LF_ABPCON KEY 2
INPUT DESCRIZ F_DESCRCONTR1
DISPLAY "Descrizione@40" DESCRIZ[1,40]
DISPLAY "Codice@11" CODCBL
DISPLAY "I.B." INDBIL
DISPLAY "Codice@11" CODCONTR
OUTPUT F_CODCONTR CODCBL
OUTPUT F_DESCRCONTR1 DESCRIZ[1,40]
OUTPUT F_DESCRCONTR2 DESCRIZ[41,]
ADD RUN AB0 -1 #F_CODICE #F_INDBIL
END
STRING F_DESCRCONTR2 40 LIST F_DETTAGLIO 15
BEGIN BEGIN
PROMPT 30 12 "" PROMPT 2 14 "Dettaglio/Movimenti "
FLAGS "D"
END
LIST F_DETTAGLIO 11
BEGIN
PROMPT 2 13 "Dettaglio/Movimenti "
FIELD LF_ABPCON->DETT FIELD LF_ABPCON->DETT
ITEM " |Nessuno" ITEM " |Nessuno"
ITEM "D|Dettaglio" ITEM "D|Dettaglio"
ITEM "M|Movimenti" ITEM "M|Movimenti"
END END
BOOLEAN SOSPENDI
BEGIN
PROMTP 2 16 " Conto sospeso"
FIELD LF_ABPCON->SOSPESO
END
ENDPAGE ENDPAGE
ENDMASK ENDMASK

24
ab/ab1.cpp Executable file
View File

@ -0,0 +1,24 @@
#include <xvt.h>
#include <checks.h>
#include "ab1.h"
#define usage "Error - usage : %s -{0|1|2|3|4|5|6|7|8|9}"
int main(int argc, char** argv)
{
int rt = -1;
const int r = (argc > 1) ? atoi(&argv[1][1]) : -1;
switch (r)
{
case 0:
rt = ab1100(argc,argv) ; break;
case 1:
rt = ab1200(argc,argv) ; break;
default:
error_box(usage, argv[0]) ; break;
}
exit(0);
return rt ;
}

7
ab/ab1.h Executable file
View File

@ -0,0 +1,7 @@
#ifndef __AB1_H
#define __AB1_H
int ab1100(int argc, char **argv);
int ab1200(int argc, char **argv);
#endif //__AB1_H

458
ab/ab1100.cpp Executable file
View File

@ -0,0 +1,458 @@
// ab1100 Stampa tabelle
//
// legge un file con estenzione .rpt che descrive la stampa.
// Vedi file leggimi.txt per il formato del file
//
#include <mask.h>
#include <printapp.h>
#include <utility.h>
#include <nditte.h>
#include "AB1.h"
#include "ab1100.h"
#define FOOTER_LEN 4 // se non ridefinito nel .rpt
class AB1100_application : public TPrintapp
{
TString _tabname;
TFilename _rptname;
TRelation* _rel;
TCursor *_cur;
TMask* _msk;
TString _maskname;
int _logicnum;
TString_array _string_roman, _string_compound;
TString_array _field_roman, _field_compound;
bool _stampa_registri;
bool _stampa_ca7; //tabella causali 770
bool _tabella_comune;
public:
virtual bool user_create() ;
virtual bool user_destroy() ;
virtual bool set_print(int) ;
virtual void set_page(int, int);
virtual bool preprocess_page (int, int);
virtual bool preprocess_print(int file, int counter);
void set_headers();
void set_rows();
void set_footers();
void set_translations();
void set_relations();
AB1100_application() {}
virtual ~AB1100_application() {}
};
bool AB1100_application::set_print(int)
{
TRectype from(_rel->lfile().curr()); from.zero();
TRectype to (from);
if (_msk->run() == K_ENTER)
{
const int campi_maschera = _msk->fields();
for (int i = 0; i < campi_maschera; i++)
{
const TMask_field& campo_maschera = _msk->fld(i);
const char* val = campo_maschera.get();
if (*val)
{
const TFieldref* campo_ref = campo_maschera.field();
if (campo_ref != NULL && campo_ref->ok())
{
TDate d;
const bool is_date_field = campo_maschera.class_id() == CLASS_DATE_FIELD;
if (is_date_field)
d=val;
if (campo_maschera.in_group(1)) campo_ref->write(is_date_field ? d.string(ANSI) : val, from);
else
if (campo_maschera.in_group(2)) campo_ref->write(is_date_field ? d.string(ANSI) : val, to);
}
}
}
_cur->setregion (from, to);
set_headers();
return TRUE;
}
return FALSE;
}
void AB1100_application::set_page (int , int )
{
_string_roman.destroy();
_field_roman.destroy();
_string_compound.destroy();
_field_compound.destroy();
set_rows();
}
bool AB1100_application::preprocess_page(int , int)
{
const int items = _field_roman.items();
if (items > 0)
{
for (int i = 0; i < items; i++)
{
TString& fn = _field_roman.row(i);
TFieldref fld(fn, 0);
TString& s = _string_roman.row(i);
const int n = atoi(fld.read(*_rel));
s = itor(n);
}
}
const int compound = _field_compound.items();
if (compound > 0)
// Scorre le righe settate
for (int i = 0; i < compound; i++)
{
TToken_string f(_field_compound.row(i),'+'); // campo composto
TString& s = _string_compound.row(i); // riga da stampare
s.cut(0); // Reset the row...
bool compile_row = TRUE;
const int cmp_items = f.items();
// Scorre gli elementi della riga
for (int j = 0; j < cmp_items; j++)
{
// compone la stringa totale
TString xx(f.get(j));
if (xx[0] != '"') // se non e' una costante stringa legge il valore
{
TFieldref fld(xx,0);
xx = fld.read(*_rel);
if (xx.empty()) compile_row = FALSE;
else compile_row = TRUE;
}
else
{
xx.ltrim(1);xx.rtrim(1);
}
if (compile_row)
s << xx; // appende alla stringa il valore ricavato (se il campo e' vuoto non appende nemmeno la stringa fissa)
}
}
// Stampa tabella registri. Calcolo: pagine residue = pagine - stampate
if (_stampa_registri)
{
const int pagine = _cur->file().get_int("I2");
const int stampate = _cur->file().get_int("I1");
const int residue = pagine - stampate;
if (residue > 0)
set_row(1, "@126g%4d", residue);
else
set_row(1, "@126g%4s", " ");
}
return TRUE;
}
void AB1100_application::set_headers()
{
TString NomeTabella, sep, formato_intesta, testo_intesta;
int LungRiga, riga_intesta=0, last_riga=1;
TToken_string line;
TString256 riga;
reset_header ();
TScanner rpt(_rptname);
rpt.paragraph("Headers");
// Leggo la lunghezza della riga (usata per centrare l'intestazione)
line = rpt.line();
LungRiga = line.get_int();
riga.spaces(LungRiga);
// Senno' nella stampa a 80 non ci sta ditta e data
// Leggo il nome della tabella
line = rpt.line();
NomeTabella = line.get();
// Sulla prima riga di intestazione metto la ditta, la data e la pagina
if (!_tabella_comune)
{
const long codditta = get_firm();
TString80 ragsoc;
TLocalisamfile nditte(LF_NDITTE);
nditte.zero();
nditte.put(NDT_CODDITTA, codditta);
if (nditte.read() == NOERR)
{
ragsoc = nditte.get(NDT_RAGSOC);
if (LungRiga < 100) ragsoc.cut(40);
}
riga.overwrite(format("Ditta %4ld %s", codditta,(const char *)ragsoc));
}
if (_stampa_ca7)
{
TDate d (_msk->get(F_DATASTAMPA));
printer().setdate(d);
}
riga.overwrite ("Data @< Pag. @#", riga.len()-22);
set_header (last_riga++, "%s", (const char *)riga);
// Centro il nome della tabella
// Per la stampa registri non va centrato.
// Lo lascio anche per le altre stampe
// if (_stampa_registri)
NomeTabella.left_just (LungRiga);
/* else
NomeTabella.center_just (LungRiga); */
if (_stampa_ca7)
NomeTabella.center_just (LungRiga);
set_header (last_riga++, "@b%s", (const char *)NomeTabella);
// Aggiungo una riga vuota per separare prima intestazione
//sep.fill ('-', LungRiga);
//set_header (last_riga, "%s", (const char *)sep);
line = rpt.line();
while ( (line != "") && (line[0] != '[') )
{
riga_intesta = atoi (line.get());
formato_intesta = line.get();
testo_intesta = (const char *) line.get();
if (riga_intesta)
set_header (last_riga+riga_intesta, (const char *)formato_intesta,
(const char *)testo_intesta);
line = rpt.line();
}
if (riga_intesta) last_riga += riga_intesta;
last_riga++;
//set_header (last_riga, (const char *)sep);
sep.fill(' ');
set_header (last_riga, (const char *)sep);
set_background(format("W2l{1,3,%d,3}l{1,%d,%d,%d}", LungRiga, last_riga, LungRiga, last_riga));
}
void AB1100_application::set_rows()
{
TToken_string line;
TFieldref campo;
int from, to, riga_record;
TString formato_campo, picture;
const char * name;
TScanner rpt(_rptname);
rpt.paragraph("Rows");
line = rpt.line();
while ( (line != "") && (line[0] != '[') )
{
riga_record = line.get_int();
TString s(line.get());
int logicnum = _logicnum;
const bool is_compound = s.find('+') >= 0; // Controlla se e' una stringa composta (usare #t nel formato)
if (!is_compound)
{
campo = s;
from = campo.from();
to = campo.to();
name = campo.name();
if (campo.file != 0)
logicnum = campo.file();
}
formato_campo = line.get();
formato_campo.trim();
formato_campo.lower();
const int p = formato_campo.find("@m");
if (p != -1 && !is_compound)
{
formato_campo.cut(p);
formato_campo << "#t";
_string_roman.add("");
_field_roman.add(s);
const int last = _string_roman.items() - 1;
set_row (riga_record, formato_campo, _string_roman.objptr(last));
}
else if (!is_compound)
{
if (formato_campo.find("@pn"))
picture = line.get();
else
picture = "";
if (to == -1)
if (picture != "")
set_row (riga_record, formato_campo, FLD(logicnum,name,picture) );
else
set_row (riga_record, formato_campo, FLD(logicnum,name) );
else
set_row (riga_record, formato_campo, FLD(logicnum,name,from,to) );
}
else
{
_string_compound.add("");
_field_compound.add(s);
const int last = _string_compound.items() - 1;
set_row (riga_record, formato_campo, _string_compound.objptr(last));
}
line = (const char *) rpt.line();
}
}
void AB1100_application::set_footers()
{
TToken_string line;
int footer_len, riga;
TString formato, testo;
reset_footer();
TScanner rpt(_rptname);
rpt.paragraph("Footers");
line = rpt.line();
footer_len = line.get_int();
if (footer_len != 0)
{
printer().footerlen(footer_len);
line = rpt.line();
}
while ( (line != "") && (line[0] != '[') )
{
riga = line.get_int();
formato = line.get();
testo = line.get();
set_footer (riga, (const char *)formato, (const char*)testo);
line = rpt.line();
}
}
void AB1100_application::set_translations()
{
TString campo, from, to;
TToken_string line;
int logicnum;
TScanner rpt(_rptname);
rpt.paragraph("Translations");
line = rpt.line();
while ( (line != "") && (line[0] != '[') )
{
logicnum = line.get_int();
campo = line.get();
from = line.get();
to = line.get();
set_translation (logicnum, (char*)(const char *)campo, (char*)(const char *)from, (char*)(const char *)to);
line = rpt.line();
}
}
void AB1100_application::set_relations()
{
TToken_string line("", ';');
TString tab(16), expr(40);
int key, linkto, alias, logicnum;
TScanner rpt(_rptname);
rpt.paragraph("Relations");
line = rpt.line();
while ( (line != "") && (line[0] != '[') )
{
tab = line.get();
logicnum = atoi(tab);
expr = line.get();
key = line.get_int();
if (key == 0) key = 1;
linkto = line.get_int();
alias = line.get_int();
if (logicnum > 0)
_rel->add(logicnum, expr, key, linkto, alias);
else
_rel->add(tab, expr, key, linkto, alias);
line = rpt.line();
}
}
bool AB1100_application::user_create()
{
_tabname = argv(2);
TString16 t(_tabname);
_tabella_comune = (t[0] == '%');
if (_tabella_comune)
t.ltrim(1);
_rptname << "batb" << t << ".rpt" ;
if (!fexist(_rptname))
return error_box("Impossibile aprire il file '%s'", (const char*)_rptname);
// Flag per la stampa tabella registri
_tabname.upper();
_stampa_registri = (_tabname == "REG");
_stampa_ca7 = (_tabname == "%CA7");
_rel = new TRelation (_tabname);
_cur = new TCursor (_rel);
_maskname << "bast" << t;
_msk = new TMask (_maskname) ;
add_cursor (_cur);
add_file (_tabname);
_logicnum = _cur->file().num();
reset_print ();
printer().footerlen (FOOTER_LEN);
for (int i=1; i <= FOOTER_LEN; i++) set_footer(i, "%s", " ");
#ifdef DBG1
set_fillchar ('.');
#endif
set_relations();
return TRUE;
}
bool AB1100_application::preprocess_print(int file, int counter)
{
set_headers();
set_footers();
set_translations();
return TRUE;
}
bool AB1100_application::user_destroy()
{
delete _msk;
delete _cur;
delete _rel;
return TRUE;
}
int ab1100(int argc, char** argv)
{
AB1100_application a;
a.run(argc, argv, "Stampa tabella");
return 0;
}

36
ab/ab1100.h Executable file
View File

@ -0,0 +1,36 @@
#ifndef __AB1100_H
#define __AB1100_H
#define F_INIZIO0 100
#define F_INIZIO1 101
#define F_INIZIO2 102
#define F_INIZIO3 103
#define F_INIZIO4 104
#define F_INIZIO5 105
#define F_INIZIO6 106
#define F_INIZIO7 107
#define F_INIZIO8 108
#define F_INIZIO9 109
#define F_INIZIO10 110
#define F_FINE1 201
#define F_FINE2 202
#define F_FINE3 203
#define F_FINE4 204
#define F_FINE5 205
#define F_FINE6 206
#define F_FINE7 207
#define F_FINE8 208
#define F_FINE9 209
#define F_FINE10 210
#define F_CODDITTA 211
#define F_RAGSOC 212
#define F_DATASTAMPA 213
#endif

74
ab/ab1200.cpp Executable file
View File

@ -0,0 +1,74 @@
// ab1200 Stampa Piano dei Conti
#include <mask.h>
#include <form.h>
#include <applicat.h>
#include <urldefid.h> //Definisce BAR_ITEM(1)
#include "AB1.h"
#include "ab1200.h"
class AB1200_application : public TApplication
{
public:
virtual bool create() ; //Crea la finestra principale
virtual bool destroy() ; //Distrugge la finestra principale
virtual bool menu(MENU_TAG); //Controlla il menu
AB1200_application() {} //Costruttore
virtual ~AB1200_application() {} //Distruttore
};
bool AB1200_application::create()
{
dispatch_e_menu(BAR_ITEM(1)); //Simula la selezione di una voce di menu
return TRUE;
}
bool AB1200_application::destroy()
{
return TRUE;
}
bool AB1200_application::menu(MENU_TAG)
{
TForm f("AB1200"); //form: AB1200.frm
TMask m("AB1200"); //machera: AB1200.uml
while (m.run() != K_QUIT) //Finchè non viene premuto un tasto di uscita
{
TString cod_from, cod_to; //Dichiarazione
cod_from=m.get(F_INIZIO); //Inizializzo con quello che preleva dal campo della maschera
cod_to=m.get(F_FINE);
//Dati validi: (cod_from <= cod_to) and (cod_to = "vuoto")
bool err = ((cod_from > cod_to) && (cod_to != "") );
if (err)
error_box("Il campo iniziale deve essere vuoto o minore del campo finale");
else
{
TCursor* cur = f.cursor(); //Ritorna il cursore corrente (oggetto)
TRectype rec_from(cur->curr()); //TRectype: classe per la definizione del tipo record
//rec_from è l'oggetto a cui associo l'indice corrente
rec_from.zero(); //lo vuoto
rec_from.put("CODCBL",cod_from); //e lo riempio con il campo contenuto nel database all'indice iniziale
TRectype rec_to(cur->curr()); //creo un nuovo oggetto a cui associare l'indice
rec_to.zero(); //lo vuoto
if (cod_to.not_empty()) //se cod_to (letto dal campo della tabella) non è vuoto
rec_to.put("CODCBL",cod_to); //gli inserisco l'indice finale letto
//altrimenti va fino alla ifne del file
cur->setregion(rec_from,rec_to); //all'indice associo la regine di stampa
f.print(); //Stampa
}
}
return FALSE;
}
int ab1200(int argc, char** argv)
{
AB1200_application a;
a.run(argc, argv, "Stampa Piano dei Conti");
return 0;
}

11
ab/ab1200.h Executable file
View File

@ -0,0 +1,11 @@
#ifndef __AB1200_H
#define __AB1200_H
#define F_INIZIO 100
#define F_FINE 101
#endif

47
ab/ab1200.uml Executable file
View File

@ -0,0 +1,47 @@
#include "ab1200.h"
PAGE "Stampa Piano dei Conti" -1 -1 50 8
NUMBER F_INIZIO 12
BEGIN
PROMPT 3 1 "Da codice "
HELP "Codice da cui iniziare a stampare. Vuoto = inizio archivio"
USE LF_ABPCON
INPUT CODCBL F_INIZIO
DISPLAY "Codice@12" CODCBL
DISPLAY "Descrizione@40" DESCRIZ
DISPLAY "I.B.@5" INDBIL
DISPLAY "D/M@5" DETT
DISPLAY "Con.C.@12" CODCONTR
DISPALY "SOSP.@5" SOSPESO
OUTPUT F_INIZIO CODCBL
GROUP 1
FIELD CODCBL
FLAGS "ZRU"
END
NUMBER F_FINE 12
BEGIN
PROMPT 4 3 "A codice "
HELP "Codice a cui terminare la stampa. Vuoto = fine archivio"
COPY USE F_INIZIO
INPUT CODCBL F_FINE
COPY DISPLAY F_INIZIO
OUTPUT F_FINE CODCBL
GROUP 2
FIELD CODCBL
FLAGS "ZRU"
END
BUTTON DLG_OK 10 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
ENDMASK

10
ab/batbarb.h Executable file
View File

@ -0,0 +1,10 @@
// campi maschera batbarb.uml
#define F_CODTAB_DITTA 101
#define F_CODTAB_ESE 102
#define F_CODTAB_PER 103
#define F_CODTAB_TIPO 104
#define F_SCEGLI 105
#define F_DI 106
#define F_DF 107

117
ab/batbarb.uml Executable file
View File

@ -0,0 +1,117 @@
#include "batbarb.h"
TOOLBAR "" 0 19 0 2
#include <toolbar.h>
ENDPAGE
PAGE "Tabella archiviazione bilanci" 0 -1 0 19
GROUPBOX DLG_NULL 74 12
BEGIN
PROMPT 2 0 ""
FLAGS "R"
END
STRING F_CODTAB_DITTA 5
BEGIN
PROMTP 4 3 "Codice ditta "
HELP "Inserire il codice della ditta"
FIELD CODTAB[1,5]
FLAG "RU"
KEY 1
USE LF_NDITTE KEY 1
INPUT LF_NDITTE->CODDITTA F_CODTAB_DITTA
DISPLAY "Codice@5" LF_NDITTE->CODDITTA
DISPALY "Ragione sociale@45" LF_NDITTE->RAGSOC
OUTPUT F_CODTAB_DITTA LF_NDITTE->CODDITTA
CHECKTYPE REQUIRED
END
STRING F_CODTAB_ESE 4
BEGIN
PROMTP 4 5 "Anno "
HELP "Inserire l'anno di esercizio"
FIELD CODTAB[6,9]
KEY 1
USE %ARB KEY 1
INPUT %ARB->CODTAB[6,9] F_CODTAB_ESE
DISPLAY "Anno@4" CODTAB[6,9]
DISPLAY "Codice@5" CODTAB[1,5]
DISPALY "Periodo@3" CODTAB[10,12]
DISPLAY "Tipo@3" CODTAB[13,15]
OUTPUT F_CODTAB_DITTA CODTAB[1,5]
OUTPUT F_CODTAB_ESE CODTAB[6,9]
OUTPUT F_CODTAB_PER CODTAB[10,12]
OUTPUT F_CODTAB_TIPO CODTAB[13,15]
OUTPUT F_SCEGLI B0
OUTPUT F_DI D0
OUTPUT F_DF D1
CHECKTYPE REQUIRED
END
STRING F_CODTAB_PER 3
BEGIN
PROMTP 4 7 "Codice perido "
HELP "Inserire il codeice che identifica il tipo periodo"
FIELD CODTAB[10,12]
FLAG "RU"
KEY 1
USE %PDB KEY 1
INPUT %PDB->CODTAB F_CODTAB_PER
DISPLAY "Cod@3" %PDB->CODTAB
DISPALY "Descrizione@35" %PDB->S0
DISPLAY "Gi" %PDB->I0
DISPLAY "Mi" %PDB->I1
DISPLAY "Gf" %PDB->I2
DISPLAY "Mf" %PDB->I3
DISPLAY "N.anni" %PDB->I4
OUTPUT F_CODTAB_PER %PDB->CODTAB
CHECKTYPE REQUIRED
END
STRING F_CODTAB_TIPO 3
BEGIN
PROMTP 4 9 "Tipo di bilancio "
HELP "Inserire il codice che identifica il tipo"
FIELD CODTAB[13,15]
FLAG "RU"
KEY 1
USE %NTB KEY 1
INPUT %NTB->CODTAB F_CODTAB_TIPO
DISPLAY "Cod@5" %NTB->CODTAB
DISPLAY "Descrizione@40" %NTB->S0
OUTPUT F_CODTAB_TIPO %NTB->CODTAB
CHECKTYPE REQUIRED
END
BOOLEAN F_SCEGLI
BEGIN
PROMPT 10 19 "Periodo chiuso"
FIELD B0
END
DATE F_DI
BEGIN
PROMPT 10 15 "Data di acrchiviazione "
FIELD D0
END
DATE F_DF
BEGIN
PROMPT 10 17 "Data di ripristino "
FIELD D1
END
ENDPAGE
ENDMASK

4
ab/batbntb.h Executable file
View File

@ -0,0 +1,4 @@
// campi della maschera batbntb.uml
#define F_CODTAB 101
#define F_DESCR 102

50
ab/batbntb.uml Executable file
View File

@ -0,0 +1,50 @@
#include "batbntb.h"
TOOLBAR "" 0 19 0 2
#include <toolbar.h>
ENDPAGE
PAGE "Tabella tipi di bilancio" 0 -1 0 19
GROUPBOX DLG_NULL 76 9
BEGIN
PROMPT 2 0 ""
FLAG "R"
END
STRING F_CODTAB 2
BEGIN
PROMPT 4 3 "Codice di bilancio "
HELP "Codice della tabella tipi di bilancio"
FLAG "RU"
FIELD CODTAB
KEY 1
USE %NTB KEY 1
INPUT CODTAB F_CODTAB
DISPLAY "Codice@2" CODTAB
DISPLAY "Descrizione@40" S0
OUTPUT F_CODTAB CODTAB
OUTPUT F_DESCR S0
CHECKTYPE REQUIRED
END
STRING F_DESCR 70 40
BEGIN
PROMPT 4 6 "Descrizione "
HELP "Descrizione del codice tabella tipi di bilancio"
KEY 2
USE %NTB KEY 2
INPUT S0 F_DESCR
DISPLAY "Descrizione@40" S0
DISPLAY "Codice@2" CODTAB
COPY OUTPUT F_CODTAB
CHECKTYPE REQUIRED
FIELD S0
END
ENDPAGE
ENDMASK

View File

@ -7,3 +7,4 @@
#define F_GIORNO_FINE 105 #define F_GIORNO_FINE 105
#define F_MESE_FINE 106 #define F_MESE_FINE 106
#define F_DESCRAGG 107 #define F_DESCRAGG 107
#define NUM_ANNI 108

View File

@ -1,6 +1,6 @@
#include "batbpdb.h" #include "batbpdb.h"
TOOLBAR "" 0 20 0 2 TOOLBAR "" 0 19 0 2
#include <toolbar.h> #include <toolbar.h>
@ -8,99 +8,102 @@ ENDPAGE
PAGE "Tabella periodi di bilancio" 0 -1 0 19 PAGE "Tabella periodi di bilancio" 0 -1 0 19
GROUPBOX DLG_NULL 76 4 GROUPBOX DLG_NULL 76 6
BEGIN BEGIN
PROMPT 1 0 "" PROMPT 1 0 ""
FLAGS "R" FLAGS "R"
END END
STRING F_CODTAB 2 STRING F_CODTAB 3
BEGIN BEGIN
PROMPT 2 1 "Codice tabella " PROMPT 2 2 "Codice periodo "
HELP "Codice della tabella periodi di bilancio" HELP "Inserire il codice identificativo del periodo prescelto"
FLAS "U_" FLAS "RU"
FIELD CODTAB FIELD CODTAB
KEY 1 KEY 1
USE %PDB KEY 1 USE %PDB KEY 1
INPUT CODTAB F_CODTAB INPUT CODTAB F_CODTAB
DISPLAY "Codice" CODTAB DISPLAY "Codice@3" CODTAB
DISPLAY "Descrizione@40" S0 DISPLAY "Descrizione@40" S0
DISPLAY "gg.inizio" I0 DISPLAY "gg.inizio@3" I0
DISPLAY "mm.inizio" I1 DISPLAY "mm.inizio@3" I1
DISPLAY "gg.fine" I2 DISPLAY "gg.fine@3" I2
DISPLAY "mm.fine" I3 DISPLAY "mm.fine@3" I3
DISPLAY "Numero anni@3" I4
OUTPUT F_CODTAB CODTAB OUTPUT F_CODTAB CODTAB
OUTPUT F_DESCR S0 OUTPUT F_DESCR S0
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
END END
STRING F_DESCR 50 STRING F_DESCR 70 40
BEGIN BEGIN
PROMPT 2 2 "Descrizione " PROMPT 2 4 "Descrizione "
HELP "Descrizione del codice tabella periodi di bilancio" HELP "Descrizione del codice tabella periodi di bilancio"
FIELD S0
KEY 2 KEY 2
USE %PDB KEY 2 USE %PDB KEY 2
INPUT S0 F_DESCR INPUT S0 F_DESCR
DISPLAY "Descrizione@40" S0 DISPLAY "Descrizione@40" S0
DISPLAY "Codice" CODTAB DISPLAY "Codice@3" CODTAB
DISPLAY "gg.inizio" I0 DISPLAY "gg.inizio@3" I0
DISPLAY "mm.inizio" I1 DISPLAY "mm.inizio@3" I1
DISPLAY "gg.fine" I2 DISPLAY "gg.fine@3" I2
DISPLAY "mm.fine" I3 DISPLAY "mm.fine@3" I3
DISPLAY "Numero anni@3" I4
COPY OUTPUT F_CODTAB COPY OUTPUT F_CODTAB
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
FIELD S0
END END
NUMBER F_GIORNO_INI 2 NUMBER F_GIORNO_INI 7
BEGIN BEGIN
PROMPT 2 5 "Inizio periodo " PROMPT 2 8 "Inizio periodo: gg "
HELP "Inserire il giorno relativo al periodo di inizio" HELP "Inserire il giorno relativo al periodo di inizio"
FIELD I0 FIELD I0
FLAGS "R" FLAGS "R"
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
END END
NUMBER F_MESE_INI 2 NUMBER F_MESE_INI 7
BEGIN BEGIN
PROMPT 21 5 "" PROMPT 32 8 "mm "
HELP "Inserire il mese relativo al periodo di inizio" HELP "Inserire il mese relativo al periodo di inizio"
FIELD I1 FIELD I1
FLAGS "R" FLAGS "R"
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
END END
TEXT DLG_NULL
BEGIN
PROMPT 25 5 "gg/mm"
END
NUMBER F_GIORNO_FINE 2 NUMBER F_GIORNO_FINE 7
BEGIN BEGIN
PROMPT 2 7 "Fine periodo " PROMPT 2 10 "Fine periodo: gg "
HELP "Inserire il giorno relativo alla fine del periodo" HELP "Inserire il giorno relativo alla fine del periodo"
FIELD I2 FIELD I2
FLAGS "R" FLAGS "R"
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
END END
NUMBER F_MESE_FINE 2 NUMBER F_MESE_FINE 7
BEGIN BEGIN
PROMPT 21 7 "" PROMPT 32 10 "mm "
HELP "Inserire il mese relativo alla fine del periodo" HELP "Inserire il mese relativo alla fine del periodo"
FIELD I3 FIELD I3
FLAGS "R" FLAGS "R"
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
END END
TEXT DLG_NULL NUMBER NUM_ANNI 7
BEGIN BEGIN
PROMPT 25 7 "gg/mm" PROMPT 2 16 "Numero di anni "
HELP "Inserire il numero di anni"
FIELD I4
FLAGS "R"
CHECKTYPE REQUIRED
END END
STRING F_DESCRAGG 15
STRING F_DESCRAGG 70 30
BEGIN BEGIN
PROMPT 2 9 "Descrizione alternativa per stampa raffronti " PROMPT 2 18 "Descrizione alternativa per stampa raffronti "
FIELD S1 FIELD S1
END END

View File

@ -1,3 +1,3 @@
79 79
1 1
%absaldi|0|0|124|20|Saldi analisi di bilancio||| %absaldi|0|0|120|20|Saldi analisi di bilancio|||