Patch level :10.0 396

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
sistemato controllo della constant_columns quando si ha una ripartizione multipla (habilita)


git-svn-id: svn://10.65.10.50/trunk@19159 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2009-07-29 10:37:31 +00:00
parent 5a7c84ac58
commit 3374e34987

View File

@ -42,7 +42,7 @@ protected:
bool multi_split_cg_row(const TRectype& row, const TAnal_ripartizioni_batch& rrip); bool multi_split_cg_row(const TRectype& row, const TAnal_ripartizioni_batch& rrip);
void load_cg_row(const TRectype& row); void load_cg_row(const TRectype& row);
void load_cg_mov(); void load_cg_mov();
bool is_ripartible_movcg(); bool is_ripartible_movcg(bool& has_multirip);
int create_sheet_fields(int lf, int& y, short& dlg, bool required); int create_sheet_fields(int lf, int& y, short& dlg, bool required);
void create_sheet(); void create_sheet();
@ -271,11 +271,10 @@ bool TMovanal_msk::multi_split_cg_row(const TRectype& row, const TAnal_ripartizi
return splitted; return splitted;
} }
bool TMovanal_msk::is_ripartible_movcg() bool TMovanal_msk::is_ripartible_movcg(bool& has_multirip)
{
bool ok = true;
if (!_use_pdc)
{ {
bool is_ripartible_movcg = true;
const TString& numregcg = get(F_NUMREGCG); const TString& numregcg = get(F_NUMREGCG);
TRecord_array cg(numregcg, LF_RMOV); TRecord_array cg(numregcg, LF_RMOV);
@ -291,18 +290,28 @@ bool TMovanal_msk::is_ripartible_movcg()
const TAnal_ripartizioni_batch& rrip = _cache_rip.righe_interattive(zio, annoes); const TAnal_ripartizioni_batch& rrip = _cache_rip.righe_interattive(zio, annoes);
const long rrip_items = rrip.rows(); const long rrip_items = rrip.rows();
if (rrip_items <= 0) // Non trovato una ripartizione valida per il povero conto //solo per conti analitici (!_use_pdc)
if (!_use_pdc && rrip_items <= 0) // Non trovato una ripartizione valida per il povero conto
{ {
ok = error_box(FR("Non esiste una ripartizione del conto %d.%d.%ld\n" is_ripartible_movcg = error_box(FR("Non esiste una ripartizione del conto %d.%d.%ld\n"
"presente sulla riga %d del movimento %ld"), "presente sulla riga %d del movimento %ld"),
zio.gruppo(), zio.conto(), zio.sottoconto(), zio.gruppo(), zio.conto(), zio.sottoconto(),
r, atol(numregcg)); r, atol(numregcg));
break; break;
} } //if(rrip_items..
}
} //controlla se ci sono più ripartizioni sorelle; in questo caso deve avvisare chi lo chiama di questo fatto..
} //..in modo da non utilizzare il metodo delle colonne costanti; alla prima multiripartizione deve uscire perchè..
return ok; //..is_ripartible_movcg sarà true (se ho una multiripartizione allora è ripartibile) e has_multirip potrebbe..
//..tornare a false nella riga successiva
has_multirip = rrip.has_multirip();
if (_use_pdc && has_multirip)
return is_ripartible_movcg;
} //if(zio.is_analitico..
} //for(int r=cg.last_row..
return is_ripartible_movcg;
} }
void TMovanal_msk::load_cg_row(const TRectype& row) void TMovanal_msk::load_cg_row(const TRectype& row)
@ -615,14 +624,15 @@ bool TMovanal_msk::on_field_event(TOperable_field& o, TField_event e, long jolly
case F_RESET: case F_RESET:
if (e == fe_button) if (e == fe_button)
{ {
if (is_ripartible_movcg()) bool has_multirip = false;
if (is_ripartible_movcg(has_multirip))
{ {
TToken_string constants; TToken_string constants;
const int cc = get_constant_columns(constants); const int cc = get_constant_columns(constants);
TSheet_field& sf = sfield(F_RIGHE); TSheet_field& sf = sfield(F_RIGHE);
sf.destroy(); sf.destroy();
load_cg_mov(); load_cg_mov();
if (cc > 0) // Se ci sono colonne costanti le recupera da quelle vecchie salvate if (cc > 0 && !has_multirip) // Se ci sono colonne costanti le recupera da quelle vecchie salvate
{ {
TString campione; TString campione;
FOR_EACH_SHEET_ROW(sf, i, row) FOR_EACH_SHEET_ROW(sf, i, row)