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
This commit is contained in:
luca83 2008-09-06 08:04:00 +00:00
parent 6b58b4b909
commit fc80b842c8

View File

@ -1,6 +1,7 @@
#include <applicat.h> #include <applicat.h>
#include <automask.h> #include <automask.h>
#include <progind.h> #include <progind.h>
#include <real.h>
#include <recarray.h> #include <recarray.h>
#include <recset.h> #include <recset.h>
@ -88,7 +89,11 @@ bool TGenera_planning_app::destroy()
return TApplication::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 bool TGenera_planning_app::elimina_planning(const TDate& dadata, const TDate& adata) const
{ {
//creo il recordset //creo il recordset
@ -103,8 +108,8 @@ bool TGenera_planning_app::elimina_planning(const TDate& dadata, const TDate& ad
return true; return true;
} }
//funzione estrae dalla tabella dei planning tutte le righe comprese tra le due date indicate... //ELIMINA_PLANNING_ITINERARIO: funzione che estrae dalla tabella dei planning tutte le righe comprese tra...
//...relative ad un itinerario specifico //...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 bool TGenera_planning_app::elimina_planning_itinerario(const TDate& dadata, const TDate& adata, const long& coditi) const
{ {
//creo il recordset //creo il recordset
@ -120,8 +125,8 @@ bool TGenera_planning_app::elimina_planning_itinerario(const TDate& dadata, cons
return true; return true;
} }
//funzione estrae dalla tabella dei planning tutte le righe comprese tra le due date indicate... //ELIMINA_PLANNING_CLIENTE: funzione che estrae dalla tabella dei planning tutte le righe comprese tra
//...relative ad un cliente specifico //...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 bool TGenera_planning_app::elimina_planning_cliente(const TDate& dadata, const TDate& adata, const long& codcf) const
{ {
//creo il recordset //creo il recordset
@ -137,7 +142,7 @@ bool TGenera_planning_app::elimina_planning_cliente(const TDate& dadata, const T
return true; 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 bool TGenera_planning_app::kill_planning (TISAM_recordset& selrighe) const
{ {
TSystemisamfile rplan(LF_LVRCONSPLAN); //instanzio una relazione sul file LF_LVRCONSPLAN 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; 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) int TGenera_planning_app::prossimo_codriga(const TDate& data)
{ {
TString8 strcodplan; TString8 strcodplan;
strcodplan << data.date2ansi(); strcodplan << data.date2ansi();
real* ptriga = (real*)_codriga.objptr(strcodplan); real *ptriga = (real*)_codriga.objptr(strcodplan);
if (ptriga == NULL) if (ptriga == NULL)
{ {
//per ora memorizzo zero //per ora memorizzo zero
ptriga = new real; ptriga = new real;
_codriga.add(strcodplan,ptriga); _codriga.add(strcodplan,ptriga);
//se esiste almeno una riga, memorizzo il codriga dell'ultima //se esiste almeno una riga, memorizzo il codriga dell'ultima
TISAM_recordset rplan("USE LVRCONSPLAN KEY 1\nFROM CODPLAN=#CODPLAN\nTO CODPLAN=#CODPLAN"); TISAM_recordset rplan("USE LVRCONSPLAN KEY 1\nFROM CODPLAN=#CODPLAN\nTO CODPLAN=#CODPLAN");
rplan.set_var("#CODPLAN",TVariant(strcodplan)); rplan.set_var("#CODPLAN",TVariant(strcodplan));
if (rplan.move_last()) if (rplan.move_last())
*ptriga = rplan.get(LVRCONSPLAN_CODRIGA).as_real(); *ptriga = rplan.get(LVRCONSPLAN_CODRIGA).as_real();
} }
*ptriga++; //incremento il codriga interessato *ptriga += UNO; //incremento il codriga interessato
return ptriga->integer(); 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 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... //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; 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 int TGenera_planning_app::conta_consegne_mese(long codcf, long coditi, const TDate& adata) const
{ {
TDate dadata = adata; TDate dadata = adata;
@ -216,8 +227,8 @@ int TGenera_planning_app::conta_consegne_mese(long codcf, long coditi, const TDa
return rplan.items(); return rplan.items();
} }
// Arrotonda per eccesso la data al giorno della settimana desiderato //ARROTONDA_AL_GIORNO: questa funzione rrotonda per eccesso la data al giorno della settimana desiderato
// ggcons appartiene a [1..7] //ggcons appartiene a [1..7] con 1 = lunedì -> 7 = domenica
void TGenera_planning_app::arrotonda_al_giorno(TDate& data, const int ggcons) const void TGenera_planning_app::arrotonda_al_giorno(TDate& data, const int ggcons) const
{ {
int delta = ggcons - data.wday(); 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) void TGenera_planning_app::elabora_passaggio(const TDate& dadata, const TDate& adata, const TISAM_recordset& pplan)
{ {
//dati recuperati dalla tabella dei passaggi per contratto: //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 //scrivi la chiave
const long codplan = d.date2ansi(); //setta il codplan const long codplan = d.date2ansi(); //setta il codplan
rplan.zero(); rplan.zero();
rplan.put(LVRCONSPLAN_CODPLAN, codplan); rplan.put(LVRCONSPLAN_CODPLAN, codplan);
rplan.put(LVRCONSPLAN_CODRIGA, prossimo_codriga(d));
int tmp = prossimo_codriga(d);
rplan.put(LVRCONSPLAN_CODRIGA, tmp);
rplan.put(LVRCONSPLAN_DTCONS,d); //setta la data di consegna rplan.put(LVRCONSPLAN_DTCONS,d); //setta la data di consegna
rplan.put(LVRCONSPLAN_CODITI,coditi); //setta il codice itinerario 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() bool TGenera_planning_app::transfer()
{ {
const TDate dadata = _msk->get(F_DADATA); const TDate dadata = _msk->get(F_DADATA);