campo-sirio/cg/cg6904.cpp

1083 lines
34 KiB
C++
Executable File

#include "cg6900.h"
#include "cg6900a.h"
#include <math.h>
bool TInv_cont::invio_contabilita_PC()
{
char sigla;
TString nrec,files;
bool header = TRUE;
int size = 1024;
_numrec_cau = 0;
_numrec_clifo = 0;
_numrec_pcon = 0;
_numrec_pn = 0;
_numrec_iva = 0;
_tras_file.open(_header);
leggi_record_controllo();
files = _tras_file.sigle_file();
nrec = _tras_file.nrec_file();
files.trim();
_tras_file.open(_trasf,TRUE);
for (int i = 0; i < files.len();i++)
{
sigla = files[i];
//_numrec = atol(nrec.mid(i * 6,6));
if (header)
{
_control_rec.cut(size);
_control_rec.overwrite(" ",300); //Nel caso di invio a PC pulisco la ditta aggiuntiva dal record di controllo
_tras_file.write_control_rec(_control_rec,size);
header = FALSE;
}
switch (sigla)
{
case 'W':
{
long cicli = _tcaus->items() + _trcaus->items();
_prog = new TProgind(cicli,"Tabella Causali: generazione file TRASFER per PC\nPrego attendere.",FALSE);
invio_testata_causali();
invio_righe_causali();
delete _prog;
break;
}
case 'A':
invio_clienti_fornitori();
break;
case 'P':
invio_piano_conti();
break;
case 'Z':
{
long cicli = _tmov->items() + _trmov->items();
_prog = new TProgind(cicli,"Movimenti di Prima nota: generazione file TRASFER per PC\nPrego attendere.",FALSE);
invio_testata_movimenti();
invio_righe_contabili();
delete _prog;
break;
}
case 'U':
invio_righe_IVA();
break;
default:
break;
};
}
aggiorna_header(files);
aggiorna_trasfer(files);
TString str;
calcola_totale_record();
str.format("%06ld", _tot_rec);
aggiorna_marker(str,26);
return TRUE;
}
void TInv_cont::invio_testata_causali()
{
int size = 1024;
TString record(size);
TString cod;
_tras_file.open(_trasf,TRUE);
for (_tcaus->first(); !_tcaus->eof(); _tcaus->next())
{
TString str;
_prog->addstatus(1);
record.spaces();
const char* codcau = _tcaus->get(CAU_CODCAUS);
if (real::is_natural(codcau))
str.format("%03s", (const char*) codcau);
else
str.format("%-3s", (const char*) codcau);
record.overwrite("W1",0); //Tipo record
record.overwrite(str,2); //Codice causale
TString descr = _tcaus->get(CAU_DESCR);
descr.format("%-50s", (const char*) descr);
record.overwrite(descr,60); //Descrizione
TString tipodoc = _tcaus->get(CAU_TIPODOC);
str.format("%-2s", (const char*) tipodoc);
record.overwrite(tipodoc,110); //Tipo documento
TString movap = _tcaus->get(CAU_MOVAP);
if (movap.not_empty())
record.overwrite(movap,112);
bool alleg = _tcaus->get_bool(CAU_ALLEG);
if (alleg)
record.overwrite("X",113);
else
record.overwrite(" ",113);
bool intracom = _tcaus->get_bool(CAU_INTRACOM);
if (intracom)
record.overwrite("X",114);
else
record.overwrite(" ",114);
TString reg = _tcaus->get(CAU_REG);
if (real::is_natural(reg))
{
int app = atoi(reg);
reg.format("%03d", app);
}
else
reg.format("%-3s", (const char*) reg);
record.overwrite(reg,115); //Registro IVA
bool movval = _tcaus->get_bool(CAU_MOVVAL);
if (movval)
record.overwrite("X",118);
else
record.overwrite(" ",118);
int tipomov = _tcaus->get_int(CAU_TIPOMOV);
str.format("%d", tipomov);
record.overwrite(str,119);
bool datadoc = _tcaus->get_bool(CAU_DATADOC);
if (datadoc)
record.overwrite("X",120);
else //Flag immissione data documento
record.overwrite(" ",120);
bool numdoc = _tcaus->get_bool(CAU_NUMDOC);
if (numdoc)
record.overwrite("X",121);
else //Flag immissione numero documento
record.overwrite(" ",121);
bool autofatt = _tcaus->get_bool(CAU_AUTOFATT);
if (autofatt)
record.overwrite("X",122);
else //Autofattura art.34
record.overwrite(" ",122);
bool ritfatt = _tcaus->get_bool(CAU_RITFATT);
if (ritfatt)
record.overwrite("X",123);
else //Flag causale per fattura ricevuta in ritardo
record.overwrite(" ",123);
TString cespiti = _tcaus->get(CAU_COLLCESP);
if (cespiti.not_empty())
record.overwrite(cespiti,124); //Collegamento cespiti
TString m770 = _tcaus->get(CAU_M770);
if (m770.not_empty())
record.overwrite(m770,125); //Collegamento modello 770
const char* codcausim = _tcaus->get(CAU_CODCAUSIM);
if (real::is_natural(codcausim))
str.format("%03s", (const char*) codcausim);
else
str.format("%-3s", (const char*) codcausim);
record.overwrite(str,126); //Codice causale per incasso immediato
bool sospeso = _tcaus->get_bool(CAU_SOSPESO);
if (sospeso)
record.overwrite("X",129);
else
record.overwrite(" ",129);
bool valintra = _tcaus->get_bool(CAU_VALINTRA);
if (valintra)
record.overwrite("X",130);
else //Gestione valuta per oper. intracomunitarie
record.overwrite(" ",130);
_numrec_cau++;
_tras_file.write_control_rec(record,size);
}
_tras_file.close();
}
void TInv_cont::invio_righe_causali()
{
int size = 1024;
TString record(size);
TString cod;
_tras_file.open(_trasf,TRUE);
for (_trcaus->first(); !_trcaus->eof(); _trcaus->next())
{
TString str;
_prog->addstatus(1);
record.spaces();
const char* codcau = _trcaus->get(CAU_CODCAUS);
if (real::is_natural(codcau))
str.format("%03s", (const char*) codcau);
else
str.format("%-3s", (const char*) codcau);
record.overwrite("W2",0); //Tipo record
record.overwrite(str,2); //Codice causale
int nriga = _trcaus->get_int(RCA_NRIGA);
str.format("%03d", nriga);
record.overwrite(str,5);
int g = _trcaus->get_int (RCA_GRUPPO);
str.format("%03d", g);
record.overwrite(str,60); //Gruppo
int c = _trcaus->get_int (RCA_CONTO);
str.format("%03d", c);
record.overwrite(str,63); //Conto
long s = _trcaus->get_long(RCA_SOTTOCONTO);
str.format("%06ld", s);
record.overwrite(str,66); //Sottoconto
TString coddesc = _trcaus->get(RCA_CODDESC);
str.format("%-5s", (const char*) coddesc);
record.overwrite(str,72); //Codice descrizione
TString sez = _trcaus->get(RCA_SEZIONE);
record.overwrite(sez,77); //Sezione
_tras_file.write_control_rec(record,size);
}
_tras_file.close();
}
void TInv_cont::invio_clienti_fornitori()
{
int size = 1024;
TString record(size);
long cicli = _tclifo->items();
_prog = new TProgind(cicli,"Anagrafica Clienti/Fornitori: generazione file TRASFER per PC\nPrego attendere.",FALSE);
_tras_file.open(_trasf,TRUE);
for (_tclifo->first(); !_tclifo->eof(); _tclifo->next())
{
TString str;
_prog->addstatus(1);
record.spaces();
TString tipo = _tclifo->get(CLI_TIPOCF);
record.overwrite("A1",0); //Tipo record
record.overwrite(tipo,2); //Tipo cliente/fornitore
long codice = _tclifo->get_long(CLI_CODCF);
str.format("%06ld", codice);
record.overwrite(str,3); //Codice cliente/fornitore
TString ragsoc = _tclifo->get(CLI_RAGSOC);
str.format("%-50s", (const char*) ragsoc);
record.overwrite(str,60); //Ragione sociale
TString indcf = _tclifo->get(CLI_INDCF);
str.format("%-35s", (const char*) indcf);
record.overwrite(str,110); //Indirizzo
TString civcf = _tclifo->get(CLI_CIVCF);
str.format("%-10s", (const char*) civcf);
record.overwrite(str,145); //Numero civico
TString localita = _tclifo->get(CLI_LOCCF);
str.format("%-35s", (const char*) localita);
record.overwrite(str,155); //Localita'
TString stato = _tclifo->get(CLI_STATOCF);
str.format("%-3s", (const char*) stato);
record.overwrite(str,190); //Stato
TString comcf = _tclifo->get(CLI_COMCF);
str.format("%-4s", (const char*) comcf);
record.overwrite(str,193); //Comune
TString capcf = _tclifo->get(CLI_CAPCF);
str.format("%-5s", (const char*) capcf);
record.overwrite(str,247); //Codice di avviamento postale
TString cofi = _tclifo->get(CLI_COFI);
str.format("%-16s", (const char*) cofi);
record.overwrite(str,252); //Codice fiscale
TString statopaiv = _tclifo->get(CLI_STATOPAIV);
str.format("%-2s", (const char*) statopaiv);
record.overwrite(str,268); //Stato partita iva
TString paiv = _tclifo->get(CLI_PAIV);
str.format("%-12s", (const char*) paiv);
record.overwrite(str,270); //Partita IVA
TString tipop = _tclifo->get(CLI_TIPOPERS);
record.overwrite(tipop,282); //Tipo persona
TString alleg = _tclifo->get(CLI_ALLEG);
record.overwrite(alleg,283); //Flag gestione allegato
long codalleg = _tclifo->get_long(CLI_CODALLEG);
str.format("%06ld", codalleg);
record.overwrite(str,284);
int gruppo = _tclifo->get_int (CLI_GRUPPO);
int conto = _tclifo->get_int (CLI_CONTO);
str.format("%03d", gruppo);
record.overwrite(str,290); //Gruppo prevalente
str.format("%03d", conto);
record.overwrite(str,293); //Conto prevalente
int gruppor = _tclifo->get_int (CLI_GRUPPORIC);
int contor = _tclifo->get_int (CLI_CONTORIC);
long sottocr = _tclifo->get_long(CLI_SOTTOCRIC);
str.format("%03d", gruppor);
record.overwrite(str,296); //Gruppo di costo/ricavo
str.format("%03d", contor);
record.overwrite(str,299); //Conto di costo/ricavo
str.format("%06ld", sottocr);
record.overwrite(str,302); //Sottoconto di costo/ricavo
TString ptel = _tclifo->get(CLI_PTEL);
str.format("%-10s", (const char*) ptel);
record.overwrite(str,308);
TString tel = _tclifo->get(CLI_TEL);
str.format("%-30s", (const char*) tel);
record.overwrite(str,318);
TString ptel2 = _tclifo->get(CLI_PTEL2);
str.format("%-10s", (const char*) ptel2);
record.overwrite(str,348);
TString tel2 = _tclifo->get(CLI_TEL2);
str.format("%-30s", (const char*) tel2);
record.overwrite(str,358);
TString ptel3 = _tclifo->get(CLI_PTEL3);
str.format("%-10s", (const char*) ptel3);
record.overwrite(str,388);
TString tel3 = _tclifo->get(CLI_TEL3);
str.format("%-30s", (const char*) tel3);
record.overwrite(str,398);
TString pfax = _tclifo->get(CLI_PFAX);
str.format("%-10s", (const char*) pfax);
record.overwrite(str,428);
TString fax = _tclifo->get(CLI_FAX);
str.format("%-30s", (const char*) fax);
record.overwrite(str,438);
TString ptelex = _tclifo->get(CLI_PTELEX);
str.format("%-10s", (const char*) ptelex);
record.overwrite(str,468);
TString telex = _tclifo->get(CLI_TELEX);
str.format("%-30s", (const char*) telex);
record.overwrite(str,478);
TString data = _tclifo->get(CLI_DATANASC);
TString app = riconverti(data,TRUE);
str.format("%08s", (const char*) app);
record.overwrite(str,508); //Data di registrazione
int statonasc = _tclifo->get_int(CLI_STATONASC);
str.format("%03d", statonasc);
record.overwrite(str,516);
TString comnasc = _tclifo->get(CLI_COMNASC);
str.format("%-4s", (const char*) comnasc);
record.overwrite(str,519);
TString codstat = _tclifo->get(CLI_CODSTAT);
str.format("%-7s", (const char*) codstat);
record.overwrite(str,573);
long codabi = _tclifo->get_long(CLI_CODABI);
str.format("%05ld", codabi);
record.overwrite(str,580);
long codcab = _tclifo->get_long(CLI_CODCAB);
str.format("%05ld", codcab);
record.overwrite(str,585);
bool occas = _tclifo->get_bool(CLI_OCCAS);
if (occas)
record.overwrite("X", 590);
else
record.overwrite(" ", 590);
TString codval = _tclifo->get(CLI_CODVAL);
str.format("%-3s", (const char*) codval);
record.overwrite(str,591);
TString codlin = _tclifo->get(CLI_CODLIN);
record.overwrite(codlin,594);
real fido (_tclifo->get_real(CLI_FIDO));
str.format("%015s", (const char*) fido.string());
record.overwrite(str,595);
TString codpag = _tclifo->get(CLI_CODPAG);
str.format("%-4s", (const char*) codpag);
record.overwrite(str,610);
bool sospeso = _tclifo->get_bool(CLI_SOSPESO);
if (sospeso)
record.overwrite("X",614);
else
record.overwrite(" ",614);
_numrec_clifo++;
_tras_file.write_control_rec(record,size);
}
delete _prog;
_tras_file.close();
}
void TInv_cont::invio_piano_conti()
{
int size = 1024;
TString record(size);
long cicli = _tpcon->items();
_prog = new TProgind(cicli,"Anagrafica Piano Conti: generazione file TRASFER per PC\nPrego attendere.",FALSE);
_tras_file.open(_trasf,TRUE);
for (_tpcon->first(); !_tpcon->eof(); _tpcon->next())
{
TString str;
_prog->addstatus(1);
record.spaces();
int g = _tpcon->get_int (PCN_GRUPPO);
int c = _tpcon->get_int (PCN_CONTO);
long s = _tpcon->get_long(PCN_SOTTOCONTO);
// Se si tratta di un GRUPPO
if (g != 0 && c == 0 && s == 0)
{
record.overwrite("P1",0); //Tipo record
str.format("%03d", g);
record.overwrite(str,2); //Gruppo
TString descr (_tpcon->get(PCN_DESCR));
str.format("%-50s", (const char*) descr);
record.overwrite(str,60); //Descrizione gruppo
}
// Se si tratta di un CONTO
if (g != 0 && c != 0 && s == 0)
{
record.overwrite("P2",0); //Tipo record
str.format("%03d", g);
record.overwrite(str,2); //Gruppo
str.format("%03d", c);
record.overwrite(str,5); //Conto
TString descr (_tpcon->get(PCN_DESCR));
str.format("%-50s", (const char*) descr);
record.overwrite(str,60); //Descrizione conto
int indbil = _tpcon->get_int(PCN_INDBIL);
str.format("%d", indbil);
record.overwrite(str,110); //Indicatore di bilancio
TString tmcf = _tpcon->get(PCN_TMCF);
record.overwrite(tmcf,111); //Flag conto cliente/fornitore
bool stsottbil = _tpcon->get_bool(PCN_STSOTTBIL);
if (stsottbil)
record.overwrite("X",112);
else
record.overwrite(str,112); //Flag stampa dettaglio sottoconti su bilancio
bool compens = _tpcon->get_bool(PCN_COMPENS);
if (compens)
record.overwrite("X",113);
else
record.overwrite(" ",113);
// Classe IV direttiva CEE
TString sez = _tpcon->get(PCN_SEZIVD);
if (sez == "0")
sez = " ";
record.overwrite(sez,114); //Sezione IV dir
TString let = _tpcon->get(PCN_LETTIVD);
record.overwrite(let,115); //Lettera IV dir
int numrom = atoi(_tpcon->get(PCN_NUMRIVD));
str.format("%8d", numrom);
record.overwrite(str,116); //Numero romano IV dir
int num = _tpcon->get_int(PCN_NUMIVD);
str.format("%02d", num);
record.overwrite(str,124); //Numero arabo IV dir
// Classe IV direttiva CEE di segno opposto
TString sezop = _tpcon->get(PCN_SEZIVDOPP);
if (sezop == "0")
sezop = " ";
record.overwrite(sezop,126); //Sezione IV dir
TString letop = _tpcon->get(PCN_LETTIVDOPP);
record.overwrite(letop,127); //Lettera IV dir
int numromop = atoi(_tpcon->get(PCN_NUMRIVDOPP));
str.format("%8d", numromop);
record.overwrite(str,128); //Numero romano IV dir
int numop = _tpcon->get_int(PCN_NUMIVDOPP);
str.format("%02d", numop);
record.overwrite(str,136); //Numero arabo IV dir
}
// Se si tratta di un SOTTOCONTO
if (g != 0 && c != 0 && s != 0)
{
record.overwrite("P3",0); //Tipo record
str.format("%03d", g);
record.overwrite(str,2); //Gruppo
str.format("%03d", c);
record.overwrite(str,5); //Conto
str.format("%06ld", s);
record.overwrite(str,8); //Sottoconto
TString descr (_tpcon->get(PCN_DESCR));
str.format("%-50s", (const char*) descr);
record.overwrite(str,60); //Descrizione sottoconto
int tipospric = _tpcon->get_int(PCN_TIPOSPRIC);
str.format("%d", tipospric);
record.overwrite(str,110); //Tipo costo/ricavo
TString sezsaldi = _tpcon->get(PCN_SEZSALDI);
record.overwrite(sezsaldi,111);
bool sospeso = _tpcon->get_bool(PCN_SOSPESO);
if (sospeso)
record.overwrite("X",112);
else
record.overwrite(" ",112);
// Classe IV direttiva CEE
TString sez = _tpcon->get(PCN_SEZIVD);
if (sez == "0")
sez = " ";
record.overwrite(sez,113); //Sezione IV dir
TString let = _tpcon->get(PCN_LETTIVD);
record.overwrite(let,114); //Lettera IV dir
int numrom = atoi(_tpcon->get(PCN_NUMRIVD));
str.format("%8d", numrom);
record.overwrite(str,115); //Numero romano IV dir
int num = _tpcon->get_int(PCN_NUMIVD);
str.format("%02d", num);
record.overwrite(str,123); //Numero arabo IV dir
// Classe IV direttiva CEE di segno opposto
TString sezop = _tpcon->get(PCN_SEZIVDOPP);
if (sezop == "0")
sezop = " ";
record.overwrite(sezop,125); //Sezione IV dir
TString letop = _tpcon->get(PCN_LETTIVDOPP);
record.overwrite(letop,126); //Lettera IV dir
int numromop = atoi(_tpcon->get(PCN_NUMRIVDOPP));
str.format("%8d", numromop);
record.overwrite(str,127); //Numero romano IV dir
int numop = _tpcon->get_int(PCN_NUMIVDOPP);
str.format("%02d", numop);
record.overwrite(str,135); //Numero arabo IV dir
int ricser = _tpcon->get_int(PCN_RICSER);
str.format("%d", ricser);
record.overwrite(str,137); //Tipo attivita'
}
_numrec_pcon++;
_tras_file.write_control_rec(record,size);
}
delete _prog;
_tras_file.close();
}
void TInv_cont::invio_testata_movimenti()
{
int size = 1024;
TString record(size);
TString datastr;
_tras_file.open(_trasf,TRUE);
for (_tmov->first(); !_tmov->eof(); _tmov->next())
{
TString str;
_prog->addstatus(1);
record.spaces();
record.overwrite("Z1",0); //Tipo record
long nreg = _tmov->get_long(MOV_NUMREG);
str.format("%07ld", nreg);
record.overwrite(str,2); //Numero di registrazione
TString datareg = _tmov->get(MOV_DATAREG);
datastr = riconverti(datareg,TRUE);
str.format("%08s", (const char*) datastr);
record.overwrite(str,60); //Data di registrazione
TString datacomp = _tmov->get(MOV_DATACOMP);
datastr = riconverti(datacomp,TRUE);
str.format("%08s", (const char*) datastr);
record.overwrite(str,68); //Data di registrazione
TString datadoc = _tmov->get(MOV_DATADOC);
datastr = riconverti(datadoc,TRUE);
str.format("%08s", (const char*) datastr);
record.overwrite(str,76); //Data di registrazione
TString data74ter = _tmov->get(MOV_DATA74TER);
datastr = riconverti(data74ter,TRUE);
str.format("%08s", (const char*) datastr);
record.overwrite(str,84); //Data di registrazione
TString numdoc = _tmov->get(MOV_NUMDOC);
str.format("%-7s", (const char*) numdoc);
record.overwrite(str,92);
const char* codcaus = _tmov->get(MOV_CODCAUS);
if (real::is_natural(codcaus))
str.format("%03s", (const char*) codcaus);
else
str.format("%-3s", (const char*) codcaus);
record.overwrite(str,99); //Codice causale
TString descr = _tmov->get(MOV_DESCR);
str.format("%-50s", (const char*) descr);
record.overwrite(str,102);
const char* reg = _tmov->get(MOV_REG);
TString registro;
if (real::is_natural(reg))
{
int app = atoi(reg);
registro.format("%03d", app);
}
else
registro.format("%-3s", (const char*) reg);
record.overwrite(registro,152); //Codice registro IVA
long protiva = _tmov->get_long(MOV_PROTIVA);
str.format("%05ld", protiva);
record.overwrite(str,155); //Numero protocollo IVA
long uprotiva = _tmov->get_long(MOV_UPROTIVA);
str.format("%05ld", uprotiva);
record.overwrite(str,160); //Ultimo numero di protocollo IVA
bool regst = _tmov->get_bool(MOV_REGST);
if (regst)
record.overwrite("X",165);
else
record.overwrite(" ",165);
bool stampato = _tmov->get_bool(MOV_STAMPATO);
if (stampato)
record.overwrite("X",166);
else
record.overwrite(" ",166);
long numgio = _tmov->get_long(MOV_NUMGIO);
str.format("%07ld", numgio);
record.overwrite(str,167);
long codcf = _tmov->get_long(MOV_CODCF);
str.format("%06ld", codcf);
record.overwrite(str,174);
TString tipodoc (_tmov->get(MOV_TIPODOC));
real totdoc (_tmov->get_real(MOV_TOTDOC));
if (tipodoc == "NC" || tipodoc =="ST")
totdoc = totdoc * -1;
if (totdoc.sign() < 0)
{
record.overwrite("-",180);
totdoc = totdoc * -1;
}
else
record.overwrite("+",180);
str.format("%014s", (const char*) totdoc.string());
record.overwrite(str,181);
real ritfis (_tmov->get_real(MOV_RITFIS));
if (ritfis.sign() < 0)
{
record.overwrite("-",195);
ritfis = ritfis * -1;
}
else
record.overwrite("+",195);
str.format("%014s", (const char*) ritfis.string());
record.overwrite(str,196);
real ritsoc (_tmov->get_real(MOV_RITSOC));
if (ritsoc.sign() < 0)
{
record.overwrite("-",210);
ritsoc = ritsoc * -1;
}
else
record.overwrite("+",210);
str.format("%014s", (const char*) ritsoc.string());
record.overwrite(str,211);
TString codvali = _tmov->get(MOV_CODVALI);
str.format("%-3s", (const char*) codvali);
record.overwrite(str,225);
real cambioi (_tmov->get_real(MOV_CAMBIOI));
dec2integer(cambioi,100000);
str.format("%014s", (const char*) cambioi.string());
record.overwrite(str,228);
real corrlire (_tmov->get_real(MOV_CORRLIRE));
if (corrlire.sign() < 0)
{
record.overwrite("-",242);
corrlire = corrlire * -1;
}
else
record.overwrite("+",242);
str.format("%014s", (const char*) corrlire.string());
record.overwrite(str,243);
real corrvaluta (_tmov->get_real(MOV_CORRVALUTA));
if (corrvaluta.sign() < 0)
{
record.overwrite("-",257);
corrvaluta = corrvaluta * -1;
}
else
record.overwrite("+",257);
dec2integer(corrvaluta,100);
str.format("%016s", (const char*) corrvaluta.string());
record.overwrite(str,258);
TString ocfpi = _tmov->get(MOV_OCFPI);
str.format("%-16s", (const char*) ocfpi);
record.overwrite(str,274);
if (ocfpi.not_empty())
invio_occasionali(record,ocfpi);
_tras_file.write_control_rec(record,size);
}
_tras_file.close();
}
void TInv_cont::invio_occasionali(TString& record, TString& ocfpi)
{
TString str;
_toccas->setkey(1);
_toccas->zero();
_toccas->put(OCC_CFPI, ocfpi);
if (_toccas->read() == NOERR)
{
TString ragsoc = _toccas->get(OCC_RAGSOC);
str.format("%-50s", (const char*) ragsoc);
record.overwrite(str,290);
TString ind = _toccas->get(OCC_INDIR);
str.format("%-50s", (const char*) ind);
record.overwrite(str,340);
TString civ = _toccas->get(OCC_CIV);
str.format("%-6s", (const char*) civ);
record.overwrite(str,390);
TString stato = _toccas->get(OCC_STATO);
str.format("%-3s", (const char*) stato);
record.overwrite(str,396);
TString com = _toccas->get(OCC_COM);
str.format("%-4s", (const char*) com);
record.overwrite(str,399);
TString cap = _toccas->get(OCC_CAP);
str.format("%-5s", (const char*) cap);
record.overwrite(str,453);
TString datanasc = _toccas->get(OCC_DNASC);
TString app = riconverti(datanasc,TRUE);
str.format("%08s", (const char*) app);
record.overwrite(str,458);
TString statonasc = _toccas->get(OCC_STATONASC);
str.format("%-3s", (const char*) statonasc);
record.overwrite(str,466);
TString comnasc = _toccas->get(OCC_COMNASC);
str.format("%-4s", (const char*) comnasc);
record.overwrite(str,469);
}
}
void TInv_cont::invio_righe_contabili()
{
int size = 1024;
TString record(size);
_tras_file.open(_trasf,TRUE);
for (_trmov->first(); !_trmov->eof(); _trmov->next())
{
TString str;
_prog->addstatus(1);
record.spaces();
record.overwrite("Z2",0); //Tipo record
long nreg = _trmov->get_long(RMV_NUMREG);
str.format("%07ld", nreg);
record.overwrite(str,2); //Numero di registrazione
int nrig = _trmov->get_int (RMV_NUMRIG);
str.format("%03d", nrig);
record.overwrite(str,9);
TString sezione = _trmov->get(RMV_SEZIONE);
record.overwrite(sezione,60);
TString datareg = _trmov->get(RMV_DATAREG);
TString app = riconverti(datareg,TRUE);
str.format("%08s", (const char*) app);
record.overwrite(str,61); //Data di registrazione
int gruppo = _trmov->get_int(RMV_GRUPPO);
str.format("%03d", gruppo);
record.overwrite(str,69); //Gruppo di partita
int conto = _trmov->get_int(RMV_CONTO);
str.format("%03d", conto);
record.overwrite(str,72); //Conto di partita
long sottoc = _trmov->get_long(RMV_SOTTOCONTO);
str.format("%06ld", sottoc);
record.overwrite(str,75); //Sottoconto di partita
TString descr = _trmov->get(RMV_DESCR);
str.format("%-50s", (const char*) descr);
record.overwrite(str,81); //Descrizione riga di movimento
int gruppoc = _trmov->get_int(RMV_GRUPPOC);
str.format("%03d", gruppoc);
record.overwrite(str,131); //Gruppo di contropartita
int contoc = _trmov->get_int(RMV_CONTOC);
str.format("%03d", contoc);
record.overwrite(str,134); //Conto di contropartita
long sottocc = _trmov->get_long(RMV_SOTTOCONTOC);
str.format("%06ld", sottocc);
record.overwrite(str,137); //Sottoconto di contropartita
real importo (_trmov->get_real(RMV_IMPORTO));
if (importo.sign() < 0)
{
record.overwrite("-",143);
importo = importo * -1;
}
else
record.overwrite("+",143);
str.format("%014s", (const char*) importo.string());
record.overwrite(str,144); //Importo riga di movimento
TString rowtype = _trmov->get(RMV_ROWTYPE);
record.overwrite(rowtype,158);
_tras_file.write_control_rec(record,size);
_numrec_pn++;
}
_tras_file.close();
}
void TInv_cont::tipodocumento(long nreg, TString& tipodoc)
{
TRecnotype rec = _tmov->recno();
TIsamtempfile& tmov = *_tmov;
tmov.setkey(1);
tmov.zero();
tmov.put(MOV_NUMREG, nreg);
if (tmov.read() == NOERR)
tipodoc = tmov.get(MOV_TIPODOC);
_tmov->readat(rec);
}
void TInv_cont::invio_righe_IVA()
{
int size = 1024;
TString record(size);
long nreg_p = -1;
long cicli = _triva->items();
_prog = new TProgind(cicli,"Movimenti Iva: generazione file TRASFER per PC\nPrego attendere.",FALSE);
_tras_file.open(_trasf,TRUE);
for (_triva->first(); !_triva->eof(); _triva->next())
{
TString str;
_prog->addstatus(1);
record.spaces();
long nreg = _triva->get_long(RMI_NUMREG);
int nrig = _triva->get_int (RMI_NUMRIG);
record.overwrite("U1",0); //Tipo record
str.format("%07ld", nreg);
record.overwrite(str,2); //Numero di registrazione
str.format("%03d", nrig);
record.overwrite(str,9); //Numero di riga
TString codiva = _triva->get(RMI_CODIVA);
str.format("%-4s", (const char*) codiva);
record.overwrite(str,60);
TString tipodoc = "";
if (nreg != nreg_p)
tipodocumento(nreg,tipodoc);
nreg_p = nreg;
real imponibile (_triva->get_real(RMI_IMPONIBILE));
if (tipodoc == "NC" || tipodoc =="ST")
imponibile = imponibile * -1;
if (imponibile.sign() < 0)
{
record.overwrite("-",64);
imponibile = imponibile * -1;
}
else
record.overwrite("+",64);
str.format("%014s", (const char*) imponibile.string());
record.overwrite(str,65); //Imponibile
real imposta (_triva->get_real(RMI_IMPOSTA));
if (tipodoc == "NC" || tipodoc =="ST")
imposta = imposta * -1;
if (imposta.sign() < 0)
{
record.overwrite("-",79);
imposta = imposta * -1;
}
else
record.overwrite("+",79);
str.format("%014s", (const char*) imposta.string());
record.overwrite(str,80); //Imposta
int tipodet = _triva->get_int(RMI_TIPODET);
str.format("%d", tipodet);
record.overwrite(str,94); //Tipo detraibilita'
int tipocr = _triva->get_int(RMI_TIPOCR);
str.format("%d", tipocr);
record.overwrite(str,95); //Tipo costo/ricavo
bool intra = _triva->get_bool(RMI_INTRA);
if (intra)
record.overwrite("X",96);
else
record.overwrite(" ",96); //Flag causale x acquisti intracomunitari
int tipoatt = _triva->get_int(RMI_TIPOATT);
str.format("%d", tipoatt);
record.overwrite(str,97); //Tipo attivita'
int gruppo = _triva->get_int(RMI_GRUPPO);
str.format("%03d", gruppo);
record.overwrite(str,98); //Gruppo
int conto = _triva->get_int(RMI_CONTO);
str.format("%03d", conto);
record.overwrite(str,101); //Conto
long sottoc = _triva->get_long(RMI_SOTTOCONTO);
str.format("%06ld", sottoc);
record.overwrite(str,104); //Sottoconto
int rigaimp = _triva->get_int(RMI_RIGAIMP);
str.format("%03d", rigaimp);
record.overwrite(str,110);
int rigaiva = _triva->get_int(RMI_RIGAIVA);
str.format("%03d", rigaiva);
record.overwrite(str,113);
_numrec_iva++;
_tras_file.write_control_rec(record,size);
}
delete _prog;
_tras_file.close();
}