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:
parent
39b6795472
commit
5b77ffd455
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user