From 42e6002a2ccc7334edf7014a36fffb8099033048 Mon Sep 17 00:00:00 2001 From: guy Date: Tue, 5 Apr 2005 13:57:37 +0000 Subject: [PATCH] Patch level : 2.2 Files correlati : Ricompilazione Demo : [ ] Commento : CM20135 Nelle righe di movimento il codice della fase e' sbagliato, viene caricato il centro di costo CM20136 La percentuale della ripartizione interattiva non ripartisce correttamente gli importi git-svn-id: svn://10.65.10.50/trunk@12909 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ca/ca0800.cpp | 32 ++++++++++++++++------- ca/ca2100.cpp | 71 +++++++++++++++++++++++++++++++++++---------------- 2 files changed, 72 insertions(+), 31 deletions(-) diff --git a/ca/ca0800.cpp b/ca/ca0800.cpp index bc6a24322..3c8540470 100755 --- a/ca/ca0800.cpp +++ b/ca/ca0800.cpp @@ -118,17 +118,31 @@ int TRiparti_msk::create_sheet_fields(int lf, int& y, short& dlg) } } - const char* fieldname = NULL; - switch(logic) + if (logic == LF_PCON) { - case LF_CDC : fieldname = RRIP_CODCOSTO; break; - case LF_COMMESSE: fieldname = RRIP_CODCMS; break; - case LF_FASI : fieldname = RRIP_CODFASE; break; - default : fieldname = RRIP_CODCONTO; break; - } + const TFieldref* f = fld.field(); + const TString16 fieldname = f->name(); - TFieldref* f = (TFieldref*)fld.field(); - f->set_name(fieldname); + if (fieldname == "GRUPPO") + fld.set_field("CODCONTO[1,3]"); else + if (fieldname == "CONTO") + fld.set_field("CODCONTO[4,6]"); else + if (fieldname == "SOTTOCONTO") + fld.set_field("CODCONTO[7,12]"); + } + else + { + const char* fieldname = NULL; + switch(logic) + { + case LF_CDC : fieldname = RRIP_CODCOSTO; break; + case LF_COMMESSE: fieldname = RRIP_CODCMS; break; + case LF_FASI : fieldname = RRIP_CODFASE; break; + default : fieldname = RRIP_CODCONTO; break; + } + TFieldref* f = (TFieldref*)fld.field(); + f->set_name(fieldname); + } } y += h+1; diff --git a/ca/ca2100.cpp b/ca/ca2100.cpp index 107c93deb..2f60f4e0e 100755 --- a/ca/ca2100.cpp +++ b/ca/ca2100.cpp @@ -128,12 +128,14 @@ TToken_string& TMovanal_msk::get_rip_row(const TRectype& rrip) keyrip.add(rrip.get(RRIP_CODCONTO)); TRectype rmov(LF_RMOVANA); - if (sheet.items() > 0) + const int totrows = sheet.items(); + if (totrows > 0) { - for (int i = 0; i < sheet.items(); i++) + TToken_string keyrow; + for (int i = 0; i < totrows; i++) { row2rec(i, rmov); - TToken_string keyrow; + keyrow.cut(0); keyrow.add(rmov.get(RMOVANA_CODCCOSTO)); keyrow.add(rmov.get(RMOVANA_CODCMS)); keyrow.add(rmov.get(RMOVANA_CODFASE)); @@ -144,10 +146,11 @@ TToken_string& TMovanal_msk::get_rip_row(const TRectype& rrip) } // Devo creare una riga nuova + rmov.zero(); rmov.put(RMOVANA_CODCCOSTO, keyrip.get(0)); - rmov.put(RMOVANA_CODCMS, keyrip.get()); - rmov.put(RMOVANA_CODFASE, keyrip.get(0)); - rmov.put(RMOVANA_CODCONTO, keyrip.get()); + rmov.put(RMOVANA_CODCMS, keyrip.get()); + rmov.put(RMOVANA_CODFASE, keyrip.get()); + rmov.put(RMOVANA_CODCONTO, keyrip.get()); TToken_string& row = rec2row(rmov, -1); return row; } @@ -160,7 +163,10 @@ void TMovanal_msk::split_cg_row(const TRectype& row, const TRecord_array& rrip) // Calcolo tutte le percentuali da ripartire int i; for (i = 1; i <= rrip.rows(); i++) - distrib.add(rrip[i].get_real("RIPARTO")); + { + const real quota = rrip[i].get_real("RIPARTO"); + distrib.add(quota); + } for (i = 1; i <= rrip.rows(); i++) { @@ -407,6 +413,7 @@ void TMovanal_msk::imp2row(const TImporto& imp, TToken_string& row) const TToken_string& TMovanal_msk::rec2row(const TRectype& rec, int r) const { + CHECK(rec.num() == LF_RMOVANA, "Bad record type"); TSheet_field& sheet = sfield(F_RIGHE); TMask& sm = sheet.sheet_mask(); @@ -419,11 +426,12 @@ TToken_string& TMovanal_msk::rec2row(const TRectype& rec, int r) const for (int i = sm.fields()-1; i >= 2; i--) { TMask_field& mf = sm.fld(i); - if (mf.field() != NULL) + const TFieldref* fr = mf.field(); + if (fr != NULL) { const int idx = sheet.cid2index(mf.dlg()); if (idx < 17) - row.add(mf.field()->read(rec), idx); + row.add(fr->read(rec), idx); } } @@ -543,17 +551,32 @@ int TMovanal_msk::create_sheet_fields(int lf, int& y, short& dlg, bool required) } } - const char* fieldname = NULL; - switch(logic) + if (logic == LF_PCON) { - case LF_CDC : fieldname = RMOVANA_CODCCOSTO; break; - case LF_COMMESSE: fieldname = RMOVANA_CODCMS; break; - case LF_FASI : fieldname = RMOVANA_CODFASE; break; - default : fieldname = RMOVANA_CODCONTO; break; - } + const TFieldref* f = fld.field(); + const TString16 fieldname = f->name(); - TFieldref* f = (TFieldref*)fld.field(); - f->set_name(fieldname); + if (fieldname == "GRUPPO") + fld.set_field("CODCONTO[1,3]"); else + if (fieldname == "CONTO") + fld.set_field("CODCONTO[4,6]"); else + if (fieldname == "SOTTOCONTO") + fld.set_field("CODCONTO[7,12]"); + } + else + { + const char* fieldname = NULL; + switch(logic) + { + case LF_CDC : fieldname = RMOVANA_CODCCOSTO; break; + case LF_COMMESSE: fieldname = RMOVANA_CODCMS; break; + case LF_FASI : fieldname = RMOVANA_CODFASE; break; + default : fieldname = RMOVANA_CODCONTO; break; + } + TFieldref* f = (TFieldref*)fld.field(); + f->set_name(fieldname); + } + fld.check_type(required ? CHECK_REQUIRED : CHECK_NORMAL); TEdit_field& dfld = sm.efield(dlg+50+i); @@ -705,14 +728,18 @@ bool TMovanal_app::protected_record(TRectype& rec) int TMovanal_app::write(const TMask& m) { - write_rows(m); - return TRelation_application::write(m); + const int err = TRelation_application::write(m); + if (err == NOERR) + write_rows(m); + return err; } int TMovanal_app::rewrite(const TMask& m) { - write_rows(m); - return TRelation_application::rewrite(m); + const int err = TRelation_application::rewrite(m); + if (err == NOERR) + write_rows(m); + return err; } int TMovanal_app::read(TMask& m)