Patch level : 4.0

Files correlati     : crpa0
Ricompilazione Demo : [ ]
Commento            :
Riscirtte in C++ le scritture su file di testo
e sostituiti strani "quadrifogli" con ";" alla fine degli statement sql


git-svn-id: svn://10.65.10.50/trunk@14244 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2006-08-11 13:15:42 +00:00
parent b1728505ea
commit 9552027b8a

@ -1,10 +1,5 @@
#include <fstream.h>
#include <applicat.h>
#include <config.h>
#include <currency.h>
#include <date.h>
#include <execp.h>
#include <recarray.h>
#include <tabutil.h>
#include <utility.h>
@ -12,9 +7,12 @@
#include <cfven.h>
#include <mov.h>
#include "..\ce\collces.h"
#include "..\ve\velib.h"
#include "..\cg\cg2103.h"
#include "../ce/collces.h"
#include "../ve/velib.h"
#include "../cg/cg2103.h"
#include "../ca/movana.h"
#include "../ca/rmovana.h"
class TIni2Sql: public TSkeleton_application
{
@ -32,7 +30,7 @@ class TIni2Sql: public TSkeleton_application
TRiga_documento* _rigadoc;
TFilename _inputfilename;
TBill _conto;
TToken_string* _search_seq;
TToken_string _search_seq;
// Sequenza di ricerca del conto costo/ricavo la correttezza dell'ordinamento
// va controllata nel programma di modifica parametri:
// "" = fine ordinamento
@ -82,7 +80,7 @@ bool TIni2Sql::create()
{
if (argc() > 1)
{
_inputfilename = argv()[1];
_inputfilename = argv(1);
if (_inputfilename[0] == '/' || _inputfilename[0] == '-')
_inputfilename.ltrim(2);
if (_inputfilename.exist())
@ -111,8 +109,7 @@ bool TIni2Sql::create()
bool TIni2Sql::test_swap_conto(const int gr, const int co, const char sezione) const
{
TToken_string key;
key.format("%d|%d", gr, co);
TString8 key; key.format("%d|%d", gr, co);
const int indbil = atoi(cache().get(LF_PCON, key, "INDBIL"));
return ((indbil == 3) && (sezione == 'A')) || ((indbil == 4) && (sezione == 'D'));
}
@ -120,14 +117,13 @@ bool TIni2Sql::test_swap_conto(const int gr, const int co, const char sezione) c
bool TIni2Sql::test_swap() const
{
bool s = false;
if (_caus != NULL)
if (*_caus->codice() > ' ') // esiste la causale
{
const char sez = _caus->sezione_clifo();
const TipoIVA iva = _caus->iva();
const bool vendite = iva == nessuna_iva ? _doc->tipocf() == 'C' : iva == iva_vendite;
s = vendite ^ (sez == 'D');
}
if (_caus != NULL && *_caus->codice() > ' ') // esiste la causale
{
const char sez = _caus->sezione_clifo();
const TipoIVA iva = _caus->iva();
const bool vendite = iva == nessuna_iva ? _doc->tipocf() == 'C' : iva == iva_vendite;
s = vendite ^ (sez == 'D');
}
return s;
}
@ -241,18 +237,21 @@ void TIni2Sql::leggidadoc(const TString& elabfield, TString& tmpstr)
bool TIni2Sql::search_costo_ricavo(TBill& conto, const TRiga_documento& r)
{
TConfig conf(CONFIG_DITTA, "ve");
_search_seq = new TToken_string((const char*)conf.get("RICERCACR","ve"));
// costruisce la stringa che controlla la ricerca del conto costo/ricavo
// Attenzione! non esegue alcun controllo di consistenza sulla corretta sequenza
// presuppone che il programma di configurazione abbia generato correttamente
// il tutto.
if (_search_seq->items() == 0)
{
error_box("Non e' abilitata alcuna ricerca per il conto di costo/ricavo in configurazione.");
return FALSE;
}
const int items = _search_seq->items();
if (_search_seq.empty())
{
TConfig conf(CONFIG_DITTA, "ve");
_search_seq = conf.get("RICERCACR");
// costruisce la stringa che controlla la ricerca del conto costo/ricavo
// Attenzione! non esegue alcun controllo di consistenza sulla corretta sequenza
// presuppone che il programma di configurazione abbia generato correttamente
// il tutto.
if (_search_seq.items() == 0)
{
error_box("Non e' abilitata alcuna ricerca per il conto di costo/ricavo in configurazione.");
return FALSE;
}
}
const int items = _search_seq.items();
TLocalisamfile& cli_file = _clifo->lfile(); // YES, arriva qui dentro quando la relazione e' gia' posizionata
const bool is_cli = cli_file.get(CLI_TIPOCF) == "C";
bool skip_art_related = FALSE;
@ -296,7 +295,7 @@ bool TIni2Sql::search_costo_ricavo(TBill& conto, const TRiga_documento& r)
// Scorre la stringa di ricerca
for (int i=0;i<items;i++)
{
tok = _search_seq->get(i);
tok = _search_seq.get(i);
if (tok == "CF")
{
if (skip_clifo) continue;
@ -407,7 +406,7 @@ bool TIni2Sql::search_costo_ricavo(TBill& conto, const TRiga_documento& r)
// Scorre la stringa di ricerca ma solo per causale o CLI/FO
for (int i=0;i<items;i++)
{
tok = _search_seq->get(i);
tok = _search_seq.get(i);
if (tok == "CF")
{
if (skip_clifo) continue;
@ -877,10 +876,13 @@ void TIni2Sql::write_sqlinsert()
_firm = _inputfile->get_int("Firm", "Transaction");
TString16 firm;
firm.format("%ld", _firm);
if (_configfile->get((const char*)firm, "Ditte")[0] == 'S')
if (_configfile->get(firm, "Ditte")[0] == 'S')
{
if (_firm != get_firm())
{
set_firm(_firm);
_search_seq.cut(0); // Forzo ricostruzione della sequenza
}
FOR_EACH_ARRAY_ROW(lp, p, paragrafo)
{
if (*paragrafo == "Transaction")
@ -918,17 +920,9 @@ void TIni2Sql::write_sqlinsert()
}
if (strpar == "108")
{
/* Come NON si deve fare: leggere e poi cancellare
TString gruppo(_inputfile->get("CODCONTO"));
const int codgruppo = atoi(gruppo.left(3));
gruppo.format("%ld", codgruppo);
ok = _configfile->get_bool(gruppo, "Gruppi");
*/
// E' meglio lavorare localmente senza TString nello heap o temporanee (left).
// In questo modo non ho nessuna TString, left(), atoi, format!
TString16 gruppo = _inputfile->get("CODCONTO");
gruppo.cut(3); gruppo.ltrim('0');
TString16 gruppo = _inputfile->get("CODCONTO");
gruppo.cut(3);
gruppo.format("%d", atoi(gruppo));
ok = _configfile->get_bool(gruppo, "Gruppi");
}
// vecchia condizione: se riga documento deve avere codice iva oppure essere tipo riga spesa e avere gruppo 4 o 5 (andare su anamag con codart o )
@ -1025,14 +1019,10 @@ void TIni2Sql::write_sqlinsert()
colonne.insert(" ("); colonne << ") ";
valori.insert(" VALUES ("); valori << ") ";
_sqlfile->write(insert, insert.len());
*_sqlfile << endl;
_sqlfile->write(colonne, colonne.len());
*_sqlfile << endl;
_sqlfile->write(valori, valori.len());
*_sqlfile << endl;
_sqlfile->put('æ');
*_sqlfile << endl;
*_sqlfile << insert << endl;
*_sqlfile << colonne << endl;
*_sqlfile << valori << endl;
*_sqlfile << ';' << endl;
}
}
if (!almenounariga)
@ -1040,7 +1030,6 @@ void TIni2Sql::write_sqlinsert()
if (_sqlfile != NULL)
delete _sqlfile;
_sqlfile = new ofstream("crpa.sql");
_sqlfile->write("",0);
write_sqldelete();
}
}
@ -1090,12 +1079,8 @@ void TIni2Sql::write_sqldelete()
if (condizione.not_empty())
{
condizione.insert(" WHERE ("); condizione << ") ";
_sqlfile->write(cancella, cancella.len());
_sqlfile->write(condizione, condizione.len());
*_sqlfile << endl;
_sqlfile->put('æ');
*_sqlfile << endl;
*_sqlfile << cancella << condizione << endl;
*_sqlfile << ';' << endl;
}
}
}
@ -1105,7 +1090,6 @@ void TIni2Sql::write_sqldelete()
void TIni2Sql::main_loop()
{
_sqlfile = new ofstream("crpa.sql");
_sqlfile->write("",0);
TString16 action = _inputfile->get("Action", "Transaction");
action.upper();