Patch level : 2.2

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
Corretta selezione righe documento da conatabilizzare analiticamente


git-svn-id: svn://10.65.10.50/trunk@13246 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2005-07-01 13:03:24 +00:00
parent 0427d93bb4
commit 385b30da97

View File

@ -251,18 +251,22 @@ error_type TContabilizzazione_analitica::search_costo_ricavo(const TRiga_documen
return _error; return _error;
} }
bool TContabilizzazione_analitica::find_conti(const TRiga_documento& riga, TString_array& conti) bool TContabilizzazione_analitica::find_conti(const TRiga_documento& riga, TString_array& conti)
{ {
TBill bill; // Cerco il conto contabile
if (search_costo_ricavo(riga, bill) != no_error)
return true;
if (!bill.is_analitico())
return true;
bool bArcticleFound = false;
const char tipocf = riga.doc().get_char(DOC_TIPOCF); const char tipocf = riga.doc().get_char(DOC_TIPOCF);
bool ok = false;
TString80 contanal; TString80 contanal;
if (riga.is_articolo()) if (riga.is_articolo())
{ {
const TRectype& anamag = cache().get(LF_ANAMAG, riga.get(RDOC_CODARTMAG)); const TRectype& anamag = cache().get(LF_ANAMAG, riga.get(RDOC_CODARTMAG));
ok = !anamag.empty(); bArcticleFound = !anamag.empty();
contanal = anamag.get(tipocf == 'F' ? ANAMAG_CONTOINDA : ANAMAG_CONTOINDV); contanal = anamag.get(tipocf == 'F' ? ANAMAG_CONTOINDA : ANAMAG_CONTOINDV);
} }
else else
@ -279,13 +283,14 @@ bool TContabilizzazione_analitica::find_conti(const TRiga_documento& riga, TStri
if (tabanal != NULL) if (tabanal != NULL)
{ {
const TRectype& spp = cache().get(tabanal, riga.get(RDOC_CODART)); const TRectype& spp = cache().get(tabanal, riga.get(RDOC_CODART));
ok = !spp.empty(); bArcticleFound = !spp.empty();
contanal = spp.get(tipocf == 'F' ? "S2" : "S1"); contanal = spp.get(tipocf == 'F' ? "S2" : "S1");
} }
} }
if (ok) if (!bArcticleFound) // Se l'anagrtafica non esiste va bene cosi'
{ return true;
const TString80 riga_cos = riga.codice_costo(); const TString80 riga_cos = riga.codice_costo();
const TString80 riga_cms = riga.codice_commessa(); const TString80 riga_cms = riga.codice_commessa();
const TString16 riga_fsc = riga.fase_commessa(); const TString16 riga_fsc = riga.fase_commessa();
@ -293,10 +298,8 @@ bool TContabilizzazione_analitica::find_conti(const TRiga_documento& riga, TStri
if (contanal.blank()) // Non ho trovato il conto in anagrafica ... if (contanal.blank()) // Non ho trovato il conto in anagrafica ...
{ {
TBill bill; // Cerco il conto contabile // Cerca la ripartizione del conto
if (search_costo_ricavo(riga, bill) != no_error) const TRecord_array& rip = _rip.righe(bill);
{
const TRecord_array& rip = _rip.righe(bill.gruppo(), bill.conto(), bill.sottoconto());
TToken_string conto; TToken_string conto;
for (int i = 1; i <= rip.rows(); i++) for (int i = 1; i <= rip.rows(); i++)
{ {
@ -318,9 +321,9 @@ bool TContabilizzazione_analitica::find_conti(const TRiga_documento& riga, TStri
conti.add(conto); conti.add(conto);
} }
} }
}
else else
{ {
// Ho trovato il conto in anagrafica ...
TToken_string conto = contanal; TToken_string conto = contanal;
if (riga_any) if (riga_any)
{ {
@ -331,9 +334,8 @@ bool TContabilizzazione_analitica::find_conti(const TRiga_documento& riga, TStri
conto.add(100, 4); conto.add(100, 4);
conti.add(conto); conti.add(conto);
} }
}
return ok; return !conti.empty();
} }
void TContabilizzazione_analitica::init_distrib(TString_array& conti, TGeneric_distrib& distrib) void TContabilizzazione_analitica::init_distrib(TString_array& conti, TGeneric_distrib& distrib)
@ -419,9 +421,8 @@ bool TContabilizzazione_analitica::elabora(TDocumento& doc, long numreg_cg, TVis
continue; continue;
TString_array conti; TString_array conti;
bool ok = find_conti(riga, conti); const bool ok = find_conti(riga, conti);
if (!ok)
if (conti.empty())
{ {
if (viswin != NULL) if (viswin != NULL)
{ {
@ -429,6 +430,7 @@ bool TContabilizzazione_analitica::elabora(TDocumento& doc, long numreg_cg, TVis
msg.format(FR("*** Riga %d: Manca il conto analitico dell'articolo '%s'"), i, (const char*)riga.get(RDOC_CODART)); msg.format(FR("*** Riga %d: Manca il conto analitico dell'articolo '%s'"), i, (const char*)riga.get(RDOC_CODART));
viswin->add_line(msg); viswin->add_line(msg);
} }
can_write = false;
continue; continue;
} }
@ -453,7 +455,7 @@ bool TContabilizzazione_analitica::elabora(TDocumento& doc, long numreg_cg, TVis
} }
} }
if (can_write) if (can_write && mov.rows() > 0)
{ {
totdoc.normalize(); totdoc.normalize();
mov.put(MOVANA_SEZIONE, totdoc.sezione()); mov.put(MOVANA_SEZIONE, totdoc.sezione());
@ -490,12 +492,13 @@ bool TContabilizzazione_analitica::elabora(TLista_documenti& doc_in, TLista_docu
return true; return true;
} }
TContabilizzazione_analitica::TContabilizzazione_analitica() : TElaborazione(NULL) TContabilizzazione_analitica::TContabilizzazione_analitica()
: TElaborazione(NULL), _error(no_error)
{ {
} }
TContabilizzazione_analitica::TContabilizzazione_analitica(const TRectype& rec) TContabilizzazione_analitica::TContabilizzazione_analitica(const TRectype& rec)
: TElaborazione(rec) : TElaborazione(rec), _error(no_error)
{ {
} }