Patch level :2.2 210
Files correlati : Ricompilazione Demo : [ ] Commento :programma proforma versione 2.2 funzionante con contabilita' analitica;da verificare al crpa git-svn-id: svn://10.65.10.50/trunk@13474 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
422257ddfe
commit
a8e21f2c31
@ -226,6 +226,8 @@ bool TInvioP::i_proforma_movimenti()
|
||||
TRelation rel(LF_MOVANA);
|
||||
rel.add(LF_MOV, "NUMREG==NUMREGCG");
|
||||
rel.add(LF_CAUSALI, "CODCAUS==CODCAUS");
|
||||
rel.add(LF_RMOVANA, "NUMREG==NUMREG");
|
||||
rel.add(LF_RMOVIVA, "NUMREG==NUMREGCG");
|
||||
TCursor cur(&rel, "NUMREGCG!=0", 2, &da, &a);
|
||||
|
||||
const long cur_items = cur.items();
|
||||
@ -257,6 +259,10 @@ bool TInvioP::i_proforma_righe(TCursor& cur, TInvioP_file* trasfilerighe)
|
||||
//necessita del numreg del corrente movimento analitico per poterlo istanziare e prenderne le righe
|
||||
const long numreg = cur.curr().get_long(MOVANA_NUMREG);
|
||||
TAnal_mov analmov(numreg); //..istanzia il movimento analitico cercato..
|
||||
|
||||
TRecord_text recrighe; //istanzia il tipo record corretto da scrivere sul trasfilerighe
|
||||
recrighe.set_type("R");
|
||||
|
||||
int i;
|
||||
for (i = 1; i <= analmov.body().rows(); i++)
|
||||
{
|
||||
@ -265,15 +271,13 @@ bool TInvioP::i_proforma_righe(TCursor& cur, TInvioP_file* trasfilerighe)
|
||||
//inganno il cursore passandogli la riga analitica in esame
|
||||
cur.curr(LF_RMOVANA) = riga;
|
||||
|
||||
TRecord_text recrighe;
|
||||
recrighe.set_type("R");
|
||||
trasfilerighe->autoload(recrighe, cur);
|
||||
trasfilerighe->write(recrighe);
|
||||
}
|
||||
|
||||
//---- righe iva ----
|
||||
//adesso tocca alle righe iva...e sara' un casino indicibile!
|
||||
const char* numregcg = analmov.get(MOVANA_NUMREGCG);
|
||||
const TString8 numregcg = analmov.get(MOVANA_NUMREGCG);
|
||||
//record_array con le righe iva aventi il numreg = numregcg analitico
|
||||
TRecord_array righeiva(numregcg, LF_RMOVIVA);
|
||||
//assoc array contenente tutti i diversi conti che incontrera' nello scanning delle righe iva
|
||||
@ -300,7 +304,7 @@ bool TInvioP::i_proforma_righe(TCursor& cur, TInvioP_file* trasfilerighe)
|
||||
}
|
||||
|
||||
TString16 codiva = righeiva[j].get(RMI_CODIVA); //prende il codice iva dalla riga iva
|
||||
//aggiungere qui eventuale numero di indetraibile
|
||||
//aggiungere qui eventuale codice intero di indetraibilita'
|
||||
|
||||
//ad ogni codiva presente in codivae lega un importo che risultera' la somma di tutti gli..
|
||||
//..importi con lo stesso conto e codice iva
|
||||
@ -317,6 +321,10 @@ bool TInvioP::i_proforma_righe(TCursor& cur, TInvioP_file* trasfilerighe)
|
||||
//aggiungere qui eventuale imposta
|
||||
}
|
||||
|
||||
TRecord_text recrigheiva; //istanzia il tipo record corretto da scrivere sul trasfilerighe
|
||||
recrigheiva.set_type("I");
|
||||
int nrighe = 0;
|
||||
|
||||
for (i = 1; i <= analmov.body().rows(); i++)
|
||||
{
|
||||
//scanning delle righe analitiche per estrarne i conti e controllare se compaiono nell'assoc_array..
|
||||
@ -325,13 +333,46 @@ bool TInvioP::i_proforma_righe(TCursor& cur, TInvioP_file* trasfilerighe)
|
||||
const TString& codconto = riga.get(RMOVANA_CODCONTO);
|
||||
TAssoc_array* codivae = (TAssoc_array*) conti.objptr(codconto); //assoc_array codivae del codconto
|
||||
|
||||
//se ho almeno un codice iva assocoato a questo conto nell'assoc_array dei conti
|
||||
//se ha almeno un codice iva associato a questo conto nell'assoc_array dei conti..
|
||||
if (codivae != NULL)
|
||||
{
|
||||
//..prende l'importo della riga analitica..
|
||||
real importo_riga = riga.get_real(RMOVANA_IMPORTO);
|
||||
//..lo ridistribuisce secondo le percentuali iva
|
||||
TGeneric_distrib distributore(importo_riga, TCurrency::get_firm_dec());
|
||||
{
|
||||
FOR_EACH_ASSOC_OBJECT((*codivae), h, k, imp)
|
||||
{
|
||||
const real& imp_iva = *(real*)imp;
|
||||
distributore.add(imp_iva);
|
||||
}
|
||||
|
||||
//crea una riga iva dal cursore, con numreg = numregcg della testata analitica originale
|
||||
TRectype& rigaiva = cur.curr(LF_RMOVIVA);
|
||||
rigaiva.put(RMI_NUMREG, numregcg);
|
||||
|
||||
//scan dell'assoc_array ridistribuito e inserimento dei valori nella riga iva appena creata
|
||||
FOR_EACH_ASSOC_OBJECT((*codivae), hi, ki, impi)
|
||||
{
|
||||
rigaiva.put(RMI_NUMRIG, ++nrighe);
|
||||
rigaiva.put(RMI_GRUPPO, codconto.mid(0,3));
|
||||
rigaiva.put(RMI_CONTO, codconto.mid(3,3));
|
||||
rigaiva.put(RMI_SOTTOCONTO, codconto.mid(6,6));
|
||||
TBill zio(rigaiva);
|
||||
rigaiva.put(RMI_TIPOC, zio.tipo());
|
||||
rigaiva.put(RMI_IMPONIBILE, distributore.get());
|
||||
rigaiva.put(RMI_CODIVA, ki);
|
||||
|
||||
//scrittura delle righe di tipo I; notare che il cur passato alla autoload altri non e'..
|
||||
//..che la rigaiva appena completata
|
||||
trasfilerighe->autoload(recrigheiva, cur);
|
||||
trasfilerighe->write(recrigheiva);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -438,9 +479,9 @@ bool TInvioP::i_proforma_clifor(char tipocf)
|
||||
{
|
||||
TInvioP_file* trasfile = NULL;
|
||||
if (tipocf == 'C')
|
||||
TInvioP_file* trasfile = apri_file("clienti");
|
||||
trasfile = apri_file("clienti");
|
||||
else
|
||||
TInvioP_file* trasfile = apri_file("fornit");
|
||||
trasfile = apri_file("fornit");
|
||||
|
||||
TString80 filtro = "";
|
||||
filtro.format("TIPOCF == \"%c\"", tipocf);
|
||||
@ -455,7 +496,6 @@ bool TInvioP::i_proforma_clifor(char tipocf)
|
||||
for (cur = 0; cur.pos() < cur_items; ++(cur))
|
||||
{
|
||||
TRecord_text rec;
|
||||
|
||||
rec.set_type("C");
|
||||
trasfile->autoload(rec, cur);
|
||||
trasfile->write(rec);
|
||||
@ -498,11 +538,14 @@ bool TInvioP::destroy()
|
||||
|
||||
void TInvioP::main_loop()
|
||||
{
|
||||
//il programma si puo' usare SOLO se in contabilita' analitica si usa il pianodeiconti contabile
|
||||
//il programma si puo' usare SOLO se in contabilita' analitica si usa il piano dei conti contabile
|
||||
TConfig& cfg = ca_config();
|
||||
const bool use_pdcc = cfg.get_bool("UsePdcc");
|
||||
if (!use_pdcc)
|
||||
{
|
||||
error_box(TR("Programma funzionante SOLO se in contabilita' analitica si usa il piano dei conti contabile"));
|
||||
return;
|
||||
}
|
||||
|
||||
TFilename configname = "cg7200a.ini"; //file configurazione della maschera
|
||||
configname.custom_path();
|
||||
|
@ -45,19 +45,19 @@ NAME(0) = ID REGISTRAZIONE
|
||||
TYPE(0) = NUMERO
|
||||
POSITION(0) = 0
|
||||
LENGTH(0) = 10
|
||||
FIELD(0) = 23->NUMREG
|
||||
FIELD(0) = 107->NUMREG
|
||||
|
||||
NAME(1) = DATA REGISTRAZIONE
|
||||
TYPE(1) = DATA
|
||||
POSITION(1) = 10
|
||||
LENGTH(1) = 8
|
||||
FIELD(1) = 23->DATAREG
|
||||
FIELD(1) = 107->DATAREG
|
||||
|
||||
NAME(2) = CODICE CAUSALE
|
||||
TYPE(2) = STRINGA
|
||||
POSITION(2) = 18
|
||||
LENGTH(2) = 3
|
||||
FIELD(2) = 23->CODCAUS
|
||||
FIELD(2) = 107->CODCAUS
|
||||
|
||||
NAME(3) = DESCRIZIONE CAUSALE
|
||||
TYPE(3) = STRINGA
|
||||
@ -69,19 +69,19 @@ NAME(4) = DESCRIZIONE TESTATA
|
||||
TYPE(4) = STRINGA
|
||||
POSITION(4) = 61
|
||||
LENGTH(4) = 40
|
||||
FIELD(4) = 23->DESCR[1,40]
|
||||
FIELD(4) = 107->DESCR[1,40]
|
||||
|
||||
NAME(5) = DATA DOCUMENTO
|
||||
TYPE(5) = DATA
|
||||
POSITION(5) = 101
|
||||
LENGTH(5) = 8
|
||||
FIELD(5) = 23->DATADOC
|
||||
FIELD(5) = 107->DATADOC
|
||||
|
||||
NAME(6) = NUMERO DOCUMENTO
|
||||
TYPE(6) = STRINGA
|
||||
POSITION(6) = 109
|
||||
LENGTH(6) = 6
|
||||
FIELD(6) = 23->NUMDOC
|
||||
FIELD(6) = 107->NUMDOC
|
||||
|
||||
NAME(7) = TIPO DOCUMENTO
|
||||
TYPE(7) = STRINGA
|
||||
@ -105,7 +105,7 @@ POSITION(10) = 169
|
||||
NAME(11) = TOTALE DOCUMENTO
|
||||
TYPE(11) = IMPORTO
|
||||
POSITION(11) = 183
|
||||
FIELD(11) = 23->TOTDOC
|
||||
FIELD(11) = 107->TOTDOC
|
||||
|
||||
NAME(12) = DATA PAGAMENTO
|
||||
TYPE(12) = DATA
|
||||
@ -122,7 +122,7 @@ NAME(14) = DATA COMPETENZA
|
||||
TYPE(14) = DATA
|
||||
POSITION(14) = 225
|
||||
LENGTH(14) = 8
|
||||
FIELD(14) = 23->DATACOMP
|
||||
FIELD(14) = 107->DATACOMP
|
||||
|
||||
NAME(15) = NUMERO PROTOCOLLO
|
||||
TYPE(15) = STRINGA
|
||||
@ -178,13 +178,13 @@ NAME(6) = FLAG CLIFOR
|
||||
TYPE(6) = STRINGA
|
||||
POSITION(6) = 27
|
||||
LENGTH(6) = 1
|
||||
FIELD(6) = 24->TIPOC
|
||||
//MESSAGE(6) = _TIPOCF
|
||||
|
||||
NAME(7) = CODICE CLIFOR
|
||||
TYPE(7) = STRINGA
|
||||
POSITION(7) = 28
|
||||
LENGTH(7) = 10
|
||||
FIELD(7) = 24->SOTTOCONTO
|
||||
FIELD(7) = 108->CODCONTO[7,12]
|
||||
|
||||
NAME(8) = DESCRIZIONE RIGA
|
||||
TYPE(8) = STRINGA
|
||||
@ -221,8 +221,8 @@ NAME(14) = VOCE DI SPESA
|
||||
TYPE(14) = STRINGA
|
||||
POSITION(14) = 145
|
||||
LENGTH(14) = 10
|
||||
MESSAGE(14) = _CODCBL
|
||||
FIELD(14) = 300@->DESCRIZ
|
||||
//MESSAGE(14) = _CODCBL
|
||||
//FIELD(14) = 300@->DESCRIZ
|
||||
|
||||
[RECORD I]
|
||||
|
||||
@ -297,14 +297,14 @@ NAME(13) = COMMESSA
|
||||
TYPE(13) = STRINGA
|
||||
POSITION(13) = 125
|
||||
LENGTH(13) = 20
|
||||
FIELD(13) = 25->CODCMS
|
||||
FIELD(13) = 108->CODCMS
|
||||
|
||||
NAME(14) = VOCE DI SPESA
|
||||
TYPE(14) = STRINGA
|
||||
POSITION(14) = 145
|
||||
LENGTH(14) = 10
|
||||
MESSAGE(14) = _CODCBL
|
||||
FIELD(14) = 400@->DESCRIZ
|
||||
//MESSAGE(14) = _CODCBL
|
||||
//FIELD(14) = 400@->DESCRIZ
|
||||
|
||||
[RECORD C]
|
||||
|
||||
@ -391,6 +391,7 @@ LENGTH(3) = 80
|
||||
FIELD(3)=19->DESCR
|
||||
|
||||
[RECORD G]
|
||||
|
||||
NAME(0) = ID REGISTRAZIONE PAGAMENTO
|
||||
TYPE(0) = NUMERO
|
||||
POSITION(0) = 0
|
||||
|
Loading…
x
Reference in New Issue
Block a user