diff --git a/lv/f167.dir b/lv/f167.dir index b4ac53505..613911983 100755 --- a/lv/f167.dir +++ b/lv/f167.dir @@ -1,3 +1,3 @@ 167 0 -$lvrconsplan|||118|0|Righe planning consegne||| +$lvrconsplan|||123|0|Righe planning consegne||| diff --git a/lv/f167.trr b/lv/f167.trr index 60d0fb48b..ac9fdd847 100755 --- a/lv/f167.trr +++ b/lv/f167.trr @@ -1,10 +1,11 @@ 167 -23 +24 CODPLAN|3|8|0|Codice planning CODRIGA|2|5|0|Codice riga del planning DTCONS|5|8|0|Data di consegna CODITI|9|3|0|Codice itinerario ORDFER|2|2|0|Ordine di fermata +ORARPRV|1|5|0|Ora prevista di passaggio CODCF|3|6|0|Codice del cliente CODCONT|3|6|0|Codice del contratto GGCONS|2|1|0|Giorno di consegna diff --git a/lv/lv0300a.h b/lv/lv0300a.h index eb88d5ce4..bf8d7301d 100755 --- a/lv/lv0300a.h +++ b/lv/lv0300a.h @@ -51,15 +51,17 @@ #define F_UNICONT 234 #define F_AUTGIRI 235 -#define F_DATAFISSA 236 -#define F_AGGCONG 237 -#define F_PERARR 238 -#define F_RIFOR 239 -#define F_ARTCANFIS 240 -#define F_GESTSACA 241 -#define F_ALMANAC 242 -#define F_USEINDSP 243 -#define F_VALFIX 244 +#define F_ORDGIRI 236 +#define F_DATAFISSA 237 +#define F_AGGCONG 238 +#define F_PERARR 239 +#define F_RIFOR 240 +#define F_ARTCANFIS 241 +#define F_GESTSACA 242 +#define F_ALMANAC 243 +#define F_USEINDSP 244 +#define F_CODARTFIX 245 +#define F_TIPOPR 246 #define S_CODNUM_RIT 101 #define S_TIPODOC_RIT 102 diff --git a/lv/lv0300a.uml b/lv/lv0300a.uml index e106496d0..8f028585d 100755 --- a/lv/lv0300a.uml +++ b/lv/lv0300a.uml @@ -410,14 +410,14 @@ ENDPAGE PAGE "Parametri" 0 0 0 0 -GROUPBOX DLG_NULL 78 6 +GROUPBOX DLG_NULL 78 5 BEGIN - PROMPT 1 1 "@bMagazzini" + PROMPT 1 0 "@bMagazzini" END STRING F_CODMAG 4 BEGIN - PROMPT 2 2 "Magazzino " + PROMPT 2 1 "Magazzino " FIELD CODMAG USE MAG SELECT CODTAB[4,5]=="" FLAG "U" @@ -432,13 +432,13 @@ END STRING F_DESMAG 50 BEGIN - PROMPT 20 2 "" + PROMPT 20 1 "" FLAGS "D" END STRING F_CODMAGN 3 BEGIN - PROMPT 2 3 "Dep. nuovo " + PROMPT 2 2 "Dep. nuovo " HELP "Codice deposito del nuovo" FIELD CODMAGN KEY 1 @@ -457,14 +457,14 @@ END STRING F_DESMAGN 50 BEGIN - PROMPT 20 3 "" + PROMPT 20 2 "" HELP "Descrizione Magazzino" FLAGS "D" END STRING F_CODMAGC 3 BEGIN - PROMPT 2 4 "Dep. circ. " + PROMPT 2 3 "Dep. circ. " HELP "Codice deposito del circolante" FIELD CODMAGC KEY 1 @@ -483,19 +483,19 @@ END STRING F_DESMAGC 50 BEGIN - PROMPT 20 4 "" + PROMPT 20 3 "" HELP "Descrizione Magazzino" FLAGS "D" END GROUPBOX DLG_NULL 78 5 BEGIN - PROMPT 1 7 "@bPercorsi file" + PROMPT 1 5 "@bPercorsi file" END STRING F_PATH_CON 256 50 BEGIN - PROMPT 2 8 "Cartella contapezzi " + PROMPT 2 6 "Cartella contapezzi " DSELECT CHECKTYPE NORMAL FIELD PathContapezzi @@ -503,7 +503,7 @@ END STRING F_PATH_MAN 256 50 BEGIN - PROMPT 2 9 "Cartella mangano " + PROMPT 2 7 "Cartella mangano " DSELECT CHECKTYPE NORMAL FIELD PathMangano @@ -511,50 +511,69 @@ END STRING F_PATH_LAVA 256 50 BEGIN - PROMPT 2 10 "Cartella lavacontinua " + PROMPT 2 8 "Cartella lavacontinua " DSELECT CHECKTYPE NORMAL FIELD PathLavacontinua END -GROUPBOX DLG_NULL 78 6 +GROUPBOX DLG_NULL 78 3 BEGIN - PROMPT 1 12 "@bOpzioni documenti" + PROMPT 1 10 "@bOpzioni contratti" END BOOLEAN F_UNICONT BEGIN - PROMPT 2 13 "Numera i contratti per ditta" + PROMPT 2 11 "Numera i contratti per ditta" FIELD UniCont END +GROUPBOX DLG_NULL 78 3 +BEGIN + PROMPT 1 13 "@bOpzioni Giri" +END + BOOLEAN F_AUTGIRI BEGIN - PROMPT 35 13 "Generazione automatica giri" + PROMPT 2 14 "Generazione automatica giri" FIELD Autgiri END +LISTBOX F_ORDGIRI 1 22 +BEGIN + PROMPT 35 14 "Ordina giri per " + ITEM "0|Ordine di generazione" + ITEM "1|Ordine di fermata" + ITEM "2|Orario di passaggio" + FIELD Ordgir +END + +GROUPBOX DLG_NULL 78 5 +BEGIN + PROMPT 1 16 "@bOpzioni Documenti" +END + BOOLEAN F_DATAFISSA BEGIN - PROMPT 2 14 "Data documenti fissa" + PROMPT 2 17 "Data documenti fissa" FIELD Datafissa END BOOLEAN F_AGGCONG BEGIN - PROMPT 35 14 "Aggiorna conguaglio su modifiche manuali" + PROMPT 35 17 "Aggiorna conguaglio su modifiche manuali" FIELD Aggcong END NUMBER F_PERARR 3 BEGIN - PROMPT 2 15 "Percentuale per il calcolo dell'arrotondamento " + PROMPT 2 18 "Percentuale per il calcolo dell'arrotondamento " FIELD Perarr END -STRING F_CODARTFIX 20 +STRING F_CODARTFIX 8 BEGIN - PROMPT 2 16 "Codice articolo per forfait a valore fisso " + PROMPT 2 19 "Cod.art. forfait a val.fisso " FIELD Codartfix KEY 1 FLAG "UG" @@ -565,9 +584,9 @@ BEGIN OUTPUT F_CODARTFIX CODART END -LISTBOX F_TIPOPR 1 8 +LISTBOX F_TIPOPR 1 19 BEGIN - PROMPT 2 17 "Tipo di prezzo" + PROMPT 43 19 "Tipo prezzo" ITEM "0|Prezzo da contratto" ITEM "1|Prezzo da bolla" FIELD Tipopr @@ -575,30 +594,30 @@ END GROUPBOX DLG_NULL 78 4 BEGIN - PROMPT 1 18 "@bOpzioni articoli" + PROMPT 1 21 "@bOpzioni articoli" END BOOLEAN F_RIFOR BEGIN - PROMPT 2 19 "Rigo forfait" + PROMPT 2 22 "Rigo forfait" FIELD Rifor END BOOLEAN F_ARTCANFIS BEGIN - PROMPT 30 19 "Articolo a canone fisso" + PROMPT 30 22 "Articolo a canone fisso" FIELD Artcanfis END BOOLEAN F_GESTSACA BEGIN - PROMPT 2 20 "Gestione sacchi/carrello" + PROMPT 2 23 "Gestione sacchi/carrello" FIELD Gestsaca END BOOLEAN F_USEINDSP BEGIN - PROMPT 30 20 "Utilizza indirizzo di spedizione su contratto" + PROMPT 30 23 "Utilizza indirizzo di spedizione su contratto" FIELD Useindsp END diff --git a/lv/lv0500.cpp b/lv/lv0500.cpp index 61ad742a7..820297d4f 100755 --- a/lv/lv0500.cpp +++ b/lv/lv0500.cpp @@ -47,6 +47,13 @@ bool TPass_plan_contr_mask::on_field_event(TOperable_field& o, TField_event e, l { switch (o.dlg()) { + case F_ORDGIRI: + if (e == fe_init) + { + const int ordinaper = ini_get_int(CONFIG_DITTA, "lv", "Ordgir"); + o.set(ordinaper); + } + break; case F_PASPLAN: switch (e) { @@ -55,12 +62,12 @@ bool TPass_plan_contr_mask::on_field_event(TOperable_field& o, TField_event e, l break; default: break; } - break; + break; case F_S_DASTAG: case F_S_ASTAG: if (e == fe_modify) sistema_data(o); - break; + break; default: break; } @@ -262,7 +269,7 @@ void TPass_plan_contr::init_query_mode(TMask& m) bool TPass_plan_contr::user_create() { _rel = new TRelation(LF_LVCONDV); - _mask = new TPass_plan_contr_mask; + _mask = new TPass_plan_contr_mask; //se gli sono stati passati pił parametri, allora setto le variabili globali _codcli e _codcont... //...con i parametri desiderati, se no li setto a zero diff --git a/lv/lv0500a.h b/lv/lv0500a.h index 27acd0d73..2ac515f1b 100755 --- a/lv/lv0500a.h +++ b/lv/lv0500a.h @@ -5,8 +5,9 @@ #define F_CODCONT 205 #define F_VALIDA 206 #define F_VALIA 207 -#define F_PASPLAN 208 -#define F_PERSOSP 209 +#define F_ORDGIRI 208 +#define F_PASPLAN 209 +#define F_PERSOSP 210 //Campi sheet dei passaggi planning per contratto #define F_S_GGCONS 101 #define F_S_STRGGCONS 102 diff --git a/lv/lv0500a.uml b/lv/lv0500a.uml index 0e796f2ab..d02008608 100755 --- a/lv/lv0500a.uml +++ b/lv/lv0500a.uml @@ -6,7 +6,7 @@ ENDPAGE PAGE "Passaggi per Contratto" -1 -1 78 10 -GROUPBOX DLG_NULL 76 4 +GROUPBOX DLG_NULL 76 5 BEGIN PROMPT 1 1 "@bPassaggi per Contratto" END @@ -74,9 +74,18 @@ BEGIN FLAGS "D" END +LISTBOX F_ORDGIRI 1 25 +BEGIN + PROMPT 2 4 "Criterio ordinamento giri " + ITEM "0|Ordine di generazione" + ITEM "1|Ordine di fermata" + ITEM "2|Orario di passaggio" + FLAGS "DG" +END + SPREADSHEET F_PASPLAN 0 7 BEGIN - PROMPT 0 5 "Passaggi per contratto" + PROMPT 0 7 "Passaggi per contratto" ITEM "Num.@4" ITEM "Giorno@9" ITEM "Cod.\nitinerario@11" @@ -98,7 +107,7 @@ END SPREADSHEET F_PERSOSP 0 7 BEGIN - PROMPT 0 13 "Periodi di sospensione" + PROMPT 0 15 "Periodi di sospensione" ITEM "Tipo" ITEM "Data\ninizio" ITEM "Data\nfine" diff --git a/lv/lv2200.cpp b/lv/lv2200.cpp index 9715838ef..34b53d233 100755 --- a/lv/lv2200.cpp +++ b/lv/lv2200.cpp @@ -36,6 +36,69 @@ public: TGestione_planning_mask (const char* name) : TAutomask(name) {} }; +static int sort_by_stop(TSheet_field& sheet, int r1, int r2) +{ + TToken_string& row1 = sheet.row(r1); + TToken_string& row2 = sheet.row(r2); + + const TDate d1 = row1.get(0); + const TDate d2 = row2.get(0); + + int dif = d1 - d2; + if (dif == 0) + { + dif = row1.get_int(2) - row2.get_int(2); + + if (dif == 0) + dif = row1.get_int(3) - row2.get_int(3); + } + + return dif; +} + +static int sort_by_time(TSheet_field& sheet, int r1, int r2) +{ + TToken_string& row1 = sheet.row(r1); + TToken_string& row2 = sheet.row(r2); + + const TDate d1 = row1.get(0); + const TDate d2 = row2.get(0); + + int dif = d1 - d2; + if (dif == 0) + { + dif = row1.get_int(2) - row2.get_int(2); + + if (dif == 0) + { + int time1; + int time2; + TString8 orario; + TString4 tmp; + + //converto in numero il primo orario + orario = row1.get(4); + + tmp = orario.mid(0,2); + time1 = atoi(tmp) * 100; + tmp = orario.mid(3,2); + time1 += atoi(tmp); + + //converto in numero il secondo orario + orario = row2.get(4); + + tmp = orario.mid(0,2); + time2 = atoi(tmp) * 100; + tmp = orario.mid(3,2); + time2 += atoi(tmp); + + dif = time1 - time2; + } + } + + return dif; +} + //FILL_SHEET: questo metodo si occupa di riempire lo sheet dinamicamente in base ai parametri che l'utente decide void TGestione_planning_mask::fill_sheet() { @@ -102,6 +165,14 @@ void TGestione_planning_mask::fill_sheet() } sheet.check_row(sheet.items()-1); //fa fare alla maschera la decodifica dei codici e aggiorna la TToken_string } + + switch (ini_get_int(CONFIG_DITTA, "lv", "Ordgir")) + { + case 1: sheet.sort(sort_by_stop); break; + case 2: sheet.sort(sort_by_time); break; + default: break; + } + sheet.force_update(); } @@ -249,10 +320,10 @@ void TGestione_planning_mask::aggiorna_plan() //se viene modificato un periodo di sospensione e/o una modalitą di passaggio... //...e/o un codice itinerario su una riga, e/o la frequenza di consegne... - //...e/o l'ordine di fermata, devo fare la rewrite di quella riga + //...e/o l'ordine di fermata, e/o l'ora di consegna, devo fare la rewrite di quella riga //ATTENZIONE: la modifica di un itinerario implica anche la modifica di autista e mezzo... //...mettendo quelli previsti per il nuovo itinerario - if (changed(_rigaoriginale,rigamodificata,F_S_PERSOSPVAR) || changed(_rigaoriginale,rigamodificata,F_S_MODPASS) || changed(_rigaoriginale,rigamodificata,F_S_ITI) || changed(_rigaoriginale,rigamodificata,F_S_FREQ) || changed(_rigaoriginale,rigamodificata,F_S_ORDFER)) + if (changed(_rigaoriginale,rigamodificata,F_S_PERSOSPVAR) || changed(_rigaoriginale,rigamodificata,F_S_MODPASS) || changed(_rigaoriginale,rigamodificata,F_S_ITI) || changed(_rigaoriginale,rigamodificata,F_S_FREQ) || changed(_rigaoriginale,rigamodificata,F_S_ORDFER) || changed(_rigaoriginale,rigamodificata,F_S_ORA)) dorewrite = true; //se viene modificato un autista e/o un mezzo devo fare la rewrite di quella riga... @@ -453,6 +524,13 @@ bool TGestione_planning_mask::on_field_event(TOperable_field& o, TField_event e, fill_sheet(); } break; + case F_ORDGIRI: + if (e == fe_init) + { + const int ordinaper = ini_get_int(CONFIG_DITTA, "lv", "Ordgir"); + o.set(ordinaper); + } + break; //analisi delle operazioni sullo sheet case F_PLAN: switch (e) diff --git a/lv/lv2200a.h b/lv/lv2200a.h index bc2ac6da1..b56661ef9 100755 --- a/lv/lv2200a.h +++ b/lv/lv2200a.h @@ -7,26 +7,28 @@ #define F_DESCRITI 204 #define F_CODCF 205 #define F_RAGSOCCLI 206 -#define F_PLAN 207 +#define F_ORDGIRI 207 +#define F_PLAN 208 //campi dello sheet #define F_S_BOLLA 100 #define F_S_DATA 101 #define F_S_GIORNO 102 #define F_S_ITI 103 #define F_S_ORDFER 104 -#define F_S_CODCF 105 -#define F_S_RAGSOCCLI 106 -#define F_S_CODCONT 107 -#define F_S_FREQ 108 -#define F_S_MODPASS 109 -#define F_S_CODAUT 110 +#define F_S_ORA 105 +#define F_S_CODCF 106 +#define F_S_RAGSOCCLI 107 +#define F_S_CODCONT 108 +#define F_S_FREQ 109 +#define F_S_MODPASS 110 +#define F_S_CODAUT 111 #define F_S_DESAUT 998 -#define F_S_CODMEZ 111 +#define F_S_CODMEZ 112 #define F_S_DESMEZ 999 -#define F_S_ANNO 112 -#define F_S_CODNUM 113 -#define F_S_NDOC 114 -#define F_S_PASSTD 115 -#define F_S_PERSOSP 116 -#define F_S_PERSOSPVAR 117 -#define F_S_RIGA 118 \ No newline at end of file +#define F_S_ANNO 113 +#define F_S_CODNUM 114 +#define F_S_NDOC 115 +#define F_S_PASSTD 116 +#define F_S_PERSOSP 117 +#define F_S_PERSOSPVAR 118 +#define F_S_RIGA 119 \ No newline at end of file diff --git a/lv/lv2200a.uml b/lv/lv2200a.uml index f76a21c81..d60745463 100755 --- a/lv/lv2200a.uml +++ b/lv/lv2200a.uml @@ -31,7 +31,7 @@ ENDPAGE PAGE "Visualizzazione e modifica giri" -1 -1 76 20 -GROUPBOX DLG_NULL 76 5 +GROUPBOX DLG_NULL 76 6 BEGIN PROMPT 1 1 "@bDati del giro" END @@ -107,13 +107,23 @@ BEGIN CHECKTYPE NORMAL END +LISTBOX F_ORDGIRI 1 25 +BEGIN + PROMPT 2 5 "Criterio ordinamento giri " + ITEM "0|Ordine di generazione" + ITEM "1|Ordine di fermata" + ITEM "2|Orario di passaggio" + FLAGS "DG" +END + SPREADSHEET F_PLAN BEGIN - PROMPT 0 6 "Giri" + PROMPT 0 7 "Giri" ITEM "Data" - ITEM "Giorno" - ITEM "Itinerario" - ITEM "Ordine\nfermata" + ITEM "Giorno@10" + ITEM "Itinerario@11" + ITEM "Ordine\nfermata@8" + ITEM "Ora\nprevista@9" ITEM "Codice\nCliente@6" ITEM "Ragione sociale@50" ITEM "Contratto" @@ -133,9 +143,9 @@ END ENDPAGE ENDMASK -PAGE "Giri" -1 -1 78 20 +PAGE "Giri" -1 -1 80 20 -GROUPBOX DLG_NULL 76 4 +GROUPBOX DLG_NULL 78 4 BEGIN PROMPT 1 1 "@bDati giro" END @@ -149,13 +159,13 @@ END STRING F_S_GIORNO 10 BEGIN - PROMPT 20 2 "Giorno " + PROMPT 19 2 "Giorno " FLAG "D" END NUMBER F_S_ITI 3 BEGIN - PROMPT 40 2 "Itinerario " + PROMPT 44 2 "Itinerario " FLAGS "Z" FIELD CODITI USE &ITI @@ -174,7 +184,7 @@ END NUMBER F_S_RIGA 5 BEGIN - PROMPT 60 2 "Riga " + PROMPT 67 2 "Riga " FLAGS "DG" MESSAGE EMPTY ENABLE,F_S_CODCONT MESSAGE DISABLE,F_S_CODCONT @@ -185,14 +195,21 @@ END NUMBER F_S_ORDFER 3 BEGIN FLAGS "U" - PROMPT 2 3 "Ordine ferm. " + PROMPT 2 3 "Ordine fer. " FIELD ORDFER CHECKTYPE NORMAL END +STRING F_S_ORA 5 +BEGIN + PROMPT 19 3 "Ora arrivo " + PICTURE "@@:@@" + FIELD ORARPRV +END + NUMBER F_S_FREQ 2 BEGIN - PROMPT 54 3 "Freq. cons. " + PROMPT 61 3 "Freq. cons. " USE &FRQ INPUT CODTAB F_S_FREQ DISPLAY "Codice " CODTAB @@ -205,7 +222,7 @@ END LIST F_S_MODPASS 10 BEGIN - PROMPT 24 3 "Mod. di pass. " + PROMPT 38 3 "Mod. pas. " ITEM "C|Consegna" ITEM "R|Ritiro" ITEM "E|Entrambi" @@ -213,7 +230,7 @@ BEGIN END -GROUPBOX DLG_NULL 76 4 +GROUPBOX DLG_NULL 78 4 BEGIN PROMPT 1 5 "@bDati cliente" END @@ -257,7 +274,7 @@ BEGIN CHECKTYPE REQUIRED END -GROUPBOX DLG_NULL 76 4 +GROUPBOX DLG_NULL 78 4 BEGIN PROMPT 1 9 "@bDettagli trasporto" END @@ -314,26 +331,26 @@ END GROUPBOX DLG_NULL 20 5 BEGIN - PROMPT 56 13 "@bDati bolla associata" + PROMPT 59 13 "@bDati bolla associata" END NUMBER F_S_ANNO 4 BEGIN - PROMPT 57 14 "Anno doc. " + PROMPT 60 14 "Anno doc. " FIELD ANNO FLAG "D" END STRING F_S_CODNUM 4 BEGIN - PROMPT 57 15 "Documento " + PROMPT 60 15 "Documento " FIELD CODNUM FLAG "D" END NUMBER F_S_NDOC 7 BEGIN - PROMPT 57 16 "Numero " + PROMPT 60 16 "Numero " FIELD NDOC FLAG "DG" MESSAGE EMPTY DISABLE,F_S_BOLLA diff --git a/lv/lvrconsplan.h b/lv/lvrconsplan.h index 18ecff278..8428c71e3 100755 --- a/lv/lvrconsplan.h +++ b/lv/lvrconsplan.h @@ -6,6 +6,7 @@ #define LVRCONSPLAN_DTCONS "DTCONS" #define LVRCONSPLAN_CODITI "CODITI" #define LVRCONSPLAN_ORDFER "ORDFER" +#define LVRCONSPLAN_ORARPRV "ORARPRV" #define LVRCONSPLAN_CODCF "CODCF" #define LVRCONSPLAN_CODCONT "CODCONT" #define LVRCONSPLAN_GGCONS "GGCONS"