From ce1bbc86a2d49d81b93e8d9f4b8830470e82972e Mon Sep 17 00:00:00 2001 From: cris Date: Fri, 15 Dec 2006 12:14:13 +0000 Subject: [PATCH] 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 --- cg/cg7.cpp | 1 + cg/cg7.h | 1 + cg/cg7300.cpp | 474 ++++++++++++++++++++++++++++++ cg/cg7300a.h | 18 ++ cg/cg7300a.uml | 121 ++++++++ cg/sispac.ini | 774 +++++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 1389 insertions(+) create mode 100755 cg/cg7300.cpp create mode 100755 cg/cg7300a.h create mode 100755 cg/cg7300a.uml create mode 100755 cg/sispac.ini diff --git a/cg/cg7.cpp b/cg/cg7.cpp index 1cc6ed98c..fc8e038b2 100755 --- a/cg/cg7.cpp +++ b/cg/cg7.cpp @@ -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); diff --git a/cg/cg7.h b/cg/cg7.h index c5832ac85..d7cc07ae2 100755 --- a/cg/cg7.h +++ b/cg/cg7.h @@ -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 diff --git a/cg/cg7300.cpp b/cg/cg7300.cpp new file mode 100755 index 000000000..d83ff85b9 --- /dev/null +++ b/cg/cg7300.cpp @@ -0,0 +1,474 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "cg7.h" +#include "cg7300a.h" + +#include +#include +#include +#include + +#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,! + // dove: è 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; +} + diff --git a/cg/cg7300a.h b/cg/cg7300a.h new file mode 100755 index 000000000..b6f4fd037 --- /dev/null +++ b/cg/cg7300a.h @@ -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 diff --git a/cg/cg7300a.uml b/cg/cg7300a.uml new file mode 100755 index 000000000..c65c5c78c --- /dev/null +++ b/cg/cg7300a.uml @@ -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 diff --git a/cg/sispac.ini b/cg/sispac.ini new file mode 100755 index 000000000..fe34427b5 --- /dev/null +++ b/cg/sispac.ini @@ -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 +