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
|
||||
PROMPT 45 9 "Tipo di stima Costi\Ricavi"
|
||||
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."
|
||||
MESSAGE CLEAR,F_TIPODETR|HIDE,F_TIPODETR|ENABLE,F_INCLUDE_DOCUMENTI
|
||||
MESSAGE ENABLE,F_INCLUDE_DOCUMENTI
|
||||
ITEM "R|C cons.\R cons."
|
||||
MESSAGE CLEAR,F_TIPODETR|HIDE,F_TIPODETR|ENABLE,F_INCLUDE_DOCUMENTI
|
||||
END
|
||||
|
||||
BOOLEAN F_TIPODETR
|
||||
BEGIN
|
||||
PROMPT 1 11 "Utilizzare consuntivi per le detrazioni "
|
||||
MESSAGE ENABLE,F_INCLUDE_DOCUMENTI
|
||||
END
|
||||
|
||||
GROUPBOX F_PRE0 76 5
|
||||
|
@ -208,27 +208,35 @@ int TPrint_saldana_recordset::estrai_saldi(const TRectype& saldana, const int in
|
||||
|
||||
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));
|
||||
saldo = imp_saldo;
|
||||
flag |= saldo.is_zero() ? 0 : 1;
|
||||
}
|
||||
else //indbil=4 ricavi
|
||||
else //indbil=4 ricavi (preventivi per righe commessa, consuntivi per detrazioni)
|
||||
{
|
||||
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));
|
||||
saldop = imp_saldop;
|
||||
saldop += imp_saldov;
|
||||
flag |= saldop.is_zero() ? 0 : 2;
|
||||
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_saldov(saldana.get_char(SALDANA_SEZIONEV), saldana.get_real(SALDANA_SALDOV));
|
||||
saldop = imp_saldop;
|
||||
saldop += imp_saldov;
|
||||
flag |= saldop.is_zero() ? 0 : 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case 'T': //CostiPreventivi RicaviPreventivi (Cc/Rp) = Tempo
|
||||
//nel caso stia calcolando le detrazioni di anni precedenti (cms_detraz) e si sia scelto di farlo..
|
||||
//..usando i consuntivi (Adolf rikiesten)...
|
||||
if (cms_detraz && _tipodetr)
|
||||
//nel caso stia calcolando le detrazioni di anni precedenti (cms_detraz) va sempre preso il consuntivo!!
|
||||
if (cms_detraz)
|
||||
{
|
||||
const TImporto imp_saldo(saldana.get_char(SALDANA_SEZIONE), saldana.get_real(SALDANA_SALDO));
|
||||
saldo = imp_saldo;
|
||||
@ -319,7 +327,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 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);
|
||||
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..
|
||||
//..verranno considerati (_tipostima,indbil)
|
||||
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_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)
|
||||
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;
|
||||
|
||||
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
|
||||
if (is_detrazione)
|
||||
imp_saldop = imp_saldo;
|
||||
else
|
||||
{
|
||||
if (is_prev_futuro)
|
||||
imp_saldo.reset();
|
||||
}
|
||||
|
||||
//saldi normali:Maturato
|
||||
if (!imp_saldo.is_zero())
|
||||
{
|
||||
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
|
||||
if (!imp_saldop.is_zero())
|
||||
{
|
||||
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)
|
||||
{
|
||||
//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);
|
||||
@ -629,16 +646,14 @@ void TPrint_saldana_recordset::parse_saldana(TAssoc_array* cms, const TDate& dat
|
||||
TString80 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...
|
||||
//..le sezioni in cui compariranno le commesse nella stampa
|
||||
const TString& codcms = saldana.get(SALDANA_COMMESSA);
|
||||
const TRectype& rec_commesse = cache().get(LF_COMMESSE, codcms);
|
||||
//indice: indica la sezione di report in cui apparariranno i valori!
|
||||
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..
|
||||
//..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
|
||||
{
|
||||
#ifdef DBG
|
||||
if (codcms == "FP08PB2202INN" && indbil == 4 && indice == 0)
|
||||
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
|
||||
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 &&...
|
||||
|
||||
@ -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..
|
||||
//..selezionato sulla maschera (CRPA request)
|
||||
const int anno = saldana.get_int(SALDANA_ANNO);
|
||||
if (anno < _anno)
|
||||
if (anno_saldo < _anno)
|
||||
{
|
||||
TString16 cazzo_cod; cazzo_cod.format("detr_al_%04d", _anno - 1);
|
||||
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);
|
||||
if (_tipo == 8)
|
||||
{
|
||||
//cms_detr con tipo detrazione a consuntivo o preventivo in base al valore di _tipodetr
|
||||
aggiorna_importo(riga_array, gruppo, indbil, saldana, true, _tipodetr);
|
||||
aggiorna_importo(riga_array, conto, indbil, saldana, true, _tipodetr);
|
||||
//calcolo delle detrazioni (is_detrazione = true)
|
||||
aggiorna_importo(riga_array, gruppo, indbil, saldana, true);
|
||||
aggiorna_importo(riga_array, conto, indbil, saldana, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
aggiorna_importi(riga_array, indbil, saldana, true);
|
||||
aggiorna_importi(riga_array, indbil, saldana, anno_saldo - _anno);
|
||||
}
|
||||
} //if(anno<_anno...
|
||||
} //if(dataini<datainiesc...
|
||||
} //if(indice...
|
||||
|
||||
} //if (indbil == 3 ||...
|
||||
} //for(bool ok=saldana.move_first()..
|
||||
@ -1508,11 +1528,6 @@ const TVariant& TPrint_saldana_recordset::get(const char* column_name) const
|
||||
var.set(_depth);
|
||||
}
|
||||
else
|
||||
if (strcmp(column_name, "TIPODETR") == 0)
|
||||
{
|
||||
var.set(_tipodetr == true ? "X" : "");
|
||||
}
|
||||
else
|
||||
if (strcmp(column_name, "VITAINTERA") == 0)
|
||||
{
|
||||
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);
|
||||
_include_documenti = msk.get_bool(F_INCLUDE_DOCUMENTI);
|
||||
_depth = msk.get_int(F_DEPTH);
|
||||
_tipodetr = msk.get_bool(F_TIPODETR);
|
||||
_tipostampa = msk.get_int(F_TIPOSTAMPA);
|
||||
|
||||
//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 _include_documenti;
|
||||
bool _tipodetr;
|
||||
bool _forza_maturato;
|
||||
|
||||
char _tipostima;
|
||||
@ -112,7 +111,7 @@ protected:
|
||||
|
||||
//per il solo ca3800
|
||||
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;
|
||||
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;
|
||||
@ -125,7 +124,7 @@ protected:
|
||||
|
||||
//per il solo ca3900
|
||||
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,
|
||||
const TImporto& saldo, const bool inverti) const;
|
||||
|
||||
|
@ -14,7 +14,7 @@
|
||||
#define F_CDC 111
|
||||
#define F_DEPTH 112
|
||||
#define F_TIPOSTAMPA 113
|
||||
#define F_TIPODETR 114
|
||||
|
||||
#define F_FORZA_MATURATO 115
|
||||
#define F_INCLUDE_DOCUMENTI 116
|
||||
#define F_SHOW_CMS_DESCR 117
|
||||
|
@ -100,7 +100,7 @@ bool TPrint_stima_ricavi_mask::on_field_event(TOperable_field& o, TField_event e
|
||||
|
||||
|
||||
TPrint_stima_ricavi_mask::TPrint_stima_ricavi_mask()
|
||||
:TAnal_report_mask("ca3900")
|
||||
:TAnal_report_mask("ca3900")
|
||||
{
|
||||
TConfig& cfg = ca_config();
|
||||
const bool use_pdcc = cfg.get_bool("UsePdcc");
|
||||
@ -110,7 +110,7 @@ TPrint_stima_ricavi_mask::TPrint_stima_ricavi_mask()
|
||||
|
||||
int prefix = cfg.get_int("PdcPrefix");
|
||||
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
|
||||
if (use_pdcc && prefix > 0)
|
||||
|
Loading…
x
Reference in New Issue
Block a user