From d0542d7ca9eeecd1ea91d9e60a6b5dda64e2abf5 Mon Sep 17 00:00:00 2001 From: sauro Date: Thu, 23 Oct 1997 15:13:47 +0000 Subject: [PATCH] =?UTF-8?q?//In=20ab0=20=C3=A8=20stato=20modicata=20la=20g?= =?UTF-8?q?estione=20del=20piano=20dei=20conti:=20//ab0=20sono=20stati=20a?= =?UTF-8?q?ggiunti=20dei=20commenti=20//ab0100.cpp=20=C3=A8=20stato=20comm?= =?UTF-8?q?entato=20tutto=20quello=20che=20riguarda=20il=20livello=20di=20?= =?UTF-8?q?struttura=20//in=20quanto=20questo=20campo=20non=20viene=20pi?= =?UTF-8?q?=C3=B9=20utilizzato=20ed=20=C3=A8=20stato=20aggiornato=20ab0200?= =?UTF-8?q?.h=20//la=20maschera=20=C3=A8=20stata=20modificata:=20aggiunto?= =?UTF-8?q?=20il=20compo=20"conto=20sospeso"=20e=20tolto=20quello=20del=20?= =?UTF-8?q?//livello=20di=20struttura=20//AB1=20esegue=20la=20stampa=20del?= =?UTF-8?q?le=20tabelle=20e=20del=20piano=20dei=20conti=20//sono=20state?= =?UTF-8?q?=20aggiunti=20i=20relativi=20file=20delle=20maschere?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: svn://10.65.10.50/trunk@5434 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ab/ab0.cpp | 4 +- ab/ab0100.cpp | 7 +- ab/ab0200.cpp | 22 ++- ab/ab0200.h | 13 +- ab/ab0200a.uml | 96 ++++------- ab/ab1.cpp | 24 +++ ab/ab1.h | 7 + ab/ab1100.cpp | 458 +++++++++++++++++++++++++++++++++++++++++++++++++ ab/ab1100.h | 36 ++++ ab/ab1200.cpp | 74 ++++++++ ab/ab1200.h | 11 ++ ab/ab1200.uml | 47 +++++ ab/batbarb.h | 10 ++ ab/batbarb.uml | 117 +++++++++++++ ab/batbntb.h | 4 + ab/batbntb.uml | 50 ++++++ ab/batbpdb.h | 1 + ab/batbpdb.uml | 73 ++++---- ab/f79.dir | 2 +- 19 files changed, 932 insertions(+), 124 deletions(-) create mode 100755 ab/ab1.cpp create mode 100755 ab/ab1.h create mode 100755 ab/ab1100.cpp create mode 100755 ab/ab1100.h create mode 100755 ab/ab1200.cpp create mode 100755 ab/ab1200.h create mode 100755 ab/ab1200.uml create mode 100755 ab/batbarb.h create mode 100755 ab/batbarb.uml create mode 100755 ab/batbntb.h create mode 100755 ab/batbntb.uml diff --git a/ab/ab0.cpp b/ab/ab0.cpp index 58440ccbd..d68a677f2 100755 --- a/ab/ab0.cpp +++ b/ab/ab0.cpp @@ -12,9 +12,9 @@ int main(int argc,char** argv) switch (n) { case 0: - ab0100(argc,argv); break; + ab0100(argc,argv); break; //Sintassi ab0 -0 tab_name -utente case 1: - ab0200(argc,argv); break; + ab0200(argc,argv); break; //Sintassi ab0 -1 -utente case 2: //ab0300(argc,argv); break; // case 3: diff --git a/ab/ab0100.cpp b/ab/ab0100.cpp index 26f4e8151..dfcda2136 100755 --- a/ab/ab0100.cpp +++ b/ab/ab0100.cpp @@ -1,4 +1,3 @@ - #include #include #include @@ -9,6 +8,7 @@ #include #include "batbpdb.h" +#include "batbarb.h" class Tabanabil_application : public Tab_application { @@ -88,8 +88,9 @@ bool Tabanabil_application::user_create() _msk->set_handler(F_MESE_INI, mese_handler); _msk->set_handler(F_GIORNO_FINE, giorno_handler); _msk->set_handler(F_MESE_FINE, mese_handler); - } - + } + if (_tabname == "%ARB") + set_search_field(F_CODTAB_ESE); return TRUE; } diff --git a/ab/ab0200.cpp b/ab/ab0200.cpp index b1ccd809e..5e48df83f 100755 --- a/ab/ab0200.cpp +++ b/ab/ab0200.cpp @@ -19,7 +19,13 @@ class TPconAb : public TRelation_application TString _codice; 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: virtual bool user_create(); @@ -35,14 +41,6 @@ protected: virtual void init_insert_mode (TMask&); 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() {} ; }; /* @@ -111,7 +109,7 @@ bool TPconAb::IndBil(TMask_field& f, KEY k) return TRUE; } - +/* // Handler che controlla la validita' del campo "Livello di struttura": // il suo valore deve essere >= 1 e <= 99. @@ -127,7 +125,7 @@ bool TPconAb::LivelloStrutt(TMask_field& f, KEY k) return TRUE; } - +*/ void TPconAb::init_query_mode(TMask&) { if (_isparametri) @@ -222,7 +220,7 @@ bool TPconAb::user_create() _msk->set_handler(F_CODCONTR, ContoSezBilOpp); _msk->set_handler(F_INDBIL, IndBil); - _msk->set_handler(F_LIVELLO, LivelloStrutt); + // _msk->set_handler(F_LIVELLO, LivelloStrutt); _isparametri = FALSE; diff --git a/ab/ab0200.h b/ab/ab0200.h index e5cb8bc15..1d1664cbf 100755 --- a/ab/ab0200.h +++ b/ab/ab0200.h @@ -1,11 +1,8 @@ // campi maschera ab0200a.uml #define F_CODICE 101 -#define F_DESCRIZ1 102 -#define F_DESCRIZ2 103 -#define F_LIVELLO 104 -#define F_INDBIL 105 -#define F_CODCONTR 106 -#define F_DETTAGLIO 107 -#define F_DESCRCONTR1 108 -#define F_DESCRCONTR2 109 +#define F_DESCRIZ 102 +#define F_INDBIL 103 +#define F_CODCONTR 104 +#define F_DETTAGLIO 105 +#define SOSPENDI 106 diff --git a/ab/ab0200a.uml b/ab/ab0200a.uml index 5a90a1b27..b71a18482 100755 --- a/ab/ab0200a.uml +++ b/ab/ab0200a.uml @@ -1,6 +1,6 @@ #include "ab0200.h" -TOOLBAR "" 0 20 0 2 +TOOLBAR "" 0 19 0 2 #include @@ -8,66 +8,51 @@ ENDPAGE PAGE "Piano dei Conti" 0 -1 0 19 -GROUPBOX DLG_NULL 76 5 +GROUPBOX DLG_NULL 76 6 BEGIN PROMPT 1 0 "" FLAGS "R" END -NUMBER F_CODICE 10 +NUMBER F_CODICE 12 BEGIN - PROMPT 2 1 "Codice tabella " + PROMPT 2 2 "Codice tabella " HELP "Codice della tabella Piano dei Conti" FIELD LF_ABPCON->CODCBL KEY 1 USE LF_ABPCON KEY 1 INPUT CODCBL F_CODICE - DISPLAY "Codice@11" CODCBL - DISPLAY "Descrizione@40" DESCRIZ[1,40] + DISPLAY "Codice@12" CODCBL + DISPLAY "Descrizione@40" DESCRIZ DISPLAY "I.B." INDBIL - DISPLAY "Codice opp.@11" CODCONTR + DISPLAY "Codice opp.@12" CODCONTR + DISPLAY "Sospeso@2" SOSPESO OUTPUT F_CODICE CODCBL - OUTPUT F_DESCRIZ1 DESCRIZ[1,40] - OUTPUT F_DESCRIZ2 DESCRIZ[41,] + OUTPUT F_DESCRIZ DESCRIZ CHECKTYPE REQUIRED - FLAGS "Z" + FLAGS "ZRU" END -STRING F_DESCRIZ1 40 +STRING F_DESCRIZ 80 40 BEGIN - PROMPT 2 2 "I parte descrizione " - FIELD LF_ABPCON->DESCRIZ[1,40] + PROMPT 2 4 "Descrizione " + FIELD LF_ABPCON->DESCRIZ KEY 2 USE LF_ABPCON KEY 2 - INPUT DESCRIZ[1,40] F_DESCRIZ1 - DISPLAY "Descrizione@40" DESCRIZ[1,40] - DISPLAY "Codice@11" CODCBL + INPUT DESCRIZ F_DESCRIZ + DISPLAY "Descrizione@40" DESCRIZ + DISPLAY "Codice@12" CODCBL DISPLAY "I.B." INDBIL - DISPLAY "Codice opp.@11" CODCONTR + DISPLAY "Codice opp.@12" CODCONTR + DISPLAY "Sospeso@2" SOSPESO COPY OUTPUT F_CODICE HELP "Prima parte della descrizione" WARNING "Manca la descrizione" CHECKTYPE REQUIRED // Guy: perche' non cosi'? 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 -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 +LIST F_INDBIL 15 BEGIN PROMPT 2 8 "Indicatore di bilancio " FIELD LF_ABPCON->INDBIL @@ -79,53 +64,38 @@ BEGIN ITEM "9|Varie" END -NUMBER F_CODCONTR 10 +NUMBER F_CODCONTR 12 BEGIN PROMPT 2 10 "Conto di sez.bil.opposta " HELP "Inserire il conto di sezione di bilancio opposta" FIELD LF_ABPCON->CODCONTR USE LF_ABPCON INPUT CODCBL F_CODCONTR - DISPLAY "Codice@11" CODCBL - DISPLAY "Descrizione@40" DESCRIZ[1,40] + DISPLAY "Codice@12" CODCBL + DISPLAY "Descrizione@40" DESCRIZ DISPLAY "I.B." INDBIL - DISPLAY "Codice@11" CODCONTR + DISPLAY "Codice@12" CODCONTR + DISPLAY "Sospeso@2" SOSPESO OUTPUT F_CODCONTR CODCBL - OUTPUT F_DESCRCONTR1 DESCRIZ[1,40] - OUTPUT F_DESCRCONTR2 DESCRIZ[41,] CHECKTYPE NORMAL ADD RUN AB0 -1 #F_CODICE #F_INDBIL - FLAGS "Z" + FLAGS "ZRU" 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 - PROMPT 30 12 "" - FLAGS "D" -END - -LIST F_DETTAGLIO 11 -BEGIN - PROMPT 2 13 "Dettaglio/Movimenti " + PROMPT 2 14 "Dettaglio/Movimenti " FIELD LF_ABPCON->DETT ITEM " |Nessuno" ITEM "D|Dettaglio" ITEM "M|Movimenti" +END + +BOOLEAN SOSPENDI +BEGIN + PROMTP 2 16 " Conto sospeso" + FIELD LF_ABPCON->SOSPESO END ENDPAGE diff --git a/ab/ab1.cpp b/ab/ab1.cpp new file mode 100755 index 000000000..f1ee77202 --- /dev/null +++ b/ab/ab1.cpp @@ -0,0 +1,24 @@ +#include +#include + +#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 ; +} diff --git a/ab/ab1.h b/ab/ab1.h new file mode 100755 index 000000000..87c6ef6ab --- /dev/null +++ b/ab/ab1.h @@ -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 \ No newline at end of file diff --git a/ab/ab1100.cpp b/ab/ab1100.cpp new file mode 100755 index 000000000..a0ac76a22 --- /dev/null +++ b/ab/ab1100.cpp @@ -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 +#include +#include + +#include + +#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; +} diff --git a/ab/ab1100.h b/ab/ab1100.h new file mode 100755 index 000000000..38854e8cf --- /dev/null +++ b/ab/ab1100.h @@ -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 + + + + + diff --git a/ab/ab1200.cpp b/ab/ab1200.cpp new file mode 100755 index 000000000..f8e4b00b0 --- /dev/null +++ b/ab/ab1200.cpp @@ -0,0 +1,74 @@ +// ab1200 Stampa Piano dei Conti +#include +#include +#include +#include //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; +} diff --git a/ab/ab1200.h b/ab/ab1200.h new file mode 100755 index 000000000..45ebe1994 --- /dev/null +++ b/ab/ab1200.h @@ -0,0 +1,11 @@ +#ifndef __AB1200_H +#define __AB1200_H + +#define F_INIZIO 100 +#define F_FINE 101 +#endif + + + + + diff --git a/ab/ab1200.uml b/ab/ab1200.uml new file mode 100755 index 000000000..7638878a6 --- /dev/null +++ b/ab/ab1200.uml @@ -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 diff --git a/ab/batbarb.h b/ab/batbarb.h new file mode 100755 index 000000000..24b8aa882 --- /dev/null +++ b/ab/batbarb.h @@ -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 \ No newline at end of file diff --git a/ab/batbarb.uml b/ab/batbarb.uml new file mode 100755 index 000000000..e0eae760c --- /dev/null +++ b/ab/batbarb.uml @@ -0,0 +1,117 @@ +#include "batbarb.h" + +TOOLBAR "" 0 19 0 2 + +#include + +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 \ No newline at end of file diff --git a/ab/batbntb.h b/ab/batbntb.h new file mode 100755 index 000000000..ed1bc1e92 --- /dev/null +++ b/ab/batbntb.h @@ -0,0 +1,4 @@ +// campi della maschera batbntb.uml + +#define F_CODTAB 101 +#define F_DESCR 102 \ No newline at end of file diff --git a/ab/batbntb.uml b/ab/batbntb.uml new file mode 100755 index 000000000..68624ed66 --- /dev/null +++ b/ab/batbntb.uml @@ -0,0 +1,50 @@ +#include "batbntb.h" + +TOOLBAR "" 0 19 0 2 + +#include + +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 \ No newline at end of file diff --git a/ab/batbpdb.h b/ab/batbpdb.h index 955a59656..eccb43eff 100755 --- a/ab/batbpdb.h +++ b/ab/batbpdb.h @@ -7,3 +7,4 @@ #define F_GIORNO_FINE 105 #define F_MESE_FINE 106 #define F_DESCRAGG 107 +#define NUM_ANNI 108 diff --git a/ab/batbpdb.uml b/ab/batbpdb.uml index 6014413e6..92788cf0c 100755 --- a/ab/batbpdb.uml +++ b/ab/batbpdb.uml @@ -1,6 +1,6 @@ #include "batbpdb.h" -TOOLBAR "" 0 20 0 2 +TOOLBAR "" 0 19 0 2 #include @@ -8,99 +8,102 @@ ENDPAGE PAGE "Tabella periodi di bilancio" 0 -1 0 19 -GROUPBOX DLG_NULL 76 4 +GROUPBOX DLG_NULL 76 6 BEGIN PROMPT 1 0 "" FLAGS "R" END -STRING F_CODTAB 2 +STRING F_CODTAB 3 BEGIN - PROMPT 2 1 "Codice tabella " - HELP "Codice della tabella periodi di bilancio" - FLAS "U_" + PROMPT 2 2 "Codice periodo " + HELP "Inserire il codice identificativo del periodo prescelto" + FLAS "RU" FIELD CODTAB KEY 1 USE %PDB KEY 1 INPUT CODTAB F_CODTAB - DISPLAY "Codice" CODTAB + DISPLAY "Codice@3" CODTAB DISPLAY "Descrizione@40" S0 - DISPLAY "gg.inizio" I0 - DISPLAY "mm.inizio" I1 - DISPLAY "gg.fine" I2 - DISPLAY "mm.fine" I3 + DISPLAY "gg.inizio@3" I0 + DISPLAY "mm.inizio@3" I1 + DISPLAY "gg.fine@3" I2 + DISPLAY "mm.fine@3" I3 + DISPLAY "Numero anni@3" I4 OUTPUT F_CODTAB CODTAB OUTPUT F_DESCR S0 CHECKTYPE REQUIRED END -STRING F_DESCR 50 +STRING F_DESCR 70 40 BEGIN - PROMPT 2 2 "Descrizione " + PROMPT 2 4 "Descrizione " HELP "Descrizione del codice tabella periodi di bilancio" + FIELD S0 KEY 2 USE %PDB KEY 2 INPUT S0 F_DESCR DISPLAY "Descrizione@40" S0 - DISPLAY "Codice" CODTAB - DISPLAY "gg.inizio" I0 - DISPLAY "mm.inizio" I1 - DISPLAY "gg.fine" I2 - DISPLAY "mm.fine" I3 + DISPLAY "Codice@3" CODTAB + DISPLAY "gg.inizio@3" I0 + DISPLAY "mm.inizio@3" I1 + DISPLAY "gg.fine@3" I2 + DISPLAY "mm.fine@3" I3 + DISPLAY "Numero anni@3" I4 COPY OUTPUT F_CODTAB CHECKTYPE REQUIRED - FIELD S0 END -NUMBER F_GIORNO_INI 2 +NUMBER F_GIORNO_INI 7 BEGIN - PROMPT 2 5 "Inizio periodo " + PROMPT 2 8 "Inizio periodo: gg " HELP "Inserire il giorno relativo al periodo di inizio" FIELD I0 FLAGS "R" CHECKTYPE REQUIRED END -NUMBER F_MESE_INI 2 +NUMBER F_MESE_INI 7 BEGIN - PROMPT 21 5 "" + PROMPT 32 8 "mm " HELP "Inserire il mese relativo al periodo di inizio" FIELD I1 FLAGS "R" CHECKTYPE REQUIRED END -TEXT DLG_NULL -BEGIN - PROMPT 25 5 "gg/mm" -END -NUMBER F_GIORNO_FINE 2 +NUMBER F_GIORNO_FINE 7 BEGIN - PROMPT 2 7 "Fine periodo " + PROMPT 2 10 "Fine periodo: gg " HELP "Inserire il giorno relativo alla fine del periodo" FIELD I2 FLAGS "R" CHECKTYPE REQUIRED END -NUMBER F_MESE_FINE 2 +NUMBER F_MESE_FINE 7 BEGIN - PROMPT 21 7 "" + PROMPT 32 10 "mm " HELP "Inserire il mese relativo alla fine del periodo" FIELD I3 FLAGS "R" CHECKTYPE REQUIRED END -TEXT DLG_NULL +NUMBER NUM_ANNI 7 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 + -STRING F_DESCRAGG 15 +STRING F_DESCRAGG 70 30 BEGIN - PROMPT 2 9 "Descrizione alternativa per stampa raffronti " + PROMPT 2 18 "Descrizione alternativa per stampa raffronti " FIELD S1 END diff --git a/ab/f79.dir b/ab/f79.dir index 31be059b5..dec85340e 100755 --- a/ab/f79.dir +++ b/ab/f79.dir @@ -1,3 +1,3 @@ 79 1 -%absaldi|0|0|124|20|Saldi analisi di bilancio||| +%absaldi|0|0|120|20|Saldi analisi di bilancio|||