Patch level : 10.0

Files correlati     : ci2
Ricompilazione Demo : [ ]
Commento            :
Aggiunto il programma di rilevamento ore consuntivo (da creare il nuovo progetto)


git-svn-id: svn://10.65.10.50/branches/R_10_00@20699 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca83 2010-07-24 09:20:04 +00:00
parent ee4b6efbe3
commit eb0ab4741d
5 changed files with 1073 additions and 0 deletions

View File

@ -7,6 +7,7 @@ int main(int argc, char** argv)
switch (op)
{
case 0 : ci2100(argc,argv); break; // Rilevamento preventivi
case 1 : ci2200(argc,argv); break; // Rilevamento consuntivo
default: ci2100(argc,argv); break; // Rilevamento preventivi
}
return 0;

View File

@ -2,5 +2,6 @@
#define __CI0_H
int ci2100(int argc, char* argv[]); // Rilevamento preventivi
int ci2200(int argc, char* argv[]); // Rilevamento consuntivi
#endif // __CI0_H

518
ci/ci2200.cpp Executable file
View File

@ -0,0 +1,518 @@
#include <applicat.h>
#include <automask.h>
#include <defmask.h>
#include <recset.h>
#include <sheet.h>
#include <utility.h>
#include <doc.h>
#include "ci2.h"
#include "cilib.h"
#include "ci2200a.h"
#include "../ve/velib.h"
////////////////////////////////////////////
//// CLASSE TRilevamento_cons_msk ////
////////////////////////////////////////////
//Classe TRilevamento_cons_msk
class TRilevamento_cons_msk : public TAutomask
{
int _qtaore;
protected:
const real proponi_costo(const TMask& msk);
const real proponi_costo(TToken_string& riga);
void carica_default();
void riempi_sheet();
void nuova_riga();
void azzera_riga(TSheet_field& sheet);
void azzera_tutto(TSheet_field& sheet);
void registra();
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
public:
void esegui() const;
TRilevamento_cons_msk();
};
const real TRilevamento_cons_msk::proponi_costo(const TMask& msk)
{
real costo = ZERO;
/*const char tipo = msk.get(S_RISOATT)[0];
TString80 codice;
switch(tipo)
{
case 'R': codice = msk.get(S_CODRIS); break;
case 'A': codice = msk.get(S_CODATT); break;
default : break;
}
const int anno = msk.get_date(S_DADATA).year();
TString4 mese; mese.format("%02d", msk.get_date(S_DADATA).month());
const TString4 tpora = msk.get(S_TPORA);
const TRisoatt_key chiave(tipo, codice, anno, mese, tpora);
TModule_table roa("&ROA");
roa.put("CODTAB", chiave);
int err = roa.read();
if(err == NOERR)
costo = roa.get_real("R1");
else
{
TString8 tmp; tmp << anno << mese;
const long anme = atol(tmp);
TString query;
query << "USE &ROA\n"
<< "SELECT I0<" << anme << "\n"
<< "FROM CODTAB=" << tipo << codice.left_just(16) << "\n"
<< "TO CODTAB=" << tipo << codice.left_just(16) << "\n"
<< "BY I0\n";
TISAM_recordset rec(query);
if(rec.move_last())
costo = rec.cursor()->curr().get_real("R1");
}*/
return costo;
}
const real TRilevamento_cons_msk::proponi_costo(TToken_string& riga)
{
real costo = ZERO;
/*TSheet_field& sheet = sfield(F_SHEET);
const char tipo = riga.get_char(sheet.cid2index(S_RISOATT));
TString80 codice;
switch(tipo)
{
case 'R': codice = riga.get(sheet.cid2index(S_CODRIS)); break;
case 'A': codice = riga.get(sheet.cid2index(S_CODATT)); break;
default : break;
}
TString cazzone = riga.get(sheet.cid2index(S_DADATA));
const TDate dadata(riga.get(sheet.cid2index(S_DADATA)));
const int anno = dadata.year();
TString4 mese; mese.format("%02d", dadata.month());
const TString4 tpora = riga.get(sheet.cid2index(S_TPORA));
const TRisoatt_key chiave(tipo, codice, anno, mese, tpora);
TModule_table roa("&ROA");
roa.put("CODTAB", chiave);
int err = roa.read();
if(err == NOERR)
costo = roa.get_real("R1");
else
{
TString8 tmp; tmp << anno << mese;
const long anme = atol(tmp);
TString query;
query << "USE &ROA\n"
<< "SELECT I0<" << anme << "\n"
<< "FROM CODTAB=" << tipo << codice.left_just(16) << "\n"
<< "TO CODTAB=" << tipo << codice.left_just(16) << "\n"
<< "BY I0\n";
TISAM_recordset rec(query);
if(rec.move_last())
costo = rec.cursor()->curr().get_real("R1");
}*/
return costo;
}
void TRilevamento_cons_msk::carica_default()
{
/*//leggo dalla maschera i campi chiave di ricerca
const int anno = get_date(F_DADATA).year();
const TString4 risoatt = get(F_RISOATT) == "T" ? "" : get(F_RISOATT);
TString4 damese; damese.format("%02d", get_date(F_DADATA).month());
TString4 amese; amese.format("%02d", get_date(F_ADATA).month());
const TString4 tpora = get(F_TPORA);
const TString80 codcosto = get(F_CODCOSTO);
const TString80 codcms = get(F_CODCMS);
const TString16 codfase = get(F_CODFASE);
TString16 codice;
switch(get(F_RISOATT)[0])
{
case 'T': codice = get(F_CODICE); break;
case 'R': codice = get(F_CODRIS); break;
case 'A': codice = get(F_CODATT); break;
default: break;
}
TString query;
query << "USE CIRILROA\n"
<< "SELECT (BETWEEN(TIPORA,\"" << risoatt << "\",\"" << risoatt << "\"))&&"
<< "(BETWEEN(CODICE,\"" << codice << "\",\"" << codice << "\"))&&"
<< "(BETWEEN(ANNO," << anno << "," << anno << "))&&"
<< "(BETWEEN(MESE,\"" << damese << "\",\"" << amese << "\"))&&"
<< "(BETWEEN(TPORA,\"" << tpora << "\",\"" << tpora << "\"))&&"
<< "(BETWEEN(CODCOSTO,\"" << codcosto << "\",\"" << codcosto << "\"))&&"
<< "(BETWEEN(CODCMS,\"" << codcms << "\",\"" << codcms << "\"))&&"
<< "(BETWEEN(CODFASE,\"" << codfase << "\",\"" << codfase << "\"))\n";
TString fromto = "TIPO=\"D\"";
if(risoatt != 'T')
{
fromto << " TIPORA=\"" << risoatt << "\"";
if(codice.full())
{
fromto << " CODICE=\"" << codice << "\"";
if(anno > 0)
{
fromto << " ANNO=\"" << anno << "\"";
if(damese.full())
{
fromto << " MESE=\"" << damese << "\"";
if(tpora.full())
fromto << " TPORA=\"" << tpora << "\"";
}
}
}
}
query << "FROM " << fromto << "\n"
<< "TO " << fromto;
TISAM_recordset def(query);
TSheet_field& sheet = sfield(F_SHEET);
sheet.destroy();
const TDate da(1, get_date(F_DADATA).month(), get_date(F_DADATA).year());
TDate a = da; a.set_day(a.last_day(da.month(), a.year()));
//riempio lo sheet con i dati che soddisfano il filtro preparato prima
for(bool ok = def.move_first(); ok; ok = def.move_next())
{
TRilevamento_ore rilore(def.cursor()->curr());
TToken_string& riga = sheet.row(-1);
riga.add(rilore.tipora(), sheet.cid2index(S_RISOATT));
switch(rilore.tipora())
{
case 'R': riga.add(rilore.codice(), sheet.cid2index(S_CODRIS)); break;
case 'A': riga.add(rilore.codice(), sheet.cid2index(S_CODATT)); break;
default : break;
}
riga.add(rilore.dadata(), sheet.cid2index(S_DADATA));
riga.add(rilore.adata(), sheet.cid2index(S_ADATA));
riga.add(rilore.tpora(), sheet.cid2index(S_TPORA));
riga.add(rilore.codcosto(), sheet.cid2index(S_CODCOSTO));
riga.add(rilore.codcms(), sheet.cid2index(S_CODCMS));
riga.add(rilore.codfase(), sheet.cid2index(S_CODFASE));
riga.add(da, sheet.cid2index(S_DADATA));
riga.add(a, sheet.cid2index(S_ADATA));
riga.add(rilore.qtaore(), sheet.cid2index(S_QTAORE));
riga.add(proponi_costo(riga).string(), sheet.cid2index(S_COSTO));
}
sheet.force_update();*/
}
//RIEMPI_SHEET: metodo che riempie lo sheet in base ai campi chiave
//compilati sulla maschera
void TRilevamento_cons_msk::riempi_sheet()
{
/*//leggo dalla maschera i campi chiave di ricerca
const int anno = get_date(F_DADATA).year();
const TString4 risoatt = get(F_RISOATT) == "T" ? "" : get(F_RISOATT);
TString4 damese; damese.format("%02d", get_date(F_DADATA).month());
TString4 amese; amese.format("%02d", get_date(F_ADATA).month());
const TString4 tpora = get(F_TPORA);
const TString80 codcosto = get(F_CODCOSTO);
const TString80 codcms = get(F_CODCMS);
const TString16 codfase = get(F_CODFASE);
TString16 codice;
switch(get(F_RISOATT)[0])
{
case 'T': codice = get(F_CODICE); break;
case 'R': codice = get(F_CODRIS); break;
case 'A': codice = get(F_CODATT); break;
default: break;
}
TString query;
query << "USE CIRILROA\n"
<< "SELECT (BETWEEN(TIPORA,\"" << risoatt << "\",\"" << risoatt << "\"))&&"
<< "(BETWEEN(CODICE,\"" << codice << "\",\"" << codice << "\"))&&"
<< "(BETWEEN(ANNO," << anno << "," << anno << "))&&"
<< "(BETWEEN(MESE,\"" << damese << "\",\"" << amese << "\"))&&"
<< "(BETWEEN(TPORA,\"" << tpora << "\",\"" << tpora << "\"))&&"
<< "(BETWEEN(CODCOSTO,\"" << codcosto << "\",\"" << codcosto << "\"))&&"
<< "(BETWEEN(CODCMS,\"" << codcms << "\",\"" << codcms << "\"))&&"
<< "(BETWEEN(CODFASE,\"" << codfase << "\",\"" << codfase << "\"))\n";
TString fromto = "TIPO=\"P\"";
if(risoatt != 'T')
{
fromto << " TIPORA=\"" << risoatt << "\"";
if(codice.full())
{
fromto << " CODICE=\"" << codice << "\"";
if(anno > 0)
{
fromto << " ANNO=\"" << anno << "\"";
if(damese.full())
{
fromto << " MESE=\"" << damese << "\"";
if(tpora.full())
fromto << " TPORA=\"" << tpora << "\"";
}
}
}
}
query << "FROM " << fromto << "\n"
<< "TO " << fromto;
TISAM_recordset def(query);
TSheet_field& sheet = sfield(F_SHEET);
sheet.destroy();
//riempio lo sheet con i dati che soddisfano il filtro preparato prima
for(bool ok = def.move_first(); ok; ok = def.move_next())
{
TRilevamento_ore rilore(def.cursor()->curr());
TToken_string& riga = sheet.row(-1);
riga.add(rilore.tipora(), sheet.cid2index(S_RISOATT));
switch(rilore.tipora())
{
case 'R': riga.add(rilore.codice(), sheet.cid2index(S_CODRIS)); break;
case 'A': riga.add(rilore.codice(), sheet.cid2index(S_CODATT)); break;
default : break;
}
riga.add(rilore.dadata(), sheet.cid2index(S_DADATA));
riga.add(rilore.adata(), sheet.cid2index(S_ADATA));
riga.add(rilore.tpora(), sheet.cid2index(S_TPORA));
riga.add(rilore.codcosto(), sheet.cid2index(S_CODCOSTO));
riga.add(rilore.codcms(), sheet.cid2index(S_CODCMS));
riga.add(rilore.codfase(), sheet.cid2index(S_CODFASE));
riga.add(rilore.dadata(), sheet.cid2index(S_DADATA));
riga.add(rilore.adata(), sheet.cid2index(S_ADATA));
riga.add(rilore.qtaore(), sheet.cid2index(S_QTAORE));
riga.add(rilore.costo().string(), sheet.cid2index(S_COSTO));
}
sheet.force_update();*/
}
//NUOVA_RIGA: metodo che aggiunge una riga allo sheet
//tenendo conto dei campi chiave compilati in testata
void TRilevamento_cons_msk::nuova_riga()
{
/*TSheet_field& sheet = sfield(F_SHEET);
sheet.row(-1);
sheet.select(sheet.items() - 1);
TMask& msk = sheet.sheet_mask();
//guardo il tipo risorsa / attrezzatura che sto ricercando
const char risoatt = get(F_RISOATT)[0] == 'T' ? 'R' : get(F_RISOATT)[0];
TString4 tmp; tmp << risoatt;
msk.set(S_RISOATT, tmp);
msk.enable(S_RISOATT, get(F_RISOATT)[0] == 'T');
//leggo il codice corretto a seconda del tipo selezionato
switch(get(F_RISOATT)[0])
{
case 'T':
msk.reset(S_CODRIS); msk.enable(S_CODRIS);
msk.reset(S_CODATT); msk.enable(S_CODATT);
break;
case 'R':
msk.set(S_CODRIS, get(F_CODRIS)); msk.enable(S_CODRIS);
break;
case 'A':
msk.set(S_CODATT, get(F_CODATT)); msk.enable(S_CODATT);
break;
default: break;
}
msk.enable(S_DADATA, get(F_DADATA).empty());
msk.set(S_DADATA, get(F_DADATA));
msk.enable(S_ADATA, get(F_ADATA).empty());
msk.set(S_ADATA, get(F_ADATA));
msk.enable(S_TPORA, get(F_TPORA).empty());
msk.set(S_TPORA, get(F_TPORA));
msk.enable(S_CODCOSTO, get(F_CODCOSTO).empty());
msk.enable(S_CODCMS, get(F_CODCMS).empty());
msk.enable(S_CODFASE, get(F_CODFASE).empty());
msk.set(S_QTAORE, 0L);
msk.set(S_COSTO, proponi_costo(msk));
//lancio la maschera di riga da compilare
if(msk.run() == K_ENTER)
{
const int qtaore = msk.get_int(S_QTAORE);
const real prezzo = msk.get_real(S_COSTO);
if(qtaore > 0)
{
const char tipo = msk.get(S_RISOATT)[0];
const TString& codice = tipo == 'R' ? msk.get(S_CODRIS) : msk.get(S_CODATT);
//const TString& mese = msk.get(S_MESE);
const TString& tpora = msk.get(S_TPORA);
const TString& codcosto = msk.get(S_CODCOSTO);
const TString& codcms = msk.get(S_CODCMS);
const TString& codfase = msk.get(S_CODFASE);
const TDate& dadata = msk.get_date(S_DADATA);
const TDate& adata = msk.get_date(S_ADATA);
TToken_string& riga = sheet.row(sheet.items() - 1);
riga.add(tipo, sheet.cid2index(S_RISOATT));
switch(tipo)
{
case 'R': riga.add(codice, sheet.cid2index(S_CODRIS)); break;
case 'A': riga.add(codice, sheet.cid2index(S_CODATT)); break;
default : break;
}
riga.add(dadata, sheet.cid2index(S_DADATA));
riga.add(adata, sheet.cid2index(S_ADATA));
riga.add(tpora, sheet.cid2index(S_TPORA));
riga.add(codcosto, sheet.cid2index(S_CODCOSTO));
riga.add(codcms, sheet.cid2index(S_CODCMS));
riga.add(codfase, sheet.cid2index(S_CODFASE));
riga.add(dadata, sheet.cid2index(S_DADATA));
riga.add(adata, sheet.cid2index(S_ADATA));
riga.add(qtaore, sheet.cid2index(S_QTAORE));
riga.add(prezzo.string(), sheet.cid2index(S_COSTO));
}
else
{
sheet.destroy(sheet.items() - 1);
sheet.force_update();
}
}
msk.enable_default();
sheet.check_row(sheet.items() - 1);
sheet.force_update();*/
}
//AZZERA_RIGA: metodo che azzera il valore unitario della riga selezionata
//(N.B.: le righe con valore unitario nullo verranno eliminate in fase di registrazione)
void TRilevamento_cons_msk::azzera_riga(TSheet_field& sheet)
{
/*const int nriga = sheet.selected();
TToken_string& row = sheet.row(nriga);
row.add(0, sheet.cid2index(S_QTAORE));
TMask& msk = sheet.sheet_mask();
_qtaore = msk.get_int(S_QTAORE);
msk.set(S_QTAORE, 0L);*/
}
//AZZERA_TUTTO: metodo che azzera il valore unitario di tutte le righe visualizzate sullo sheet
//(N.B.: le righe con valore unitario nullo verranno eliminate in fase di registrazione)
void TRilevamento_cons_msk::azzera_tutto(TSheet_field& sheet)
{
/*FOR_EACH_SHEET_ROW(sheet, r, row)
{
TToken_string& row = sheet.row(r);
row.add(0, sheet.cid2index(S_QTAORE));
}*/
}
//REGISTRA: metodo che salva nella tabella di modulo le
//righe dello sheet che hanno valore > 0, ed elimina quelle che hanno
//vaoler pari a zero, e poi ricarica lo sheet
void TRilevamento_cons_msk::registra()
{
/*TLocalisamfile file(LF_CIRILROA);
TSheet_field& sheet = sfield(F_SHEET);
FOR_EACH_SHEET_ROW(sheet, r, row)
{
TToken_string& riga = *(TToken_string*)row;
const char tipora = riga.get_char(sheet.cid2index(S_RISOATT));
const TString16 codice = tipora == 'R' ? riga.get(sheet.cid2index(S_CODRIS)) : riga.get(sheet.cid2index(S_CODATT));
const TDate& dadata = riga.get(sheet.cid2index(S_DADATA));
const TDate& adata = riga.get(sheet.cid2index(S_ADATA));
const TString4 tpora = riga.get(sheet.cid2index(S_TPORA));
const TString80 codcosto = riga.get(sheet.cid2index(S_CODCOSTO));
const TString80 codcms = riga.get(sheet.cid2index(S_CODCMS));
const TString80 codfase = riga.get(sheet.cid2index(S_CODFASE));
const int qtaore = riga.get_int(sheet.cid2index(S_QTAORE));
const TString& tmp = riga.get(sheet.cid2index(S_COSTO));
const real costo(tmp);
TString4 mese; mese.format("%02d", adata.month());
TRilevamento_ore rilroa('C', tipora, codice, adata.year(), mese, tpora);
if(!rilroa.empty() && qtaore == 0)
rilroa.remove(file);
else
{
TRilevamento_ore rilroa;
rilroa.set_tipo('C');
rilroa.set_tipora(tipora);
rilroa.set_codice(codice);
rilroa.set_anno(adata.year());
rilroa.set_mese(mese);
rilroa.set_tpora(tpora);
rilroa.set_codcosto(codcosto);
rilroa.set_codcms(codcms);
rilroa.set_codfase(codfase);
rilroa.set_dadata(dadata);
rilroa.set_adata(adata);
rilroa.set_qtaore(qtaore);
rilroa.set_costo(costo);
int err = rilroa.rewrite_write(file);
}
}
riempi_sheet();*/
}
//ON_FIELD_EVENT: metodo che gestisce gli eventi sui vari campi della maschera
bool TRilevamento_cons_msk::on_field_event(TOperable_field& f, TField_event e, long jolly)
{
switch (f.dlg())
{
default: break;
}
return true;
}
void TRilevamento_cons_msk::esegui() const
{
}
TRilevamento_cons_msk::TRilevamento_cons_msk()
: TAutomask("ci2200a")
{
_qtaore = 0;
}
////////////////////////////////////////////
//// CLASSE TRilevamento_cons_app ////
////////////////////////////////////////////
//classe TRilevamento_cons_app
class TRilevamento_cons_app : public TSkeleton_application
{
public:
virtual void main_loop();
};
void TRilevamento_cons_app::main_loop()
{
TRilevamento_cons_msk msk;
while (msk.run() != K_QUIT)
msk.esegui();
}
int ci2200(int argc, char *argv[])
{
TRilevamento_cons_app a;
a.run (argc, argv, TR("Rilevamento Ore Consuntivo"));
return TRUE;
}

64
ci/ci2200a.h Executable file
View File

@ -0,0 +1,64 @@
//Campi maschera ci0600a
#define F_ANNO 301
#define F_MESE 302
#define F_TPORA 303
#define F_RISOATT 304
#define F_CODICE 305
#define F_CODRIS 306
#define F_DESRIS 307
#define F_CODATT 308
#define F_DESATT 309
#define F_CODCOSTO 310
#define F_CODCMS 311
#define F_CODFASE 312
#define F_CALENDARIO 313
#define F_SHEET 314
#define DLG_RESET 900
#define DLG_CERCA 901
#define DLG_DEFAULT 902
#define C_CODCOSTO 101
#define C_CODCMS 102
#define C_CODFASE 103
#define C_1 104
#define C_2 105
#define C_3 106
#define C_4 107
#define C_5 108
#define C_6 109
#define C_7 110
#define C_8 111
#define C_9 112
#define C_10 113
#define C_11 114
#define C_12 115
#define C_13 116
#define C_14 117
#define C_15 118
#define C_16 119
#define C_17 120
#define C_18 121
#define C_19 122
#define C_20 123
#define C_21 124
#define C_22 125
#define C_23 126
#define C_24 127
#define C_25 128
#define C_26 129
#define C_27 130
#define C_28 131
#define C_29 132
#define C_30 133
#define C_31 134
#define S_RISOATT 205
#define S_CODRIS 206
#define S_DESRIS 899
#define S_CODATT 306
#define S_DESATT 999
#define S_TPORA 207
#define S_QTAORE 208
#define S_COSTO 209
#define S_OREDIS 210

489
ci/ci2200a.uml Executable file
View File

@ -0,0 +1,489 @@
#include "ci2200a.h"
TOOLBAR "topbar" 0 0 0 2
BUTTON DLG_DEFAULT
BEGIN
PROMPT 1 1 "Default"
PICTURE TOOL_SMILE
END
BUTTON DLG_CERCA
BEGIN
PROMPT 1 1 "Cerca"
PICTURE TOOL_FINDREC
END
BUTTON DLG_NEWREC 2 2
BEGIN
PROMPT 1 1 "Nuovo"
PICTURE TOOL_NEWREC
END
BUTTON DLG_SAVEREC 2 2
BEGIN
PROMPT 1 1 "Salva"
PICTURE TOOL_SAVEREC
END
BUTTON DLG_RESET 2 2
BEGIN
PROMPT 1 1 "Azzera"
PICTURE TOOL_RESET
END
#include <helpbar.h>
ENDPAGE
PAGE "Risorse e Attrezzature" 0 2 0 0
GROUPBOX DLG_NULL 78 7
BEGIN
PROMPT 1 0 "@bDati Risorsa - Attrezzatura"
END
NUMBER F_ANNO 4
BEGIN
PROMPT 2 1 "Anno "
FLAGS "A"
CHECKTYPE REQUIRED
END
LISTBOX F_MESE 10
BEGIN
PROMPT 23 1 "Mese"
ITEM "|"
FLAGS "M"
END
STRING F_TPORA 2
BEGIN
PROMPT 41 1 "Tipo ora "
USE &ORE
INPUT CODTAB F_TPORA
DISPLAY "Codice@16" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_TPORA CODTAB
END
RADIOBUTTON F_RISOATT 1 76
BEGIN
PROMPT 3 2 "@bTipo: "
ITEM "T|Tutti"
MESSAGE SHOW,1@|HIDE,2@|HIDE,3@
ITEM "R|Risorsa"
MESSAGE HIDE,1@|SHOW,2@|HIDE,3@
ITEM "A|Attrezzatura"
MESSAGE HIDE,1@|HIDE,2@|SHOW,3@
FLAGS "Z"
END
STRING F_CODICE 16
BEGIN
PROMPT 3 5 "Codice: "
USE CIRILROA
SELECT TIPO='D'
DISPLAY "Tipo@5" TIPORA
DISPALY "Codice@16" CODICE
DISPLAY "Anno@5" ANNO
DISPLAY "Mese@5" MESE
DISPLAY "Tipo\nora@5" TPORA
OUTPUT F_RISOATT TIPORA
OUTPUT F_CODICE CODICE
GROUP 1
CHECKTYPE NORMAL
END
STRING F_CODRIS 16
BEGIN
PROMPT 3 5 "Codice: "
USE RSS
INPUT CODTAB F_CODRIS
DISPLAY "Codice@16" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CODRIS CODTAB
GROUP 2
CHECKTYPE NORMAL
END
STRING F_CODATT 16
BEGIN
PROMPT 3 5 "Codice: "
FIELD CODTAB[1,16]
USE ATR
INPUT CODTAB F_CODATT
DISPLAY "Codice@16" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT F_CODATT CODTAB
GROUP 3
CHECKTYPE NORMAL
END
GROUPBOX DLG_NULL 78 3
BEGIN
PROMPT 1 7 "@bDati Analitici"
END
STRING F_CODCOSTO 20 15
BEGIN
PROMPT 2 8 "C.d.C. "
END
STRING F_CODCMS 20 15
BEGIN
PROMPT 31 8 "Cms. "
END
STRING F_CODFASE 10 8
BEGIN
PROMPT 60 8 "Fase "
END
SPREADSHEET F_CALENDARIO -16 4
BEGIN
PROMPT 1 10 ""
ITEM "Centro di\nCosto@8F"
ITEM "Codice\nCommessa@8F"
ITEM "Codice\nFase@5F"
ITEM "1@2"
ITEM "2@2"
ITEM "3@2"
ITEM "4@2"
ITEM "5@2"
ITEM "6@2"
ITEM "7@2"
ITEM "8@2"
ITEM "9@2"
ITEM "10"
ITEM "11"
ITEM "12"
ITEM "13"
ITEM "14"
ITEM "15"
ITEM "16"
ITEM "17"
ITEM "18"
ITEM "19"
ITEM "20"
ITEM "21"
ITEM "22"
ITEM "23"
ITEM "24"
ITEM "25"
ITEM "26"
ITEM "27"
ITEM "28"
ITEM "29"
ITEM "30"
ITEM "31"
END
SPREADSHEET F_SHEET -10 0
BEGIN
PROMPT 1 15 ""
ITEM "Tipo"
ITEM "Codice@16"
ITEM "Tipo\nOra@5"
ITEM "Qta\nOre@5"
ITEM "Costo@6"
ITEM "Ore\ndisponibilità"
END
ENDPAGE
ENDMASK
PAGE "Calendario" -1 -1 78 13
GROUPBOX DLG_NULL 76 3
BEGIN
PROMPT 1 1 "@bDati Analitici"
END
STRING C_CODCOSTO 20 15
BEGIN
PROMPT 2 2 "C.d.C. "
END
STRING C_CODCMS 20 15
BEGIN
PROMPT 30 2 "Cms. "
END
STRING C_CODFASE 10 8
BEGIN
PROMPT 59 2 "Fase "
END
STRING C_1 1
BEGIN
PROMPT 2 4 "1"
END
STRING C_2 1
BEGIN
PROMPT 2 4 "1"
END
STRING C_3 1
BEGIN
PROMPT 2 4 "1"
END
STRING C_4 1
BEGIN
PROMPT 2 4 "1"
END
STRING C_5 1
BEGIN
PROMPT 2 4 "1"
END
STRING C_6 1
BEGIN
PROMPT 2 4 "1"
END
STRING C_7 1
BEGIN
PROMPT 2 4 "1"
END
STRING C_8 1
BEGIN
PROMPT 2 4 "1"
END
STRING C_9 1
BEGIN
PROMPT 2 4 "1"
END
STRING C_10 1
BEGIN
PROMPT 2 4 "1"
END
STRING C_11 1
BEGIN
PROMPT 2 4 "1"
END
STRING C_12 1
BEGIN
PROMPT 2 4 "1"
END
STRING C_13 1
BEGIN
PROMPT 2 4 "1"
END
STRING C_14 1
BEGIN
PROMPT 2 4 "1"
END
STRING C_15 1
BEGIN
PROMPT 2 4 "1"
END
STRING C_16 1
BEGIN
PROMPT 2 4 "1"
END
STRING C_17 1
BEGIN
PROMPT 2 4 "1"
END
STRING C_18 1
BEGIN
PROMPT 2 4 "1"
END
STRING C_19 1
BEGIN
PROMPT 2 4 "1"
END
STRING C_20 1
BEGIN
PROMPT 2 4 "1"
END
STRING C_21 1
BEGIN
PROMPT 2 4 "1"
END
STRING C_22 1
BEGIN
PROMPT 2 4 "1"
END
STRING C_23 1
BEGIN
PROMPT 2 4 "1"
END
STRING C_24 1
BEGIN
PROMPT 2 4 "1"
END
STRING C_25 1
BEGIN
PROMPT 2 4 "1"
END
STRING C_26 1
BEGIN
PROMPT 2 4 "1"
END
STRING C_27 1
BEGIN
PROMPT 2 4 "1"
END
STRING C_28 1
BEGIN
PROMPT 2 4 "1"
END
STRING C_29 1
BEGIN
PROMPT 2 4 "1"
END
STRING C_30 1
BEGIN
PROMPT 2 4 "1"
END
STRING C_31 1
BEGIN
PROMPT 2 4 "1"
END
ENDPAGE
ENDMASK
PAGE "Dettaglio Risorsa - Attrezzatura" -1 -1 78 13
GROUPBOX DLG_NULL 76 12
BEGIN
PROMPT 1 1 "@bDati Risorsa - Attrezzatura"
END
RADIOBUTTON S_RISOATT 1 74
BEGIN
PROMPT 2 2 "@bTipo: "
FIELD CODTAB[0,1]
ITEM "R|Risorsa"
MESSAGE SHOW,1@|HIDE,2@|RESET,2@
ITEM "A|Attrezzatura"
MESSAGE HIDE,1@|SHOW,2@|RESET,1@
FLAGS "GDZ"
END
STRING S_CODRIS 16
BEGIN
PROMPT 2 5 "Codice Risorsa "
FIELD CODTAB[1,16]
USE RSS
INPUT CODTAB S_CODRIS
DISPLAY "Codice@16" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT S_CODRIS CODTAB
OUTPUT S_DESRIS S0
CHECKTYPE REQUIRED
FLAGS "GD"
GROUP 1
END
STRING S_DESRIS 50
BEGIN
PROMPT 2 6 "Descrizione "
CHECKTYPE NORMAL
FLAGS "D"
GROUP 1
END
STRING S_CODATT 16
BEGIN
PROMPT 2 5 "Codice Attrezzatura "
FIELD CODTAB[1,16]
USE ATR
INPUT CODTAB S_CODATT
DISPLAY "Codice@16" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT S_CODATT CODTAB
OUTPUT S_DESATT S0
CHECKTYPE REQUIRED
FLAGS "GD"
GROUP 2
END
STRING S_DESATT 50
BEGIN
PROMPT 2 6 "Descrizione "
CHECKTYPE NORMAL
FLAGS "D"
GROUP 2
END
STRING S_TPORA 2
BEGIN
PROMPT 59 7 "Tipo ora "
USE &ORE
INPUT CODTAB S_TPORA
DISPLAY "Codice@16" CODTAB
DISPLAY "Descrizione@50" S0
OUTPUT S_TPORA CODTAB
FLAGS "D"
END
NUMBER S_QTAORE 6
BEGIN
PROMPT 2 11 "Quantità ore "
END
NUMBER S_COSTO 6 2
BEGIN
PROMPT 30 11 "Prezzo "
END
NUMBER S_OREDIS 6
BEGIN
PROMPT 50 11 "Quantità ore "
END
ENDPAGE
TOOLBAR "" 0 0 0 2
BUTTON DLG_OK 2 2
BEGIN
PROMPT 1 1 ""
END
BUTTON DLG_RESET 2 2
BEGIN
PROMPT 2 1 "Azzera"
MESSAGE EXIT,K_DEL
PICTURE TOOL_RESET
END
BUTTON DLG_CANCEL 2 2
BEGIN
PROMPT 4 1 "Annulla"
PICTURE TOOL_CANCEL
END
ENDPAGE
ENDMASK