Patch level : 10 ha
Files correlati : Ricompilazione Demo : [ ] Commento : avanzamento lavori git-svn-id: svn://10.65.10.50/branches/R_10_00@21312 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
a72778a6ce
commit
a5aeb839e4
@ -103,9 +103,6 @@ public:
|
||||
|
||||
class THardy_fornitori : public THardy_transfer
|
||||
{
|
||||
protected:
|
||||
long key2forn(const TString& key) const;
|
||||
|
||||
public:
|
||||
virtual bool trasferisci();
|
||||
};
|
||||
@ -782,12 +779,6 @@ bool THardy_clienti::trasferisci_destinazioni()
|
||||
// THardy_fornitori
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
long THardy_fornitori::key2forn(const TString& key) const
|
||||
{
|
||||
const long codcf = atol(key.mid(3,6));
|
||||
return codcf;
|
||||
}
|
||||
|
||||
bool THardy_fornitori::trasferisci()
|
||||
{
|
||||
TString query =
|
||||
@ -807,7 +798,7 @@ bool THardy_fornitori::trasferisci()
|
||||
while (++hi)
|
||||
{
|
||||
const TString& key = get_str("IdConto");
|
||||
const long codcf = key2forn(key);
|
||||
const long codcf = hd_key2forn(key);
|
||||
if (codcf > 0)
|
||||
{
|
||||
rec.zero();
|
||||
@ -1035,8 +1026,7 @@ public:
|
||||
virtual ~TImportazioneHardy_mask();
|
||||
};
|
||||
|
||||
|
||||
// Funzione di tarsferimento dati da/verso file .ini con lo stesso nome della maschera
|
||||
// Funzione di trasferimento dati da/verso file .ini con lo stesso nome della maschera
|
||||
// Andrebbe messo in libreria
|
||||
void TImportazioneHardy_mask::serialize(bool bSave)
|
||||
{
|
||||
|
105
ha/hacnv100a.ini
105
ha/hacnv100a.ini
@ -141,8 +141,8 @@ PAIV = PartitaIVA
|
||||
TIPOPERS =
|
||||
ALLEG =
|
||||
CODALLEG =
|
||||
GRUPPO =
|
||||
CONTO =
|
||||
GRUPPO = _FISSO,5
|
||||
CONTO = _FISSO,600
|
||||
GRUPPORIC =
|
||||
CONTORIC =
|
||||
SOTTOCRIC =
|
||||
@ -195,8 +195,8 @@ PAIV = PartitaIVA
|
||||
TIPOPERS =
|
||||
ALLEG =
|
||||
CODALLEG =
|
||||
GRUPPO =
|
||||
CONTO =
|
||||
GRUPPO = _FISSO,4
|
||||
CONTO = _FISSO,101
|
||||
GRUPPORIC =
|
||||
CONTORIC =
|
||||
SOTTOCRIC =
|
||||
@ -420,10 +420,107 @@ DATAULTAUM =
|
||||
PRZSTO =
|
||||
DATAPRZSTO =
|
||||
|
||||
[MOV]
|
||||
ANNOES = Esercizio
|
||||
NUMREG = KMovconT
|
||||
DATAREG = DataMovimento
|
||||
DATACOMP = DataCompetenza
|
||||
DATADOC = DataDocumento
|
||||
DATA74TER =
|
||||
MESELIQ =
|
||||
NUMDOC = NumDocumento
|
||||
//TIPODOC = *** conversione FlTipoDocumento
|
||||
CODCAUS = IdCausale
|
||||
DESCR = Descrizione1
|
||||
TIPOMOV =
|
||||
ANNOIVA =
|
||||
REG =
|
||||
PROTIVA =
|
||||
UPROTIVA =
|
||||
CODVAL = IdDivisa
|
||||
DATACAM = DataCambio
|
||||
CAMBIO = Cambio
|
||||
REGST =
|
||||
STAMPATO = FlStGiornale
|
||||
NUMGIO = ProtGiornale
|
||||
TIPO =
|
||||
CODCF =
|
||||
TOTDOC =
|
||||
TOTDOCVAL =
|
||||
RITFIS =
|
||||
RITSOC =
|
||||
PROVVIS = FlMovSospeso
|
||||
CODVALI =
|
||||
CAMBIOI =
|
||||
CORRLIRE =
|
||||
CORRVALUTA=
|
||||
DATACOMPI =
|
||||
OCFPI =
|
||||
CODPAG =
|
||||
INVIATO =
|
||||
INVIVA =
|
||||
SCARCON =
|
||||
TNUMREG =
|
||||
TOCFP =
|
||||
DPROVV =
|
||||
DANNO =
|
||||
DCODNUM =
|
||||
DNDOC =
|
||||
DATAINC =
|
||||
LIQDIFF =
|
||||
|
||||
[RMOV]
|
||||
ANNOES = Esercizio
|
||||
NUMREG = KMovconT
|
||||
NUMRIG =
|
||||
SEZIONE =
|
||||
DATAREG = DataMovimento
|
||||
TIPOC =
|
||||
GRUPPO =
|
||||
CONTO =
|
||||
SOTTOCONTO=
|
||||
DESCR = _STREXPR,LEFT(Descrizione1+" "+Descrizione2; 50)
|
||||
RCONTR =
|
||||
TIPOCC =
|
||||
GRUPPOC =
|
||||
CONTOC =
|
||||
SOTTOCONTC=
|
||||
IMPORTO =
|
||||
ROWTYPE =
|
||||
NUMGIO = ProtGiornale
|
||||
CODCMS =
|
||||
FASCMS =
|
||||
|
||||
[RMOVIVA]
|
||||
ANNOES =
|
||||
NUMREG =
|
||||
NUMRIG =
|
||||
CODIVA =
|
||||
IMPONIBILE=
|
||||
IMPOSTA =
|
||||
TIPODET =
|
||||
TIPOCR =
|
||||
INTRA =
|
||||
TIPOATT =
|
||||
RIGAIMP =
|
||||
RIGAIVA =
|
||||
TIPOC =
|
||||
GRUPPO =
|
||||
CONTO =
|
||||
SOTTOCONTO=
|
||||
CODCMS =
|
||||
FASCMS =
|
||||
NAVP =
|
||||
|
||||
[Mastri]
|
||||
CLI_GRUPPO = 4
|
||||
CLI_CONTO = 101
|
||||
FOR_GRUPPO = 5
|
||||
FOR_CONTO = 600
|
||||
|
||||
// parametri generali della maschera (dns user password)
|
||||
[Main]
|
||||
201 = hardy
|
||||
202 =
|
||||
203 =
|
||||
PATH = c:\temp
|
||||
|
218
ha/hacnv200.cpp
218
ha/hacnv200.cpp
@ -5,10 +5,16 @@
|
||||
#include <applicat.h>
|
||||
#include <automask.h>
|
||||
#include <defmask.h>
|
||||
#include <execp.h>
|
||||
#include <progind.h>
|
||||
#include <reprint.h>
|
||||
#include <reputils.h>
|
||||
#include <tabutil.h>
|
||||
#include <utility.h>
|
||||
|
||||
#include <mov.h>
|
||||
#include <rmov.h>
|
||||
#include <rmoviva.h>
|
||||
|
||||
const char* const APPNAME = TR("Conversione movimenti");
|
||||
|
||||
@ -19,15 +25,99 @@ const char* const APPNAME = TR("Conversione movimenti");
|
||||
class THardy_movimenti : public THardy_transfer
|
||||
{
|
||||
int _anno;
|
||||
|
||||
TConfig* _conf;
|
||||
long _kmovcont;
|
||||
protected:
|
||||
bool trasferisci_righe();
|
||||
bool is_mov_iva();
|
||||
public:
|
||||
virtual bool trasferisci();
|
||||
THardy_movimenti(int anno);
|
||||
};
|
||||
|
||||
|
||||
THardy_movimenti::THardy_movimenti(int anno) : _anno(anno)
|
||||
bool THardy_movimenti::is_mov_iva()
|
||||
{
|
||||
TString query_righe;
|
||||
query_righe << query_header();
|
||||
query_righe << "SELECT * "
|
||||
"FROM dbo.MovIvaT"
|
||||
"WHERE KMovconT=";
|
||||
query_righe << _kmovcont;
|
||||
TODBC_recordset recset_righe(query_righe);
|
||||
bool is_iva = (recset_righe.items() > 0);
|
||||
return is_iva;
|
||||
}
|
||||
|
||||
|
||||
bool THardy_movimenti::trasferisci_righe()
|
||||
{
|
||||
TString_array lista_campi_righe;
|
||||
TConfig& ini = config();
|
||||
ini.list_variables(lista_campi_righe, true, "RMOV", true);
|
||||
TString query_righe;
|
||||
query_righe << query_header();
|
||||
query_righe << "SELECT * "
|
||||
"FROM dbo.MovContabili "
|
||||
"WHERE KMovconT=";
|
||||
query_righe << _kmovcont;
|
||||
TODBC_recordset recset_righe(query_righe);
|
||||
TString paragraph;
|
||||
int nrigac = 1;
|
||||
int nrigai = 1;
|
||||
for (bool ok=recset_righe.move_first();ok;ok=recset_righe.move_next())
|
||||
{
|
||||
paragraph.format("%d,%d",LF_RMOV,nrigac++);
|
||||
_conf->set_paragraph(paragraph);
|
||||
aggiorna_ini(*_conf, lista_campi_righe);
|
||||
|
||||
// calcolo dei campi non importabili direttamente
|
||||
TString4 sezione = "D";
|
||||
real imp_dare = recset_righe.get("Dare").as_real();
|
||||
real imp_avere = recset_righe.get("Avere").as_real();
|
||||
if (imp_avere> ZERO)
|
||||
sezione = "A";
|
||||
_conf->set(RMV_SEZIONE, sezione);
|
||||
_conf->set(RMV_IMPORTO, (imp_dare > ZERO ? imp_dare.string() : imp_avere.string()));
|
||||
const TString& key = recset_righe.get("IdConto").as_string();
|
||||
TString4 tipoc = recset_righe.get("IdContoTp").as_string();
|
||||
const char tipocc = tipoc[0];
|
||||
int gr, co;
|
||||
long so;
|
||||
switch (tipocc)
|
||||
{
|
||||
case 'S':
|
||||
{
|
||||
tipoc = " ";
|
||||
gr = atoi(key.mid(1,2));
|
||||
co = atoi(key.mid(3,2));
|
||||
so = atoi(key.mid(5,3));
|
||||
}
|
||||
break;
|
||||
case 'C':
|
||||
{
|
||||
tipoc = "C";
|
||||
gr = ini.get_int("CLI_GRUPPO", "Mastri");
|
||||
co = ini.get_int("CLI_CONTO", "Mastri");
|
||||
so = hd_key2cli(key);
|
||||
}
|
||||
break;
|
||||
case 'F':
|
||||
{
|
||||
tipoc = "F";
|
||||
gr = ini.get_int("FOR_GRUPPO", "Mastri");
|
||||
co = ini.get_int("FOR_CONTO", "Mastri");
|
||||
so = hd_key2forn(key);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
_conf->set(RMV_TIPOC, tipoc);
|
||||
_conf->set(RMV_GRUPPO, gr);
|
||||
_conf->set(RMV_CONTO, co);
|
||||
_conf->set(RMV_SOTTOCONTO, so);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool THardy_movimenti::trasferisci()
|
||||
@ -44,84 +134,68 @@ bool THardy_movimenti::trasferisci()
|
||||
TString_array lista_campi;
|
||||
ini.list_variables(lista_campi, true, "MOV", true);
|
||||
|
||||
TFilename outdir("C:");
|
||||
TConfig* conf = NULL;
|
||||
int nrigac = 1;
|
||||
int nrigai = 1;
|
||||
TFilename outdir;
|
||||
outdir = ini.get("PATH", "Main");
|
||||
TString80 listfiles = outdir;
|
||||
listfiles << "\\ha*.ini";
|
||||
TString_array transactions;
|
||||
list_files(listfiles, transactions);
|
||||
FOR_EACH_ARRAY_ROW(transactions, row, name)
|
||||
remove(*name);
|
||||
|
||||
_conf = NULL;
|
||||
long ntran = 1L;
|
||||
|
||||
TString paragraph;
|
||||
|
||||
THardy_iterator hi(this);
|
||||
while (++hi)
|
||||
{
|
||||
if (conf != NULL)
|
||||
delete conf;
|
||||
conf = NULL;
|
||||
TFilename temp(outdir);
|
||||
|
||||
temp.format("%05ld", ntran++);
|
||||
temp.ext("ini");
|
||||
if (temp.exist())
|
||||
temp.fremove();
|
||||
conf = new TConfig(temp);
|
||||
conf->set_paragraph("Transaction");
|
||||
conf->set("Action","INSERT");
|
||||
conf->set("Mode", "AUTO");
|
||||
|
||||
conf->set_paragraph("23"); // testata movimento
|
||||
|
||||
/*
|
||||
const TString& key = get_str("IdConto");
|
||||
const long codcf = 0;//key2forn(key);
|
||||
if (codcf > 0)
|
||||
_kmovcont = recset.get("KMovconT").as_int();
|
||||
if (is_mov_iva())
|
||||
{
|
||||
rec.zero();
|
||||
rec.put(CLI_TIPOCF, "F");
|
||||
rec.put(CLI_CODCF, codcf);
|
||||
|
||||
// contropartita
|
||||
const TString16 key = get_str("IdContropartita");
|
||||
const int gr = atoi(key.mid(1,2));
|
||||
const int co = atoi(key.mid(3,2));
|
||||
const int so = atoi(key.mid(5,3));
|
||||
rec.put(CLI_GRUPPORIC, gr);
|
||||
rec.put(CLI_CONTORIC, co);
|
||||
rec.put(CLI_SOTTOCRIC, so);
|
||||
|
||||
// ricerca comune
|
||||
const TString8 cap = get_str("IdCap"); //cap
|
||||
TString80 loc = get_str("Localita"); //località
|
||||
const TString4 com = cap2comune(cap,loc); //codice comune
|
||||
const TString4 stato = get_str("IdNazione"); //stato
|
||||
|
||||
rec.put(CLI_CAPCF, cap);
|
||||
if (com.full())
|
||||
{
|
||||
rec.put(CLI_COMCF, com); //se riesce la CAP2COMUNE, inserisco il codice comune
|
||||
loc = "";
|
||||
rec.put(CLI_LOCCF, loc);
|
||||
}
|
||||
else
|
||||
{
|
||||
rec.put(CLI_COMCF, com);
|
||||
if (stato != "IT" && !stato.blank()) //altrimenti metto tutto nella località, eventualmente concatenando lo stato
|
||||
loc << " - " << stato;
|
||||
rec.put(CLI_LOCCF, loc);
|
||||
}
|
||||
aggiorna_record(rec, lista_campi);
|
||||
test_write(clienti);
|
||||
TString msg;
|
||||
msg << TR("Movimento IVA ") << _kmovcont << " non generato";
|
||||
log(msg);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_conf != NULL)
|
||||
delete _conf;
|
||||
_conf = NULL;
|
||||
TFilename temp(outdir);
|
||||
temp.add(format("ha%06ld", ntran++));
|
||||
temp.ext("ini");
|
||||
if (temp.exist())
|
||||
temp.fremove();
|
||||
_conf = new TConfig(temp);
|
||||
_conf->set_paragraph("Transaction");
|
||||
_conf->set("Action","INSERT");
|
||||
_conf->set("Mode", "AUTO");
|
||||
paragraph.format("%d",LF_MOV);
|
||||
_conf->set_paragraph(paragraph); // testata movimento
|
||||
aggiorna_ini(*_conf, lista_campi);
|
||||
// righe movimento
|
||||
trasferisci_righe();
|
||||
TString msg;
|
||||
msg << TR("Impossibile determinare il codice del fornitore") << " '" << key << '\'';
|
||||
log(msg);
|
||||
msg << TR("Movimento contabile ") << _kmovcont << " generato nel file " << temp;
|
||||
log(msg);
|
||||
}
|
||||
*/
|
||||
|
||||
}
|
||||
return write_enabled();
|
||||
if (_conf != NULL)
|
||||
delete _conf;
|
||||
if (yesno_box(FR("Si desidera confermare l'importazione di %ld movimenti"), ntran-1))
|
||||
{
|
||||
TString app;
|
||||
app << "cg2 -0 -i" << outdir << "/ha*.ini";
|
||||
TExternal_app primanota(app);
|
||||
primanota.run(true);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
THardy_movimenti::THardy_movimenti(int anno) : _anno(anno)
|
||||
{
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TConvMovimentiHardy_mask
|
||||
@ -140,8 +214,7 @@ public:
|
||||
virtual ~TConvMovimentiHardy_mask();
|
||||
};
|
||||
|
||||
|
||||
// Funzione di tarsferimento dati da/verso file .ini con lo stesso nome della maschera
|
||||
// Funzione di trasferimento dati da/verso file .ini con lo stesso nome della maschera
|
||||
// Andrebbe messo in libreria
|
||||
void TConvMovimentiHardy_mask::serialize(bool bSave)
|
||||
{
|
||||
@ -182,7 +255,6 @@ void TConvMovimentiHardy_mask::trasferisci()
|
||||
book.add(log);
|
||||
rep_to_print = true;
|
||||
}
|
||||
|
||||
if (rep_to_print && book.pages() > 0)
|
||||
book.preview();
|
||||
}
|
||||
@ -207,7 +279,8 @@ TConvMovimentiHardy_mask::TConvMovimentiHardy_mask() : TAutomask("hacnv200a")
|
||||
}
|
||||
|
||||
TConvMovimentiHardy_mask::~TConvMovimentiHardy_mask()
|
||||
{ }
|
||||
{
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TConvMovimentiHardy
|
||||
@ -232,3 +305,4 @@ int hacnv200(int argc, char* argv[])
|
||||
ih.run(argc, argv, APPNAME);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -403,3 +403,56 @@ void THardy_transfer::aggiorna_record(TRectype& rec, const TString_array& lista_
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void THardy_transfer::aggiorna_ini(TConfig& conf, const TString_array& lista_campi)
|
||||
{
|
||||
TString campo_dest, campo_orig, valore, str;
|
||||
FOR_EACH_ARRAY_ROW(lista_campi,i,row)
|
||||
{
|
||||
row->get(0, campo_dest);
|
||||
row->get(1, campo_orig);
|
||||
if (campo_orig.full())
|
||||
{
|
||||
if (campo_orig[0] == '_')
|
||||
{
|
||||
if (campo_orig.starts_with("_FISSO")) // valore fisso indicato in configurazione
|
||||
{
|
||||
valore = campo_orig.after(',');
|
||||
valore.trim();
|
||||
} else
|
||||
if (campo_orig.starts_with("_STREXPR")) // formato _STREXPR, espressione
|
||||
{
|
||||
TExpression expr(campo_orig.after(','), _strexpr);
|
||||
for (int v = 0; v < expr.numvar(); v++)
|
||||
{
|
||||
const char* varname = expr.varname(v);
|
||||
expr.setvar(v, get_str(varname));
|
||||
}
|
||||
valore = expr.as_string();
|
||||
valore.trim();
|
||||
} else
|
||||
if (campo_orig.starts_with("_TAB")) // formato _TAB,<tabella da leggere>,<valore CODTAB>, <campo da leggere>
|
||||
{
|
||||
TToken_string elabora(campo_orig, ',');
|
||||
const TString4 tab = elabora.get(1); // tabella da leggere
|
||||
const TString16 codtab = get_str(elabora.get());
|
||||
const TString16 campotab = elabora.get();
|
||||
valore = cache().get(tab, codtab, campotab);
|
||||
}
|
||||
else
|
||||
if (campo_orig.starts_with("_TRADUCI"))
|
||||
{
|
||||
const TString80 campo = campo_orig.after(',');
|
||||
const TString80 contenuto = get_str(campo);
|
||||
TConfig& ini = config();
|
||||
valore = ini.get(contenuto,campo);
|
||||
}
|
||||
else
|
||||
valore.cut(0);
|
||||
}
|
||||
else
|
||||
valore = get_str(campo_orig);
|
||||
conf.set(campo_dest, valore);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -66,6 +66,7 @@ protected:
|
||||
THardy_transfer();
|
||||
virtual bool trasferisci() pure;
|
||||
void aggiorna_record(TRectype& rec, const TString_array& lista_campi);
|
||||
void aggiorna_ini(TConfig& conf, const TString_array& lista_campi);
|
||||
|
||||
public:
|
||||
void init(const char* rh, const char* qh, THardy_log& log);
|
||||
|
@ -442,3 +442,11 @@ long hd_key2cli(const TString& key)
|
||||
codcf = 0;
|
||||
return codcf;
|
||||
}
|
||||
|
||||
// determina codice fornitore campo a partire da codice hardy in base alle regole dettatemi da Robbi
|
||||
|
||||
long hd_key2forn(const TString& key)
|
||||
{
|
||||
const long codcf = atol(key.mid(3,6));
|
||||
return codcf;
|
||||
}
|
@ -219,3 +219,4 @@ const TString& hd_find_codag(long codcf); // Da cliente campo ad agente Hardy (
|
||||
const TString& hd_format_date8(const TDate& data);
|
||||
const TString& hd_format_date6(const TDate& data);
|
||||
long hd_key2cli(const TString& key);
|
||||
long hd_key2forn(const TString& key);
|
||||
|
Loading…
x
Reference in New Issue
Block a user