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:
guy 2010-12-15 14:16:07 +00:00
parent a72778a6ce
commit a5aeb839e4
7 changed files with 312 additions and 88 deletions

View File

@ -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)
{

View File

@ -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

View File

@ -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;
}

View File

@ -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);
}
}
}

View File

@ -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);

View File

@ -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;
}

View File

@ -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);