Corretta tabella elaborazioni differite

git-svn-id: svn://10.65.10.50/trunk@2994 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1996-06-14 15:48:34 +00:00
parent 24acb6e796
commit 08991b9696
7 changed files with 102 additions and 183 deletions

View File

@ -1,8 +1,8 @@
// campi della tabella di gestione delle elaborazioni differite // campi della tabella di gestione delle elaborazioni differite
#define F_CODICE 101 #define F_CODICE 101
#define F_DESCR 102 #define F_DESCR 102
#define F_CODNUM 103 #define F_TIPO 103
#define F_PROGRAMMA 104 #define F_CODNUM 104
#define F_TIPODOC_I_1 111 #define F_TIPODOC_I_1 111
#define F_STATO_I_DOC_I_1 121 #define F_STATO_I_DOC_I_1 121
#define F_STATO_F_DOC_I 131 #define F_STATO_F_DOC_I 131

View File

@ -6,7 +6,7 @@ ENDPAGE
PAGE "Tabella elaborazioni differite" -1 -1 0 0 PAGE "Tabella elaborazioni differite" -1 -1 0 0
GROUPBOX DLG_NULL 78 4 GROUPBOX DLG_NULL 78 5
BEGIN BEGIN
PROMPT 1 1 "@bElaborazione" PROMPT 1 1 "@bElaborazione"
END END
@ -43,14 +43,24 @@ BEGIN
KEY 2 KEY 2
END END
LIST F_TIPO 50
BEGIN
PROMPT 2 4 "Tipo "
ITEM " |Altro"
ITEM "CO|Consegna Ordini"
ITEM "FB|Fatturazione bolle"
ITEM "SM|Scarico magazzino"
ITEM "TC|Trasferimento a contabilita'"
END
GROUPBOX DLG_NULL 78 5 GROUPBOX DLG_NULL 78 5
BEGIN BEGIN
PROMPT 1 5 "@bDocumento originale" PROMPT 1 6 "@bDocumento originale"
END END
STRING F_TIPODOC_I_1 4 STRING F_TIPODOC_I_1 4
BEGIN BEGIN
PROMPT 2 6 "Tipo documento " PROMPT 2 7 "Tipo documento "
FIELD S2[1,4] FIELD S2[1,4]
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
WARNING "E' necessario specificare un valore" WARNING "E' necessario specificare un valore"
@ -63,7 +73,7 @@ END
STRING F_STATO_I_DOC_I_1 1 STRING F_STATO_I_DOC_I_1 1
BEGIN BEGIN
PROMPT 2 7 "Stato iniziale " PROMPT 2 8 "Stato iniziale "
FLAGS "U" FLAGS "U"
FIELD S7[1,1] FIELD S7[1,1]
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
@ -72,7 +82,7 @@ END
STRING F_STATO_F_DOC_I 1 STRING F_STATO_F_DOC_I 1
BEGIN BEGIN
PROMPT 2 8 "Stato finale " PROMPT 2 9 "Stato finale "
FLAGS "U" FLAGS "U"
FIELD S4 FIELD S4
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
@ -81,7 +91,7 @@ END
STRING F_TIPODOC_I_2 4 STRING F_TIPODOC_I_2 4
BEGIN BEGIN
PROMPT 30 6 "" PROMPT 30 7 ""
FIELD S2[5,8] FIELD S2[5,8]
WARNING "E' necessario specificare un valore" WARNING "E' necessario specificare un valore"
COPY USE F_TIPODOC_I_1 COPY USE F_TIPODOC_I_1
@ -93,7 +103,7 @@ END
STRING F_STATO_I_DOC_I_2 1 STRING F_STATO_I_DOC_I_2 1
BEGIN BEGIN
PROMPT 30 7 "" PROMPT 30 8 ""
FLAGS "U" FLAGS "U"
FIELD S7[2,2] FIELD S7[2,2]
WARNING "E' necessario specificare un valore" WARNING "E' necessario specificare un valore"
@ -102,7 +112,7 @@ END
STRING F_TIPODOC_I_3 4 STRING F_TIPODOC_I_3 4
BEGIN BEGIN
PROMPT 39 6 "" PROMPT 39 7 ""
FIELD S2[9,12] FIELD S2[9,12]
WARNING "E' necessario specificare un valore" WARNING "E' necessario specificare un valore"
COPY USE F_TIPODOC_I_1 COPY USE F_TIPODOC_I_1
@ -114,7 +124,7 @@ END
STRING F_STATO_I_DOC_I_3 1 STRING F_STATO_I_DOC_I_3 1
BEGIN BEGIN
PROMPT 39 7 "" PROMPT 39 8 ""
FLAGS "U" FLAGS "U"
FIELD S7[3,3] FIELD S7[3,3]
WARNING "E' necessario specificare un valore" WARNING "E' necessario specificare un valore"
@ -123,7 +133,7 @@ END
STRING F_TIPODOC_I_4 4 STRING F_TIPODOC_I_4 4
BEGIN BEGIN
PROMPT 48 6 "" PROMPT 48 7 ""
FIELD S2[13,15] FIELD S2[13,15]
WARNING "E' necessario specificare un valore" WARNING "E' necessario specificare un valore"
COPY USE F_TIPODOC_I_1 COPY USE F_TIPODOC_I_1
@ -135,7 +145,7 @@ END
STRING F_STATO_I_DOC_I_4 1 STRING F_STATO_I_DOC_I_4 1
BEGIN BEGIN
PROMPT 48 7 "" PROMPT 48 8 ""
FLAGS "U" FLAGS "U"
FIELD S7[4,4] FIELD S7[4,4]
WARNING "E' necessario specificare un valore" WARNING "E' necessario specificare un valore"
@ -144,7 +154,7 @@ END
STRING F_TIPODOC_I_5 4 STRING F_TIPODOC_I_5 4
BEGIN BEGIN
PROMPT 57 6 "" PROMPT 57 7 ""
FIELD S2[16,19] FIELD S2[16,19]
WARNING "E' necessario specificare un valore" WARNING "E' necessario specificare un valore"
COPY USE F_TIPODOC_I_1 COPY USE F_TIPODOC_I_1
@ -156,7 +166,7 @@ END
STRING F_STATO_I_DOC_I_5 1 STRING F_STATO_I_DOC_I_5 1
BEGIN BEGIN
PROMPT 57 7 "" PROMPT 57 8 ""
FLAGS "U" FLAGS "U"
FIELD S7[5,5] FIELD S7[5,5]
WARNING "E' necessario specificare un valore" WARNING "E' necessario specificare un valore"
@ -165,12 +175,12 @@ END
GROUPBOX DLG_NULL 78 5 GROUPBOX DLG_NULL 78 5
BEGIN BEGIN
PROMPT 1 10 "@bDocumento finale" PROMPT 1 11 "@bDocumento finale"
END END
STRING F_TIPODOC_F 4 STRING F_TIPODOC_F 4
BEGIN BEGIN
PROMPT 2 11 "Tipo documento " PROMPT 2 12 "Tipo documento "
FIELD S8 FIELD S8
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
WARNING "E' necessario specificare un valore" WARNING "E' necessario specificare un valore"
@ -182,7 +192,7 @@ END
STRING F_STATO_F_DOC_F 1 STRING F_STATO_F_DOC_F 1
BEGIN BEGIN
PROMPT 2 12 "Stato finale " PROMPT 2 13 "Stato finale "
FLAGS "U" FLAGS "U"
FIELD S9 FIELD S9
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
@ -191,7 +201,7 @@ END
STRING F_CODNUM 4 STRING F_CODNUM 4
BEGIN BEGIN
PROMPT 2 13 "Codice numerazione " PROMPT 2 14 "Codice numerazione "
FIELD S5 FIELD S5
USE NUM USE NUM
INPUT CODTAB F_CODNUM INPUT CODTAB F_CODNUM
@ -202,14 +212,6 @@ BEGIN
WARNING "E' necessario specificare un codice di numerazione" WARNING "E' necessario specificare un codice di numerazione"
END END
STRING F_PROGRAMMA 50
BEGIN
PROMPT 2 15 "Metodo di elaborazione "
FLAGS "G"
FIELD S1
CHECKTYPE REQUIRED
END
ENDPAGE ENDPAGE
ENDMASK ENDMASK

View File

@ -1,7 +1,8 @@
#include <checks.h>
#include <stdlib.h> #include <stdlib.h>
#include <xvt.h> #include <xvt.h>
#include <checks.h>
#include "ve6.h" // dichiarazioni delle procedure #include "ve6.h" // dichiarazioni delle procedure
#define usage "Errore - Utilizzo: %s -1 -2 -3" #define usage "Errore - Utilizzo: %s -1 -2 -3"

View File

@ -1,58 +1,7 @@
// ve6100.cpp: modulo per la gestione della tabella elaborazioni differite. // ve6100.cpp: ex-modulo per la gestione della tabella elaborazioni differite.
#include <tabapp.h>
#include "batbeld.h"
class TGestione_ELD : public Tab_application
{
protected: // TRelation_application
virtual bool user_create() ;
virtual bool protected_record(TRectype& rec) ;
virtual void init_insert_mode(TMask& m) ;
virtual void init_modify_mode(TMask& m);
virtual int rewrite(const TMask& m);
virtual void init_query_mode (TMask& m);
public:
TGestione_ELD() {}
virtual ~TGestione_ELD() {}
};
inline bool TGestione_ELD::user_create()
{ return Tab_application::user_create(); }
inline bool TGestione_ELD::protected_record(TRectype& rec)
{ return Tab_application::protected_record(rec); }
inline void TGestione_ELD::init_insert_mode(TMask& m)
{
Tab_application::init_insert_mode(m);
m.disable (F_AVVIA); // disabilita il button quando il record non e' ancora stato registrato
return;
}
inline int TGestione_ELD::rewrite(const TMask& m)
{ return Tab_application::rewrite (m); }
void TGestione_ELD::init_modify_mode(TMask& m)
{
Tab_application::init_modify_mode(m);
m.enable (F_AVVIA); // abilita la pressione del tasto solo quando il record e' stato registrato
TString temp = m.get(F_CODICE);
if (temp == "01")
m.enable(F_PROGRAMMA, FALSE);
}
void TGestione_ELD::init_query_mode (TMask& m)
{
Tab_application::init_query_mode(m);
m.enable (F_AVVIA, FALSE); // disabilita il button anche in modalita' ricerca
return;
}
int ve6100 (int argc, char **argv) int ve6100 (int argc, char **argv)
{ {
TGestione_ELD a; return 1;
a.run (argc, argv, "Gestione elaborazioni differite");
return TRUE;
} }

View File

@ -1,23 +1,13 @@
// ve6200.cpp: modulo per la generazione dei documenti in modo BATCH. // ve6200.cpp: modulo per la generazione dei documenti in modo BATCH.
#include <checks.h>
#include <config.h> #include <config.h>
#include <applicat.h>
#include <mask.h> #include <mask.h>
#include <maskfld.h>
#include <urldefid.h> #include <urldefid.h>
#include <utility.h> #include <utility.h>
#include <validate.h>
#include <progind.h>
#include <extcdecl.h>
#include <execp.h>
#include <lffiles.h>
#include <rectypes.h>
#include <isam.h>
#include <tabutil.h>
#include <date.h>
#include <checks.h>
#include <relation.h> #include <relation.h>
#include <sheet.h> #include <tabutil.h>
#include "ve6000.h" #include "ve6000.h"
#include "ve6retv.h" // valori di ritorno dalle varie funzioni #include "ve6retv.h" // valori di ritorno dalle varie funzioni
#include "ve6gen.h" // dichiarazione della classe base #include "ve6gen.h" // dichiarazione della classe base
@ -40,41 +30,33 @@
// funzione quasi uguale a quella del TSheet // funzione quasi uguale a quella del TSheet
void TInterattivo_sheet::page_build(long first, byte rows) void TInterattivo_sheet::get_row(long first, TToken_string& l)
{ {
TToken_string l(256);
*cursor() = (TRecnotype)first; *cursor() = (TRecnotype)first;
for (int r = 0; r < rows; r++, ++(*cursor()))
const int last = fields_array().last();
for (int i = 0; i <= last; i++)
{ {
l.cut(0); const TRecfield* rf = (TRecfield*)fields_array().objptr(i);
const int last = fields().last(); const char* s = rf ? (const char*)*rf : "";
for (int i = 0; i <= last; i++) l.add(s);
{
const TRecfield* rf = (TRecfield*)fields().objptr(i);
const char* s = rf ? (const char*)*rf : "";
l.add(s);
}
// cambiamenti dalla routine TSheet::page_build :
// stabilisce per default che la quantità da evadere è quella non ancora evasa
const long qta = l.get_long(TOKEN_QTA);
const long qtaevasa = l.get_long(TOKEN_QTAEVASA);
// char buffer[16];
// _ltoa(qta-qtaevasa,buffer,10);
// TString daevadere(buffer);
real n(qta-qtaevasa);
l.add((const char *)n.string(11,3),TOKEN_QTA_DA_EVADERE);
set_row(l, r);
} }
// stabilisce per default che la quantità da evadere è quella non ancora evasa
const long qta = l.get_long(TOKEN_QTA);
const long qtaevasa = l.get_long(TOKEN_QTAEVASA);
const real qtadaevadere = qta - qtaevasa;
l.add(qtadaevadere.string(11,3), TOKEN_QTA_DA_EVADERE);
} }
// quando l'utente fa doppio click o preme selezione, la on_key riceve un K_ENTER // quando l'utente fa doppio click o preme selezione, la on_key riceve un K_ENTER
// e qui apro una mascherina in cui chiedo la qta da evadere, CONFERMA o ANNULLA // e qui apro una mascherina in cui chiedo la qta da evadere, CONFERMA o ANNULLA
bool TInterattivo_sheet::on_key (KEY k) bool TInterattivo_sheet::on_key (KEY k)
{ {
/*
// K_ENTER e' E_MOUSE_DBL, mentre K_SPACE e' E_MOUSE_DOWN // K_ENTER e' E_MOUSE_DBL, mentre K_SPACE e' E_MOUSE_DOWN
if (k==K_ENTER) if (k==K_ENTER)
{ {
// maschera per l'inserimento del valore // maschera per l'inserimento del valore
TMask m("Modifica", 1, 33, 7); TMask m("Modifica", 1, 33, 7);
m.add_number (CAMPO_DAEVADERE, 0, "Quantità da evadere", 1, 3, 11); m.add_number (CAMPO_DAEVADERE, 0, "Quantità da evadere", 1, 3, 11);
@ -103,6 +85,7 @@ bool TInterattivo_sheet::on_key (KEY k)
} }
return FALSE; return FALSE;
} }
*/
return TCursor_sheet::on_key(k); return TCursor_sheet::on_key(k);
} }
@ -223,9 +206,6 @@ int TBatch_crea_doc::run_mask(TRectype& first, TRectype& last)
_msk->show (F_CODICE_AGENTE_A, FALSE); _msk->show (F_CODICE_AGENTE_A, FALSE);
} }
// nasconde il codice elaborazione: ?
_msk->show (F_CODICE_ELAB, FALSE);
if (_msk->run() == K_ESC) // runna la maschera: se premuto esc, esci if (_msk->run() == K_ESC) // runna la maschera: se premuto esc, esci
{ {
delete _msk; delete _msk;
@ -235,9 +215,8 @@ int TBatch_crea_doc::run_mask(TRectype& first, TRectype& last)
_ordinamento = _msk->get_int (F_ORDINAMENTO_EMISSIONE); // ordinamento (RadioButton) _ordinamento = _msk->get_int (F_ORDINAMENTO_EMISSIONE); // ordinamento (RadioButton)
_raggruppa = _msk->get_bool (F_RAGGRUPPA); // raggruppa più doc. originali ? _raggruppa = _msk->get_bool (F_RAGGRUPPA); // raggruppa più doc. originali ?
_per_articolo = _msk->get_bool (F_RAGGR_ARTICOLI); // raggruppa linee con lo stesso articolo _per_articolo = _msk->get_bool (F_RAGGR_ARTICOLI); // raggruppa linee con lo stesso articolo
TDate d((const char*) _msk->get(F_DATA_ELAB)); // Data documenti finali _datadoc = _msk->get(F_DATA_ELAB); // Data documenti finali
_datadoc = d; _anno = _datadoc.year(); // anno è una componente della chiave
_anno = d.year(); // anno è una componente della chiave
TString temps; // temporanea per rilevare i valori dei campi della maschera TString temps; // temporanea per rilevare i valori dei campi della maschera
TLocalisamfile f(LF_DOC); TLocalisamfile f(LF_DOC);
@ -1030,8 +1009,9 @@ void TBatch_crea_doc::raggruppa_righe (TRecord_array& doc)
processed.set(i); // la riga trovata e' processata (e' la riga pilota) processed.set(i); // la riga trovata e' processata (e' la riga pilota)
int prox; // numero della prossima riga da raggruppare int prox; // numero della prossima riga da raggruppare
while (prox_riga (prox, doc, processed, confronto)) while (prox_riga (prox, doc, processed, confronto))
{ {
pilota.put("QTA", pilota.get_real("QTA") + doc.row(prox).get_real("QTA")); // aggiorna il contenuto della riga pilota const real qta = pilota.get_real("QTA") + doc.row(prox).get_real("QTA");
pilota.put("QTA", qta); // aggiorna il contenuto della riga pilota
doc.row(current, FALSE) = pilota; doc.row(current, FALSE) = pilota;
processed.set(prox); // indica che la riga e' stata processata processed.set(prox); // indica che la riga e' stata processata
tocopy.reset(prox); // indica che la riga non e' da copiare, perche' inglobata nella riga pilota tocopy.reset(prox); // indica che la riga non e' da copiare, perche' inglobata nella riga pilota

View File

@ -1,18 +1,13 @@
// ve6300.cpp. Composizione interattiva dei documenti. // ve6300.cpp. Composizione interattiva dei documenti.
#include <sheet.h> #include <config.h>
#include <application.h> #include <application.h>
#include <stdtypes.h>
#include <mask.h> #include <mask.h>
#include <relation.h> #include <relation.h>
#include <strings.h>
#include <isam.h>
#include <real.h>
#include <maskfld.h>
#include <urldefid.h> #include <urldefid.h>
#include <config.h>
#include <utility.h> #include <utility.h>
#include <tabutil.h> #include <tabutil.h>
#include "ve6retv.h" #include "ve6retv.h"
#include "ve6300.h" #include "ve6300.h"
#include "ve6gen.h" #include "ve6gen.h"
@ -40,25 +35,27 @@ inline TInterattivo_crea_doc& app() { return (TInterattivo_crea_doc&) main_app()
bool TInterattivo_crea_doc::create() bool TInterattivo_crea_doc::create()
{ {
_interattivo = TRUE; _interattivo = TRUE;
// _stesso_anno_fiscale = FALSE;
int cargc = argc(); const int cargc = argc();
const char **vargv = argv(); const char **vargv = argv();
if (cargc>=2) if (cargc >= 2)
{ {
if (cargc<5) fatal_box ("Numero di parametri insufficiente: chiave incompleta!"); if (cargc < 5)
if (cargc>=5) return error_box ("Numero di parametri insufficiente: chiave incompleta!");
{
if (cargc >= 5)
{
_codnum = vargv[2]; _codnum = vargv[2];
_anno = vargv[3]; _anno = vargv[3];
_provv = vargv[4]; _provv = vargv[4];
_ndoc = vargv[5]; _ndoc = vargv[5];
} _crea_doc = (cargc == 7);
if (cargc==7) _crea_doc = TRUE; }
else _crea_doc = FALSE;
if (cargc>7) message_box ("Sono presenti piu' di 6 argomenti sulla linea di comando: possibile errore"); if (cargc > 7)
} message_box ("Sono presenti piu' di 6 argomenti sulla linea di comando: possibile errore");
}
dispatch_e_menu(BAR_ITEM(1)); dispatch_e_menu(BAR_ITEM(1));
return TRUE; return TRUE;
@ -72,7 +69,8 @@ bool TInterattivo_crea_doc::destroy()
bool TInterattivo_crea_doc::menu(MENU_TAG) bool TInterattivo_crea_doc::menu(MENU_TAG)
{ {
// if (errore_fatale (set_vars())) return FALSE; // if (errore_fatale (set_vars())) return FALSE;
if (errore_fatale (componi_doc_finale())) return FALSE; if (errore_fatale (componi_doc_finale()))
return FALSE;
return TRUE; return TRUE;
} }
@ -114,29 +112,29 @@ bool TInterattivo_crea_doc::tipo_doc_handler (TMask_field& field, KEY key)
{ {
if (field.to_check(key)) if (field.to_check(key))
{ {
TFixed_string tdd(field.get(),4); // tipo del documento destinazione selezionato TFixed_string tdd(field.get(),4); // tipo del documento destinazione selezionato
tdd.trim(); tdd.trim();
TTable t("%TIP"); TTable t("%TIP");
t.zero(); t.zero();
t.put ("CODTAB", tdd); // cerca tipo del documento destinazione t.put ("CODTAB", tdd); // cerca tipo del documento destinazione
t.read (_isgteq); t.read (_isgteq);
/* if (err = t.read (_isgteq)) // si posiziona sul record relativo al documento del tipo specificato /* if (err = t.read (_isgteq)) // si posiziona sul record relativo al documento del tipo specificato
{ {
error_box ("TElaborazioni::run_mask() : errore di lettura %d da tab(TIP)", err); error_box ("TElaborazioni::run_mask() : errore di lettura %d da tab(TIP)", err);
return READ_ERROR; return READ_ERROR;
} }
*/ */
if (t.get ("CODTAB") != tdd) // verifica che il tipo di documento trovato sia quello richiesto if (t.get ("CODTAB") != tdd) // verifica che il tipo di documento trovato sia quello richiesto
{ {
error_box ("TElaborazioni::run_mask() : non esiste il tipo documento %s in tab(TIP)", (const char *)tdd); error_box ("TElaborazioni::run_mask() : non esiste il tipo documento %s in tab(TIP)", (const char *)tdd);
return DOC_TYPE_NOT_FOUND; return DOC_TYPE_NOT_FOUND;
} }
TFilename profilo(t.get ("S4")); // nome del profilo documento (nome del .ini associato al tipo documento originale) TFilename profilo(t.get ("S4")); // nome del profilo documento (nome del .ini associato al tipo documento originale)
profilo.ext("ini"); profilo.ext("ini");
TConfig profilo_doc(profilo); // file di configurazione (ini) del documento TConfig profilo_doc(profilo); // file di configurazione (ini) del documento
TString tipocf = (profilo_doc.get("TIPOCF", "MAIN")); TString tipocf = (profilo_doc.get("TIPOCF", "MAIN"));
tipocf.cut(1); tipocf.cut(1);
field.mask().set(F_TIPOCF, tipocf); field.mask().set(F_TIPOCF, tipocf);
} }
} }
@ -293,7 +291,7 @@ int TInterattivo_crea_doc::componi_doc_finale()
if (primo_pilota) if (primo_pilota)
{ {
primo_pilota = FALSE; primo_pilota = FALSE;
f = tempr; f.curr() = tempr;
f.put ("CODNUM", _codnum); f.put ("CODNUM", _codnum);
f.put ("ANNO", _anno); f.put ("ANNO", _anno);
f.put ("PROVV", _provv); f.put ("PROVV", _provv);

View File

@ -3,27 +3,14 @@
#ifndef _TELABORAZIONI_DECL #ifndef _TELABORAZIONI_DECL
#define _TELABORAZIONI_DECL #define _TELABORAZIONI_DECL
#include <sheet.h> #include <applicat.h>
#include <application.h>
#include <stdtypes.h>
#include <mask.h>
#include <relation.h> #include <relation.h>
#include <strings.h> #include <sheet.h>
#include <isam.h>
#include <real.h>
#include <maskfld.h>
#include <urldefid.h>
#include <config.h>
#include <utility.h>
#include "ve6retv.h" #include "ve6retv.h"
#include "ve6300.h" #include "ve6300.h"
#include "ve6gen.h" #include "ve6gen.h"
#include <applicat.h>
//#include <strings.h>
#include "ve6.h"
#include <array.h>
#define _TDD_IN_FILTER #define _TDD_IN_FILTER
#define STATO_PPT '*' #define STATO_PPT '*'
@ -67,12 +54,14 @@ class TInterattivo_sheet : public TCursor_sheet
{ {
protected: protected:
virtual bool on_key(KEY); virtual bool on_key(KEY);
// modificata per fare apparire anche le qta' da evadere
virtual void get_row(long n, TToken_string& l);
public: public:
virtual void page_build(long first, byte rows); // modificata per fare apparire anche le qta' da evadere
TInterattivo_sheet(TCursor* cursor, const char* fields, const char* title, const char* head, byte buttons = 0) TInterattivo_sheet(TCursor* cursor, const char* fields, const char* title, const char* head, byte buttons = 0)
: TCursor_sheet(cursor, fields, title, head, buttons) : TCursor_sheet(cursor, fields, title, head, buttons) { }
{}; virtual ~TInterattivo_sheet() { }
virtual ~TInterattivo_sheet() {};
}; };
class TBatch_crea_doc : public TElaborazioni class TBatch_crea_doc : public TElaborazioni