Patch level :4.0 608
Files correlati : Ricompilazione Demo : [ ] Commento :stampa bilancio di commessa un po' piu' funzionante!Sistemato il problema del RICAVI-COSTI impazzito! git-svn-id: svn://10.65.10.50/trunk@14858 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
9706c72afe
commit
372df3ec60
@ -11,6 +11,7 @@
|
||||
#include "calib01.h"
|
||||
#include "calib02.h"
|
||||
#include "commesse.h"
|
||||
#include "fasi.h"
|
||||
#include "panapdc.h"
|
||||
#include "pconana.h"
|
||||
#include "saldana.h"
|
||||
@ -179,7 +180,8 @@ protected:
|
||||
TImporto& saldo, TImporto& saldop) const;
|
||||
void aggiorna_importo(TAssoc_array& riga_array, const TString& livello,
|
||||
const int indbil, const TRecordset& saldana, const bool inverti = false) const;
|
||||
TAssoc_array& get_row(TAssoc_array& cms, const char* chiave,
|
||||
real calcola_avanzamento_tempo() const;
|
||||
TAssoc_array& get_row(TAssoc_array& cms, const char* chiave,
|
||||
const int indice, const TString& codcms, const TString& fase,
|
||||
const TString& descrizione);
|
||||
|
||||
@ -293,6 +295,12 @@ TAssoc_array& TPrint_bilancio_cms_recordset::get_row(TAssoc_array& cms, const ch
|
||||
riga_array->add("CODCMS", codcms);
|
||||
riga_array->add("FASE", fase);
|
||||
riga_array->add("DESCRIZ", descrizione);
|
||||
//inizializza i campi importo sicuramente presenti (modifica DECISIVA)
|
||||
//senza questa inizializzazione, nel caso trovasse campi nulli (in realta' 0), il bastardo..
|
||||
//..anziche' considerarli 0 ci mette l'ultimo valore != che ha in memoria nella stessa posizione..
|
||||
//..facendo sballare tutti i conti!
|
||||
riga_array->add("RICAVI", EMPTY_STRING);
|
||||
riga_array->add("COSTI", EMPTY_STRING);
|
||||
|
||||
//aggiunge la riga all'array-one
|
||||
cms.add(chiave, riga_array);
|
||||
@ -455,6 +463,44 @@ const TVariant& TPrint_bilancio_cms_recordset::get(unsigned int column) const
|
||||
return NULL_VARIANT;
|
||||
}
|
||||
|
||||
real TPrint_bilancio_cms_recordset::calcola_avanzamento_tempo() const
|
||||
{
|
||||
real avanzamento;
|
||||
|
||||
const TDate& datafinesc = _esc[_anno].fine();
|
||||
TDate dataini, datafine;
|
||||
const TString& codfase = get("FASE").as_string();
|
||||
if (codfase.empty())
|
||||
{
|
||||
const TString& codcms = get("CODCMS").as_string();
|
||||
const TRectype& rec_commesse = cache().get(LF_COMMESSE, codcms);
|
||||
|
||||
dataini = rec_commesse.get(COMMESSE_DATAINIZIO);
|
||||
datafine = rec_commesse.get(COMMESSE_DATAFINE);
|
||||
}
|
||||
else
|
||||
{
|
||||
const TRectype& rec_fasi = cache().get(LF_FASI, codfase);
|
||||
|
||||
dataini = rec_fasi.get(FASI_DATAINIZIO);
|
||||
datafine = rec_fasi.get(FASI_DATAFINE);
|
||||
}
|
||||
//Si prende SOLO la Fine Esercizio come riferimento di avanzamento (in realta' si..
|
||||
//..potrebbe usare today al posto di datafinesc se si volesse la situazione ad oggi,..
|
||||
//..ma i calcoli degli importi sarebbero da rivedere). Quindi:
|
||||
//se la commessa finisce prima della fine dell'esercizio
|
||||
if (datafine < datafinesc)
|
||||
avanzamento = CENTO;
|
||||
//se invece prosegue anche dopo la fine dell'esercizio...
|
||||
else
|
||||
{
|
||||
const long time_gone = datafinesc - dataini;
|
||||
const long durata = datafine - dataini;
|
||||
avanzamento = ((real)(time_gone * CENTO) / durata);
|
||||
}
|
||||
return avanzamento;
|
||||
}
|
||||
|
||||
const TVariant& TPrint_bilancio_cms_recordset::get(const char* column_name) const
|
||||
{
|
||||
if (_curr >= 0 && _curr < items())
|
||||
@ -489,27 +535,9 @@ const TVariant& TPrint_bilancio_cms_recordset::get(const char* column_name) cons
|
||||
real avanzamento;
|
||||
if (_tipostima == 'T')
|
||||
{
|
||||
const TDate& datafinesc = _esc[_anno].fine();
|
||||
const TString& codcms = get("CODCMS").as_string();
|
||||
const TRectype& rec_commesse = cache().get(LF_COMMESSE, codcms);
|
||||
|
||||
const TDate dataini = rec_commesse.get(COMMESSE_DATAINIZIO);
|
||||
const TDate datafine = rec_commesse.get(COMMESSE_DATAFINE);
|
||||
//Si prende SOLO la Fine Esercizio come riferimento di avanzamento (in realta' si..
|
||||
//..potrebbe usare today al posto di datafinesc se si volesse la situazione ad oggi,..
|
||||
//..ma i calcoli degli importi sarebbero da rivedere). Quindi:
|
||||
//se la commessa finisce prima della fine dell'esercizio
|
||||
if (datafine < datafinesc)
|
||||
avanzamento = CENTO;
|
||||
//se invece prosegue anche dopo la fine dell'esercizio...
|
||||
else
|
||||
{
|
||||
const long time_gone = datafinesc - dataini;
|
||||
const long durata_cms = datafine - dataini;
|
||||
avanzamento = ((real)(time_gone * CENTO) / durata_cms);
|
||||
}
|
||||
avanzamento = calcola_avanzamento_tempo();
|
||||
}
|
||||
else //if(_tipostima=T...
|
||||
else //se stima e' di tipo Costi...
|
||||
{
|
||||
|
||||
}
|
||||
@ -518,6 +546,12 @@ const TVariant& TPrint_bilancio_cms_recordset::get(const char* column_name) cons
|
||||
else //if(strcmp(column_name,AVANZAMENTO...
|
||||
{
|
||||
TAssoc_array& riga = (TAssoc_array&)_righe[_curr];
|
||||
#ifdef DBG
|
||||
const TString& cazzo = *(TString*)riga.objptr("CODCMS");
|
||||
const TString& culo = *(TString*)riga.objptr("FASE");
|
||||
if (cazzo == "FP05FSE041197" && culo == "SP01ED01")
|
||||
int a = 0;
|
||||
#endif
|
||||
const TString* val = (TString*)riga.objptr(column_name);
|
||||
if (val)
|
||||
var.set(*val);
|
||||
|
@ -156,7 +156,7 @@ void TCRPA_report::analize_pconana_structure (const TString& prefix, const int d
|
||||
if (codici_c.items() == 1)
|
||||
{
|
||||
codici_c.destroy();
|
||||
testate_c.destroy();;
|
||||
testate_c.destroy();
|
||||
}
|
||||
codici_c.add("#COSTI");
|
||||
testate_c.add(TR("COSTI"));
|
||||
@ -239,6 +239,8 @@ void TCRPA_report::offset_and_fill_columns(TReport_section& rep_sect,
|
||||
TReport_field& campo = (TReport_field&)campi_a_destra[k];
|
||||
campo.offset(offset);
|
||||
}
|
||||
|
||||
rep_sect.sort();
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user