From a6bbb2800e953ff9ee5833c1e8eb4a24f56b91ba Mon Sep 17 00:00:00 2001 From: alex Date: Thu, 22 Apr 1999 14:23:18 +0000 Subject: [PATCH] Patch level : xx.282 Files correlati : Ricompilazione Demo : [ ] Commento : Riportata la versione 01.05 patch 282 git-svn-id: svn://10.65.10.50/trunk@8076 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- in/f134.dir | 2 +- in/f134.trr | 2 +- in/f135.dir | 2 +- in/f135.trr | 2 +- in/in0.cpp | 8 +- in/in0.h | 8 +- in/in0100.cpp | 335 ++++++++++++++++++++ in/in0100a.frm | 789 ++++++++++++++++++++++++++++++++++++++++++++++++ in/in0100a.h | 6 + in/in0100a.uml | 57 ++++ in/in0100b.frm | 766 ++++++++++++++++++++++++++++++++++++++++++++++ in/in0200.cpp | 479 +++++++++++++++++++++++++++++ in/in0200a.h | 9 + in/in0200a.uml | 76 +++++ in/in0500.cpp | 19 +- in/in0500a.h | 3 +- in/in0500a.uml | 83 +++-- in/in0600.cpp | 7 +- in/in0600a.h | 58 ++-- in/in0600a.uml | 74 ++--- in/in0700.cpp | 2 +- in/in0700a.uml | 6 +- in/inlib01.cpp | 73 ++++- in/inlib01.h | 3 +- in/inprassi.men | 11 + 25 files changed, 2732 insertions(+), 148 deletions(-) create mode 100755 in/in0100.cpp create mode 100755 in/in0100a.frm create mode 100755 in/in0100a.h create mode 100755 in/in0100a.uml create mode 100755 in/in0100b.frm create mode 100755 in/in0200.cpp create mode 100755 in/in0200a.h create mode 100755 in/in0200a.uml create mode 100755 in/inprassi.men diff --git a/in/f134.dir b/in/f134.dir index 18228c072..f3fc15f20 100755 --- a/in/f134.dir +++ b/in/f134.dir @@ -1,3 +1,3 @@ 134 0 -$rintra|0|0|110|0|Righe movimenti intra||| +$rintra|0|0|112|0|Righe movimenti intra||| diff --git a/in/f134.trr b/in/f134.trr index e743cfd8c..a36e601f5 100755 --- a/in/f134.trr +++ b/in/f134.trr @@ -5,13 +5,13 @@ NUMRIG|2|3|0|Numero di riga AMMLIRE|4|18|2|Ammontare in lire AMMVALUTA|4|18|2|Ammontare in valuta NATURA|2|1|0|Natura della transazione +CONSEGNA|1|3|0|Condizioni di consegna TRASPORTO|6|1|0|Tipo di trasporto NOMENCL|1|8|0|Nomenclatura MASSAKG|4|13|5|Massa in Kilogrammi MASSAUMS|4|13|6|Massa nell'unita' di misura specificata UMS|1|2|0|Unita' di misura VALSTAT|4|18|2|Valore statistico -REGIME|2|1|0|Regime PAESE|1|2|0|Paese di destinazione/provenineza PAESEORIG|1|2|0|Paese d'origine PROV|1|2|0|Provincia d'origine/destinazione diff --git a/in/f135.dir b/in/f135.dir index a9eeb1edf..76ecbe2b4 100755 --- a/in/f135.dir +++ b/in/f135.dir @@ -1,3 +1,3 @@ 135 0 -$rieprett|0|0|154|0|Riepiloghi e rettifiche INTRA||| +$rieprett|0|0|156|0|Riepiloghi e rettifiche INTRA||| diff --git a/in/f135.trr b/in/f135.trr index c883f1b03..4f64ac097 100755 --- a/in/f135.trr +++ b/in/f135.trr @@ -8,7 +8,7 @@ STATO|1|2|0|Codice ISO dello Stato CEE PIVA|1|13|0|Partita IVA Cliente/Fornitore NATURA|7|1|0|Natura della transazione NOMENCL|3|8|0|Nomenclatura combinata -REGIME|6|1|0|Regime [1,6] +CONSEGNA|1|3|0|Condizioni di consegna TRASPORTO|2|1|0|Tipo di trasporto [1,9] PAESE|1|2|0|Paese di destinazione/provenienza PAESEORIG|1|2|0|Paese d'origine (solo Acquisti) diff --git a/in/in0.cpp b/in/in0.cpp index aae7a5f7a..e0a58c120 100755 --- a/in/in0.cpp +++ b/in/in0.cpp @@ -7,9 +7,11 @@ int main(int argc, char** argv) const int n = (argc > 1) ? (argv[1][1]-'0') : 0; switch (n) { - case 5 : is0600(argc, argv); break; // riepiloghi - case 6 : is0700(argc, argv); break; // rettifiche - default: is0500(argc, argv); break; // movimenti + case 0 : in0100(argc, argv); break; // stampa + case 1 : in0200(argc, argv); break; // dischetti + case 5 : in0600(argc, argv); break; // riepiloghi + case 6 : in0700(argc, argv); break; // rettifiche + default: in0500(argc, argv); break; // movimenti } exit(0); return 0; diff --git a/in/in0.h b/in/in0.h index e5caefee0..34534ef5c 100755 --- a/in/in0.h +++ b/in/in0.h @@ -1,4 +1,6 @@ -int is0500(int argc, char* argv[]); -int is0600(int argc, char* argv[]); -int is0700(int argc, char* argv[]); +int in0100(int argc, char* argv[]); +int in0200(int argc, char* argv[]); +int in0500(int argc, char* argv[]); +int in0600(int argc, char* argv[]); +int in0700(int argc, char* argv[]); diff --git a/in/in0100.cpp b/in/in0100.cpp new file mode 100755 index 000000000..e75cd0396 --- /dev/null +++ b/in/in0100.cpp @@ -0,0 +1,335 @@ +// Programma di stampa riepiloghi INTRA comunitari +// +// A fundament of righteous men, a barrow of ideals, the carriage +// of misjustice crushes all beneath its weels +// +#include +#include +#include +#include +#include + +#include + +#include "in0.h" +#include "in0100a.h" +#include "inlib01.h" + +/////////////////////////////////////////////////////////// +// TStampaIntra_form +/////////////////////////////////////////////////////////// +class TStampaIntra_form : public TForm +{ + TRecord_array *_riepiloghi; + TRecord_array *_rettifiche; + TString16 _tipo, _frequenza, _periodo, _anno; + int _totrow1, _totrow2, _totpag1, _totpag2; // Righe e pagine totali per sezioni... + int _pageno1, _pageno2, _index1, _index2; // Numero di pagina corrente ed indice di accesso ai TRecord_array + real _tot1, _tot2; // Totale ammontare sezione 1 e 2 + real _riportoprec1, _riportoprec2; // Riporto pagina prec. per sezioni 1 e 2 + real _totaleprog1, _totaleprog2; // Totale progressivo per pagina, sezioni 1 e 2 + +protected: + void print_page(const pagetype p); + const bool good() const; + +public: + void print(); + TStampaIntra_form (const char* name, char t, char f, int p, int a); + virtual ~TStampaIntra_form (); +}; + +TStampaIntra_form::TStampaIntra_form(const char* name, char t, char f, int p, int a) : TForm(name) +{ + _tipo << t; + _frequenza << f; + _periodo << p; + _anno << a; + + TRectype dep(cursor()->file(LF_RIEPRETT).curr()); + dep.zero(); + dep.put("TIPO", t); dep.put("ANNO", a); + dep.put("PERIODO", p); + _riepiloghi = new TRecord_array(dep, "NUMRIG"); + t++; + dep.put("TIPO", t); + _rettifiche = new TRecord_array(dep, "NUMRIG"); +} + +TStampaIntra_form::~TStampaIntra_form() +{ + if (_riepiloghi) + delete _riepiloghi; + if (_rettifiche) + delete _rettifiche; +} + +const bool TStampaIntra_form::good() const +{ + return _index1 <= _riepiloghi->rows() || _index2 <= _rettifiche->rows(); +} + +void TStampaIntra_form::print_page(const pagetype p) +{ + TString16 ws; + char secs[] = { "HBF" }; + TPrint_section* ps; + TPrinter& pr = printer(); + + for (int sc = 0; sc < 3; sc++) + if ((ps = exist(secs[sc], p, FALSE)) != NULL) + { + const word r = ps->height(); + int iterations = 1; + + if (secs[sc] == 'B') + switch(p) + { + case odd_page: + iterations = 10; + break; + case even_page: + iterations = 7; + break; + default: + break; + } + + const bool is_odd_page = p == odd_page; + const bool not_first = p != first_page; + int& index = is_odd_page ? _index1 : _index2; + int& max = is_odd_page ? _totrow1 : _totrow2; + // Per le testate ed i footers 1 singola iterazione, per i Body (solo ODD ed EVEN) + // esegue tante iterazioni quante sono le righe per riepiloghi o rettifiche + for (int k = 0; k < iterations; k++) + { + ps->reset(); + switch (secs[sc]) + { + case 'H': // Testate... + { + if (p == first_page || (not_first && index <= max)) + { + ps->find_field(_frequenza == "M" ? 1 : 2).set(_periodo); + ps->find_field(3).set(_anno); + if (p == first_page) + ps->find_field(4).set(_frequenza); + ps->update(); + } + } + break; + case 'F': // Footers... + if (p == first_page) + { + ws.format("%d", _totpag1); + ps->find_field(1).set(ws); + ws.format("%d", _totrow1); + ps->find_field(2).set(ws); + ps->find_field(3).set(_tot1.string()); + ws.format("%d", _totpag2); + ps->find_field(4).set(ws); + ws.format("%d", _totrow2); + ps->find_field(5).set(ws); + ps->find_field(6).set(_tot2.string()); + ps->update(); + } + else // Footers ODD/EVEN + { + real & rrip = is_odd_page ? _riportoprec1 : _riportoprec2; + real & rtot = is_odd_page ? _totaleprog1 : _totaleprog2; + int& pgn = is_odd_page ? _pageno1 : _pageno2; + int& totpgn = is_odd_page ? _totpag1 : _totpag2; + + if (pgn <= totpgn) + { + ws.format("%d", pgn); + ps->find_field(1).set(rrip.string()); + ps->find_field(2).set(rtot.string()); + ps->find_field(3).set(ws); + pgn++; + ps->update(); + } + rrip = rtot; + } + break; + case 'B': // Body! CDB Infame donato per compiacer alle virtu' delle giovani signore/signorine + { // Spezza il Totem: riunisce la piu' probabile delle ipotesi in un inutile compendio di + // miserabili ed incomode tentazioni. + if (not_first) + { + TRecord_array* ra = is_odd_page ? _riepiloghi : _rettifiche; + if (index <= max) + { + const TRectype& rec = ra->row(index); + relation()->lfile(LF_RIEPRETT).curr() = rec; + real & rtot = is_odd_page ? _totaleprog1 : _totaleprog2; + rtot += rec.get_real("AMMLIRE"); + index++; + ps->update(); + } + } + else + ps->update(); + } + break; + default: + break; + } + + for (word j = 0; j < r; j++) + { + TPrintrow& row = ps->row(j); + pr.print(row); + } + } + } + + // No formfeed is needed since Header + n * Body + Footer = 72; + // Where n is the total body size for first_page, 10 for odd_page and 7 for even_page +} + +void TStampaIntra_form::print() +{ + TPrinter& pr = printer(); + + // Calcolo degli ammontare complessivi, totale pagine e righe di dettaglio + // per sezione + + _totrow1 = _riepiloghi->rows(); + _totrow2 = _rettifiche->rows(); + _totpag1 = _totrow1 % 10 != 0 ? _totrow1 / 10 + 1 : _totrow1 / 10; + _totpag2 = _totrow2 % 7 != 0 ? _totrow2 / 7 + 1 : _totrow2 / 7; + _pageno1 = _pageno2 = 1; + _index1 = _index2 = 1; + + if (_totrow1 + _totrow2 == 0) + { + error_box("Non esistono righe di riepilogo o rettifiche da stampare per il periodo selezionato"); + return; + } + + for (int i = 1; i <= _totrow1; i++) + _tot1 += _riepiloghi->row(i).get_real("AMMLIRE"); + + for (i = 1; i <= _totrow2; i++) + { + const TRectype& rec = _rettifiche->row(i); + if (rec.get_char("SEGNORETT") == '-') + _tot2 -= rec.get_real("AMMLIRE"); + else + _tot2 += rec.get_real("AMMLIRE"); + } + + //Posiziona la relazione principale (ditta corrente) + TLocalisamfile& nditte = relation()->lfile(LF_NDITTE); + + nditte.put(NDT_CODDITTA, prefix().get_codditta()); + if (relation()->read(_isequal) != NOERR && !yesno_box("Errore nel posizionamento sulla ditta corrente. Continuare?")) + return; + + pr.formlen(height(1)); + pr.open(); // Apriti Sesamo! Granello di nulla... ma assai importante nell'antichita'. + + //Posizionamento + if (pr.printtype() == winprinter && pr.is_generic()) + arrange_form(); + + // Ed ecco qui... il Lievito Svi$$ero (sempre per rimanere in tema di Ali' Baba' ed i 40 Kazzoni) + while (good()) + { + for (int pagina = 1; pagina <= 4; pagina++) + { + switch (pagina) + { + case 1: + print_page(first_page); + break; + case 2: + case 3: + print_page(odd_page); + break; + case 4: + print_page(even_page); + break; + default: + break; + } + } + } + // Exhausting all the rest: + // I will get, you dear enemy; + // ..See that people are underhand when asking: "how are you?" + // And so the printer was CLOSED! + pr.close(); // Chiuditi Sesamo +} + +/////////////////////////////////////////////////////////// +// TStampaIntra_mask +/////////////////////////////////////////////////////////// + +class TStampaIntra_mask : public TIntra_mask +{ + +protected: + virtual short type_field() const { return R_TIPO; } + virtual short period_field() const { return R_PERIODO_M; } + +public: + void print(); + TStampaIntra_mask(); + virtual ~TStampaIntra_mask() { } +}; + +TStampaIntra_mask::TStampaIntra_mask() + : TIntra_mask("in0100a") +{ } + +void TStampaIntra_mask::print() +{ + TStampaIntra_form form(tipo() == 'A' ? "in0100a" : "in0100b", tipo(), frequenza(), periodo(), get_int(R_ANNO)); + form.print(); +} + +/////////////////////////////////////////////////////////// +// Applicazione di stampa +/////////////////////////////////////////////////////////// + +class TStampa_intra : public TSkeleton_application +{ + TStampaIntra_mask* _msk; + +protected: + virtual bool create(); + virtual bool destroy(); + virtual void main_loop(); +public: + TStampa_intra() {}; + virtual ~TStampa_intra() {}; +}; + +bool TStampa_intra::create() +{ + open_files(LF_TABCOM, LF_TAB, LF_CLIFO, LF_MOV, + LF_INTRA, LF_RINTRA, 0); + _msk = new TStampaIntra_mask; + return TSkeleton_application::create(); +} + +bool TStampa_intra::destroy() +{ + delete _msk; + return TSkeleton_application::destroy(); +} + +void TStampa_intra::main_loop() +{ + while (_msk->run()!=K_QUIT) + _msk->print(); +} + +int in0100(int argc, char* argv[]) +{ + TStampa_intra a; + a.run(argc, argv, "Stampa Riepiloghi"); + return 0; +} diff --git a/in/in0100a.frm b/in/in0100a.frm new file mode 100755 index 000000000..78cd17e70 --- /dev/null +++ b/in/in0100a.frm @@ -0,0 +1,789 @@ +// Form per la stampa riepiloghi INTRA (Acquisti) + +USE 9 +JOIN 6 TO 9 ALIAS 106 INTO TIPOA=TIPOA CODANAGR=CODANAGR +JOIN 8 TO 106@ ALIAS 118 INTO CODANAGR=CODANAGR +JOIN 13 TO 118@ ALIAS 213 INTO STATO=="" COM==COMNASC +JOIN 13 TO 106@ ALIAS 313 INTO STATO==STATORES COM==COMRES +JOIN 13 TO 106@ ALIAS 413 INTO STATO=="" COM==COMRF +JOIN 6 TO 9 ALIAS 206 INTO TIPOA==TIPOSOGDEL CODANAGR==CODSOGDEL +JOIN 13 TO 206@ ALIAS 513 INTO STATO==STATORES COM==COMRES +JOIN 13 TO 206@ ALIAS 613 INTO STATO=="" COM==COMRF +JOIN 135 TO 9 INTO ANNO=CODDITTA +END + +DESCRIPTION +BEGIN +END + + +GENERAL +BEGIN + OFFSET 0 0 + CARATTERE "X" + INIZIO_POS 2 4 + FINE_POS 76 +END + +SECTION HEADER FIRST 16 + +NUMERO 1 4 +BEGIN + KEY "Mese" + PROMPT 43 14 "" + PICTURE "@ #" +END + +NUMERO 2 1 +BEGIN + KEY "Trimestre" + PROMPT 55 14 "" +END + +NUMERO 3 5 +BEGIN + KEY "Anno" + PROMPT 64 14 "" + PICTURE "^^# #" +END + +STRINGA 4 1 +BEGIN + KEY "Tipo riepilogo" + PROMPT 39 16 "" +END + +END + +SECTION BODY FIRST 33 + +LISTA 99 +BEGIN + KEY "Tipo anagrafica" + PROMPT 1 1 "" + FIELD TIPOA + ITEM "F| " MESSAGE SHOW,1@|HIDE,2@ + ITEM "G| " MESSAGE SHOW,2@|HIDE,1@ +END + +STRINGA 1 +BEGIN + KEY "Codice Fiscale" + PROMPT 3 7 "" + FIELD 106@->COFI +END + +STRINGA 2 +BEGIN + KEY "Partita IVA" + PROMPT 53 7 "" + FIELD 106@->PAIV +END + +STRINGA 3 +BEGIN + KEY "Cognome" + PROMPT 3 10 "" + FIELD 106@->RAGSOC[1,30] + GROUP 1 +END + +STRINGA 4 +BEGIN + KEY "Nome" + PROMPT 43 10 "" + FIELD 106@->RAGSOC[31,50] + GROUP 1 +END + +DATA 5 +BEGIN + KEY "Data di nascita" + PROMPT 4 13 "" + FIELD 118@->DATANASC + FORMAT "1442-" + PICTURE "# #^# #^# #" + GROUP 1 +END + +LISTA 6 +BEGIN + KEY "Sesso" + PROMPT 19 13 "" + FIELD 118@->SESSO + ITEM "M|X" + ITEM "F| X" + GROUP 1 +END + +STRINGA 7 32 +BEGIN + KEY "Comune di nascita" + PROMPT 23 13 "" + FIELD 213@->DENCOM + GROUP 1 +END + +STRINGA 8 2 +BEGIN + KEY "Provincia di nascita" + PROMPT 59 13 "" + FIELD 213@->PROVCOM + GROUP 1 +END + +STRINGA 9 4 +BEGIN + KEY "Prefisso telefonico" + PROMPT 64 13 "" + FIELD 106@->PTELRF + GROUP 1 +END + +STRINGA 10 9 +BEGIN + KEY "Numero telefonico" + PROMPT 69 13 "" + FIELD 106@->TELRF + GROUP 1 +END + +STRINGA 11 +BEGIN + KEY "Denominazione o ragione sociale" + PROMPT 3 17 "" + FIELD 106@->RAGSOC + GROUP 2 +END + +STRINGA 12 4 +BEGIN + KEY "Prefisso telefonico" + PROMPT 64 17 "" + FIELD 106@->PTELRF + GROUP 2 +END + +STRINGA 13 9 +BEGIN + KEY "Numero telefonico" + PROMPT 69 17 "" + FIELD 106@->TELRF + GROUP 2 +END + +STRINGA 14 20 +BEGIN + KEY "Comune di residenza fiscale" + PROMPT 52 20 "" + FIELD 413@->DENCOM + MESSAGE EMPTY SHOW,3@|HIDE,4@ + MESSAGE SHOW,4@|HIDE,3@ +END + +STRINGA 15 20 +BEGIN + KEY "Comune di residenza" + PROMPT 52 20 "" + FIELD 313@->DENCOM + GROUP 3 +END + +STRINGA 16 +BEGIN + KEY "Provincia di residenza fiscale" + PROMPT 74 20 "" + FIELD 413@->PROVCOM + GROUP 4 +END + +STRINGA 17 +BEGIN + KEY "Provincia di residenza" + PROMPT 74 20 "" + FIELD 313@->PROVCOM + GROUP 3 +END + +STRINGA 18 +BEGIN + KEY "Indirizzo residenza fiscale" + PROMPT 1 20 "" + FIELD 106@->INDRF[1,35] + FLAGS "H" + MESSAGE COPY,20 +END + +STRINGA 19 +BEGIN + KEY "Nr. civico di residenza fiscale" + PROMPT 1 20 "" + FIELD 106@->CIVRF + FLAGS "H" + MESSAGE APPEND,20 +END + +STRINGA 20 38 +BEGIN + KEY "Indirizzo residenza fiscale+nr. civico" + PROMPT 3 20 "" + GROUP 4 +END + +STRINGA 21 +BEGIN + KEY "Indirizzo residenza" + PROMPT 1 20 "" + FIELD 106@->INDRES[1,35] + FLAGS "H" + MESSAGE COPY,23 +END + +STRINGA 22 +BEGIN + KEY "Nr. civico di residenza" + PROMPT 1 20 "" + FIELD 106@->CIVRES + FLAGS "H" + MESSAGE APPEND,23 +END + +STRINGA 23 38 +BEGIN + KEY "Indirizzo residenza+nr. civico" + PROMPT 3 20 "" + GROUP 3 +END + +STRINGA 24 +BEGIN + KEY "CAP residenza fiscale" + PROMPT 42 20 "" + FIELD 106@->CAPRF + GROUP 4 +END + +STRINGA 25 +BEGIN + KEY "CAP residenza" + PROMPT 42 20 "" + FIELD 106@->CAPRES + GROUP 3 +END + +LISTA 26 1 +BEGIN + KEY "Elenchi presentati in precedenza" + PROMPT 7 23 "" + ITEM " | " + ITEM "X|X" + FIELD PRESELEN +END + +LISTA 26 1 +BEGIN + KEY "Cessazione attivita'" + PROMPT 40 23 "" + ITEM " | " + ITEM "X|X" + FIELD CESSIVA +END + +STRINGA 27 +BEGIN + KEY "Partita IVA delegato" + PROMPT 11 27 "" + FIELD 206@->PAIV +END + +STRINGA 28 50 +BEGIN + KEY "Nome e Cognome o Ragione sociale delegato" + PROMPT 3 30 "" + FIELD 206@->RAGSOC +END + +STRINGA 29 4 +BEGIN + KEY "Prefisso telefonico delegato" + PROMPT 64 30 "" + FIELD 206@->PTELRF +END + +STRINGA 30 9 +BEGIN + KEY "Numero telefonico delegato" + PROMPT 69 30 "" + FIELD 206@->TELRF +END + +STRINGA 31 20 +BEGIN + KEY "Comune di residenza fiscale delegato" + PROMPT 52 33 "" + FIELD 613@->DENCOM + MESSAGE EMPTY SHOW,5@|HIDE,6@ + MESSAGE SHOW,6@|HIDE,5@ +END + +STRINGA 32 20 +BEGIN + KEY "Comune di residenza delegato" + PROMPT 52 33 "" + FIELD 513@->DENCOM + GROUP 5 +END + +STRINGA 33 +BEGIN + KEY "Provincia di residenza fiscale delegato" + PROMPT 74 33 "" + FIELD 613@->PROVCOM + GROUP 6 +END + +STRINGA 34 +BEGIN + KEY "Provincia di residenza delegato" + PROMPT 74 33 "" + FIELD 513@->PROVCOM + GROUP 5 +END + +STRINGA 35 +BEGIN + KEY "Indirizzo residenza fiscale delegato" + PROMPT 1 33 "" + FIELD 206@->INDRF[1,35] + FLAGS "H" + MESSAGE COPY,37 +END + +STRINGA 36 +BEGIN + KEY "Nr. civico di residenza fiscale delegato" + PROMPT 1 33 "" + FIELD 206@->CIVRF + FLAGS "H" + MESSAGE APPEND,37 +END + +STRINGA 37 38 +BEGIN + KEY "Indirizzo residenza fiscale+nr. civico delegato" + PROMPT 3 33 "" + GROUP 6 +END + +STRINGA 38 +BEGIN + KEY "Indirizzo residenza delegato" + PROMPT 1 33 "" + FIELD 206@->INDRES[1,35] + FLAGS "H" + MESSAGE COPY,40 +END + +STRINGA 39 +BEGIN + KEY "Nr. civico di residenza delegato" + PROMPT 1 33 "" + FIELD 206@->CIVRES + FLAGS "H" + MESSAGE APPEND,40 +END + +STRINGA 40 38 +BEGIN + KEY "Indirizzo residenza+nr. civico delegato" + PROMPT 3 33 "" + GROUP 5 +END + +STRINGA 41 +BEGIN + KEY "CAP residenza fiscale delegato" + PROMPT 42 33 "" + FIELD 206@->CAPRF + GROUP 6 +END + +STRINGA 42 +BEGIN + KEY "CAP residenza delegato" + PROMPT 42 33 "" + FIELD 206@->CAPRES + GROUP 5 +END + +END + +SECTION FOOTER FIRST 23 + +NUMERO 1 3 +BEGIN + KEY "Totale pagine sezione 1" + PROMPT 11 6 "" +END + +NUMERO 2 5 +BEGIN + KEY "Totale righe dettaglio sezione 1" + PROMPT 18 6 "" +END + +NUMERO 3 15 +BEGIN + KEY "Ammontare complessivo sezione 1" + PROMPT 25 6 "" + PICTURE "###.###.###.^^^" +END + +NUMERO 4 3 +BEGIN + KEY "Totale pagine sezione 2" + PROMPT 49 6 "" +END + +NUMERO 5 5 +BEGIN + KEY "Totale righe dettaglio sezione 2" + PROMPT 56 6 "" +END + +NUMERO 6 15 +BEGIN + KEY "Ammontare complessivo sezione 2" + PROMPT 64 6 "" + PICTURE "###.###.###.^^^" +END + +DATA 7 10 +BEGIN + KEY "Data di stampa" + PROMPT 6 10 "" + MESSAGE _TODAY +END + +END + +SECTION HEADER ODD 21 + +NUMERO 1 4 +BEGIN + KEY "Mese" + PROMPT 16 15 "" + PICTURE "@ #" +END + +NUMERO 2 1 +BEGIN + KEY "Trimestre" + PROMPT 29 15 "" +END + +NUMERO 3 5 +BEGIN + KEY "Anno" + PROMPT 37 15 "" + PICTURE "^^# #" +END + +STRINGA 4 +BEGIN + KEY "Partita IVA" + PROMPT 53 15 "" + FIELD 106@->PAIV +END + +END + +SECTION BODY ODD 2 + +NUMERO 1 3 +BEGIN + KEY "Progressivo riga" + PROMPT 3 1 "" + FIELD 135->NUMRIG +END + +STRINGA 2 2 +BEGIN + KEY "Stato" + PROMPT 7 1 "" + FIELD 135->STATO +END + +STRINGA 3 11 +BEGIN + KEY "Partita IVA" + PROMPT 11 1 "" + FIELD 135->PIVA +END + +NUMERO 4 12 +BEGIN + KEY "Ammontare operazioni in lire" + PROMPT 25 1 "" + FIELD 135->AMMLIRE + PICTURE "####.###.^^^" +END + +NUMERO 5 12 +BEGIN + KEY "Ammontare operazioni in valuta" + PROMPT 37 1 "" + FIELD 135->AMMVALUTA + PICTURE "#.###.###,@@" +END + +STRINGA 6 1 +BEGIN + KEY "Natura della transazione" + PROMPT 50 1 "" + FIELD 135->NATURA +END + +STRINGA 7 8 +BEGIN + KEY "Nomenclatura combinata" + PROMPT 53 1 "" + FIELD 135->NOMENCL + PICTURE "@@@@@@@@" +END + +NUMERO 8 10 +BEGIN + KEY "Massa netta in kilogrammi" + PROMPT 62 1 "" + FIELD 135->MASSAKG + PICTURE "######,@@@" +END + +NUMERO 9 10 +BEGIN + KEY "Massa in unita' supplementare" + PROMPT 73 1 "" + FIELD 135->MASSAUMS + PICTURE "######,@@@" +END + +NUMERO 10 12 +BEGIN + KEY "Valore statistico" + PROMPT 84 1 "" + FIELD 135->VALSTAT + PICTURE "####.###.^^^" +END + +STRINGA 11 1 +BEGIN + KEY "Codice consegna" + PROMPT 97 1 "" + FIELD 135->CONSEGNA[1,1] +END + +STRINGA 12 1 +BEGIN + KEY "Modo di trasporto" + PROMPT 100 1 "" + FIELD 135->TRASPORTO +END + +STRINGA 13 2 +BEGIN + KEY "Paese destinazione/provenienza" + PROMPT 103 1 "" + FIELD 135->PAESE +END + +STRINGA 14 2 +BEGIN + KEY "Paese di origine" + PROMPT 107 1 "" + FIELD 135->PAESEORIG +END + +STRINGA 15 2 +BEGIN + KEY "Provincia di destinazione" + PROMPT 111 1 "" + FIELD 135->PROV +END + +END + +SECTION FOOTER ODD 31 + +NUMERO 1 12 +BEGIN + KEY "Riporto dalla pagina precedente" + PROMPT 25 1 "" + PICTURE "####.###.^^^" +END + +NUMERO 2 12 +BEGIN + KEY "Totale" + PROMPT 25 3 "" + PICTURE "####.###.^^^" +END + +NUMERO 3 3 +BEGIN + KEY "Numero di pagina" + PROMPT 111 3 "" +END + +END + +SECTION HEADER EVEN 22 + +NUMERO 1 4 +BEGIN + KEY "Mese" + PROMPT 16 15 "" + PICTURE "@ #" +END + +NUMERO 2 1 +BEGIN + KEY "Trimestre" + PROMPT 29 15 "" +END + +NUMERO 3 6 +BEGIN + KEY "Anno" + PROMPT 37 15 "" + PICTURE "^^# #" +END + +STRINGA 4 +BEGIN + KEY "Partita IVA" + PROMPT 53 15 "" + FIELD 106@->PAIV +END + +END + +// Sezione di stampa rettifiche + +SECTION BODY EVEN 2 + +NUMERO 1 3 +BEGIN + KEY "Progressivo riga" + PROMPT 3 1 "" + FIELD 135->NUMRIG +END + +NUMERO 2 2 +BEGIN + KEY "Mese del periodo di riferimento" + PROMPT 7 1 "" + FIELD 135->PERETT +END + +NUMERO 3 2 +BEGIN + KEY "Trimestre del periodo di riferimento" + PROMPT 11 1 "" + FIELD 135->PERETT +END + +NUMERO 4 4 +BEGIN + KEY "Anno del periodo di riferimento" + PROMPT 14 1 "" + FIELD 135->ANNORETT +END + +STRINGA 5 2 +BEGIN + KEY "Stato" + PROMPT 19 1 "" + FIELD 135->STATO +END + +STRINGA 6 11 +BEGIN + KEY "Partita IVA" + PROMPT 23 1 "" + FIELD 135->PIVA +END + +STRINGA 7 1 +BEGIN + KEY "Segno" + PROMPT 37 1 "" + FIELD 135->SEGNORETT +END + +NUMERO 8 12 +BEGIN + KEY "Ammontare operazioni in lire" + PROMPT 41 1 "" + FIELD 135->AMMLIRE + PICTURE "####.###.^^^" +END + +NUMERO 9 12 +BEGIN + KEY "Ammontare operazioni in valuta" + PROMPT 52 1 "" + FIELD 135->AMMVALUTA + PICTURE "#.###.###,@@" +END + +STRINGA 10 1 +BEGIN + KEY "Natura della transazione" + PROMPT 66 1 "" + FIELD 135->NATURA +END + +STRINGA 11 8 +BEGIN + KEY "Nomenclatura combinata" + PROMPT 69 1 "" + FIELD 135->NOMENCL + PICTURE "@@@@@@@@" +END + +NUMERO 12 12 +BEGIN + KEY "Valore statistico" + PROMPT 80 1 "" + FIELD 135->VALSTAT + PICTURE "####.###.^^^" +END + +END + +SECTION FOOTER EVEN 36 + +NUMERO 1 12 +BEGIN + KEY "Riporto dala pagina precedente" + PROMPT 41 1 "" + PICTURE "####.###.^^^" +END + +NUMERO 2 12 +BEGIN + KEY "Totale" + PROMPT 41 3 "" + PICTURE "####.###.^^^" +END + +NUMERO 3 3 +BEGIN + KEY "Numero di pagina" + PROMPT 89 4 "" +END + +END + + diff --git a/in/in0100a.h b/in/in0100a.h new file mode 100755 index 000000000..551d07394 --- /dev/null +++ b/in/in0100a.h @@ -0,0 +1,6 @@ +#define R_RIEPILOGHI 100 +#define R_TIPO 101 +#define R_ANNO 102 +#define R_PERIODO_M 103 +#define R_PERIODO_T 104 +#define R_PERIODO_A 105 diff --git a/in/in0100a.uml b/in/in0100a.uml new file mode 100755 index 000000000..19f5eb3b2 --- /dev/null +++ b/in/in0100a.uml @@ -0,0 +1,57 @@ +#include "in0100a.h" + +PAGE "Stampa Riepiloghi" -1 -1 32 6 + +LIST R_TIPO 1 10 +BEGIN + PROMPT 1 1 "Tipo riepilogo " + ITEM "C|Cessioni" + ITEM "A|Acquisti" +END + +NUMBER R_ANNO 4 +BEGIN + PROMPT 1 2 "Anno " + FLAGS "AU" +END + +LIST R_PERIODO_M 2 17 +BEGIN + PROMPT 1 3 "Periodo " + FLAGS "AM" + FIELD PERIODO +END + +LIST R_PERIODO_T 2 17 +BEGIN + PROMPT 1 3 "Periodo " + ITEM "01|Gennaio-Marzo" + MESSAGE COPY,R_PERIODO_M + ITEM "02|Aprile-Giugno" + MESSAGE COPY,R_PERIODO_M + ITEM "03|Luglio-Settembre" + MESSAGE COPY,R_PERIODO_M + ITEM "04|Ottobre-Dicembre" + MESSAGE COPY,R_PERIODO_M +END + +LIST R_PERIODO_A 2 17 +BEGIN + PROMPT 1 3 "Periodo " + ITEM "01|Annuale" + MESSAGE COPY,R_PERIODO_M +END + +BUTTON DLG_PRINT 10 2 +BEGIN + PROMPT -12 -1 "" +END + +BUTTON DLG_QUIT 10 2 +BEGIN + PROMPT -22 -1 "" +END + +ENDPAGE + +ENDMASK diff --git a/in/in0100b.frm b/in/in0100b.frm new file mode 100755 index 000000000..630a35b7a --- /dev/null +++ b/in/in0100b.frm @@ -0,0 +1,766 @@ +// Form per la stampa riepiloghi INTRA (Cessioni) + +USE 9 +JOIN 6 TO 9 ALIAS 106 INTO TIPOA=TIPOA CODANAGR=CODANAGR +JOIN 8 TO 106@ ALIAS 118 INTO CODANAGR=CODANAGR +JOIN 13 TO 118@ ALIAS 213 INTO STATO=="" COM==COMNASC +JOIN 13 TO 106@ ALIAS 313 INTO STATO==STATORES COM==COMRES +JOIN 13 TO 106@ ALIAS 413 INTO STATO=="" COM==COMRF +JOIN 6 TO 9 ALIAS 206 INTO TIPOA==TIPOSOGDEL CODANAGR==CODSOGDEL +JOIN 13 TO 206@ ALIAS 513 INTO STATO==STATORES COM==COMRES +JOIN 13 TO 206@ ALIAS 613 INTO STATO=="" COM==COMRF +JOIN 135 TO 9 INTO ANNO=CODDITTA +END + +DESCRIPTION +BEGIN +END + + +GENERAL +BEGIN + OFFSET 0 0 + CARATTERE "X" + INIZIO_POS 2 4 + FINE_POS 76 +END + +SECTION HEADER FIRST 16 + +NUMERO 1 4 +BEGIN + KEY "Mese" + PROMPT 43 14 "" + PICTURE "@ #" +END + +NUMERO 2 1 +BEGIN + KEY "Trimestre" + PROMPT 55 14 "" +END + +NUMERO 3 5 +BEGIN + KEY "Anno" + PROMPT 64 14 "" + PICTURE "^^# #" +END + +STRINGA 4 1 +BEGIN + KEY "Tipo riepilogo" + PROMPT 39 16 "" +END + +END + +SECTION BODY FIRST 33 + +LISTA 99 +BEGIN + KEY "Tipo anagrafica" + PROMPT 1 1 "" + FIELD TIPOA + ITEM "F| " MESSAGE SHOW,1@|HIDE,2@ + ITEM "G| " MESSAGE SHOW,2@|HIDE,1@ +END + +STRINGA 1 +BEGIN + KEY "Codice Fiscale" + PROMPT 3 7 "" + FIELD 106@->COFI +END + +STRINGA 2 +BEGIN + KEY "Partita IVA" + PROMPT 53 7 "" + FIELD 106@->PAIV +END + +STRINGA 3 +BEGIN + KEY "Cognome" + PROMPT 3 10 "" + FIELD 106@->RAGSOC[1,30] + GROUP 1 +END + +STRINGA 4 +BEGIN + KEY "Nome" + PROMPT 43 10 "" + FIELD 106@->RAGSOC[31,50] + GROUP 1 +END + +DATA 5 +BEGIN + KEY "Data di nascita" + PROMPT 4 13 "" + FIELD 118@->DATANASC + FORMAT "1442-" + PICTURE "# #^# #^# #" + GROUP 1 +END + +LISTA 6 +BEGIN + KEY "Sesso" + PROMPT 19 13 "" + FIELD 118@->SESSO + ITEM "M|X" + ITEM "F| X" + GROUP 1 +END + +STRINGA 7 32 +BEGIN + KEY "Comune di nascita" + PROMPT 23 13 "" + FIELD 213@->DENCOM + GROUP 1 +END + +STRINGA 8 2 +BEGIN + KEY "Provincia di nascita" + PROMPT 59 13 "" + FIELD 213@->PROVCOM + GROUP 1 +END + +STRINGA 9 4 +BEGIN + KEY "Prefisso telefonico" + PROMPT 64 13 "" + FIELD 106@->PTELRF + GROUP 1 +END + +STRINGA 10 9 +BEGIN + KEY "Numero telefonico" + PROMPT 69 13 "" + FIELD 106@->TELRF + GROUP 1 +END + +STRINGA 11 +BEGIN + KEY "Denominazione o ragione sociale" + PROMPT 3 17 "" + FIELD 106@->RAGSOC + GROUP 2 +END + +STRINGA 12 4 +BEGIN + KEY "Prefisso telefonico" + PROMPT 64 17 "" + FIELD 106@->PTELRF + GROUP 2 +END + +STRINGA 13 9 +BEGIN + KEY "Numero telefonico" + PROMPT 69 17 "" + FIELD 106@->TELRF + GROUP 2 +END + +STRINGA 14 20 +BEGIN + KEY "Comune di residenza fiscale" + PROMPT 52 20 "" + FIELD 413@->DENCOM + MESSAGE EMPTY SHOW,3@|HIDE,4@ + MESSAGE SHOW,4@|HIDE,3@ +END + +STRINGA 15 20 +BEGIN + KEY "Comune di residenza" + PROMPT 52 20 "" + FIELD 313@->DENCOM + GROUP 3 +END + +STRINGA 16 +BEGIN + KEY "Provincia di residenza fiscale" + PROMPT 74 20 "" + FIELD 413@->PROVCOM + GROUP 4 +END + +STRINGA 17 +BEGIN + KEY "Provincia di residenza" + PROMPT 74 20 "" + FIELD 313@->PROVCOM + GROUP 3 +END + +STRINGA 18 +BEGIN + KEY "Indirizzo residenza fiscale" + PROMPT 1 20 "" + FIELD 106@->INDRF[1,35] + FLAGS "H" + MESSAGE COPY,20 +END + +STRINGA 19 +BEGIN + KEY "Nr. civico di residenza fiscale" + PROMPT 1 20 "" + FIELD 106@->CIVRF + FLAGS "H" + MESSAGE APPEND,20 +END + +STRINGA 20 38 +BEGIN + KEY "Indirizzo residenza fiscale+nr. civico" + PROMPT 3 20 "" + GROUP 4 +END + +STRINGA 21 +BEGIN + KEY "Indirizzo residenza" + PROMPT 1 20 "" + FIELD 106@->INDRES[1,35] + FLAGS "H" + MESSAGE COPY,23 +END + +STRINGA 22 +BEGIN + KEY "Nr. civico di residenza" + PROMPT 1 20 "" + FIELD 106@->CIVRES + FLAGS "H" + MESSAGE APPEND,23 +END + +STRINGA 23 38 +BEGIN + KEY "Indirizzo residenza+nr. civico" + PROMPT 3 20 "" + GROUP 3 +END + +STRINGA 24 +BEGIN + KEY "CAP residenza fiscale" + PROMPT 42 20 "" + FIELD 106@->CAPRF + GROUP 4 +END + +STRINGA 25 +BEGIN + KEY "CAP residenza" + PROMPT 42 20 "" + FIELD 106@->CAPRES + GROUP 3 +END + +LISTA 26 1 +BEGIN + KEY "Elenchi presentati in precedenza" + PROMPT 7 23 "" + ITEM " | " + ITEM "X|X" + FIELD PRESELEN +END + +LISTA 26 1 +BEGIN + KEY "Cessazione attivita'" + PROMPT 40 23 "" + ITEM " | " + ITEM "X|X" + FIELD CESSIVA +END + +STRINGA 27 +BEGIN + KEY "Partita IVA delegato" + PROMPT 11 27 "" + FIELD 206@->PAIV +END + +STRINGA 28 50 +BEGIN + KEY "Nome e Cognome o Ragione sociale delegato" + PROMPT 3 30 "" + FIELD 206@->RAGSOC +END + +STRINGA 29 4 +BEGIN + KEY "Prefisso telefonico delegato" + PROMPT 64 30 "" + FIELD 206@->PTELRF +END + +STRINGA 30 9 +BEGIN + KEY "Numero telefonico delegato" + PROMPT 69 30 "" + FIELD 206@->TELRF +END + +STRINGA 31 20 +BEGIN + KEY "Comune di residenza fiscale delegato" + PROMPT 52 33 "" + FIELD 613@->DENCOM + MESSAGE EMPTY SHOW,5@|HIDE,6@ + MESSAGE SHOW,6@|HIDE,5@ +END + +STRINGA 32 20 +BEGIN + KEY "Comune di residenza delegato" + PROMPT 52 33 "" + FIELD 513@->DENCOM + GROUP 5 +END + +STRINGA 33 +BEGIN + KEY "Provincia di residenza fiscale delegato" + PROMPT 74 33 "" + FIELD 613@->PROVCOM + GROUP 6 +END + +STRINGA 34 +BEGIN + KEY "Provincia di residenza delegato" + PROMPT 74 33 "" + FIELD 513@->PROVCOM + GROUP 5 +END + +STRINGA 35 +BEGIN + KEY "Indirizzo residenza fiscale delegato" + PROMPT 1 33 "" + FIELD 206@->INDRF[1,35] + FLAGS "H" + MESSAGE COPY,37 +END + +STRINGA 36 +BEGIN + KEY "Nr. civico di residenza fiscale delegato" + PROMPT 1 33 "" + FIELD 206@->CIVRF + FLAGS "H" + MESSAGE APPEND,37 +END + +STRINGA 37 38 +BEGIN + KEY "Indirizzo residenza fiscale+nr. civico delegato" + PROMPT 3 33 "" + GROUP 6 +END + +STRINGA 38 +BEGIN + KEY "Indirizzo residenza delegato" + PROMPT 1 33 "" + FIELD 206@->INDRES[1,35] + FLAGS "H" + MESSAGE COPY,40 +END + +STRINGA 39 +BEGIN + KEY "Nr. civico di residenza delegato" + PROMPT 1 33 "" + FIELD 206@->CIVRES + FLAGS "H" + MESSAGE APPEND,40 +END + +STRINGA 40 38 +BEGIN + KEY "Indirizzo residenza+nr. civico delegato" + PROMPT 3 33 "" + GROUP 5 +END + +STRINGA 41 +BEGIN + KEY "CAP residenza fiscale delegato" + PROMPT 42 33 "" + FIELD 206@->CAPRF + GROUP 6 +END + +STRINGA 42 +BEGIN + KEY "CAP residenza delegato" + PROMPT 42 33 "" + FIELD 206@->CAPRES + GROUP 5 +END + +END + +SECTION FOOTER FIRST 23 + +NUMERO 1 3 +BEGIN + KEY "Totale pagine sezione 1" + PROMPT 11 6 "" +END + +NUMERO 2 5 +BEGIN + KEY "Totale righe dettaglio sezione 1" + PROMPT 18 6 "" +END + +NUMERO 3 15 +BEGIN + KEY "Ammontare complessivo sezione 1" + PROMPT 25 6 "" + PICTURE "###.###.###.^^^" +END + +NUMERO 4 3 +BEGIN + KEY "Totale pagine sezione 2" + PROMPT 49 6 "" +END + +NUMERO 5 5 +BEGIN + KEY "Totale righe dettaglio sezione 2" + PROMPT 56 6 "" +END + +NUMERO 6 15 +BEGIN + KEY "Ammontare complessivo sezione 2" + PROMPT 64 6 "" + PICTURE "###.###.###.^^^" +END + +DATA 7 10 +BEGIN + KEY "Data di stampa" + PROMPT 6 10 "" + MESSAGE _TODAY +END + +END + +SECTION HEADER ODD 21 + +NUMERO 1 4 +BEGIN + KEY "Mese" + PROMPT 16 15 "" + PICTURE "@ #" +END + +NUMERO 2 1 +BEGIN + KEY "Trimestre" + PROMPT 29 15 "" +END + +NUMERO 3 5 +BEGIN + KEY "Anno" + PROMPT 37 15 "" + PICTURE "^^# #" +END + +STRINGA 4 +BEGIN + KEY "Partita IVA" + PROMPT 53 15 "" + FIELD 106@->PAIV +END + +END + +SECTION BODY ODD 2 + +NUMERO 1 3 +BEGIN + KEY "Progressivo riga" + PROMPT 3 1 "" + FIELD 135->NUMRIG +END + +STRINGA 2 2 +BEGIN + KEY "Stato" + PROMPT 7 1 "" + FIELD 135->STATO +END + +STRINGA 3 11 +BEGIN + KEY "Partita IVA" + PROMPT 11 1 "" + FIELD 135->PIVA +END + +NUMERO 4 12 +BEGIN + KEY "Ammontare operazioni in lire" + PROMPT 25 1 "" + FIELD 135->AMMLIRE + PICTURE "####.###.^^^" +END + +STRINGA 6 1 +BEGIN + KEY "Natura della transazione" + PROMPT 37 1 "" + FIELD 135->NATURA +END + +STRINGA 7 8 +BEGIN + KEY "Nomenclatura combinata" + PROMPT 39 1 "" + FIELD 135->NOMENCL + PICTURE "@@@@@@@@" +END + +NUMERO 8 10 +BEGIN + KEY "Massa netta in kilogrammi" + PROMPT 49 1 "" + FIELD 135->MASSAKG + PICTURE "######,@@@" +END + +NUMERO 9 10 +BEGIN + KEY "Massa in unita' supplementare" + PROMPT 60 1 "" + FIELD 135->MASSAUMS + PICTURE "######,@@@" +END + +NUMERO 10 12 +BEGIN + KEY "Valore statistico" + PROMPT 71 1 "" + FIELD 135->VALSTAT + PICTURE "####.###.^^^" +END + +STRINGA 11 1 +BEGIN + KEY "Codice consegna" + PROMPT 84 1 "" + FIELD 135->CONSEGNA[1,1] +END + +STRINGA 12 1 +BEGIN + KEY "Modo di trasporto" + PROMPT 87 1 "" + FIELD 135->TRASPORTO +END + +STRINGA 13 2 +BEGIN + KEY "Paese destinazione" + PROMPT 90 1 "" + FIELD 135->PAESE +END + +STRINGA 14 2 +BEGIN + KEY "Provincia Origine" + PROMPT 94 1 "" + FIELD 135->PROV +END + +END + +SECTION FOOTER ODD 31 + +NUMERO 1 12 +BEGIN + KEY "Riporto dalla pagina precedente" + PROMPT 25 1 "" + PICTURE "####.###.^^^" +END + +NUMERO 2 12 +BEGIN + KEY "Totale" + PROMPT 25 3 "" + PICTURE "####.###.^^^" +END + +NUMERO 3 3 +BEGIN + KEY "Numero di pagina" + PROMPT 95 3 "" +END + +END + +SECTION HEADER EVEN 22 + +NUMERO 1 4 +BEGIN + KEY "Mese" + PROMPT 16 15 "" + PICTURE "@ #" +END + +NUMERO 2 1 +BEGIN + KEY "Trimestre" + PROMPT 29 15 "" +END + +NUMERO 3 6 +BEGIN + KEY "Anno" + PROMPT 37 15 "" + PICTURE "^^# #" +END + +STRINGA 4 +BEGIN + KEY "Partita IVA" + PROMPT 53 15 "" + FIELD 106@->PAIV +END + +END + +// Sezione di stampa rettifiche + +SECTION BODY EVEN 2 + +NUMERO 1 3 +BEGIN + KEY "Progressivo riga" + PROMPT 3 1 "" + FIELD 135->NUMRIG +END + +NUMERO 2 2 +BEGIN + KEY "Mese del periodo di riferimento" + PROMPT 7 1 "" + FIELD 135->PERETT +END + +NUMERO 3 2 +BEGIN + KEY "Trimestre del periodo di riferimento" + PROMPT 11 1 "" + FIELD 135->PERETT +END + +NUMERO 4 4 +BEGIN + KEY "Anno del periodo di riferimento" + PROMPT 14 1 "" + FIELD 135->ANNORETT +END + +STRINGA 5 2 +BEGIN + KEY "Stato" + PROMPT 19 1 "" + FIELD 135->STATO +END + +STRINGA 6 11 +BEGIN + KEY "Partita IVA" + PROMPT 23 1 "" + FIELD 135->PIVA +END + +STRINGA 7 1 +BEGIN + KEY "Segno" + PROMPT 37 1 "" + FIELD 135->SEGNORETT +END + +NUMERO 8 12 +BEGIN + KEY "Ammontare operazioni in lire" + PROMPT 41 1 "" + FIELD 135->AMMLIRE + PICTURE "####.###.^^^" +END + +STRINGA 10 1 +BEGIN + KEY "Natura della transazione" + PROMPT 53 1 "" + FIELD 135->NATURA +END + +STRINGA 11 8 +BEGIN + KEY "Nomenclatura combinata" + PROMPT 56 1 "" + FIELD 135->NOMENCL + PICTURE "@@@@@@@@" +END + +NUMERO 12 12 +BEGIN + KEY "Valore statistico" + PROMPT 67 1 "" + FIELD 135->VALSTAT + PICTURE "####.###.^^^" +END + +END + +SECTION FOOTER EVEN 36 + +NUMERO 1 12 +BEGIN + KEY "Riporto dala pagina precedente" + PROMPT 41 1 "" + PICTURE "####.###.^^^" +END + +NUMERO 2 12 +BEGIN + KEY "Totale" + PROMPT 41 3 "" + PICTURE "####.###.^^^" +END + +NUMERO 3 3 +BEGIN + KEY "Numero di pagina" + PROMPT 75 4 "" +END + +END + + diff --git a/in/in0200.cpp b/in/in0200.cpp new file mode 100755 index 000000000..0cabae8da --- /dev/null +++ b/in/in0200.cpp @@ -0,0 +1,479 @@ +#include +#include +#include +#include +#include + +#include "in0.h" +#include "in0200a.h" +#include "inlib01.h" + +#include +#include + +/////////////////////////////////////////////////////////// +// TRecord_intra +/////////////////////////////////////////////////////////// + +struct TIntra_context +{ + char _tipo; + long _progr; + char _freq; + int _anno; + int _periodo; + long _righe_riep; + real _totale_riep; + long _righe_rett; + real _totale_rett; + unsigned long _written; + unsigned long _disksize; + + TIntra_context(); +}; + +TIntra_context::TIntra_context() +{ + _tipo = 'C'; _freq = 'T'; _anno = 1999; _periodo = 1; + _progr = _righe_riep = _righe_rett = 0L; + _written = _disksize = 0L; +} + +class TRecord_intra : public TString +{ +protected: + virtual void print_on(ostream& o) const; + +public: + void reset(const TIntra_context& ic); + void reset_data(); + void put(const char* str, int pos, int dim, const char* flags = ""); + void put(real num, int pos, int dim, int dec = 0); + void put(long num, int pos, int dim); + void put(char chr, int pos); + void genera_testata(const TIntra_context& ic); + void put(const TRectype& rec, TIntra_context& ic); + + TRecord_intra(); + virtual ~TRecord_intra() { } +}; + +// Scrive un campo generico sul record di invio +void TRecord_intra::put(const char* str, int pos, int dim, const char* flags) +{ + CHECKD(pos > 0 && pos < size(), "Invalid field position:", pos); + CHECKD(dim > 0 && dim <= 50, "Invalid field dimension:", dim); + TString256 val(str); + if (val.len() < dim) + { + const bool rj = strchr(flags, 'R') != NULL; + const bool zf = strchr(flags, 'Z') != NULL; + if (rj) + val.right_just(dim, zf ? '0' : ' '); + else + val.left_just(dim, zf ? '0' : ' '); + } + else + val.cut(dim); + + overwrite(val, pos-1); +} + +// Scrive un campo numerico sul record di invio +void TRecord_intra::put(real num, int pos, int dim, int dec) +{ + TString80 str; + if (!num.is_zero()) + { + num.round(dec); + + const bool negativo = num < ZERO; + if (negativo) num *= -1.0; + + if (dec < 0) + { + str = num.string(dim-dec, 0, '0'); + str.rtrim(-dec); + } + else + { + str = num.string(dim, dec, '0'); + } + if (negativo) + str[dim-1] += 64; + } + put(str, pos, dim, "RZ"); +} + +// Scrive un campo intero sul record di invio +void TRecord_intra::put(long num, int pos, int dim) +{ + TString16 str; + str.format("%0*ld", dim, num); + put(str, pos, dim, "RZ"); +} + +// Scrive un campo carattere sul record di invio +void TRecord_intra::put(char chr, int pos) +{ + const char str[2] = { chr, '\0' }; + put(str, pos, 1); +} + +// Azzera il record +void TRecord_intra::reset(const TIntra_context& ic) +{ + spaces(); + put("INTRA", 1, 5); + const TRectype& ditta = cache().get(LF_NDITTE, main_app().get_firm()); + TString16 cod; + cod << ditta.get_char(NDT_TIPOA) << '|'; + cod << ditta.get(NDT_CODANAGR); + const TRectype& anagr = cache().get(LF_ANAG, cod); + put(anagr.get(ANA_PAIV), 6, 11); + put(ic._progr, 17, 6); +} + +void TRecord_intra::reset_data() +{ + const TString80 key = left(22); + spaces(); + overwrite(key, 0); +} + +// Scrive la testata con le informazioni della ditta +void TRecord_intra::genera_testata(const TIntra_context& ic) +{ + reset(ic); + + put('0', 23); // Tipo record frontespizio + put("", 24, 5, "RZ"); // Numero riga (0 per frontespizio) + + put(ic._tipo, 29); // Tipo riepilogo + put(ic._anno % 100, 30, 2); + put(ic._freq, 32); + put(ic._periodo, 33, 2); + + TString16 cod = mid(5, 11); // Ricopia la parita iva della ditta + put(cod, 35, 11); + + const TRectype& ditta = cache().get(LF_NDITTE, main_app().get_firm()); + put(ditta.get_bool("PRESELEN") ? '1' : '0', 46); + put(ditta.get_bool("CESSIVA") ? '1' : '0', 47); + + cod.cut(0); + cod << ditta.get_char("TIPOSOGDEL") << '|'; + cod << ditta.get("CODSOGDEL"); + if (cod.len() > 8) + { + const TRectype& sogdel = cache().get(LF_ANAG, cod); + put(sogdel.get(ANA_PAIV), 48, 11); + } + else + put("", 48, 11, "Z"); + + put(ic._righe_riep, 59, 5); + put(ic._totale_riep, 64, 13, -3); + put(ic._righe_rett, 77, 5); + put(ic._totale_rett, 82, 13, -3); +} + +// Scrive un intero record del file riepiloghi/rettifiche +void TRecord_intra::put(const TRectype& rec, TIntra_context& ic) +{ + reset_data(); + + put(rec.get_long("NUMRIG"), 24, 5); + const char tipo = rec.get_char("TIPO"); + switch (tipo) + { + case 'A': + put('1', 23); + put(rec.get("STATO"), 29, 2); + put(rec.get("PIVA"), 31, 12); + put(rec.get_real("AMMLIRE"), 43, 13, -3); + put(rec.get_real("AMMVALUTA"), 56, 13); + put(rec.get_char("NATURA"), 69); + put(rec.get("NOMENCL"), 70, 8, "RZ"); + if (ic._freq == 'M') + { + put(rec.get_real("MASSAKG"), 78, 10, 0); + put(rec.get_real("MASSAUMS"), 88, 10, 0); + put(rec.get_real("VALSTAT"), 98, 13, -3); + put(rec.get_char("CONSEGNA"), 111); + put(rec.get_char("TRASPORTO"), 112); + put(rec.get("PAESE"), 113, 2); + put(rec.get("PAESEORIG"), 115, 2); + put(rec.get("PROV"), 117, 2); + } + else + put("", 78, 100); + break; + case 'B': + { + put('2', 23); + if (ic._freq == 'M') + put(rec.get("PERETT"), 29, 2, "RZ"); + else + put("", 29, 2, "RZ"); + if (ic._freq == 'T') + put(rec.get("PERETT")[1], 31); + else + put('0', 31); + put(rec.get("ANNORETT").right(2), 32, 2, "RZ"); + put(rec.get("STATO"), 34, 2); + put(rec.get("PIVA"), 36, 12); + put(rec.get("SEGNORETT"), 48, 1); + put(rec.get_real("AMMLIRE"), 49, 13, -3); + put(rec.get_real("AMMVALUTA"), 62, 13); + put(rec.get_char("NATURA"), 75); + put(rec.get("NOMENCL"), 76, 8, "RZ"); + if (ic._freq == 'M') + put(rec.get_real("VALSTAT"), 84, 13, -3); + else + put("", 84, 13); + } + break; + case 'C': + put('1', 23); + put(rec.get("STATO"), 29, 2); + put(rec.get("PIVA"), 31, 12); + put(rec.get_real("AMMLIRE"), 43, 13, -3); + put(rec.get_char("NATURA"), 56); + put(rec.get("NOMENCL"), 57, 8, "RZ"); + if (ic._freq == 'M') + { + put(rec.get_real("MASSAKG"), 65, 10); + put(rec.get_real("MASSAUMS"), 75, 10); + put(rec.get_real("VALSTAT"), 85, 13, -3); + put(rec.get_char("CONSEGNA"), 98); + put(rec.get_char("TRASPORTO"), 99); + put(rec.get("PAESE"), 100, 2); + put(rec.get("PROV"), 102, 2); + } + else + put("", 65, 100); + break; + case 'D': + { + put('2', 23); + if (ic._freq == 'M') + put(rec.get("PERETT"), 29, 2, "RZ"); + else + put("", 29, 2, "RZ"); + if (ic._freq == 'T') + put(rec.get("PERETT")[1], 31); + else + put('0', 31); + put(rec.get("ANNORETT").right(2), 32, 2, "RZ"); + put(rec.get("STATO"), 34, 2); + put(rec.get("PIVA"), 36, 12); + put(rec.get("SEGNORETT"), 48, 1); + put(rec.get_real("AMMLIRE"), 49, 13, -3); + put(rec.get("NATURA"), 62, 1); + put(rec.get("NOMENCL"), 63, 8, "RZ"); + if (ic._freq == 'M') + put(rec.get_real("VALSTAT"), 71, 13, -3); + else + put("", 71, 13); + } + break; + default: + NFCHECK("Record di tipo sconosciuto: %c", tipo); + break; + } +} + + +// Scrive su file il record +void TRecord_intra::print_on(ostream& o) const +{ + ((TRecord_intra*)this)->rtrim(); + TString::print_on(o); + o << endl; +} + +TRecord_intra::TRecord_intra() : TString(132) +{ } + + +/////////////////////////////////////////////////////////// +// TDischetto_mask +/////////////////////////////////////////////////////////// + +class TDischetto_mask : public TIntra_mask +{ +protected: + virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); + virtual short type_field() const { return F_TIPO; } + virtual short period_field() const { return F_PERIODO_M; } + + long calcola_totale(TCursor& cur, real& tot) const; + bool write_record(ofstream& out, const TRecord_intra& rec, TIntra_context& ic); + +public: + void genera_dischetto(); + + TDischetto_mask(); +}; + +bool TDischetto_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) +{ + switch (o.dlg()) + { + case F_RIEPILOGHI: + if (e == fe_button) + ::genera_riepiloghi(tipo(), get_int(F_ANNO), periodo()); + break; + default:break; + } + return TIntra_mask::on_field_event(o, e, jolly); +} + +long TDischetto_mask::calcola_totale(TCursor& cur, real& tot) const +{ + TWait_cursor arrow; + const long items = cur.items(); + cur.freeze(); + + tot = ZERO; + + const TRectype& rec = cur.curr(); + for (cur = 0L; cur.pos() < items; ++cur) + { + const char tipo = rec.get_char("TIPO"); + const real val = rec.get_real("AMMLIRE"); +// Da chiarire: come sommare le rettifiche negative! + if ((tipo == 'B' || tipo == 'D') && rec.get_char("SEGNORETT") == '-') + tot -= val; // Rettifiche negative + else + tot += val; + } + return items; +} + +bool TDischetto_mask::write_record(ofstream& out, const TRecord_intra& rec, TIntra_context& ic) +{ + out << rec; + + bool good = out.good() != 0; + if (good) + ic._written += rec.len()+2; + + if (ic._written >= ic._disksize) + { + out.close(); + + TFilename name; + name = get(F_DISCO); name.add("scambi.cee"); + message_box("Inserire un nuovo dischetto prima di continuare."); + + out.open(name); + if (out) + { + ic._written = 0; + good = TRUE; + } + } + if (!good) + error_box("Errore di scrittura su disco: ripetere l'operazione."); + return good; +} + +void TDischetto_mask::genera_dischetto() +{ + TIntra_context ic; + ic._tipo = tipo(); + ic._freq = frequenza(); + ic._anno = get_int(F_ANNO); + ic._periodo = periodo(); + ic._progr = get_long(F_NUMERO); + + TRelation rel(LF_RIEPRETT); + TRectype filter(LF_RIEPRETT); + filter.put("TIPO", ic._tipo); + filter.put("ANNO", ic._anno); + filter.put("PERIODO", periodo_str()); + TCursor riep(&rel, "", 1, &filter, &filter); + + ic._righe_riep = calcola_totale(riep, ic._totale_riep); + + filter.put("TIPO", char(ic._tipo+1)); + TCursor rett(&rel, "", 1, &filter, &filter); + + ic._righe_rett = calcola_totale(rett, ic._totale_rett); + + TFilename name; + name = get(F_DISCO); name.add("scambi.cee"); + + if (name.exist()) + { + if (yesno_box("Il file %s, esiste gia': si desiderla eliminarlo?", + (const char*)name)) + ::remove(name); + } + + ofstream out(name, ios::out | ios::app); + if (!out) + { + error_box("Impossibile creare il file %s\n" + "Assicurarsi di avere inserito un dischetto\n" + "formattato e ripetere nuovamente l'operazione.", + (const char*)name); + return; + } + ic._disksize = os_get_disk_size(name) - (64L*1024L); + ic._written = 0; + + const long total = ic._righe_riep + ic._righe_rett; + + TProgind pi(total, "Generazione scambi.cee", FALSE, TRUE); + TRecord_intra rec; + rec.genera_testata(ic); + out << rec; + + rec.reset_data(); + for (riep = 0L; riep.pos() < ic._righe_riep; ++riep) + { + pi.addstatus(1); + rec.put(riep.curr(), ic); + if (!write_record(out, rec, ic)) + return; + } + rec.reset_data(); + for (rett = 0L; rett.pos() < ic._righe_rett; ++rett) + { + pi.addstatus(1); + rec.put(riep.curr(), ic); + if (!write_record(out, rec, ic)) + return; + } +} + +TDischetto_mask::TDischetto_mask() +: TIntra_mask("in0200a") +{ } + +/////////////////////////////////////////////////////////// +// TDischetto_app +/////////////////////////////////////////////////////////// + +class TDischetto_app : public TSkeleton_application +{ +protected: + virtual void main_loop(); +}; + +void TDischetto_app::main_loop() +{ + TDischetto_mask m; + while (m.run() == K_ENTER) + m.genera_dischetto(); +} + +int in0200(int argc, char* argv[]) +{ + TDischetto_app a; + a.run(argc, argv, "Generazione dischetti INTRA"); + return 0; +} diff --git a/in/in0200a.h b/in/in0200a.h new file mode 100755 index 000000000..e924230ef --- /dev/null +++ b/in/in0200a.h @@ -0,0 +1,9 @@ +#define F_RIEPILOGHI 100 +#define F_TIPO 101 +#define F_ANNO 102 +#define F_PERIODO_M 103 +#define F_PERIODO_T 104 +#define F_PERIODO_A 105 +#define F_DISCO 106 +#define F_NUMERO 107 + diff --git a/in/in0200a.uml b/in/in0200a.uml new file mode 100755 index 000000000..c955fee02 --- /dev/null +++ b/in/in0200a.uml @@ -0,0 +1,76 @@ +#include "in0200a.h" + +PAGE "Generazione Dischetti INTRA" -1 -1 30 8 + +LIST F_TIPO 1 10 +BEGIN + PROMPT 1 1 "Tipo riepilogo " + ITEM "C|Cessioni" + ITEM "A|Acquisti" +END + +NUMBER F_ANNO 4 +BEGIN + PROMPT 1 2 "Anno " + FLAGS "AU" +END + +NUMBER F_NUMERO 6 +BEGIN + PROMPT 15 2 "Numero " + CHECKTYPE REQUIRED +END + +LIST F_PERIODO_M 2 17 +BEGIN + PROMPT 1 3 "Periodo " + FLAGS "AM" + FIELD PERIODO +END + +LIST F_PERIODO_T 2 17 +BEGIN + PROMPT 1 3 "Periodo " + ITEM "01|Gennaio-Marzo" + MESSAGE COPY,F_PERIODO_M + ITEM "02|Aprile-Giugno" + MESSAGE COPY,F_PERIODO_M + ITEM "03|Luglio-Settembre" + MESSAGE COPY,F_PERIODO_M + ITEM "04|Ottobre-Dicembre" + MESSAGE COPY,F_PERIODO_M +END + +LIST F_PERIODO_A 2 17 +BEGIN + PROMPT 1 3 "Periodo " + ITEM "01|Annuale" + MESSAGE COPY,F_PERIODO_M +END + +LIST F_DISCO 2 +BEGIN + PROMPT 1 4 "Disco destinazione " + ITEM "A:|A:" + ITEM "B:|B:" + ITEM "C:|C:" +END + +BUTTON F_RIEPILOGHI 26 1 +BEGIN + PROMPT -11 -3 "~Generazione Riepiloghi" +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/in/in0500.cpp b/in/in0500.cpp index 4f6ef64b9..151a9e208 100755 --- a/in/in0500.cpp +++ b/in/in0500.cpp @@ -53,7 +53,7 @@ bool TImmissione_mask::on_field_event(TOperable_field& o, TField_event e, long j const bool acq = tipo() == 'A'; m.show(-GR_ACQUISTI, acq); // Mostra i gruppi di campi m.show(-GR_CESSIONI, !acq); // consoni al tipo movimento - +/* const bool req = frequenza() == 'M'; for (int i = m.fields()-1; i >= 0; i--) { @@ -63,17 +63,24 @@ bool TImmissione_mask::on_field_event(TOperable_field& o, TField_event e, long j if (f.is_edit()) f.check_type(req ? CHECK_REQUIRED : CHECK_NORMAL); } +*/ } break; - break; case F_VALUTA: if (e == fe_modify) { TEdit_field& cambio = efield(F_CAMBIO); if (cambio.empty()) { - TCursor* cur = efield(F_VALUTA).browse()->cursor(); - cambio.set(cur->curr().get("S4")); + const TRectype& curr = efield(F_VALUTA).browse()->cursor()->curr(); + const TString& s = curr.get("S4"); + if (s.not_empty()) + cambio.set(s); + else + { + const TString& r = curr.get("R0"); + cambio.set(r); + } } } break; @@ -105,7 +112,7 @@ bool TImmissione_mask::on_field_event(TOperable_field& o, TField_event e, long j return on_sheet_event((TSheet_field&)o, e, int(jolly)); case R_RIEPILOGHI: if (e == fe_button) - genera_riepiloghi(); + ::genera_riepiloghi(tipo()); break; default: if (id < F_DITTA && jolly == 1) @@ -195,7 +202,7 @@ bool TImmissione_intra::user_destroy() return TRUE; } -int is0500(int argc, char* argv[]) +int in0500(int argc, char* argv[]) { TImmissione_intra a; a.run(argc, argv, "Movimenti INTRA"); diff --git a/in/in0500a.h b/in/in0500a.h index 2d239cca8..52f7e58ef 100755 --- a/in/in0500a.h +++ b/in/in0500a.h @@ -32,8 +32,7 @@ #define F_MASSA_UMS 106 #define F_UMS 107 #define F_VALORE_STAT 108 -#define F_REGIME_C 109 -#define F_REGIME_A 209 +#define F_CONSEGNA 109 #define F_TRASPORTO 110 #define F_PAESE 111 #define F_PAESE_ORIG 112 diff --git a/in/in0500a.uml b/in/in0500a.uml index 58a822c87..23aa392cc 100755 --- a/in/in0500a.uml +++ b/in/in0500a.uml @@ -126,6 +126,7 @@ LIST F_STATO 2 14 BEGIN PROMPT 1 6 "Stato CEE " ITEM " |" + ITEM "AT|Austria" ITEM "BE|Belgio" ITEM "DE|Germania" ITEM "DK|Danimarca" @@ -138,6 +139,7 @@ BEGIN ITEM "LU|Lussemburgo" ITEM "NL|Olanda" ITEM "PT|Portogallo" + ITEM "SE|Svezia" FLAGS "D" END @@ -201,8 +203,8 @@ BEGIN ITEM "Massa Ums@13" ITEM "U.M." ITEM "Valore\nStatistico@15" - ITEM "Reg.@3" ITEM "Modo\nTrasp.@5" + ITEM "Condiz.\nCons.@6" ITEM "Paese@6" ITEM "Paese\nOrig.@6" ITEM "Provincia" @@ -298,29 +300,31 @@ BEGIN FIELD VALSTAT END -LIST F_REGIME_C 1 24 +STRING F_CONSEGNA 3 BEGIN - PROMPT 36 5 "Regime " - ITEM "1|Spedizione definitiva" - ITEM "2|Spedizione temporanea" - ITEM "3|Rispedizione" - FIELD REGIME - GROUP GR_CESSIONI -END - -LIST F_REGIME_A 1 24 -BEGIN - PROMPT 36 5 "Regime " - ITEM "4|Introduzione definitiva" - ITEM "5|Introduzione temporanea" - ITEM "6|Reintroduzione" - FIELD REGIME - GROUP GR_ACQUISTI + PROMPT 43 5 "Condizioni consegna " + SHEET "Codice|Descrizione@45" + INPUT F_CONSEGNA + ITEM "EXW|Franco fabbrica" + ITEM "FCA|Franco vettore" + ITEM "FAS|Franco sotto bordo" + ITEM "FOB|Franco a bordo" + ITEM "CFR|Costo e nolo" + ITEM "CIF|Costo, assicurazione, nolo" + ITEM "CPT|Nolo/porto pagato fino a ..." + ITEM "CIP|Nolo/porto e assicurazione pagati fino a ..." + ITEM "DAF|Reso frontiera" + ITEM "DES|Reso franco bordo nave a destino" + ITEM "DEQ|Reso franco banchina" + ITEM "DDU|Reso non sdoganato" + ITEM "DDP|Reso sdoganato" + OUTPUT F_CONSEGNA + FIELD CONSEGNA END LIST F_TRASPORTO 1 20 BEGIN - PROMPT 1 6 "Modo di trasporto " + PROMPT 1 6 "Modo di trasporto " ITEM "1|Marittimo" ITEM "2|Ferroviario" ITEM "3|Stradale" @@ -334,20 +338,21 @@ END TEXT DLG_NULL BEGIN - PROMPT 1 7 "Pase di destinazione" + PROMPT 1 7 "Pase destinazione" GROUP GR_CESSIONI END TEXT DLG_NULL BEGIN - PROMPT 1 7 "Pase di provenienza" + PROMPT 1 7 "Pase provenienza" GROUP GR_ACQUISTI END LIST F_PAESE 2 20 BEGIN - PROMPT 22 7 "" + PROMPT 19 7 "" ITEM " |" + ITEM "AT|Austria" ITEM "BE|Belgio" ITEM "DE|Germania" ITEM "DK|Danimarca" @@ -360,25 +365,13 @@ BEGIN ITEM "LU|Lussemburgo" ITEM "NL|Olanda" ITEM "PT|Portogallo" + ITEM "SE|Svezia" FIELD PAESE END -LIST F_PAESE_ORIG 2 20 +STRING F_PAESE_ORIG 2 BEGIN - PROMPT 1 8 "Pase di origine " - ITEM " |" - ITEM "BE|Belgio" - ITEM "DE|Germania" - ITEM "DK|Danimarca" - ITEM "EL|Grecia" - ITEM "ES|Spagna" - ITEM "FR|Francia" - ITEM "GB|Gran Bretagna" - ITEM "IE|Irlanda" - ITEM "IT|Italia" - ITEM "LU|Lussemburgo" - ITEM "NL|Olanda" - ITEM "PT|Portogallo" + PROMPT 1 8 "Pase di origine " FIELD PAESEORIG GROUP GR_ACQUISTI END @@ -386,25 +379,25 @@ END STRING F_PAESE_DUMMY 2 BEGIN PROMPT 81 8 "Pase anti NFCHECK " - GROUP GR_CESSIONI FLAGS "D" -END - -TEXT DLG_NULL -BEGIN - PROMPT 46 7 "Provincia d'origine " GROUP GR_CESSIONI END TEXT DLG_NULL BEGIN - PROMPT 46 7 "Prov. destinazione " + PROMPT 43 7 "Provincia d'origine" + GROUP GR_CESSIONI +END + +TEXT DLG_NULL +BEGIN + PROMPT 43 7 "Prov. destinazione" GROUP GR_ACQUISTI END STRING F_PROV 2 BEGIN - PROMPT 66 7 "" + PROMPT 64 7 "" FLAGS "U" FIELD PROV END diff --git a/in/in0600.cpp b/in/in0600.cpp index 3834717b3..87b74c013 100755 --- a/in/in0600.cpp +++ b/in/in0600.cpp @@ -35,7 +35,7 @@ bool TRiepiloghi_mask::on_field_event(TOperable_field& o, TField_event e, long j break; case F_RIEPILOGHI: if (e == fe_button) - genera_riepiloghi(); + ::genera_riepiloghi(tipo(), get_int(F_ANNO)); break; default: break; @@ -112,7 +112,8 @@ void TRiepiloghi_intra::init_query_mode(TMask& m) { TEdit_field& numrig = m.efield(F_NUM_RIG); TCursor& cur = *numrig.browse()->cursor(); - cur.last_item(); + if (cur.items() > 0L) + cur.last_item(); const TRectype& curr = cur.curr(); m.set(F_ANNO, curr.get("ANNO")); m.set(F_TIPO, curr.get("TIPO"), TRUE); @@ -120,7 +121,7 @@ void TRiepiloghi_intra::init_query_mode(TMask& m) m.set(F_PERIODO_T, curr.get("PERIODO")); } -int is0600(int argc, char* argv[]) +int in0600(int argc, char* argv[]) { TRiepiloghi_intra a; a.run(argc, argv, "Riepiloghi INTRA"); diff --git a/in/in0600a.h b/in/in0600a.h index f50ba8d61..c6f8252de 100755 --- a/in/in0600a.h +++ b/in/in0600a.h @@ -1,34 +1,34 @@ -#define F_DITTA 301 -#define F_DITTA_DESCR 302 +#define F_DITTA 301 +#define F_DITTA_DESCR 302 -#define F_TIPO 303 -#define F_ANNO 304 -#define F_PERIODO_M 305 -#define F_PERIODO_T 306 -#define F_PERIODO_A 307 -#define F_STATO 308 -#define F_TIPO_CF 309 -#define F_PARTITA_IVA 310 -#define F_PARTITA_DESC 311 -#define F_NUM_RIG 312 -#define F_RIEPILOGHI 313 +#define F_TIPO 303 +#define F_ANNO 304 +#define F_PERIODO_M 305 +#define F_PERIODO_T 306 +#define F_PERIODO_A 307 +#define F_STATO 308 +#define F_TIPO_CF 309 +#define F_PARTITA_IVA 310 +#define F_PARTITA_DESC 311 +#define F_NUM_RIG 312 +#define F_RIEPILOGHI 313 -#define F_NATURA_TRANS 321 -#define F_NATURA_DESCR 322 -#define F_NOMENCLATURA 323 -#define F_NOMENCL_DESC 324 -#define F_REGIME_C 325 -#define F_REGIME_A 326 -#define F_TRASPORTO 327 -#define F_PAESE 328 -#define F_PAESE_ORIG 329 -#define F_PROV 330 -#define F_AMM_LIRE 331 -#define F_AMM_VALUTA 332 -#define F_VALUTA 333 -#define F_VALORE_STAT 334 -#define F_MASSA_KG 335 -#define F_MASSA_UMS 336 +#define F_NATURA_TRANS 321 +#define F_NATURA_DESCR 322 +#define F_NOMENCLATURA 323 +#define F_NOMENCL_DESC 324 +#define F_CONSEGNA 325 +#define F_CONSEGNA_DESC 326 +#define F_TRASPORTO 327 +#define F_PAESE 340 +#define F_PAESE_ORIG 341 +#define F_PROV 342 +#define F_AMM_LIRE 350 +#define F_AMM_VALUTA 351 +#define F_VALUTA 352 +#define F_VALORE_STAT 353 +#define F_MASSA_KG 354 +#define F_MASSA_UMS 355 #define GR_CESSIONI 1 #define GR_ACQUISTI 2 diff --git a/in/in0600a.uml b/in/in0600a.uml index b4fb71430..5a130bbda 100755 --- a/in/in0600a.uml +++ b/in/in0600a.uml @@ -101,7 +101,7 @@ BEGIN DISPLAY "Partita IVA" PIVA DISPLAY "Natura" NATURA DISPLAY "Nomenclatura" NOMENCL - DISPLAY "Regime" REGIME + DISPLAY "Consegna" CONSEGNA DISPLAY "Trasporto" TRASPORTO DISPLAY "Paese" PAESE OUTPUT F_PERIODO_M PERIODO @@ -115,6 +115,7 @@ END LIST F_STATO 2 16 BEGIN PROMPT 1 5 "Stato CEE " + ITEM "AT|Austria" ITEM "BE|Belgio" ITEM "DE|Germania" ITEM "DK|Danimarca" @@ -127,6 +128,7 @@ BEGIN ITEM "LU|Lussemburgo" ITEM "NL|Olanda" ITEM "PT|Portogallo" + ITEM "SE|Svezia" FIELD STATO END @@ -215,29 +217,38 @@ BEGIN FLAGS "D" END -LIST F_REGIME_C 1 24 +STRING F_CONSEGNA 3 BEGIN - PROMPT 1 11 "Regime " - ITEM "1|Spedizione definitiva" - ITEM "2|Spedizione temporanea" - ITEM "3|Rispedizione" - GROUP GR_CESSIONI - FIELD REGIME + PROMPT 1 11 "Condiz. consegna " + SHEET "Codice|Descrizione@45" + INPUT F_CONSEGNA + ITEM "EXW|Franco fabbrica" + ITEM "FCA|Franco vettore" + ITEM "FAS|Franco sotto bordo" + ITEM "FOB|Franco a bordo" + ITEM "CFR|Costo e nolo" + ITEM "CIF|Costo, assicurazione, nolo" + ITEM "CPT|Nolo/porto pagato fino a ..." + ITEM "CIP|Nolo/porto e assicurazione pagati fino a ..." + ITEM "DAF|Reso frontiera" + ITEM "DES|Reso franco bordo nave a destino" + ITEM "DEQ|Reso franco banchina" + ITEM "DDU|Reso non sdoganato" + ITEM "DDP|Reso sdoganato" + OUTPUT F_CONSEGNA + OUTPUT F_CONSEGNA_DESC + FIELD CONSEGNA END -LIST F_REGIME_A 1 24 +STRING F_CONSEGNA_DESC 50 BEGIN - PROMPT 1 11 "Regime " - ITEM "4|Introduzione definitiva" - ITEM "5|Introduzione temporanea" - ITEM "6|Reintroduzione" - GROUP GR_ACQUISTI - FIELD REGIME + PROMPT 26 11 "" + FLAGS "D" END LIST F_TRASPORTO 1 20 BEGIN - PROMPT 44 11 "Trasporto " + PROMPT 1 12 "Modo di trasporto " ITEM "1|Marittimo" ITEM "2|Ferroviario" ITEM "3|Stradale" @@ -252,20 +263,21 @@ END TEXT DLG_NULL BEGIN - PROMPT 1 12 "Pase di destinazione" + PROMPT 1 13 "Pase di destinazione" GROUP GR_CESSIONI END TEXT DLG_NULL BEGIN - PROMPT 1 12 "Pase di provenienza" + PROMPT 1 13 "Pase di provenienza" GROUP GR_ACQUISTI END LIST F_PAESE 2 20 BEGIN - PROMPT 22 12 "" + PROMPT 22 13 "" ITEM " |" + ITEM "AT|Austria" ITEM "BE|Belgio" ITEM "DE|Germania" ITEM "DK|Danimarca" @@ -278,44 +290,32 @@ BEGIN ITEM "LU|Lussemburgo" ITEM "NL|Olanda" ITEM "PT|Portogallo" + ITEM "SE|Svezia" FIELD PAESE END -LIST F_PAESE_ORIG 2 20 +STRING F_PAESE_ORIG 2 BEGIN - PROMPT 1 13 "Pase di origine " - ITEM " |" - ITEM "BE|Belgio" - ITEM "DE|Germania" - ITEM "DK|Danimarca" - ITEM "EL|Grecia" - ITEM "ES|Spagna" - ITEM "FR|Francia" - ITEM "GB|Gran Bretagna" - ITEM "IE|Irlanda" - ITEM "IT|Italia" - ITEM "LU|Lussemburgo" - ITEM "NL|Olanda" - ITEM "PT|Portogallo" + PROMPT 1 14 "Pase di origine " GROUP GR_ACQUISTI FIELD PAESEORIG END TEXT DLG_NULL BEGIN - PROMPT 46 12 "Provincia d'origine " + PROMPT 46 13 "Provincia d'origine " GROUP GR_CESSIONI END TEXT DLG_NULL BEGIN - PROMPT 46 12 "Prov. destinazione " + PROMPT 46 13 "Prov. destinazione " GROUP GR_ACQUISTI END STRING F_PROV 2 BEGIN - PROMPT 66 12 "" + PROMPT 66 13 "" FLAGS "U" FIELD PROV END diff --git a/in/in0700.cpp b/in/in0700.cpp index ea1d1fd94..7220a06ae 100755 --- a/in/in0700.cpp +++ b/in/in0700.cpp @@ -101,7 +101,7 @@ bool TRettifiche_intra::user_destroy() return TRUE; } -int is0700(int argc, char* argv[]) +int in0700(int argc, char* argv[]) { TRettifiche_intra a; a.run(argc, argv, "Rettifiche INTRA"); diff --git a/in/in0700a.uml b/in/in0700a.uml index 51b939440..c5b44fdbc 100755 --- a/in/in0700a.uml +++ b/in/in0700a.uml @@ -102,7 +102,7 @@ BEGIN DISPLAY "Partita IVA" PIVA DISPLAY "Natura" NATURA DISPLAY "Nomenclatura" NOMENCL - DISPLAY "Regime" REGIME + DISPLAY "Consegna" CONSEGNA DISPLAY "Trasporto" TRASPORTO DISPLAY "Paese" PAESE OUTPUT O_PERIODO_M PERIODO @@ -124,6 +124,7 @@ END LIST O_STATO 2 16 BEGIN PROMPT 2 5 "Stato CEE " + ITEM "AT|Austria" ITEM "BE|Belgio" ITEM "DE|Germania" ITEM "DK|Danimarca" @@ -136,6 +137,7 @@ BEGIN ITEM "LU|Lussemburgo" ITEM "NL|Olanda" ITEM "PT|Portogallo" + ITEM "SE|Svezia" GROUP GR_ORIGINAL END @@ -312,6 +314,7 @@ END LIST F_STATO 2 16 BEGIN PROMPT 2 13 "Stato CEE " + ITEM "AT|Austria" ITEM "BE|Belgio" ITEM "DE|Germania" ITEM "DK|Danimarca" @@ -324,6 +327,7 @@ BEGIN ITEM "LU|Lussemburgo" ITEM "NL|Olanda" ITEM "PT|Portogallo" + ITEM "SE|Svezia" FIELD STATO END diff --git a/in/inlib01.cpp b/in/inlib01.cpp index 64e8e81b2..c5d985f0e 100755 --- a/in/inlib01.cpp +++ b/in/inlib01.cpp @@ -47,17 +47,17 @@ char TIntra_mask::frequenza() const return (t == 'A' || t == 'B') ? _freq_acq : _freq_ces; } -int TIntra_mask::periodo() const +const char* TIntra_mask::periodo_str() const { const short id = period_field(); - int pe = 1; + const char* pe = "01"; if (id != DLG_NULL) { switch(frequenza()) { - case 'T': pe = get_int(id+1); break; - case 'A': pe = 1; break; - default : pe = get_int(id); break; + case 'M': pe = get(id); break; + case 'T': pe = get(id+1); break; + default : break; } } else @@ -65,6 +65,11 @@ int TIntra_mask::periodo() const return pe; } +int TIntra_mask::periodo() const +{ + return atoi(periodo_str()); +} + bool TIntra_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) { if (jolly == 0 && o.dlg() == type_field()) @@ -96,7 +101,7 @@ TIntra_mask::TIntra_mask(const char* name) class TDati_riepilogo : public TSortable { - TString _key; + TToken_string _key; TCurrency _ammlire, _ammvaluta; real _valstat, _massakg, _massaums; @@ -108,8 +113,18 @@ public: TDati_riepilogo& operator +=(const TDati_riepilogo& r); void write(TRectype& rec) const; + const TString& stato(TString& c) const { _key.get(0, c); return c; } + const TString& partita_iva(TString& c) const { _key.get(1, c); return c; } + const TString& natura(TString& c) const { _key.get(3, c); return c; } + const TString& nomenclatura(TString& c) const { _key.get(4, c); return c; } + const TString& consegna(TString& c) const { _key.get(5, c); return c; } + const TString& trasporto(TString& c) const { _key.get(6, c); return c; } + const TString& paese(TString& c) const { _key.get(7, c); return c; } + const TString& paese_orig(TString& c) const { _key.get(8, c); return c; } + const TString& provincia(TString& c) const { _key.get(9, c); return c; } + TDati_riepilogo(const TDati_riepilogo& r); - TDati_riepilogo(const TString& key, const TRectype& rec, const TString& codval); + TDati_riepilogo(const TToken_string& key, const TRectype& rec, const TString& codval); virtual ~TDati_riepilogo() { } }; @@ -131,12 +146,24 @@ TDati_riepilogo& TDati_riepilogo::operator +=(const TDati_riepilogo& r) void TDati_riepilogo::write(TRectype& rec) const { + TString str; + rec.put("STATO", stato(str)); + rec.put("PIVA", partita_iva(str)); + rec.put("NATURA", natura(str)); + rec.put("NOMENCL", nomenclatura(str)); + rec.put("CONSEGNA", consegna(str)); + rec.put("TRASPORTO", trasporto(str)); + rec.put("PAESE", paese(str)); + rec.put("PAESEORIG", paese_orig(str)); + rec.put("PROV", provincia(str)); + rec.put("AMMLIRE", _ammlire.get_num()); rec.put("AMMVALUTA", _ammvaluta.get_num()); rec.put("CODVAL", _ammvaluta.get_value()); rec.put("VALSTAT", _valstat); rec.put("MASSAKG", _massakg); rec.put("MASSAUMS", _massaums); + } TDati_riepilogo::TDati_riepilogo(const TDati_riepilogo& r) @@ -145,7 +172,7 @@ TDati_riepilogo::TDati_riepilogo(const TDati_riepilogo& r) _massakg(r._massakg), _massaums(r._massaums) { } -TDati_riepilogo::TDati_riepilogo(const TString& key, +TDati_riepilogo::TDati_riepilogo(const TToken_string& key, const TRectype& rec, const TString& codval) : _key(key), _ammlire(rec.get_real("AMMLIRE"), "_FIRM"), @@ -178,7 +205,8 @@ public: void TRiepiloghi::add(const TRectype& rec, const TRectype& mov) { TString16 cod; - cod << mov.get_char("TIPOCF") << '|' << mov.get_long("CODCF"); + const char tipocf = mov.get_char("TIPOCF"); + cod << tipocf << '|' << mov.get_long("CODCF"); const TRectype& clifo = cache().get(LF_CLIFO, cod); cod = mov.get("CODVAL"); @@ -189,10 +217,10 @@ void TRiepiloghi::add(const TRectype& rec, const TRectype& mov) key.add(cod); // Non e' chiaro se raggruppare per valuta! key.add(rec.get("NATURA")); key.add(rec.get("NOMENCL")); - key.add(rec.get("REGIME")); + key.add(rec.get("CONSEGNA")); key.add(rec.get("TRASPORTO")); key.add(rec.get("PAESE")); - key.add(rec.get("PAESEORIG")); + key.add(rec.get("PAESEORIG")); // Campo solo per Acquisti key.add(rec.get("PROV")); TDati_riepilogo* data = (TDati_riepilogo*)_ass.objptr(key); @@ -331,9 +359,28 @@ TGenerazione_mask::TGenerazione_mask() // Generazione riepiloghi /////////////////////////////////////////////////////////// -void genera_riepiloghi() +void genera_riepiloghi(char tipo, int anno, int periodo) { TGenerazione_mask m; - if (m.run() == K_ENTER) + + int num_fields = 0; + if (tipo > ' ' ) + { + m.set(R_TIPO, tipo); + num_fields++; + } + if (anno > 0) + { + m.set(R_ANNO, anno); + num_fields++; + } + if (periodo > 0) + { + m.set(R_PERIODO_M, periodo); + m.set(R_PERIODO_T, periodo); + num_fields++; + } + + if (num_fields == 3 || m.run() == K_ENTER) m.genera_riepiloghi(); } diff --git a/in/inlib01.h b/in/inlib01.h index 2d33b8567..d43e48fb9 100755 --- a/in/inlib01.h +++ b/in/inlib01.h @@ -20,11 +20,12 @@ public: char tipo() const; char frequenza() const; int periodo() const; + const char* periodo_str() const; TIntra_mask(const char* name); virtual ~TIntra_mask() { } }; -void genera_riepiloghi(); +void genera_riepiloghi(char tipo = ' ', int anno = 0, int periodo = 0); #endif diff --git a/in/inprassi.men b/in/inprassi.men new file mode 100755 index 000000000..8a4b9f562 --- /dev/null +++ b/in/inprassi.men @@ -0,0 +1,11 @@ +[PRASSIEF_001] +Caption = "Elenchi INTRA comunitari" +Picture = +Module = 34 +Flags = "" +Item_01 = "Stampa riepiloghi", "in0 -0", "F" +Item_02 = "Generazione dischetti", "in0 -1", "F" +Item_03 = "Gestione movimenti", "in0 -4", "F" +Item_04 = "Gestione riepiloghi", "in0 -5", "F" +Item_05 = "Gestione rettifiche", "in0 -6", "F" +