Patch level : 4.0 680

Files correlati     : cg7.exe cg7300a.msk sispac.ini
Ricompilazione Demo : [ ]
Commento            : Aggiunto programma di invio a Sispac per Ruffo


git-svn-id: svn://10.65.10.50/trunk@14649 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
cris 2006-12-15 12:14:13 +00:00
parent eb4d370510
commit ce1bbc86a2
6 changed files with 1389 additions and 0 deletions

View File

@ -9,6 +9,7 @@ int main(int argc, char** argv)
{
case 1: cg7100(argc,argv); break; // Invio ad altra procedura (zucchetti)
case 2: cg7200(argc,argv); break; // Invio ad altra procedura (proforma)
case 3: cg7300(argc,argv); break; // Invio ad altra procedura (Sispac/Cosmo)
default: cg7100(argc,argv); break;
}
exit(0);

View File

@ -3,6 +3,7 @@
int cg7100(int argc, char** argv);
int cg7200(int argc, char** argv);
int cg7300(int argc, char** argv);
#endif // __CG7_H

474
cg/cg7300.cpp Executable file
View File

@ -0,0 +1,474 @@
#include <applicat.h>
#include <assoc.h>
#include <automask.h>
#include <currency.h>
#include <filetext.h>
#include <msksheet.h>
#include <printer.h>
#include <recarray.h>
#include <relation.h>
#include <sort.h>
#include <utility.h>
#include "cg7.h"
#include "cg7300a.h"
#include <clifo.h>
#include <mov.h>
#include <rmov.h>
#include <rmoviva.h>
#define ALIAS_REG 100
class TInvioS_file: public TFile_text
{
protected:
virtual void validate(TCursor& cur,TRecord_text &rec, TToken_string &val, TString& str);
public:
TInvioS_file(const TString& file_name);
virtual ~TInvioS_file() { }
};
TInvioS_file::TInvioS_file(const TString& file_name)
: TFile_text(file_name, "sispac.ini")
{
}
class TInvioS_mask : public TAutomask
{
protected:
bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
TInvioS_mask();
virtual ~TInvioS_mask(){};
};
TInvioS_mask::TInvioS_mask() :TAutomask ("cg7300a")
{
}
bool TInvioS_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
switch (o.dlg())
{
case F_CODDITTA:
if (e==fe_init && o.empty())
{
set(F_CODDITTA, main_app().get_firm());
((TEdit_field&) o).check();
disable(F_CODDITTA);
}
break;
default:
break;
}
return TRUE;
}
class TInvioS : public TSkeleton_application
{
TCursor* _cur;
TInvioS_mask* _msk;
TInvioS_file* _trasfile;
long _nrecords, _nrecsfattvend, _nrecsfattacqu, _nrecsmocontab;
int _nfiles;
long _nrecsdettaglio;
TString16 _descrdettaglio;
TDate _dataini, _datafin;
bool _totale, _finemov;
protected:
virtual bool create(void);
virtual bool destroy(void);
virtual void main_loop() ;
void invio_sispac();
long i_sispac_clifor(const bool invio = TRUE);
long i_sispac_movcont(const bool invio = TRUE);
long i_sispac_moviva(const char acqven, const bool invio = TRUE);
public:
int get_nfiles() {return _nfiles;};
long get_nrecords() {return _nrecords;};
long get_nrecsdettaglio() {return _nrecsdettaglio;};
TString16& get_descrdettaglio() {return _descrdettaglio;};
const bool totale() {return _totale;};
const bool finemov() {return _finemov;};
TInvioS() {} ;
virtual ~TInvioS() {} ;
};
// restituisce un riferimento all' applicazione
inline TInvioS& app() { return (TInvioS&) main_app();}
// gestione dei messaggi estesi nei campi
void TInvioS_file::validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TString& str)
{
const TString code(s.get(0));
TString valore;
if (code == "_FISSO")
{
// gestione dei campi fissi per i record delle riba
// sintassi: _FISSO,!<valore>
// dove: <valore> è la stringa fissa da emettere
TString in(s.get());
CHECK(in[0]=='!',"Macro _FISSO senza carattere '!'");
in.ltrim(1);
in.trim();
valore = in;
}
else if (code == "_ANNO")
{
TDate data(str);
int anno = data.year();
valore.format("%ld", anno);
}
else if (code == "_MESE")
{
TDate data(str);
int mese = data.month();
valore.format("%ld", mese);
}
else if (code == "_SEZIONE")
{
valore = str;
const char sezione = s.get()[0];
const char sezriga = cur.curr(LF_RMOV).get_char(RMV_SEZIONE);
if (sezione != sezriga)
valore = "";
}
else if (code == "_CAUSALE")
{
TFilename configname = "cg7300a.ini";
TConfig configfile(configname);
TToken_string causali = configfile.get("STANDARD", "CAUSALI");
const char sezione = cur.curr(LF_RMOV).get_char(RMV_SEZIONE);
if (sezione == 'D')
valore = causali.get(0);
else
valore = causali.get(1);
}
else if (code == "_NUMFILES")
{
const int nfiles = app().get_nfiles();
valore.format("%ld", nfiles);
}
else if (code == "_NUMRECORDS")
{
const long nrecords = app().get_nrecords();
valore.format("%ld", nrecords);
}
else if (code == "_NUMRECORDSDETTAGLIO")
{
const long nrecords = app().get_nrecsdettaglio();
valore.format("%ld", nrecords);
}
else if (code == "_TIPOFILE")
{
valore = app().get_descrdettaglio();
}
else if (code == "_OPZIONI")
{
TString in(s.get());
TFilename configname = "cg7300a.ini";
TConfig configfile(configname);
valore = configfile.get(in, "OPZIONI");
}
else if (code == "_OGGI")
{
TDate data(TODAY);
valore = data.string(full, '-', full, full, amg_date);
valore.strip("-");
}
else if (code == "_CODIFICA")
{
const char tipocf = str[0];
if (tipocf == 'C')
valore = "P";
else
valore = "R";
}
else if (code == "_NUMDOC")
{
if (cur.file("REG").get("I0") == 1)
valore = cur.curr().get(MOV_NUMDOC);
else
valore = cur.curr().get(MOV_PROTIVA);
}
else if (code == "_SEGNO")
{
TString archivio(s.get());
TString campo(s.get());
const real importo = cur.curr(archivio).get_real(campo);
valore = "+";
if (importo < 0)
valore = "-";
}
else if (code == "_IMPORTO")
{
real importo(str);
valore = importo.string(0,2);
valore.strip("-");
valore.strip("+");
valore.strip(".");
}
else if (code == "_TIPODOC")
{
const char tipodoc = str[0];
valore = (tipodoc == 'F') ? "1" : "2";
}
else if (code == "_DIVERSI")
{
valore = (app().finemov() ? "X" : " ");
}
else if (code == "_TOTALE")
{
real importo(ZERO);
if (app().totale())
{
importo = cur.curr(LF_MOV).get_real(MOV_TOTDOC);
importo+=cur.curr(LF_MOV).get_real(MOV_RITFIS);
}
valore = importo.string(11,2);
valore.strip("-");
valore.strip("+");
valore.strip(".");
}
else if (code == "_SEGNOTOTALE")
{
real importo(ZERO);
if (app().totale())
{
importo = cur.curr(LF_MOV).get_real(MOV_TOTDOC);
importo+=cur.curr(LF_MOV).get_real(MOV_RITFIS);
}
valore = importo.string(11,2);
valore.trim();
valore = valore.sub(0,1);
if (valore[0] != '-' && valore[0] != '+')
valore = "+";
}
else if (code == "_INDIR")
{
valore = cur.curr(LF_CLIFO).get(CLI_INDCF);
valore << ' ' << cur.curr(LF_CLIFO).get(CLI_CIVCF);
valore.cut(40);
}
else if (code == "_GIUFIS")
{
const char tipopers = cur.curr(LF_CLIFO).get_char(CLI_TIPOPERS);
valore = (tipopers == 'F') ? "S" : "N";
}
else if (code == "_CONTO")
{
int gruppo = cur.curr(LF_CLIFO).get_int(CLI_GRUPPO);
int conto = cur.curr(LF_CLIFO).get_int(CLI_CONTO);
long codice = cur.curr(LF_CLIFO).get_int(CLI_CODCF);
valore.format("%03d%03d%06ld", gruppo, conto, codice);
}
else if (code == "_BLACKLIST")
{
const bool sospeso = cur.curr(LF_CLIFO).get_bool(CLI_SOSPESO);
valore = (sospeso == true) ? "S" : " ";
}
else NFCHECK("Macro non definita: %s", (const char *)code);
str = valore;
}
long TInvioS::i_sispac_movcont(const bool invio)
{
TRectype da(LF_MOV);
TRectype a(LF_MOV);
da.put(MOV_DATAREG, _dataini);
a.put(MOV_DATAREG, _datafin);
TRelation rel(LF_MOV);
rel.add(LF_RMOV, "NUMREG==NUMREG", 1);
//TCursor cur(&rel, "23->PROTIVA == \"\"", 2, &da, &a);
TCursor cur(&rel, "", 2, &da, &a);
const long cur_items = cur.items();
if (cur_items != 0)
{
cur.freeze();
TRectype& cur_rec = cur.curr();
for (cur = 0; cur.pos() < cur_items; ++(cur))
{
const long numreg = cur.curr().get_long(MOV_NUMREG);
bool continua = TRUE;
while (continua)
{
const long numregrig = cur.curr(LF_RMOV).get_long(RMV_NUMREG);
if (numreg == numregrig)
{
if (invio)
{
TRectype& cur_rec_righe = cur.curr(LF_RMOV);
TRecord_text recrighe;
recrighe.set_type("R");
cur.save_status();
_finemov = !(cur.next_match(LF_RMOV, "NUMREG"));
cur.restore_status();
_trasfile->autoload(recrighe, cur);
_trasfile->write(recrighe);
}
}
continua = cur.next_match(LF_RMOV, "NUMREG");
}
}
}
return 0;
}
long TInvioS::i_sispac_moviva(const char acqven, const bool invio)
{
TRectype da(LF_MOV);
TRectype a(LF_MOV);
da.put(MOV_DATAREG, _dataini);
a.put(MOV_DATAREG, _datafin);
TRelation rel(LF_MOV);
rel.add(LF_RMOVIVA, "NUMREG==NUMREG", 1);
rel.add("REG", "CODTAB[1,4]==ANNOIVA|CODTAB[5,7]==REG", 1);
//TString filtro = "(23->PROTIVA != \"\") && ";
//if (acqven == 'V')
// filtro << "(REG->I0 == 1)";
//else
// filtro << "(REG->I0 == 2)";
TCursor cur(&rel, "", 2, &da, &a);
//cur.setfilter(filtro, TRUE);
const long cur_items = cur.items();
if (cur_items != 0)
{
cur.freeze();
TRectype& cur_rec = cur.curr();
for (cur = 0; cur.pos() < cur_items; ++(cur))
{
const long numreg = cur.curr().get_long(MOV_NUMREG);
bool continua = TRUE;
while (continua)
{
const long numregrig = cur.curr(LF_RMOVIVA).get_long(RMI_NUMREG);
if (numreg == numregrig)
{
if (invio)
{
TRectype& cur_rec_righe = cur.curr(LF_RMOVIVA);
TRecord_text recrighe;
recrighe.set_type("31");
cur.save_status();
_totale = !(cur.next_match(LF_RMOVIVA, "NUMREG"));
cur.restore_status();
_trasfile->autoload(recrighe, cur);
_trasfile->write(recrighe);
}
}
continua = cur.next_match(LF_RMOVIVA, "NUMREG");
}
}
}
return 0;
}
long TInvioS::i_sispac_clifor(const bool invio)
{
TRelation rel(LF_CLIFO);
TCursor cur(&rel);
const long cur_items = cur.items();
if (cur_items != 0 && invio)
{
cur.freeze();
TRectype& cur_rec = cur.curr();
for (cur = 0; cur.pos() < cur_items; ++(cur))
{
TRecord_text rec;
const char tipocf = cur.curr().get_char(CLI_TIPOCF);
rec.set_type("C");
_trasfile->autoload(rec, cur);
_trasfile->write(rec);
rec.set_type("11");
_trasfile->autoload(rec, cur);
_trasfile->write(rec);
}
}
return cur_items+cur_items;
}
//metodone globale che chiama, come un menu, i vari sottometodi in base alle scelte sulla maschera
void TInvioS::invio_sispac()
{
//prende i parametri dal file di configurazione dell'applicazione
TFilename configname = "cg7300a.ini";
TConfig configfile(configname);
//prepara il file su cui scrivere, ovvero il _trasfile
TFilename filename = _msk->get(F_DESTINAZIONE);
filename.add(configfile.get("NOMEFILE", "OPZIONI"));
if (fexist(filename))
remove(filename);
_trasfile = new TInvioS_file(filename);
_trasfile->open(filename,'w');
if (_msk->get_bool(F_CLIFOR))
i_sispac_clifor();
if (_msk->get_bool(F_MOVCONT))
i_sispac_movcont();
if (_msk->get_bool(F_MOVIVA))
{
i_sispac_moviva('V');
i_sispac_moviva('A');
}
_trasfile->close();
delete _trasfile;
_trasfile = NULL;
}
bool TInvioS::create()
{
_msk = new TInvioS_mask();
_trasfile = NULL;
return TSkeleton_application::create();
}
bool TInvioS::destroy()
{
if (_trasfile)
delete _trasfile;
delete _msk;
return TSkeleton_application::destroy();
}
void TInvioS::main_loop()
{
TFilename configname = "cg7300a.ini";
configname.custom_path();
TConfig configfile(configname);
_msk->set(F_NUMEROINVIO, configfile.get_int("NUMEROINVIO","OPZIONI")+1);
_msk->set(F_DATAINI, configfile.get("DATA","OPZIONI"));
_msk->set(F_DESTINAZIONE, configfile.get("PERCORSO","OPZIONI"));
while (_msk->run() != K_QUIT)
{
_totale = false;
_finemov = false;
configfile.set("NUMEROINVIO", _msk->get(F_NUMEROINVIO),"OPZIONI");
configfile.set("DATA", _msk->get_date(F_DATAFIN),"OPZIONI");
configfile.set("PERCORSO", _msk->get(F_DESTINAZIONE),"OPZIONI");
configfile.set_paragraph("CAUSALI");
_dataini = _msk->get_date(F_DATAINI);
_datafin = _msk->get_date(F_DATAFIN);
const char tipoinvio = _msk->get(F_TIPOINVIO)[0];
if (tipoinvio == 'Z')
invio_sispac();
}
}
int cg7300(int argc, char **argv)
{
TInvioS a;
a.run(argc, argv, "Invio dati contabilità Sispac/Cosmo");
return 0;
}

18
cg/cg7300a.h Executable file
View File

@ -0,0 +1,18 @@
// invio dati ad altra procedura
#define F_CODDITTA 101
#define F_RAGSOC 102
#define F_CAUSALI 110
#define F_CONTI 111
#define F_CLIFOR 112
#define F_MOVCONT 113
#define F_MOVIVA 114
#define F_CORRISP 115
#define F_SALDACONTO 116
#define F_TIPOINVIO 120
#define F_DESTINAZIONE 121
#define F_NUMEROINVIO 122
#define F_DATAINI 123
#define F_DATAFIN 124
#define F_RIPRISTINA 125
#define F_DATARIPRISTINO 126

121
cg/cg7300a.uml Executable file
View File

@ -0,0 +1,121 @@
#include "cg7100a.h"
PAGE "Invio dati contabilita'" -1 -1 78 20
GROUPBOX DLG_NULL 76 3
BEGIN
PROMPT 2 1 "@bDitta corrente"
END
NUMBER F_CODDITTA 5
BEGIN
PROMPT 3 2 "Codice "
FLAGS "FD"
USE LF_NDITTE
INPUT CODDITTA F_CODDITTA
OUTPUT F_RAGSOC RAGSOC
CHECKTYPE REQUIRED
END
STRING F_RAGSOC 50
BEGIN
PROMPT 23 2 ""
FLAGS "D"
END
GROUPBOX DLG_NULL 76 6
BEGIN
PROMPT 2 4 "Dati da inviare"
END
BOOLEAN F_CAUSALI
BEGIN
PROMPT 3 5 "Causali"
FLAGS "D"
END
BOOLEAN F_CONTI
BEGIN
PROMPT 3 6 "Conti"
END
BOOLEAN F_CLIFOR
BEGIN
PROMPT 3 7 "Clienti/Fornitori"
END
BOOLEAN F_MOVCONT
BEGIN
PROMPT 3 8 "Movimenti contabili"
MESSAGE TRUE,ENABLE F_DATAFIN
END
BOOLEAN F_MOVIVA
BEGIN
PROMPT 40 5 "Movimenti IVA"
MESSAGE TRUE,ENABLE F_DATAFIN
END
BOOLEAN F_CORRISP
BEGIN
PROMPT 40 6 "Corrispettivi"
MESSAGE TRUE,ENABLE F_DATAFIN
END
BOOLEAN F_SALDACONTO
BEGIN
PROMPT 40 7 "Saldaconto"
FLAGS "D"
END
LISTBOX F_TIPOINVIO 20
BEGIN
PROMPT 2 10 "Invio a "
ITEM "S|Sispac/Cosmo"
END
STRING F_DESTINAZIONE 20
BEGIN
PROMPT 2 11 "Destinazione "
END
NUMBER F_NUMEROINVIO 2
BEGIN
PROMPT 2 12 "Numero invio "
END
DATE F_DATAINI
BEGIN
PROMPT 20 12 "Data iniz. "
END
DATE F_DATAFIN
BEGIN
PROMPT 44 12 "Data fin. "
END
BUTTON F_RIPRISTINA 20
BEGIN
PROMPT 2 14 "Annulla invio"
MESSAGE SHOW,F_DATARIPRISTINO|ENABLE,F_DATARIPRISTINO
END
DATE F_DATARIPRISTINO
BEGIN
PROMPT 25 14 "Annulla invio fino al "
FLAGS "HD"
END
BUTTON DLG_OK 9 2
BEGIN
PROMPT -12 -1 ""
END
BUTTON DLG_QUIT 9 2
BEGIN
PROMPT -22 -1 ""
END
ENDPAGE
ENDMASK

774
cg/sispac.ini Executable file
View File

@ -0,0 +1,774 @@
[MAIN]
DECSEP = ,
FIELDSEP =
RECORDSEP =
RECORDSIZE =
SKIPLINES = 0
TYPEFIELD = -1
TYPELEN = -1
TYPEPOS = -1
[TYPE STRINGA]
ALIGN = L
DATA = S
DECIMAL = 0
FILLER = ' '
LENGTH = 0
PICTURE =
[TYPE NUMERO]
ALIGN = R
DATA = N
DECIMAL = 0
FILLER = '0'
PICTURE =
[TYPE DATA]
ALIGN =
DATA = D
DECIMAL = 0
FILLER = '0'
LENGTH = 10
PICTURE = 1444
[TYPE IMPORTO]
ALIGN = R
DATA = N
DECIMAL = 2
FILLER = '0'
LENGTH = 14
PICTURE = @@@@@@@@@,@@
[RECORD R]
NAME(0) = ID MOVIMENTO
TYPE(0) = NUMERO
LENGTH(0) = 10
FIELD(0) = 23->NUMREG
NAME(1) = DATA REGISTRAZIONE
TYPE(1) = DATA
LENGTH(1) = 10
FIELD(1) = 23->DATAREG
NAME(2) = DATA COMPETENZA BILANCIO
TYPE(2) = DATA
LENGTH(2) = 10
FIELD(2) = 23->DATACOMP
NAME(3) = DATA COMPETENZA LIQUIDAZIONE IVA
TYPE(3) = DATA
LENGTH(3) = 10
NAME(4) = DATA DOCUMENTO
TYPE(4) = DATA
LENGTH(4) = 10
FIELD(4) = 23->DATADOC
NAME(5) = NUMERO DOC
TYPE(5) = STRINGA
LENGTH(5) = 10
FIELD(5) = 23->NUMDOC
NAME(6) = CAUSALE
TYPE(6) = STRINGA
LENGTH(6) = 4
FIELD(6) = 23->CAUS
NAME(7) = DESCRIZIONE
TYPE(7) = STRINGA
LENGTH(7) = 40
FIELD(7) = 23->DESCR[1,40]
NAME(8) = PROVVISORIO
TYPE(8) = STRINGA
LENGTH(8) = 1
FIELD(8) = 23->PROVVIS
NAME(9) = REGISTRO IVA
TYPE(9) = STRINGA
LENGTH(9) = 2
FIELD(9) = 23->REG
NAME(10) = PROTOCOLLO IVA
TYPE(10) = STRINGA
LENGTH(10) = 10
FIELD(10) = 23->PROTIVA
NAME(11) = CONTO
TYPE(11) = STRINGA
LENGTH(11) = 12
FIELD(11) = _CONTOMOV
NAME(12) = CONTO COMPETENZA
TYPE(12) = STRINGA
LENGTH(12) = 12
NAME(13) = CODICE CLI/FOR
TYPE(13) = STRINGA
LENGTH(13) = 6
FIELD(13) = _CLIENTE
NAME(14) = DESCRIZIONE RIGA
TYPE(14) = STRINGA
LENGTH(14) = 40
FIELD(14) = DESCR[1,40]
NAME(15) = IMPORTO RIGA
TYPE(15) = IMPORTO
MESSAGE(15) = _IMPORTO
NAME(16) = IMPONIBILE
TYPE(16) = IMPORTO
NAME(17) = CODICE IVA
TYPE(17) = STRINGA
LENGTH(17) = 3
NAME(18) = IMPORTO IVA
TYPE(18) = IMPORTO
NAME(19) = INDETRAIBILITA
TYPE(19) = NUMERO
NAME(20) = IMPORTO DIVISA
TYPE(20) = IMPORTO
NAME(21) = DIVISA
TYPE(21) = STRINGA
LENGTH(21) = 3
FIELD(21) = 23->CODVAL
NAME(22) = CAMBIO
TYPE(22) = IMPORTO
FIELD(22) = 23->CAMBIO
NAME(23) = CODICE PARTITA
TYPE(23) = STRINGA
LENGTH(23) = 10
NAME(24) = ANNO PARTITA
TYPE(24) = NUMERO
LENGTH(24) = 4
NAME(25) = DATA INIZIO COMP
TYPE(25) = DATA
NAME(26) = DATA FINE COMP
TYPE(26) = DATA
NAME(27) = CODICE ALIQUOTE FORFETARIE
TYPE(27) = STRINGA
LENGTH(27) = 1
NAME(28) = TIPO RIGA
TYPE(28) = STRINGA
LENGTH(28) = 1
MESSAGE(28) = _TIPORIGA
NAME(29) = CAUSALE RIGA CONTABILE
TYPE(29) = STRINGA
LENGTH(29) = 2
NAME(30) = REGISTRO IVA VENDITE
TYPE(30) = STRINGA
LENGTH(30) = 2
FIELD(30) = 23->CODCAUS
NAME(31) = PROTOCOLLO IVA VENDITE
TYPE(31) = STRINGA
LENGTH(31) = 10
FIELD(31) = 23->PROTIVA
NAME(32) = CODICE SCADENZA DI RIFERIMENTO
TYPE(32) = NUMERO
NAME(33) = TITOLARE PIVA
TYPE(33) = STRINGA
LENGTH(33) = 1
FIELD(33) = _TITOLARE
[RECORD I]
NAME(0) = ID MOVIMENTO
TYPE(0) = NUMERO
LENGTH(0) = 10
FIELD(0) = 23->NUMREG
NAME(1) = DATA REGISTRAZIONE
TYPE(1) = DATA
LENGTH(1) = 10
FIELD(1) = 23->DATAREG
NAME(2) = DATA COMPETENZA BILANCIO
TYPE(2) = DATA
LENGTH(2) = 10
FIELD(2) = 23->DATACOMP
NAME(3) = DATA COMPETENZA LIQUIDAZIONE IVA
TYPE(3) = DATA
LENGTH(3) = 10
NAME(4) = DATA DOCUMENTO
TYPE(4) = DATA
LENGTH(4) = 10
FIELD(4) = 23->DATADOC
NAME(5) = NUMERO DOC
TYPE(5) = STRINGA
LENGTH(5) = 10
FIELD(5) = 23->NUMDOC
NAME(6) = CAUSALE
TYPE(6) = STRINGA
LENGTH(6) = 4
FIELD(6) = 23->CAUS
NAME(7) = DESCRIZIONE
TYPE(7) = STRINGA
LENGTH(7) = 40
FIELD(7) = 23->DESCR[1,40]
NAME(8) = PROVVISORIO
TYPE(8) = STRINGA
LENGTH(8) = 1
FIELD(8) = 23->PROVVIS
NAME(9) = REGISTRO IVA
TYPE(9) = STRINGA
LENGTH(9) = 2
FIELD(9) = 23->REG
NAME(10) = PROTOCOLLO IVA
TYPE(10) = STRINGA
LENGTH(10) = 10
FIELD(10) = 23->PROTIVA
NAME(11) = CONTO
TYPE(11) = STRINGA
LENGTH(11) = 12
FIELD(11) = _CONTOMOV
NAME(12) = CONTO COMPETENZA
TYPE(12) = STRINGA
LENGTH(12) = 12
NAME(13) = CODICE CLI/FOR
TYPE(13) = STRINGA
LENGTH(13) = 6
FIELD(13) = _CLIENTE
NAME(14) = DESCRIZIONE RIGA
TYPE(14) = STRINGA
LENGTH(14) = 40
FIELD(14) = DESCR[1,40]
NAME(15) = IMPORTO RIGA
TYPE(15) = IMPORTO
MESSAGE(15) = _IMPORTORIGAIVA
NAME(16) = IMPONIBILE
TYPE(16) = IMPORTO
MESSAGE(16) = IMPONIBILE
NAME(17) = CODICE IVA
TYPE(17) = STRINGA
LENGTH(17) = 3
FIELD(17) = CODIVA
NAME(18) = IMPORTO IVA
TYPE(18) = IMPORTO
FIELD(18) = IMPOSTA
NAME(19) = INDETRAIBILITA
TYPE(19) = NUMERO
MESSAGE(19) = _TIPODET
NAME(20) = IMPORTO DIVISA
TYPE(20) = IMPORTO
NAME(21) = DIVISA
TYPE(21) = STRINGA
LENGTH(21) = 3
FIELD(21) = 23->CODVAL
NAME(22) = CAMBIO
TYPE(22) = IMPORTO
FIELD(22) = 23->CAMBIO
NAME(23) = CODICE PARTITA
TYPE(23) = STRINGA
LENGTH(23) = 10
NAME(24) = ANNO PARTITA
TYPE(24) = NUMERO
LENGTH(24) = 4
NAME(25) = DATA INIZIO COMP
TYPE(25) = DATA
NAME(26) = DATA FINE COMP
TYPE(26) = DATA
NAME(27) = CODICE ALIQUOTE FORFETARIE
TYPE(27) = STRINGA
LENGTH(27) = 1
NAME(28) = TIPO RIGA
TYPE(28) = STRINGA
LENGTH(28) = 1
MESSAGE(28) = _FISSO,I
NAME(29) = CAUSALE RIGA CONTABILE
TYPE(29) = STRINGA
LENGTH(29) = 2
NAME(30) = REGISTRO IVA VENDITE
TYPE(30) = STRINGA
LENGTH(30) = 2
FIELD(30) = 23->CODCAUS
NAME(31) = PROTOCOLLO IVA VENDITE
TYPE(31) = STRINGA
LENGTH(31) = 10
FIELD(31) = 23->PROTIVA
NAME(32) = CODICE SCADENZA DI RIFERIMENTO
TYPE(32) = NUMERO
NAME(33) = TITOLARE PIVA
TYPE(33) = STRINGA
LENGTH(33) = 1
FIELD(33) = _TITOLARE
[RECORD C]
NAME(0) = CODICE UNIVOCO CLIENTE
TYPE(0) = STRINGA
LENGTH(0) = 6
FIELD(0) = 20->CODCF
NAME(1) = RAGIONE SOCIALE
TYPE(1) = STRINGA
LENGTH(1) = 40
FIELD(1) = 20->RAGSOC[1,40]
NAME(2) = RAGIONE SOCIALE 2
TYPE(2) = STRINGA
LENGTH(2) = 40
FIELD(2) = 20->RAGSOC[41,10]
NAME(3) = INDIRIZZO
TYPE(3) = STRINGA
LENGTH(3) = 40
MESSAGE(3) = _INDIR
NAME(4) = CITTA
TYPE(4) = STRINGA
LENGTH(4) = 30
FIELD(4) = 13->DENCOM[1,30]
NAME(5) = CAP
TYPE(5) = STRINGA
LENGTH(5) = 9
FIELD(5) = 20->CAPCF
NAME(6) = PROVINCIA
TYPE(6) = STRINGA
LENGTH(6) = 2
FIELD(6) = 13->PROVCOM
NAME(7) = REGIONE
TYPE(7) = STRINGA
LENGTH(7) = 3
FIELD(7) = 13->CODREG
NAME(8) = NAZIONE
TYPE(8) = STRINGA
LENGTH(8) = 3
FIELD(8) = 13->STATO
NAME(9) = INDIRIZZO E-MAIL
TYPE(9) = STRINGA
LENGTH(9) = 40
FIELD(9) = 20->MAIL
NAME(10) = PREFISSO INTERNAZIONALE TELEFONO 1
TYPE(10) = STRINGA
LENGTH(10) = 5
NAME(11) = PREFISSO NAZIONALE TELEFONO 1
TYPE(11) = STRINGA
LENGTH(11) = 5
FIELD(11) = 20->PTEL
NAME(12) = NUMERO TELEFONO 1
TYPE(12) = STRINGA
LENGTH(12) = 10
FIELD(12) = 20->TEL
NAME(13) = PREFISSO INTERNAZIONALE TELEFONO 2
TYPE(13) = STRINGA
LENGTH(13) = 5
NAME(14) = PREFISSO NAZIONALE TELEFONO 2
TYPE(14) = STRINGA
LENGTH(14) = 5
FIELD(14) = 20->PTEL2
NAME(15) = NUMERO TELEFONO 2
TYPE(15) = STRINGA
LENGTH(15) = 10
FIELD(15) = 20->TEL2
NAME(16) = PREFISSO INTERNAZIONALE FAX
TYPE(16) = STRINGA
LENGTH(16) = 5
NAME(17) = PREFISSO NAZIONALE TELEFONO FAX
TYPE(17) = STRINGA
LENGTH(17) = 5
FIELD(17) = 20->PFAX
NAME(18) = NUMERO TELEFONO FAX
TYPE(18) = STRINGA
LENGTH(18) = 10
FIELD(18) = 20->FAX
NAME(19) = PERSONA DA CONTATTARE
TYPE(19) = STRINGA
LENGTH(19) = 30
FIELD(19) = 20->REFERENTE[1,30]
NAME(20) = CHIAVE DI RICERCA
TYPE(20) = STRINGA
LENGTH(20) = 40
FIELD(20) = 20->RICALT
NAME(21) = NOTE
TYPE(21) = STRINGA
LENGTH(21) = 80
NAME(22) = PERSONA FISICA S/N
TYPE(22) = STRINGA
LENGTH(22) = 1
MESSAGE(22) = _GIUFIS
NAME(23) = SESSO M/F
TYPE(23) = STRINGA
LENGTH(23) = 1
FIELD(23) = 8->SESSO
NAME(24) = DATA DI NASCITA
TYPE(24) = DATA
LENGTH(24) = 10
FIELD(24)= 8->DATANASC
NAME(25) = CITTA DI NASCITA
TYPE(25) = STRINGA
LENGTH(25) = 30
FIELD(25) = 8->COMNASC
NAME(26) = DENOMINAZIONE (COGNOME)
TYPE(26) = STRINGA
LENGTH(26) = 25
FIELD(26) = 6->RAGSOC[1,25]
NAME(27) = NOME
TYPE(27) = STRINGA
LENGTH(27) = 25
FIELD(27) = 6->RAGSOC[26,25]
NAME(28) = INDIRIZZO SEDE LEGALE
TYPE(28) = STRINGA
LENGTH(28) = 40
FIELD(28) = 20->INDCF
NAME(29) = CITTA SEDE LEGALE
TYPE(29) = STRINGA
LENGTH(29) = 30
FIELD(29) = 13->DENCOM[1,40]
NAME(30) = CAP SEDE LEGALE
TYPE(30) = STRINGA
LENGTH(30) = 9
FIELD(30) = 20->CAPCF
NAME(31) = PROVINCIA SEDE LEGALE
TYPE(31) = STRINGA
LENGTH(31) = 2
FIELD(31) = 13->PROVCOM
NAME(32) = REGIONE SEDE LEGALE
TYPE(32) = STRINGA
LENGTH(32) = 3
FIELD(32) = 13->CODREG
NAME(33) = CODICE ISO PIVA
TYPE(33) = STRINGA
LENGTH(33) = 2
FIELD(33) = 20->STATOPAIV
NAME(34) = PARTITA IVA
TYPE(34) = STRINGA
LENGTH(34) = 12
FIELD(34) = 20->PAIV
NAME(35) = CODICE FISCALE
TYPE(35) = STRINGA
LENGTH(35) = 16
FIELD(35) = 20->COFI
NAME(36) = CODICE FISCALE ESTERO
TYPE(36) = STRINGA
LENGTH(36) = 16
NAME(37) = CONTO
TYPE(37) = STRINGA
LENGTH(37) = 12
MESSAGE(37) = _CONTO
NAME(38) = CONTO CONTROPARTITA PER FATTURA
TYPE(38) = STRINGA
LENGTH(38) = 12
NAME(39) = CONTO CONTROPARTITA PER PAGAMENTI
TYPE(39) = STRINGA
LENGTH(39) = 12
NAME(40) = CODICE IVA CONTROPARTITA
TYPE(40) = STRINGA
LENGTH(40) = 3
NAME(41) = CODICE DIVISA CONTROPARTITA
TYPE(41) = STRINGA
LENGTH(41) = 3
NAME(42) = BLOCCATO
TYPE(42) = STRINGA
LENGTH(42) = 1
NAME(43) = DATA INIZIO RAPPORTO
TYPE(43) = DATA
LENGTH(43) = 10
NAME(44) = TIPO PAGAMENTO
TYPE(44) = STRINGA
LENGTH(44) = 1
MESSAGE(44) = _TIPOPAG
NAME(45) = TITOLARE PIVA S/N
TYPE(45) = STRINGA
LENGTH(45) = 1
MESSAGE(45) -TITOLARE
[RECORD F]
NAME(0) = CODICE UNIVOCO FORNITORE
TYPE(0) = STRINGA
LENGTH(0) = 6
FIELD(0) = 20->CODCF
NAME(1) = RAGIONE SOCIALE
TYPE(1) = STRINGA
LENGTH(1) = 40
FIELD(1) = 20->RAGSOC[1,40]
NAME(2) = RAGIONE SOCIALE 2
TYPE(2) = STRINGA
LENGTH(2) = 40
FIELD(2) = 20->RAGSOC[41,10]
NAME(3) = INDIRIZZO
TYPE(3) = STRINGA
LENGTH(3) = 40
MESSAGE(3) = _INDIR
NAME(4) = CITTA
TYPE(4) = STRINGA
LENGTH(4) = 30
FIELD(4) = 13->DENCOM[1,40]
NAME(5) = CAP
TYPE(5) = STRINGA
LENGTH(5) = 9
FIELD(5)=20->CAPCF
NAME(6) = PROVINCIA
TYPE(6) = STRINGA
LENGTH(6) = 2
FIELD(6) = 13->PROVCOM
NAME(7) = REGIONE
TYPE(7) = STRINGA
LENGTH(7) = 3
FIELD(7) = 13->CODREG
NAME(8) = NAZIONE
TYPE(8) = STRINGA
LENGTH(8) = 3
FIELD(8) = 13->STATO
NAME(9) = INDIRIZZO E-MAIL
TYPE(9) = STRINGA
LENGTH(9) = 40
FIELD(9) = 20->MAIL
NAME(10) = PREFISSO INTERNAZIONALE TELEFONO 1
TYPE(10) = STRINGA
LENGTH(10) = 5
NAME(11) = PREFISSO NAZIONALE TELEFONO 1
TYPE(11) = STRINGA
LENGTH(11) = 5
FIELD(11) = 20->PTEL
NAME(12) = NUMERO TELEFONO 1
TYPE(12) = STRINGA
LENGTH(12) = 10
FIELD(12) = 20->TEL
NAME(13) = PREFISSO INTERNAZIONALE TELEFONO 2
TYPE(13) = STRINGA
LENGTH(13) = 5
NAME(14) = PREFISSO NAZIONALE TELEFONO 2
TYPE(14) = STRINGA
LENGTH(14) = 5
FIELD(14) = 20->PTEL2
NAME(15) = NUMERO TELEFONO 2
TYPE(15) = STRINGA
LENGTH(15) = 10
FIELD(15) = 20->TEL2
NAME(16) = PREFISSO INTERNAZIONALE FAX
TYPE(16) = STRINGA
LENGTH(16) = 5
NAME(17) = PREFISSO NAZIONALE TELEFONO FAX
TYPE(17) = STRINGA
LENGTH(17) = 5
FIELD(17) = 20->PFAX
NAME(18) = NUMERO TELEFONO FAX
TYPE(18) = STRINGA
LENGTH(18) = 10
FIELD(18) = 20->FAX
NAME(19) = PERSONA DA CONTATTARE
TYPE(19) = STRINGA
LENGTH(19) = 30
FIELD(19) = 20->REFERENTE[1,30]
NAME(20) = CHIAVE DI RICERCA
TYPE(20) = STRINGA
LENGTH(20) = 40
NAME(21) = NOTE
TYPE(21) = STRINGA
LENGTH(21) = 80
NAME(22) = PERSONA FISICA S/N
TYPE(22) = STRINGA
LENGTH(22) = 1
NAME(23) = SESSO M/F
TYPE(23) = STRINGA
LENGTH(23) = 1
NAME(24) = DATA DI NASCITA
TYPE(24) = DATA
LENGTH(24) = 10
NAME(25) = CITTA DI NASCITA
TYPE(25) = STRINGA
LENGTH(25) = 30
NAME(26) = DENOMINAZIONE (COGNOME)
TYPE(26) = STRINGA
LENGTH(26) = 25
NAME(27) = NOME
TYPE(27) = STRINGA
LENGTH(27) = 25
NAME(28) = INDIRIZZO SEDE LEGALE
TYPE(28) = STRINGA
LENGTH(28) = 40
FIELD(28) = 20->INDCF
NAME(29) = CITTA SEDE LEGALE
TYPE(29) = STRINGA
LENGTH(29) = 30
FIELD(29) = 13->DENCOM[1,40]
NAME(30) = CAP SEDE LEGALE
TYPE(30) = STRINGA
LENGTH(30) = 9
FIELD(30)=20->CAPCF
NAME(31) = PROVINCIA SEDE LEGALE
TYPE(31) = STRINGA
LENGTH(31) = 2
FIELD(31) = 13->PROVCOM
NAME(32) = REGIONE SEDE LEGALE
TYPE(32) = STRINGA
LENGTH(32) = 3
FIELD(32) = 13->CODREG
NAME(33) = CODICE ISO PIVA
TYPE(33) = STRINGA
LENGTH(33) = 2
NAME(34) = PARTITA IVA
TYPE(34) = STRINGA
LENGTH(34) = 12
FIELD(34)=20->PAIV
NAME(35) = CODICE FISCALE
TYPE(35) = STRINGA
LENGTH(35) = 16
FIELD(35) = 20->COFI
NAME(36) = CODICE FISCALE ESTERO
TYPE(36) = STRINGA
LENGTH(36) = 16
NAME(37) = CONTO
TYPE(37) = STRINGA
LENGTH(37) = 12
NAME(38) = CONTO CONTROPARTITA PER PAGAMENTI
TYPE(38) = STRINGA
LENGTH(38) = 12
NAME(39) = CONTO CONTROPARTITA PER FATTURA
TYPE(39) = STRINGA
LENGTH(39) = 12
NAME(40) = CODICE IVA CONTROPARTITA
TYPE(40) = STRINGA
LENGTH(40) = 3
NAME(41) = CODICE DIVISA CONTROPARTITA
TYPE(41) = STRINGA
LENGTH(41) = 3
NAME(42) = GESTIONE ENASARCO
TYPE(42) = STRINGA
LENGTH(42) = 1
NAME(43) = DATA INIZIO RAPPORTO
TYPE(43) = DATA
LENGTH(43) = 10
NAME(44) = BLOCCATO
TYPE(44) = STRINGA
LENGTH(44) = 1
NAME(45) = TIPO PAGAMENTO
TYPE(45) = STRINGA
LENGTH(45) = 1