diff --git a/ve/ve0200.cpp b/ve/ve0200.cpp index 5e047fd36..e08d14806 100755 --- a/ve/ve0200.cpp +++ b/ve/ve0200.cpp @@ -8,6 +8,14 @@ #include #endif +#ifndef __MSKSHEET_H +#include +#endif + +#ifndef __RELATION_H +#include +#endif + #ifndef __TABUTIL_H #include #endif @@ -118,6 +126,35 @@ bool TConf_vendite::preprocess_config (TMask& mask, TConfig& config) mask.set_handler(F_EX_PERCIVA1,check_fields_iva); // Basta su uno che controlla tutti all'uscita della maschera } break; + case 8: + { + TSheet_field& sf = mask.sfield(F_DOCS); //prende lo sheet.. + const TMask& sm = sf.sheet_mask(); //..poi la maschera di sheet.. + bool found = true; + for (int r = 0; found; r++) //finchè ci sono valori c'è speranza!.. + { //Ovvero legge i valori finchè ce ne sono e non sono nulli aggiornando i.. + FOR_EACH_MASK_FIELD(sm, j, f) //..campi dello sheet + { + const TFieldref* fr = f->field(); + if (fr != NULL) + { + const TString& value = get_config()->get(fr->name(), NULL, r); + if (value.empty() && f->dlg() == 101) + { + found = false; + break; + } + else + { + sf.row(r).add(value, sf.cid2index(f->dlg())); + } + } + sf.check_row(sf.items() - 1); //metodo per ricaricare le descrizioni delle numerazioni + } //FOR_EACH_MASK_FIELD + } //for(int r=0... + } + break; + default: break; } @@ -162,8 +199,31 @@ bool TConf_vendite::postprocess_config (TMask& mask, TConfig& config) } break; - case 8: + case 8: //ve0200h.uml (fido bau!) { + //sporco trucco perchè la postprocess_config salverebbe tutto in ogni modo (vedi file confapp.cpp e rabbrividisci!).. + //..mentre qui si vuole salvare solo in caso di CONFERMA da parte dell'utonto + const KEY k = mask.last_key(); + bool tosave = k == K_ENTER || k == K_SAVE; + if (tosave) + { + TSheet_field& sf = mask.sfield(F_DOCS); //prende lo sheet.. + const TMask& sm = sf.sheet_mask(); //..poi la maschera di sheet.. + FOR_EACH_SHEET_ROW(sf, j, row) //per ogni riga dello sheet deve salvare SOLO i campi che hanno un field + { + short id = 101; + FOR_EACH_TOKEN((*row), tok) + { + const TFieldref* fr = sm.field(id++).field(); //settatore dei valori sul .ini + if (fr != NULL) + config.set(fr->name(), tok, NULL, true, j); + } + } + //gestione della eliminazione: finito il giro sulle righe presenti (FOR_EACH_SHEET_ROW) ogni altro campo presente.. + //..eventualmente sul config risulta di troppo e viene giustamente accoppato + const TFieldref* fr = sm.field(101).field(); + config.remove(fr->name(), sf.items()); + } } break; diff --git a/ve/ve0200h.uml b/ve/ve0200h.uml index 7d831ef49..a97e9ea46 100755 --- a/ve/ve0200h.uml +++ b/ve/ve0200h.uml @@ -16,16 +16,18 @@ ENDPAGE PAGE "Configurazione calcolo fido clienti" -1 -1 78 10 -NUMBER F_DANGERDAYS 2 +NUMBER F_RISKDAYS 2 BEGIN PROMPT 1 2 "Giorni di rischio " FLAGS "U" + FIELD FIDO_RISKDAYS END -NUMBER F_SAFEPERC 6 2 +NUMBER F_PERCTOLL 6 2 BEGIN PROMPT 1 3 "% di tolleranza " FLAGS "U" + FIELD FIDO_PERCTOLL END TEXT DLG_NULL @@ -33,14 +35,14 @@ BEGIN PROMPT 1 5 "@bNumerazioni/Tipi documenti da considerare" END -SPREADSHEET F_DOCS -1 4 +SPREADSHEET F_DOCS -1 -1 BEGIN PROMPT 1 6 "" ITEM "Numerazione" ITEM "Descrizione@50" ITEM "Tipo" ITEM "Stato" - ITEM "Scarico" + ITEM "Doc. a residuo" END ENDPAGE @@ -60,6 +62,7 @@ BEGIN OUTPUT SN_DESCR S0 CHECKTYPE REQUIRED FLAGS "UZ" + FIELD FIDO_NUM END STRING SN_DESCR 50 @@ -76,23 +79,26 @@ STRING SN_TIPO 4 BEGIN PROMPT 1 3 "Tipo " USE %TIP - INPUT CODTAB F_TIPODOC + INPUT CODTAB SN_TIPO DISPLAY "Codice" CODTAB DISPLAY "Descrizione@50" S0 OUTPUT SN_TIPO CODTAB CHECKTYPE REQUIRED - FLAG "UPD" + FLAG "UP" + FIELD FIDO_TIP END NUMBER SN_STATO 1 BEGIN PROMPT 1 4 "Stato " CHECKTYPE REQUIRED + FIELD FIDO_STA END BOOLEAN SN_RESIDUO BEGIN PROMPT 1 5 "Documento a residuo " + FIELD FIDO_RES END BUTTON DLG_OK 10 2 diff --git a/ve/veconf.h b/ve/veconf.h index 925098547..9e0d842d6 100755 --- a/ve/veconf.h +++ b/ve/veconf.h @@ -223,8 +223,8 @@ #define F_EAN8CIN 174 // Campi per ve0200h.uml -#define F_DANGERDAYS 201 -#define F_SAFEPERC 202 +#define F_RISKDAYS 201 +#define F_PERCTOLL 202 #define F_DOCS 203 #define SN_CODNUM 101