From fc80b842c82b9649ea46e137e519b0b2fbf1386c Mon Sep 17 00:00:00 2001 From: luca83 Date: Sat, 6 Sep 2008 08:04:00 +0000 Subject: [PATCH] Patch level : 10.0 Files correlati : Ricompilazione Demo : [ ] Commento : corretta la funzione per generare i codriga git-svn-id: svn://10.65.10.50/trunk@17177 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- lv/lv2100.cpp | 44 ++++++++++++++++++++++++++++++-------------- 1 file changed, 30 insertions(+), 14 deletions(-) diff --git a/lv/lv2100.cpp b/lv/lv2100.cpp index 9851a4f42..b4f8e0592 100755 --- a/lv/lv2100.cpp +++ b/lv/lv2100.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include #include @@ -88,7 +89,11 @@ bool TGenera_planning_app::destroy() return TApplication::destroy(); } -//funzione estrae dalla tabella dei planning tutte le righe comprese tra le due date indicate +//////////////////////////////////////////////////////////////// +////// METODI PER LA CANCELLAZIONE DEI PLANNING ////// +//////////////////////////////////////////////////////////////// + +//ELIMINA_PLANNING: funzione che estrae dalla tabella dei planning tutte le righe comprese tra le due date indicate bool TGenera_planning_app::elimina_planning(const TDate& dadata, const TDate& adata) const { //creo il recordset @@ -103,8 +108,8 @@ bool TGenera_planning_app::elimina_planning(const TDate& dadata, const TDate& ad return true; } -//funzione estrae dalla tabella dei planning tutte le righe comprese tra le due date indicate... -//...relative ad un itinerario specifico +//ELIMINA_PLANNING_ITINERARIO: funzione che estrae dalla tabella dei planning tutte le righe comprese tra... +//...le due date indicate relative ad un itinerario specifico bool TGenera_planning_app::elimina_planning_itinerario(const TDate& dadata, const TDate& adata, const long& coditi) const { //creo il recordset @@ -120,8 +125,8 @@ bool TGenera_planning_app::elimina_planning_itinerario(const TDate& dadata, cons return true; } -//funzione estrae dalla tabella dei planning tutte le righe comprese tra le due date indicate... -//...relative ad un cliente specifico +//ELIMINA_PLANNING_CLIENTE: funzione che estrae dalla tabella dei planning tutte le righe comprese tra +//...le due date indicate relative ad un cliente specifico bool TGenera_planning_app::elimina_planning_cliente(const TDate& dadata, const TDate& adata, const long& codcf) const { //creo il recordset @@ -137,7 +142,7 @@ bool TGenera_planning_app::elimina_planning_cliente(const TDate& dadata, const T return true; } -//funzione che elimina un recordset generato precedentemente +//KILL_PLANNING: funzione che elimina un recordset generato precedentemente bool TGenera_planning_app::kill_planning (TISAM_recordset& selrighe) const { TSystemisamfile rplan(LF_LVRCONSPLAN); //instanzio una relazione sul file LF_LVRCONSPLAN @@ -165,29 +170,33 @@ bool TGenera_planning_app::kill_planning (TISAM_recordset& selrighe) const return true; } -//funzione che restituisce il prossimo codriga per il planning della data interessata +//////////////////////////////////////////////////////////////// +////// METODI PER LA GENERAZIONE DEI PLANNING ////// +//////////////////////////////////////////////////////////////// + +//PROSSIMO_CODRIGA: funzione che restituisce il prossimo codriga per il planning della data interessata int TGenera_planning_app::prossimo_codriga(const TDate& data) { TString8 strcodplan; strcodplan << data.date2ansi(); - real* ptriga = (real*)_codriga.objptr(strcodplan); + real *ptriga = (real*)_codriga.objptr(strcodplan); if (ptriga == NULL) { //per ora memorizzo zero ptriga = new real; _codriga.add(strcodplan,ptriga); - //se esiste almeno una riga, memorizzo il codriga dell'ultima TISAM_recordset rplan("USE LVRCONSPLAN KEY 1\nFROM CODPLAN=#CODPLAN\nTO CODPLAN=#CODPLAN"); rplan.set_var("#CODPLAN",TVariant(strcodplan)); if (rplan.move_last()) *ptriga = rplan.get(LVRCONSPLAN_CODRIGA).as_real(); } - *ptriga++; //incremento il codriga interessato + *ptriga += UNO; //incremento il codriga interessato return ptriga->integer(); } +//CERCA_ULTIMA_CONSEGNA: questa funzione ricerca la data dell'ultima consegna fatta ad un certo cliente TDate TGenera_planning_app::cerca_ultima_consegna(long codcf, long coditi, const TDate& data) const { //instanzia un recordset di LVRCONSPLAN prendendo tutte le consegne fatte per un cliente su un certo... @@ -201,6 +210,8 @@ TDate TGenera_planning_app::cerca_ultima_consegna(long codcf, long coditi, const return data; } +//CONTA_CONSEGNE_MESE: questa funzione conta quante consegne sono state fatte ad un certo cliente +//dal primo del mese fino ad una certa data int TGenera_planning_app::conta_consegne_mese(long codcf, long coditi, const TDate& adata) const { TDate dadata = adata; @@ -216,8 +227,8 @@ int TGenera_planning_app::conta_consegne_mese(long codcf, long coditi, const TDa return rplan.items(); } -// Arrotonda per eccesso la data al giorno della settimana desiderato -// ggcons appartiene a [1..7] +//ARROTONDA_AL_GIORNO: questa funzione rrotonda per eccesso la data al giorno della settimana desiderato +//ggcons appartiene a [1..7] con 1 = lunedì -> 7 = domenica void TGenera_planning_app::arrotonda_al_giorno(TDate& data, const int ggcons) const { int delta = ggcons - data.wday(); @@ -229,6 +240,7 @@ void TGenera_planning_app::arrotonda_al_giorno(TDate& data, const int ggcons) co } } +//ELABORA_PASSAGGIO: questa funzione effettivamente genera il passaggio e lo slava nella tabella void TGenera_planning_app::elabora_passaggio(const TDate& dadata, const TDate& adata, const TISAM_recordset& pplan) { //dati recuperati dalla tabella dei passaggi per contratto: @@ -340,8 +352,10 @@ void TGenera_planning_app::elabora_passaggio(const TDate& dadata, const TDate& a //scrivi la chiave const long codplan = d.date2ansi(); //setta il codplan rplan.zero(); - rplan.put(LVRCONSPLAN_CODPLAN, codplan); - rplan.put(LVRCONSPLAN_CODRIGA, prossimo_codriga(d)); + rplan.put(LVRCONSPLAN_CODPLAN, codplan); + + int tmp = prossimo_codriga(d); + rplan.put(LVRCONSPLAN_CODRIGA, tmp); rplan.put(LVRCONSPLAN_DTCONS,d); //setta la data di consegna rplan.put(LVRCONSPLAN_CODITI,coditi); //setta il codice itinerario @@ -361,6 +375,8 @@ void TGenera_planning_app::elabora_passaggio(const TDate& dadata, const TDate& a } } +//TRANSFER: questo metodo elimina i planning già esistenti in modo da evitare conflitti +//e chiama la funzione ELABORA_PASSAGGIO bool TGenera_planning_app::transfer() { const TDate dadata = _msk->get(F_DADATA);