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