Patch level : 10.0 538

Files correlati     : tc0.exe
Ricompilazione Demo : [ ]

programma per l'importazione del piano dei conti causali e codici iva


git-svn-id: svn://10.65.10.50/trunk@19702 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2009-12-02 01:18:08 +00:00
parent c827bf892c
commit 100e004b48
2 changed files with 44 additions and 81 deletions

View File

@ -9,10 +9,7 @@
#include "tc0.h" #include "tc0.h"
#include "tc0600a.h" #include "tc0600a.h"
#include "tabmod.h"
#include "pconti.h"
#include "causali.h"
#include "tabutil.h"
/////////////////////////////////////////////// ///////////////////////////////////////////////
//// CLASSI DERIVATE PER IMPORTAZIONE DATI //// //// CLASSI DERIVATE PER IMPORTAZIONE DATI ////
@ -151,54 +148,35 @@ TDocTS& app() { return (TDocTS&) main_app(); }
void TDocTS::upload_pconti (const TFilename& file, TLog_report& log) const void TDocTS::upload_pconti (const TFilename& file, TLog_report& log) const
{ {
TImporta_pconto_recordset s(file); //crea un recordset con struttura predefinita come indicato nella classe opportuna TImporta_pconto_recordset s(file); //crea un recordset con struttura predefinita come indicato nella classe opportuna
TModule_table pconti("TCO");
TLocalisamfile pconti(LF_PCON); //instanzio l'ISAM file che lavota sulla tabella PCON
TProgind pi(s.items(),"Importazione Piano dei Conti in Corso...",true,true); TProgind pi(s.items(),"Importazione Piano dei Conti in Corso...",true,true);
for (bool ok=s.move_first();ok;ok=s.move_next()) for (bool ok=s.move_first();ok;ok=s.move_next())
{ {
if (!pi.addstatus(1)) if (!pi.addstatus(1))
break; break;
//salto le righe di testata del file //salto le righe di testata del file
//per farlo leggo il gruppo e controllo che sia numerico //per farlo leggo il gruppo e controllo che sia numerico
TString dconto = s.get(1).as_string(); TString dconto = s.get(1).as_string();
if (!isdigit(dconto[1])) if (dconto.blank() || !isdigit(dconto[1]))
continue; continue;
pconti.zero();
TString4 gr = dconto.mid(0,2); //leggo il gruppo
TString4 gr = dconto.left(2); //leggo il gruppo
TString4 co = dconto.mid(3,2); //leggo il conto TString4 co = dconto.mid(3,2); //leggo il conto
TString4 sc = dconto.mid(6,3); //leggo il sottoconto TString4 sc = dconto.mid(6,3); //leggo il sottoconto
TString conto = gr; //leggo il gruppo
TString desc = s.get(2).as_string(); //leggo la descrizione TString desc = s.get(2).as_string(); //leggo la descrizione
if (co == " " || co == "**") conto << ((co.blank() || co == "**") ? "00" : co);
{ conto << ((sc.blank() || sc == "***") ? "000" : sc);
co = "00"; pconti.put("CODTAB", conto); //put del gruppo
atoi(co); pconti.put("S0", desc); //put del conto
}
if (sc == " " || sc == "***") int err = pconti.write_rewrite(); //Tenta di aggiungere un record ma se esiste gia' lo aggiorna
{ TString str = "Il Conto ";
sc = "000";
atoi(sc);
}
pconti.zero();
pconti.put(PCN_GRUPPO,gr); //put del gruppo
pconti.put(PCN_CONTO,co); //put del conto
pconti.put(PCN_SOTTOCONTO,sc); //put del sottoconto
pconti.put(PCN_DESCR,desc); //put della descrizione
TString str = "Il Conto ";
str << gr << " " << " " << co << " " << sc;
//pconti.put(PCN_???,s.get("TCONTO").as_string());
int err = pconti.write_rewrite(); //Tenta di aggiungere un record ma se esiste gia' lo aggiorna
str << conto;
if (err == NOERR) if (err == NOERR)
{ {
str << " è stato inserito"; str << " è stato inserito";
@ -213,53 +191,42 @@ void TDocTS::upload_pconti (const TFilename& file, TLog_report& log) const
return; return;
} }
//funzione che importa il piano dei conto sulla tabella corretta
void TDocTS::upload_causali(const TFilename& file, TLog_report& log) const void TDocTS::upload_causali(const TFilename& file, TLog_report& log) const
{ {
TScanner s(file); //legge il file che gli passo riga per riga TScanner s(file); //legge il file che gli passo riga per riga
TString curr = s.line(); TString curr = s.line();
TModule_table causa("TCA");
TLocalisamfile causa(LF_CAUSALI); //instanzio l'ISAM file che lavota sulla tabella CAUS
TProgind pi(fsize(file),"Importazione Causali in Corso...",true,true); TProgind pi(fsize(file),"Importazione Causali in Corso...",true,true);
while (s.ok()) while (s.ok())
{ {
if (!pi.addstatus(s.tellg())) if (!pi.addstatus(s.tellg()))
break; break;
causa.zero();
curr = s.line(); curr = s.line();
TString8 cod = curr.mid(1,6);
cod.trim(); TString8 cod = curr.mid(1,6);
TString desc = curr.mid(7,16); TString desc = curr.mid(7,16);
//salto le righe di testata del file //salto le righe di testata del file
if (!real::is_natural(cod)) cod.trim();
if (cod.blank() || !real::is_natural(cod))
continue; continue;
cod.lpad(3, '0');
if (cod.len() > 3) if (cod.len() > 3)
{ {
TString errore = "ERRORE:"; TString errore = "ERRORE:";
errore <<" la causale con codice " << cod << " non può essere inserita (codice max 3 caratteri)";
errore <<" la causale con codice " << cod << " non può essere inserita (codice max 3 caratteri)";
log.log(2,errore); log.log(2,errore);
} }
causa.put("CODTAB",cod);
//il codice causale deve essere sempre di tre caratteri zero-filled causa.put("S0",desc);
while (cod.len() < 3)
{
cod.insert("0",0);
}
causa.zero();
causa.put(CAU_CODCAUS,cod);
causa.put(CAU_DESCR,desc);
int err = causa.write_rewrite(); //Tenta di aggiungere un record ma se esiste gia' lo aggiorna
int err = causa.write_rewrite(); //Tenta di aggiungere un record ma se esiste gia' lo aggiorna
TString str = "La Causale con codice "; TString str = "La Causale con codice ";
str << cod;
str << cod;
if (err == NOERR) if (err == NOERR)
{ {
str << " è stata inserita"; str << " è stata inserita";
@ -280,44 +247,40 @@ void TDocTS::upload_causali(const TFilename& file, TLog_report& log) const
void TDocTS::upload_codiva(const TFilename& file, TLog_report& log) const void TDocTS::upload_codiva(const TFilename& file, TLog_report& log) const
{ {
TScanner s(file); //crea un recordset con struttura predefinita come indicato nella classe opportuna TScanner s(file); //crea un recordset con struttura predefinita come indicato nella classe opportuna
TModule_table iva("IVA"); //instanzio l'ISAM file che lavota sulla tabella IVA
TTable iva("%IVA"); //instanzio l'ISAM file che lavota sulla tabella IVA
TProgind pi(fsize(file),"Importazione Dati IVA in Corso...",true,true); TProgind pi(fsize(file),"Importazione Dati IVA in Corso...",true,true);
while(s.ok()) while(s.ok())
{ {
if (!pi.addstatus(s.tellg())) if (!pi.addstatus(s.tellg()))
break; break;
//salto le righe di testata del file //salto le righe di testata del file
TString curr = s.line(); iva.zero();
TString8 cod = curr.mid(1,8);
cod.trim();
TString desc = curr.mid(9,20);
//salto le righe di testata del file
if (!real::is_natural(cod))
continue;
TString curr = s.line();
TString8 cod = curr.mid(1,8);
TString desc = curr.mid(9,18);
//salto le righe di testata del file
cod.trim();
if (cod.blank() || !real::is_natural(cod))
continue;
cod.lpad(4, '0');
if (cod.len() > 4) if (cod.len() > 4)
{ {
TString errore = "ERRORE:"; TString errore = "ERRORE:";
errore <<" i dati IVA con codice " << cod << " non possono essere inseriti (codice max 4 caratteri)";
errore <<" i dati IVA con codice " << cod << " non possono essere inseriti (codice max 4 caratteri)";
log.log(2,errore); log.log(2,errore);
} }
iva.zero();
iva.put("CODTAB",cod); iva.put("CODTAB",cod);
iva.put("S0",desc); iva.put("S0",desc);
int err = iva.write_rewrite(); //Tenta di aggiungere un record ma se esiste gia' lo aggiorna int err = iva.write_rewrite(); //Tenta di aggiungere un record ma se esiste gia' lo aggiorna
TString str = "I dati IVA con codice "; TString str = "I dati IVA con codice ";
str << cod;
str << cod;
if (err == NOERR) if (err == NOERR)
{ {
str << " sono stati inseriti"; str << " sono stati inseriti";
@ -407,6 +370,6 @@ void TDocTS::main_loop()
int tc0600 (int argc, char* argv[]) int tc0600 (int argc, char* argv[])
{ {
TDocTS main_app; TDocTS main_app;
main_app.run(argc, argv, TR("Importazione Clienti/Fornitori")); main_app.run(argc, argv, TR("Importazione Tabelle"));
return true; return true;
} }

View File

@ -967,7 +967,7 @@ void TTS_sender::add_datiiva(const TRecordset& mov)
long codiva = cod2ricl("TSIVA", rmoviva.get(RMI_CODIVA)); long codiva = cod2ricl("TSIVA", rmoviva.get(RMI_CODIVA));
long codiva11 = 0L; long codiva11 = 0L;
//da modificare nella 3.1 //da modificare nella 3.1
const bool indetraibile = rmoviva.get(RMI_TIPODET).as_int() > 0; const bool indetraibile = rmoviva.get(RMI_TIPODET).as_string().full();
const TString4 tipocr = rmoviva.get(RMI_TIPOCR).as_string(); const TString4 tipocr = rmoviva.get(RMI_TIPOCR).as_string();
const bool acqvent = _ventilazione && (imposta != ZERO) && tipocr == "1"; const bool acqvent = _ventilazione && (imposta != ZERO) && tipocr == "1";