Patch level : 10.0 patch 266

Files correlati     : lv0.exe. lv0300.msk, lv0500.msk, lv2.exe, lv2200.msk, tracciati record file 167 (LVRCONSPLAN)
Ricompilazione Demo : [ ]
Commento            :
0001206: Gestione divisa tra ordine di fermata e orario passaggio
Descrizione: Aggiungere un dato in configurazione che indichi se si dovrà utilizzare il campo ordine di fermata o orario passaggio.
In inserimento passaggi per contratto lasciare visibile ma non imputabile il campo non legato alla configurazione.
In gestione planning manuale ordinare in base al campo gestito.


git-svn-id: svn://10.65.10.50/trunk@18586 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca83 2009-03-23 12:34:33 +00:00
parent d5c8c52fbf
commit eeec2a7a70
11 changed files with 220 additions and 83 deletions

View File

@ -1,3 +1,3 @@
167
0
$lvrconsplan|||118|0|Righe planning consegne|||
$lvrconsplan|||123|0|Righe planning consegne|||

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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)

View File

@ -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
#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

View File

@ -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

View File

@ -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"