Patch level :10.0 962

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
Corretto %Ric. in caso di stampa 'C' o 'R' in base a segnalazione Dinamica (i denominatori sono sempre Preventivi)


git-svn-id: svn://10.65.10.50/branches/R_10_00@21830 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2011-03-25 09:41:03 +00:00
parent 39b6795472
commit 5b77ffd455
3 changed files with 49 additions and 25 deletions

@ -785,7 +785,7 @@ void TPrint_rendiconto_ca_recordset::scrive_riga(TLocalisamfile& tmp, const TRec
const char tipomov = movana.get_char(MOVANA_TIPOMOV);
#ifdef DBG
const long movana_numreg = movana.get_long(MOVANA_NUMREG);
if (movana_numreg == 23004)
if (movana_numreg == 32736)
const int cazzone = 1;
#endif
@ -1360,6 +1360,10 @@ void TPrint_rendiconto_ca_recordset::crea_righe_da_rmovana(TLocalisamfile& tmp,
{
//legge la testata iniziale
const long numreg = rmovana.get_long(RMOVANA_NUMREG);
#ifdef DBG
if (numreg == 32736)
const int cazzissimo = 1;
#endif
//se la testata e' cambiata, allora ha cambiato movana e quindi le righe da compattare sono..
//..quelle che ha gia' messo nell'array delle righe_attuali
if (numreg != old_numreg)
@ -1538,10 +1542,8 @@ void TPrint_rendiconto_ca_recordset::crea_righe_da_rdoc(TLocalisamfile& tmp, con
const TRectype& curr_rdoc = cur_rdoc.curr();
const TString& rdoc_dacodnum = curr_rdoc.get(RDOC_DACODNUM);
#ifdef DBG
if (rdoc_dacodnum == "FDR" && curr_rdoc.get_int(RDOC_ANNO) == 2009 && curr_rdoc.get_int(RDOC_NDOC) == 129)
{
int riga_doc = curr_rdoc.get_int(RDOC_NRIGA);
}
if (rdoc_dacodnum == "FDR" && curr_rdoc.get_int(RDOC_ANNO) == 2010 && curr_rdoc.get_int(RDOC_NDOC) == 66)
const int culone = 1;
#endif
const bool is_special_doc = _num_fdr.find(rdoc_dacodnum) >= 0;
//documento non contabilizzato o fattura da ricevere con numerazione configurata speciale

@ -175,7 +175,8 @@ void TPrint_saldana_recordset::parse_bill(const TString& bill, TString& conto) c
}
int TPrint_saldana_recordset::estrai_saldi(const TRectype& saldana, const int indbil,
TImporto& saldo, TImporto& saldop, const bool cms_detraz) const
TImporto& saldo, TImporto& saldop, const bool cms_detraz,
const bool is_totale) const
{
int flag = 0;
saldo.reset();
@ -190,7 +191,9 @@ int TPrint_saldana_recordset::estrai_saldi(const TRectype& saldana, const int in
case 'R': //CostiConsuntivi RicaviConsuntivi (Cc/Rc) (le detrazioni saranno ovviamente sempre e solo consuntive)
{
const TImporto imp_saldo(saldana.get_char(SALDANA_SEZIONE), saldana.get_real(SALDANA_SALDO));
if (!imp_saldo.is_zero())
const TImporto imp_saldop(saldana.get_char(SALDANA_SEZIONEP), saldana.get_real(SALDANA_SALDOP));
const TImporto imp_saldov(saldana.get_char(SALDANA_SEZIONEV), saldana.get_real(SALDANA_SALDOV));
if (!imp_saldo.is_zero() || !imp_saldop.is_zero() || !imp_saldov.is_zero())
{
if (indbil == 3) //indbil=3 costi
{
@ -199,7 +202,17 @@ int TPrint_saldana_recordset::estrai_saldi(const TRectype& saldana, const int in
}
else //indbil=4 ricavi
{
saldop = imp_saldo;
//nel caso sia il calcolo di un totale, il totale dei ricavi va sempre preso per budget!
//Richiesta Adolfo-Enrichettica del 24-03-2011 (prima il totale dei ricavi era sul maturato)
if (is_totale)
{
saldop = imp_saldop;
saldop += imp_saldov;
}
else
{
saldop = imp_saldo;
}
flag = 2;
}
}
@ -327,7 +340,7 @@ TAssoc_array& TPrint_saldana_recordset::get_row(TAssoc_array& cms, const char* c
//for ca3800 only!
void TPrint_saldana_recordset::aggiorna_importo(TAssoc_array& riga_array, const TString& livello,
const int indbil, const TRectype& saldana, const bool is_detrazione) const
const int indbil, const TRectype& saldana, const bool is_detrazione, const bool is_totale) const
{
TString* str_imp = (TString*)riga_array.objptr(livello);
if (str_imp == NULL)
@ -343,7 +356,7 @@ void TPrint_saldana_recordset::aggiorna_importo(TAssoc_array& riga_array, const
//ci sono tutti i tipi di saldo, ma solo quelli che rientrano nei parametri iniziali..
//..verranno considerati (_tipostima,indbil)
TImporto imp_saldo, imp_saldop;
estrai_saldi(saldana, indbil, imp_saldo, imp_saldop, is_detrazione);
estrai_saldi(saldana, indbil, imp_saldo, imp_saldop, is_detrazione, is_totale);
if (is_detrazione) // Se è una detrazione deve sottrarre l'importo = scambia la sezione
{
@ -433,7 +446,7 @@ void TPrint_saldana_recordset::aggiorna_importi(TAssoc_array& riga_array,
TImporto imp_saldo, imp_saldop;
estrai_saldi(saldana, indbil, imp_saldo, imp_saldop, false);
estrai_saldi(saldana, indbil, imp_saldo, imp_saldop, false, false);
//richiesta Dinamica-Crpa: nelle detrazioni comandano sempre i maturati (quindi i saldo); i preventivi..
//..vengono posti uguali ai maturati d'ufficio
@ -706,15 +719,15 @@ void TPrint_saldana_recordset::parse_saldana(TAssoc_array* cms, const TDate& dat
//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);
#ifdef DBG
if (codcms == "FP10VB22388OP" && indbil == 4)
int cazzone = 1;
#endif
aggiorna_importo(riga_tot, gruppo, indbil, saldana, false, true);
}
//stima ricavi ca3900 (_tipo=9)
else
{
#ifdef DBG
if (codcms == "AS09MB4RETECO" && indice == 3)
int cazzone = 1;
#endif
TAssoc_array& riga_array = get_row(cms[indice], chiave, indice, codcms, EMPTY_STRING, EMPTY_STRING,
rec_commesse.get(COMMESSE_DESCRIZ));
//aggiunge gli importi e normalizza
@ -809,7 +822,7 @@ void TPrint_saldana_recordset::parse_saldana_futuri()
TImporto saldo, saldop;
const int flag = estrai_saldi(saldana, indbil, saldo, saldop, false);
const int flag = estrai_saldi(saldana, indbil, saldo, saldop, false, true);
//estrae i dati di commessa e le date relative;le date servono successivamente per stabilire...
//..le sezioni in cui compariranno le commesse nella stampa
@ -833,7 +846,7 @@ void TPrint_saldana_recordset::parse_saldana_futuri()
//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);
aggiorna_importo(riga_tot, gruppo, indbil, saldana, false, true);
}
}
}
@ -920,7 +933,7 @@ void TPrint_saldana_recordset::elabora_rmovana(TAssoc_array* cms, const TDate& d
if (!importo.is_zero())
{
#ifdef DBG
if (codcms == "AS08LB4CRPATI")
if (codcms == "")
const int cazzone = 1;
#endif
const TString& codconto = rmovana.get(RMOVANA_CODCONTO);
@ -965,7 +978,7 @@ void TPrint_saldana_recordset::elabora_rmovana(TAssoc_array* cms, const TDate& d
saldana.put(SALDANA_SALDO, importo_riga.valore());
#ifdef DBG
if (codcms == "FP08MB24005RN")
if (codcms == "")
{
ofstream movimenti("C:/temp/movimenti.txt", ios::app);
movimenti << rmovana.get(RMOVANA_NUMREG) << '\t'
@ -1158,7 +1171,7 @@ void TPrint_saldana_recordset::parse_rdoc_ordini(TAssoc_array* cms, const TDate&
cdc = doc.get(DOC_CODCOSTO);
if (cms.empty())
cms = doc.get(DOC_CODCMS);
if (cdc == "BO04" && cms == "AS10MB4RETECO")
if (cdc == "" && cms == "")
{
ordini << rigadoc.get(RDOC_PROVV) << '\t'
<< rigadoc.get(RDOC_ANNO) << '\t'
@ -1325,7 +1338,7 @@ void TPrint_saldana_recordset::parse_rdoc_fatture(TAssoc_array* cms, const TDate
#ifdef DBG
//file di controllo in output
if (rmovana.get(RMOVANA_CODCMS) == "FP08MB24005RN")
if (rmovana.get(RMOVANA_CODCMS) == "")
{
fatture << movana.get(MOVANA_DANNO) << '\t'
<< movana.get(MOVANA_DCODNUM) << '\t'
@ -1509,7 +1522,11 @@ const TVariant& TPrint_saldana_recordset::get(const char* column_name) const
else
if (strcmp(column_name, "AVANZAMENTO") == 0)
{
//RICAVI
//------
//Calcola lo stato di avanzamento della commessa in caso di stima x Tempo
//In questo caso i ricavihanno una % di avanzamento legata alla durata della commessa (prorogata ecc.)..
//..rispetto al momento della stampa
real avanzamento;
if (_tipostima == 'T')
{
@ -1517,6 +1534,9 @@ const TVariant& TPrint_saldana_recordset::get(const char* column_name) const
}
else //se stima e' di tipo Costi/Ricavi invece....Allah!!
{
//In caso di stampa Ricavi nei casi _tipostime = 'C' o 'R', l'avanzamento è calcolato in base agli importi.
//Caso 'C': valore_preventivo / totale_preventivo
//Caso 'R': valore_consuntivo / totale_preventivo (!) richiesta specifica Adolfo-Enrichetta 24-03-2011
TAssoc_array& riga = (TAssoc_array&)_righe[_curr];
const real val = get("RICAVI").as_real();
if (!val.is_zero())
@ -1524,7 +1544,7 @@ const TVariant& TPrint_saldana_recordset::get(const char* column_name) const
const int indice = get("LEVEL").as_int();
const TString& codcms = get("CODCMS").as_string();
#ifdef DBG
if (codcms == "FP08PB2202INN")
if (codcms == "FP10VB22388OP")
const int cazzone = 1;
#endif
TAssoc_array& riga_tot = get_row((TAssoc_array&)_totali[indice], codcms, indice, codcms, EMPTY_STRING, EMPTY_STRING,
@ -1546,6 +1566,8 @@ const TVariant& TPrint_saldana_recordset::get(const char* column_name) const
if (strncmp(column_name, "RECORD.", 7) == 0)
column_name += 7;
//COSTI
//-----
if (strcmp(column_name, "COS_PERC") == 0)
{
const int indice = get("LEVEL").as_int();

@ -99,7 +99,7 @@ protected:
void parse_bill(const TString& bill, TString& conto) const;
int estrai_saldi(const TRectype& saldana, const int indbil,
TImporto& saldo, TImporto& saldop, const bool cms_detraz) const;
TImporto& saldo, TImporto& saldop, const bool cms_detraz, const bool is_totale) const;
void elabora_rmovana(TAssoc_array* cms, const TDate& datainiesc, const TDate& datafinesc,
const TRectype& movana, const TRectype& rmovana);
@ -113,7 +113,7 @@ protected:
//per il solo ca3800
void aggiorna_importo(TAssoc_array& riga_array, const TString& livello, const int indbil,
const TRectype& saldana, const bool is_detrazione = false) const;
const TRectype& saldana, const bool is_detrazione = false, const bool is_totale = false) const;
real calcola_avanzamento_tempo() const;
const TDate calcola_min_datacomp(const TDate& datainiesc, const TDate& datafinesc) const;
int ricava_sezione_di_stampa(const TRectype& rec_commesse, const TDate& datainiesc, const TDate& datafinesc) const;