diff --git a/ci/ci0200.cpp b/ci/ci0200.cpp index 6ef75f645..110f706ba 100755 --- a/ci/ci0200.cpp +++ b/ci/ci0200.cpp @@ -158,68 +158,43 @@ void TRisoatt_msk::riempi_sheet() void TRisoatt_msk::nuova_riga() { TSheet_field& sheet = sfield(F_SHEET); - sheet.row(-1); - sheet.select(sheet.items() - 1); + TToken_string & riga = sheet.row(-1); + const int r = sheet.items() - 1; + sheet.select(r); TMask& msk = sheet.sheet_mask(); - - msk.set(S_ANNO, get(F_ANNO)); - //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'); + const bool tutti = get(F_RISOATT)[0] == 'T'; + const TString4 tipo = tutti ? "R" : get(F_RISOATT); + int mese = get_int(F_MESE); + int anno = get_int(F_ANNO); + TString tpora = get(F_TPORA); - //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_MESE, get(F_MESE).empty()); - msk.set(S_MESE, get(F_MESE)); - - msk.enable(S_TPORA, get(F_TPORA).empty()); - msk.set(S_TPORA, get(F_TPORA)); - - msk.set(S_VALUNI, ""); - + riga.add(tipo, sheet.cid2index(S_RISOATT)); + if (!tutti) + { + if (tipo == "R") + riga.add(get(F_CODRIS), sheet.cid2index(S_CODRIS)); + else + riga.add(get(F_CODATT), sheet.cid2index(S_CODATT)); + } + riga.add(anno, sheet.cid2index(S_ANNO)); + riga.add(mese, sheet.cid2index(S_MESE)); + riga.add(tpora, sheet.cid2index(S_TPORA)); + sheet.update_mask(r); + msk.enable(S_RISOATT, tutti); + if (tutti || tipo == "R") + msk.enable(S_CODRIS); + if (tutti || tipo == "A") + msk.enable(S_CODATT); + msk.enable(S_ANNO, anno == 0); + msk.enable(S_MESE, mese == 0); + msk.enable(S_TPORA, tpora.empty()); //lancio la maschera di riga da compilare if(msk.run() == K_ENTER) { const real& valuni = msk.get_real(S_VALUNI); if(valuni > ZERO) - { - const char tipo = msk.get(S_RISOATT)[0]; - const TString& codice = tipo == 'R' ? msk.get(S_CODRIS) : msk.get(S_CODATT); - - 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; - } - const TString& mese = msk.get(S_MESE); - riga.add(mese, sheet.cid2index(S_MESE)); - const TString& tpora = msk.get(S_TPORA); - riga.add(tpora, sheet.cid2index(S_TPORA)); - riga.add(valuni.string(), sheet.cid2index(S_VALUNI)); - const TString& anno = msk.get(S_ANNO); - riga.add(anno, sheet.cid2index(S_ANNO)); - sheet.set_column_justify(sheet.cid2index(S_VALUNI), true); - } + sheet.update_row(r); else { sheet.destroy(sheet.items() - 1); diff --git a/ci/ci0500.cpp b/ci/ci0500.cpp index dab6e6b79..6eb73c740 100755 --- a/ci/ci0500.cpp +++ b/ci/ci0500.cpp @@ -158,71 +158,44 @@ void TDisp_risoatt_msk::riempi_sheet() void TDisp_risoatt_msk::nuova_riga() { TSheet_field& sheet = sfield(F_SHEET); - sheet.row(-1); - sheet.select(sheet.items() - 1); + TToken_string & riga = sheet.row(-1); + const int r = sheet.items() - 1; + sheet.select(r); 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'); + const bool tutti = get(F_RISOATT)[0] == 'T'; + const TString4 tipo = tutti ? "R" : get(F_RISOATT); + int mese = get_int(F_MESE); + int anno = get_int(F_ANNO); + TString tpora = get(F_TPORA); - //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_ANNO, get(F_ANNO).empty()); - msk.set(S_ANNO, get(F_ANNO)); - - msk.enable(S_MESE, get(F_MESE).empty()); - msk.set(S_MESE, get(F_MESE)); - - msk.enable(S_TPORA, get(F_TPORA).empty()); - msk.set(S_TPORA, get(F_TPORA)); - - msk.set(S_OREPREV, 0L); - msk.set(S_ORECONS, 0L); - + riga.add(tipo, sheet.cid2index(S_RISOATT)); + if (!tutti) + { + if (tipo == "R") + riga.add(get(F_CODRIS), sheet.cid2index(S_CODRIS)); + else + riga.add(get(F_CODATT), sheet.cid2index(S_CODATT)); + } + riga.add(anno, sheet.cid2index(S_ANNO)); + riga.add(mese, sheet.cid2index(S_MESE)); + riga.add(tpora, sheet.cid2index(S_TPORA)); + sheet.update_mask(r); + msk.enable(S_RISOATT, tutti); + if (tutti || tipo == "R") + msk.enable(S_CODRIS); + if (tutti || tipo == "A") + msk.enable(S_CODATT); + msk.enable(S_ANNO, anno == 0); + msk.enable(S_MESE, mese == 0); + msk.enable(S_TPORA, tpora.empty()); //lancio la maschera di riga da compilare if(msk.run() == K_ENTER) { const int oreprev = msk.get_int(S_OREPREV); const int orecons = msk.get_int(S_ORECONS); - if(oreprev > 0 && orecons > 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); - - 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(get_int(F_ANNO), sheet.cid2index(S_ANNO)); - riga.add(mese, sheet.cid2index(S_MESE)); - riga.add(tpora, sheet.cid2index(S_TPORA)); - riga.add(oreprev, sheet.cid2index(S_OREPREV)); - riga.add(orecons, sheet.cid2index(S_ORECONS)); - } + if(oreprev > 0 || orecons > 0) + sheet.update_row(r); else { sheet.destroy(sheet.items() - 1); diff --git a/ci/ci0600.cpp b/ci/ci0600.cpp index 417d75d0f..4d5e04748 100755 --- a/ci/ci0600.cpp +++ b/ci/ci0600.cpp @@ -11,6 +11,8 @@ #include "ci0.h" #include "cilib.h" #include "ci0600a.h" +#include "rilore.h" +#include "../ca/calib01.h" #include "../ve/velib.h" //////////////////////////////////////// @@ -21,9 +23,19 @@ class TDef_risoatt_msk : public TAutomask { int _qtaore; + short _cdc_sid, _cdc_lid; + short _cms_sid, _cms_lid; + short _fase_sid, _fase_lid; + short _scdc_sid, _scdc_lid; + short _scms_sid, _scms_lid; + short _sfase_sid, _sfase_lid; + protected: virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); + void get_anal_fields(TString & cdc, TString & cms, TString & fase); + void get_row_anal_fields(TToken_string & row, TString & cdc, TString & cms, TString & fase); + void put_row_anal_fields(TToken_string & row, TString & cdc, TString & cms, TString & fase); void riempi_sheet(); void nuova_riga(); void azzera_riga(TSheet_field& sheet); @@ -35,6 +47,98 @@ public: TDef_risoatt_msk(); }; +void TDef_risoatt_msk::get_anal_fields(TString & cdc, TString & cms, TString & fase) +{ + TString val; + + cdc.cut(0); + if (_cdc_sid >= 0) + for ( short id = _cdc_sid; id <= _cdc_lid; id++) + { + val = get(id); + val.fill(' ', field(id).size()); + cdc << val; + } + cms.cut(0); + if (_cms_sid >= 0) + for ( short id = _cms_sid; id <= _cms_lid; id++) + { + val = get(id); + val.fill(' ', field(id).size()); + cms << val; + } + fase.cut(0); + if (_fase_sid >= 0) + for ( short id = _fase_sid; id <= _fase_lid; id++) + { + val = get(id); + val.fill(' ', field(id).size()); + fase << val; + } +} + +void TDef_risoatt_msk::get_row_anal_fields(TToken_string & row, TString & cdc, TString & cms, TString & fase) +{ + TMask & m = sfield(F_SHEET).sheet_mask(); + TString val; + + cdc.cut(0); + if (_scdc_sid >= 0) + for ( short id = _scdc_sid; id <= _scdc_lid; id++) + { + val = m.get(id); + val.fill(' ', m.field(id).size()); + cdc << val; + } + cms.cut(0); + if (_scms_sid >= 0) + for ( short id = _scms_sid; id <= _scms_lid; id++) + { + val = m.get(id); + val.fill(' ', m.field(id).size()); + cms << val; + } + fase.cut(0); + if (_sfase_sid >= 0) + for ( short id = _sfase_sid; id <= _sfase_lid; id++) + { + val = m.get(id); + val.fill(' ', m.field(id).size()); + fase << val; + } +} + +void TDef_risoatt_msk::put_row_anal_fields(TToken_string & row, TString & cdc, TString & cms, TString & fase) +{ + TSheet_field & s = sfield(F_SHEET); + TMask & m = s.sheet_mask(); + int pos = 0; + + if (_scdc_sid >= 0) + for (short id = _scdc_sid; id <= _scdc_lid; id++) + { + const int len = m.field(id).size(); + row.add(cdc.mid(pos, len), s.cid2index(id)); + pos += len; + } + pos = 0; + if (_scms_sid >= 0) + for (short id = _scms_sid; id <= _scms_lid; id++) + { + const int len = m.field(id).size(); + row.add(cms.mid(pos, len), s.cid2index(id)); + pos += len; + } + pos = 0; + if (_sfase_sid >= 0) + for (short id = _sfase_sid; id <= _sfase_lid; id++) + { + const int len = m.field(id).size(); + row.add(fase.mid(pos, len), s.cid2index(id)); + pos += len; + } +} + //RIEMPI_SHEET: metodo che riempie lo sheet in base ai campi chiave //compilati sulla maschera void TDef_risoatt_msk::riempi_sheet() @@ -44,9 +148,9 @@ void TDef_risoatt_msk::riempi_sheet() const TString4 risoatt = get(F_RISOATT) == "T" ? "" : get(F_RISOATT); const TString4 mese = get(F_MESE); const TString4 tpora = get(F_TPORA); - const TString80 codcosto = get(F_CODCOSTO); - const TString80 codcms = get(F_CODCMS); - const TString16 codfase = get(F_CODFASE); + TString80 codcosto; + TString80 codcms; + TString16 codfase; TString16 codice; switch(get(F_RISOATT)[0]) { @@ -55,33 +159,35 @@ void TDef_risoatt_msk::riempi_sheet() case 'A': codice = get(F_CODATT); break; default: break; } + + get_anal_fields(codcosto, codcms, codfase); TString query; - query << "USE RILORE\n" - << "SELECT (BETWEEN(TIPORA,\"" << risoatt << "\",\"" << risoatt << "\"))&&" - << "(BETWEEN(CODICE,\"" << codice << "\",\"" << codice << "\"))&&" - << "(BETWEEN(ANNO,\"" << anno << "\",\"" << anno << "\"))&&" - << "(BETWEEN(MESE,\"" << mese << "\",\"" << mese << "\"))&&" - << "(BETWEEN(TPORA,\"" << tpora << "\",\"" << tpora << "\"))&&" - << "(BETWEEN(CODCOSTO,\"" << codcosto << "\",\"" << codcosto << "\"))&&" - << "(BETWEEN(CODCMS,\"" << codcms << "\",\"" << codcms << "\"))&&" - << "(BETWEEN(CODFASE,\"" << codcms << "\",\"" << codfase << "\"))\n"; + query << "USE " << LF_RILORE << "\n" + << "SELECT (BETWEEN(" << RILORE_TIPORA << ",\"" << risoatt << "\",\"" << risoatt << "\"))&&" + << "(BETWEEN(" << RILORE_CODICE << ",\"" << codice << "\",\"" << codice << "\"))&&" + << "(BETWEEN(" << RILORE_ANNO << ",\"" << anno << "\",\"" << anno << "\"))&&" + << "(BETWEEN(" << RILORE_MESE << ",\"" << mese << "\",\"" << mese << "\"))&&" + << "(BETWEEN(" << RILORE_TPORA << ",\"" << tpora << "\",\"" << tpora << "\"))&&" + << "(BETWEEN(" << RILORE_CODCOSTO << ",\"" << codcosto << "\",\"" << codcosto << "\"))&&" + << "(BETWEEN(" << RILORE_CODCMS << ",\"" << codcms << "\",\"" << codcms << "\"))&&" + << "(BETWEEN(" << RILORE_CODFASE << ",\"" << codcms << "\",\"" << codfase << "\"))\n"; - TString fromto = "TIPO=\"D\""; + TString fromto = RILORE_TIPO "=\"D\""; if(risoatt != 'T') { - fromto << " TIPORA=\"" << risoatt << "\""; + fromto << " " << RILORE_TIPORA << "=\"" << risoatt << "\""; if(codice.full()) { - fromto << " CODICE=\"" << codice << "\""; + fromto << " " << RILORE_CODICE << "=\"" << codice << "\""; if(anno.full()) { - fromto << " ANNO=\"" << anno << "\""; + fromto << " " << RILORE_ANNO << "=\"" << anno << "\""; if(mese.full()) { - fromto << " MESE=\"" << mese << "\""; + fromto << " " << RILORE_MESE << "=\"" << mese << "\""; if(tpora.full()) - fromto << " TPORA=\"" << tpora << "\""; + fromto << " " << RILORE_TPORA << "=\"" << tpora << "\""; } } } @@ -103,18 +209,17 @@ void TDef_risoatt_msk::riempi_sheet() 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; + 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.anno(), sheet.cid2index(S_ANNO)); riga.add(rilore.mese(), sheet.cid2index(S_MESE)); 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)); + put_row_anal_fields(riga, codcosto, codcms, codfase); riga.add(rilore.qtaore(), sheet.cid2index(S_QTAORE)); riga.add(rilore.costo().string(), sheet.cid2index(S_COSTO)); + } sheet.force_update(); @@ -125,43 +230,54 @@ void TDef_risoatt_msk::riempi_sheet() void TDef_risoatt_msk::nuova_riga() { TSheet_field& sheet = sfield(F_SHEET); - sheet.row(-1); - sheet.select(sheet.items() - 1); + TToken_string & riga = sheet.row(-1); + const int r = sheet.items() - 1; + sheet.select(r); 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'); + const bool tutti = get(F_RISOATT)[0] == 'T'; + const TString4 tipo = tutti ? "R" : get(F_RISOATT); + TString codice; + int mese = get_int(F_MESE); + int anno = get_int(F_ANNO); + TString tpora = get(F_TPORA); + TString codcosto; + TString codcms; + TString codfase; - //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_ANNO, get(F_ANNO).empty()); - msk.set(S_ANNO, get(F_ANNO)); + riga.add(tipo, sheet.cid2index(S_RISOATT)); + if (!tutti) + { + if (tipo == "R") + riga.add(get(F_CODRIS), sheet.cid2index(S_CODRIS)); + else + riga.add(get(F_CODATT), sheet.cid2index(S_CODATT)); + } + riga.add(anno, sheet.cid2index(S_ANNO)); + riga.add(mese, sheet.cid2index(S_MESE)); + riga.add(tpora, sheet.cid2index(S_TPORA)); + get_anal_fields(codcosto, codcms, codfase); + put_row_anal_fields(riga, codcosto, codcms, codfase); + sheet.update_mask(r); + msk.enable(S_RISOATT, tutti); + if (tutti || tipo == "R") + msk.enable(S_CODRIS); + if (tutti || tipo == "A") + msk.enable(S_CODATT); + msk.enable(S_ANNO, anno == 0); + msk.enable(S_MESE, mese == 0); + msk.enable(S_TPORA, tpora.empty()); + if (_scdc_sid >= 0) + for ( short id = _scdc_sid; id <= _scdc_lid; id++) + msk.enable(id, codcosto.blank()); + if (_scms_sid >= 0) + for ( short id = _scms_sid; id <= _scms_lid; id++) + msk.enable(id, codcms.blank()); + if (_sfase_sid >= 0) + for ( short id = _sfase_sid; id <= _sfase_lid; id++) + msk.enable(id, codfase.blank()); - msk.enable(S_MESE, get(F_MESE).empty()); - msk.set(S_MESE, get(F_MESE)); - - msk.enable(S_TPORA, get(F_TPORA).empty()); - msk.set(S_TPORA, get(F_TPORA)); - - msk.set(S_QTAORE, 0L); - //lancio la maschera di riga da compilare if(msk.run() == K_ENTER) { @@ -169,32 +285,7 @@ void TDef_risoatt_msk::nuova_riga() 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); - - 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(get_int(F_ANNO), sheet.cid2index(S_ANNO)); - riga.add(mese, sheet.cid2index(S_MESE)); - 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(qtaore, sheet.cid2index(S_QTAORE)); - riga.add(prezzo.string(), sheet.cid2index(S_COSTO)); - } + sheet.update_row(r); else { sheet.destroy(sheet.items() - 1); @@ -248,14 +339,15 @@ void TDef_risoatt_msk::registra() const int anno = riga.get_int(sheet.cid2index(S_ANNO)); const TString4 mese = riga.get(sheet.cid2index(S_MESE)); 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)); - + TString80 codcosto; + TString80 codcms; + TString80 codfase; const int qtaore = riga.get_int(sheet.cid2index(S_QTAORE)); const TString& tmp = riga.get(sheet.cid2index(S_COSTO)); const real costo(tmp); + get_row_anal_fields(riga, codcosto, codcms, codfase); + TRilevamento_ore rilroa('D', tipora, codice, anno, mese, tpora); if(!rilroa.empty() && qtaore == 0) rilroa.remove(file); @@ -365,7 +457,110 @@ void TDef_risoatt_msk::esegui() const TDef_risoatt_msk::TDef_risoatt_msk() : TAutomask("ci0600a") { + const TMultilevel_code_info& fasinfo = ca_multilevel_code_info(LF_FASI); + TConfig& ini = ca_config(); + TSheet_field & s = sfield(F_SHEET); + TMask & sm = s.sheet_mask(); + int y = 3; + int sy = 8; + short dlg = F_ANAL; // id del primo campo da generare + short sdlg = S_CDC1 + 100; // id del primo campo da generare + + _cdc_sid = _cdc_lid = _cms_sid = _cms_lid = _fase_sid = _fase_lid = -1; + _scdc_sid = _scdc_lid = _scms_sid = _scms_lid = _sfase_sid = _sfase_lid = -1; + + for (int i = 0; i < 2; i++) + { + const TString& level = ini.get("Level", NULL, i+1); // Legge il livello 1 o 2 + + if (level == "CDC") // Crea centro di costo + { + const int h = ca_create_fields(*this, 0, LF_CDC, 2, y, dlg, dlg + 100); + _cdc_sid = dlg; + _cdc_lid = dlg + h - 1; + y += h - 1; + dlg += h; + const int sh = ca_create_fields(sm, 0, LF_CDC, 2, sy, sdlg, sdlg + 50); + _scdc_sid = sdlg; + _scdc_lid = sdlg + sh - 1; + sy += sh - 1; + sdlg += h; + if (fasinfo.parent() == LF_CDC) + { + const int h = ca_create_fields(*this, 0, LF_FASI, 2, y, dlg, dlg + 100); + _fase_sid = dlg; + _fase_lid = dlg + h - 1; + y += h - 1; + dlg += h; + const int sh = ca_create_fields(sm, 0, LF_FASI, 2, sy, sdlg, sdlg + 50); + _sfase_sid = sdlg; + _sfase_lid = sdlg + sh - 1; + sy += sh - 1; + sdlg += h; + } + } + else + if (level == "CMS") // Crea commessa + { + const int h = ca_create_fields(*this, 0, LF_COMMESSE, 2, y, dlg, dlg + 100); + _cms_sid = dlg; + _cms_lid = dlg + h - 1; + y += h - 1; + dlg += h; + const int sh = ca_create_fields(sm, 0, LF_COMMESSE, 2, sy, sdlg, sdlg + 50); + _scms_sid = sdlg; + _scms_lid = sdlg + sh - 1; + sy += sh - 1; + sdlg += sh; + if (fasinfo.parent() == LF_COMMESSE) + { + const int h = ca_create_fields(*this, 0, LF_FASI, 2, y, dlg, dlg + 100); + _fase_sid = dlg; + _fase_lid = dlg + h - 1; + y += h - 1; + dlg += h; + const int sh = ca_create_fields(sm, 0, LF_FASI, 2, sy, sdlg, sdlg + 50); + _sfase_sid = sdlg; + _sfase_lid = sdlg + sh - 1; + sy += sh - 1; + sdlg += h; + } + } + } + if (fasinfo.levels() > 0 && fasinfo.parent() <= 0) + { + const int h = ca_create_fields(*this, 0, LF_FASI, 2, y, dlg, dlg + 100); + _fase_sid = dlg; + _fase_lid = dlg + h - 1; + y += h - 1; + dlg += h; + const int sh = ca_create_fields(sm, 0, LF_FASI, 2, sy, sdlg, sdlg + 50); + _sfase_sid = sdlg; + _sfase_lid = sdlg + sh - 1; + sy += sh - 1; + sdlg += h; + } + + for (short id = S_CDC12 + 100; id >= S_CDC1 + 100; id--) + { + const int pos = sm.id2pos(id); + if (pos >= 0) + { + TMask_field& f = sm.fld(pos); + const int size = f.size(); + const TString& prompt = f.prompt(); + s.set_column_header(id, prompt); + s.set_column_justify(id, f.is_kind_of(CLASS_REAL_FIELD)); + s.set_column_width(id, (max(3+size, prompt.len()+1)) * CHARX); + s.enable_column(id); + } + else + { + s.delete_column(id); + } + } _qtaore = 0; + } //////////////////////////////////////// @@ -389,6 +584,6 @@ void TDef_risoatt_app::main_loop() int ci0600(int argc, char *argv[]) { TDef_risoatt_app a; - a.run (argc, argv, TR("Gestione dati dredefiniti")); + a.run (argc, argv, TR("Gestione dati predefiniti")); return TRUE; } diff --git a/ci/ci0600a.h b/ci/ci0600a.h index f698c0967..025e3c086 100755 --- a/ci/ci0600a.h +++ b/ci/ci0600a.h @@ -8,11 +8,10 @@ #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_SHEET 313 +#define F_ANAL 310 +#define F_SHEET 330 +#define F_DESANAL 410 #define DLG_RESET 400 #define DLG_CERCA 401 @@ -24,8 +23,17 @@ #define S_ANNO 103 #define S_MESE 104 #define S_TPORA 105 -#define S_CODCOSTO 106 -#define S_CODCMS 107 -#define S_CODFASE 108 -#define S_QTAORE 109 -#define S_COSTO 110 \ No newline at end of file +#define S_CDC1 106 +#define S_CDC2 107 +#define S_CDC3 108 +#define S_CDC4 109 +#define S_CDC5 110 +#define S_CDC6 111 +#define S_CDC7 112 +#define S_CDC8 113 +#define S_CDC9 114 +#define S_CDC10 115 +#define S_CDC11 116 +#define S_CDC12 117 +#define S_QTAORE 118 +#define S_COSTO 119 \ No newline at end of file diff --git a/ci/ci0600a.uml b/ci/ci0600a.uml index cab5aecd1..f3acb75b3 100755 --- a/ci/ci0600a.uml +++ b/ci/ci0600a.uml @@ -130,21 +130,6 @@ BEGIN END -STRING F_CODCOSTO 20 -BEGIN - PROMPT 3 3 "Centro di costo" -END - -STRING F_CODCMS 20 -BEGIN - PROMPT 3 4 "Commessa " -END - -STRING F_CODFASE 20 -BEGIN - PROMPT 3 5 "Fase " -END - SPREADSHEET F_SHEET -10 0 BEGIN PROMPT 1 15 "" @@ -153,9 +138,18 @@ BEGIN ITEM "Anno" ITEM "Mese" ITEM "Tipo\nOra@5" - ITEM "Centro di\nCosto@20" - ITEM "Codice\nCommessa@20" - ITEM "Codice\nFase@10" + ITEM "CDC1" + ITEM "CDC2" + ITEM "CDC3" + ITEM "CDC4" + ITEM "CDC5" + ITEM "CDC6" + ITEM "CDC7" + ITEM "CDC8" + ITEM "CDC9" + ITEM "CDC10" + ITEM "CDC11" + ITEM "CDC12" ITEM "Qta\nOre@5" ITEM "Costo@10" END @@ -163,9 +157,9 @@ END ENDPAGE ENDMASK -PAGE "Dati Predefiniti" -1 -1 78 13 +PAGE "Dati Predefiniti" -1 -1 78 22 -GROUPBOX DLG_NULL 76 12 +GROUPBOX DLG_NULL 76 20 BEGIN PROMPT 1 1 "@bRisorsa - Attrezzatura" END @@ -252,29 +246,103 @@ BEGIN FLAGS "D" END -STRING S_CODCOSTO 20 +STRING S_CDC1 20 BEGIN - PROMPT 2 8 "Centro di Costo " + PROMPT 2 8 "Cdc 1" + USE LF_CDC + CHECKTYPE NORMAL + GROUP 1 + FLAGS "H" END -STRING S_CODCMS 20 +STRING S_CDC2 20 BEGIN - PROMPT 2 9 "Codice Commessa " + PROMPT 2 9 "Cdc 2" + COPY USE S_CDC1 + CHECKTYPE NORMAL + FLAGS "H" END -STRING S_CODFASE 20 +STRING S_CDC3 20 BEGIN - PROMPT 2 10 "Codice Fase " + PROMPT 2 10 "Cdc 2" + COPY USE S_CDC1 + CHECKTYPE NORMAL + FLAGS "H" +END + +STRING S_CDC4 20 +BEGIN + PROMPT 2 11 "Cdc 2" + COPY USE S_CDC1 + CHECKTYPE NORMAL + FLAGS "H" +END + +STRING S_CDC5 20 +BEGIN + PROMPT 2 12 "Cdc 2" + COPY USE S_CDC1 + CHECKTYPE NORMAL + FLAGS "H" +END + +STRING S_CDC7 20 +BEGIN + PROMPT 2 13 "Cdc 2" + COPY USE S_CDC1 + CHECKTYPE NORMAL + FLAGS "H" +END + +STRING S_CDC8 20 +BEGIN + PROMPT 2 14 "Cdc 2" + COPY USE S_CDC1 + CHECKTYPE NORMAL + FLAGS "H" +END + +STRING S_CDC9 20 +BEGIN + PROMPT 2 15 "Cdc 2" + COPY USE S_CDC1 + CHECKTYPE NORMAL + FLAGS "H" +END + +STRING S_CDC10 20 +BEGIN + PROMPT 2 16 "Cdc 2" + COPY USE S_CDC1 + CHECKTYPE NORMAL + FLAGS "H" +END + +STRING S_CDC11 20 +BEGIN + PROMPT 2 17 "Cdc 2" + COPY USE S_CDC1 + CHECKTYPE NORMAL + FLAGS "H" +END + +STRING S_CDC12 20 +BEGIN + PROMPT 2 18 "Cdc 2" + COPY USE S_CDC1 + CHECKTYPE NORMAL + FLAGS "H" END NUMBER S_QTAORE 6 BEGIN - PROMPT 2 11 "Quantità ore " + PROMPT 2 19 "Quantità ore " END NUMBER S_COSTO 10 2 BEGIN - PROMPT 30 11 "Prezzo " + PROMPT 30 19 "Prezzo " END ENDPAGE