Patch level :05.198

Files correlati     :in0.exe
Ricompilazione Demo : [ ]
Commento            :
Creati tracciati record e relativi programmi di gestione INTRA


git-svn-id: svn://10.65.10.50/trunk@7839 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1999-02-22 15:19:07 +00:00
parent 76a80dd0e5
commit a94d2033ea
19 changed files with 1895 additions and 105 deletions

View File

@ -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|

View File

@ -1,3 +1,3 @@
134
0
$rintra|0|0|94|0|Righe movimenti intra|||
$rintra|0|0|110|0|Righe movimenti intra|||

View File

@ -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|

3
in/f135.dir Executable file
View File

@ -0,0 +1,3 @@
135
0
$rieprett|0|0|154|0|Riepiloghi e rettifiche INTRA|||

27
in/f135.trr Executable file
View File

@ -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|

View File

@ -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;

View File

@ -1 +1,4 @@
int is0500(int argc, char* argv[]);
int is0600(int argc, char* argv[]);
int is0700(int argc, char* argv[]);

View File

@ -1,24 +1,71 @@
#include <automask.h>
#include <currency.h>
#include <defmask.h>
#include <modaut.h>
#include <recarray.h>
#include <relapp.h>
#include "in0.h"
#include "in0500a.h"
#include "inlib01.h"
class TImmissione_mask : public TAutomask
#include <mov.h>
///////////////////////////////////////////////////////////
// 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;
}

View File

@ -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

View File

@ -4,18 +4,23 @@ TOOLBAR "Toolbar" 0 -3 0 3
#include <toolbar.h>
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

57
in/in0500b.uml Executable file
View File

@ -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

128
in/in0600.cpp Executable file
View File

@ -0,0 +1,128 @@
#include <recarray.h>
#include <relapp.h>
#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;
}

34
in/in0600a.h Executable file
View File

@ -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

367
in/in0600a.uml Executable file
View File

@ -0,0 +1,367 @@
#include "in0600a.h"
TOOLBAR "Toolbar" 0 -3 0 3
#include <toolbar.h>
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

109
in/in0700.cpp Executable file
View File

@ -0,0 +1,109 @@
#include <relapp.h>
#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;
}

40
in/in0700a.h Executable file
View File

@ -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

432
in/in0700a.uml Executable file
View File

@ -0,0 +1,432 @@
#include "in0700a.h"
TOOLBAR "Toolbar" 0 -3 0 3
#include <toolbar.h>
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

339
in/inlib01.cpp Executable file
View File

@ -0,0 +1,339 @@
#include <currency.h>
#include <defmask.h>
#include <prefix.h>
#include <progind.h>
#include <recarray.h>
#include <relation.h>
#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();
}

30
in/inlib01.h Executable file
View File

@ -0,0 +1,30 @@
#ifndef __INLIB01_H
#define __INLIB01_H
#ifndef __AUTOMASK_H
#include <automask.h>
#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