diff --git a/in/f133.trr b/in/f133.trr index 69132fea0..bf51b0f93 100755 --- a/in/f133.trr +++ b/in/f133.trr @@ -9,5 +9,6 @@ TOTDOC|4|18|2|Totale documento TOTDOCIMM|4|18|2|Totale documento immesso CODVAL|1|3|0|Codice valuta CAMBIO|4|18|5|Cambio -1 +2 NUMREG| +DATAREG+NUMREG| diff --git a/in/f134.dir b/in/f134.dir index d88c8517d..18228c072 100755 --- a/in/f134.dir +++ b/in/f134.dir @@ -1,3 +1,3 @@ 134 0 -$rintra|0|0|94|0|Righe movimenti intra||| +$rintra|0|0|110|0|Righe movimenti intra||| diff --git a/in/f134.trr b/in/f134.trr index 1dbba1ea6..e743cfd8c 100755 --- a/in/f134.trr +++ b/in/f134.trr @@ -1,17 +1,19 @@ 134 -13 +15 NUMREG|3|7|0|Numero registrazione 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 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|2|4|0|Valore statistico -REGIME|2|2|0|Regime -PAESEDEST|1|2|0|Paese di destinazione -PROVORIG|1|2|0|Provincia d'origine +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 1 NUMREG+NUMRIG| diff --git a/in/f135.dir b/in/f135.dir new file mode 100755 index 000000000..a9eeb1edf --- /dev/null +++ b/in/f135.dir @@ -0,0 +1,3 @@ +135 +0 +$rieprett|0|0|154|0|Riepiloghi e rettifiche INTRA||| diff --git a/in/f135.trr b/in/f135.trr new file mode 100755 index 000000000..c883f1b03 --- /dev/null +++ b/in/f135.trr @@ -0,0 +1,27 @@ +135 +23 +TIPO|7|1|0|Acquisti o Cessioni [A,C] +ANNO|2|4|0|Anno +PERIODO|9|2|0|Periodo (Mese[1,12] / Trimestre[1,4] / Anno [1.,1]) +NUMRIG|3|7|0|Numero riga +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] +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) +PROV|1|2|0|Provincia d'origine/destinazione +AMMLIRE|4|18|2|Ammontare in lire +AMMVALUTA|4|18|3|Ammontare in valuta +CODVAL|1|3|0|Codice Valuta +VALSTAT|4|18|2|Valore statistico +MASSAKG|4|18|5|Massa in Kilogrammi +MASSAUMS|4|18|5|Massa in unita' supplementare +ANNORETT|6|4|0|Anno rettificato +PERETT|9|2|0|Periodo rettificato +NUMRETT|3|7|0|Riga rettificata +SEGNORETT|1|1|0|Segno della rettifica +1 +TIPO+ANNO+PERIODO+NUMRIG| diff --git a/in/in0.cpp b/in/in0.cpp index 3ccd0cec1..aae7a5f7a 100755 --- a/in/in0.cpp +++ b/in/in0.cpp @@ -7,9 +7,9 @@ int main(int argc, char** argv) const int n = (argc > 1) ? (argv[1][1]-'0') : 0; switch (n) { - case 4 : is0500(argc, argv); break; // Immissione movimenti - default: - break; + case 5 : is0600(argc, argv); break; // riepiloghi + case 6 : is0700(argc, argv); break; // rettifiche + default: is0500(argc, argv); break; // movimenti } exit(0); return 0; diff --git a/in/in0.h b/in/in0.h index 39048c87c..e5caefee0 100755 --- a/in/in0.h +++ b/in/in0.h @@ -1 +1,4 @@ int is0500(int argc, char* argv[]); +int is0600(int argc, char* argv[]); +int is0700(int argc, char* argv[]); + diff --git a/in/in0500.cpp b/in/in0500.cpp index 33be469c9..4f6ef64b9 100755 --- a/in/in0500.cpp +++ b/in/in0500.cpp @@ -1,24 +1,71 @@ -#include #include +#include +#include +#include #include #include "in0.h" #include "in0500a.h" +#include "inlib01.h" -class TImmissione_mask : public TAutomask +#include + +/////////////////////////////////////////////////////////// +// TImmissione_mask +/////////////////////////////////////////////////////////// + +class TImmissione_mask : public TIntra_mask { +protected: + virtual short type_field() const { return F_TIPO_MOV; } + protected: virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); + bool on_sheet_event(TSheet_field& s, TField_event e, int row); + bool on_sheet_field_event(TOperable_field& o, TField_event e, long jolly); public: - TImmissione_mask() : TAutomask("in0500a") { } + TImmissione_mask(); virtual ~TImmissione_mask() { } }; bool TImmissione_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) { - switch (o.dlg()) + const short id = o.dlg(); + switch (id) { + case F_NUM_REG: + if (e == fe_modify) + { + if (main_app().has_module(CGAUT)) + { + const TString& numreg = o.get(); + const TRectype& mov = cache().get(LF_MOV, numreg); + set(F_NUM_DOC, mov.get(MOV_NUMDOC)); + set(F_DATA_DOC, mov.get(MOV_DATADOC)); + } + } + break; + case F_TIPO_MOV: + if (e == fe_init || e == fe_modify) + { + TMask& m = sfield(F_RIGHE).sheet_mask(); + 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--) + { + TMask_field& f = m.fld(i); + if (f.dlg() <= F_NOMENCLATURA) + break; + if (f.is_edit()) + f.check_type(req ? CHECK_REQUIRED : CHECK_NORMAL); + } + } + break; + break; case F_VALUTA: if (e == fe_modify) { @@ -54,12 +101,65 @@ bool TImmissione_mask::on_field_event(TOperable_field& o, TField_event e, long j } } break; + case F_RIGHE: + return on_sheet_event((TSheet_field&)o, e, int(jolly)); + case R_RIEPILOGHI: + if (e == fe_button) + genera_riepiloghi(); + break; + default: + if (id < F_DITTA && jolly == 1) + return on_sheet_field_event(o, e, jolly); + break; + } + return TIntra_mask::on_field_event(o, e, jolly); +} + +bool TImmissione_mask::on_sheet_event(TSheet_field& s, TField_event e, int row) +{ + return TRUE; +} + +bool TImmissione_mask::on_sheet_field_event(TOperable_field& o, TField_event e, long jolly) +{ + switch (o.dlg()) + { + case F_NOMENCLATURA: + if (e == fe_modify) + { + TMask& m = o.mask(); + if (!o.empty()) + { + const TRectype& nom = ((TEdit_field&)o).browse()->cursor()->curr(); + if (m.get(F_UMS).empty()) + m.set(F_UMS, nom.get("S5"), TRUE); + + bool req = frequenza() == 'M'; + if (req) // Solo la frequenza mensile puo' obbligare + { + const char obb = nom.get_char("S4"); + req = obb == 'E' || obb == tipo(); + } + m.field(F_UMS).check_type(req ? CHECK_REQUIRED : CHECK_NORMAL); + m.field(F_MASSA_UMS).check_type(req ? CHECK_REQUIRED : CHECK_NORMAL); + } + else + { + m.set(F_UMS, "", TRUE); + } + } + break; default: break; } return TRUE; } +TImmissione_mask::TImmissione_mask() + : TIntra_mask("in0500a") +{ } + + /////////////////////////////////////////////////////////// // Applicazione principale /////////////////////////////////////////////////////////// @@ -95,10 +195,9 @@ bool TImmissione_intra::user_destroy() return TRUE; } - int is0500(int argc, char* argv[]) { TImmissione_intra a; - a.run(argc, argv, "Immissione movimenti"); + a.run(argc, argv, "Movimenti INTRA"); return 0; } \ No newline at end of file diff --git a/in/in0500a.h b/in/in0500a.h index b282f974d..2d239cca8 100755 --- a/in/in0500a.h +++ b/in/in0500a.h @@ -1,38 +1,51 @@ -#define F_DITTA 201 -#define F_DITTA_DESCR 202 +#define F_DITTA 301 +#define F_DITTA_DESCR 302 -#define F_NUM_REG 203 -#define F_DATA_DOC 204 -#define F_NUM_DOC 205 +#define F_NUM_REG 303 +#define F_DATA_DOC 304 +#define F_NUM_DOC 305 -#define F_DATA_REG 207 -#define F_TIPO_MOV 208 +#define F_DATA_REG 307 +#define F_TIPO_MOV 308 -#define F_TIPO_CF 210 -#define F_CLIFO 211 -#define F_RAGSOC 212 +#define F_TIPO_CF 310 +#define F_CLIFO 311 +#define F_RAGSOC 312 -#define F_STATO 215 -#define F_PARTITA_IVA 216 +#define F_STATO 315 +#define F_PARTITA_IVA 316 -#define F_TOT_DOC 220 -#define F_TOT_IMM 221 -#define F_DIF 222 +#define F_TOT_DOC 320 +#define F_TOT_IMM 321 +#define F_DIF 322 -#define F_VALUTA 230 -#define F_CAMBIO 231 +#define F_VALUTA 330 +#define F_CAMBIO 331 -#define F_RIGHE 250 +#define F_RIGHE 350 #define F_AMM_LIRE 101 #define F_AMM_VALUTA 102 -#define F_TRASPORTO 103 +#define F_NATURA_TRANS 103 #define F_NOMENCLATURA 104 #define F_MASSA_KG 105 #define F_MASSA_UMS 106 #define F_UMS 107 #define F_VALORE_STAT 108 -#define F_REGIME 109 -#define F_PAESE_DEST 110 -#define F_PROV_ORIG 111 +#define F_REGIME_C 109 +#define F_REGIME_A 209 +#define F_TRASPORTO 110 +#define F_PAESE 111 +#define F_PAESE_ORIG 112 +#define F_PAESE_DUMMY 212 +#define F_PROV 113 +#define GR_CESSIONI 1 +#define GR_ACQUISTI 2 + +#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/in0500a.uml b/in/in0500a.uml index c8b723fa7..58a822c87 100755 --- a/in/in0500a.uml +++ b/in/in0500a.uml @@ -4,18 +4,23 @@ TOOLBAR "Toolbar" 0 -3 0 3 #include +BUTTON R_RIEPILOGHI 28 1 +BEGIN + PROMPT -11 0 "~Generazione Riepiloghi" +END + ENDPAGE -PAGE "Immissione Movimenti" -1 -1 78 18 +PAGE "Movimenti INTRA" -1 -1 78 18 GROUPBOX DLG_NULL 78 3 BEGIN - PROMPT 1 1 "@bDitta" + PROMPT 1 0 "@bDitta" END NUMBER F_DITTA 5 BEGIN - PROMPT 3 2 "" + PROMPT 3 1 "" FLAGS "DF" USE LF_NDITTE INPUT CODDITTA F_DITTA @@ -25,42 +30,41 @@ END STRING F_DITTA_DESCR 50 BEGIN - PROMPT 10 2 "Ragione Sociale " + PROMPT 10 1 "Ragione Sociale " FLAGS "D" END NUMBER F_NUM_REG 5 BEGIN - PROMPT 1 4 "Numero registrazione " - USE LF_MOV + PROMPT 1 3 "Numero registrazione " + USE LF_INTRA + JOIN LF_CLIFO INTO TIPOCF=TIPOCF CODCF=CODCF INPUT NUMREG F_NUM_REG DISPLAY "Numero" NUMREG - DISPLAY "Data Doc.@10" DATADOC - DISPLAY "Num. Doc." NUMDOC - DISPLAY "Descrizione@50" DESCR + DISPLAY "Data@10" DATAREG + DISPLAY "C/A" TIPOMOV + DISPLAY "Ragione Sociale@50" LF_CLIFO->RAGSOC OUTPUT F_NUM_REG NUMREG - OUTPUT F_DATA_DOC DATADOC - OUTPUT F_NUM_DOC NUMDOC - CHECKTYPE SEARCH + CHECKTYPE REQUIRED KEY 1 FIELD NUMREG END DATA F_DATA_DOC BEGIN - PROMPT 32 4 "Documento: data " + PROMPT 32 3 "Documento: data " FLAGS "D" END DATA F_NUM_DOC BEGIN - PROMPT 61 4 "Numero " + PROMPT 61 3 "Numero " FLAGS "D" END DATA F_DATA_REG BEGIN - PROMPT 1 5 "Data di registrazione " + PROMPT 1 4 "Data di registrazione " FLAGS "A" CHECKTYPE REQUIRED FIELD DATAREG @@ -68,17 +72,17 @@ END LIST F_TIPO_MOV 1 12 BEGIN - PROMPT 49 5 "Tipo movimento " - ITEM "A|Acquisto" - MESSAGE "F",F_TIPO_CF + PROMPT 49 4 "Tipo movimento " ITEM "C|Cessione" MESSAGE "C",F_TIPO_CF + ITEM "A|Acquisto" + MESSAGE "F",F_TIPO_CF FIELD TIPOMOV END LISTA F_TIPO_CF 1 10 BEGIN - PROMPT 1 6 "" + PROMPT 1 5 "" FLAGS "D" ITEM "C|Cliente" ITEM "F|Fornitore" @@ -87,7 +91,7 @@ END NUMBER F_CLIFO 5 BEGIN - PROMPT 16 6 "" + PROMPT 16 5 "" USE LF_CLIFO INPUT TIPOCF F_TIPO_CF SELECT INPUT CODCF F_CLIFO @@ -106,7 +110,7 @@ END STRING F_RAGSOC 50 BEGIN - PROMPT 26 6 "" + PROMPT 26 5 "" USE LF_CLIFO KEY 2 INPUT TIPOCF F_TIPO_CF SELECT INPUT RAGSOC F_RAGSOC @@ -120,7 +124,8 @@ END LIST F_STATO 2 14 BEGIN - PROMPT 1 7 "Stato CEE " + PROMPT 1 6 "Stato CEE " + ITEM " |" ITEM "BE|Belgio" ITEM "DE|Germania" ITEM "DK|Danimarca" @@ -138,7 +143,7 @@ END STRING F_PARTITA_IVA 12 BEGIN - PROMPT 49 7 "Partita IVA " + PROMPT 49 6 "Partita IVA " USE LF_CLIFO KEY 5 INPUT TIPOCF F_TIPO_CF SELECT INPUT STATOPAIV F_STATO @@ -155,19 +160,19 @@ END CURRENCY F_TOT_DOC 18 BEGIN - PROMPT 1 8 "Totale documento da controllare " + PROMPT 1 7 "Totale documento da controllare " FIELD TOTDOC END CURRENCY F_TOT_IMM 18 BEGIN - PROMPT 1 9 "Totale documento immesso " + PROMPT 1 8 "Totale documento immesso " FIELD TOTDOCIMM END STRING F_VALUTA 3 BEGIN - PROMPT 66 8 "Valuta " + PROMPT 66 7 "Valuta " FLAGS "U" USE %VAL INPUT CODTAB F_VALUTA @@ -180,25 +185,27 @@ END NUMBER F_CAMBIO 18 5 BEGIN - PROMPT 53 9 "Cambio " + PROMPT 53 8 "Cambio " CHECKTYPE REQUIRED FIELD CAMBIO END SPREADSHEET F_RIGHE BEGIN - PROMPT 0 11 "" - ITEM "Amm. Lire@18" - ITEM "Amm. Valuta@18" - ITEM "Tras.@4" - ITEM "Nomenclatura" - ITEM "Mas.Kg@13" - ITEM "Mas.Ums@13" - ITEM "UMS" - ITEM "Stat." - ITEM "R" - ITEM "Paese" - ITEM "Prov." + PROMPT 0 9 "" + ITEM "Ammontare\nLire@18" + ITEM "Ammontare\nValuta@18" + ITEM "Natura\nTransaz.@7" + ITEM "Nomenclat.\ncombinata@10" + ITEM "Massa Kg@13" + ITEM "Massa Ums@13" + ITEM "U.M." + ITEM "Valore\nStatistico@15" + ITEM "Reg.@3" + ITEM "Modo\nTrasp.@5" + ITEM "Paese@6" + ITEM "Paese\nOrig.@6" + ITEM "Provincia" FLAGS "A" USE LF_RINTRA KEY NUMRIG INPUT NUMREG F_NUM_REG @@ -208,38 +215,44 @@ ENDPAGE ENDMASK -PAGE "Righe" -1 -1 68 10 +PAGE "Righe" -1 -1 70 11 CURRENCY F_AMM_LIRE 18 BEGIN - PROMPT 1 1 "Ammontare in lire " + PROMPT 1 1 "Ammontare in lire " FIELD AMMLIRE + CHECKTYPE REQUIRED END CURRENCY F_AMM_VALUTA 18 BEGIN - PROMPT 1 2 "Ammontare in valuta " + PROMPT 40 1 "in valuta " DRIVENBY -F_VALUTA FIELD AMMVALUTA + CHECKTYPE REQUIRED END -LISTA F_TRASPORTO 1 20 +NUMBER F_NATURA_TRANS 1 BEGIN - PROMPT 1 3 "Trasporto " - ITEM "1|Marittimo" - ITEM "2|Ferroviario" - ITEM "3|Stradale" - ITEM "4|Aereo" - ITEM "5|Spedizione postale" - ITEM "7|Installazioni fisse" - ITEM "8|Via acqua" - ITEM "9|Propulsione propria" - FIELD TRASPORTO + PROMPT 1 3 "Natura transazione " + SHEET "Cod.|Descrizione@66" + INPUT F_NATURA_TRANS + ITEM "1|Acquisto o vendita (compreso il baratto)" + ITEM "2|Restituzione o sostituzione di merci" + ITEM "3|Aiuti gernativi, privati o finanziati dalla comunita' europea" + ITEM "4|Operazione in vista di una lavorazione per conto terzi o di una riparazione" + ITEM "5|Operazione successiva ad una lavorazione per conto terzi o di una riparazione" + ITEM "6|Movimento di merci senza trasferimento di proprieta' (per noleggio, leasing operativo, ecc.)" + ITEM "7|Operazione a titolo di un programma comune di difesa o di un altro programma intergovernativo di fabbricazione coordinata" + ITEM "8|Fornitura di materiali e macchinari nel quadro di un contratto generale di costruzione o di genio civile" + ITEM "9|Altre transazioni" + OUTPUT F_NATURA_TRANS + FIELD NATURA END NUMBER F_NOMENCLATURA 8 BEGIN - PROMPT 36 3 "Nomenclatura " + PROMPT 36 3 "Nomenclatura combinata " FLAGS "Z" USE %NOC INPUT CODTAB F_NOMENCLATURA @@ -248,11 +261,12 @@ BEGIN OUTPUT F_NOMENCLATURA CODTAB CHECKTYPE REQUIRED FIELD NOMENCL + CHECKTYPE REQUIRED END NUMBER F_MASSA_KG 13 5 BEGIN - PROMPT 1 4 "Massa Kg. " + PROMPT 1 4 "Massa Kg." PICTURE ".5" FIELD MASSAKG END @@ -266,8 +280,8 @@ END STRING F_UMS 2 BEGIN - PROMPT 59 4 "UMS " - FLAGS "U" + PROMPT 60 4 "U.M. " + FLAGS "DU" USE %UMS INPUT CODTAB F_UMS DISPLAY "Codice" CODTAB @@ -277,30 +291,122 @@ BEGIN FIELD UMS END -NUBER F_VALORE_STAT 4 +NUBER F_VALORE_STAT 15 BEGIN - PROMPT 1 5 "Valore statistico " + PROMPT 1 5 "Valore statistico " + PICTURE "." FIELD VALSTAT END -NUMBER F_REGIME 2 +LIST F_REGIME_C 1 24 BEGIN PROMPT 36 5 "Regime " + ITEM "1|Spedizione definitiva" + ITEM "2|Spedizione temporanea" + ITEM "3|Rispedizione" FIELD REGIME + GROUP GR_CESSIONI END -STRING F_PAESE_DEST 2 +LIST F_REGIME_A 1 24 BEGIN - PROMPT 1 6 "Pase di destinazione " - FLAGS "U" - FIELD PAESEDEST + PROMPT 36 5 "Regime " + ITEM "4|Introduzione definitiva" + ITEM "5|Introduzione temporanea" + ITEM "6|Reintroduzione" + FIELD REGIME + GROUP GR_ACQUISTI END -STRING F_PROV_ORIG 2 +LIST F_TRASPORTO 1 20 BEGIN - PROMPT 36 6 "Provincia d'origine " + PROMPT 1 6 "Modo di trasporto " + ITEM "1|Marittimo" + ITEM "2|Ferroviario" + ITEM "3|Stradale" + ITEM "4|Aereo" + ITEM "5|Spedizione postale" + ITEM "7|Installazioni fisse" + ITEM "8|Via acqua" + ITEM "9|Propulsione propria" + FIELD TRASPORTO +END + +TEXT DLG_NULL +BEGIN + PROMPT 1 7 "Pase di destinazione" + GROUP GR_CESSIONI +END + +TEXT DLG_NULL +BEGIN + PROMPT 1 7 "Pase di provenienza" + GROUP GR_ACQUISTI +END + +LIST F_PAESE 2 20 +BEGIN + PROMPT 22 7 "" + 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" + FIELD PAESE +END + +LIST F_PAESE_ORIG 2 20 +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" + FIELD PAESEORIG + GROUP GR_ACQUISTI +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 " + GROUP GR_ACQUISTI +END + +STRING F_PROV 2 +BEGIN + PROMPT 66 7 "" FLAGS "U" - FIELD PROVORIG + FIELD PROV END BUTTON DLG_OK 10 2 diff --git a/in/in0500b.uml b/in/in0500b.uml new file mode 100755 index 000000000..15a2cff4b --- /dev/null +++ b/in/in0500b.uml @@ -0,0 +1,57 @@ +#include "in0500a.h" + +PAGE "Generazione 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_OK 10 2 +BEGIN + PROMPT -12 -1 "" +END + +BUTTON DLG_CANCEL 10 2 +BEGIN + PROMPT -22 -1 "" +END + +ENDPAGE + +ENDMASK diff --git a/in/in0600.cpp b/in/in0600.cpp new file mode 100755 index 000000000..3834717b3 --- /dev/null +++ b/in/in0600.cpp @@ -0,0 +1,128 @@ +#include +#include + +#include "in0.h" +#include "in0600a.h" +#include "inlib01.h" + +class TRiepiloghi_mask : public TIntra_mask +{ +protected: + virtual short type_field() const; + virtual short period_field() const; + +protected: + virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); + +public: + TRiepiloghi_mask(); + virtual ~TRiepiloghi_mask() { } +}; + +short TRiepiloghi_mask::type_field() const +{ return F_TIPO; } + +short TRiepiloghi_mask::period_field() const +{ return F_PERIODO_M; } + +bool TRiepiloghi_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) +{ + switch (o.dlg()) + { + case F_NATURA_TRANS: + if (e == fe_modify || e == fe_init) + o.check(); + break; + case F_RIEPILOGHI: + if (e == fe_button) + genera_riepiloghi(); + break; + default: + break; + } + return TIntra_mask::on_field_event(o, e, jolly); +} + +TRiepiloghi_mask::TRiepiloghi_mask() + : TIntra_mask("in0600a") +{ + first_focus(F_NUM_RIG); +} + +/////////////////////////////////////////////////////////// +// Applicazione principale +/////////////////////////////////////////////////////////// + +class TRiepiloghi_intra : public TRelation_application +{ + TRelation* _rel; + TRiepiloghi_mask* _msk; + +protected: + virtual bool user_create(); + virtual TRelation* get_relation() const { return _rel; } + virtual TMask* get_mask(int) { return _msk; } + virtual bool changing_mask(int mode) { return FALSE; } + virtual bool user_destroy(); + virtual bool get_next_key(TToken_string& k); + virtual void init_query_mode(TMask& m); +public: +}; + +bool TRiepiloghi_intra::user_create() +{ + open_files(LF_TABCOM, LF_TAB, LF_CLIFO, + LF_RIEPRETT, 0); + _rel = new TRelation(LF_RIEPRETT); + _msk = new TRiepiloghi_mask; + + return TRUE; +} + +bool TRiepiloghi_intra::user_destroy() +{ + delete _msk; + delete _rel; + return TRUE; +} + +bool TRiepiloghi_intra::get_next_key(TToken_string& k) +{ + if (_msk->get(F_ANNO).empty() || _msk->get(F_PARTITA_IVA).empty()) + return FALSE; + + _msk->autosave(*_rel); + TRectype filter(_rel->curr()); + filter.zero("NUMRIG"); + + TCursor cur(_rel, "", 1, &filter, &filter); + const long r = cur.items(); + long num_rig = 1; + if (r > 0) + { + cur = r-1; + num_rig = cur.curr().get_long("NUMRIG")+1; + } + + k.cut(0); k.add(F_NUM_RIG); k.add(num_rig); + return TRUE; +} + +void TRiepiloghi_intra::init_query_mode(TMask& m) +{ + TEdit_field& numrig = m.efield(F_NUM_RIG); + TCursor& cur = *numrig.browse()->cursor(); + cur.last_item(); + const TRectype& curr = cur.curr(); + m.set(F_ANNO, curr.get("ANNO")); + m.set(F_TIPO, curr.get("TIPO"), TRUE); + m.set(F_PERIODO_M, curr.get("PERIODO")); + m.set(F_PERIODO_T, curr.get("PERIODO")); +} + +int is0600(int argc, char* argv[]) +{ + TRiepiloghi_intra a; + a.run(argc, argv, "Riepiloghi INTRA"); + return 0; +} diff --git a/in/in0600a.h b/in/in0600a.h new file mode 100755 index 000000000..f50ba8d61 --- /dev/null +++ b/in/in0600a.h @@ -0,0 +1,34 @@ +#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_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 GR_CESSIONI 1 +#define GR_ACQUISTI 2 diff --git a/in/in0600a.uml b/in/in0600a.uml new file mode 100755 index 000000000..b4fb71430 --- /dev/null +++ b/in/in0600a.uml @@ -0,0 +1,367 @@ +#include "in0600a.h" + +TOOLBAR "Toolbar" 0 -3 0 3 + +#include + +BUTTON F_RIEPILOGHI 28 1 +BEGIN + PROMPT -11 0 "~Generazione Riepiloghi" +END + +ENDPAGE + +PAGE "Riepiloghi INTRA" -1 -1 78 18 + +GROUPBOX DLG_NULL 78 3 +BEGIN + PROMPT 1 0 "@bDitta" +END + +NUMBER F_DITTA 5 +BEGIN + PROMPT 3 1 "" + FLAGS "DF" + USE LF_NDITTE + INPUT CODDITTA F_DITTA + OUTPUT F_DITTA_DESCR RAGSOC + CHECKTYPE REQUIRED +END + +STRING F_DITTA_DESCR 50 +BEGIN + PROMPT 10 1 "Ragione Sociale " + FLAGS "D" +END + +LIST F_TIPO 1 10 +BEGIN + PROMPT 1 3 "Tipo riepilogo " + ITEM "C|Cessioni" + MESSAGE "C",F_TIPO_CF|SHOW,GR_CESSIONI@|HIDE,GR_ACQUISTI@ + ITEM "A|Acquisti" + MESSAGE "F",F_TIPO_CF|SHOW,GR_ACQUISTI@|HIDE,GR_CESSIONI@ + KEY 1 + FIELD TIPO +END + +NUMBER F_ANNO 4 +BEGIN + PROMPT 33 3 "Anno " + FLAGS "AU" + KEY 1 + FIELD ANNO +END + +LIST F_PERIODO_M 2 16 +BEGIN + PROMPT 50 3 "Periodo " + FLAGS "AM" + FIELD PERIODO + KEY 1 +END + +LIST F_PERIODO_T 2 16 +BEGIN + PROMPT 50 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 + FIELD PERIODO + KEY 1 +END + +LIST F_PERIODO_A 2 16 +BEGIN + PROMPT 50 3 "Periodo " + ITEM "01|Annuale" + MESSAGE COPY,F_PERIODO_M + FIELD PERIODO + KEY 1 +END + +NUBER F_NUM_RIG 7 +BEGIN + PROMPT 1 4 "Riga di riepilogo " + USE LF_RIEPRETT + INPUT TIPO F_TIPO SELECT + INPUT ANNO F_ANNO SELECT + INPUT PERIODO F_PERIODO_M + INPUT NUMRIG F_NUM_RIG + DISPLAY "Tipo" TIPO + DISPLAY "Anno" ANNO + DISPLAY "Periodo" PERIODO + DISPLAY "Numero" NUMRIG + DISPLAY "Stato" STATO + DISPLAY "Partita IVA" PIVA + DISPLAY "Natura" NATURA + DISPLAY "Nomenclatura" NOMENCL + DISPLAY "Regime" REGIME + DISPLAY "Trasporto" TRASPORTO + DISPLAY "Paese" PAESE + OUTPUT F_PERIODO_M PERIODO + OUTPUT F_PERIODO_T PERIODO + OUTPUT F_NUM_RIG NUMRIG + CHECKTYPE REQUIRED + FIELD NUMRIG + KEY 1 +END + +LIST F_STATO 2 16 +BEGIN + PROMPT 1 5 "Stato CEE " + 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" + FIELD STATO +END + +LIST F_TIPO_CF 1 10 +BEGIN + PROMPT 33 5 "" + ITEM "C|Cliente" + ITEM "F|Fornitore" + FLAGS "D" +END + +STRING F_PARTITA_IVA 12 +BEGIN + PROMPT 50 5 "Partita IVA " + USE LF_CLIFO KEY 5 + INPUT TIPOCF F_TIPO_CF SELECT + INPUT STATOPAIV F_STATO + INPUT PAIV F_PARTITA_IVA + DISPLAY "Stato" STATOPAIV + DISPLAY "Partita IVA@12" PAIV + DISPLAY "Codice" CODCF + DISPLAY "Ragione Sociale@50" RAGSOC + OUTPUT F_STATO STATOPAIV + OUTPUT F_PARTITA_IVA PAIV + OUTPUT F_PARTITA_DESC RAGSOC + VALIDATE PI_FUNC F_STATO + CHECKTYPE REQUIRED + WARNING "Lunghezza partita IVA errata" + FIELD PIVA +END + +STRING F_PARTITA_DESC 50 +BEGIN + PROMPT 1 6 "Denominazione " + FLAGS "D" +END + + +NUMBER F_NATURA_TRANS 1 +BEGIN + PROMPT 1 8 "Natura transazione " + SHEET "Cod.|Descrizione@66" + INPUT F_NATURA_TRANS + ITEM "1|Acquisto o vendita (compreso il baratto)" + ITEM "2|Restituzione o sostituzione di merci" + ITEM "3|Aiuti gernativi, privati o finanziati dalla comunita' europea" + ITEM "4|Operazione in vista di una lavorazione per conto terzi o di una riparazione" + ITEM "5|Operazione successiva ad una lavorazione per conto terzi o di una riparazione" + ITEM "6|Movimento di merci senza trasferimento di proprieta' (per noleggio, leasing operativo, ecc.)" + ITEM "7|Operazione a titolo di un programma comune di difesa o di un altro programma intergovernativo di fabbricazione coordinata" + ITEM "8|Fornitura di materiali e macchinari nel quadro di un contratto generale di costruzione o di genio civile" + ITEM "9|Altre transazioni" + OUTPUT F_NATURA_TRANS + OUTPUT F_NATURA_DESCR + FIELD NATURA +END + +MEMO F_NATURA_DESCR 50 3 +BEGIN + PROMPT 26 7 "" + FLAGS "D" +END + +TEXT DLG_NULL +BEGIN + PROMPT 1 9 "Nomenclatura" +END + +NUMBER F_NOMENCLATURA 8 +BEGIN + PROMPT 1 10 "combinata " + FLAGS "Z" + USE %NOC + INPUT CODTAB F_NOMENCLATURA + DISPLAY "Codice@8" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_NOMENCLATURA CODTAB + OUTPUT F_NOMENCL_DESC S0 + CHECKTYPE REQUIRED + FIELD NOMENCL +END + +STRING F_NOMENCL_DESC 50 +BEGIN + PROMPT 26 10 "" + FLAGS "D" +END + +LIST F_REGIME_C 1 24 +BEGIN + PROMPT 1 11 "Regime " + ITEM "1|Spedizione definitiva" + ITEM "2|Spedizione temporanea" + ITEM "3|Rispedizione" + GROUP GR_CESSIONI + FIELD REGIME +END + +LIST F_REGIME_A 1 24 +BEGIN + PROMPT 1 11 "Regime " + ITEM "4|Introduzione definitiva" + ITEM "5|Introduzione temporanea" + ITEM "6|Reintroduzione" + GROUP GR_ACQUISTI + FIELD REGIME +END + +LIST F_TRASPORTO 1 20 +BEGIN + PROMPT 44 11 "Trasporto " + ITEM "1|Marittimo" + ITEM "2|Ferroviario" + ITEM "3|Stradale" + ITEM "4|Aereo" + ITEM "5|Spedizione postale" + ITEM "7|Installazioni fisse" + ITEM "8|Via acqua" + ITEM "9|Propulsione propria" + FIELD TRASPORTO +END + + +TEXT DLG_NULL +BEGIN + PROMPT 1 12 "Pase di destinazione" + GROUP GR_CESSIONI +END + +TEXT DLG_NULL +BEGIN + PROMPT 1 12 "Pase di provenienza" + GROUP GR_ACQUISTI +END + +LIST F_PAESE 2 20 +BEGIN + PROMPT 22 12 "" + 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" + FIELD PAESE +END + +LIST F_PAESE_ORIG 2 20 +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" + GROUP GR_ACQUISTI + FIELD PAESEORIG +END + +TEXT DLG_NULL +BEGIN + PROMPT 46 12 "Provincia d'origine " + GROUP GR_CESSIONI +END + +TEXT DLG_NULL +BEGIN + PROMPT 46 12 "Prov. destinazione " + GROUP GR_ACQUISTI +END + +STRING F_PROV 2 +BEGIN + PROMPT 66 12 "" + FLAGS "U" + FIELD PROV +END + +CURRENCY F_AMM_LIRE 18 +BEGIN + PROMPT 1 15 "Ammontare in lire " + FIELD AMMLIRE +END + +STRING F_VALUTA 3 +BEGIN + PROMPT 41 15 "in valuta " + FIELD CODVAL + FLAGS "D" +END + +CURRENCY F_AMM_VALUTA 18 +BEGIN + PROMPT 59 15 "" + DRIVENBY F_VALUTA + FIELD AMMVALUTA +END + +NUMBER F_VALORE_STAT 18 +BEGIN + PROMPT 1 16 "Valore statistico " + PICTURE "." + FIELD VALSTAT +END + +NUMBER F_MASSA_KG 18 5 +BEGIN + PROMPT 1 17 "Massa netta in Kg " + PICTURE ".5" + FIELD MASSAKG +END + +NUMBER F_MASSA_UMS 18 5 +BEGIN + PROMPT 41 17 "in unita' supp. " + PICTURE ".5" + FIELD MASSAUMS +END + + +ENDPAGE + +ENDMASK diff --git a/in/in0700.cpp b/in/in0700.cpp new file mode 100755 index 000000000..ea1d1fd94 --- /dev/null +++ b/in/in0700.cpp @@ -0,0 +1,109 @@ +#include + +#include "in0.h" +#include "in0700a.h" +#include "inlib01.h" + +/////////////////////////////////////////////////////////// +// TRettifiche_mask +/////////////////////////////////////////////////////////// + +class TRettifiche_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; } + +public: + + TRettifiche_mask(); + virtual ~TRettifiche_mask() { } +}; + +bool TRettifiche_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) +{ + bool ok = TIntra_mask::on_field_event(o, e, jolly); + if (ok) switch (o.dlg()) + { + case F_TIPO: + if (e == fe_init || e == fe_modify) + { + // Ripeto il comportamento standard sul periodo di rettifica + show(O_PERIODO_M, field(F_PERIODO_M).shown()); + show(O_PERIODO_T, field(F_PERIODO_T).shown()); + show(O_PERIODO_A, field(F_PERIODO_A).shown()); + } + break; + case O_NUM_RIG: + if ((e == fe_init || e == fe_modify) && !o.empty()) + { + TEdit_field& ef = (TEdit_field&)o; + ef.check(); + TCursor& cur = *ef.browse()->cursor(); + bool ok = cur.ok(); + enable(-GR_ORIGINAL, !ok); + if (e == fe_modify && insert_mode()) + { + for (short dlg = O_STATO; dlg <= O_NOMENCLATURA; dlg++) + { + const int pos = id2pos(dlg); + if (pos >= 0) + set(dlg + F_STATO - O_STATO, fld(pos).get()); + } + } + } + break; + default: + break; + } + return ok; +} + +TRettifiche_mask::TRettifiche_mask() +:TIntra_mask("in0700a") +{ + first_focus(F_TIPO); +} + +/////////////////////////////////////////////////////////// +// Applicazione principale +/////////////////////////////////////////////////////////// + +class TRettifiche_intra : public TRelation_application +{ + TRelation* _rel; + TMask* _msk; + +protected: + virtual bool user_create(); + virtual TRelation* get_relation() const { return _rel; } + virtual TMask* get_mask(int) { return _msk; } + virtual bool changing_mask(int mode) { return FALSE; } + virtual bool user_destroy(); + +public: +}; + +bool TRettifiche_intra::user_create() +{ + open_files(LF_TABCOM, LF_TAB, LF_CLIFO, + LF_RIEPRETT, 0); + _rel = new TRelation(LF_RIEPRETT); + _msk = new TRettifiche_mask; + return TRUE; +} + +bool TRettifiche_intra::user_destroy() +{ + delete _msk; + delete _rel; + return TRUE; +} + +int is0700(int argc, char* argv[]) +{ + TRettifiche_intra a; + a.run(argc, argv, "Rettifiche INTRA"); + return 0; +} \ No newline at end of file diff --git a/in/in0700a.h b/in/in0700a.h new file mode 100755 index 000000000..6e4904e33 --- /dev/null +++ b/in/in0700a.h @@ -0,0 +1,40 @@ +#define F_DITTA 101 +#define F_DITTA_DESCR 102 + +#define O_TIPO 103 +#define O_ANNO 104 +#define O_PERIODO_M 105 +#define O_PERIODO_T 106 +#define O_PERIODO_A 107 +#define O_STATO 108 +#define O_TIPO_CF 109 +#define O_PARTITA_IVA 110 +#define O_PARTITA_DESC 111 +#define O_NUM_RIG 112 + +#define O_NATURA_TRANS 121 +#define O_NOMENCLATURA 122 +#define O_AMM_LIRE 123 +#define O_AMM_VALUTA 124 +#define O_VALUTA 125 +#define O_VALORE_STAT 126 + +#define F_TIPO 203 +#define F_ANNO 204 +#define F_PERIODO_M 205 +#define F_PERIODO_T 206 +#define F_PERIODO_A 207 +#define F_STATO 208 +#define F_TIPO_CF 209 +#define F_PARTITA_IVA 210 +#define F_PARTITA_DESC 211 +#define F_NUM_RIG 212 +#define F_SEGNO 220 +#define F_NATURA_TRANS 221 +#define F_NOMENCLATURA 222 +#define F_AMM_LIRE 223 +#define F_AMM_VALUTA 224 +#define F_VALUTA 225 +#define F_VALORE_STAT 226 + +#define GR_ORIGINAL 3 \ No newline at end of file diff --git a/in/in0700a.uml b/in/in0700a.uml new file mode 100755 index 000000000..51b939440 --- /dev/null +++ b/in/in0700a.uml @@ -0,0 +1,432 @@ +#include "in0700a.h" + +TOOLBAR "Toolbar" 0 -3 0 3 + +#include + +ENDPAGE + +PAGE "Rettifiche INTRA" -1 -1 78 18 + +GROUPBOX DLG_NULL 78 3 +BEGIN + PROMPT 1 0 "@bDitta" +END + +NUMBER F_DITTA 5 +BEGIN + PROMPT 3 1 "" + FLAGS "DF" + USE LF_NDITTE + INPUT CODDITTA F_DITTA + OUTPUT F_DITTA_DESCR RAGSOC + CHECKTYPE REQUIRED +END + +STRING F_DITTA_DESCR 50 +BEGIN + PROMPT 10 1 "Ragione Sociale " + FLAGS "D" +END + +GROUPBOX DLG_NULL 78 8 +BEGIN + PROMPT 1 3 "@bRiepilogo originale" +END + +LIST O_TIPO 1 10 +BEGIN + PROMPT 2 4 "Tipo " + ITEM "C|Cessioni" + MESSAGE "C",O_TIPO_CF + ITEM "A|Acquisti" + MESSAGE "F",O_TIPO_CF + FLAGS "D" +END + +NUMBER O_ANNO 4 +BEGIN + PROMPT 21 4 "Anno " + FLAGS "AU" + FIELD ANNORETT + CHECKTYPE REQUIRED + NUM_EXPR #O_ANNO<=#O_ANNO + WARNING "Si possono rettificare solo gli anni precedenti" +END + +LIST O_PERIODO_M 2 16 +BEGIN + PROMPT 33 4 "Periodo " + FLAGS "AM" + FIELD PERETT + NUM_EXPR (#O_ANNO=#F_ANNO)||(#O_PERIODO_M<#F_PERIODO_M) + WARINIG "Si possono rettificare solo i periodi precedenti" +END + +LIST O_PERIODO_T 2 16 +BEGIN + PROMPT 33 4 "Periodo " + ITEM "01|Gennaio-Marzo" + MESSAGE COPY,O_PERIODO_M + ITEM "02|Aprile-Giugno" + MESSAGE COPY,O_PERIODO_M + ITEM "03|Luglio-Settembre" + MESSAGE COPY,O_PERIODO_M + ITEM "04|Ottobre-Dicembre" + MESSAGE COPY,O_PERIODO_M + FIELD PERETT + NUM_EXPR (#O_ANNO=#F_ANNO)||(#O_PERIODO_T<#F_PERIODO_T) + WARINIG "Si possono rettificare solo i periodi precedenti" +END + +LIST O_PERIODO_A 2 16 +BEGIN + PROMPT 33 4 "Periodo " + ITEM "01|Annuale" + MESSAGE COPY,O_PERIODO_M +END + +NUBER O_NUM_RIG 7 +BEGIN + PROMPT 63 4 "Riga " + USE LF_RIEPRETT + INPUT TIPO O_TIPO SELECT + INPUT ANNO O_ANNO SELECT + INPUT PERIODO O_PERIODO_M + INPUT NUMRIG O_NUM_RIG + DISPLAY "Tipo" TIPO + DISPLAY "Anno" ANNO + DISPLAY "Periodo" PERIODO + DISPLAY "Numero" NUMRIG + DISPLAY "Stato" STATO + DISPLAY "Partita IVA" PIVA + DISPLAY "Natura" NATURA + DISPLAY "Nomenclatura" NOMENCL + DISPLAY "Regime" REGIME + DISPLAY "Trasporto" TRASPORTO + DISPLAY "Paese" PAESE + OUTPUT O_PERIODO_M PERIODO + OUTPUT O_PERIODO_T PERIODO + OUTPUT O_NUM_RIG NUMRIG + OUTPUT O_STATO STATO + OUTPUT O_PARTITA_IVA PIVA + OUTPUT O_NATURA_TRANS NATURA + OUTPUT O_NOMENCLATURA NOMENCL + OUTPUT O_AMM_LIRE AMMLIRE + OUTPUT O_VALUTA CODVAL + OUTPUT F_VALUTA CODVAL + OUTPUT O_AMM_VALUTA AMMVALUTA + OUTPUT O_VALORE_STAT VALSTAT + CHECKTYPE SEARCH + FIELD NUMRETT +END + +LIST O_STATO 2 16 +BEGIN + PROMPT 2 5 "Stato CEE " + 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" + GROUP GR_ORIGINAL +END + +LIST O_TIPO_CF 1 10 +BEGIN + PROMPT 33 5 "" + ITEM "C|Cliente" + ITEM "F|Fornitore" + FLAGS "D" +END + +STRING O_PARTITA_IVA 12 +BEGIN + PROMPT 51 5 "Partita IVA " + USE LF_CLIFO KEY 5 + INPUT TIPOCF O_TIPO_CF SELECT + INPUT STATOPAIV O_STATO + INPUT PAIV O_PARTITA_IVA + DISPLAY "Stato" STATOPAIV + DISPLAY "Partita IVA@12" PAIV + DISPLAY "Codice" CODCF + DISPLAY "Ragione Sociale@50" RAGSOC + OUTPUT O_STATO STATOPAIV + OUTPUT O_PARTITA_IVA PAIV + OUTPUT O_PARTITA_DESC RAGSOC + VALIDATE PI_FUNC O_STATO + CHECKTYPE REQUIRED + WARNING "Lunghezza partita IVA errata" + GROUP GR_ORIGINAL +END + +STRING O_PARTITA_DESC 50 +BEGIN + PROMPT 2 6 "Ragione sociale " + FLAGS "D" +END + +NUMBER O_NATURA_TRANS 1 +BEGIN + PROMPT 2 7 "Natura transazione " + SHEET "Cod.|Descrizione@66" + INPUT O_NATURA_TRANS + ITEM "1|Acquisto o vendita (compreso il baratto)" + ITEM "2|Restituzione o sostituzione di merci" + ITEM "3|Aiuti gernativi, privati o finanziati dalla comunita' europea" + ITEM "4|Operazione in vista di una lavorazione per conto terzi o di una riparazione" + ITEM "5|Operazione successiva ad una lavorazione per conto terzi o di una riparazione" + ITEM "6|Movimento di merci senza trasferimento di proprieta' (per noleggio, leasing operativo, ecc.)" + ITEM "7|Operazione a titolo di un programma comune di difesa o di un altro programma intergovernativo di fabbricazione coordinata" + ITEM "8|Fornitura di materiali e macchinari nel quadro di un contratto generale di costruzione o di genio civile" + ITEM "9|Altre transazioni" + OUTPUT O_NATURA_TRANS + GROUP GR_ORIGINAL +END + +NUMBER O_NOMENCLATURA 8 +BEGIN + PROMPT 30 7 "Nomenclatura combinata " + FLAGS "Z" + USE %NOC + INPUT CODTAB O_NOMENCLATURA + DISPLAY "Codice@8" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT O_NOMENCLATURA CODTAB + CHECKTYPE REQUIRED + GROUP GR_ORIGINAL +END + +CURRENCY O_AMM_LIRE 18 +BEGIN + PROMPT 2 8 "Ammontare in lire " + CHECKTYPE REQUIRED + GROUP GR_ORIGINAL +END + +STRING O_VALUTA 3 +BEGIN + PROMPT 43 8 "in valuta " + FLAGS "D" + FIELD CODVAL +END + +CURRENCY O_AMM_VALUTA 18 +BEGIN + PROMPT 59 8 "" + DRIVENBY O_VALUTA + CHECKTYPE REQUIRED + GROUP GR_ORIGINAL +END + +NUMBER O_VALORE_STAT 18 +BEGIN + PROMPT 2 9 "Valore statistico " + PICTURE "." + GROUP GR_ORIGINAL +END + +GROUPBOX DLG_NULL 78 8 +BEGIN + PROMPT 1 11 "@bRettifica" +END + +LIST F_TIPO 1 10 +BEGIN + PROMPT 2 12 "Tipo " + ITEM "D|Cessioni" + MESSAGE "C",F_TIPO_CF|"C",O_TIPO + ITEM "B|Acquisti" + MESSAGE "F",F_TIPO_CF|"A",O_TIPO + KEY 1 + FIELD TIPO +END + +NUMBER F_ANNO 4 +BEGIN + PROMPT 21 12 "Anno " + FLAGS "AU" + KEY 1 + FIELD ANNO +END + +LIST F_PERIODO_M 2 16 +BEGIN + PROMPT 33 12 "Periodo " + FLAGS "AM" + FIELD PERIODO + KEY 1 +END + +LIST F_PERIODO_T 2 16 +BEGIN + PROMPT 33 12 "Periodo " + ITEM "01|Gennaio-Marzo" + MESSAGE COPY,O_PERIODO_M + ITEM "02|Aprile-Giugno" + MESSAGE COPY,O_PERIODO_M + ITEM "03|Luglio-Settembre" + MESSAGE COPY,O_PERIODO_M + ITEM "04|Ottobre-Dicembre" + MESSAGE COPY,O_PERIODO_M + FIELD PERIODO +END + +LIST F_PERIODO_A 2 16 +BEGIN + PROMPT 33 12 "Periodo " + ITEM "01|Annuale" + MESSAGE COPY,O_PERIODO_M +END + +NUBER F_NUM_RIG 7 +BEGIN + PROMPT 63 12 "Riga " + USE LF_RIEPRETT + INPUT TIPO F_TIPO SELECT + INPUT ANNO F_ANNO SELECT + INPUT PERIODO F_PERIODO_M + INPUT NUMRIG F_NUM_RIG + DISPLAY "Tipo" TIPO + DISPLAY "Anno" ANNO + DISPLAY "Periodo" PERIODO + DISPLAY "Numero" NUMRIG + DISPLAY "Anno rett." ANNORETT + DISPLAY "Periodo rett." PERETT + DISPLAY "Numero rett." NUMRETT + OUTPUT F_PERIODO_M PERIODO + OUTPUT F_PERIODO_T PERIODO + OUTPUT F_NUM_RIG NUMRIG + CHECKTYPE REQUIRED + FIELD NUMRIG + KEY 1 +END + +LIST F_STATO 2 16 +BEGIN + PROMPT 2 13 "Stato CEE " + 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" + FIELD STATO +END + +LIST F_TIPO_CF 1 10 +BEGIN + PROMPT 33 13 "" + ITEM "C|Cliente" + ITEM "F|Fornitore" + FLAGS "D" +END + +STRING F_PARTITA_IVA 12 +BEGIN + PROMPT 51 13 "Partita IVA " + USE LF_CLIFO KEY 5 + INPUT TIPOCF O_TIPO_CF SELECT + INPUT STATOPAIV O_STATO + INPUT PAIV O_PARTITA_IVA + DISPLAY "Stato" STATOPAIV + DISPLAY "Partita IVA@12" PAIV + DISPLAY "Codice" CODCF + DISPLAY "Ragione Sociale@50" RAGSOC + OUTPUT O_STATO STATOPAIV + OUTPUT O_PARTITA_IVA PAIV + OUTPUT O_PARTITA_DESC RAGSOC + VALIDATE PI_FUNC O_STATO + CHECKTYPE REQUIRED + WARNING "Lunghezza partita IVA errata" + FIELD PIVA +END + +STRING F_PARTITA_DESC 50 +BEGIN + PROMPT 2 14 "Ragione sociale " + FLAGS "D" +END + +NUMBER F_NATURA_TRANS 1 +BEGIN + PROMPT 2 15 "Natura transazione " + SHEET "Cod.|Descrizione@66" + INPUT O_NATURA_TRANS + ITEM "1|Acquisto o vendita (compreso il baratto)" + ITEM "2|Restituzione o sostituzione di merci" + ITEM "3|Aiuti gernativi, privati o finanziati dalla comunita' europea" + ITEM "4|Operazione in vista di una lavorazione per conto terzi o di una riparazione" + ITEM "5|Operazione successiva ad una lavorazione per conto terzi o di una riparazione" + ITEM "6|Movimento di merci senza trasferimento di proprieta' (per noleggio, leasing operativo, ecc.)" + ITEM "7|Operazione a titolo di un programma comune di difesa o di un altro programma intergovernativo di fabbricazione coordinata" + ITEM "8|Fornitura di materiali e macchinari nel quadro di un contratto generale di costruzione o di genio civile" + ITEM "9|Altre transazioni" + OUTPUT O_NATURA_TRANS + FIELD NATURA +END + +NUMBER F_NOMENCLATURA 8 +BEGIN + PROMPT 30 15 "Nomenclatura combinata " + FLAGS "Z" + USE %NOC + INPUT CODTAB O_NOMENCLATURA + DISPLAY "Codice@8" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT O_NOMENCLATURA CODTAB + CHECKTYPE REQUIRED + FIELD NOMENCL +END + +LIST F_SEGNO 1 +BEGIN + PROMPT 68 15 "Segno " + ITEM "+|+" + ITEM "-|-" + FIELD SEGNORETT +END + +CURRENCY F_AMM_LIRE 18 +BEGIN + PROMPT 2 16 "Ammontare in lire " + FIELD AMMLIRE +END + +STRING F_VALUTA 3 +BEGIN + PROMPT 43 16 "in valuta " + FLAGS "D" + FIELD CODVAL +END + +CURRENCY F_AMM_VALUTA 18 +BEGIN + PROMPT 59 16 "" + DRIVENBY F_VALUTA + FIELD AMMVALUTA +END + +NUMBER F_VALORE_STAT 18 +BEGIN + PROMPT 2 17 "Valore statistico " + PICTURE "." + FIELD VALSTAT +END + +ENDPAGE + +ENDMASK diff --git a/in/inlib01.cpp b/in/inlib01.cpp new file mode 100755 index 000000000..64e8e81b2 --- /dev/null +++ b/in/inlib01.cpp @@ -0,0 +1,339 @@ +#include +#include +#include +#include +#include +#include + +#include "inlib01.h" +#include "in0500a.h" + +/////////////////////////////////////////////////////////// +// TIntra_mask +// Maschera generica con dati utili a tutte quelle intra +/////////////////////////////////////////////////////////// + +void TIntra_mask::on_firm_change() +{ + if (is_running()) + TAutomask::on_firm_change(); + long firm = prefix().get_codditta(); + const TRectype& ditta = cache().get(LF_NDITTE, firm); + _freq_ces = ditta.get_char("FREQCES"); + _freq_acq = ditta.get_char("FREQACQ"); + if (_freq_ces <= ' ') _freq_ces = 'T'; + if (_freq_acq <= ' ') _freq_acq = 'T'; +} + +short TIntra_mask::type_field() const +{ + NFCHECK("Non e' stato specificato il campo del tipo"); + return DLG_NULL; +} + +short TIntra_mask::period_field() const +{ return DLG_NULL; } + +char TIntra_mask::tipo() const +{ + short id = type_field(); + char t = get(id)[0]; + return t; +} + +char TIntra_mask::frequenza() const +{ + const char t = tipo(); + return (t == 'A' || t == 'B') ? _freq_acq : _freq_ces; +} + +int TIntra_mask::periodo() const +{ + const short id = period_field(); + int pe = 1; + 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; + } + } + else + NFCHECK("Non e' stato specificato il campo del periodo"); + return pe; +} + +bool TIntra_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) +{ + if (jolly == 0 && o.dlg() == type_field()) + { + if (e == fe_modify || e == fe_init) + { + const short id = period_field(); + if (id != DLG_NULL) + { + const char freq = frequenza(); + show(id+0, freq == 'M'); + show(id+1, freq == 'T'); + show(id+2, freq == 'A'); + } + } + } + return TRUE; +} + +TIntra_mask::TIntra_mask(const char* name) +: TAutomask(name) +{ + on_firm_change(); +} + +/////////////////////////////////////////////////////////// +// TDati_riepilogo +/////////////////////////////////////////////////////////// + +class TDati_riepilogo : public TSortable +{ + TString _key; + TCurrency _ammlire, _ammvaluta; + real _valstat, _massakg, _massaums; + +protected: + virtual TObject* dup() const { return new TDati_riepilogo(*this); } + virtual int compare(const TSortable& s) const; + +public: + TDati_riepilogo& operator +=(const TDati_riepilogo& r); + void write(TRectype& rec) const; + + TDati_riepilogo(const TDati_riepilogo& r); + TDati_riepilogo(const TString& key, const TRectype& rec, const TString& codval); + virtual ~TDati_riepilogo() { } +}; + +int TDati_riepilogo::compare(const TSortable& s) const +{ + const TDati_riepilogo& r = (const TDati_riepilogo&)s; + return _key.compare(r._key); +} + +TDati_riepilogo& TDati_riepilogo::operator +=(const TDati_riepilogo& r) +{ + _ammlire += r._ammlire; + _ammvaluta += r._ammvaluta; + _valstat += r._valstat; + _massakg += r._massakg; + _massaums += r._massaums; + return *this; +} + +void TDati_riepilogo::write(TRectype& rec) const +{ + 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) +: _key(r._key), _valstat(r._valstat), + _ammlire(r._ammlire), _ammvaluta(r._ammvaluta), + _massakg(r._massakg), _massaums(r._massaums) +{ } + +TDati_riepilogo::TDati_riepilogo(const TString& key, + const TRectype& rec, + const TString& codval) +: _key(key), _ammlire(rec.get_real("AMMLIRE"), "_FIRM"), + _ammvaluta(rec.get_real("AMMVALUTA"), codval), + _valstat(rec.get_real("VALSTAT")), + _massakg(rec.get_real("MASSAKG")), + _massaums(rec.get_real("MASSAUMS")) +{ } + + +/////////////////////////////////////////////////////////// +// TRiepiloghi +/////////////////////////////////////////////////////////// + +class TRiepiloghi : public TObject +{ + TPointer_array _arr; + TAssoc_array _ass; + +public: + void add(const TRectype& rec, const TRectype& mov); + + int items() const { return _arr.items(); } + int sort() { _arr.sort(); return items(); } + + const TDati_riepilogo& operator[](int r) const + { return (const TDati_riepilogo&)_arr[r]; } +}; + +void TRiepiloghi::add(const TRectype& rec, const TRectype& mov) +{ + TString16 cod; + cod << mov.get_char("TIPOCF") << '|' << mov.get_long("CODCF"); + const TRectype& clifo = cache().get(LF_CLIFO, cod); + + cod = mov.get("CODVAL"); + + TToken_string key; + key.add(clifo.get("STATOPAIV")); + key.add(clifo.get("PAIV")); + 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("TRASPORTO")); + key.add(rec.get("PAESE")); + key.add(rec.get("PAESEORIG")); + key.add(rec.get("PROV")); + + TDati_riepilogo* data = (TDati_riepilogo*)_ass.objptr(key); + if (data == NULL) + { + data = new TDati_riepilogo(key, rec, cod); + _ass.add(key, data); + _arr.add(data); + } + else + { + const TDati_riepilogo dr(key, rec, cod); + *data += dr; + } +} + +/////////////////////////////////////////////////////////// +// TGenerazione_mask +/////////////////////////////////////////////////////////// + +class TGenerazione_mask : public TIntra_mask +{ + TRiepiloghi _riep; + +protected: + virtual short type_field() const { return R_TIPO; } + virtual short period_field() const { return R_PERIODO_M; } + +public: + bool genera_riepiloghi(); + + TGenerazione_mask(); + virtual ~TGenerazione_mask() { } +}; + +bool TGenerazione_mask::genera_riepiloghi() +{ + const char tipo = get(R_TIPO)[0]; + const int anno = get_int(R_ANNO); + const int peri = periodo(); + int da_mese, a_mese; + switch (frequenza()) + { + case 'T': + da_mese = (peri-1) * 3 + 1; + a_mese = da_mese+2; + break; + case 'A': + da_mese = 1; a_mese = 12; + break; + default: + da_mese = a_mese = peri; + break; + } + + const TDate da_data(1, da_mese, anno); + const TDate a_data(TDate::last_day(a_mese, anno), a_mese, anno); + + TRectype filter_da(LF_INTRA), filter_a(LF_INTRA); + filter_da.put("DATAREG", da_data); + filter_a.put("DATAREG", a_data); + + TRelation rel(LF_INTRA); + rel.add(LF_RINTRA, "NUMREG==NUMREG"); + + TString filter; filter << "TIPOMOV==\"" << tipo << '"'; + TCursor cur(&rel, filter, 2, &filter_da, &filter_a); + const long items = cur.items(); + if (items > 0) + { + TProgind pi(items, "Lettura movimenti intra...", TRUE, TRUE); + cur.freeze(); + for (cur = 0; cur.pos() < items; ++cur) + { + pi.addstatus(1); + if (pi.iscancelled()) + return warning_box("Operazione annullata"); + bool rowok = rel.is_first_match(LF_RINTRA); + while (rowok) + { + _riep.add(rel.curr(LF_RINTRA), rel.curr()); + rowok = rel.next_match(LF_RINTRA); + } + } + } + else + return warning_box("Non ci sono movimenti nel periodo specificato"); + + const int riepiloghi = _riep.sort(); + if (riepiloghi > 0) + { + TProgind pi(riepiloghi, "Scrittura riepiloghi intra...", FALSE, TRUE); + TLocalisamfile riep(LF_RIEPRETT); + riep.put("TIPO", tipo); + riep.put("ANNO", anno); + riep.put("PERIODO", peri); + riep.put("NUMRIG", 1); + int err = riep.read(); + for (int r = 0; r < riepiloghi; r++) + { + pi.addstatus(1); + riep.put("TIPO", tipo); + riep.put("ANNO", anno); + riep.put("PERIODO", peri); + riep.put("NUMRIG", r+1); + _riep[r].write(riep.curr()); + + const int werr = err == NOERR ? riep.rewrite() : riep.write(); + if (werr != NOERR) + return error_box("Errore %d durante la scrittura dei riepiloghi", werr); + + if (err == NOERR) + { + err = riep.next(); + if (err == NOERR && riep.get_long("NUMRIG") == 1) + err = _iseof; + } + } + while (err == NOERR) + { + riep.remove(); + err = riep.next(); + if (err == NOERR && riep.get_long("NUMRIG") == 1) + err = _iseof; + } + } + + return TRUE; +} + +TGenerazione_mask::TGenerazione_mask() + : TIntra_mask("in0500b") +{ } + +/////////////////////////////////////////////////////////// +// Generazione riepiloghi +/////////////////////////////////////////////////////////// + +void genera_riepiloghi() +{ + TGenerazione_mask m; + if (m.run() == K_ENTER) + m.genera_riepiloghi(); +} diff --git a/in/inlib01.h b/in/inlib01.h new file mode 100755 index 000000000..2d33b8567 --- /dev/null +++ b/in/inlib01.h @@ -0,0 +1,30 @@ +#ifndef __INLIB01_H +#define __INLIB01_H + +#ifndef __AUTOMASK_H +#include +#endif + +class TIntra_mask : public TAutomask +{ + char _freq_ces, _freq_acq; + +protected: + virtual void on_firm_change(); + virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); + + virtual short type_field() const; + virtual short period_field() const; + +public: + char tipo() const; + char frequenza() const; + int periodo() const; + + TIntra_mask(const char* name); + virtual ~TIntra_mask() { } +}; + +void genera_riepiloghi(); + +#endif