diff --git a/ca/ca2200.cpp b/ca/ca2200.cpp index 3cf33280e..ac8cb733b 100755 --- a/ca/ca2200.cpp +++ b/ca/ca2200.cpp @@ -236,8 +236,20 @@ bool TRib_movanal_app::explode_rows(const TRecord_array& input_rows, TRecord_arr { const TRectype& rec = input_rows.row(r); const TAnal_ripartizioni_batch& rrip = _cache_rip.righe(rec.get(RMOVANA_CODCCOSTO), rec.get(RMOVANA_CODCMS), annoes); - - if (rrip.rows() > 0) //ci sono righe di ripartizione + //ci sono righe di ripartizione + bool ripartisci = rrip.rows() > 0; + if (ripartisci) + { + const int ripartizione_indbil = rrip.indbil(); + if (ripartizione_indbil > 0) //se l'indicatore di bilancio di destinazione e' definito... + { + TAnal_bill zio(rec); + //non puo' ripartire se gli indicatori di bilancio dei conti origine e destinazione sono diversi + //esempio:non puo' ripartire costi in ricavi!!! + ripartisci = (zio.indicatore_bilancio() == ripartizione_indbil); + } + } + if (ripartisci) { // Importo totale da distribuire arrotondato ai decimali della valuta di conto TGeneric_distrib distrib(rec.get_real(RMOVANA_IMPORTO), TCurrency::get_firm_dec()); @@ -388,9 +400,9 @@ void TRib_movanal_app::main_loop() TRelation rel_movana(LF_MOVANA); TRectype darec(LF_MOVANA), arec(LF_MOVANA); const TDate & dal = mask.get_date(F_DATAINI); - darec.put(MOVANA_DATAREG, dal); + darec.put(MOVANA_DATACOMP, dal); const TDate & al = mask.get_date(F_DATAFIN); - arec.put(MOVANA_DATAREG, al); + arec.put(MOVANA_DATACOMP, al); _cache_rip.set_esercizio(mask.get_int(F_ANNO)); TCursor cur_movana(&rel_movana, "BLOCCATO!=\"X\"", 2, &darec, &arec); @@ -405,10 +417,11 @@ void TRib_movanal_app::main_loop() // Riempie la lista della causali dei movimenti da pareggiare _caus_cms.destroy(); TSheet_field& sf = mask.sfield(F_RIGHE); + const int pos_codcaus = sf.cid2index(F_CODCAUS); FOR_EACH_SHEET_ROW(sf, i, row) { - const TString4 codcaus = row->get(0); - if (!codcaus.blank()) + const TString4 codcaus = row->get(pos_codcaus); + if (codcaus.full()) { TAnal_bill* bill = new TAnal_bill; if (mask.get_row_bill(sf, i, *bill) != 0) diff --git a/ca/ca2200a.h b/ca/ca2200a.h index 001be5c08..11d652514 100755 --- a/ca/ca2200a.h +++ b/ca/ca2200a.h @@ -5,6 +5,7 @@ #define F_DEFINITIVO 203 #define F_ANNO 204 #define F_RIGHE 300 - +//Devono valere un numero piu' alto di S_CDC12 (che attualmente e' 112) senno' non nascono in fila nello.. +//..sheet #define F_CODCAUS 113 #define F_DESCAUS 114 diff --git a/ca/ca2200a.uml b/ca/ca2200a.uml index 1707be1e5..89ef2ffa8 100755 --- a/ca/ca2200a.uml +++ b/ca/ca2200a.uml @@ -78,7 +78,7 @@ BEGIN ITEM "Cms 10" ITEM "Cms 11" ITEM "Cms 12" - ITEM "Causale " + ITEM "Causale" ITEM "Descrizione@50" END diff --git a/ca/calib01.cpp b/ca/calib01.cpp index b62403307..cf2ca590a 100755 --- a/ca/calib01.cpp +++ b/ca/calib01.cpp @@ -1456,6 +1456,10 @@ int TAnal_ripartizioni_batch::read (const char* codcosto, const char* commessa, int err = rip.read(); if (err != NOERR && annoes != 0) { + //va rifatta la put perche' potrebbe essersi spostato al record successivo + rip.put(RIP_TIPO, "B"); //solo tipi batch! + rip.put(RIP_CODCOSTO, codcosto); + rip.put(RIP_CODCMS, commessa); rip.put(RIP_ANNOES, 0); err = rip.read(); } @@ -1477,6 +1481,11 @@ int TAnal_ripartizioni_batch::read (const int gr, const int co, const long sot, int err = rip.read(); if (err != NOERR && annoes != 0) { + //va rifatta la put perche' potrebbe essersi spostato al record successivo + rip.put(RIP_TIPO, "B"); //solo tipi batch! + rip.put(RIP_GRUPPO, gr); + rip.put(RIP_CONTO, co); + rip.put(RIP_SOTTOCONTO, sot); rip.put(RIP_ANNOES, 0); err = rip.read(); } @@ -1511,8 +1520,8 @@ TObject* TCache_ripartizioni::key2obj(const char* key) } else //chiave 4 { - const TString codcosto = parametro.get(1); - const TString commessa = parametro.get(2); + const TString80 codcosto = parametro.get(1); + const TString80 commessa = parametro.get(2); const int anno = parametro.get_int(3); rip->read(codcosto, commessa, anno);