Patch level :10.0

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
modifiche necessarie per la gestione degli importi nei report


git-svn-id: svn://10.65.10.50/trunk@20335 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2010-04-15 08:25:48 +00:00
parent 003dba2a72
commit c6e7c5df0b
5 changed files with 86 additions and 27 deletions

View File

@ -5,6 +5,7 @@
#include <dongle.h>
#include <prefix.h>
#include <recarray.h>
#include <toolfld.h>
#include <urldefid.h>
#include <utility.h>
#include <xvtility.h>
@ -174,7 +175,7 @@ void TAVM_list_window::update()
TString str;
int tab = 6;
const int last = min(_bc->items(), rows());
const int last = min(_bc->items(), origin().y + rows());
for (int i = 0; i < last; i++)
{
const int y = i+1;
@ -338,17 +339,6 @@ public:
bool TAVM_monitor::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
switch (o.dlg())
{
case 104:
if (e == fe_init)
o.set(ignore_mon() ? "X" : "");
if (e == fe_modify)
set_ignore_mon(!o.get().blank());
break;
default:
break;
}
return true;
}
@ -356,6 +346,8 @@ bool TAVM_monitor::on_key(KEY k)
{
switch (k)
{
case K_F9:
set_ignore_mon(true);
case K_F10:
case K_F11:
stop_run(k);
@ -365,27 +357,29 @@ bool TAVM_monitor::on_key(KEY k)
return TAutomask::on_key(k);
}
TAVM_monitor::TAVM_monitor() : TAutomask("Monitor", 1, 50, 20), _ignore_mon(false)
TAVM_monitor::TAVM_monitor() : TAutomask("Monitor", 1, 64, -1, -1, 1), _ignore_mon(false)
{
//toolbar modernissima
add_button_tool(DLG_NEXTREC, "Step F11", TOOL_NEXTREC).set_exit_key(K_F11);
add_button_tool(DLG_LASTREC, "Skip F10", TOOL_NEXTREC).set_exit_key(K_F10);
add_button_tool(DLG_ELABORA, "Run F5", TOOL_LASTREC).set_exit_key(K_F5);
add_button_tool(DLG_CANCEL, "NoMon F9", TOOL_CANCEL).set_exit_key(K_F9);
add_button_tool(DLG_QUIT, "End", TOOL_QUIT).set_exit_key(K_QUIT);
//campi vari
//finestra con codice
TWindowed_field* wf = new TAVM_list_field(this);
wf->create(101, 0, 0, 24, -4); add_field(wf);
wf->create(101, 0, 0, 31, -3, page_win(0)); add_field(wf);
_lw = (TAVM_list_window*)&wf->win();
//finestra stack
TWindowed_field* sf = new TAVM_stack_field(this);
sf->create(102, 27, 0, -3, 9); add_field(sf);
sf->create(102, 34, 0, -3, 12, page_win(0)); add_field(sf);
_sw = (TAVM_stack_window*)&sf->win();
//finestra di return stack
TWindowed_field* rf = new TAVM_stack_field(this);
rf->create(103, 27, 10, -3, -4); add_field(rf);
rf->create(103, 34, 13, -2, -1, page_win(0)); add_field(rf);
_rw = (TAVM_stack_window*)&rf->win();
add_boolean(104, 0, TR("Ignora MON d'ora in poi"), 1, -3);
add_button(DLG_NEXTREC, 0, "", -14, -1, 10, 2, "", BMP_NEXTREC).set_exit_key(K_F11);
add_button(DLG_LASTREC, 0, "", -24, -1, 10, 2, "", BMP_DARROWR2).set_exit_key(K_F10);
add_button(DLG_ELABORA, 0, "", -34, -1, 10, 2, "", BMP_LASTREC).set_exit_key(K_F5);
add_button(DLG_QUIT, 0, "", -44, -1, 10, 2).set_exit_key(K_QUIT);
set_handlers();
}

View File

@ -83,7 +83,8 @@
#define DOC_TIPOCFFATT "TIPOCFFATT"
#define DOC_CODCFFATT "CODCFFATT"
#define DOC_LIQDIFF "LIQDIFF"
#define DOC_DATACOMP "DATACOMP"
#define DOC_DATAFCOMP "DATAFCOMP"
// Virtuali

View File

@ -4133,7 +4133,7 @@ const char* TDate_field::win2raw(
y = oggi.year();
}
if (y < 100)
y += (y <= 10) ? 2000 : 1900;
y += (y <= 20) ? 2000 : 1900;
s.format("%02d-%02d-%4d", int(d), m, y);
}
}

View File

@ -476,6 +476,8 @@ protected:
// @cmember Permette la comparazione degli importi (0 se uguali in valore
// ed importo)
virtual int compare(const TSortable& s) const;
// @cmember Duplicatore importi
virtual TObject* dup() const { return new TImporto(_sezione, _valore); }
// @access Public Member
public:

View File

@ -80,6 +80,68 @@
SP
;
: REP_ADD_IMPORTO ( dst_sezione_fld dst_valore_fld src_sezione src_valore -- )
DUP \ dup src_valore
EMPTY= IF \ se l'importo sorgente è nullo butta tutto e finisce qui
DROP
DROP
DROP
DROP
ELSE
3 PICK >R \ prende dst_sezione_fld
2 PICK >R \ prende dst_valore_fld
>R \ store di src_valore
>R \ store di src_sezione
SWAP \ porta in cima allo stack la dst_sezione_fld
DUP \ la duplica perchè la perde la riga dopo
@ \ prende il valore di dst_sezione_fld
EMPTY= IF \ se la dst_sezione_fld è vuota
R> \ recupera la src_sezione
SWAP \ gira i due termini
! \ assegna il contenuto della src_sezione al campo dst_sezione_fld
R> \ prende src_valore
SWAP \ gira i campi src_valore e dst_valore_fld
! \ assegna src_valore al campo dst_valore_fld
ELSE
@
R> \ legge src_sezione
= IF
R> \ prende src_valore
ELSE
R> \ prende src_valore
-1 * \ inverte il segno di src_valore
THEN
SWAP \ gira i campi sullo stack src_valore dst_valore_fld
+! \ somma src_valore con segno rovesciato al campo dst_valore_fld
THEN
\ normalizzazione della destinazione
MON
R@ \ recupera dst_valore_fld
@ \ legge il valore di dst_valore_fld
DUP \ lo duplica per possibile cambio di segno
0 < IF \ se il valore è negativo
-1 * \ gli cambia segno
R> \ recupera ancora dst_valore_fld
! \ salva il valore positivo nel campo dst_valore_fld
R@ \ recupera dst_sezione_fld
@ \ legge il valore di dst_sezione_fld
"A" = IF \ lo inverte
"D"
ELSE
"A"
THEN
R> \ recupera ancora dst_sezione_fld
! \ salva il valore cambiato della sezione in dst_sezione_fld
ELSE
DROP \ se non deve invertire nulla svuota gli stack
R>
R>
THEN
THEN
;
\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
\ Implementazione dei vari messaggi standard
\ f1 campo o sezione del report