Patch level : 2.0 564

Files correlati     : sv2.exe sv2100a.msk
Ricompilazione Demo : [ ]
Commento            :

GF20071
La statistica per articoli omaggio non funziona ne se la configurazione
dice RAGGRUPPA OMAGGI CON MERCE e neanche nel caso contrario


git-svn-id: svn://10.65.10.50/trunk@11415 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 2003-09-12 14:31:37 +00:00
parent 847a4bb9c5
commit dcacf87142
3 changed files with 50 additions and 7 deletions

View File

@ -11,6 +11,10 @@
class TRicalcolo_stats : public TSkeleton_application class TRicalcolo_stats : public TSkeleton_application
{ {
TStats_agg _agg; TStats_agg _agg;
static TDate _datamin;
protected:
void calcola_data_minima();
protected: protected:
virtual void main_loop(); virtual void main_loop();
@ -23,6 +27,8 @@ public:
void calc_stats(const TDate& dfr, const TDate& dto); void calc_stats(const TDate& dfr, const TDate& dto);
}; };
TDate TRicalcolo_stats::_datamin;
bool TRicalcolo_stats::create() bool TRicalcolo_stats::create()
{ {
open_files(LF_TABCOM, 0); // File comuni open_files(LF_TABCOM, 0); // File comuni
@ -74,6 +80,40 @@ bool TRicalcolo_stats::kill_stats(const TDate& dfr, const TDate& dto)
return TRUE; return TRUE;
} }
void TRicalcolo_stats::calcola_data_minima()
{
TWait_cursor hourglass;
TAssoc_array tipi_doc;
TRelation rel_tip("%TIP");
TCursor cur_tip(&rel_tip);
const TRecnotype items_tip = cur_tip.items();
cur_tip.freeze();
for (cur_tip = 0L; cur_tip.pos() < items_tip; ++cur_tip)
{
const TRectype& rec_tip = rel_tip.curr();
if (rec_tip.get_bool("B2")) // E' un tipo per le statistiche
tipi_doc.add(rec_tip.get("CODTAB"), NULL);
}
TRelation rel_doc(LF_DOC);
TCursor cur_doc(&rel_doc, "", 3);
const TRectype& rec_doc = rel_doc.curr();
const TRecnotype items_doc = cur_doc.items();
cur_doc.freeze();
for (cur_doc = 0L; cur_doc.pos() < items_doc; ++cur_doc)
{
const TString& tipodoc = rec_doc.get(DOC_TIPODOC);
if (tipi_doc.is_key(tipodoc))
{
_datamin = rec_doc.get(DOC_DATADOC);
_datamin.set_day(1);
break;
}
}
}
void TRicalcolo_stats::calc_stats(const TDate& dfr, const TDate& dto) void TRicalcolo_stats::calc_stats(const TDate& dfr, const TDate& dto)
{ {
@ -94,7 +134,7 @@ void TRicalcolo_stats::calc_stats(const TDate& dfr, const TDate& dto)
const long items = cur.items(); const long items = cur.items();
cur.freeze(); cur.freeze();
TProgind pi(items, "Ricalcolo statistiche", FALSE, TRUE); TProgind pi(items, TR("Ricalcolo statistiche"), FALSE, TRUE);
TDocumento* curr = new TDocumento; TDocumento* curr = new TDocumento;
cur.file().set_curr(curr); cur.file().set_curr(curr);
@ -134,19 +174,21 @@ bool TRicalcolo_stats::datein_handler(TMask_field& f, KEY k)
{ {
if (f.to_check(k)) if (f.to_check(k))
{ {
TConfig prassid(CONFIG_DITTA, "Euro"); const TDate inizio = f.get();
TDate adozione = prassid.get("DataAdozione"); if (inizio < _datamin)
TDate inizio(f.get()); return f.error_box(FR("Impossibile effettuare la ricostruzione statistiche\nad una data antecedente il %s"), _datamin.string());
if (adozione.ok() && inizio < adozione)
return f.error_box("Impossibile effettuare la ricostruzione statistiche \n a una data inferiore alla data adozione Euro") ;
} }
return TRUE; return TRUE;
} }
void TRicalcolo_stats::main_loop() void TRicalcolo_stats::main_loop()
{ {
calcola_data_minima();
TMask m("sv2100a"); TMask m("sv2100a");
m.set_handler(F_FROMDATE, datein_handler); m.set_handler(F_FROMDATE, datein_handler);
m.set(F_FROMDATE, _datamin);
while (m.run() == K_ENTER) while (m.run() == K_ENTER)
{ {
const TDate dfr(m.get(F_FROMDATE)); const TDate dfr(m.get(F_FROMDATE));

View File

@ -5,6 +5,7 @@ PAGE "Ricalcolo statistiche" -1 -1 30 6
DATE F_FROMDATE DATE F_FROMDATE
BEGIN BEGIN
PROMPT 1 1 "Dalla data " PROMPT 1 1 "Dalla data "
CHECKTYPE REQUIRED
END END
DATE F_TODATE DATE F_TODATE

View File

@ -506,7 +506,7 @@ bool TStats_agg::algebric_sum(const TRiga_documento& rdoc, int sign)
if (_valfield.empty()) if (_valfield.empty())
{ {
if (_omaggi_valore && rdoc.is_omaggio()) if (_omaggi_valore && rdoc.is_omaggio())
val_riga = rdoc.imponibile_omaggio(); val_riga = rdoc.imponibile_omaggio(2); // Considera il valore indipendentemente dall'addebito IVA
else else
val_riga = rdoc.imponibile(); val_riga = rdoc.imponibile();
} }