Patch level :2.2 179
Files correlati : Ricompilazione Demo : [ ] Commento :aggiornato modulo DT (store) git-svn-id: svn://10.65.10.50/trunk@13357 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
7b9b66bf95
commit
b3eb695ca4
@ -9,7 +9,7 @@ int main(int argc, char** argv)
|
|||||||
{
|
{
|
||||||
case 2: dt0300(argc,argv); break; // parametri configurazione dt
|
case 2: dt0300(argc,argv); break; // parametri configurazione dt
|
||||||
case 3: dt0400(argc,argv); break; // importazione documenti
|
case 3: dt0400(argc,argv); break; // importazione documenti
|
||||||
//default: dt0100(argc,argv); break; // gestione tabelle
|
case 0: dt0100(argc,argv); break; // gestione tabelle
|
||||||
}
|
}
|
||||||
exit(0);
|
exit(0);
|
||||||
return 0;
|
return 0;
|
||||||
|
135
dt/dt0100.cpp
135
dt/dt0100.cpp
@ -3,136 +3,69 @@
|
|||||||
#include <modaut.h>
|
#include <modaut.h>
|
||||||
#include <tabapp.h>
|
#include <tabapp.h>
|
||||||
|
|
||||||
#include "calib01.h"
|
class TMask_tabdt : public TAutomask
|
||||||
#include "calibmsk.h"
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
|
||||||
//MASCHERA GENERICA DI TABELLA NON GERARCHICA
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
|
||||||
// maschere delle tabelle di Contabilita' Analitica
|
|
||||||
class TMask_tabca : public TAutomask
|
|
||||||
{
|
{
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||||
public:
|
public:
|
||||||
TMask_tabca(const char * ,const TString16 &);
|
TMask_tabdt(const char* name);
|
||||||
virtual ~TMask_tabca();
|
virtual ~TMask_tabdt();
|
||||||
};
|
};
|
||||||
|
|
||||||
TMask_tabca::TMask_tabca(const char * _maskname,const TString16 &tabname):
|
TMask_tabdt::TMask_tabdt(const char* name) : TAutomask(name)
|
||||||
TAutomask(_maskname)
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
TMask_tabca::~TMask_tabca()
|
TMask_tabdt::~TMask_tabdt()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TMask_tabca::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
bool TMask_tabdt::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||||
{
|
{
|
||||||
/* switch (o.dlg())
|
|
||||||
{
|
|
||||||
|
|
||||||
default: break;
|
|
||||||
}*/
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
class Tab_app_dt : public Tab_application
|
||||||
////////////////////////////////////////////////////////////////////////
|
|
||||||
//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
|
protected: // TRelation_application
|
||||||
virtual bool user_destroy() ;
|
virtual bool user_destroy() ;
|
||||||
virtual bool user_create() ;
|
virtual bool user_create() ;
|
||||||
virtual int rewrite(const TMask& m);
|
virtual int rewrite(const TMask& m);
|
||||||
|
|
||||||
virtual TMask * set_mask(TMask * _m=NULL);
|
virtual TString& get_mask_name(TString& name) const;
|
||||||
|
virtual TMask* set_mask(TMask * m=NULL);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Tab_app_ca();
|
Tab_app_dt();
|
||||||
virtual ~Tab_app_ca() {}
|
virtual ~Tab_app_dt() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
HIDDEN inline Tab_app_ca& app() { return (Tab_app_ca&)main_app(); }
|
HIDDEN inline Tab_app_dt& app() { return (Tab_app_dt&)main_app(); }
|
||||||
|
|
||||||
// costruttore
|
// costruttore
|
||||||
Tab_app_ca::Tab_app_ca() {}
|
Tab_app_dt::Tab_app_dt() {}
|
||||||
|
|
||||||
|
TString& Tab_app_dt::get_mask_name(TString& name) const
|
||||||
// alloca/cambia la maschera dell'applicazione
|
|
||||||
TMask * Tab_app_ca::set_mask(TMask * _m)
|
|
||||||
{
|
{
|
||||||
if (_m != NULL)
|
name = get_tabname();
|
||||||
return Tab_application::set_mask(_m);
|
if (name[0] == '%')
|
||||||
else
|
name = name.mid(1);
|
||||||
{
|
name.insert("dttb", 0);
|
||||||
const TFixed_string tabname(get_tabname());
|
return name;
|
||||||
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()
|
TMask* Tab_app_dt::set_mask(TMask* m)
|
||||||
|
{
|
||||||
|
if (m == NULL)
|
||||||
|
{
|
||||||
|
TFilename name; get_mask_name(name);
|
||||||
|
m = new TMask_tabdt(name);
|
||||||
|
}
|
||||||
|
return TTable_application::set_mask(m);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Tab_app_dt::user_create()
|
||||||
{
|
{
|
||||||
bool ok = Tab_application::user_create();
|
bool ok = Tab_application::user_create();
|
||||||
|
|
||||||
@ -144,19 +77,19 @@ bool Tab_app_ca::user_create()
|
|||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Tab_app_ca::user_destroy()
|
bool Tab_app_dt::user_destroy()
|
||||||
{
|
{
|
||||||
return Tab_application::user_destroy();
|
return Tab_application::user_destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
int Tab_app_ca::rewrite(const TMask& m)
|
int Tab_app_dt::rewrite(const TMask& m)
|
||||||
{
|
{
|
||||||
return Tab_application::rewrite(m);
|
return Tab_application::rewrite(m);
|
||||||
}
|
}
|
||||||
|
|
||||||
int ca0100(int argc, char* argv[])
|
int dt0100(int argc, char* argv[])
|
||||||
{
|
{
|
||||||
Tab_app_ca a;
|
Tab_app_dt a;
|
||||||
a.run(argc, argv, TR("Tabella"));
|
a.run(argc, argv, TR("Tabella"));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
156
dt/dt0300.cpp
156
dt/dt0300.cpp
@ -1,21 +1,169 @@
|
|||||||
|
#include <automask.h>
|
||||||
#include <confapp.h>
|
#include <confapp.h>
|
||||||
|
|
||||||
#include "dt0300a.h"
|
#include "dt0300a.h"
|
||||||
|
#include "dt0300b.h"
|
||||||
|
|
||||||
class TConf_dt : public TConfig_application
|
class TConf_dt : public TConfig_application
|
||||||
{
|
{
|
||||||
|
TMask* _mask;
|
||||||
|
char _current;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual TMask* get_mask() { return _mask; }
|
||||||
|
virtual TMask* create_mask(const TFilename& f) { if (_mask == NULL) _mask = new TMask(f); return _mask;}
|
||||||
|
virtual void destroy_mask() { delete _mask; _mask = NULL; }
|
||||||
|
virtual void load_mask();
|
||||||
|
virtual void save_mask(bool tosave);
|
||||||
|
bool save_mask_doc(TMask* mask);
|
||||||
|
bool load_mask_doc(TMask* mask);
|
||||||
|
bool save_mask_ditte(TMask* mask);
|
||||||
|
bool load_mask_ditte(TMask* mask);
|
||||||
public:
|
public:
|
||||||
virtual bool user_create( );
|
virtual bool user_create( );
|
||||||
virtual bool user_destroy( );
|
virtual bool user_destroy( );
|
||||||
|
|
||||||
TConf_dt() : TConfig_application( CONFIG_DITTA ){ }
|
TConf_dt() : TConfig_application() { _mask = NULL;}
|
||||||
virtual ~TConf_dt( ){ }
|
virtual ~TConf_dt( ){ }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
bool TConf_dt::load_mask_doc(TMask* mask)
|
||||||
|
{
|
||||||
|
|
||||||
|
TConfig* config_studio = get_config();
|
||||||
|
TConfig_application::load_mask();
|
||||||
|
TToken_string workstring;
|
||||||
|
TSheet_field& sf_doc = mask->sfield(F_CONF_DOC);
|
||||||
|
sf_doc.destroy();
|
||||||
|
for (int k = 0; config_studio->exist("ConfDoc", k); k++)
|
||||||
|
{
|
||||||
|
workstring= config_studio->get("ConfDoc", NULL, k);
|
||||||
|
TToken_string& row = sf_doc.row(-1);
|
||||||
|
row.add(workstring.get(0), 0);
|
||||||
|
row.add(workstring.get(1), 1);
|
||||||
|
row.add(workstring.get(2), 2);
|
||||||
|
row.add(workstring.get(3), 3);
|
||||||
|
row.add(workstring.get(4), 4);
|
||||||
|
sf_doc.check_row(sf_doc.items()-1);
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TConf_dt::load_mask_ditte(TMask* mask)
|
||||||
|
{
|
||||||
|
|
||||||
|
TConfig* config_studio = get_config();
|
||||||
|
TConfig_application::load_mask();
|
||||||
|
TToken_string workstring;
|
||||||
|
TSheet_field& sf_ditte = mask->sfield(F_CONF_DITTE);
|
||||||
|
sf_ditte.destroy();
|
||||||
|
for (int k = 0; config_studio->exist("ConfDitte", k); k++)
|
||||||
|
{
|
||||||
|
workstring= config_studio->get("ConfDitte", NULL, k);
|
||||||
|
TToken_string& row = sf_ditte.row(-1);
|
||||||
|
row.add(workstring.get(0), 0);
|
||||||
|
row.add(workstring.get(1), 1);
|
||||||
|
row.add(workstring.get(2), 2);
|
||||||
|
row.add(workstring.get(3), 3);
|
||||||
|
sf_ditte.check_row(sf_ditte.items()-1);
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TConf_dt::load_mask()
|
||||||
|
{
|
||||||
|
TMask* mask = get_mask();
|
||||||
|
if (mask==NULL)
|
||||||
|
return;
|
||||||
|
if (_current=='1')
|
||||||
|
load_mask_doc(mask);
|
||||||
|
if (_current=='2')
|
||||||
|
load_mask_ditte(mask);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TConf_dt::save_mask_doc(TMask* mask)
|
||||||
|
{
|
||||||
|
TConfig* config_studio = get_config();
|
||||||
|
for (int k = 0; config_studio->exist("ConfDoc", k); k++)
|
||||||
|
config_studio->remove("ConfDoc", k);
|
||||||
|
TToken_string workstring;
|
||||||
|
TSheet_field& sf_doc = mask->sfield(F_CONF_DOC);
|
||||||
|
int c = 0;
|
||||||
|
FOR_EACH_SHEET_ROW(sf_doc, j, line)
|
||||||
|
{
|
||||||
|
workstring.cut(0);
|
||||||
|
workstring.add(line->get(0));
|
||||||
|
workstring.add(line->get(1));
|
||||||
|
workstring.add(line->get(2));
|
||||||
|
workstring.add(line->get(3));
|
||||||
|
workstring.add(line->get(4));
|
||||||
|
config_studio->set("ConfDoc", workstring, NULL, true, c++);
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TConf_dt::save_mask_ditte(TMask* mask)
|
||||||
|
{
|
||||||
|
TConfig* config_studio = get_config();
|
||||||
|
for (int k = 0; config_studio->exist("ConfDitte", k); k++)
|
||||||
|
config_studio->remove("ConfDitte", k);
|
||||||
|
TToken_string workstring;
|
||||||
|
TSheet_field& sf_ditte = mask->sfield(F_CONF_DITTE);
|
||||||
|
int c = 0;
|
||||||
|
FOR_EACH_SHEET_ROW(sf_ditte, j, line)
|
||||||
|
{
|
||||||
|
workstring.cut(0);
|
||||||
|
workstring.add(line->get(0));
|
||||||
|
if (!workstring.blank())
|
||||||
|
{
|
||||||
|
workstring.add(line->get(1));
|
||||||
|
workstring.add(line->get(2));
|
||||||
|
workstring.add(line->get(3));
|
||||||
|
config_studio->set("ConfDitte", workstring, NULL, true, c++);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void TConf_dt::save_mask(bool tosave)
|
||||||
|
{
|
||||||
|
TMask* mask = get_mask();
|
||||||
|
if (mask==NULL)
|
||||||
|
return;
|
||||||
|
bool ask_save = mask->dirty() && !tosave;
|
||||||
|
if (ask_save)
|
||||||
|
tosave = yesno_box("Modifiche non registrate. Salvare?");
|
||||||
|
if (tosave)
|
||||||
|
{
|
||||||
|
TConfig_application::save_mask(tosave);
|
||||||
|
if (_current == '1')
|
||||||
|
save_mask_doc(mask);
|
||||||
|
if (_current == '2')
|
||||||
|
save_mask_ditte(mask);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool TConf_dt::user_create( )
|
bool TConf_dt::user_create( )
|
||||||
{
|
{
|
||||||
TConfig conf(CONFIG_DITTA );
|
TString16 arg( argv(2) );
|
||||||
conf.set( "EdMask", "dt0300a", "dt" );
|
if( arg[ 0 ] != '-' )
|
||||||
|
fatal_box( TR( "Usage: dt0 -2 -[1|2]") );
|
||||||
|
_current = arg[1];
|
||||||
|
TConfig conf(CONFIG_STUDIO );
|
||||||
|
set_config(CONFIG_STUDIO);
|
||||||
|
switch( _current )
|
||||||
|
{
|
||||||
|
case '1':
|
||||||
|
conf.set( "EdMask", "dt0300a", "dt");
|
||||||
|
break;
|
||||||
|
case '2':
|
||||||
|
conf.set( "EdMask", "dt0300b", "dt" );
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
fatal_box( TR("Usage: dt0 -2 -[1|2]") );
|
||||||
|
return FALSE;
|
||||||
|
break;
|
||||||
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -28,6 +176,6 @@ int dt0300(int argc, char* argv[])
|
|||||||
{
|
{
|
||||||
TConf_dt app;
|
TConf_dt app;
|
||||||
|
|
||||||
app.run(argc, argv, TR("Parametri"));
|
app.run(argc, argv, TR("Configurazione modulo"));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
12
dt/dt0300a.h
12
dt/dt0300a.h
@ -1,8 +1,12 @@
|
|||||||
// definizione campi maschera dt0300a - configurazione modulo DTECH
|
// definizione campi maschera dt0300a - configurazione modulo DTECH
|
||||||
#define F_SHEETCONFIG 101
|
#define F_CONF_DOC 201 // configurazione causali/documenti
|
||||||
|
#define F_CONF_CODPAG 202 // condizione pagamento standard
|
||||||
|
#define F_CONF_NETTO 203 // contabilizzazione al netto dello sconto
|
||||||
|
|
||||||
#define F_S_CAUS 101
|
#define F_S_NEGOZIO 101
|
||||||
#define F_S_TIPODOCDT 102
|
#define F_S_CAUS 102
|
||||||
#define F_S_CODNUM 103
|
#define F_S_TIPODOCDT 103
|
||||||
#define F_S_TIPODOC 104
|
#define F_S_TIPODOC 104
|
||||||
#define F_S_STATO 105
|
#define F_S_STATO 105
|
||||||
|
#define F_S_D_TIPODOC 106
|
||||||
|
#define F_S_D_STATO 107
|
||||||
|
@ -14,82 +14,129 @@ END
|
|||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
|
|
||||||
PAGE "Configurazione modulo" -1 -1 60 21
|
PAGE "Configurazione modulo" -1 -1 60 21
|
||||||
|
|
||||||
SPREADSHEET F_SHEETCONFIG
|
TEXT DLG_NULL
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 1 "@bTabella conversione documenti"
|
||||||
|
END
|
||||||
|
|
||||||
|
SPREADSHEET F_CONF_DOC 71 8
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 2 ""
|
PROMPT 1 2 ""
|
||||||
|
ITEM "Negozio"
|
||||||
ITEM "Causale"
|
ITEM "Causale"
|
||||||
ITEM "Tipo doc. DT"
|
ITEM "Tipo doc. DT"
|
||||||
ITEM "Cod. num."
|
|
||||||
ITEM "Tipo doc."
|
ITEM "Tipo doc."
|
||||||
ITEM "Stato"
|
ITEM "Stato"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
STRING F_CONF_CODPAG 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 12 "Codice pagamento standard "
|
||||||
|
HELP "Codice di pagamento"
|
||||||
|
FIELD CondPag
|
||||||
|
FLAGS "U"
|
||||||
|
USE %CPG
|
||||||
|
INPUT CODTAB F_CONF_CODPAG
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Tipo di pagamento@50" S0
|
||||||
|
OUTPUT F_CONF_CODPAG CODTAB
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
BOOLEAN F_CONF_NETTO
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 13 "Contabilizzazione al netto sconto"
|
||||||
|
HELP "Indicare se trasferire i documenti al netto dello sconto"
|
||||||
|
FIELD ContNettoSconto
|
||||||
|
END
|
||||||
|
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
|
||||||
ENDMASK
|
ENDMASK
|
||||||
|
|
||||||
PAGE "" -1 -1 75 10
|
PAGE "" -1 -1 75 10
|
||||||
|
|
||||||
|
STRING F_S_NEGOZIO 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 1 "Negozio "
|
||||||
|
END
|
||||||
|
|
||||||
STRING F_S_CAUS 4
|
STRING F_S_CAUS 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 1 "Causale "
|
PROMPT 1 2 "Causale "
|
||||||
FLAGS "U"
|
FLAGS "U"
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_S_TIPODOCDT 4
|
LIST F_S_TIPODOCDT 25
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 2 "Tipo doc. DT "
|
PROMPT 1 3 "Tipo doc. DT "
|
||||||
FLAGS "U"
|
ITEM "A|Fattura accompagnatoria"
|
||||||
CHECKTYPE NORMAL
|
ITEM "B|Bolla/DDT"
|
||||||
END
|
ITEM "D|Fattura differita"
|
||||||
|
|
||||||
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
|
END
|
||||||
|
|
||||||
STRING F_S_TIPODOC 4
|
STRING F_S_TIPODOC 4
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 5 "Tipo documento "
|
PROMPT 1 4 "Tipo doc. "
|
||||||
FLAGS "UB"
|
FLAGS "UB"
|
||||||
USE %TIP
|
USE %TIP
|
||||||
INPUT CODTAB F_S_TIPODOC
|
INPUT CODTAB F_S_TIPODOC
|
||||||
DISPLAY "Cod. Num." CODTAB
|
DISPLAY "Cod. Num." CODTAB
|
||||||
DISPLAY "Descrizione@50" S0
|
DISPLAY "Descrizione@50" S0
|
||||||
OUTPUT F_S_TIPODOC CODTAB
|
OUTPUT F_S_TIPODOC CODTAB
|
||||||
|
OUTPUT F_S_D_TIPODOC S0
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
END
|
END
|
||||||
|
|
||||||
STRING F_S_STATO 1
|
STRING F_S_STATO 1
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 1 6 "Stato "
|
PROMPT 1 7 "Stato "
|
||||||
USE %STD
|
USE %STD
|
||||||
INPUT CODTAB F_S_STATO
|
INPUT CODTAB F_S_STATO
|
||||||
DISPLAY "Stato" CODTAB
|
DISPLAY "Stato" CODTAB
|
||||||
DISPLAY "Descrizione@50" S0
|
DISPLAY "Descrizione@50" S0
|
||||||
OUTPUT F_S_STATO CODTAB
|
OUTPUT F_S_STATO CODTAB
|
||||||
|
OUTPUT F_S_D_STATO S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_S_D_TIPODOC 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 23 6 ""
|
||||||
|
FLAGS "D"
|
||||||
|
USE %TIP
|
||||||
|
INPUT CODTAB F_S_TIPODOC
|
||||||
|
OUTPUT F_S_D_TIPODOC S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_S_D_STATO 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 23 7 ""
|
||||||
|
FLAGS "D"
|
||||||
|
USE %STD
|
||||||
|
INPUT CODTAB F_S_STATO
|
||||||
|
OUTPUT F_S_D_STATO S0
|
||||||
CHECKTYPE NORMAL
|
CHECKTYPE NORMAL
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON DLG_OK 10 2
|
BUTTON DLG_OK 10 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT -12 -1 ""
|
PROMPT -13 -1 ""
|
||||||
END
|
END
|
||||||
|
|
||||||
BUTTON DLG_QUIT 10 2
|
BUTTON DLG_DELREC 10 2
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT -22 -1 ""
|
PROMPT -23 -1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_CANCEL 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -33 -1 ""
|
||||||
END
|
END
|
||||||
|
|
||||||
ENDPAGE
|
ENDPAGE
|
||||||
|
9
dt/dt0300b.h
Executable file
9
dt/dt0300b.h
Executable file
@ -0,0 +1,9 @@
|
|||||||
|
// definizione campi maschera dt0300b - configurazione modulo DTECH
|
||||||
|
#define F_CONF_DITTE 201 // configurazione negozio/ditta
|
||||||
|
|
||||||
|
#define F_S_NEGOZIO 101
|
||||||
|
#define F_S_CODDITTA 102
|
||||||
|
#define F_S_CDC 103
|
||||||
|
#define F_S_CODNUM 104
|
||||||
|
#define F_S_RAGSOC 105
|
||||||
|
#define F_S_D_CODNUM 106
|
126
dt/dt0300b.uml
Executable file
126
dt/dt0300b.uml
Executable file
@ -0,0 +1,126 @@
|
|||||||
|
#include "dt0300b.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
|
||||||
|
|
||||||
|
TEXT DLG_NULL
|
||||||
|
BEGIN
|
||||||
|
PROMPT 2 1 "@bTabella conversione negozi"
|
||||||
|
END
|
||||||
|
|
||||||
|
SPREADSHEET F_CONF_DITTE 78 8
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 2 ""
|
||||||
|
ITEM "Negozio"
|
||||||
|
ITEM "Ditta"
|
||||||
|
ITEM "CDC"
|
||||||
|
ITEM "Cod. num."
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
ENDMASK
|
||||||
|
|
||||||
|
PAGE "" -1 -1 75 10
|
||||||
|
|
||||||
|
STRING F_S_NEGOZIO 6
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 1 "Negozio "
|
||||||
|
VALIDATE NOT_EMPTY_FUNC
|
||||||
|
END
|
||||||
|
|
||||||
|
NUMBER F_S_CODDITTA 5
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 2 "Ditta "
|
||||||
|
HELP "Codice della ditta corrispondente al negozio"
|
||||||
|
FLAGS "R"
|
||||||
|
USE LF_NDITTE KEY 1
|
||||||
|
INPUT CODDITTA F_S_CODDITTA
|
||||||
|
DISPLAY "Codice@10" CODDITTA
|
||||||
|
DISPLAY "Ragione sociale@50" RAGSOC
|
||||||
|
OUTPUT F_S_CODDITTA CODDITTA
|
||||||
|
OUTPUT F_S_RAGSOC RAGSOC
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
WARNING "Ditta assente"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_S_CDC 20
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 3 "CDC "
|
||||||
|
FLAGS "UZ"
|
||||||
|
USE CMS
|
||||||
|
INPUT CODTAB F_S_CDC
|
||||||
|
DISPLAY "Codice@20" CODTAB
|
||||||
|
DISPLAY "Descrizione@70" S0
|
||||||
|
OUTPUT F_S_CDC CODTAB
|
||||||
|
CHECKTYPE SEARCH
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_S_CODNUM 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 1 4 "Cod. num. "
|
||||||
|
FLAGS "U"
|
||||||
|
USE %NUM
|
||||||
|
INPUT CODTAB F_S_CODNUM
|
||||||
|
DISPLAY "Cod. Num." CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT F_S_CODNUM CODTAB
|
||||||
|
OUTPUT F_S_D_CODNUM S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_S_RAGSOC 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 20 2 ""
|
||||||
|
USE LF_NDITTE KEY 2
|
||||||
|
HELP "Ragione sociale ditta corrispondente"
|
||||||
|
INPUT RAGSOC F_S_RAGSOC
|
||||||
|
DISPLAY "Ragione sociale@50" RAGSOC
|
||||||
|
DISPLAY "Codice@10" CODDITTA
|
||||||
|
COPY OUTPUT F_S_CODDITTA
|
||||||
|
CHECKTYPE SEARCH
|
||||||
|
VALIDATE NOT_EMPTY_FUNC
|
||||||
|
WARNING "Inserire la ragione sociale"
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING F_S_D_CODNUM 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 23 4 ""
|
||||||
|
FLAGS "D"
|
||||||
|
USE %NUM
|
||||||
|
INPUT CODTAB F_S_CODNUM
|
||||||
|
OUTPUT F_S_D_CODNUM S0
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_OK 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -13 -1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_DELREC 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -23 -1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
BUTTON DLG_CANCEL 10 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT -33 -1 ""
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
ENDMASK
|
465
dt/dt0400.cpp
465
dt/dt0400.cpp
@ -1,6 +1,7 @@
|
|||||||
#include <applicat.h>
|
#include <applicat.h>
|
||||||
#include <automask.h>
|
#include <automask.h>
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
#include <currency.h>
|
||||||
#include <execp.h>
|
#include <execp.h>
|
||||||
#include <filetext.h>
|
#include <filetext.h>
|
||||||
#include <progind.h>
|
#include <progind.h>
|
||||||
@ -14,6 +15,10 @@
|
|||||||
|
|
||||||
#include "clifo.h"
|
#include "clifo.h"
|
||||||
#include "comuni.h"
|
#include "comuni.h"
|
||||||
|
#include "doc.h"
|
||||||
|
#include "rdoc.h"
|
||||||
|
|
||||||
|
#include "..\cg\cglib01.h"
|
||||||
|
|
||||||
// TAutomask
|
// TAutomask
|
||||||
|
|
||||||
@ -64,6 +69,31 @@ void TDT2Doc_file::validate(TCursor& cur,TRecord_text &rec, TToken_string &s, TS
|
|||||||
str = valore;
|
str = valore;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
HIDDEN bool browse_file_handler(TMask_field& f, KEY k)
|
||||||
|
{
|
||||||
|
if (k == K_F9)
|
||||||
|
{
|
||||||
|
FILE_SPEC fs; memset(&fs, 0, sizeof(FILE_SPEC));
|
||||||
|
strcpy(fs.type, "");
|
||||||
|
strcpy(fs.name, f.get());
|
||||||
|
//strcpy(fs.creator, "ba1");
|
||||||
|
xvt_fsys_get_default_dir(&fs.dir);
|
||||||
|
xvt_fsys_save_dir();
|
||||||
|
if (xvt_dm_post_file_open(&fs, TR("Selezione file")) == FL_OK)
|
||||||
|
{
|
||||||
|
TFilename n;
|
||||||
|
xvt_fsys_convert_dir_to_str(&fs.dir, n.get_buffer(n.size()), n.size());
|
||||||
|
n.add(fs.name);
|
||||||
|
f.set(n);
|
||||||
|
}
|
||||||
|
xvt_fsys_restore_dir();
|
||||||
|
f.set_focus();
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// TSkeleton_application
|
// TSkeleton_application
|
||||||
|
|
||||||
class TDT2Doc : public TSkeleton_application
|
class TDT2Doc : public TSkeleton_application
|
||||||
@ -71,35 +101,47 @@ class TDT2Doc : public TSkeleton_application
|
|||||||
TDT2Doc_mask* _msk;
|
TDT2Doc_mask* _msk;
|
||||||
TDT2Doc_file* _trasfile;
|
TDT2Doc_file* _trasfile;
|
||||||
TLocalisamfile* _clienti;
|
TLocalisamfile* _clienti;
|
||||||
TConfig* _configfile;
|
|
||||||
TRelation* _rel;
|
TRelation* _rel;
|
||||||
TCursor* _cur;
|
TCursor* _cur;
|
||||||
TProgind* _prog;
|
TProgind* _prog;
|
||||||
TAssoc_array* _array_clienti;
|
TAssoc_array* _array_clienti;
|
||||||
|
TAssoc_array* _confditte;
|
||||||
|
TAssoc_array* _confdoc;
|
||||||
|
TAssoc_array* _totalilordi;
|
||||||
|
TAssoc_array* _castelletto;
|
||||||
|
TAssoc_array* _primariga;
|
||||||
|
TString80 _cms, _condpag, _codnum, _negozio;
|
||||||
|
bool _contnetto;
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
bool print_header();
|
bool print_header(const TString80& percorso);
|
||||||
void print_line(const TString& rigastampa = "");
|
void print_line(const TString& rigastampa = "");
|
||||||
void print_footer();
|
void print_footer();
|
||||||
virtual bool create();
|
virtual bool create();
|
||||||
virtual bool destroy();
|
virtual bool destroy();
|
||||||
virtual void main_loop();
|
virtual void main_loop();
|
||||||
bool import_clienti();
|
bool import_clienti(const TString80& percorso);
|
||||||
bool import_documenti();
|
bool import_documenti(const TString80& percorso);
|
||||||
const long get_nextcodcf();
|
const long get_nextcodcf();
|
||||||
|
bool load_conf_ditte();
|
||||||
|
bool load_conf_doc();
|
||||||
|
bool check_negozio(const TString80& percorso);
|
||||||
|
bool TDT2Doc::error_msg(const TString& msg, const TString16& causale, const int numdoc, const TString& codice);
|
||||||
TDT2Doc() {}
|
TDT2Doc() {}
|
||||||
};
|
};
|
||||||
|
|
||||||
TDT2Doc& app() { return (TDT2Doc&) main_app(); }
|
TDT2Doc& app() { return (TDT2Doc&) main_app(); }
|
||||||
|
|
||||||
bool TDT2Doc::print_header()
|
bool TDT2Doc::print_header(const TString80& percorso)
|
||||||
{
|
{
|
||||||
if (printer().open())
|
if (printer().open())
|
||||||
{
|
{
|
||||||
TDate oggi(TODAY);
|
TDate oggi(TODAY);
|
||||||
TPrintrow row;
|
TPrintrow row;
|
||||||
TString256 rigastampa;
|
TString256 rigastampa;
|
||||||
rigastampa = "IMPORTAZIONE DOCUMENTI";
|
rigastampa = "IMPORTAZIONE FILE ";
|
||||||
|
rigastampa << percorso;
|
||||||
rigastampa.center_just(80);
|
rigastampa.center_just(80);
|
||||||
row.put(rigastampa);
|
row.put(rigastampa);
|
||||||
row.put("@>", 1);
|
row.put("@>", 1);
|
||||||
@ -133,47 +175,144 @@ void TDT2Doc::print_footer()
|
|||||||
printer().close();
|
printer().close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool TDT2Doc::check_negozio(const TString80& percorso)
|
||||||
|
{
|
||||||
|
TConfig config_studio = TConfig(CONFIG_STUDIO, "dt");
|
||||||
|
int inizio = percorso.find("DF");
|
||||||
|
inizio+=2;
|
||||||
|
const int fine = percorso.find('.');
|
||||||
|
_negozio = percorso.mid(inizio, fine);
|
||||||
|
_negozio.trim();
|
||||||
|
if (_confditte->is_key(_negozio))
|
||||||
|
{
|
||||||
|
TToken_string& config = (TToken_string&) _confditte->find(_negozio);
|
||||||
|
TString16 dittastr = config.get();
|
||||||
|
_cms = config.get();
|
||||||
|
_codnum = config.get();
|
||||||
|
if (_codnum.empty())
|
||||||
|
return error_box("Attenzione: manca la numerazione corrispondente al negozio. Completare la tabella prima di effettuare il trasferimento");
|
||||||
|
const long ditta = atol(dittastr);
|
||||||
|
if (prefix().exist(ditta))
|
||||||
|
{
|
||||||
|
load_conf_doc();
|
||||||
|
return set_firm(ditta);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return error_box("Attenzione: non esiste la ditta %ld; trasferimento annullato", ditta);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return error_box("Attenzione: manca la corrispondenza negozio - ditta; trasferimento annullato");
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TDT2Doc::load_conf_ditte()
|
||||||
|
{
|
||||||
|
TConfig config_studio = TConfig(CONFIG_STUDIO, "dt");
|
||||||
|
TToken_string workstring;
|
||||||
|
_confditte->destroy();
|
||||||
|
for (int k = 0; config_studio.exist("ConfDitte", k); k++)
|
||||||
|
{
|
||||||
|
workstring= config_studio.get("ConfDitte", NULL, k);
|
||||||
|
const TString16 negozio = workstring.get(0);
|
||||||
|
const TString16 ditta = workstring.get(1);
|
||||||
|
const TString80 cms = workstring.get(2);
|
||||||
|
const TString16 codnum = workstring.get(3);
|
||||||
|
TToken_string config;
|
||||||
|
config.add(ditta);
|
||||||
|
config.add(cms);
|
||||||
|
config.add(codnum);
|
||||||
|
_confditte->add(negozio, config);
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TDT2Doc::load_conf_doc()
|
||||||
|
{
|
||||||
|
TConfig config_studio = TConfig(CONFIG_STUDIO, "dt");
|
||||||
|
TToken_string workstring;
|
||||||
|
_confdoc->destroy();
|
||||||
|
for (int k = 0; config_studio.exist("ConfDoc", k); k++)
|
||||||
|
{
|
||||||
|
workstring = config_studio.get("ConfDoc", NULL, k);
|
||||||
|
TToken_string chiavedt;
|
||||||
|
TString80 negozio = workstring.get(0);
|
||||||
|
negozio.trim();
|
||||||
|
if (negozio == _negozio)
|
||||||
|
{
|
||||||
|
chiavedt.add(workstring.get(1));
|
||||||
|
chiavedt.add(workstring.get(2));
|
||||||
|
TToken_string chiavecampo;
|
||||||
|
chiavecampo.add(workstring.get(3));
|
||||||
|
chiavecampo.add(workstring.get(4));
|
||||||
|
_confdoc->add(chiavedt, chiavecampo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_condpag = config_studio.get("CondPag");
|
||||||
|
_contnetto = config_studio.get_bool("ContNettoSconto");
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
bool TDT2Doc::create()
|
bool TDT2Doc::create()
|
||||||
{
|
{
|
||||||
open_files(LF_CLIFO, 0);
|
open_files(LF_CLIFO, 0);
|
||||||
TFilename configname = "dt0400.ini";
|
|
||||||
configname.custom_path();
|
|
||||||
_configfile = new TConfig(configname);
|
|
||||||
_msk = new TDT2Doc_mask();
|
_msk = new TDT2Doc_mask();
|
||||||
|
_msk->set_handler(F_PERCORSO, browse_file_handler);
|
||||||
|
_cms = " ";
|
||||||
|
_condpag = " ";
|
||||||
_clienti = new TLocalisamfile(LF_CLIFO);
|
_clienti = new TLocalisamfile(LF_CLIFO);
|
||||||
|
// array delle corrispondenze tra codici clienti
|
||||||
_array_clienti = new TAssoc_array();
|
_array_clienti = new TAssoc_array();
|
||||||
return TSkeleton_application::create();
|
// array della configurazione negozi/ditte
|
||||||
|
_confditte = new TAssoc_array();
|
||||||
|
load_conf_ditte();
|
||||||
|
// array delle corrispondenze documenti
|
||||||
|
_confdoc = new TAssoc_array();
|
||||||
|
// verra' caricato quando si e' deciso il negozio
|
||||||
|
//load_conf_doc();
|
||||||
|
// riepilogo iva per redistribuzione sconto per aliquote
|
||||||
|
_totalilordi = new TAssoc_array();
|
||||||
|
// castelletto iva per controllo imponibili
|
||||||
|
_castelletto = new TAssoc_array();
|
||||||
|
// primariga di ogni aliquota
|
||||||
|
_primariga = new TAssoc_array();
|
||||||
|
return TSkeleton_application::create ();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TDT2Doc::destroy()
|
bool TDT2Doc::destroy()
|
||||||
{
|
{
|
||||||
|
delete _primariga;
|
||||||
|
delete _castelletto;
|
||||||
|
delete _totalilordi;
|
||||||
|
delete _confdoc;
|
||||||
|
delete _confditte;
|
||||||
delete _array_clienti;
|
delete _array_clienti;
|
||||||
delete _clienti;
|
delete _clienti;
|
||||||
delete _msk;
|
delete _msk;
|
||||||
delete _configfile;
|
|
||||||
return TApplication::destroy();
|
return TApplication::destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TDT2Doc::main_loop()
|
void TDT2Doc::main_loop()
|
||||||
{
|
{
|
||||||
|
TString80 percorso;
|
||||||
KEY tasto;
|
KEY tasto;
|
||||||
_msk->set(F_PERCORSO, _configfile->get("PERCORSO", "OPZIONI"));
|
TConfig configfile("dt0400.ini");
|
||||||
|
_msk->set(F_PERCORSO, configfile.get("PERCORSO", "OPZIONI"));
|
||||||
tasto = _msk->run();
|
tasto = _msk->run();
|
||||||
if (tasto == K_ENTER)
|
if (tasto == K_ENTER)
|
||||||
{
|
{
|
||||||
if (print_header())
|
percorso = _msk->get(F_PERCORSO);
|
||||||
|
if (check_negozio(percorso))
|
||||||
{
|
{
|
||||||
_trasfile = new TDT2Doc_file(_msk->get(F_PERCORSO));
|
if (print_header(percorso))
|
||||||
import_clienti();
|
{
|
||||||
import_documenti();
|
_trasfile = new TDT2Doc_file(percorso);
|
||||||
_configfile->set("PERCORSO", _msk->get(F_PERCORSO), "OPZIONI");
|
import_clienti(percorso);
|
||||||
|
import_documenti(percorso);
|
||||||
|
configfile.set("PERCORSO", percorso, "OPZIONI");
|
||||||
delete _trasfile;
|
delete _trasfile;
|
||||||
message_box(TR("Importazione documenti completata"));
|
message_box(TR("Importazione documenti completata"));
|
||||||
print_footer();
|
print_footer();
|
||||||
}
|
}
|
||||||
else
|
}
|
||||||
error_box("Errore in apertura stampante.");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -206,7 +345,24 @@ const long TDT2Doc::get_nextcodcf()
|
|||||||
return codcf;
|
return codcf;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TDT2Doc::import_documenti()
|
bool TDT2Doc::error_msg(const TString& msg, const TString16& causale, const int numdoc, const TString& codice)
|
||||||
|
{
|
||||||
|
TString messaggio;
|
||||||
|
TString16 desdoc;
|
||||||
|
TToken_string str(causale);
|
||||||
|
TString16 tipodoc = str.get(1);
|
||||||
|
if (tipodoc == "A")
|
||||||
|
desdoc = "Fatt. acc.";
|
||||||
|
else if (tipodoc == "B")
|
||||||
|
desdoc = "Bolla";
|
||||||
|
else if (tipodoc == "D")
|
||||||
|
desdoc = "Fatt. diff.";
|
||||||
|
messaggio.format("Doc. %s %s, n. %d non trasferito: %s %s", (const char*) causale, (const char*) desdoc, numdoc, (const char*) msg, (const char*) codice);
|
||||||
|
print_line(messaggio);
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TDT2Doc::import_documenti(const TString80& percorso)
|
||||||
{
|
{
|
||||||
// eliminazione files delle elaborazioni precedenti
|
// eliminazione files delle elaborazioni precedenti
|
||||||
TString_array transactions;
|
TString_array transactions;
|
||||||
@ -214,56 +370,285 @@ bool TDT2Doc::import_documenti()
|
|||||||
FOR_EACH_ARRAY_ROW(transactions, row, name)
|
FOR_EACH_ARRAY_ROW(transactions, row, name)
|
||||||
remove(*name);
|
remove(*name);
|
||||||
// lettura file
|
// lettura file
|
||||||
_trasfile->open('r');
|
_trasfile->open(percorso, 'r');
|
||||||
const long dimension = fsize(_msk->get(F_PERCORSO));
|
const long dimension = fsize(percorso);
|
||||||
TProgind pi(dimension,"Importazione in corso...");
|
TProgind pi(dimension,"Importazione in corso...");
|
||||||
TConfig *docum=NULL;
|
TConfig* docum=NULL;
|
||||||
TString80 stampa;
|
TString256 stampa;
|
||||||
|
real* tl;
|
||||||
int err = NOERR;
|
int err = NOERR;
|
||||||
int ntransac=0;
|
int ntransac=0;
|
||||||
|
int nriga=0;
|
||||||
|
bool error = FALSE;
|
||||||
|
real sconto(ZERO);
|
||||||
|
real importodoc(ZERO);
|
||||||
|
real percsconto(ZERO);
|
||||||
|
int numdoc;
|
||||||
|
TString16 causale;
|
||||||
TRecord_text curr;
|
TRecord_text curr;
|
||||||
while (_trasfile->read(curr) == NOERR && !pi.iscancelled() && err == NOERR)
|
while (_trasfile->read(curr) == NOERR && !pi.iscancelled() && err == NOERR)
|
||||||
{
|
{
|
||||||
pi.setstatus(_trasfile->read_file()->tellg());
|
pi.setstatus(_trasfile->read_file()->tellg());
|
||||||
|
if ((curr.type() == "01") || (curr.type()=="06"))// testata documento oppure ho finito i doc. e sono ai clienti
|
||||||
|
{
|
||||||
|
// verifico il castelletto
|
||||||
|
if (!error)
|
||||||
|
{
|
||||||
|
if (sconto != ZERO && !_contnetto)
|
||||||
|
{
|
||||||
|
TGeneric_distrib d(sconto, TCurrency::get_firm_dec(true));
|
||||||
|
for (tl = (real*) _totalilordi->first_item(); tl != NULL; tl = (real*) _totalilordi->succ_item())
|
||||||
|
d.add(*tl);
|
||||||
|
real totsconti(ZERO);
|
||||||
|
for (tl = (real*) _totalilordi->first_item(); tl != NULL; tl = (real*) _totalilordi->succ_item())
|
||||||
|
{
|
||||||
|
sconto = d.get();
|
||||||
|
TString16 codiva = _totalilordi->get_hashobj()->key();
|
||||||
|
TCodiceIVA codiceIVA(codiva);
|
||||||
|
codiceIVA.scorpora(sconto, TCurrency::get_firm_dec(true));
|
||||||
|
real& imp_calcolato = *tl;
|
||||||
|
real& imp_castelletto = (real&) _castelletto->find(codiva);
|
||||||
|
codiceIVA.scorpora(imp_calcolato, TCurrency::get_firm_dec(true));
|
||||||
|
real diff = imp_calcolato-sconto-imp_castelletto;
|
||||||
|
sconto = sconto + diff;
|
||||||
|
nriga++;
|
||||||
|
docum->set_paragraph(format("%d,%d",LF_RIGHEDOC, nriga));
|
||||||
|
docum->set(RDOC_CHECKED, "X");
|
||||||
|
docum->set(RDOC_TIPORIGA, "07");
|
||||||
|
docum->set(RDOC_DESCR, "Sconto");
|
||||||
|
TString16 str = sconto.string(TCurrency::get_firm_dec(true));
|
||||||
|
docum->set(RDOC_PREZZO, str);
|
||||||
|
docum->set(RDOC_CODIVA, codiva);
|
||||||
|
docum->set(RDOC_CODCMS, _cms);
|
||||||
|
totsconti+=sconto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (tl = (real*) _totalilordi->first_item(); tl != NULL; tl = (real*) _totalilordi->succ_item())
|
||||||
|
{
|
||||||
|
TString16 codiva = _totalilordi->get_hashobj()->key();
|
||||||
|
TCodiceIVA codiceIVA(codiva);
|
||||||
|
real& imp_calcolato = *tl;
|
||||||
|
real& imp_castelletto = (real&) _castelletto->find(codiva);
|
||||||
|
codiceIVA.scorpora(imp_calcolato, TCurrency::get_firm_dec(true));
|
||||||
|
real diff = imp_castelletto-imp_calcolato;
|
||||||
|
diff.round(2);
|
||||||
|
if (diff != ZERO)
|
||||||
|
{
|
||||||
|
nriga++;
|
||||||
|
docum->set_paragraph(format("%d,%d",LF_RIGHEDOC, nriga));
|
||||||
|
docum->set(RDOC_CHECKED, "X");
|
||||||
|
docum->set(RDOC_TIPORIGA, "01");
|
||||||
|
docum->set(RDOC_DESCR, "Rettifica");
|
||||||
|
TString16 str = diff.string(TCurrency::get_firm_dec());
|
||||||
|
docum->set(RDOC_PREZZO, str);
|
||||||
|
docum->set(RDOC_QTA, "1");
|
||||||
|
docum->set(RDOC_CODIVA, codiva);
|
||||||
|
TString& codart = (TString&) _primariga->find(codiva);
|
||||||
|
docum->set(RDOC_CODART, codart);
|
||||||
|
docum->set(RDOC_CODCMS, _cms);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// chiudo il file precedente
|
||||||
|
_totalilordi->destroy();
|
||||||
|
_castelletto->destroy();
|
||||||
|
_primariga->destroy();
|
||||||
|
if (docum != NULL)
|
||||||
|
{
|
||||||
|
delete docum;
|
||||||
|
docum = NULL;
|
||||||
|
}
|
||||||
|
if (error) // cancello il file perch'e la transazione non e' andata bene
|
||||||
|
{
|
||||||
|
TFilename file = format("ditet%03d.ini",ntransac);
|
||||||
|
if (file.exist())
|
||||||
|
remove(file);
|
||||||
|
}
|
||||||
|
error = FALSE;
|
||||||
if (curr.type() == "01")
|
if (curr.type() == "01")
|
||||||
{
|
{
|
||||||
ntransac++;
|
ntransac++;
|
||||||
docum = new TConfig(format("ditet%03d.ini",ntransac));
|
docum = new TConfig(format("ditet%03d.ini",ntransac));
|
||||||
|
sconto = ZERO;
|
||||||
|
numdoc = atoi(curr.get(3));
|
||||||
|
const TDate datadoc = (TDate) curr.get(4);
|
||||||
|
causale = curr.get(10);
|
||||||
|
causale << "|";
|
||||||
|
causale << curr.get(2);
|
||||||
|
causale.trim();
|
||||||
|
// cerca sul file di configurazione la corrispondenza causale|tipodoc -> tipodocCAMPO|stato
|
||||||
|
if (_confdoc->is_key(causale))
|
||||||
|
{
|
||||||
|
TToken_string str = (TToken_string&) _confdoc->find(causale);
|
||||||
|
const TString16 tipodoc = str.get();
|
||||||
|
if (tipodoc.not_empty())
|
||||||
|
{
|
||||||
|
TString16 codclidt;
|
||||||
|
codclidt = curr.get(5);
|
||||||
|
if (_array_clienti->is_key(codclidt))
|
||||||
|
{
|
||||||
|
TString& codcli = (TString&) _array_clienti->find(codclidt);
|
||||||
|
//ntransac++;
|
||||||
|
nriga=0;
|
||||||
|
//docum = new TConfig(format("ditet%03d.ini",ntransac));
|
||||||
docum->set_paragraph("Transaction");
|
docum->set_paragraph("Transaction");
|
||||||
docum->set("Action","INSERT");
|
docum->set("Action","INSERT");
|
||||||
docum->set("Mode","AUTO");
|
docum->set("Mode","AUTO");
|
||||||
docum->set("Firm",firm);
|
|
||||||
docum->set_paragraph(format("%d",LF_DOC));
|
docum->set_paragraph(format("%d",LF_DOC));
|
||||||
docum->set("ANNO", );
|
docum->set(DOC_ANNO, datadoc.year());
|
||||||
docum->set("PROVV","D");
|
docum->set(DOC_PROVV, "D");
|
||||||
docum->set("CODNUM",codnum);
|
docum->set(DOC_CODNUM, _codnum);
|
||||||
docum->set("TIPODOC",tipodoc);
|
docum->set(DOC_TIPODOC, tipodoc);
|
||||||
docum->set("DATADOC",datadoc);
|
docum->set(DOC_NDOC, numdoc);
|
||||||
docum->set("TIPOCF","F");
|
docum->set(DOC_DATADOC, datadoc);
|
||||||
docum->set("CODCF",cur.relation()->lfile(LF_RMOV).get(RMV_SOTTOCONTO));
|
docum->set(DOC_TIPOCF, "C");
|
||||||
docum->set(DOC_CODABIA,cur.relation()->lfile(LF_CLIFO).get(CLI_CODABI));
|
docum->set(DOC_CODCF, codcli);
|
||||||
docum->set(DOC_CODCABA,cur.relation()->lfile(LF_CLIFO).get(CLI_CODCAB));
|
TString16 codpag = curr.get(6);
|
||||||
|
codpag.trim();
|
||||||
|
const TString16 codpagdt = cache().get("%DTP", codpag, "S4");
|
||||||
|
if (codpagdt.blank())
|
||||||
|
docum->set(DOC_CODPAG, _condpag);
|
||||||
|
else
|
||||||
|
docum->set(DOC_CODPAG, codpagdt);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
error = error_msg("cliente non identificato", causale, numdoc, "");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
error = error_msg("manca la corrispondenza sul tipo documento", causale, numdoc, "");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
error = error_msg("manca la corrispondenza sul tipo documento", causale, numdoc, "");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (curr.type() == "02") // castelletto iva
|
||||||
|
{
|
||||||
|
TString16 tabiva = curr.get(5);
|
||||||
|
tabiva.trim();
|
||||||
|
tabiva.rpad(4);
|
||||||
|
TString str = curr.get(6);
|
||||||
|
str.trim();
|
||||||
|
tabiva << str;
|
||||||
|
tabiva.rpad(7);
|
||||||
|
str = curr.get(7);
|
||||||
|
str.trim();
|
||||||
|
tabiva << str;
|
||||||
|
const TString16 codiva = cache().get("%DTI", tabiva, "S4");
|
||||||
|
if (codiva.not_empty())
|
||||||
|
{
|
||||||
|
real importo = (real) curr.get(9);
|
||||||
|
importo=importo/100;
|
||||||
|
real* oggetto = new real(importo);
|
||||||
|
_castelletto->add(codiva,(TObject*)oggetto);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
error = error_msg("manca la corrispondenza iva" ,causale, numdoc, tabiva);
|
||||||
|
}
|
||||||
|
else if (curr.type() == "03") // piede documento (serve per leggere lo sconto)
|
||||||
|
{
|
||||||
|
importodoc = (real) curr.get(5);
|
||||||
|
importodoc = importodoc/100;
|
||||||
|
sconto = (real) curr.get(6);
|
||||||
|
sconto = sconto/100;
|
||||||
|
importodoc = importodoc + sconto;
|
||||||
|
percsconto = sconto/importodoc;
|
||||||
|
}
|
||||||
|
else if ((!error) && (curr.type() == "04" || curr.type() == "05")) // righe documento
|
||||||
|
{
|
||||||
|
TString16 tabiva = curr.get(11);
|
||||||
|
tabiva.trim();
|
||||||
|
tabiva.rpad(4);
|
||||||
|
TString str = curr.get(12);
|
||||||
|
str.trim();
|
||||||
|
tabiva << str;
|
||||||
|
tabiva.rpad(7);
|
||||||
|
str = curr.get(19);
|
||||||
|
str.trim();
|
||||||
|
tabiva << str;
|
||||||
|
const TString16 codiva = cache().get("%DTI", tabiva, "S4");
|
||||||
|
if (codiva.not_empty())
|
||||||
|
{
|
||||||
|
nriga++;
|
||||||
|
docum->set_paragraph(format("%d,%d",LF_RIGHEDOC, nriga));
|
||||||
|
TString80 codart = curr.get(6);
|
||||||
|
codart.trim();
|
||||||
|
docum->set(RDOC_CHECKED, "X");
|
||||||
|
docum->set(RDOC_TIPORIGA, "01");
|
||||||
|
docum->set(RDOC_CODART, codart);
|
||||||
|
docum->set(RDOC_CODCMS, _cms);
|
||||||
|
if (!_primariga->is_key(codiva))
|
||||||
|
{
|
||||||
|
TString* ca = new TString(codart);
|
||||||
|
_primariga->add(codiva,(TObject*)ca);
|
||||||
|
}
|
||||||
|
const TRectype& recanamag = cache().get(LF_ANAMAG, codart);
|
||||||
|
if (!recanamag.empty())
|
||||||
|
docum->set(RDOC_CODARTMAG,codart);
|
||||||
|
docum->set(RDOC_DESCR, curr.get(7));
|
||||||
|
real qta = (real) curr.get(8);
|
||||||
|
qta = qta/1000;
|
||||||
|
TString str = qta.string();
|
||||||
|
docum->set(RDOC_QTA, str);
|
||||||
|
docum->set(RDOC_UMQTA, curr.get(9));
|
||||||
|
real prezzo = (real) curr.get(10);
|
||||||
|
prezzo = prezzo/100;
|
||||||
|
TCodiceIVA codiceIVA((const char*) codiva);
|
||||||
|
docum->set(RDOC_CODIVA, codiva);
|
||||||
|
real importoriga = prezzo*qta;
|
||||||
|
codiceIVA.scorpora(importoriga, TCurrency::get_firm_dec(true));
|
||||||
|
importoriga.round(TCurrency::get_firm_dec());
|
||||||
|
prezzo = importoriga/qta;
|
||||||
|
prezzo.round(TCurrency::get_firm_dec(true));
|
||||||
|
str = prezzo.string();
|
||||||
|
docum->set(RDOC_PREZZO, str);
|
||||||
|
importoriga=prezzo*qta;
|
||||||
|
importoriga = codiceIVA.lordo(importoriga, TCurrency::get_firm_dec(true));
|
||||||
|
if (_totalilordi->is_key(codiva))
|
||||||
|
{
|
||||||
|
real& importo = (real&)_totalilordi->find(codiva);
|
||||||
|
importo+=importoriga;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
real* oggetto = new real(importoriga);
|
||||||
|
_totalilordi->add(codiva,(TObject*)oggetto);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
error = error_msg("manca la corrispondenza iva" ,causale, numdoc, tabiva);
|
||||||
|
}
|
||||||
|
}
|
||||||
_trasfile->close();
|
_trasfile->close();
|
||||||
return TRUE;
|
// chiudo l'ultimo file
|
||||||
|
if (docum != NULL)
|
||||||
|
delete docum;
|
||||||
|
if (error) // cancello il file perch'e la transazione non e' andata bene
|
||||||
|
{
|
||||||
|
TFilename file = format("ditet%03d.ini",ntransac);
|
||||||
|
if (file.exist())
|
||||||
|
remove(file);
|
||||||
|
}
|
||||||
|
TExternal_app gestdoc("ve0.exe -1 -iditet*.ini ");
|
||||||
|
gestdoc.run();
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TDT2Doc::import_clienti()
|
bool TDT2Doc::import_clienti(const TString80& percorso)
|
||||||
{
|
{
|
||||||
// cache per i comuni
|
// cache per i comuni
|
||||||
TRecord_cache cache_comuni(LF_COMUNI, 2);
|
TRecord_cache cache_comuni(LF_COMUNI, 2);
|
||||||
_trasfile->open('r');
|
_trasfile->open('r');
|
||||||
const long dimension = fsize(_msk->get(F_PERCORSO));
|
const long dimension = fsize(percorso);
|
||||||
TProgind pi(dimension,"Importazione in corso...");
|
TProgind pi(dimension,"Importazione in corso...");
|
||||||
TRelation rel(LF_CLIFO);
|
TRelation rel(LF_CLIFO);
|
||||||
TRectype& reccli = rel.curr();
|
TRectype& reccli = rel.curr();
|
||||||
TLocalisamfile& clifo = rel.lfile();
|
TLocalisamfile& clifo = rel.lfile();
|
||||||
_array_clienti->destroy();
|
_array_clienti->destroy();
|
||||||
TString80 stampa;
|
TString256 stampa;
|
||||||
int err = NOERR;
|
int err = NOERR;
|
||||||
TRecord_text curr;
|
TRecord_text curr;
|
||||||
while (_trasfile->read(curr) == NOERR && !pi.iscancelled() && err == NOERR)
|
while (_trasfile->read(curr) == NOERR && !pi.iscancelled() && err == NOERR)
|
||||||
|
190
dt/dt0400a.ini
190
dt/dt0400a.ini
@ -1,4 +1,5 @@
|
|||||||
[MAIN]
|
[MAIN]
|
||||||
|
DECSEP = ,
|
||||||
RECORDSEP = \n
|
RECORDSEP = \n
|
||||||
TYPEFIELD = 1
|
TYPEFIELD = 1
|
||||||
TYPEPOS = 6
|
TYPEPOS = 6
|
||||||
@ -17,6 +18,13 @@ DATA = N
|
|||||||
[TYPE IMPORTO]
|
[TYPE IMPORTO]
|
||||||
DATA = N
|
DATA = N
|
||||||
LENGTH=10
|
LENGTH=10
|
||||||
|
DECIMAL=2
|
||||||
|
|
||||||
|
[TYPE QTA]
|
||||||
|
DATA = N
|
||||||
|
LENGTH=11
|
||||||
|
DECIMAL=3
|
||||||
|
|
||||||
|
|
||||||
[RECORD 01]
|
[RECORD 01]
|
||||||
NAME(0) = CODICE NEGOZIO
|
NAME(0) = CODICE NEGOZIO
|
||||||
@ -100,36 +108,36 @@ TYPE(4) = DATA
|
|||||||
POSITION(4) = 17
|
POSITION(4) = 17
|
||||||
LENGTH(4) = 10
|
LENGTH(4) = 10
|
||||||
|
|
||||||
NAME(4) = ALIQUOTA IVA
|
NAME(5) = ALIQUOTA IVA
|
||||||
TYPE(4) = STRINGA
|
|
||||||
POSITION(4) = 27
|
|
||||||
LENGTH(4) = 4
|
|
||||||
|
|
||||||
NAME(5) = ARTICOLO LEGGE IVA
|
|
||||||
TYPE(5) = STRINGA
|
TYPE(5) = STRINGA
|
||||||
POSITION(5) = 31
|
POSITION(5) = 27
|
||||||
LENGTH(5) = 3
|
LENGTH(5) = 4
|
||||||
|
|
||||||
NAME(6) = COMMA LEGGE IVA
|
NAME(6) = ARTICOLO LEGGE IVA
|
||||||
TYPE(6) = STRINGA
|
TYPE(6) = STRINGA
|
||||||
POSITION(6) = 34
|
POSITION(6) = 31
|
||||||
LENGTH(6) = 2
|
LENGTH(6) = 3
|
||||||
|
|
||||||
NAME(7) = SEGNO IMPORTO
|
NAME(7) = COMMA LEGGE IVA
|
||||||
TYPE(7) = STRINGA
|
TYPE(7) = STRINGA
|
||||||
POSITION(7) = 36
|
POSITION(7) = 34
|
||||||
LENGTH(7) = 1
|
LENGTH(7) = 2
|
||||||
|
|
||||||
NAME(8) = IMPONIBILE
|
NAME(8) = SEGNO IMPORTO
|
||||||
TYPE(8) = IMPORTO
|
TYPE(8) = STRINGA
|
||||||
POSITION(8) = 37
|
POSITION(8) = 36
|
||||||
LENGTH(8) = 10
|
LENGTH(8) = 1
|
||||||
|
|
||||||
NAME(9) = IMPOSTA
|
NAME(9) = IMPONIBILE
|
||||||
TYPE(9) = IMPORTO
|
TYPE(9) = IMPORTO
|
||||||
POSITION(9) = 47
|
POSITION(9) = 37
|
||||||
LENGTH(9) = 10
|
LENGTH(9) = 10
|
||||||
|
|
||||||
|
NAME(10) = IMPOSTA
|
||||||
|
TYPE(10) = IMPORTO
|
||||||
|
POSITION(10) = 47
|
||||||
|
LENGTH(10) = 10
|
||||||
|
|
||||||
[RECORD 03]
|
[RECORD 03]
|
||||||
NAME(0) = CODICE NEGOZIO
|
NAME(0) = CODICE NEGOZIO
|
||||||
TYPE(0) = STRINGA
|
TYPE(0) = STRINGA
|
||||||
@ -223,10 +231,65 @@ POSITION(7) = 47
|
|||||||
LENGTH(7) = 35
|
LENGTH(7) = 35
|
||||||
|
|
||||||
NAME(8) = QUANTITA
|
NAME(8) = QUANTITA
|
||||||
TYPE(8) = STRINGA
|
TYPE(8) = QTA
|
||||||
POSITION(8) = 82
|
POSITION(8) = 82
|
||||||
LENGTH(8) = 11
|
LENGTH(8) = 11
|
||||||
|
|
||||||
|
NAME(9) = UNITA DI MISURA
|
||||||
|
TYPE(9) = STRINGA
|
||||||
|
POSITION(9) = 93
|
||||||
|
LENGTH(9) = 2
|
||||||
|
|
||||||
|
NAME(10) = PREZZO UNITARIO
|
||||||
|
TYPE(10) = IMPORTO
|
||||||
|
POSITION(10) = 95
|
||||||
|
LENGTH(10) = 10
|
||||||
|
|
||||||
|
NAME(11) = ALIQUOTA IVA
|
||||||
|
TYPE(11) = STRINGA
|
||||||
|
POSITION(11) = 105
|
||||||
|
LENGTH(11) = 4
|
||||||
|
|
||||||
|
NAME(12) = ARTICOLO LEGGE IVA
|
||||||
|
TYPE(12) = STRINGA
|
||||||
|
POSITION(12) = 109
|
||||||
|
LENGTH(12) = 3
|
||||||
|
|
||||||
|
NAME(19) = COMMA LEGGE IVA
|
||||||
|
TYPE(19) = STRINGA
|
||||||
|
POSITION(19) = 112
|
||||||
|
LENGTH(19) = 2
|
||||||
|
|
||||||
|
NAME(13) = SCONTO A VALORE
|
||||||
|
TYPE(13) = IMPORTO
|
||||||
|
POSITION(13) = 114
|
||||||
|
LENGTH(13) = 10
|
||||||
|
|
||||||
|
NAME(14) = IMPORTO TOTALE RIGA
|
||||||
|
TYPE(14) = IMPORTO
|
||||||
|
POSITION(14) = 114
|
||||||
|
LENGTH(14) = 10
|
||||||
|
|
||||||
|
NAME(15) = CODICE FORNITORE
|
||||||
|
TYPE(15) = STRINGA
|
||||||
|
POSITION(15) = 134
|
||||||
|
LENGTH(15) = 8
|
||||||
|
|
||||||
|
NAME(16) = NUMERO RIFERIMENTO BOLLA
|
||||||
|
TYPE(16) = NUMERO
|
||||||
|
POSITION(16) = 142
|
||||||
|
LENGTH(16) = 6
|
||||||
|
|
||||||
|
NAME(17) = DATA RIFERIMENTO BOLLA
|
||||||
|
TYPE(17) = DATA
|
||||||
|
POSITION(17) = 148
|
||||||
|
LENGTH(17) = 10
|
||||||
|
|
||||||
|
NAME(18) = CODICE REPARTO CASSA
|
||||||
|
TYPE(18) = STRINGA
|
||||||
|
POSITION(18) = 158
|
||||||
|
LENGTH(18) = 3
|
||||||
|
|
||||||
[RECORD 05]
|
[RECORD 05]
|
||||||
NAME(0) = CODICE NEGOZIO
|
NAME(0) = CODICE NEGOZIO
|
||||||
TYPE(0) = STRINGA
|
TYPE(0) = STRINGA
|
||||||
@ -243,6 +306,91 @@ TYPE(2) = STRINGA
|
|||||||
POSITION(2) = 8
|
POSITION(2) = 8
|
||||||
LENGTH(2) = 3
|
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) = QTA
|
||||||
|
POSITION(8) = 82
|
||||||
|
LENGTH(8) = 11
|
||||||
|
|
||||||
|
NAME(9) = UNITA DI MISURA
|
||||||
|
TYPE(9) = STRINGA
|
||||||
|
POSITION(9) = 93
|
||||||
|
LENGTH(9) = 2
|
||||||
|
|
||||||
|
NAME(10) = PREZZO UNITARIO
|
||||||
|
TYPE(10) = IMPORTO
|
||||||
|
POSITION(10) = 95
|
||||||
|
LENGTH(10) = 10
|
||||||
|
|
||||||
|
NAME(11) = ALIQUOTA IVA
|
||||||
|
TYPE(11) = STRINGA
|
||||||
|
POSITION(11) = 105
|
||||||
|
LENGTH(11) = 4
|
||||||
|
|
||||||
|
NAME(12) = ARTICOLO LEGGE IVA
|
||||||
|
TYPE(12) = STRINGA
|
||||||
|
POSITION(12) = 109
|
||||||
|
LENGTH(12) = 5
|
||||||
|
|
||||||
|
NAME(19) = COMMA LEGGE IVA
|
||||||
|
TYPE(19) = STRINGA
|
||||||
|
POSITION(19) = 112
|
||||||
|
LENGTH(19) = 2
|
||||||
|
|
||||||
|
NAME(13) = SCONTO A VALORE
|
||||||
|
TYPE(13) = IMPORTO
|
||||||
|
POSITION(13) = 114
|
||||||
|
LENGTH(13) = 10
|
||||||
|
|
||||||
|
NAME(14) = IMPORTO TOTALE RIGA
|
||||||
|
TYPE(14) = IMPORTO
|
||||||
|
POSITION(14) = 114
|
||||||
|
LENGTH(14) = 10
|
||||||
|
|
||||||
|
NAME(15) = CODICE FORNITORE
|
||||||
|
TYPE(15) = STRINGA
|
||||||
|
POSITION(15) = 134
|
||||||
|
LENGTH(15) = 8
|
||||||
|
|
||||||
|
NAME(16) = NUMERO RIFERIMENTO BOLLA
|
||||||
|
TYPE(16) = NUMERO
|
||||||
|
POSITION(16) = 142
|
||||||
|
LENGTH(16) = 6
|
||||||
|
|
||||||
|
NAME(17) = DATA RIFERIMENTO BOLLA
|
||||||
|
TYPE(17) = DATA
|
||||||
|
POSITION(17) = 148
|
||||||
|
LENGTH(17) = 10
|
||||||
|
|
||||||
|
NAME(18) = CODICE REPARTO CASSA
|
||||||
|
TYPE(18) = STRINGA
|
||||||
|
POSITION(18) = 158
|
||||||
|
LENGTH(18) = 3
|
||||||
|
|
||||||
[RECORD 06]
|
[RECORD 06]
|
||||||
NAME(0) = CODICE NEGOZIO
|
NAME(0) = CODICE NEGOZIO
|
||||||
TYPE(0) = STRINGA
|
TYPE(0) = STRINGA
|
||||||
|
@ -18,12 +18,12 @@ PAGE "Importazione documenti" 0 -1 0 19
|
|||||||
|
|
||||||
STRING F_PERCORSO 50
|
STRING F_PERCORSO 50
|
||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 2 2 "File da trasferire "
|
PROMPT 2 2 "File da contabilizzare "
|
||||||
CHECKTYPE REQUIRED
|
CHECKTYPE REQUIRED
|
||||||
VALIDATE FILENAME_FUNC
|
VALIDATE NOT_EMPTY_FUNC
|
||||||
FLAGS "A"
|
FLAGS "B"
|
||||||
HELP "Percorso e nome file da trasferire"
|
HELP "Percorso e nome file da contabilizzare"
|
||||||
WARNING "E' necessario specificare il nome del file da trasferire"
|
WARNING "E' necessario specificare il nome del file da contabilizzare"
|
||||||
END
|
END
|
||||||
|
|
||||||
|
|
||||||
|
24
dt/dtmenu.men
Executable file
24
dt/dtmenu.men
Executable file
@ -0,0 +1,24 @@
|
|||||||
|
[DTMENU_001]
|
||||||
|
Caption = "Importazione documenti STORE"
|
||||||
|
Picture = <ba02>
|
||||||
|
Module = 8
|
||||||
|
Flags = ""
|
||||||
|
Item_01 = "Tabelle di configurazione", [DTMENU_010]
|
||||||
|
Item_02 = "Personalizzazione documenti", [VEMENU_003]
|
||||||
|
Item_03 = "Stampe pers. documenti", [VEMENU_008]
|
||||||
|
Item_04 = "Importazione documenti", "dt0 -3", "F"
|
||||||
|
Item_05 = "Documenti interattivi", "ve0 -0", "F"
|
||||||
|
Item_06 = "Contabilizzazione documenti", "ve6 -1", "F"
|
||||||
|
Item_07 = "Servizi", [VEMENU_051]
|
||||||
|
|
||||||
|
[DTMENU_010]
|
||||||
|
Caption = "Tabelle di configurazione"
|
||||||
|
Picture = <ba02>
|
||||||
|
Module = 8
|
||||||
|
Flags = ""
|
||||||
|
Item_01 = "Tabella conversione negozi", "dt0 -2 -2"F"
|
||||||
|
Item_02 = "Tabella conversione documenti", "dt0 -2 -1"F"
|
||||||
|
Item_03 = "Tabella conversione IVA ", "dt0 -0 %DTI", "F"
|
||||||
|
Item_04 = "Tabella conversione pagamenti ", "dt0 -0 %DTP", "F"
|
||||||
|
Item_07 = "Contabilizzazione sconti", "ve0 -2 -3", "F"
|
||||||
|
Item_09 = "Contabilizzazione", "ve0 -2 -5", "F"
|
5
dt/dttbdti.h
Executable file
5
dt/dttbdti.h
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
#define FLD_TABDTI_CODTAB1 101
|
||||||
|
#define FLD_TABDTI_CODTAB2 102
|
||||||
|
#define FLD_TABDTI_CODTAB3 103
|
||||||
|
#define FLD_TABDTI_DESCR 104
|
||||||
|
#define FLD_TABDTI_CODIVA 105
|
101
dt/dttbdti.uml
Executable file
101
dt/dttbdti.uml
Executable file
@ -0,0 +1,101 @@
|
|||||||
|
#include "dttbdti.h"
|
||||||
|
|
||||||
|
TOOLBAR "" 0 20 0 2
|
||||||
|
|
||||||
|
#include <toolbar.h>
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
PAGE "Conversione tabella IVA" -1 -1 78 19
|
||||||
|
|
||||||
|
STRING FLD_TABDTI_CODTAB1 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 3 1 "Aliquota IVA Di.Tech "
|
||||||
|
FIELD CODTAB[1,4]
|
||||||
|
FLAGS "U"
|
||||||
|
USE %DTI
|
||||||
|
INPUT CODTAB[1,4] FLD_TABDTI_CODTAB1
|
||||||
|
DISPLAY "Cod. pag. Di.Tech" CODTAB[1,4]
|
||||||
|
DISPLAY "Articolo legge IVA" CODTAB[5,7]
|
||||||
|
DISPLAY "Comma legge IVA" CODTAB[8,9]
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
DISPLAY "Cod. corr." S4
|
||||||
|
OUTPUT FLD_TABDTI_CODTAB1 CODTAB[1,4]
|
||||||
|
OUTPUT FLD_TABDTI_CODTAB2 CODTAB[5,7]
|
||||||
|
OUTPUT FLD_TABDTI_CODTAB3 CODTAB[8,9]
|
||||||
|
OUTPUT FLD_TABDTI_DESCR S0
|
||||||
|
OUTPUT FLD_TABDTI_CODIVA S4
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
KEY 1
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING FLD_TABDTI_CODTAB2 3
|
||||||
|
BEGIN
|
||||||
|
PROMPT 3 2 "Articolo legge IVA "
|
||||||
|
FIELD CODTAB[5,7]
|
||||||
|
USE %DTI
|
||||||
|
FLAGS "U"
|
||||||
|
INPUT CODTAB[1,4] FLD_TABDTI_CODTAB1
|
||||||
|
INPUT CODTAB[5,7] FLD_TABDTI_CODTAB2
|
||||||
|
DISPLAY "Cod. pag. Di.Tech" CODTAB[1,4]
|
||||||
|
DISPLAY "Articolo legge IVA" CODTAB[5,7]
|
||||||
|
DISPLAY "Comma legge IVA" CODTAB[8,9]
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
DISPLAY "Cod. corr." S4
|
||||||
|
COPY OUTPUT FLD_TABDTI_CODTAB1
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
KEY 1
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING FLD_TABDTI_CODTAB3 2
|
||||||
|
BEGIN
|
||||||
|
PROMPT 3 3 "Comma legge IVA "
|
||||||
|
FIELD CODTAB[8,9]
|
||||||
|
USE %DTI
|
||||||
|
FLAGS "U"
|
||||||
|
INPUT CODTAB[1,4] FLD_TABDTI_CODTAB1
|
||||||
|
INPUT CODTAB[5,7] FLD_TABDTI_CODTAB2
|
||||||
|
INPUT CODTAB[8,9] FLD_TABDTI_CODTAB3
|
||||||
|
DISPLAY "Cod. pag. Di.Tech" CODTAB[1,4]
|
||||||
|
DISPLAY "Articolo legge IVA" CODTAB[5,7]
|
||||||
|
DISPLAY "Comma legge IVA" CODTAB[8,9]
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
DISPLAY "Cod. corr." S4
|
||||||
|
COPY OUTPUT FLD_TABDTI_CODTAB1
|
||||||
|
CHECKTYPE NORMAL
|
||||||
|
KEY 1
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING FLD_TABDTI_DESCR 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 3 4 "Descrizione "
|
||||||
|
USE %DTI
|
||||||
|
KEY 2
|
||||||
|
FIELD S0
|
||||||
|
INPUT S0 FLD_TABDTI_DESCR
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
DISPLAY "Cod. pag. Di.Tech" CODTAB[1,4]
|
||||||
|
DISPLAY "Articolo legge IVA" CODTAB[5,7]
|
||||||
|
DISPLAY "Comma legge IVA" CODTAB[8,9]
|
||||||
|
DISPLAY "Cod. corr." S4
|
||||||
|
COPY OUTPUT FLD_TABDTI_CODTAB1
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING FLD_TABDTI_CODIVA 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 3 5 "Codice corrispondente "
|
||||||
|
FIELD S4
|
||||||
|
USE %IVA
|
||||||
|
FLAGS "U"
|
||||||
|
INPUT CODTAB FLD_TABDTI_CODIVA
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT FLD_TABDTI_CODIVA CODTAB
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
VALIDATE ZEROFILL_FUNC 2
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
ENDMASK
|
||||||
|
|
3
dt/dttbdtp.h
Executable file
3
dt/dttbdtp.h
Executable file
@ -0,0 +1,3 @@
|
|||||||
|
#define FLD_TABDTP_CODTAB 101
|
||||||
|
#define FLD_TABDTP_DESCR 102
|
||||||
|
#define FLD_TABDTP_CODPAG 103
|
51
dt/dttbdtp.uml
Executable file
51
dt/dttbdtp.uml
Executable file
@ -0,0 +1,51 @@
|
|||||||
|
#include "dttbdtp.h"
|
||||||
|
|
||||||
|
TOOLBAR "" 0 20 0 2
|
||||||
|
|
||||||
|
#include <toolbar.h>
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
PAGE "Conversione tabella pagamenti" -1 -1 78 19
|
||||||
|
|
||||||
|
STRING FLD_TABDTP_CODTAB 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 3 1 "Cod. pag. Di.Tech "
|
||||||
|
FIELD CODTAB
|
||||||
|
KEY 1
|
||||||
|
USE %DTP
|
||||||
|
FLAGS "U"
|
||||||
|
INPUT CODTAB FLD_TABDTP_CODTAB
|
||||||
|
DISPLAY "Cod. pag. Di.Tech" CODTAB
|
||||||
|
DISPLAY "Descrizione@50" S0
|
||||||
|
OUTPUT FLD_TABDTP_CODTAB CODTAB
|
||||||
|
OUTPUT FLD_TABDTP_DESCR S0
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING FLD_TABDTP_DESCR 50
|
||||||
|
BEGIN
|
||||||
|
PROMPT 3 2 "Descrizione "
|
||||||
|
USE %DTP
|
||||||
|
KEY 2
|
||||||
|
FIELD S0
|
||||||
|
END
|
||||||
|
|
||||||
|
STRING FLD_TABDTP_CODPAG 4
|
||||||
|
BEGIN
|
||||||
|
PROMPT 3 3 "Codice corrispondente "
|
||||||
|
HELP "Codice di pagamento"
|
||||||
|
FIELD S4
|
||||||
|
FLAGS "U"
|
||||||
|
USE %CPG KEY 1
|
||||||
|
INPUT CODTAB FLD_TABDTP_CODPAG
|
||||||
|
DISPLAY "Codice" CODTAB
|
||||||
|
DISPLAY "Tipo di pagamento@50" S0
|
||||||
|
OUTPUT FLD_TABDTP_CODPAG CODTAB
|
||||||
|
CHECKTYPE REQUIRED
|
||||||
|
END
|
||||||
|
|
||||||
|
ENDPAGE
|
||||||
|
|
||||||
|
ENDMASK
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user