diff --git a/ce/ce4.cpp b/ce/ce4.cpp new file mode 100755 index 000000000..67593405f --- /dev/null +++ b/ce/ce4.cpp @@ -0,0 +1,19 @@ +#include + +#include "ce4.h" + +int main(int argc,char** argv) +{ + const int r = (argc > 1) ? (argv[1][1]-'0') : 0; + switch (r) + { +/* case 1: + ce4200(argc,argv); break; //calcolo cespiti per commessa + case 2: + ce4300(argc,argv); break;*/ //stampa cespiti per commessa + case 0: + default: ce4100(argc,argv) ; break; // inserimento cespiti per commessa (personalizzazione CRPA) + } + return 0; +} + \ No newline at end of file diff --git a/ce/ce4.h b/ce/ce4.h new file mode 100755 index 000000000..97322b33d --- /dev/null +++ b/ce/ce4.h @@ -0,0 +1,10 @@ +#ifndef __CE4_H +#define __CE4_H + +int ce4100(int argc, char* argv[]); +//int ce4200(int argc, char* argv[]); +//int ce4300(int argc, char* argv[]); + + +#endif // __CE4_H + diff --git a/ce/ce4100.cpp b/ce/ce4100.cpp new file mode 100755 index 000000000..b5c6dc9ea --- /dev/null +++ b/ce/ce4100.cpp @@ -0,0 +1,145 @@ +#include +#include + +#include "ce4100a.h" + +//============================================================================================= +//maschera + +class TCesp_per_cms_mask: public TAutomask +{ +public: + virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); + + real TCesp_per_cms_mask::somma_perc() const; + + TCesp_per_cms_mask():TAutomask("ce4100a") {} +}; + +real TCesp_per_cms_mask::somma_perc() const +{ + TSheet_field& ss = sfield(F_RIGHE); + real tot_perc; + FOR_EACH_SHEET_ROW(ss,i,r) + tot_perc += real(r->get(ss.cid2index(S_PERCUTIL))); + return tot_perc; +} + +bool TCesp_per_cms_mask::on_field_event(TOperable_field& o, TField_event e, long jolly) +{ + switch (o.dlg()) + { + case F_RIGHE: + if (e == se_notify_add) + { + TSheet_field& ss = (TSheet_field&)o; + real residuo = CENTO - somma_perc(); + if (residuo > 0) + { + TToken_string& row = ss.row(jolly); + row.add(residuo.string(),ss.cid2index(S_PERCUTIL)); + } + } + if (e == fe_close && (insert_mode() || edit_mode())) + { +//controllo sulle percentuali totali di un cespite + if (somma_perc() != CENTO) + return noyes_box("La percentuale complessiva di utilizzo del cespite e' diversa da 100" + "\nSi desidera proseguire ?"); + + TAssoc_array lista_cms; + + TSheet_field& ss = sfield(F_RIGHE); + FOR_EACH_SHEET_ROW(ss,i,r) + { +//controllo di esistenza codice commessa + const TString& cms = r->get(ss.cid2index(S_CODCMS)); + if (cms.blank()) + return error_box("Specificare la commessa sulla riga %d", i+1); +//controllo di duplicazione codice commessa + if (lista_cms.is_key(cms)) + return error_box("Codice commessa %s duplicato", (const char *)cms); + lista_cms.add(cms); + } + } + break; + default: break; + } + return true; +} + +//=============================================================================================== +//Applicazione +class TCesp_per_cms: public TRelation_application +{ + TCesp_per_cms_mask *_msk; // maschera principale + TRelation *_rel; // relazione principale + +//metodi virtuali obbligatori per gli oggetti TRelation_application +protected: + virtual bool user_create(); + virtual bool user_destroy(); + virtual TMask* get_mask(int mode) { return _msk; } + virtual bool changing_mask(int mode) { return FALSE;} + virtual void init_query_mode(TMask& m); + virtual void init_query_insert_mode(TMask& m); + virtual void init_insert_mode(TMask& m); + virtual void init_modify_mode(TMask& m); + + virtual TRelation* get_relation() const { return _rel; } + +public: + virtual ~TCesp_per_cms() {} +}; + +//metodi per la maschera +//abilita i campi per inserimento nuovo cespite,attivando i campi del gruppo 2 (che fanno riferimento al file LF_CESPI) +void TCesp_per_cms::init_query_insert_mode(TMask& m) +{ + m.enable(-2); + m.show(-2); + m.hide(-1); +} +//abilita i campi per ricercare un cespite gia' inserito,attivando i campi del gruppo 1(LF_SALCECMS) +void TCesp_per_cms::init_query_mode(TMask& m) +{ + m.show(-1); + m.hide(-2); + m.set(F_DESC,""); +} + +void TCesp_per_cms::init_insert_mode(TMask& m) +{ + m.hide(-1); + m.disable(-2); +} + +void TCesp_per_cms::init_modify_mode(TMask& m) +{ + m.hide(-2); +} + +bool TCesp_per_cms::user_create() +{ + _rel = new TRelation(LF_SALCECMS); + _msk = new TCesp_per_cms_mask; + return TRUE; +} + + +bool TCesp_per_cms::user_destroy() +{ + delete _rel; + delete _msk; + return TRUE; +} + + + +int ce4100(int argc, char* argv[]) +{ + TCesp_per_cms a; + a.run(argc,argv,TR("Inserimento cespiti per commessa")); + return 0; +} + diff --git a/ce/ce4100a.h b/ce/ce4100a.h new file mode 100755 index 000000000..40667480b --- /dev/null +++ b/ce/ce4100a.h @@ -0,0 +1,19 @@ +//definizioni campi per la maschera ce4100a.uml (immissione cespiti per commessa) +#define F_DITTA 201 +#define F_RAGSOC 202 +#define F_ESERCIZIO 203 +#define F_INIZIO_ES 204 +#define F_FINE_ES 205 +#define F_IDCESPITE 206 +#define F_DESC 207 +#define F_IDCESPITE_N 208 +#define F_DESC_N 209 +#define F_NRIGA 210 + +#define F_RIGHE 211 + +#define S_CODCMS 101 +#define S_DESCMS 102 +#define S_PERCUTIL 103 +#define S_PERCCOPE 104 +#define S_FONDO 105 diff --git a/ce/ce4100a.uml b/ce/ce4100a.uml new file mode 100755 index 000000000..98d0f34c5 --- /dev/null +++ b/ce/ce4100a.uml @@ -0,0 +1,225 @@ +#include "ce4100a.h" + +TOOLBAR "Toolbar" 0 -3 0 3 + +#include + +ENDPAGE + +PAGE "Anagrafica cespiti per commessa" -1 -1 0 -3 + +GROUPBOX DLG_NULL 78 5 +BEGIN + PROMPT 0 1 "@bParametri cespite" +END + +NUMBER F_DITTA 5 +BEGIN + PROMPT 1 2 "Ditta " + FLAGS "DF" +END + +STRING F_RAGSOC 50 +BEGIN + PROMPT 26 2 "" + USE LF_NDITTE + INPUT CODDITTA F_DITTA + OUTPUT F_RAGSOC RAGSOC + CHECKTYPE NORMAL + FLAGS "D" +END + +NUMBER F_ESERCIZIO 4 +BEGIN + PROMPT 1 3 "Esercizio " + FLAGS "AZ" + USE CCE + JOIN ESC ALIAS 104 INTO CODTAB==CODTAB + INPUT CODTAB F_ESERCIZIO + DISPLAY "Codice esercizio" CODTAB + DISPLAY "Inizio esercizio" 104@->D0 + DISPLAY "Fine esercizio" 104@->D1 + OUTPUT F_ESERCIZIO CODTAB + OUTPUT F_INIZIO_ES 104@->D0 + OUTPUT F_FINE_ES 104@->D1 + CHECKTYPE REQUIRED + FIELD CODES + KEY 1 +END + +DATE F_INIZIO_ES +BEGIN + PROMPT 26 3 "Inizio " + FLAGS "D" +END + +DATE F_FINE_ES +BEGIN + PROMPT 50 3 "Fine " + FLAGS "D" +END + +LIST F_NRIGA 3 +BEGIN + PROMPT 1 100 "" + FLAGS "D" + ITEM "1|1" + FIELD NRIGA + KEY 1 +END + +STRING F_IDCESPITE 10 +BEGIN + PROMPT 1 4 "Cespite " + FLAGS "UZ" + USE LF_SALCECMS SELECT NRIGA==1 + JOIN LF_CESPI INTO IDCESPITE==IDCESPITE + INPUT CODES F_ESERCIZIO + INPUT IDCESPITE F_IDCESPITE + DISPLAY "Codice@10" IDCESPITE + DISPLAY "Descrizione@50" LF_CESPI->DESC + DISPLAY "Cat." LF_CESPI->CODCAT + DISPLAY "Impianto@10" LF_CESPI->CODIMP + DISPLAY "Stabilimento@30" LF_CESPI->STABILIM + DISPLAY "Reparto@30" LF_CESPI->REPARTO + DISPLAY "Data Acq.@10" LF_CESPI->DTCOMP + DISPLAY "Data Ali.@10" LF_CESPI->DTALIEN + OUTPUT F_ESERCIZIO CODES + OUTPUT F_IDCESPITE IDCESPITE + OUTPUT F_IDCESPITE_N IDCESPITE + OUTPUT F_DESC LF_CESPI->DESC + CHECKTYPE REQUIRED + FIELD IDCESPITE + KEY 1 + GROUP 1 +END + +STRING F_DESC 60 50 +BEGIN + PROMPT 24 4 "" + FLAGS "DP" + GROUP 1 +END + +STRING F_IDCESPITE_N 10 +BEGIN + PROMPT 1 4 "Cespite " + FLAGS "UZ" + FIELD IDCESPITE + USE LF_CESPI + INPUT IDCESPITE F_IDCESPITE_N + DISPLAY "Codice@10" IDCESPITE + DISPLAY "Descrizione@50" DESC + DISPLAY "Cat." CODCAT + DISPLAY "Impianto@10" CODIMP + DISPLAY "Stabilimento@30" STABILIM + DISPLAY "Reparto@30" REPARTO + DISPLAY "Data Acq.@10" DTCOMP + DISPLAY "Data Ali.@10" DTALIEN + OUTPUT F_IDCESPITE IDCESPITE + OUTPUT F_IDCESPITE_N IDCESPITE + OUTPUT F_DESC_N DESC + CHECKTYPE REQUIRED + KEY 1 + GROUP 2 +END + +STRING F_DESC_N 60 50 +BEGIN + PROMPT 24 4 "" + USE LF_CESPI KEY 3 + INPUT DESC F_DESC_N + DISPLAY "Descrizione@50" DESC + DISPLAY "Codice@10" IDCESPITE + DISPLAY "Cat." CODCAT + DISPLAY "Impianto@10" CODIMP + DISPLAY "Stabilimento@30" STABILIM + DISPLAY "Reparto@30" REPARTO + DISPLAY "Data Acq.@10" DTCOMP + DISPLAY "Data Ali.@10" DTALIEN + COPY OUTPUT F_IDCESPITE_N + CHECKTYPE REQUIRED + GROUP 2 + KEY 2 //chiave civetta per provocare l'entrata in modalita' INSERIMENTO in caso di ricerca per descrizione +END + +SPREADSHEET F_RIGHE +BEGIN + PROMPT 2 6 "" + ITEM "Codice commessa" + ITEM "Descrizione@50" + ITEM "% Utilizzo" + ITEM "% Copertura" + ITEM "Valore fondo per commessa" + USE LF_SALCECMS KEY NRIGA + INPUT CODES F_ESERCIZIO + INPUT IDCESPITE F_IDCESPITE + FLAGS "A" +END + +ENDPAGE + +ENDMASK + +//maschera di riga dello sheet +PAGE "Riga" -1 -1 64 8 + +STRING S_CODCMS 20 +BEGIN + PROMPT 1 1 "Codice commessa " + USE CMS + INPUT CODTAB S_CODCMS + DISPLAY "Codice@20" CODTAB + DISPLAY "Descrizione@50" S0 + OUTPUT S_CODCMS CODTAB + OUTPUT S_DESCMS S0 + CHECKTYPE REQUIRED + FIELD CODCMS + FLAGS "U" +END + +STRING S_DESCMS 50 45 +BEGIN + PROMPT 1 2 "Descrizione " + FLAGS "D" +END + +NUMBER S_PERCUTIL 6 2 +BEGIN + PROMPT 1 3 "Percentuale utilizzo " + CHECKTYPE REQUIRED + FLAGS "U" + FIELD PERCUTIL +END + +NUMBER S_PERCCOPE 6 2 +BEGIN + PROMPT 1 4 "Percentuale copertura " + FLAGS "U" + FIELD PERCCOPE +END + +CURRENCY S_FONDO 18 +BEGIN + PROMPT 1 5 "Valore fondo per commessa " + FIELD FONDO +END + +BUTTON DLG_OK 10 2 +BEGIN + PROMPT -13 -1 "" +END + +BUTTON DLG_CANCEL 10 2 +BEGIN + PROMPT -23 -1 "" +END + +BUTTON DLG_DELREC 10 2 +BEGIN + PROMPT -33 -1 "" +END + +ENDPAGE + +ENDMASK \ No newline at end of file diff --git a/ce/f145.dir b/ce/f145.dir new file mode 100755 index 000000000..d54ca77b0 --- /dev/null +++ b/ce/f145.dir @@ -0,0 +1,3 @@ +145 +0 +$salcecms|0|0|67|0|Fondi cespiti per commesse||| diff --git a/ce/f145.trr b/ce/f145.trr new file mode 100755 index 000000000..080c98601 --- /dev/null +++ b/ce/f145.trr @@ -0,0 +1,12 @@ +145 +7 +IDCESPITE|1|10|0|Codice cespite +CODES|2|4|0|Codice esercizio +NRIGA|2|3|0|N. riga +CODCMS|1|20|0|Codice commessa +PERCUTIL|4|6|2|Percentuale di utilizzo +PERCCOPE|4|6|2|Percentuale di copertura +FONDO|4|18|3|Valore fondo per commessa +2 +IDCESPITE+CODES+NRIGA| +CODES+IDCESPITE+NRIGA|