diff --git a/dt/dt0.cpp b/dt/dt0.cpp new file mode 100755 index 000000000..c95929255 --- /dev/null +++ b/dt/dt0.cpp @@ -0,0 +1,16 @@ +#include + +#include "dt0.h" + +int main(int argc, char** argv) +{ + const int r = (argc > 1) ? argv[1][1] - '0' : 0; + switch (r) + { + case 2: dt0300(argc,argv); break; // parametri configurazione dt + case 3: dt0400(argc,argv); break; // importazione documenti + //default: dt0100(argc,argv); break; // gestione tabelle + } + exit(0); + return 0; +} diff --git a/dt/dt0.h b/dt/dt0.h new file mode 100755 index 000000000..379c0ef6c --- /dev/null +++ b/dt/dt0.h @@ -0,0 +1,8 @@ +#ifndef __DT0_H +#define __DT0_H + +int dt0100(int argc, char* argv[]); +int dt0300(int argc, char* argv[]); +int dt0400(int argc, char* argv[]); + +#endif // __DT0_H diff --git a/dt/dt0100.cpp b/dt/dt0100.cpp new file mode 100755 index 000000000..c304022d5 --- /dev/null +++ b/dt/dt0100.cpp @@ -0,0 +1,163 @@ +// gestione tabelle DiTech +#include +#include +#include + +#include "calib01.h" +#include "calibmsk.h" + +//////////////////////////////////////////////////////////////////////// +//MASCHERA GENERICA DI TABELLA NON GERARCHICA +//////////////////////////////////////////////////////////////////////// +// maschere delle tabelle di Contabilita' Analitica +class TMask_tabca : public TAutomask +{ + +protected: + bool on_field_event(TOperable_field& o, TField_event e, long jolly); +public: + TMask_tabca(const char * ,const TString16 &); + virtual ~TMask_tabca(); +}; + +TMask_tabca::TMask_tabca(const char * _maskname,const TString16 &tabname): + TAutomask(_maskname) +{ +} + +TMask_tabca::~TMask_tabca() +{ +} + +bool TMask_tabca::on_field_event(TOperable_field& o, TField_event e, long jolly) +{ +/* switch (o.dlg()) + { + + default: break; + }*/ + return true; +} + + +//////////////////////////////////////////////////////////////////////// +//MASCHERA GENERICA DI TABELLA GERARCHICA (attualmente usata per tutte le tabelle catbxxx) +//////////////////////////////////////////////////////////////////////// +class TMask_tabanal : public TSimple_anal_msk +{ + const char* _codtab; + const char* _keyvar; + const char* _desvar; + +protected: + virtual int get_logicnum() const { return LF_TAB; } + virtual const char* get_tabname() const {return _codtab; } + virtual const char* get_key_var() const { return _keyvar; } + virtual const char* get_des_var() const { return _desvar; } + virtual short get_field_id(int n, int k) const; + +public: + TMask_tabanal(const char* c, const char* k, const char* d); +}; + +short TMask_tabanal::get_field_id(int n, int k) const +{ + const int tot = fieldrefs(1); + short id = 0; + if (n >= 0 && n < tot) + { + if (k == 2) + id = F_DES1+n; + else + id = F_KEY1+n; + } + return id; +} + + +TMask_tabanal::TMask_tabanal(const char* c, const char* k, const char* d) + : _codtab(c),_keyvar(k),_desvar(d) +{ + TString16 maskname; + maskname << "catb" << c; + read(maskname); +} + +//////////////////////////////////////////////////////////////////////// +//APPLICAZIONE +//////////////////////////////////////////////////////////////////////// + +// applicazione per la gestione delle tabelle di Contabilita' Analitica +class Tab_app_ca : public Tab_application +{ + virtual const char * extra_modules() const {return "cm";} //funziona anche con autorizzazione CM + +protected: // TRelation_application + virtual bool user_destroy() ; + virtual bool user_create() ; + virtual int rewrite(const TMask& m); + + virtual TMask * set_mask(TMask * _m=NULL); + +public: + Tab_app_ca(); + virtual ~Tab_app_ca() {} +}; + +HIDDEN inline Tab_app_ca& app() { return (Tab_app_ca&)main_app(); } + +// costruttore +Tab_app_ca::Tab_app_ca() {} + + +// alloca/cambia la maschera dell'applicazione +TMask * Tab_app_ca::set_mask(TMask * _m) +{ + if (_m != NULL) + return Tab_application::set_mask(_m); + else + { + const TFixed_string tabname(get_tabname()); + TString maskname; + TMask * m = NULL; + if (tabname == "CDC") + m = new TMask_tabanal("CDC", "CdC", "CdCDes"); else + if (tabname == "CMS") + m = new TMask_tabanal("CMS", "Cms", "CmsDes"); else + if (tabname == "FSC") + m = new TMask_tabanal("FSC", "Fsc", "FscDes"); + else + m = new TMask_tabca((const char *)get_mask_name(maskname),tabname); + return Tab_application::set_mask(m); + } +} + +bool Tab_app_ca::user_create() +{ + bool ok = Tab_application::user_create(); + + if (ok) + { + TMask& mask = *set_mask(); + } + + return ok; +} + +bool Tab_app_ca::user_destroy() +{ + return Tab_application::user_destroy(); +} + +int Tab_app_ca::rewrite(const TMask& m) +{ + return Tab_application::rewrite(m); +} + +int ca0100(int argc, char* argv[]) +{ + Tab_app_ca a; + a.run(argc, argv, TR("Tabella")); + return 0; +} + diff --git a/dt/dt0300.cpp b/dt/dt0300.cpp new file mode 100755 index 000000000..38e75ad74 --- /dev/null +++ b/dt/dt0300.cpp @@ -0,0 +1,33 @@ +#include + +#include "dt0300a.h" + +class TConf_dt : public TConfig_application +{ +public: + virtual bool user_create( ); + virtual bool user_destroy( ); + + TConf_dt() : TConfig_application( CONFIG_DITTA ){ } + virtual ~TConf_dt( ){ } +}; + +bool TConf_dt::user_create( ) +{ + TConfig conf(CONFIG_DITTA ); + conf.set( "EdMask", "dt0300a", "dt" ); + return TRUE; +} + +bool TConf_dt::user_destroy( ) +{ + return TRUE; +} + +int dt0300(int argc, char* argv[]) +{ + TConf_dt app; + + app.run(argc, argv, TR("Parametri")); + return 0; +} diff --git a/dt/dt0300a.h b/dt/dt0300a.h new file mode 100755 index 000000000..66c951daa --- /dev/null +++ b/dt/dt0300a.h @@ -0,0 +1,8 @@ +// definizione campi maschera dt0300a - configurazione modulo DTECH +#define F_SHEETCONFIG 101 + +#define F_S_CAUS 101 +#define F_S_TIPODOCDT 102 +#define F_S_CODNUM 103 +#define F_S_TIPODOC 104 +#define F_S_STATO 105 diff --git a/dt/dt0300a.uml b/dt/dt0300a.uml new file mode 100755 index 000000000..1d9975eec --- /dev/null +++ b/dt/dt0300a.uml @@ -0,0 +1,97 @@ +#include "dt0300a.h" + +TOOLBAR "" 0 -2 0 2 + +BUTTON DLG_OK 10 2 +BEGIN + PROMPT -12 -11 "" +END + +BUTTON DLG_QUIT 10 2 +BEGIN + PROMPT -22 -11 "" +END + +ENDPAGE + + +PAGE "Configurazione modulo" -1 -1 60 21 + +SPREADSHEET F_SHEETCONFIG +BEGIN + PROMPT 1 2 "" + ITEM "Causale" + ITEM "Tipo doc. DT" + ITEM "Cod. num." + ITEM "Tipo doc." + ITEM "Stato" +END + +ENDPAGE + +ENDMASK + +PAGE "" -1 -1 75 10 + +STRING F_S_CAUS 4 +BEGIN + PROMPT 1 1 "Causale " + FLAGS "U" + CHECKTYPE NORMAL +END + +STRING F_S_TIPODOCDT 4 +BEGIN + PROMPT 1 2 "Tipo doc. DT " + FLAGS "U" + CHECKTYPE NORMAL +END + +STRING F_S_CODNUM 4 +BEGIN + PROMPT 1 4 "Codice numerazione " + FLAGS "U" + USE %NUM + INPUT CODTAB F_S_CODNUM + DISPLAY "Cod. Num." CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_S_CODNUM CODTAB + CHECKTYPE NORMAL +END + +STRING F_S_TIPODOC 4 +BEGIN + PROMPT 1 5 "Tipo documento " + FLAGS "UB" + USE %TIP + INPUT CODTAB F_S_TIPODOC + DISPLAY "Cod. Num." CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_S_TIPODOC CODTAB + CHECKTYPE NORMAL +END + +STRING F_S_STATO 1 +BEGIN + PROMPT 1 6 "Stato " + USE %STD + INPUT CODTAB F_S_STATO + DISPLAY "Stato" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT F_S_STATO CODTAB + CHECKTYPE NORMAL +END + +BUTTON DLG_OK 10 2 +BEGIN + PROMPT -12 -1 "" +END + +BUTTON DLG_QUIT 10 2 +BEGIN + PROMPT -22 -1 "" +END + +ENDPAGE + +ENDMASK diff --git a/dt/dt0400.cpp b/dt/dt0400.cpp new file mode 100755 index 000000000..eaa6b05f7 --- /dev/null +++ b/dt/dt0400.cpp @@ -0,0 +1,354 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "dt0.h" +#include "dt0400a.h" + +#include "clifo.h" +#include "comuni.h" + +// TAutomask + +class TDT2Doc_mask : public TAutomask +{ +protected: + bool on_field_event(TOperable_field& o, TField_event e, long jolly); +public: + TDT2Doc_mask(); + virtual ~TDT2Doc_mask(){}; +}; + +TDT2Doc_mask::TDT2Doc_mask() :TAutomask ("dt0400a") +{ +} + +bool TDT2Doc_mask::on_field_event(TOperable_field& f, TField_event e, long jolly) +{ + return TRUE; +} + +// TFile_text + +class TDT2Doc_file: public TFile_text +{ +protected: + virtual void validate(TCursor& cur,TRecord_text &rec, TToken_string &val, TString& str); + +public: + TDT2Doc_file(const TString& file_name); + virtual ~TDT2Doc_file() { } +}; + +TDT2Doc_file::TDT2Doc_file(const TString& file_name) + : TFile_text(file_name, "dt0400a.ini") +{ +} + +void TDT2Doc_file::validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TString& str) +{ + const TString code(s.get(0)); + TString valore = str; + if (code == "_UPPERCASE") + { + valore.upper(); + } + else NFCHECK("Macro non definita: %s", (const char *)code); + str = valore; +} + +// TSkeleton_application + +class TDT2Doc : public TSkeleton_application +{ + TDT2Doc_mask* _msk; + TDT2Doc_file* _trasfile; + TLocalisamfile* _clienti; + TConfig* _configfile; + TRelation* _rel; + TCursor* _cur; + TProgind* _prog; + TAssoc_array* _array_clienti; + +public: + bool print_header(); + void print_line(const TString& rigastampa = ""); + void print_footer(); + virtual bool create(); + virtual bool destroy(); + virtual void main_loop(); + bool import_clienti(); + bool import_documenti(); + const long get_nextcodcf(); + TDT2Doc() {} +}; + +TDT2Doc& app() { return (TDT2Doc&) main_app(); } + +bool TDT2Doc::print_header() +{ + if (printer().open()) + { + TDate oggi(TODAY); + TPrintrow row; + TString256 rigastampa; + rigastampa = "IMPORTAZIONE DOCUMENTI"; + rigastampa.center_just(80); + row.put(rigastampa); + row.put("@>", 1); + row.put("Pag. @#", 65); + printer().setheaderline(2, row); + rigastampa = ""; + rigastampa.fill('-',80); + row.reset(); + row.put(rigastampa); + printer().setheaderline(3, row); + return TRUE; + } + else + return error_box("Errore in apertura stampante."); +} + +void TDT2Doc::print_line(const TString& rigastampa) +{ + TPrintrow row; + row.reset(); + if (rigastampa.not_empty()) + { + row.put((const char*) rigastampa); + printer().print(row); + } +} + +void TDT2Doc::print_footer() +{ + printer().formfeed(); + printer().close(); +} + + +bool TDT2Doc::create() +{ + open_files(LF_CLIFO, 0); + TFilename configname = "dt0400.ini"; + configname.custom_path(); + _configfile = new TConfig(configname); + _msk = new TDT2Doc_mask(); + _clienti = new TLocalisamfile(LF_CLIFO); + _array_clienti = new TAssoc_array(); + return TSkeleton_application::create(); +} + +bool TDT2Doc::destroy() +{ + delete _array_clienti; + delete _clienti; + delete _msk; + delete _configfile; + return TApplication::destroy(); +} + +void TDT2Doc::main_loop() +{ + KEY tasto; + _msk->set(F_PERCORSO, _configfile->get("PERCORSO", "OPZIONI")); + tasto = _msk->run(); + if (tasto == K_ENTER) + { + if (print_header()) + { + _trasfile = new TDT2Doc_file(_msk->get(F_PERCORSO)); + import_clienti(); + import_documenti(); + _configfile->set("PERCORSO", _msk->get(F_PERCORSO), "OPZIONI"); + delete _trasfile; + message_box(TR("Importazione documenti completata")); + print_footer(); + } + else + error_box("Errore in apertura stampante."); + } +} + +const long TDT2Doc::get_nextcodcf() +{ + TLocalisamfile& clifo = *_clienti; + long codcf = 1L ; + if (!clifo.empty()) + { + clifo.zero() ; + clifo.setkey(1) ; + clifo.put(CLI_TIPOCF, 'F'); + clifo.read(_isgteq) ; + if (clifo.good()) + clifo.prev() ; + clifo.setstatus(NOERR); + } + else clifo.last(); + if (clifo.good()) + { + const TFixed_string tipocf(clifo.get(CLI_TIPOCF)); + if ( tipocf == "C") + { + codcf = clifo.get_long(CLI_CODCF); + if (codcf == 999999) + clifo.prev(); + codcf = clifo.get_long(CLI_CODCF)+1; + } + } + return codcf; +} + +bool TDT2Doc::import_documenti() +{ + // eliminazione files delle elaborazioni precedenti + TString_array transactions; + list_files("ditet*.ini", transactions); + FOR_EACH_ARRAY_ROW(transactions, row, name) + remove(*name); + // lettura file + _trasfile->open('r'); + const long dimension = fsize(_msk->get(F_PERCORSO)); + TProgind pi(dimension,"Importazione in corso..."); + TConfig *docum=NULL; + TString80 stampa; + int err = NOERR; + int ntransac=0; + TRecord_text curr; + while (_trasfile->read(curr) == NOERR && !pi.iscancelled() && err == NOERR) + { + pi.setstatus(_trasfile->read_file()->tellg()); + if (curr.type() == "01") + { + ntransac++; + docum = new TConfig(format("ditet%03d.ini",ntransac)); + docum->set_paragraph("Transaction"); + docum->set("Action","INSERT"); + docum->set("Mode","AUTO"); + docum->set("Firm",firm); + docum->set_paragraph(format("%d",LF_DOC)); + docum->set("ANNO", ); + docum->set("PROVV","D"); + docum->set("CODNUM",codnum); + docum->set("TIPODOC",tipodoc); + docum->set("DATADOC",datadoc); + docum->set("TIPOCF","F"); + docum->set("CODCF",cur.relation()->lfile(LF_RMOV).get(RMV_SOTTOCONTO)); + docum->set(DOC_CODABIA,cur.relation()->lfile(LF_CLIFO).get(CLI_CODABI)); + docum->set(DOC_CODCABA,cur.relation()->lfile(LF_CLIFO).get(CLI_CODCAB)); + + + + } + _trasfile->close(); + return TRUE; + return TRUE; +} + +bool TDT2Doc::import_clienti() +{ +// cache per i comuni + TRecord_cache cache_comuni(LF_COMUNI, 2); + _trasfile->open('r'); + const long dimension = fsize(_msk->get(F_PERCORSO)); + TProgind pi(dimension,"Importazione in corso..."); + TRelation rel(LF_CLIFO); + TRectype& reccli = rel.curr(); + TLocalisamfile& clifo = rel.lfile(); + _array_clienti->destroy(); + TString80 stampa; + int err = NOERR; + TRecord_text curr; + while (_trasfile->read(curr) == NOERR && !pi.iscancelled() && err == NOERR) + { + pi.setstatus(_trasfile->read_file()->tellg()); + if (curr.type() == "06") + { + TString16 paiv = curr.get(11); + TString80 cofi = curr.get(12); + TString16 statopaiv = " "; + TString80 ragsoc = curr.get(4); + ragsoc << curr.get(5); + if (!cofi.blank()) + { + rel.lfile().setkey(4); + reccli.zero(); + reccli.put(CLI_TIPOCF, 'C'); + reccli.put(CLI_COFI, cofi); + if (reccli.read(rel.lfile())!=NOERR) + { + reccli.zero(); + const long codcf = get_nextcodcf(); + reccli.put(CLI_TIPOCF, 'C'); + reccli.put(CLI_CODCF, codcf); + reccli.put(CLI_RAGSOC, ragsoc); + err = reccli.write(rel.lfile()); + if (err != NOERR) + message_box("Errore in scrittura clienti %d", err); + } + } + else if (!paiv.blank()) + { + rel.lfile().setkey(5); + reccli.zero(); + reccli.put(CLI_TIPOCF, 'C'); + reccli.put(CLI_STATOPAIV, statopaiv); + reccli.put(CLI_PAIV, paiv); + if (reccli.read(rel.lfile())!=NOERR) + { + reccli.zero(); + const long codcf = get_nextcodcf(); + reccli.put(CLI_TIPOCF, 'C'); + reccli.put(CLI_CODCF, codcf); + reccli.put(CLI_RAGSOC, ragsoc); + err = reccli.write(rel.lfile()); + if (err != NOERR) + message_box("Errore in scrittura clienti %d", err); + } + } + _trasfile->autosave(rel, curr); + TString80 str; + // comune + TString80 dencom = curr.get(9); + dencom.trim(); + dencom.upper(); + TRectype reccom = cache_comuni.get(dencom); + str = reccom.get(COM_DENCOM); + str.trim(); + if (str == dencom) + reccli.put(CLI_COMCF, reccom.get(COM_COM)); + else + { + reccli.put(CLI_COMCF, " "); + reccli.put(CLI_LOCCF, dencom); + stampa = "Cliente "; + stampa << reccli.get(CLI_CODCF); + stampa << " - comune " << dencom << " non trovato"; + print_line(stampa); + } + rel.rewrite(); + // aggiungo il cliente all'array per ritrovarlo sui documenti + const TString16 codcli = rel.curr().get(CLI_CODCF); + const TString16 codclidt = curr.get(3); + if (!_array_clienti->is_key(codclidt)) + _array_clienti->add(codclidt, codcli); + } + } + _trasfile->close(); + return TRUE; +} + +int dt0400(int argc, char* argv[]) +{ + TDT2Doc main_app; + main_app.run(argc, argv, TR("Importazione documenti")); + return TRUE; +} + diff --git a/dt/dt0400a.h b/dt/dt0400a.h new file mode 100755 index 000000000..2256cda33 --- /dev/null +++ b/dt/dt0400a.h @@ -0,0 +1,3 @@ +// campi della maschera principale + +#define F_PERCORSO 101 diff --git a/dt/dt0400a.ini b/dt/dt0400a.ini new file mode 100755 index 000000000..e90315016 --- /dev/null +++ b/dt/dt0400a.ini @@ -0,0 +1,326 @@ +[MAIN] +RECORDSEP = \n +TYPEFIELD = 1 +TYPEPOS = 6 +TYPELEN = 2 + +[TYPE STRINGA] +DATA = S + +[TYPE DATA] +DATA = D +LENGTH=10 + +[TYPE NUMERO] +DATA = N + +[TYPE IMPORTO] +DATA = N +LENGTH=10 + +[RECORD 01] +NAME(0) = CODICE NEGOZIO +TYPE(0) = STRINGA +POSITION(0) = 0 +LENGTH(0) = 6 + +NAME(1) = TIPO RECORD +TYPE(1) = STRINGA +POSITION(1) = 6 +LENGTH(1) = 2 + +NAME(2) = TIPO DOCUMENTO +TYPE(2) = STRINGA +POSITION(2) = 8 +LENGTH(2) = 3 + +NAME(3) = NUMERO DOCUMENTO +TYPE(3) = NUMERO +POSITION(3) = 11 +LENGTH(3) = 6 + +NAME(4) = DATA DOCUMENTO +TYPE(4) = DATA +POSITION(4) = 17 +LENGTH(4) = 10 + +NAME(5) = CODICE CLIENTE +TYPE(5) = STRINGA +POSITION(5) = 27 +LENGTH(5) = 8 + +NAME(6) = CODICE PAGAMENTO +TYPE(6) = STRINGA +POSITION(6) = 35 +LENGTH(6) = 3 + +NAME(7) = CODICE DILAZIONE PAGAMENTO +TYPE(7) = STRINGA +POSITION(7) = 38 +LENGTH(7) = 2 + +NAME(8) = DATA DI ESTRAZIONE +TYPE(8) = DATA +POSITION(8) = 40 +LENGTH(8) = 10 + +NAME(9) = FLAG DI DOCUMENTO RECUPERATO +TYPE(9) = STRINGA +POSITION(9) = 50 +LENGTH(9) = 1 + +NAME(10) = CAUSALE +TYPE(10) = STRINGA +POSITION(10) = 51 +LENGTH(10) = 3 + +[RECORD 02] +NAME(0) = CODICE NEGOZIO +TYPE(0) = STRINGA +POSITION(0) = 0 +LENGTH(0) = 6 + +NAME(1) = TIPO RECORD +TYPE(1) = STRINGA +POSITION(1) = 6 +LENGTH(1) = 2 + +NAME(2) = TIPO DOCUMENTO +TYPE(2) = STRINGA +POSITION(2) = 8 +LENGTH(2) = 3 + +NAME(3) = NUMERO DOCUMENTO +TYPE(3) = NUMERO +POSITION(3) = 11 +LENGTH(3) = 6 + +NAME(4) = DATA DOCUMENTO +TYPE(4) = DATA +POSITION(4) = 17 +LENGTH(4) = 10 + +NAME(4) = ALIQUOTA IVA +TYPE(4) = STRINGA +POSITION(4) = 27 +LENGTH(4) = 4 + +NAME(5) = ARTICOLO LEGGE IVA +TYPE(5) = STRINGA +POSITION(5) = 31 +LENGTH(5) = 3 + +NAME(6) = COMMA LEGGE IVA +TYPE(6) = STRINGA +POSITION(6) = 34 +LENGTH(6) = 2 + +NAME(7) = SEGNO IMPORTO +TYPE(7) = STRINGA +POSITION(7) = 36 +LENGTH(7) = 1 + +NAME(8) = IMPONIBILE +TYPE(8) = IMPORTO +POSITION(8) = 37 +LENGTH(8) = 10 + +NAME(9) = IMPOSTA +TYPE(9) = IMPORTO +POSITION(9) = 47 +LENGTH(9) = 10 + +[RECORD 03] +NAME(0) = CODICE NEGOZIO +TYPE(0) = STRINGA +POSITION(0) = 0 +LENGTH(0) = 6 + +NAME(1) = TIPO RECORD +TYPE(1) = STRINGA +POSITION(1) = 6 +LENGTH(1) = 2 + +NAME(2) = TIPO DOCUMENTO +TYPE(2) = STRINGA +POSITION(2) = 8 +LENGTH(2) = 3 + +NAME(3) = NUMERO DOCUMENTO +TYPE(3) = NUMERO +POSITION(3) = 11 +LENGTH(3) = 6 + +NAME(4) = DATA DOCUMENTO +TYPE(4) = DATA +POSITION(4) = 17 +LENGTH(4) = 10 + +NAME(5) = TOTALE DOCUMENTO +TYPE(5) = IMPORTO +POSITION(5) = 27 +LENGTH(5) = 10 + +NAME(6) = TOTALE SCONTI +TYPE(6) = IMPORTO +POSITION(6) = 37 +LENGTH(6) = 10 + +NAME(7) = TOTALE A PAGARE +TYPE(7) = IMPORTO +POSITION(7) = 47 +LENGTH(7) = 10 + +NAME(8) = CODICE STATO PAGAMENTO +TYPE(8) = STRINGA +POSITION(8) = 57 +LENGTH(8) = 1 + +NAME(9) = TOTALE IMPORTO PAGATO +TYPE(9) = IMPORTO +POSITION(9) = 58 +LENGTH(9) = 10 + +[RECORD 04] +NAME(0) = CODICE NEGOZIO +TYPE(0) = STRINGA +POSITION(0) = 0 +LENGTH(0) = 6 + +NAME(1) = TIPO RECORD +TYPE(1) = STRINGA +POSITION(1) = 6 +LENGTH(1) = 2 + +NAME(2) = TIPO DOCUMENTO +TYPE(2) = STRINGA +POSITION(2) = 8 +LENGTH(2) = 3 + +NAME(3) = NUMERO DOCUMENTO +TYPE(3) = NUMERO +POSITION(3) = 11 +LENGTH(3) = 6 + +NAME(4) = DATA DOCUMENTO +TYPE(4) = DATA +POSITION(4) = 17 +LENGTH(4) = 10 + +NAME(5) = CAUSALE +TYPE(5) = STRINGA +POSITION(5) = 27 +LENGTH(5) = 5 + +NAME(6) = CODICE ARTICOLO +TYPE(6) = STRINGA +POSITION(6) = 32 +LENGTH(6) = 15 + +NAME(7) = DESCRIZIONE ARTICOLO +TYPE(7) = STRINGA +POSITION(7) = 47 +LENGTH(7) = 35 + +NAME(8) = QUANTITA +TYPE(8) = STRINGA +POSITION(8) = 82 +LENGTH(8) = 11 + +[RECORD 05] +NAME(0) = CODICE NEGOZIO +TYPE(0) = STRINGA +POSITION(0) = 0 +LENGTH(0) = 6 + +NAME(1) = TIPO RECORD +TYPE(1) = STRINGA +POSITION(1) = 6 +LENGTH(1) = 2 + +NAME(2) = TIPO DOCUMENTO +TYPE(2) = STRINGA +POSITION(2) = 8 +LENGTH(2) = 3 + +[RECORD 06] +NAME(0) = CODICE NEGOZIO +TYPE(0) = STRINGA +POSITION(0) = 0 +LENGTH(0) = 6 + +NAME(1) = TIPO RECORD +TYPE(1) = STRINGA +POSITION(1) = 6 +LENGTH(1) = 2 + +NAME(2) = TIPO DOCUMENTO +TYPE(2) = STRINGA +POSITION(2) = 8 +LENGTH(2) = 3 + +NAME(3) = CODICE CLIENTE +TYPE(3) = STRINGA +POSITION(3) = 11 +LENGTH(3) = 8 + +NAME(4) = RAGIONE SOCIALE 1 +TYPE(4) = STRINGA +POSITION(4) = 19 +LENGTH(4) = 30 + +NAME(5) = RAGIONE SOCIALE 2 +TYPE(5) = STRINGA +POSITION(5) = 49 +LENGTH(5) = 30 + +NAME(6) = INDIRIZZO +TYPE(6) = STRINGA +LENGTH(6) = 40 +POSITION(6) = 79 +FIELD(6) = 20->INDCF + +NAME(7) = CAP +TYPE(7) = STRINGA +LENGTH(7) = 5 +POSITION(7) = 119 +FIELD(7) = 20->CAPCF + +NAME(8) = LOCALITA +TYPE(8) = STRINGA +LENGTH(8) = 20 +POSITION(8) = 124 +FIELD(8) = 20->LOCALITACF + +NAME(9) = COMUNE +TYPE(9) = STRINGA +POSITION(9) = 144 +LENGTH(9) = 30 + +NAME(10) = PROVINCIA +TYPE(10) = STRINGA +POSITION(10) = 174 +LENGTH(10) = 2 + +NAME(11) = PARTITA IVA +TYPE(11) = STRINGA +POSITION(11) = 176 +LENGTH(11) = 11 +FIELD(11) = 20->PAIV + +NAME(12) = CODICE FISCALE +TYPE(12) = STRINGA +POSITION(12) = 187 +LENGTH(12) = 16 +FIELD(12) = 20->COFI + +NAME(13) = ESENZIONE IVA +TYPE(13) = STRINGA +POSITION(13) = 203 +LENGTH(13) = 1 + +NAME(14) = ALIQUOTA ESENZIONE IVA +TYPE(14) = STRINGA +POSITION(14) = 204 +LENGTH(14) = 4 + diff --git a/dt/dt0400a.uml b/dt/dt0400a.uml new file mode 100755 index 000000000..630c4d2a9 --- /dev/null +++ b/dt/dt0400a.uml @@ -0,0 +1,33 @@ +#include "dt0400a.h" + +TOOLBAR "" 0 20 0 2 + +BUTTON DLG_OK 10 2 +BEGIN + PROMPT -12 -1 "" +END + +BUTTON DLG_QUIT 10 2 +BEGIN + PROMPT -22 -1 "" +END + +ENDPAGE + +PAGE "Importazione documenti" 0 -1 0 19 + +STRING F_PERCORSO 50 +BEGIN +PROMPT 2 2 "File da trasferire " + CHECKTYPE REQUIRED + VALIDATE FILENAME_FUNC + FLAGS "A" + HELP "Percorso e nome file da trasferire" + WARNING "E' necessario specificare il nome del file da trasferire" +END + + +ENDPAGE + +ENDMASK +