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);
|
analmov.put(MOVANA_DCODNUM, dcodnum);
|
||||||
const long dndoc = mov_head.get_long(MOV_DNDOC);
|
const long dndoc = mov_head.get_long(MOV_DNDOC);
|
||||||
analmov.put(MOVANA_DNDOC, 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..
|
//MOVANA_TOTDOC e' il totale di tutte le sue righe;ancora non si conosce;sara' compilato..
|
||||||
//..successivamente utilizzando importone
|
//..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)..
|
//..DEFINITIVA,riordina le righe e le testate dei movimenti originari (MOV,RMOV,RMOVIVA)..
|
||||||
//..riscrivendole
|
//..riscrivendole
|
||||||
if (analmov.write(f) == NOERR && definitiva)
|
if (analmov.write(f) == NOERR && definitiva)
|
||||||
{
|
{
|
||||||
//RIGHE MOVIMENTI CONTABILI
|
//se la chiave del documento origine e' completa puo' completare tale documento riempiendo il..
|
||||||
TArray cg_records;
|
//..campo NUMREGCA (con lo stesso numero di NUMREG di analmov, in generale != da NUMREGCG
|
||||||
for (int m = 0; m < mov.cg_items(); m++)
|
if (provv != ' ' && danno > 0 && dcodnum.not_empty() && dndoc > 0)
|
||||||
{
|
{
|
||||||
const TRectype& rmov = mov.cg(m);
|
TDocumento dadoc(provv, danno, dcodnum, dndoc);
|
||||||
int add_to = -1;
|
dadoc.put(DOC_NUMREGCA, analmov.get(MOVANA_NUMREG));
|
||||||
//se la riga movimento contabile ha un ROWTYPE...
|
dadoc.rewrite();
|
||||||
if (rmov.get(RMV_ROWTYPE).not_empty())
|
}
|
||||||
{
|
//RIGHE MOVIMENTI CONTABILI
|
||||||
//cerca nell'array dei record riga mov(cg_records) partendo dall'ultima a scalare..
|
TArray cg_records;
|
||||||
for(add_to = cg_records.last(); add_to >=0; add_to--)
|
for (int m = 0; m < mov.cg_items(); m++)
|
||||||
{
|
{
|
||||||
//prende il record add_to-esimo..
|
const TRectype& rmov = mov.cg(m);
|
||||||
const TRectype& rec = (TRectype&)cg_records[add_to];
|
int add_to = -1;
|
||||||
//se i campi gr.co.sottoc. di un record dell'array(cg_records) = a quelli della riga
|
//se la riga movimento contabile ha un ROWTYPE...
|
||||||
//movimento contabile in esame(rmov) -> esce con add_to = al numero del record dell'
|
if (rmov.get(RMV_ROWTYPE).not_empty())
|
||||||
//array che soddisfa la condizione (quindi add_to > 0)
|
{
|
||||||
if (rmov.get_int(RMV_GRUPPO) == rec.get_int(RMV_GRUPPO) &&
|
//cerca nell'array dei record riga mov(cg_records) partendo dall'ultima a scalare..
|
||||||
rmov.get_int(RMV_CONTO) == rec.get_int(RMV_CONTO) &&
|
for(add_to = cg_records.last(); add_to >=0; add_to--)
|
||||||
rmov.get_long(RMV_SOTTOCONTO) == rec.get_long(RMV_SOTTOCONTO))
|
{
|
||||||
break;
|
//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
|
||||||
//se add_to e' rimasto = -1 (la condizione di eguaglianza gr.co.sott. non e' stata soddisfatta
|
//movimento contabile in esame(rmov) -> esce con add_to = al numero del record dell'
|
||||||
//da alcuna riga dell'array cg_records)..
|
//array che soddisfa la condizione (quindi add_to > 0)
|
||||||
if (add_to < 0)
|
if (rmov.get_int(RMV_GRUPPO) == rec.get_int(RMV_GRUPPO) &&
|
||||||
{
|
rmov.get_int(RMV_CONTO) == rec.get_int(RMV_CONTO) &&
|
||||||
TRectype* rec = new TRectype(rmov);
|
rmov.get_long(RMV_SOTTOCONTO) == rec.get_long(RMV_SOTTOCONTO))
|
||||||
//azzera i campi codice commessa e fase in RMOV di origine...
|
break;
|
||||||
rec->zero("CODCMS");
|
}
|
||||||
rec->zero("FASCMS");
|
}
|
||||||
//e aggiunge all'array cg_records il nuovo record ripulito
|
//se add_to e' rimasto = -1 (la condizione di eguaglianza gr.co.sott. non e' stata soddisfatta
|
||||||
cg_records.add(rec);
|
//da alcuna riga dell'array cg_records)..
|
||||||
rec->put(RMV_NUMRIG, cg_records.items());
|
if (add_to < 0)
|
||||||
}
|
{
|
||||||
//se ivece add_to > 0 (vedi test su condizione gr.co.sott. sopra)..
|
TRectype* rec = new TRectype(rmov);
|
||||||
else
|
//azzera i campi codice commessa e fase in RMOV di origine...
|
||||||
{
|
rec->zero("CODCMS");
|
||||||
//prende il record(rec) dell'array che soddsfaceva la condizione e somma ad esso importo e sezione
|
rec->zero("FASCMS");
|
||||||
//di quello in esame(rmov)
|
//e aggiunge all'array cg_records il nuovo record ripulito
|
||||||
TRectype& rec = (TRectype&)cg_records[add_to];
|
cg_records.add(rec);
|
||||||
TImporto imp_tot(rec.get_char(RMV_SEZIONE), rec.get_real(RMV_IMPORTO));
|
rec->put(RMV_NUMRIG, cg_records.items());
|
||||||
TImporto imp_original(rmov.get_char(RMV_SEZIONE), rmov.get_real(RMV_IMPORTO));
|
}
|
||||||
imp_tot += imp_original;
|
//se ivece add_to > 0 (vedi test su condizione gr.co.sott. sopra)..
|
||||||
imp_tot.normalize();
|
else
|
||||||
rec.put(RMV_SEZIONE, imp_tot.sezione());
|
{
|
||||||
rec.put(RMV_IMPORTO, imp_tot.valore());
|
//prende il record(rec) dell'array che soddsfaceva la condizione e somma ad esso importo e sezione
|
||||||
//notare che i campi descrittivi resteranno sempre quelli del primo record di cg_records
|
//di quello in esame(rmov)
|
||||||
//che ha gr.co.sottoc. soddisfacenti la condizione sopra!
|
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));
|
||||||
//cancella solo le righe contabili del movimento originale..
|
imp_tot += imp_original;
|
||||||
mov.destroy_cg_row(-1);
|
imp_tot.normalize();
|
||||||
//e le sostituisce con le nuove che sono contenute (compattate) in cg-records
|
rec.put(RMV_SEZIONE, imp_tot.sezione());
|
||||||
FOR_EACH_ARRAY_ITEM(cg_records, cg_i, cg_obj)
|
rec.put(RMV_IMPORTO, imp_tot.valore());
|
||||||
{
|
//notare che i campi descrittivi resteranno sempre quelli del primo record di cg_records
|
||||||
mov.cg(cg_i) = *(TRectype*)cg_obj;
|
//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)
|
//RIGHE MOVIMENTI IVA (rifa' tutto il giochetto di prima per rmoviva)
|
||||||
TArray iva_records;
|
TArray iva_records;
|
||||||
for (int n = 0; n < mov.iva_items(); n++)
|
for (int n = 0; n < mov.iva_items(); n++)
|
||||||
{
|
{
|
||||||
const TRectype& rmoviva = mov.iva(n);
|
const TRectype& rmoviva = mov.iva(n);
|
||||||
int add_to = -1;
|
int add_to = -1;
|
||||||
for(add_to = iva_records.last(); add_to >=0; add_to--)
|
for(add_to = iva_records.last(); add_to >=0; add_to--)
|
||||||
{
|
{
|
||||||
const TRectype& rec = (TRectype&)iva_records[add_to];
|
const TRectype& rec = (TRectype&)iva_records[add_to];
|
||||||
if (rmoviva.get_int(RMI_GRUPPO) == rec.get_int(RMI_GRUPPO) &&
|
if (rmoviva.get_int(RMI_GRUPPO) == rec.get_int(RMI_GRUPPO) &&
|
||||||
rmoviva.get_int(RMI_CONTO) == rec.get_int(RMI_CONTO) &&
|
rmoviva.get_int(RMI_CONTO) == rec.get_int(RMI_CONTO) &&
|
||||||
rmoviva.get_long(RMI_SOTTOCONTO) == rec.get_long(RMI_SOTTOCONTO) &&
|
rmoviva.get_long(RMI_SOTTOCONTO) == rec.get_long(RMI_SOTTOCONTO) &&
|
||||||
rmoviva.get(RMI_CODIVA) == rec.get(RMI_CODIVA) &&
|
rmoviva.get(RMI_CODIVA) == rec.get(RMI_CODIVA) &&
|
||||||
rmoviva.get_int(RMI_TIPODET) == rec.get_int(RMI_TIPODET))
|
rmoviva.get_int(RMI_TIPODET) == rec.get_int(RMI_TIPODET))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (add_to < 0)
|
if (add_to < 0)
|
||||||
{
|
{
|
||||||
TRectype* rec = new TRectype(rmoviva);
|
TRectype* rec = new TRectype(rmoviva);
|
||||||
rec->zero("CODCMS");
|
rec->zero("CODCMS");
|
||||||
rec->zero("FASCMS");
|
rec->zero("FASCMS");
|
||||||
iva_records.add(rec);
|
iva_records.add(rec);
|
||||||
rec->put(RMI_NUMRIG, iva_records.items());
|
rec->put(RMI_NUMRIG, iva_records.items());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
TRectype& rec = (TRectype&)iva_records[add_to];
|
TRectype& rec = (TRectype&)iva_records[add_to];
|
||||||
//imponibile..
|
//imponibile..
|
||||||
real tot = rec.get_real(RMI_IMPONIBILE);
|
real tot = rec.get_real(RMI_IMPONIBILE);
|
||||||
real original = rmoviva.get_real(RMI_IMPONIBILE);
|
real original = rmoviva.get_real(RMI_IMPONIBILE);
|
||||||
tot += original;
|
tot += original;
|
||||||
rec.put(RMI_IMPONIBILE, tot);
|
rec.put(RMI_IMPONIBILE, tot);
|
||||||
//..e imposta
|
//..e imposta
|
||||||
tot = rec.get_real(RMI_IMPOSTA);
|
tot = rec.get_real(RMI_IMPOSTA);
|
||||||
original = rmoviva.get_real(RMI_IMPOSTA);
|
original = rmoviva.get_real(RMI_IMPOSTA);
|
||||||
tot += original;
|
tot += original;
|
||||||
rec.put(RMI_IMPOSTA, tot);
|
rec.put(RMI_IMPOSTA, tot);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mov.destroy_iva_row(-1);
|
mov.destroy_iva_row(-1);
|
||||||
|
|
||||||
FOR_EACH_ARRAY_ITEM(iva_records, iva_i, iva_obj)
|
FOR_EACH_ARRAY_ITEM(iva_records, iva_i, iva_obj)
|
||||||
{
|
{
|
||||||
mov.iva(iva_i) = *(TRectype*)iva_obj;
|
mov.iva(iva_i) = *(TRectype*)iva_obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
//puo' finalmente riscrivere i files di origine puliti e compattati (sia iva che non)
|
//puo' finalmente riscrivere i files di origine puliti e compattati (sia iva che non)
|
||||||
mov.rewrite();
|
mov.rewrite();
|
||||||
}
|
} //if(write=NOERR && definitiva...
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TConversione_cm2ca::convert_movs(TConversione_anal_msk& mask)
|
bool TConversione_cm2ca::convert_movs(TConversione_anal_msk& mask)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user