Patch level :10.0 690-692
Files correlati : Ricompilazione Demo : [ ] Commento : Modificata stima ricavi competenza (ca3900) in modo da tener conto dei saldi preventivi futuri. Modificata bilancio di commessa (ca3800) in modo da usare detrazioni sempre a consuntivo (prima era sceglibile solo nel caso di stima a tempo) git-svn-id: svn://10.65.10.50/trunk@20275 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
2ae88f40d3
commit
b1b8d4831c
@ -104,16 +104,11 @@ RADIOBUTTON F_TIPOSTIMA 1 30
|
|||||||
BEGIN
|
BEGIN
|
||||||
PROMPT 45 9 "Tipo di stima Costi\Ricavi"
|
PROMPT 45 9 "Tipo di stima Costi\Ricavi"
|
||||||
ITEM "T|C prev.\R prev. (Tempo)"
|
ITEM "T|C prev.\R prev. (Tempo)"
|
||||||
MESSAGE SHOW,F_TIPODETR|ENABLE,F_TIPODETR|CLEAR,F_INCLUDE_DOCUMENTI
|
MESSAGE CLEAR,F_INCLUDE_DOCUMENTI
|
||||||
ITEM "C|C cons.\R prev."
|
ITEM "C|C cons.\R prev."
|
||||||
MESSAGE CLEAR,F_TIPODETR|HIDE,F_TIPODETR|ENABLE,F_INCLUDE_DOCUMENTI
|
MESSAGE ENABLE,F_INCLUDE_DOCUMENTI
|
||||||
ITEM "R|C cons.\R cons."
|
ITEM "R|C cons.\R cons."
|
||||||
MESSAGE CLEAR,F_TIPODETR|HIDE,F_TIPODETR|ENABLE,F_INCLUDE_DOCUMENTI
|
MESSAGE ENABLE,F_INCLUDE_DOCUMENTI
|
||||||
END
|
|
||||||
|
|
||||||
BOOLEAN F_TIPODETR
|
|
||||||
BEGIN
|
|
||||||
PROMPT 1 11 "Utilizzare consuntivi per le detrazioni "
|
|
||||||
END
|
END
|
||||||
|
|
||||||
GROUPBOX F_PRE0 76 5
|
GROUPBOX F_PRE0 76 5
|
||||||
|
@ -208,13 +208,21 @@ int TPrint_saldana_recordset::estrai_saldi(const TRectype& saldana, const int in
|
|||||||
|
|
||||||
case 'C': //CostiConsuntivi RicaviPreventivi (Cc/Rp)
|
case 'C': //CostiConsuntivi RicaviPreventivi (Cc/Rp)
|
||||||
{
|
{
|
||||||
if (indbil == 3) //costi
|
if (indbil == 3) //costi (sempre e solo consuntivi, sia righe commessa che detrazione)
|
||||||
{
|
{
|
||||||
const TImporto imp_saldo(saldana.get_char(SALDANA_SEZIONE), saldana.get_real(SALDANA_SALDO));
|
const TImporto imp_saldo(saldana.get_char(SALDANA_SEZIONE), saldana.get_real(SALDANA_SALDO));
|
||||||
saldo = imp_saldo;
|
saldo = imp_saldo;
|
||||||
flag |= saldo.is_zero() ? 0 : 1;
|
flag |= saldo.is_zero() ? 0 : 1;
|
||||||
}
|
}
|
||||||
else //indbil=4 ricavi
|
else //indbil=4 ricavi (preventivi per righe commessa, consuntivi per detrazioni)
|
||||||
|
{
|
||||||
|
if (cms_detraz)
|
||||||
|
{
|
||||||
|
const TImporto imp_saldo(saldana.get_char(SALDANA_SEZIONE), saldana.get_real(SALDANA_SALDO));
|
||||||
|
saldo = imp_saldo;
|
||||||
|
flag |= saldo.is_zero() ? 0 : 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
const TImporto imp_saldop(saldana.get_char(SALDANA_SEZIONEP), saldana.get_real(SALDANA_SALDOP));
|
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));
|
const TImporto imp_saldov(saldana.get_char(SALDANA_SEZIONEV), saldana.get_real(SALDANA_SALDOV));
|
||||||
@ -223,12 +231,12 @@ int TPrint_saldana_recordset::estrai_saldi(const TRectype& saldana, const int in
|
|||||||
flag |= saldop.is_zero() ? 0 : 2;
|
flag |= saldop.is_zero() ? 0 : 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'T': //CostiPreventivi RicaviPreventivi (Cc/Rp) = Tempo
|
case 'T': //CostiPreventivi RicaviPreventivi (Cc/Rp) = Tempo
|
||||||
//nel caso stia calcolando le detrazioni di anni precedenti (cms_detraz) e si sia scelto di farlo..
|
//nel caso stia calcolando le detrazioni di anni precedenti (cms_detraz) va sempre preso il consuntivo!!
|
||||||
//..usando i consuntivi (Adolf rikiesten)...
|
if (cms_detraz)
|
||||||
if (cms_detraz && _tipodetr)
|
|
||||||
{
|
{
|
||||||
const TImporto imp_saldo(saldana.get_char(SALDANA_SEZIONE), saldana.get_real(SALDANA_SALDO));
|
const TImporto imp_saldo(saldana.get_char(SALDANA_SEZIONE), saldana.get_real(SALDANA_SALDO));
|
||||||
saldo = imp_saldo;
|
saldo = imp_saldo;
|
||||||
@ -319,7 +327,7 @@ TAssoc_array& TPrint_saldana_recordset::get_row(TAssoc_array& cms, const char* c
|
|||||||
|
|
||||||
//for ca3800 only!
|
//for ca3800 only!
|
||||||
void TPrint_saldana_recordset::aggiorna_importo(TAssoc_array& riga_array, const TString& livello,
|
void TPrint_saldana_recordset::aggiorna_importo(TAssoc_array& riga_array, const TString& livello,
|
||||||
const int indbil, const TRectype& saldana, const bool inverti, const bool cms_detraz) const
|
const int indbil, const TRectype& saldana, const bool is_detrazione) const
|
||||||
{
|
{
|
||||||
TString* str_imp = (TString*)riga_array.objptr(livello);
|
TString* str_imp = (TString*)riga_array.objptr(livello);
|
||||||
if (str_imp == NULL)
|
if (str_imp == NULL)
|
||||||
@ -335,9 +343,9 @@ 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..
|
//ci sono tutti i tipi di saldo, ma solo quelli che rientrano nei parametri iniziali..
|
||||||
//..verranno considerati (_tipostima,indbil)
|
//..verranno considerati (_tipostima,indbil)
|
||||||
TImporto imp_saldo, imp_saldop;
|
TImporto imp_saldo, imp_saldop;
|
||||||
estrai_saldi(saldana, indbil, imp_saldo, imp_saldop, cms_detraz);
|
estrai_saldi(saldana, indbil, imp_saldo, imp_saldop, is_detrazione);
|
||||||
|
|
||||||
if (inverti) // Devo sottrarre l'importo = gli scambio la sezione
|
if (is_detrazione) // Se è una detrazione deve sottrarre l'importo = scambia la sezione
|
||||||
{
|
{
|
||||||
imp_saldo.swap_section();
|
imp_saldo.swap_section();
|
||||||
imp_saldop.swap_section();
|
imp_saldop.swap_section();
|
||||||
@ -415,8 +423,12 @@ void TPrint_saldana_recordset::incrementa_importo(TAssoc_array& riga_array,
|
|||||||
|
|
||||||
//metodo usato solo per la stima ricavi ca3900 (_tipo=9)
|
//metodo usato solo per la stima ricavi ca3900 (_tipo=9)
|
||||||
void TPrint_saldana_recordset::aggiorna_importi(TAssoc_array& riga_array,
|
void TPrint_saldana_recordset::aggiorna_importi(TAssoc_array& riga_array,
|
||||||
const int indbil, const TRectype& saldana, const bool is_detrazione) const
|
const int indbil, const TRectype& saldana, const int tempo) const
|
||||||
{
|
{
|
||||||
|
const bool is_detrazione = tempo < 0;
|
||||||
|
const bool is_prev_futuro = tempo > 0;
|
||||||
|
const bool inverti = is_detrazione;
|
||||||
|
|
||||||
TString8 livello;
|
TString8 livello;
|
||||||
|
|
||||||
TImporto imp_saldo, imp_saldop;
|
TImporto imp_saldo, imp_saldop;
|
||||||
@ -427,18 +439,23 @@ void TPrint_saldana_recordset::aggiorna_importi(TAssoc_array& riga_array,
|
|||||||
//..vengono posti uguali ai maturati d'ufficio
|
//..vengono posti uguali ai maturati d'ufficio
|
||||||
if (is_detrazione)
|
if (is_detrazione)
|
||||||
imp_saldop = imp_saldo;
|
imp_saldop = imp_saldo;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (is_prev_futuro)
|
||||||
|
imp_saldo.reset();
|
||||||
|
}
|
||||||
|
|
||||||
//saldi normali:Maturato
|
//saldi normali:Maturato
|
||||||
if (!imp_saldo.is_zero())
|
if (!imp_saldo.is_zero())
|
||||||
{
|
{
|
||||||
livello.format("%s_MAT", indbil == 3 ? "COS" : "RIC");
|
livello.format("%s_MAT", indbil == 3 ? "COS" : "RIC");
|
||||||
incrementa_importo(riga_array, livello, indbil, imp_saldo, is_detrazione);
|
incrementa_importo(riga_array, livello, indbil, imp_saldo, inverti);
|
||||||
}
|
}
|
||||||
//saldi preventivi:Budget
|
//saldi preventivi:Budget
|
||||||
if (!imp_saldop.is_zero())
|
if (!imp_saldop.is_zero())
|
||||||
{
|
{
|
||||||
livello.format("%s_BDG", indbil == 3 ? "COS" : "RIC");
|
livello.format("%s_BDG", indbil == 3 ? "COS" : "RIC");
|
||||||
incrementa_importo(riga_array, livello, indbil, imp_saldop, is_detrazione);
|
incrementa_importo(riga_array, livello, indbil, imp_saldop, inverti);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -599,7 +616,7 @@ void TPrint_saldana_recordset::parse_saldana(TAssoc_array* cms, const TDate& dat
|
|||||||
if (_tipo == 9)
|
if (_tipo == 9)
|
||||||
{
|
{
|
||||||
//non vanno considerati saldi di esercizi futuri a quello scelto!!!
|
//non vanno considerati saldi di esercizi futuri a quello scelto!!!
|
||||||
query << "USE SALDANA\nTO ANNO=" << _anno;
|
query << "USE SALDANA\nSELECT COMMESSA='AS09MB4RETECO'";
|
||||||
}
|
}
|
||||||
|
|
||||||
TISAM_recordset saldana_set(query);
|
TISAM_recordset saldana_set(query);
|
||||||
@ -629,16 +646,14 @@ void TPrint_saldana_recordset::parse_saldana(TAssoc_array* cms, const TDate& dat
|
|||||||
TString80 conto;
|
TString80 conto;
|
||||||
parse_bill(conto_anale, conto);
|
parse_bill(conto_anale, conto);
|
||||||
|
|
||||||
TImporto saldo, saldop;
|
|
||||||
|
|
||||||
const int flag = estrai_saldi(saldana, indbil, saldo, saldop, false);
|
|
||||||
|
|
||||||
//estrae i dati di commessa e le date relative;le date servono successivamente per stabilire...
|
//estrae i dati di commessa e le date relative;le date servono successivamente per stabilire...
|
||||||
//..le sezioni in cui compariranno le commesse nella stampa
|
//..le sezioni in cui compariranno le commesse nella stampa
|
||||||
const TString& codcms = saldana.get(SALDANA_COMMESSA);
|
const TString& codcms = saldana.get(SALDANA_COMMESSA);
|
||||||
const TRectype& rec_commesse = cache().get(LF_COMMESSE, codcms);
|
const TRectype& rec_commesse = cache().get(LF_COMMESSE, codcms);
|
||||||
//indice: indica la sezione di report in cui apparariranno i valori!
|
//indice: indica la sezione di report in cui apparariranno i valori!
|
||||||
const int indice = ricava_sezione_di_stampa(rec_commesse, datainiesc, datafinesc);
|
const int indice = ricava_sezione_di_stampa(rec_commesse, datainiesc, datafinesc);
|
||||||
|
//anno sul record di saldana;serve un pò dappertutto sotto
|
||||||
|
const int anno_saldo = saldana.get_int(SALDANA_ANNO);
|
||||||
|
|
||||||
//e' inutile considerare le commesse terminate prima dell'esercizio selezionato..
|
//e' inutile considerare le commesse terminate prima dell'esercizio selezionato..
|
||||||
//..cioe' nel passato oppure che iniziano nel futuro! Solo le commesse con indice non..
|
//..cioe' nel passato oppure che iniziano nel futuro! Solo le commesse con indice non..
|
||||||
@ -672,15 +687,21 @@ void TPrint_saldana_recordset::parse_saldana(TAssoc_array* cms, const TDate& dat
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
#ifdef DBG
|
#ifdef DBG
|
||||||
if (codcms == "FP08PB2202INN" && indbil == 4 && indice == 0)
|
if (codcms == "AS09MB4RETECO" && indice == 3)
|
||||||
int cazzone = 1;
|
int cazzone = 1;
|
||||||
#endif
|
#endif
|
||||||
TAssoc_array& riga_array = get_row(cms[indice], chiave, indice, codcms, EMPTY_STRING, EMPTY_STRING,
|
TAssoc_array& riga_array = get_row(cms[indice], chiave, indice, codcms, EMPTY_STRING, EMPTY_STRING,
|
||||||
rec_commesse.get(COMMESSE_DESCRIZ));
|
rec_commesse.get(COMMESSE_DESCRIZ));
|
||||||
//aggiunge gli importi e normalizza
|
//aggiunge gli importi e normalizza
|
||||||
aggiorna_importi(riga_array, indbil, saldana);
|
if (anno_saldo > _anno) // gestione saldo nel futuro
|
||||||
|
{
|
||||||
|
if (indice > 1) // considera i saldop solo se è una commessa che termina nel futuro!
|
||||||
|
aggiorna_importi(riga_array, indbil, saldana, anno_saldo - _anno);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
aggiorna_importi(riga_array, indbil, saldana, 0); // gestione saldo passato e presente
|
||||||
|
|
||||||
|
} //if(tipo==8)
|
||||||
|
|
||||||
} //if (datafine >= datainiesc &&...
|
} //if (datafine >= datainiesc &&...
|
||||||
|
|
||||||
@ -692,8 +713,7 @@ void TPrint_saldana_recordset::parse_saldana(TAssoc_array* cms, const TDate& dat
|
|||||||
{
|
{
|
||||||
//aggiorna il record speciale con la somma dei saldi con anno anteriore a quello..
|
//aggiorna il record speciale con la somma dei saldi con anno anteriore a quello..
|
||||||
//..selezionato sulla maschera (CRPA request)
|
//..selezionato sulla maschera (CRPA request)
|
||||||
const int anno = saldana.get_int(SALDANA_ANNO);
|
if (anno_saldo < _anno)
|
||||||
if (anno < _anno)
|
|
||||||
{
|
{
|
||||||
TString16 cazzo_cod; cazzo_cod.format("detr_al_%04d", _anno - 1);
|
TString16 cazzo_cod; cazzo_cod.format("detr_al_%04d", _anno - 1);
|
||||||
TString cazzo_descr = "DETRAZIONE PER COMPETENZA FINO AL ";
|
TString cazzo_descr = "DETRAZIONE PER COMPETENZA FINO AL ";
|
||||||
@ -702,16 +722,16 @@ void TPrint_saldana_recordset::parse_saldana(TAssoc_array* cms, const TDate& dat
|
|||||||
EMPTY_STRING, EMPTY_STRING, cazzo_descr);
|
EMPTY_STRING, EMPTY_STRING, cazzo_descr);
|
||||||
if (_tipo == 8)
|
if (_tipo == 8)
|
||||||
{
|
{
|
||||||
//cms_detr con tipo detrazione a consuntivo o preventivo in base al valore di _tipodetr
|
//calcolo delle detrazioni (is_detrazione = true)
|
||||||
aggiorna_importo(riga_array, gruppo, indbil, saldana, true, _tipodetr);
|
aggiorna_importo(riga_array, gruppo, indbil, saldana, true);
|
||||||
aggiorna_importo(riga_array, conto, indbil, saldana, true, _tipodetr);
|
aggiorna_importo(riga_array, conto, indbil, saldana, true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
aggiorna_importi(riga_array, indbil, saldana, true);
|
aggiorna_importi(riga_array, indbil, saldana, anno_saldo - _anno);
|
||||||
}
|
}
|
||||||
} //if(anno<_anno...
|
} //if(anno<_anno...
|
||||||
} //if(dataini<datainiesc...
|
} //if(indice...
|
||||||
|
|
||||||
} //if (indbil == 3 ||...
|
} //if (indbil == 3 ||...
|
||||||
} //for(bool ok=saldana.move_first()..
|
} //for(bool ok=saldana.move_first()..
|
||||||
@ -1508,11 +1528,6 @@ const TVariant& TPrint_saldana_recordset::get(const char* column_name) const
|
|||||||
var.set(_depth);
|
var.set(_depth);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (strcmp(column_name, "TIPODETR") == 0)
|
|
||||||
{
|
|
||||||
var.set(_tipodetr == true ? "X" : "");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
if (strcmp(column_name, "VITAINTERA") == 0)
|
if (strcmp(column_name, "VITAINTERA") == 0)
|
||||||
{
|
{
|
||||||
var.set(_vitaintera == true ? "SI" : "NO");
|
var.set(_vitaintera == true ? "SI" : "NO");
|
||||||
@ -1639,7 +1654,6 @@ void TPrint_saldana_recordset::set_filter(const TMask& msk, const TString& curr_
|
|||||||
_vitaintera = msk.get_bool(F_VITAINTERA);
|
_vitaintera = msk.get_bool(F_VITAINTERA);
|
||||||
_include_documenti = msk.get_bool(F_INCLUDE_DOCUMENTI);
|
_include_documenti = msk.get_bool(F_INCLUDE_DOCUMENTI);
|
||||||
_depth = msk.get_int(F_DEPTH);
|
_depth = msk.get_int(F_DEPTH);
|
||||||
_tipodetr = msk.get_bool(F_TIPODETR);
|
|
||||||
_tipostampa = msk.get_int(F_TIPOSTAMPA);
|
_tipostampa = msk.get_int(F_TIPOSTAMPA);
|
||||||
|
|
||||||
//in base al tipo di stampa selezionata setta un po' di parametri
|
//in base al tipo di stampa selezionata setta un po' di parametri
|
||||||
|
@ -79,7 +79,6 @@ class TPrint_saldana_recordset : public TRecordset
|
|||||||
|
|
||||||
bool _vitaintera;
|
bool _vitaintera;
|
||||||
bool _include_documenti;
|
bool _include_documenti;
|
||||||
bool _tipodetr;
|
|
||||||
bool _forza_maturato;
|
bool _forza_maturato;
|
||||||
|
|
||||||
char _tipostima;
|
char _tipostima;
|
||||||
@ -112,7 +111,7 @@ protected:
|
|||||||
|
|
||||||
//per il solo ca3800
|
//per il solo ca3800
|
||||||
void aggiorna_importo(TAssoc_array& riga_array, const TString& livello, const int indbil,
|
void aggiorna_importo(TAssoc_array& riga_array, const TString& livello, const int indbil,
|
||||||
const TRectype& saldana, const bool inverti = false, const bool cms_detraz = false) const;
|
const TRectype& saldana, const bool is_detrazione = false) const;
|
||||||
real calcola_avanzamento_tempo() const;
|
real calcola_avanzamento_tempo() const;
|
||||||
const TDate calcola_min_datacomp(const TDate& datainiesc, const TDate& datafinesc) 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;
|
int ricava_sezione_di_stampa(const TRectype& rec_commesse, const TDate& datainiesc, const TDate& datafinesc) const;
|
||||||
@ -125,7 +124,7 @@ protected:
|
|||||||
|
|
||||||
//per il solo ca3900
|
//per il solo ca3900
|
||||||
void aggiorna_importi(TAssoc_array& riga_array, const int indbil, const TRectype& saldana,
|
void aggiorna_importi(TAssoc_array& riga_array, const int indbil, const TRectype& saldana,
|
||||||
const bool is_detrazione = false) const;
|
const int tempo) const;
|
||||||
void incrementa_importo(TAssoc_array& riga_array, const TString& livello, const int indbil,
|
void incrementa_importo(TAssoc_array& riga_array, const TString& livello, const int indbil,
|
||||||
const TImporto& saldo, const bool inverti) const;
|
const TImporto& saldo, const bool inverti) const;
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@
|
|||||||
#define F_CDC 111
|
#define F_CDC 111
|
||||||
#define F_DEPTH 112
|
#define F_DEPTH 112
|
||||||
#define F_TIPOSTAMPA 113
|
#define F_TIPOSTAMPA 113
|
||||||
#define F_TIPODETR 114
|
|
||||||
#define F_FORZA_MATURATO 115
|
#define F_FORZA_MATURATO 115
|
||||||
#define F_INCLUDE_DOCUMENTI 116
|
#define F_INCLUDE_DOCUMENTI 116
|
||||||
#define F_SHOW_CMS_DESCR 117
|
#define F_SHOW_CMS_DESCR 117
|
||||||
|
@ -110,7 +110,7 @@ TPrint_stima_ricavi_mask::TPrint_stima_ricavi_mask()
|
|||||||
|
|
||||||
int prefix = cfg.get_int("PdcPrefix");
|
int prefix = cfg.get_int("PdcPrefix");
|
||||||
if (prefix >= pconana_levels)
|
if (prefix >= pconana_levels)
|
||||||
prefix = pconana_levels-1;
|
prefix = pconana_levels - 1;
|
||||||
|
|
||||||
// Controllo se voglio (e posso) usare il conto analitico come prefisso di quello contabile
|
// Controllo se voglio (e posso) usare il conto analitico come prefisso di quello contabile
|
||||||
if (use_pdcc && prefix > 0)
|
if (use_pdcc && prefix > 0)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user