From 3702e7711bec359838a007e50d6121c947870c47 Mon Sep 17 00:00:00 2001 From: luca <luca@c028cbd2-c16b-5b4b-a496-9718f37d4682> Date: Thu, 22 Apr 2010 15:36:37 +0000 Subject: [PATCH] Patch level : Files correlati : Ricompilazione Demo : [ ] Commento : git-svn-id: svn://10.65.10.50/trunk@20371 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ps/ps1001300.cpp | 85 +++++++++++++++++++++++++++++++++++++++++++---- ps/ps1001300a.uml | 1 + 2 files changed, 79 insertions(+), 7 deletions(-) diff --git a/ps/ps1001300.cpp b/ps/ps1001300.cpp index 89786ee2a..3d470cc81 100755 --- a/ps/ps1001300.cpp +++ b/ps/ps1001300.cpp @@ -1,12 +1,14 @@ #include <applicat.h> #include <automask.h> #include <config.h> +#include <defmask.h> #include <progind.h> #include <recarray.h> #include <textset.h> #include "../ca/calib01.h" #include "../ca/calib02.h" +#include "../ca/commesse.h" #include "../ca/movana.h" #include "../ca/rmovana.h" @@ -24,8 +26,9 @@ protected: virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); int carica_rmovana(); - bool one_checked() const; //controlla se nella colonna dei check ce ne � almeno 1 checkato (on_field) - void check_all(const bool checked); //checka-dechecka la colonna dei check (on_field) + bool one_checked() const; //(on_field) controlla se nella colonna dei check ce ne � almeno 1 checkato + void check_all(const bool checked); //(on_field) checka-dechecka la colonna dei check + void save_commessa(); //(on_field) salva i cambiamenti di date della commessa esaminata public: TVariazione_budget_mask(); @@ -135,12 +138,38 @@ bool TVariazione_budget_mask::on_field_event(TOperable_field& o, TField_event e, sf_righe.force_update(); } break; + case DLG_SAVEREC: + if (e == fe_button && check_fields()) + { + save_commessa(); + } + break; default: break; } return true; } +/////////////////////////////////// +// Metodi della on_field_event +/////////////////////////////////// +//salva la commessa con le eventuali modifiche effettuate sulle date +void TVariazione_budget_mask::save_commessa() +{ + TLocalisamfile commesse(LF_COMMESSE); + commesse.put(COMMESSE_CODCMS, get(F_CODCMS)); + int err = commesse.read(_isequal, _lock); + if (err == NOERR) + { + commesse.put(COMMESSE_DATAINIZIO, get_date(F_DATAINICMS)); + commesse.put(COMMESSE_DATAFINE, get_date(F_DATAFINECMS)); + commesse.put(COMMESSE_PROROGA, get_bool(F_PROROGATA)); + commesse.put(COMMESSE_DATAPROR, get_date(F_DATAPRORCMS)); + //solo la rewrite perch� la commessa ovviamente esiste gi� + commesse.rewrite(); + } +} + //controlla sulla colonna delle spunte se almeno una � checkata bool TVariazione_budget_mask::one_checked() const @@ -166,6 +195,49 @@ void TVariazione_budget_mask::check_all(const bool checked) sf_righe.force_update(); } +//ordina per numreg/numrig (long+int) +static int compare_by_numrig(TSheet_field & s, int r1, int r2) +{ + TToken_string& s1 = s.row(r1); + TToken_string& s2 = s.row(r2); + + //prima guarda il numreg.. + long c10 = s1.get_long(11); + long c20 = s2.get_long(11); + int cmp = c10 - c20; + //..poi il numrig + if (cmp == 0) + { + int c11 = s1.get_int(12); + int c21 = s2.get_int(12); + cmp = c11 - c21; + } + + return cmp; +} + +//ordina le righe per sede/fase (string+string) +static int compare_by_fase(TSheet_field & s, int r1, int r2) +{ + TToken_string& s1 = s.row(r1); + TToken_string& s2 = s.row(r2); + + TToken_string c1; + c1.add(s1.get(1)); + c1.add(s1.get(2)); + + TToken_string c2; + c2.add(s2.get(1)); + c2.add(s2.get(2)); + + int cmp = c1.compare(c2); + + if (cmp == 0) + cmp = compare_by_numrig(s, r1, r2); + + return cmp; +} + int TVariazione_budget_mask::carica_rmovana() { TString query; @@ -249,12 +321,11 @@ int TVariazione_budget_mask::carica_rmovana() row.add(rmovana.get(RMOVANA_NUMRIG).as_int(), 12); const TString& tipomov = rmovana.get("MOVANA."MOVANA_TIPOMOV).as_string(); row.add(tipomov, 13); + } //for(bool ok.move.... - //disabilita tutti i campi ma non l'intera riga, perch� deve poter cliccare sul numero riga.. - //..per procedere alle operazioni di pareggio - //if (tipomov != "V") - //sf_righe.disable_cell(sf_righe.items() - 1, -1); - } + //prima di riempire lo sheet a video ordina le righe per sede/fase/numreg/numrig + sf_righe.sort(compare_by_fase); + //e poi aggiorna il video! sf_righe.force_update(); return sf_righe.items(); diff --git a/ps/ps1001300a.uml b/ps/ps1001300a.uml index 34b5b02cd..470dfee48 100755 --- a/ps/ps1001300a.uml +++ b/ps/ps1001300a.uml @@ -108,6 +108,7 @@ END DATE F_DATAPRORCMS BEGIN PROMPT 57 2 "Proroga " + CHECKTYPE REQUIRED END GROUPBOX DLG_NULL 78 3