Patch level : 2.2 no patch
Files correlati : ci1.exe Ricompilazione Demo : [ ] Commento : Aggiunto modulo dt git-svn-id: svn://10.65.10.50/trunk@13191 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
34790437ba
commit
d8cfba9e4f
16
dt/dt0.cpp
Executable file
16
dt/dt0.cpp
Executable file
@ -0,0 +1,16 @@
|
||||
#include <xvt.h>
|
||||
|
||||
#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;
|
||||
}
|
8
dt/dt0.h
Executable file
8
dt/dt0.h
Executable file
@ -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
|
163
dt/dt0100.cpp
Executable file
163
dt/dt0100.cpp
Executable file
@ -0,0 +1,163 @@
|
||||
// gestione tabelle DiTech
|
||||
#include <automask.h>
|
||||
#include <modaut.h>
|
||||
#include <tabapp.h>
|
||||
|
||||
#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;
|
||||
}
|
||||
|
33
dt/dt0300.cpp
Executable file
33
dt/dt0300.cpp
Executable file
@ -0,0 +1,33 @@
|
||||
#include <confapp.h>
|
||||
|
||||
#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;
|
||||
}
|
8
dt/dt0300a.h
Executable file
8
dt/dt0300a.h
Executable file
@ -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
|
97
dt/dt0300a.uml
Executable file
97
dt/dt0300a.uml
Executable file
@ -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
|
354
dt/dt0400.cpp
Executable file
354
dt/dt0400.cpp
Executable file
@ -0,0 +1,354 @@
|
||||
#include <applicat.h>
|
||||
#include <automask.h>
|
||||
#include <config.h>
|
||||
#include <execp.h>
|
||||
#include <filetext.h>
|
||||
#include <progind.h>
|
||||
#include <printer.h>
|
||||
#include <recarray.h>
|
||||
#include <strings.h>
|
||||
#include <utility.h>
|
||||
|
||||
#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;
|
||||
}
|
||||
|
3
dt/dt0400a.h
Executable file
3
dt/dt0400a.h
Executable file
@ -0,0 +1,3 @@
|
||||
// campi della maschera principale
|
||||
|
||||
#define F_PERCORSO 101
|
326
dt/dt0400a.ini
Executable file
326
dt/dt0400a.ini
Executable file
@ -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
|
||||
|
33
dt/dt0400a.uml
Executable file
33
dt/dt0400a.uml
Executable file
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user