Patch level :4.0 418
Files correlati :cacnv.exe Ricompilazione Demo : [ ] Commento :modificata la conversione in modo che riporti sui DOC i numreg e numregca corretti git-svn-id: svn://10.65.10.50/trunk@14018 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
9631bbe0c1
commit
9f1020db48
229
ca/cacnv.cpp
229
ca/cacnv.cpp
@ -407,15 +407,6 @@ void TConversione_cm2ca::create_new_movana(long numreg_cg, bool definitiva, TAss
|
||||
analmov.put(MOVANA_DCODNUM, dcodnum);
|
||||
const long dndoc = mov_head.get_long(MOV_DNDOC);
|
||||
analmov.put(MOVANA_DNDOC, dndoc);
|
||||
//se la chiave del documento origine e' completa puo' completare tale documento riempiendo il..
|
||||
//..campo NUMREGCA (con lo stesso numero di NUMREGCG, visto che sta trasportando i dati dalla..
|
||||
//..CG alla CA
|
||||
if (provv != ' ' && danno > 0 && dcodnum.not_empty() && dndoc > 0)
|
||||
{
|
||||
TDocumento dadoc(provv, danno, dcodnum, dndoc);
|
||||
dadoc.put(DOC_NUMREGCA, numreg_cg);
|
||||
dadoc.write();
|
||||
}
|
||||
|
||||
//MOVANA_TOTDOC e' il totale di tutte le sue righe;ancora non si conosce;sara' compilato..
|
||||
//..successivamente utilizzando importone
|
||||
@ -548,115 +539,123 @@ void TConversione_cm2ca::create_new_movana(long numreg_cg, bool definitiva, TAss
|
||||
//..DEFINITIVA,riordina le righe e le testate dei movimenti originari (MOV,RMOV,RMOVIVA)..
|
||||
//..riscrivendole
|
||||
if (analmov.write(f) == NOERR && definitiva)
|
||||
{
|
||||
//RIGHE MOVIMENTI CONTABILI
|
||||
TArray cg_records;
|
||||
for (int m = 0; m < mov.cg_items(); m++)
|
||||
{
|
||||
const TRectype& rmov = mov.cg(m);
|
||||
int add_to = -1;
|
||||
//se la riga movimento contabile ha un ROWTYPE...
|
||||
if (rmov.get(RMV_ROWTYPE).not_empty())
|
||||
{
|
||||
//cerca nell'array dei record riga mov(cg_records) partendo dall'ultima a scalare..
|
||||
for(add_to = cg_records.last(); add_to >=0; add_to--)
|
||||
{
|
||||
//prende il record add_to-esimo..
|
||||
const TRectype& rec = (TRectype&)cg_records[add_to];
|
||||
//se i campi gr.co.sottoc. di un record dell'array(cg_records) = a quelli della riga
|
||||
//movimento contabile in esame(rmov) -> esce con add_to = al numero del record dell'
|
||||
//array che soddisfa la condizione (quindi add_to > 0)
|
||||
if (rmov.get_int(RMV_GRUPPO) == rec.get_int(RMV_GRUPPO) &&
|
||||
rmov.get_int(RMV_CONTO) == rec.get_int(RMV_CONTO) &&
|
||||
rmov.get_long(RMV_SOTTOCONTO) == rec.get_long(RMV_SOTTOCONTO))
|
||||
break;
|
||||
}
|
||||
}
|
||||
//se add_to e' rimasto = -1 (la condizione di eguaglianza gr.co.sott. non e' stata soddisfatta
|
||||
//da alcuna riga dell'array cg_records)..
|
||||
if (add_to < 0)
|
||||
{
|
||||
TRectype* rec = new TRectype(rmov);
|
||||
//azzera i campi codice commessa e fase in RMOV di origine...
|
||||
rec->zero("CODCMS");
|
||||
rec->zero("FASCMS");
|
||||
//e aggiunge all'array cg_records il nuovo record ripulito
|
||||
cg_records.add(rec);
|
||||
rec->put(RMV_NUMRIG, cg_records.items());
|
||||
}
|
||||
//se ivece add_to > 0 (vedi test su condizione gr.co.sott. sopra)..
|
||||
else
|
||||
{
|
||||
//prende il record(rec) dell'array che soddsfaceva la condizione e somma ad esso importo e sezione
|
||||
//di quello in esame(rmov)
|
||||
TRectype& rec = (TRectype&)cg_records[add_to];
|
||||
TImporto imp_tot(rec.get_char(RMV_SEZIONE), rec.get_real(RMV_IMPORTO));
|
||||
TImporto imp_original(rmov.get_char(RMV_SEZIONE), rmov.get_real(RMV_IMPORTO));
|
||||
imp_tot += imp_original;
|
||||
imp_tot.normalize();
|
||||
rec.put(RMV_SEZIONE, imp_tot.sezione());
|
||||
rec.put(RMV_IMPORTO, imp_tot.valore());
|
||||
//notare che i campi descrittivi resteranno sempre quelli del primo record di cg_records
|
||||
//che ha gr.co.sottoc. soddisfacenti la condizione sopra!
|
||||
}
|
||||
}
|
||||
//cancella solo le righe contabili del movimento originale..
|
||||
mov.destroy_cg_row(-1);
|
||||
//e le sostituisce con le nuove che sono contenute (compattate) in cg-records
|
||||
FOR_EACH_ARRAY_ITEM(cg_records, cg_i, cg_obj)
|
||||
{
|
||||
mov.cg(cg_i) = *(TRectype*)cg_obj;
|
||||
}
|
||||
{
|
||||
//se la chiave del documento origine e' completa puo' completare tale documento riempiendo il..
|
||||
//..campo NUMREGCA (con lo stesso numero di NUMREG di analmov, in generale != da NUMREGCG
|
||||
if (provv != ' ' && danno > 0 && dcodnum.not_empty() && dndoc > 0)
|
||||
{
|
||||
TDocumento dadoc(provv, danno, dcodnum, dndoc);
|
||||
dadoc.put(DOC_NUMREGCA, analmov.get(MOVANA_NUMREG));
|
||||
dadoc.rewrite();
|
||||
}
|
||||
//RIGHE MOVIMENTI CONTABILI
|
||||
TArray cg_records;
|
||||
for (int m = 0; m < mov.cg_items(); m++)
|
||||
{
|
||||
const TRectype& rmov = mov.cg(m);
|
||||
int add_to = -1;
|
||||
//se la riga movimento contabile ha un ROWTYPE...
|
||||
if (rmov.get(RMV_ROWTYPE).not_empty())
|
||||
{
|
||||
//cerca nell'array dei record riga mov(cg_records) partendo dall'ultima a scalare..
|
||||
for(add_to = cg_records.last(); add_to >=0; add_to--)
|
||||
{
|
||||
//prende il record add_to-esimo..
|
||||
const TRectype& rec = (TRectype&)cg_records[add_to];
|
||||
//se i campi gr.co.sottoc. di un record dell'array(cg_records) = a quelli della riga
|
||||
//movimento contabile in esame(rmov) -> esce con add_to = al numero del record dell'
|
||||
//array che soddisfa la condizione (quindi add_to > 0)
|
||||
if (rmov.get_int(RMV_GRUPPO) == rec.get_int(RMV_GRUPPO) &&
|
||||
rmov.get_int(RMV_CONTO) == rec.get_int(RMV_CONTO) &&
|
||||
rmov.get_long(RMV_SOTTOCONTO) == rec.get_long(RMV_SOTTOCONTO))
|
||||
break;
|
||||
}
|
||||
}
|
||||
//se add_to e' rimasto = -1 (la condizione di eguaglianza gr.co.sott. non e' stata soddisfatta
|
||||
//da alcuna riga dell'array cg_records)..
|
||||
if (add_to < 0)
|
||||
{
|
||||
TRectype* rec = new TRectype(rmov);
|
||||
//azzera i campi codice commessa e fase in RMOV di origine...
|
||||
rec->zero("CODCMS");
|
||||
rec->zero("FASCMS");
|
||||
//e aggiunge all'array cg_records il nuovo record ripulito
|
||||
cg_records.add(rec);
|
||||
rec->put(RMV_NUMRIG, cg_records.items());
|
||||
}
|
||||
//se ivece add_to > 0 (vedi test su condizione gr.co.sott. sopra)..
|
||||
else
|
||||
{
|
||||
//prende il record(rec) dell'array che soddsfaceva la condizione e somma ad esso importo e sezione
|
||||
//di quello in esame(rmov)
|
||||
TRectype& rec = (TRectype&)cg_records[add_to];
|
||||
TImporto imp_tot(rec.get_char(RMV_SEZIONE), rec.get_real(RMV_IMPORTO));
|
||||
TImporto imp_original(rmov.get_char(RMV_SEZIONE), rmov.get_real(RMV_IMPORTO));
|
||||
imp_tot += imp_original;
|
||||
imp_tot.normalize();
|
||||
rec.put(RMV_SEZIONE, imp_tot.sezione());
|
||||
rec.put(RMV_IMPORTO, imp_tot.valore());
|
||||
//notare che i campi descrittivi resteranno sempre quelli del primo record di cg_records
|
||||
//che ha gr.co.sottoc. soddisfacenti la condizione sopra!
|
||||
}
|
||||
}
|
||||
//cancella solo le righe contabili del movimento originale..
|
||||
mov.destroy_cg_row(-1);
|
||||
//e le sostituisce con le nuove che sono contenute (compattate) in cg-records
|
||||
FOR_EACH_ARRAY_ITEM(cg_records, cg_i, cg_obj)
|
||||
{
|
||||
mov.cg(cg_i) = *(TRectype*)cg_obj;
|
||||
}
|
||||
|
||||
//RIGHE MOVIMENTI IVA (rifa' tutto il giochetto di prima per rmoviva)
|
||||
TArray iva_records;
|
||||
for (int n = 0; n < mov.iva_items(); n++)
|
||||
{
|
||||
const TRectype& rmoviva = mov.iva(n);
|
||||
int add_to = -1;
|
||||
for(add_to = iva_records.last(); add_to >=0; add_to--)
|
||||
{
|
||||
const TRectype& rec = (TRectype&)iva_records[add_to];
|
||||
if (rmoviva.get_int(RMI_GRUPPO) == rec.get_int(RMI_GRUPPO) &&
|
||||
rmoviva.get_int(RMI_CONTO) == rec.get_int(RMI_CONTO) &&
|
||||
rmoviva.get_long(RMI_SOTTOCONTO) == rec.get_long(RMI_SOTTOCONTO) &&
|
||||
rmoviva.get(RMI_CODIVA) == rec.get(RMI_CODIVA) &&
|
||||
rmoviva.get_int(RMI_TIPODET) == rec.get_int(RMI_TIPODET))
|
||||
break;
|
||||
}
|
||||
if (add_to < 0)
|
||||
{
|
||||
TRectype* rec = new TRectype(rmoviva);
|
||||
rec->zero("CODCMS");
|
||||
rec->zero("FASCMS");
|
||||
iva_records.add(rec);
|
||||
rec->put(RMI_NUMRIG, iva_records.items());
|
||||
}
|
||||
else
|
||||
{
|
||||
TRectype& rec = (TRectype&)iva_records[add_to];
|
||||
//imponibile..
|
||||
real tot = rec.get_real(RMI_IMPONIBILE);
|
||||
real original = rmoviva.get_real(RMI_IMPONIBILE);
|
||||
tot += original;
|
||||
rec.put(RMI_IMPONIBILE, tot);
|
||||
//..e imposta
|
||||
tot = rec.get_real(RMI_IMPOSTA);
|
||||
original = rmoviva.get_real(RMI_IMPOSTA);
|
||||
tot += original;
|
||||
rec.put(RMI_IMPOSTA, tot);
|
||||
}
|
||||
}
|
||||
mov.destroy_iva_row(-1);
|
||||
//RIGHE MOVIMENTI IVA (rifa' tutto il giochetto di prima per rmoviva)
|
||||
TArray iva_records;
|
||||
for (int n = 0; n < mov.iva_items(); n++)
|
||||
{
|
||||
const TRectype& rmoviva = mov.iva(n);
|
||||
int add_to = -1;
|
||||
for(add_to = iva_records.last(); add_to >=0; add_to--)
|
||||
{
|
||||
const TRectype& rec = (TRectype&)iva_records[add_to];
|
||||
if (rmoviva.get_int(RMI_GRUPPO) == rec.get_int(RMI_GRUPPO) &&
|
||||
rmoviva.get_int(RMI_CONTO) == rec.get_int(RMI_CONTO) &&
|
||||
rmoviva.get_long(RMI_SOTTOCONTO) == rec.get_long(RMI_SOTTOCONTO) &&
|
||||
rmoviva.get(RMI_CODIVA) == rec.get(RMI_CODIVA) &&
|
||||
rmoviva.get_int(RMI_TIPODET) == rec.get_int(RMI_TIPODET))
|
||||
break;
|
||||
}
|
||||
if (add_to < 0)
|
||||
{
|
||||
TRectype* rec = new TRectype(rmoviva);
|
||||
rec->zero("CODCMS");
|
||||
rec->zero("FASCMS");
|
||||
iva_records.add(rec);
|
||||
rec->put(RMI_NUMRIG, iva_records.items());
|
||||
}
|
||||
else
|
||||
{
|
||||
TRectype& rec = (TRectype&)iva_records[add_to];
|
||||
//imponibile..
|
||||
real tot = rec.get_real(RMI_IMPONIBILE);
|
||||
real original = rmoviva.get_real(RMI_IMPONIBILE);
|
||||
tot += original;
|
||||
rec.put(RMI_IMPONIBILE, tot);
|
||||
//..e imposta
|
||||
tot = rec.get_real(RMI_IMPOSTA);
|
||||
original = rmoviva.get_real(RMI_IMPOSTA);
|
||||
tot += original;
|
||||
rec.put(RMI_IMPOSTA, tot);
|
||||
}
|
||||
}
|
||||
mov.destroy_iva_row(-1);
|
||||
|
||||
FOR_EACH_ARRAY_ITEM(iva_records, iva_i, iva_obj)
|
||||
{
|
||||
mov.iva(iva_i) = *(TRectype*)iva_obj;
|
||||
}
|
||||
FOR_EACH_ARRAY_ITEM(iva_records, iva_i, iva_obj)
|
||||
{
|
||||
mov.iva(iva_i) = *(TRectype*)iva_obj;
|
||||
}
|
||||
|
||||
//puo' finalmente riscrivere i files di origine puliti e compattati (sia iva che non)
|
||||
mov.rewrite();
|
||||
}
|
||||
//puo' finalmente riscrivere i files di origine puliti e compattati (sia iva che non)
|
||||
mov.rewrite();
|
||||
} //if(write=NOERR && definitiva...
|
||||
}
|
||||
|
||||
bool TConversione_cm2ca::convert_movs(TConversione_anal_msk& mask)
|
||||
|
Loading…
x
Reference in New Issue
Block a user