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 "calib01.h"
|
||||||
#include "calib02.h"
|
#include "calib02.h"
|
||||||
#include "commesse.h"
|
#include "commesse.h"
|
||||||
|
#include "fasi.h"
|
||||||
#include "panapdc.h"
|
#include "panapdc.h"
|
||||||
#include "pconana.h"
|
#include "pconana.h"
|
||||||
#include "saldana.h"
|
#include "saldana.h"
|
||||||
@ -179,7 +180,8 @@ protected:
|
|||||||
TImporto& saldo, TImporto& saldop) const;
|
TImporto& saldo, TImporto& saldop) const;
|
||||||
void aggiorna_importo(TAssoc_array& riga_array, const TString& livello,
|
void aggiorna_importo(TAssoc_array& riga_array, const TString& livello,
|
||||||
const int indbil, const TRecordset& saldana, const bool inverti = false) const;
|
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 int indice, const TString& codcms, const TString& fase,
|
||||||
const TString& descrizione);
|
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("CODCMS", codcms);
|
||||||
riga_array->add("FASE", fase);
|
riga_array->add("FASE", fase);
|
||||||
riga_array->add("DESCRIZ", descrizione);
|
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
|
//aggiunge la riga all'array-one
|
||||||
cms.add(chiave, riga_array);
|
cms.add(chiave, riga_array);
|
||||||
@ -455,6 +463,44 @@ const TVariant& TPrint_bilancio_cms_recordset::get(unsigned int column) const
|
|||||||
return NULL_VARIANT;
|
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
|
const TVariant& TPrint_bilancio_cms_recordset::get(const char* column_name) const
|
||||||
{
|
{
|
||||||
if (_curr >= 0 && _curr < items())
|
if (_curr >= 0 && _curr < items())
|
||||||
@ -489,27 +535,9 @@ const TVariant& TPrint_bilancio_cms_recordset::get(const char* column_name) cons
|
|||||||
real avanzamento;
|
real avanzamento;
|
||||||
if (_tipostima == 'T')
|
if (_tipostima == 'T')
|
||||||
{
|
{
|
||||||
const TDate& datafinesc = _esc[_anno].fine();
|
avanzamento = calcola_avanzamento_tempo();
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
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...
|
else //if(strcmp(column_name,AVANZAMENTO...
|
||||||
{
|
{
|
||||||
TAssoc_array& riga = (TAssoc_array&)_righe[_curr];
|
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);
|
const TString* val = (TString*)riga.objptr(column_name);
|
||||||
if (val)
|
if (val)
|
||||||
var.set(*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)
|
if (codici_c.items() == 1)
|
||||||
{
|
{
|
||||||
codici_c.destroy();
|
codici_c.destroy();
|
||||||
testate_c.destroy();;
|
testate_c.destroy();
|
||||||
}
|
}
|
||||||
codici_c.add("#COSTI");
|
codici_c.add("#COSTI");
|
||||||
testate_c.add(TR("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];
|
TReport_field& campo = (TReport_field&)campi_a_destra[k];
|
||||||
campo.offset(offset);
|
campo.offset(offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rep_sect.sort();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user