diff --git a/ca/ca3883.cpp b/ca/ca3883.cpp index 2f5be5dab..be21e8453 100755 --- a/ca/ca3883.cpp +++ b/ca/ca3883.cpp @@ -591,7 +591,7 @@ int TPrint_saldana_recordset::estrai_saldi(const TRecordset& saldana, const int TAssoc_array& TPrint_saldana_recordset::get_row(TAssoc_array& cms, const char* chiave, const int indice, const TString& codcms, const TString& fase, - const TString& cdc, const TString& descrizione) + const TString& cdc, const TString& descrizione) const { //cerca se la commessa (e l'eventuale fase) esistono gia' nell'assocarray delle commesse TAssoc_array* riga_array = (TAssoc_array*)cms.objptr(chiave); @@ -860,6 +860,11 @@ void TPrint_saldana_recordset::create_lines_to_print(const TString& query) //aggiunge gli importi e normalizza aggiorna_importo(riga_array, gruppo, indbil, saldana); aggiorna_importo(riga_array, conto, indbil, saldana); + + //aggiorna totali della commessa (importi per codcms senza tener conto di fase o cdc) + TAssoc_array& riga_tot = get_row(_totali[indice], codcms, indice, codcms, EMPTY_STRING, EMPTY_STRING, + gruppo); + aggiorna_importo(riga_tot, gruppo, indbil, saldana); } //stima ricavi ca3900 (_tipo=9) else @@ -1047,15 +1052,31 @@ const TVariant& TPrint_saldana_recordset::get(const char* column_name) const else if (strcmp(column_name, "AVANZAMENTO") == 0) { - //Calcola lo stato di avanzamento della commessa + //Calcola lo stato di avanzamento della commessa in caso di stima x Tempo real avanzamento; if (_tipostima == 'T') { avanzamento = calcola_avanzamento_tempo(); } - else //se stima e' di tipo Costi... + else //se stima e' di tipo Costi/Ricavi invece....Allah!! { + TAssoc_array& riga = (TAssoc_array&)_righe[_curr]; + const real val = get("RICAVI").as_real(); + if (!val.is_zero()) + { + int indice = get("LEVEL").as_int(); + const TString& codcms = get("CODCMS").as_string(); + TAssoc_array& riga_tot = get_row((TAssoc_array&)_totali[indice], codcms, indice, codcms, EMPTY_STRING, EMPTY_STRING, + "RICAVI"); + const TString* stric = (const TString*)riga_tot.objptr("RICAVI"); + if (stric && stric->full()) + { + const real totric = *stric; + if (!totric.is_zero()) + avanzamento = val * CENTO / totric; + } + } } var.set(avanzamento); } diff --git a/ca/ca3883.h b/ca/ca3883.h index 45181fed7..1f5f6e4a0 100755 --- a/ca/ca3883.h +++ b/ca/ca3883.h @@ -57,9 +57,10 @@ public: /////////////////////////////////////////////////////////////// class TPrint_saldana_recordset : public TRecordset { + TRecnotype _curr; TArray _righe; - TRecnotype _curr; TArray _colonne; + TAssoc_array _totali[4]; TIndbil_cache _indicatori; TEsercizi_contabili _esc; @@ -100,7 +101,7 @@ protected: TAssoc_array& get_row(TAssoc_array& cms, const char* chiave, const int indice, const TString& codcms, const TString& fase, - const TString& cdc, const TString& descrizione); + const TString& cdc, const TString& descrizione) const; public: virtual void set_filter(const TMask& msk, const TString& curr_sublevel); diff --git a/ca/camenu.men b/ca/camenu.men index 3756b84fe..261f1b44f 100755 --- a/ca/camenu.men +++ b/ca/camenu.men @@ -54,7 +54,7 @@ Picture = Module = 22 Flags = "" Item_01 = "Gestione movimenti", "ca2 -0", "F" -Item_02 = "Ribaltamento movimenti", "ca2 -1", "F" +Item_02 = "Ripartizione movimenti", "ca2 -1", "F" [CAMENU_040] Caption = "Stampe"