From c24a56d4f949e5d4590d440a9fa60d0d60acff43 Mon Sep 17 00:00:00 2001 From: luca Date: Wed, 9 Jan 2008 14:28:31 +0000 Subject: [PATCH] Patch level :10.0 Files correlati : Ricompilazione Demo : [ ] Commento :continua la contabilizzazione cespiti git-svn-id: svn://10.65.10.50/trunk@15964 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ce/ce4400.cpp | 57 ++++++++++++++++++++++++++++++--------------------- ce/cemenu.men | 2 +- 2 files changed, 35 insertions(+), 24 deletions(-) diff --git a/ce/ce4400.cpp b/ce/ce4400.cpp index 0f6122c76..e172411cf 100755 --- a/ce/ce4400.cpp +++ b/ce/ce4400.cpp @@ -361,7 +361,7 @@ long TTrasf_mov_ce_cg::get_new_numreg() const void TTrasf_mov_ce_cg::genera_mov_per_cat(TArray& righe_mov, const TDate& datareg, const TDate& datacomp, const TString& codcaus, const bool definitivo) { - //riempie i campi della testata movimento + //Riempie i campi della testata movimento long numreg = get_new_numreg(); TMovimentoPN_CE pn; @@ -378,48 +378,59 @@ void TTrasf_mov_ce_cg::genera_mov_per_cat(TArray& righe_mov, const TDate& datare head.put(MOV_PROVVIS, 'C'); head.put(MOV_DESCR, TR("Rilevazione quote ammortamento cespiti")); - int first_row = 0; - + //Procedura di inserimento delle righe del movimento + TImporto fondo; + //aggiunge all'array con tutte le righe mov determinate con il calcolo una riga senza gr/sp/cat righe_mov.add(new TRigamov(0, EMPTY_STRING, 0)); + //Ciclo su tutte le righe dell'array delle righe mov. Ad ogni cambio di categoria dovra' inserire la riga.. + //..fondo per bilanciare la categoria, quindi scrivere sul movimento le righe ammortamento (da 1 a 3, ovvero.. + //..qnor,qant,qacc) e la riga fondo di quella categoria, quindi passare alla categoria successiva. for (int i = 0; i < righe_mov.items(); i++) { + //record di righe_mov const TRigamov& rigamov = (const TRigamov&)righe_mov[i]; - // Se cambio categoria + //Controllo dell'eventuale cambio di categoria. Lo fa confrontando la riga iesima appena caricata con.. + //..la riga i-1esima (la precedente,insomma) + //Se la categoria e' cambiata... if (i > 0 && rigamov.compare((const TRigamov&)righe_mov[i-1]) != 0) { + //crea una nuova riga per metterci il fondo;in questo momento la riga e' aggiunta ma va riempita!! TRectype& riga_fondo = pn.nuova_riga(); - TImporto fondo; - for (int j = first_row; j < i; j++) - { - TImporto imp_riga(pn.cg(j).get_char(RMV_SEZIONE), pn.cg(j).get_real(RMV_IMPORTO)); - fondo += imp_riga; - } - fondo.swap_section(); - fondo.normalize(); - riga_fondo.put(RMV_SEZIONE, fondo.sezione()); - riga_fondo.put(RMV_IMPORTO, fondo.valore()); + + //Inverte la sezione del fondo calcolato per il bilancamento + fondo.swap_section(); //inverte la sezione + fondo.normalize(); //normalizza il segno + riga_fondo.put(RMV_SEZIONE, fondo.sezione()); //inserisce nella riga fondo le sezione.. + riga_fondo.put(RMV_IMPORTO, fondo.valore()); //..ed il valore - //ci vogliono gr/co/sot che stanno nella categoria in CCC + //Deve mettere nella riga fondo gr/co/sot che stanno nella categoria in CCC //Serve la categoria precedente, perche' in questo momento l'ha cambiata! Quindi [i-1] const TRigamov& prev_riga_mov = (const TRigamov&)righe_mov[i-1]; const TString& stringone = prev_riga_mov.categoria().get("S1"); - riga_fondo.put(RMV_GRUPPO, stringone.mid(13,3)); - riga_fondo.put(RMV_CONTO, stringone.mid(16,3)); - riga_fondo.put(RMV_SOTTOCONTO, stringone.mid(19,6)); + riga_fondo.put(RMV_GRUPPO, stringone.mid(12,3)); + riga_fondo.put(RMV_CONTO, stringone.mid(15,3)); + riga_fondo.put(RMV_SOTTOCONTO, stringone.mid(18,6)); //se il movimento supera le 95 righe va salvato sul file MOV, poi distrutto per poter costruirne uno nuovo.. //..con le righe di righe_mov che sono rimaste if (pn.cg_items() > 95 || i == righe_mov.last()) { - pn.write(); - pn.destroy_rows(++numreg); + pn.write(); //scrive il movimento sul file + pn.destroy_rows(++numreg); //ne elimina le righe per poter ricominciare } - first_row = pn.cg_items(); - } + //azzera il valore del fondo in modo da ricominciare a calcolarlo con la nuova categoria + fondo.set(' ',0.0); + } //if i>0&&rigamov.compare... + + //Se la categoria non e' cambiata crea normalmente la nuova riga + //Aggiorna l'importo del fondo che e' pari alla somma di tutte le righe della stessa categoria + TImporto imp_riga(rigamov.get_char(RMV_SEZIONE), rigamov.get_real(RMV_IMPORTO)); + fondo += imp_riga; pn.nuova_riga(rigamov); - } + } //for(inti=0;... + } //metodo per la generazione di movimenti con righe per cespite raggruppate e pareggiate per categoria (chiamata se movdett>0) diff --git a/ce/cemenu.men b/ce/cemenu.men index a0a573868..d920a79f1 100755 --- a/ce/cemenu.men +++ b/ce/cemenu.men @@ -63,7 +63,7 @@ Item_02 = "Localizzazioni", "ce0 -0 loc", "" Item_03 = "Impianti", "ce0 -0 cim" , "" Item_04 = "Esercizi", "ce0 -0 cce", "F" Item_05 = "Esercizi contabili", "cg0 -5 esc", "F" -Item_06 = "Collegamento contabilita'", "ce0 -0 ccc", "F" +Item_06 = "Categorie Collegamento Contabilita'", "ce0 -0 ccc", "F" [CEMENU_007] Caption = "Stampa tabelle ditta"