Patch level :10.0 lavanderina
Files correlati : Ricompilazione Demo : [ ] Commento : git-svn-id: svn://10.65.10.50/trunk@17161 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
ac31c1f337
commit
6901596ed5
@ -1,3 +1,3 @@
|
||||
164
|
||||
0
|
||||
$lvpasplan|||99|0|Tabella passaggi planning per contratto|||
|
||||
$lvpasplan|4|4|99|0|Tabella passaggi planning per contratto|||
|
||||
|
10
lv/f164.trr
10
lv/f164.trr
@ -1,20 +1,20 @@
|
||||
164
|
||||
16
|
||||
CODCF|3|6|0|Codice identificativo di un cliente
|
||||
CODCONT|2|6|0|Codice identificativo di un contratto
|
||||
CODCONT|3|6|0|Codice identificativo di un contratto
|
||||
CODITI|1|3|0|Codice dell'itinerario
|
||||
GGCONS|2|1|0|Giorno di consegna
|
||||
ORDFERM|2|3|0|Indica l'ordine di fermata dell'autista
|
||||
FREQ|1|2|0|Codice per il calcolo delle consegne
|
||||
MODPASS|1|1|0|Indica la modalità di passaggio
|
||||
FLSTAG|8|1|0|Flag di stagionalità
|
||||
ORARPRV|10|6|0|Ora di arrivo prevista
|
||||
ORARPRV|1|5|0|Ora di arrivo prevista
|
||||
UTCREAZ|1|16|0|Utente d'inserimento
|
||||
DTCREAZ|5|8|0|Data d'inserimento
|
||||
ORCREAZ|10|6|Ora d'inserimento
|
||||
ORCREAZ|10|6|0|
|
||||
UTULAGG|1|16|0|Utente che ha fatto l'ultimo aggiornamento
|
||||
DTULAGG|5|8|0|Data dell'ultimo aggiornamento
|
||||
ORULAGG|10|6|Ora dell'ultimo aggiornamento
|
||||
ORULAGG|10|6|0|
|
||||
NOTE|11|10|0|Note
|
||||
1
|
||||
CODCF+CODCONT+GGCONS+CODITI|
|
||||
CODCF+CODCONT+GGCONS+CODITI|
|
||||
|
@ -1,3 +1,3 @@
|
||||
165
|
||||
0
|
||||
$lvperisosp|0|0|133|0|Tabella periodi di sospensione|||
|
||||
$lvperisosp|2|2|132|0|Tabella periodi di sospensione|||
|
||||
|
@ -5,7 +5,7 @@ CODCONT|3|6|0|Codice Contratto
|
||||
CODPER|3|6|0|Codice periodo di sospensione
|
||||
DATAINI|5|8|0|Data inizio periodo di sospensione
|
||||
DATAFIN|5|8|0|Data fine periodo di sospensione
|
||||
TPSOSP|1|2|0|Tipo sospensione
|
||||
TPSOSP|1|3|0|Tipo sospensione
|
||||
FLFATT|8|1|0|Flag che indica se fatturare ugualmente le consegne sospese
|
||||
IMPFATT|4|18|3|Importo da fatturare
|
||||
PERCFATT|4|5|2|Percentuale da fatturare
|
||||
|
@ -1,3 +1,3 @@
|
||||
167
|
||||
0
|
||||
$lvrconsplan|0|0|67|0|Righe planning consegne|||
|
||||
$lvrconsplan|5|5|114|0|Righe planning consegne|||
|
||||
|
24
lv/f167.trr
24
lv/f167.trr
@ -1,29 +1,29 @@
|
||||
167
|
||||
23
|
||||
CODPLAN|3|8|0|Codice planning
|
||||
CODRIGA|2|5|0|Codice riga
|
||||
CODRIGA|2|5|0|Codice riga del planning
|
||||
DTCONS|5|8|0|Data di consegna
|
||||
CODITI|2|3|0|Codice itinerario
|
||||
ORDFER|2|2|0|Ordine di fermata
|
||||
CODCF|3|6|0|Codice del cliente
|
||||
CODCONT|3|6|0|Codice contratto
|
||||
GGCONS|2|1|0|Giorno consegna
|
||||
CODCONT|3|6|0|Codice del contratto
|
||||
GGCONS|2|1|0|Giorno di consegna
|
||||
MODPASS|1|1|0|Modalità di passaggio <C>onsegna <R>itiro <E>ntrambi
|
||||
CODAUT|1|2|0|Autista
|
||||
CODMEZ|1|2|0|Mezzo
|
||||
CODAUT|1|2|0|Codice aurista
|
||||
CODMEZ|1|8|0|Codice mezzo
|
||||
PROVV|1|1|0|<P>rovvisorio o <D>efinitivo
|
||||
ANNO|2|4|0|Anno documento
|
||||
CODNUM|1|4|0|Numerazione documento
|
||||
NDOC|3|7|0|Numero documento
|
||||
CODPLANOR|1|10|0|
|
||||
CODPLANOR|1|10|0|Codice planning originale
|
||||
FREQ|1|2|0|Frequenaza di consegna
|
||||
CONSSTD|8|1|0|Flag che indica se una consegna è standard <T> o speciale <F>
|
||||
CONSSTD|8|1|0|Flag che indica se una consegna è standard (T) o speciale (F)
|
||||
PERSOSP|2|2|0|Periodo di sospensione
|
||||
PERSOSPVAR|2|2|0|Periodo di sospensionevariato
|
||||
UTULAGG|1|16|0|Utente che aggiornato per ultimo il planning
|
||||
DTULAGG|5|8|0|Data ultimo aggionamento del planning
|
||||
ORULAGG|10|6|0|Ora ultimo aggiornamento del planning
|
||||
PERSOSPVAR|2|2|0|Periodo di sospensione variato
|
||||
UTULAGG|1|16|0|Utente che ha fatto l'ultimo aggiornamento
|
||||
DTULAGG|5|8|0|Data dell'ultimo aggiornamento
|
||||
ORULAGG|10|6|0|Ora dell'ultimo aggiornamento
|
||||
3
|
||||
CODPLAN+CODRIGA|
|
||||
DTCONS+CODITI+ORDFER+CODRIGA|
|
||||
CODCF+CODITI+DTCONS|
|
||||
CODCF+CODITI+DTCONS|
|
||||
|
643
lv/lv0500.cpp
643
lv/lv0500.cpp
@ -1,145 +1,141 @@
|
||||
#include <automask.h>
|
||||
#include <defmask.h>
|
||||
#include <relapp.h>
|
||||
#include <tabutil.h>
|
||||
#include <modaut.h>
|
||||
#include <nditte.h>
|
||||
#include <progind.h>
|
||||
#include <recarray.h>
|
||||
#include <reprint.h>
|
||||
#include <reputils.h>
|
||||
|
||||
#include "lvlib.h"
|
||||
|
||||
#include "lv0.h"
|
||||
#include "lv0500a.h"
|
||||
|
||||
#include "lvpasplan.h"
|
||||
#include "lvperisop.h"
|
||||
|
||||
//-------------------------------------------------------------------
|
||||
// MASCHERA
|
||||
//-------------------------------------------------------------------
|
||||
////////////////
|
||||
// MASCHERA //
|
||||
////////////////
|
||||
class TPass_plan_contr_mask : public TAutomask
|
||||
{
|
||||
private:
|
||||
bool is_check(TField_event e);
|
||||
private:
|
||||
void proponi_orario();
|
||||
void nuovo_persosp();
|
||||
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& campo, TField_event e, long jolly);
|
||||
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
|
||||
public:
|
||||
TPass_plan_contr_mask();
|
||||
};
|
||||
|
||||
bool TPass_plan_contr_mask::on_field_event(TOperable_field& campo, TField_event e, long jolly)
|
||||
void TPass_plan_contr_mask::proponi_orario()
|
||||
{
|
||||
int _giorno = get_int(F_GGCONS);
|
||||
|
||||
switch(campo.dlg())
|
||||
{
|
||||
case F_GGCONS:
|
||||
/*
|
||||
* Controllo dell'esattezza del giorno.
|
||||
* Se inserisco un numero maggiore di 7 oppure
|
||||
* uguale a 0 allora pop-up di errore
|
||||
*/
|
||||
if(is_check(e))
|
||||
{
|
||||
if( _giorno>7 || _giorno==0)
|
||||
{
|
||||
return error_box(TR("Errore:Giorno Inesistente!"));
|
||||
}
|
||||
}
|
||||
case F_ORAARR:
|
||||
/*
|
||||
* Controllo formattazione del campo ORA. Il
|
||||
* Nel caso inserisco un numero inferiore delle 6 cifre
|
||||
* interpreto le cifre mancanti come degli 0 posti dinnanzi
|
||||
* alla cifra.
|
||||
* Successivamente controllo la formattazione delle ore,
|
||||
* minuti, secondi.
|
||||
*/
|
||||
if(is_check(e))
|
||||
{
|
||||
TString8 _ora_str = get(F_ORAARR);
|
||||
if( _ora_str.not_empty())
|
||||
{
|
||||
for(int a=_ora_str.len(); a<6 ;a++)
|
||||
{
|
||||
_ora_str.insert("0",0);
|
||||
}
|
||||
|
||||
if(_ora_str.sub(0,2)>"23")
|
||||
{
|
||||
return error_box(TR("Ora errata"));
|
||||
}
|
||||
else if(_ora_str.sub(2,4)>"59")
|
||||
{
|
||||
return error_box(TR("Minuti errati"));
|
||||
}
|
||||
else if(_ora_str.sub(4,6)>"59")
|
||||
{
|
||||
return error_box(TR("Secondi errati"));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Settaggio a false di tutti i flags
|
||||
*/
|
||||
long l = 0;
|
||||
for(short i = F_LUN; i< F_LUN+7; i++)
|
||||
{
|
||||
set(i,l,0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Settaggio a true del flag corrispondente
|
||||
* al giorno imputato a video
|
||||
*/
|
||||
switch(_giorno)
|
||||
{
|
||||
case 1:
|
||||
set(F_LUN,true);
|
||||
break;
|
||||
case 2:
|
||||
set(F_MAR,true);
|
||||
break;
|
||||
case 3:
|
||||
set(F_MER,true);
|
||||
break;
|
||||
case 4:
|
||||
set(F_GIO,true);
|
||||
break;
|
||||
case 5:
|
||||
set(F_VEN,true);
|
||||
break;
|
||||
case 6:
|
||||
set(F_SAB,true);
|
||||
break;
|
||||
case 7:
|
||||
set(F_DOM,true);
|
||||
}
|
||||
|
||||
return true;
|
||||
TSheet_field& sheet = sfield(F_PASPLAN);
|
||||
TToken_string& rigamodificata = sheet.row(sheet.items()-1);
|
||||
rigamodificata.add("00:00",sheet.cid2index(F_S_ORA));
|
||||
//sheet.force_update();
|
||||
return;
|
||||
}
|
||||
|
||||
bool TPass_plan_contr_mask::is_check(TField_event e)
|
||||
//questa funzione viene richiamata ogni volta che si aggiunge una riga allo sheet dei periodi di sospensione...
|
||||
//...e propone il codice del periodo in automatico
|
||||
void TPass_plan_contr_mask::nuovo_persosp()
|
||||
{
|
||||
return (e==fe_modify || e==fe_close);
|
||||
//recupero il codcf e il codcont dalla maschera
|
||||
const long codcli = get_long(F_CODCF);
|
||||
const long codcont = get_long(F_CODCONT);
|
||||
int codper; //codice periodo di sospensione
|
||||
|
||||
//variabili per lavorare sullo sheet
|
||||
TSheet_field& sheet = sfield(F_PERSOSP);
|
||||
TToken_string& rigamodificata = sheet.row(sheet.items()-1);
|
||||
|
||||
//se è la prima riga che inserisco, cerco l'ultimo CODPER per la coppia...
|
||||
//...cliente - contratto sulla tabella, e lo incremento di 1
|
||||
if (sheet.items()==1)
|
||||
{
|
||||
TISAM_recordset psosp("USE LVPERISOSP\n FROM CODCF=#CODCF CODCONT=#CODCONT\nTO CODCF=#CODCF CODCONT=#CODCONT");
|
||||
psosp.set_var("#CODCF",codcli);
|
||||
psosp.set_var("#CODCONT",codcont);
|
||||
|
||||
psosp.move_last();
|
||||
codper = psosp.get("LVPERISOSP_CODPER").as_int()+1;
|
||||
}
|
||||
else //se esistono già altre righe, prendo il codice dalla riga precedente, e lo incremento di 1
|
||||
{
|
||||
TToken_string& rigaprecedente = sheet.row(sheet.items()-2);
|
||||
codper = rigaprecedente.get_int(sheet.cid2index(F_S_CODPER))+1;
|
||||
}
|
||||
rigamodificata.add(codper,sheet.cid2index(F_S_CODPER)); //metto in codper nella posizione giusta sulla TToken_string
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
TPass_plan_contr_mask::TPass_plan_contr_mask() : TAutomask("lv0500a") {}
|
||||
bool TPass_plan_contr_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch (o.dlg())
|
||||
{
|
||||
case F_PASPLAN:
|
||||
switch (e)
|
||||
{
|
||||
case se_notify_add:
|
||||
proponi_orario();
|
||||
default: break;
|
||||
}
|
||||
case F_PERSOSP:
|
||||
switch (e)
|
||||
{
|
||||
case se_notify_add: //se si aggiunge una riga nuova allo sheet
|
||||
nuovo_persosp();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
TPass_plan_contr_mask::TPass_plan_contr_mask()
|
||||
:TAutomask("lv0500a") {}
|
||||
|
||||
|
||||
//--------------------------------------------------------------
|
||||
// APPLICAZIONE
|
||||
//--------------------------------------------------------------
|
||||
////////////////////
|
||||
// Applicazione //
|
||||
////////////////////
|
||||
class TPass_plan_contr : public TRelation_application
|
||||
{
|
||||
TPass_plan_contr_mask* _mask;
|
||||
TRelation* _rel;
|
||||
TRelation* _rel;
|
||||
long _codcli;
|
||||
long _codcont;
|
||||
|
||||
private:
|
||||
void fill_pasplan(const long codcli, const long codcont); //riempie i passaggi planning per contratto
|
||||
void fill_persosp(const long codcli, const long codcont); //riempie i periodi di sospensione
|
||||
|
||||
int find_pass(TSheet_field& s,const int ggcons, const int coditi) const; //controlla se esiste una passaggio
|
||||
int find_sosp(TSheet_field& s,const int codper) const; //controlla se esiste un periodo di sospensione
|
||||
|
||||
int write_pasplan(TSheet_field& pasplan, const long codcli, const long codcont); //scrive i passaggi planning per contratto
|
||||
int write_persosp(TSheet_field& persosp, const long codcli, const long codcont); //scrive i periodi di sospensione
|
||||
|
||||
int remove_pasplan(TSheet_field& pasplan, const long codcli, const long codcont); //cancella i passaggi planning per contratto
|
||||
int remove_persosp(TSheet_field& persosp, const long codcli, const long codcont); //cancella i periodi di sospensionE
|
||||
|
||||
protected:
|
||||
virtual void init_query_mode(TMask& m);
|
||||
virtual bool user_create();
|
||||
virtual bool user_destroy();
|
||||
virtual int read(TMask& m);
|
||||
virtual int write(const TMask& m);
|
||||
virtual int rewrite(const TMask& m);
|
||||
virtual bool remove();
|
||||
virtual TMask* get_mask(int mode) { return _mask; }
|
||||
virtual bool changing_mask(int mode) { return false; }
|
||||
|
||||
@ -147,14 +143,447 @@ public:
|
||||
virtual TRelation* get_relation() const {return (TRelation*)_rel;}
|
||||
};
|
||||
|
||||
///////////////////////////////////////////
|
||||
//// FUNZIONI PER READ ////
|
||||
///////////////////////////////////////////
|
||||
|
||||
//FILL_PASPLAN: questa funzione riempie lo sheet dei passaggi contratto per planning, se ne sono stati già inseriti...
|
||||
//...per la coppia cliente - contratto selezionata, se no propone un insieme di righe vuote,...
|
||||
//...una per ogni giorno della settimana
|
||||
void TPass_plan_contr::fill_pasplan(const long codcli,const long codcont)
|
||||
{
|
||||
//preparo il recordset su LVPASPLAN
|
||||
TISAM_recordset pplan("USE LVPASPLAN\n FROM CODCF=#CODCF CODCONT=#CODCONT\nTO CODCF=#CODCF CODCONT=#CODCONT");
|
||||
pplan.set_var("#CODCF",codcli);
|
||||
pplan.set_var("#CODCONT",codcont);
|
||||
|
||||
TProgind pi(pplan.items(), TR("Elaborazione dati passaggi planning per contratto in corso..."), true, true);
|
||||
|
||||
TSheet_field& sheet = _mask->sfield(F_PASPLAN);
|
||||
TMask& sheetmask = sheet.sheet_mask();
|
||||
TRelation& rel = *pplan.cursor()->relation(); //accesso al file delle righe
|
||||
|
||||
sheet.destroy();
|
||||
|
||||
if (pplan.items()>0)
|
||||
{
|
||||
for (bool ok = pplan.move_first(); ok; ok = pplan.move_next())
|
||||
{
|
||||
if (!pi.addstatus(1))
|
||||
break;
|
||||
|
||||
TToken_string& row = sheet.row(-1); //crea una nuova riga dello sheet
|
||||
|
||||
//scandisco nella maschera tutti i campi che hanno un field
|
||||
FOR_EACH_MASK_FIELD(sheetmask,i,f)
|
||||
{
|
||||
const TFieldref* fr = f->field(); //leggo il valore dalla relation
|
||||
if (fr != NULL)
|
||||
row.add(fr->read(rel),sheet.cid2index(f->dlg())); //metto il valore letto nella posizione corretta nella TToken_string
|
||||
}
|
||||
sheet.check_row(sheet.items()-1); //fa fare alla maschera la decodifica dei codici e aggiorna la TToken_string
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//questo ciclo crea le sette righe vuote
|
||||
TString ora = "00:00";
|
||||
for (int i = 1; i<=7; ++i)
|
||||
{
|
||||
TToken_string& row = sheet.row(-1); //crea una nuova riga dello sheet
|
||||
row.add(i,sheet.cid2index(F_S_GGCONS)); //aggiunge al posto giusto il numero del giorno della settimana
|
||||
row.add(ora,sheet.cid2index(F_S_ORA)); //propone l'ora di arrivo in automatico
|
||||
sheet.check_row(sheet.items()-1); //forza la maschera a fare la decodifica dei codici
|
||||
}
|
||||
}
|
||||
sheet.force_update(); //forza l'update dello sheet, in modo da rendere visibili i cambiamneti fatti
|
||||
return;
|
||||
}
|
||||
|
||||
//FILL_PERSOSP: questa funzione riempie lo sheet dei periodi di sospensione, recuperando eventualmente i dati già inseriti...
|
||||
//...nella tabella dei periodi di sospensione (LVPERISOSP) per la coppia cliente - contratto selezionata
|
||||
void TPass_plan_contr::fill_persosp(const long codcli,const long codcont)
|
||||
{
|
||||
//preparo il recordset su LVPERISOSP
|
||||
TISAM_recordset psosp("USE LVPERISOSP\n FROM CODCF=#CODCF CODCONT=#CODCONT\nTO CODCF=#CODCF CODCONT=#CODCONT");
|
||||
psosp.set_var("#CODCF",codcli);
|
||||
psosp.set_var("#CODCONT",codcont);
|
||||
|
||||
TProgind pi(psosp.items(), TR("Elaborazione dati periodi di sospensione in corso..."), true, true);
|
||||
|
||||
TSheet_field& sheet = _mask->sfield(F_PERSOSP);
|
||||
TMask& sheetmask = sheet.sheet_mask();
|
||||
TRelation& rel = *psosp.cursor()->relation(); //accesso al file delle righe
|
||||
|
||||
sheet.destroy();
|
||||
|
||||
for (bool ok = psosp.move_first(); ok; ok = psosp.move_next())
|
||||
{
|
||||
if (!pi.addstatus(1))
|
||||
break;
|
||||
|
||||
TToken_string& row = sheet.row(-1); //crea una nuova riga dello sheet
|
||||
|
||||
//scandisco nella maschera tutti i campi che hanno un field
|
||||
FOR_EACH_MASK_FIELD(sheetmask,i,f)
|
||||
{
|
||||
const TFieldref* fr = f->field(); //leggo il valore dalla relation
|
||||
if (fr != NULL)
|
||||
row.add(fr->read(rel),sheet.cid2index(f->dlg())); //metto il valore letto nella posizione corretta nella TToken_string
|
||||
}
|
||||
sheet.check_row(sheet.items()-1); //fa fare alla maschera la decodifica dei codici e aggiorna la TToken_string
|
||||
}
|
||||
sheet.force_update(); //forza l'update dello sheet, in modo da rendere visibili i cambiamneti fatti
|
||||
return;
|
||||
}
|
||||
|
||||
//READ: ridefinizione metodo read() delle TRelation
|
||||
int TPass_plan_contr::read(TMask& m)
|
||||
{
|
||||
//i due campi di testata DEVONO essere pieni tutte e due
|
||||
if (_mask->field(F_CODCF).empty() || _mask->field(F_CODCONT).empty())
|
||||
return !NOERR;
|
||||
|
||||
//recupero i dati della testata
|
||||
const long codcli = _mask->get_long(F_CODCF);
|
||||
const long codcont = _mask->get_long(F_CODCONT);
|
||||
|
||||
fill_pasplan(codcli,codcont);
|
||||
fill_persosp(codcli,codcont);
|
||||
|
||||
return NOERR;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////
|
||||
//// FUNZIONI PER WRITE E REWRITE ////
|
||||
///////////////////////////////////////////
|
||||
|
||||
//FIND_PASS: questa funziona controlla se una coppia giorno di consegna - itinerario che esiste sul file,
|
||||
//esiste ancora sullo sheet (se non esiste è stato cancellato)
|
||||
int TPass_plan_contr::find_pass(TSheet_field& s,const int ggcons, const int coditi) const
|
||||
{
|
||||
int r=-1;
|
||||
|
||||
//per ogni riga dello sheet, leggi giorno di consegna e itinerario,
|
||||
//e se esiste interrompi restituendo un valore positivo,
|
||||
//se no arriva fino in fondo e resituisci -1
|
||||
for (r=s.items()-1;r>=0;r--)
|
||||
{
|
||||
const int gc = s.row(r).get_int(s.cid2index(F_S_GGCONS));
|
||||
const int ci = s.row(r).get_int(s.cid2index(F_S_ITI));
|
||||
|
||||
if (ggcons == gc && coditi == ci)
|
||||
break;
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
//FIND_SOSP: questa funziona controlla se un periodo di sospensione che esiste sul file,
|
||||
//esiste ancora sullo sheet (se non esiste è stato cancellato)
|
||||
int TPass_plan_contr::find_sosp(TSheet_field& s,const int codper) const
|
||||
{
|
||||
int r=-1;
|
||||
|
||||
//per ogni riga dello sheet, leggi codice del periodo di sospensione,
|
||||
//e se esiste interrompi restituendo un valore positivo,
|
||||
//se no arriva fino in fondo e resituisci -1
|
||||
for (r=s.items()-1;r>=0;r--)
|
||||
{
|
||||
const int cp = s.row(r).get_int(s.cid2index(F_S_CODPER));
|
||||
|
||||
if (codper == cp)
|
||||
break;
|
||||
}
|
||||
return r;
|
||||
}
|
||||
|
||||
//WRITE_PASPLAN: questa funzione scrive i dati sul file 164 (LVPASPLAN)
|
||||
int TPass_plan_contr::write_pasplan(TSheet_field& pasplan, const long codcli, const long codcont)
|
||||
{
|
||||
//instanzio un TISAM_recordset
|
||||
TISAM_recordset pplan("USE LVPASPLAN\n FROM CODCF=#CODCF CODCONT=#CODCONT\nTO CODCF=#CODCF CODCONT=#CODCONT");
|
||||
pplan.set_var("#CODCF",codcli);
|
||||
pplan.set_var("#CODCONT",codcont);
|
||||
|
||||
int err = NOERR;
|
||||
|
||||
//instanzio un TLocalisamfile
|
||||
TLocalisamfile& file = pplan.cursor()->file();
|
||||
|
||||
//per ogni riga del recordset
|
||||
for (bool ok=pplan.move_first(); ok; ok=pplan.move_next())
|
||||
{
|
||||
//leggo il giorno di consegna e il codice itinerario
|
||||
const int ggcons = pplan.get(LVPASPLAN_GGCONS).as_int();
|
||||
const int coditi = pplan.get(LVPASPLAN_CODITI).as_int();
|
||||
|
||||
//tutte le righe del TISAM_recordset che NON SONO nel TRecord_array vanno eliminate dal file
|
||||
if (find_pass(pasplan,ggcons,coditi) < 0)
|
||||
file.remove();
|
||||
}
|
||||
|
||||
//Maschera di sheet
|
||||
TMask& msk = pasplan.sheet_mask();
|
||||
|
||||
//per ogni riga dello sheet
|
||||
FOR_EACH_SHEET_ROW(pasplan,r,row)
|
||||
{
|
||||
file.zero();
|
||||
//putto nel file codcli e codcont (sempre gli stessi)
|
||||
file.put(LVPASPLAN_CODCF,codcli);
|
||||
file.put(LVPASPLAN_CODCONT,codcont);
|
||||
|
||||
//per ogno campo della maschera di sheet
|
||||
FOR_EACH_MASK_FIELD(msk,i,f)
|
||||
{
|
||||
//prendo il FIELD a cui si riferiscono
|
||||
const TFieldref*fr = f->field();
|
||||
|
||||
//se efftivamente il campo ha un field di riferimento
|
||||
if (fr!= NULL)
|
||||
{
|
||||
const int pos=pasplan.cid2index(f->dlg()); //salvo la sua posizione all'inetrno dello sheet
|
||||
fr->write(row->get(pos),file.curr()); //scrivo il valore che sto leggendo nel record corrente del file
|
||||
}
|
||||
}
|
||||
|
||||
/*//setto le informazioni di creazione e/o aggiornamento del record
|
||||
if (file.curr().get(LVPERISOSP_UTCREAZ).empty())
|
||||
lv_set_creation_info(file.curr());
|
||||
else
|
||||
lv_set_update_info(file.curr());*/
|
||||
|
||||
err = file.rewrite_write(); //o faccio la rewrite, o faccio la write
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
//WRITE_PERSOSP: questa funzione scrive i dati sul file 165 (LVPERISOSP)
|
||||
int TPass_plan_contr::write_persosp(TSheet_field& persosp, const long codcli, const long codcont)
|
||||
{
|
||||
if (_mask->field(F_CODCF).empty() || _mask->field(F_CODCONT).empty())
|
||||
return !NOERR;
|
||||
|
||||
//instanzio un TISAM_recordset
|
||||
TISAM_recordset psosp("USE LVPERISOSP\n FROM CODCF=#CODCF CODCONT=#CODCONT\nTO CODCF=#CODCF CODCONT=#CODCONT");
|
||||
psosp.set_var("#CODCF",codcli);
|
||||
psosp.set_var("#CODCONT",codcont);
|
||||
|
||||
int err = NOERR;
|
||||
|
||||
//instanzio un TLocalisamfile
|
||||
TLocalisamfile& file = psosp.cursor()->file();
|
||||
|
||||
//per ogni riga del recordset
|
||||
for (bool ok=psosp.move_first(); ok; ok=psosp.move_next())
|
||||
{
|
||||
//leggo il codice del periodo di sospensione
|
||||
const int sosp = psosp.get(LVPERISOSP_CODPER).as_int();
|
||||
|
||||
//tutte le righe del TISAM_recordset che NON SONO nel TRecord_array vanno eliminate dal file
|
||||
if (find_sosp(persosp,sosp) < 0)
|
||||
file.remove();
|
||||
}
|
||||
|
||||
//creo un TRectype
|
||||
TRectype& rec = file.curr();
|
||||
|
||||
//Maschera di sheet
|
||||
TMask& msk = persosp.sheet_mask();
|
||||
|
||||
//per ogni riga dello sheet
|
||||
FOR_EACH_SHEET_ROW(persosp,r,row)
|
||||
{
|
||||
//azzero il record
|
||||
rec.zero();
|
||||
//putto nel record codcli e codcont (sempre gli stessi)
|
||||
rec.put(LVPERISOSP_CODCF,codcli);
|
||||
rec.put(LVPERISOSP_CODCONT,codcont);
|
||||
|
||||
//per ogni campo della mashera di sheet
|
||||
FOR_EACH_MASK_FIELD(msk,i,f)
|
||||
{
|
||||
//prendo il FIELD a cui si riferiscono
|
||||
const TFieldref* fr = f->field();
|
||||
|
||||
//se efftivamente il campo ha un field di riferimento
|
||||
if (fr!= NULL)
|
||||
{
|
||||
const char* field = fr->name(); //salvo il nome del campo
|
||||
const int pos = persosp.cid2index(f->dlg()); //salvo la sua posizione all'inetrno dello sheet
|
||||
rec.put(field,row->get(pos)); //putto il suo valore nel record che sto costruendo
|
||||
}
|
||||
}
|
||||
|
||||
/*//setto le informazioni di creazione e/o aggiornamento del record
|
||||
if (rec.get(LVPERISOSP_UTCREAZ).empty())
|
||||
lv_set_creation_info(rec);
|
||||
else
|
||||
lv_set_update_info(rec);*/
|
||||
|
||||
err = file.rewrite_write(); //o faccio la rewrite, o faccio la write
|
||||
}
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
//WRITE: ridefinizione metodo write delle TRelation
|
||||
int TPass_plan_contr::write(const TMask& m)
|
||||
{
|
||||
if (_mask->field(F_CODCF).empty() || _mask->field(F_CODCONT).empty())
|
||||
return !NOERR;
|
||||
|
||||
const long codcli = _mask->get_long(F_CODCF);
|
||||
const long codcont = _mask->get_long(F_CODCONT);
|
||||
|
||||
int err_1;
|
||||
int err_2;
|
||||
|
||||
//variabili per lavorare sugli sheet
|
||||
TSheet_field& pasplan = _mask->sfield(F_PASPLAN);
|
||||
TSheet_field& persosp = _mask->sfield(F_PERSOSP);
|
||||
|
||||
if (pasplan.items() > 0)
|
||||
err_1 = write_pasplan(pasplan,codcli,codcont);
|
||||
|
||||
if (persosp.items() > 0)
|
||||
err_2 = write_persosp(persosp,codcli,codcont);
|
||||
|
||||
return err_1 && err_2;
|
||||
}
|
||||
|
||||
//ridefinizione metodo rewrite delle TRelation
|
||||
int TPass_plan_contr::rewrite(const TMask& m)
|
||||
{
|
||||
if (_mask->field(F_CODCF).empty() || _mask->field(F_CODCONT).empty())
|
||||
return !NOERR;
|
||||
|
||||
const long codcli = _mask->get_long(F_CODCF);
|
||||
const long codcont = _mask->get_long(F_CODCONT);
|
||||
|
||||
int err_1;
|
||||
int err_2;
|
||||
|
||||
//variabili per lavorare sugli sheet
|
||||
TSheet_field& pasplan = _mask->sfield(F_PASPLAN);
|
||||
TSheet_field& persosp = _mask->sfield(F_PERSOSP);
|
||||
|
||||
if (pasplan.items() > 0)
|
||||
err_1 = write_pasplan(pasplan,codcli,codcont);
|
||||
|
||||
if (persosp.items() > 0)
|
||||
err_2 = write_persosp(persosp,codcli,codcont);
|
||||
|
||||
return err_1 && err_2;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////
|
||||
//// FUNZIONI PER REMOVE ////
|
||||
///////////////////////////////////////////
|
||||
|
||||
//REMOVE_PASPLAN: elimina tutte le righe dei passaggi per la coppia cliente - contratto selezionata
|
||||
int TPass_plan_contr::remove_pasplan(TSheet_field& pasplan, const long codcli, const long codcont)
|
||||
{
|
||||
//instanzio un TISAM_recordset
|
||||
TISAM_recordset pplan("USE LVPASPLAN\n FROM CODCF=#CODCF CODCONT=#CODCONT\nTO CODCF=#CODCF CODCONT=#CODCONT");
|
||||
pplan.set_var("#CODCF", codcli);
|
||||
pplan.set_var("#CODCONT", codcont);
|
||||
|
||||
int tmp = pplan.items();
|
||||
|
||||
int err = NOERR;
|
||||
|
||||
//instanzio un TLocalisamfile
|
||||
TLocalisamfile& file = pplan.cursor()->file();
|
||||
|
||||
//per ogni riga del recordset
|
||||
for (bool ok=pplan.move_first(); ok; ok=pplan.move_next())
|
||||
{
|
||||
err = file.remove();
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
//REMOVE_PERSOSP: elimina tutte le righe dei periodi di sospensione per la coppia cliente - contratto selezionata
|
||||
int TPass_plan_contr::remove_persosp(TSheet_field& persosp, const long codcli, const long codcont)
|
||||
{
|
||||
//instanzio un TISAM_recordset
|
||||
TISAM_recordset psosp("USE LVPERISOSP\n FROM CODCF=#CODCF CODCONT=#CODCONT\nTO CODCF=#CODCF CODCONT=#CODCONT");
|
||||
psosp.set_var("#CODCF",codcli);
|
||||
psosp.set_var("#CODCONT",codcont);
|
||||
|
||||
int err = NOERR;
|
||||
|
||||
//instanzio un TLocalisamfile
|
||||
TLocalisamfile& file = psosp.cursor()->file();
|
||||
|
||||
//per ogni riga del recordset
|
||||
for (bool ok=psosp.move_first(); ok; ok=psosp.move_next())
|
||||
{
|
||||
err = file.remove();
|
||||
}
|
||||
return err;
|
||||
}
|
||||
|
||||
//REMOVE: ridefinizione del metodo remove delle TRelation
|
||||
bool TPass_plan_contr::remove()
|
||||
{
|
||||
if (_mask->field(F_CODCF).empty() || _mask->field(F_CODCONT).empty())
|
||||
return !NOERR;
|
||||
|
||||
//valori recuperati dalla testata
|
||||
const long codcli = _mask->get_long(F_CODCF);
|
||||
const long codcont = _mask->get_long(F_CODCONT);
|
||||
|
||||
//variabili per lavorare sugli sheet
|
||||
TSheet_field& pasplan = _mask->sfield(F_PASPLAN);
|
||||
TSheet_field& persosp = _mask->sfield(F_PERSOSP);
|
||||
|
||||
int err_1 = remove_pasplan(pasplan,codcli,codcont);
|
||||
int err_2 = remove_persosp(persosp,codcli,codcont);
|
||||
|
||||
return err_1 && err_2;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////
|
||||
//// METODI PRIVATI ////
|
||||
///////////////////////////////////////////
|
||||
|
||||
//questa funzione forza i campi F_CODCF e F_CODCONT quando...
|
||||
//...vengono passati come parametri al programma
|
||||
void TPass_plan_contr::init_query_mode(TMask& m)
|
||||
{
|
||||
if (_codcli > 0)
|
||||
{
|
||||
m.set(F_CODCF,_codcli);
|
||||
m.set(F_CODCONT,_codcont,0x2);
|
||||
if (find(0))
|
||||
modify_mode();
|
||||
}
|
||||
}
|
||||
|
||||
//costruttore
|
||||
bool TPass_plan_contr::user_create()
|
||||
{
|
||||
_rel = new TRelation(LF_LVPASPLAN);
|
||||
_rel = new TRelation(LF_LVCONDV);
|
||||
_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
|
||||
if (argc() > 2)
|
||||
{
|
||||
_codcli = atol(argv(2));
|
||||
_codcont = atol(argv(3));
|
||||
}
|
||||
else
|
||||
{
|
||||
_codcli = 0;
|
||||
_codcont = 0;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
//distruttore
|
||||
bool TPass_plan_contr::user_destroy()
|
||||
{
|
||||
delete _mask;
|
||||
|
72
lv/lv0500a.h
72
lv/lv0500a.h
@ -1,30 +1,42 @@
|
||||
#define F_CODDITTA 101
|
||||
#define F_RAGSOCDITTA 102
|
||||
#define F_CODCF 103
|
||||
#define F_RAGSOC_CLI 104
|
||||
#define F_CODCONT 105
|
||||
#define F_DES_CODCONT 106
|
||||
#define F_CODITI 107
|
||||
#define F_DES_ITI 108
|
||||
#define F_GGCONS 109
|
||||
#define F_CODFRQCONS 110
|
||||
#define F_DES_FRQCONS 111
|
||||
#define F_MODPASS 112
|
||||
#define F_DES_MODPASS 113
|
||||
#define F_ORDFERM 114
|
||||
#define F_FLAGSTAG 115
|
||||
#define F_ORAARR 116
|
||||
#define F_DATAINS 117
|
||||
#define F_ORAINS 118
|
||||
#define F_USERINS 119
|
||||
#define F_DATAAGG 120
|
||||
#define F_ORAAGG 121
|
||||
#define F_USERAGG 122
|
||||
#define F_NOTE 123
|
||||
#define F_LUN 124
|
||||
#define F_MAR 125
|
||||
#define F_MER 126
|
||||
#define F_GIO 127
|
||||
#define F_VEN 128
|
||||
#define F_SAB 129
|
||||
#define F_DOM 130
|
||||
//Definizione campi per maschera lv1500a - Inserimento passaggi planning per contratto e periodi di sospensione
|
||||
//Testata
|
||||
#define F_CODCF 203
|
||||
#define F_RAGSOCCLI 204
|
||||
#define F_CODCONT 205
|
||||
#define F_VALIDA 206
|
||||
#define F_VALIA 207
|
||||
#define F_PASPLAN 208
|
||||
#define F_PERSOSP 209
|
||||
//Campi sheet dei passaggi planning per contratto
|
||||
#define F_S_GGCONS 101
|
||||
#define F_S_STRGGCONS 102
|
||||
#define F_S_ITI 103
|
||||
#define F_S_DESITI 992
|
||||
#define F_S_ORDFER 104
|
||||
#define F_S_ORA 105
|
||||
#define F_S_MODPAS 106
|
||||
#define F_S_FREQ 107
|
||||
#define F_S_FLSTAG 108
|
||||
#define F_S_NOTEPC 109
|
||||
#define F_S_UTENTEC 993
|
||||
#define F_S_DATAC 994
|
||||
#define F_S_ORAC 995
|
||||
#define F_S_UTENTEUA 996
|
||||
#define F_S_DATAUA 997
|
||||
#define F_S_ORAUA 998
|
||||
//campi sheet dei periodi di sospensione
|
||||
#define F_S_CODPER 101
|
||||
#define F_S_TPSOSP 102
|
||||
#define F_S_DTPSOSP 999
|
||||
#define F_S_DADATA 103
|
||||
#define F_S_ADATA 104
|
||||
#define F_S_FLFAT 105
|
||||
#define F_S_IMPFAT 106
|
||||
#define F_S_PERFAT 107
|
||||
#define F_S_NOTEPS 108
|
||||
#define F_S_UTENTEC 993
|
||||
#define F_S_DATAC 994
|
||||
#define F_S_ORAC 995
|
||||
#define F_S_UTENTEUA 996
|
||||
#define F_S_DATAUA 997
|
||||
#define F_S_ORAUA 998
|
556
lv/lv0500a.uml
556
lv/lv0500a.uml
@ -4,274 +4,442 @@ TOOLBAR "" 0 0 0 2
|
||||
#include "relapbar.h"
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Passaggi Planning per Contratto" 0 2 0 0
|
||||
PAGE "Passaggi Planning per Contratto" -1 -1 78 10
|
||||
|
||||
GROUPBOX DLG_NULL 80 3
|
||||
GROUPBOX DLG_NULL 76 4
|
||||
BEGIN
|
||||
PROMPT 0 1 "@bDitta"
|
||||
PROMPT 1 1 "@b Planning per Contratto"
|
||||
END
|
||||
|
||||
NUMBER F_CODDITTA 5
|
||||
BEGIN
|
||||
PROMPT 2 2 "Codice"
|
||||
FLAGS "FD"
|
||||
USE LF_NDITTE
|
||||
CHECKTYPE NORMAL
|
||||
INPUT CODDITTA F_CODDITTA
|
||||
OUTPUT F_RAGSOCDITTA RAGSOC
|
||||
END
|
||||
|
||||
STRING F_RAGSOCDITTA 50
|
||||
BEGIN
|
||||
PROMPT 17 2 "Ragione"
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 80 6
|
||||
BEGIN
|
||||
PROMPT 0 4 "@b Planning per Contratto"
|
||||
END
|
||||
|
||||
|
||||
NUMBER F_CODCF 6
|
||||
BEGIN
|
||||
PROMPT 2 5 "Codice "
|
||||
PROMPT 2 2 "Cliente "
|
||||
FLAGS "UG"
|
||||
FIELD CODCF
|
||||
FLAGS "BU"
|
||||
KEY 1
|
||||
USE LF_CLIFO SELECT TIPOCF = "C"
|
||||
INPUT CODCF F_CODCF
|
||||
DISPLAY "Codice" CODCF
|
||||
DISPLAY "Ragione Sociale@50" RAGSOC
|
||||
USE LF_LVCONDV
|
||||
JOIN LF_CLIFO INTO TIPOCF="C" CODCF=CODCF
|
||||
INPUT CODCF F_CODCF
|
||||
INPUT CODCONT F_CODCONT
|
||||
DISPLAY "Codice Cliente" CODCF
|
||||
DISPLAY "Contratto@8" CODCONT
|
||||
DISPLAY "Inizio@10" DATAIN
|
||||
DISPLAY "Fine@10" DATASC
|
||||
DISPLAY "Cliente@50" LF_CLIFO->RAGSOC
|
||||
OUTPUT F_CODCONT CODCONT
|
||||
OUTPUT F_CODCF CODCF
|
||||
OUTPUT F_RAGSOC_CLI RAGSOC
|
||||
CHECKTYPE REQUIRED
|
||||
OUTPUT F_RAGSOCCLI LF_CLIFO->RAGSOC
|
||||
OUTPUT F_VALIDA DATAIN
|
||||
OUTPUT F_VALIA DATASC
|
||||
CHECKTYPE FORCED
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING F_RAGSOC_CLI 50
|
||||
STRING F_RAGSOCCLI 50
|
||||
BEGIN
|
||||
PROMPT 20 5 ""
|
||||
PROMPT 22 2 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_CODCONT 6
|
||||
BEGIN
|
||||
PROMPT 2 6 "Contratto N."
|
||||
FLAGS "BU"
|
||||
PROMPT 2 3 "Contratto "
|
||||
FLAGS "U"
|
||||
FIELD CODCONT
|
||||
COPY ALL F_CODCF
|
||||
CHECKTYPE FORCED
|
||||
KEY 1
|
||||
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_DES_CODCONT 50
|
||||
DATE F_VALIDA
|
||||
BEGIN
|
||||
PROMPT 20 6 ""
|
||||
PROMPT 22 3 "Valido dal "
|
||||
FLAGS "D"
|
||||
FIELD DATAIN
|
||||
END
|
||||
|
||||
STRING F_CODITI 3
|
||||
DATE F_VALIA
|
||||
BEGIN
|
||||
PROMPT 2 7 "Itinerario "
|
||||
FIELD CODITI
|
||||
FLAGS "U"
|
||||
KEY 1
|
||||
USE &ITI
|
||||
INPUT CODTAB F_CODITI
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_CODITI CODTAB
|
||||
OUTPUT F_DES_ITI S0
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_DES_ITI 50
|
||||
BEGIN
|
||||
PROMPT 20 7 ""
|
||||
PROMPT 45 3 "al "
|
||||
FLAGS "D"
|
||||
FIELD DATAFIN
|
||||
END
|
||||
|
||||
NUMBER F_GGCONS 1
|
||||
SPREADSHEET F_PASPLAN 0 7
|
||||
BEGIN
|
||||
PROMPT 2 8 "Giorno Consegna"
|
||||
PROMPT 0 5 "Passaggi planning per contratto"
|
||||
ITEM "Num."
|
||||
ITEM "Giorno"
|
||||
ITEM "Itinerario"
|
||||
ITEM "Ordine\nfermata"
|
||||
ITEM "Ora\nprevista"
|
||||
ITEM "Mod. pass."
|
||||
ITEM "Frequenza\nconsegne"
|
||||
ITEM "Giro\nstagionale"
|
||||
ITEM "Note@50"
|
||||
END
|
||||
|
||||
SPREADSHEET F_PERSOSP 0 7
|
||||
BEGIN
|
||||
PROMPT 0 13 "Periodi di sospensione"
|
||||
ITEM "Codice"
|
||||
ITEM "Tipo\nsospensione"
|
||||
ITEM "Data\ninizio"
|
||||
ITEM "Data\nfine"
|
||||
ITEM "Fattura"
|
||||
ITEM "Importo da\nfatturare"
|
||||
ITEM "Percentuale da\nfatturare"
|
||||
ITEM "Note@50"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
||||
|
||||
PAGE "Passaggi planning per contratto" -1 -1 78 20
|
||||
|
||||
GROUPBOX DLG_NULL 76 5
|
||||
BEGIN
|
||||
PROMPT 1 0 "@bDati Itinerario"
|
||||
END
|
||||
|
||||
NUMBER F_S_GGCONS 1
|
||||
BEGIN
|
||||
PROMPT 2 1 "Giorno "
|
||||
SHEET "Codice|Giorno@10"
|
||||
INPUT F_S_GGCONS
|
||||
ITEM "1|Lunedì"
|
||||
ITEM "2|Martedì"
|
||||
ITEM "3|Mercoledì"
|
||||
ITEM "4|Giovedì"
|
||||
ITEM "5|Venerdì"
|
||||
ITEM "6|Sabato"
|
||||
ITEM "7|Domenica"
|
||||
OUTPUT F_S_GGCONS
|
||||
OUTPUT F_S_STRGGCONS
|
||||
FIELD GGCONS
|
||||
KEY 1
|
||||
|
||||
USE LF_LVPASPLAN KEY 1
|
||||
INPUT CODCF F_CODCF
|
||||
INPUT CODCONT F_CODCONT
|
||||
INPUT CODITI F_CODITI
|
||||
INPUT GGCONS F_GGCONS
|
||||
DISPLAY "Cliente" CODCF
|
||||
DISPLAY "Contratto" CODCONT
|
||||
DISPLAY "Itinerario" CODITI
|
||||
DISPLAY "Giorno" GGCONS
|
||||
DISPLAY "Ord.Fermata" ORDFERM
|
||||
DISPLAY "Frequenza" FREQ
|
||||
DISPLAY "Mod.Pass." MODPASS
|
||||
DISPLAY "Stagionalità" FLSTAG
|
||||
DISPLAY "Ora Arrivo" ORARPRV
|
||||
OUTPUT F_CODCF CODCF
|
||||
OUTPUT F_CODCONT CODCONT
|
||||
OUTPUT F_CODITI CODITI
|
||||
OUTPUT F_GGCONS GGCONS
|
||||
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
BOOLEAN F_LUN
|
||||
STRING F_S_STRGGCONS 10
|
||||
BEGIN
|
||||
PROMPT 25 8 "Lun."
|
||||
PROMPT 20 1 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN F_MAR
|
||||
NUMBER F_S_ITI 3
|
||||
BEGIN
|
||||
PROMPT 33 8 "Mar."
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN F_MER
|
||||
BEGIN
|
||||
PROMPT 41 8 "Mer."
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN F_GIO
|
||||
BEGIN
|
||||
PROMPT 49 8 "Gio."
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN F_VEN
|
||||
BEGIN
|
||||
PROMPT 57 8 "Ven."
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN F_SAB
|
||||
BEGIN
|
||||
PROMPT 65 8 "Sab."
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
BOOLEAN F_DOM
|
||||
BEGIN
|
||||
PROMPT 73 8 "Dom."
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 80 5
|
||||
BEGIN
|
||||
PROMPT 0 11 "@b Dettaglio"
|
||||
END
|
||||
|
||||
STRING F_CODFRQCONS 2
|
||||
BEGIN
|
||||
PROMPT 2 12 "Frequenza Consegne"
|
||||
FIELD FREQ
|
||||
FLAGS "U"
|
||||
USE &FRQ
|
||||
INPUT CODTAB F_CODFRQCONS
|
||||
DISPLAY "Codice" CODTAB
|
||||
PROMPT 2 2 "Itinerario "
|
||||
FLAGS "Z"
|
||||
FIELD CODITI
|
||||
USE &ITI
|
||||
INPUT CODTAB F_S_ITI
|
||||
DISPLAY "Codice " CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_CODFRQCONS CODTAB
|
||||
OUTPUT F_DES_FRQCONS S0
|
||||
OUTPUT F_S_ITI CODTAB
|
||||
OUTPUT F_S_DESITI S0
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_DES_FRQCONS 50
|
||||
STRING F_S_DESITI 50
|
||||
BEGIN
|
||||
PROMPT 26 12 ""
|
||||
PROMPT 20 2 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
|
||||
STRING F_MODPASS 1
|
||||
NUMBER F_S_ORDFER 3
|
||||
BEGIN
|
||||
PROMPT 2 13 "Modalità Passaggio"
|
||||
FLAGS "U"
|
||||
FIELD MODPASS
|
||||
|
||||
USE &MPS
|
||||
INPUT CODTAB F_MODPASS
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione @50" S0
|
||||
|
||||
OUTPUT F_MODPASS CODTAB
|
||||
OUTPUT F_DES_MODPASS S0
|
||||
|
||||
END
|
||||
|
||||
STRING F_DES_MODPASS 50
|
||||
BEGIN
|
||||
PROMPT 26 13 ""
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
NUMBER F_ORDFERM 3
|
||||
BEGIN
|
||||
PROMPT 2 14 "Ordine Fermata "
|
||||
PROMPT 2 3 "N. Fermata "
|
||||
FIELD ORDFERM
|
||||
CHECKTYPE NORMAL
|
||||
END
|
||||
|
||||
BOOLEAN F_FLAGSTAG
|
||||
STRING F_S_ORA 5
|
||||
BEGIN
|
||||
PROMPT 30 14 "Stagionalità"
|
||||
FIELD FLSTAG
|
||||
END
|
||||
|
||||
|
||||
NUMBER F_ORAARR 6
|
||||
BEGIN
|
||||
PROMPT 47 14 "Ora di arrivo"
|
||||
PROMPT 20 3 "Ora arrivo "
|
||||
PICTURE "@@:@@"
|
||||
FIELD ORARPRV
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 80 5
|
||||
BOOLEAN F_S_FLSTAG
|
||||
BEGIN
|
||||
PROMPT 0 16 "@b Gestione Dati Ins.\Agg."
|
||||
PROMPT 40 3 "Flag Stagionalità"
|
||||
FIELD FLSTAG
|
||||
END
|
||||
|
||||
DATE F_DATAINS
|
||||
GROUPBOX DLG_NULL 76 3
|
||||
BEGIN
|
||||
PROMPT 2 18 "Data Ins."
|
||||
PROMPT 1 5 "@bDettagli consegna"
|
||||
END
|
||||
|
||||
LIST F_S_MODPAS 10
|
||||
BEGIN
|
||||
PROMPT 2 6 "Modalità di passaggio "
|
||||
ITEM "E|Entrambi"
|
||||
ITEM "C|Consegna"
|
||||
ITEM "R|Ritiro"
|
||||
FIELD MODPASS
|
||||
END
|
||||
|
||||
NUMBER F_S_FREQ 3
|
||||
BEGIN
|
||||
PROMPT 40 6 "Frequenza di consegna "
|
||||
FIELD FREQ
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 76 5
|
||||
BEGIN
|
||||
PROMPT 1 8 "@bNote"
|
||||
END
|
||||
|
||||
MEMO F_S_NOTEPC 74 4
|
||||
BEGIN
|
||||
PROMPT 2 8 ""
|
||||
FIELD NOTE
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 76 3
|
||||
BEGIN
|
||||
PROMPT 1 13 "@bDettagli creazione passaggio"
|
||||
END
|
||||
|
||||
STRING F_S_UTENTEC 16
|
||||
BEGIN
|
||||
PROMPT 2 14 "Utente "
|
||||
FIELD UTCREAZ
|
||||
FLAGS "D"
|
||||
FIELD DTCREAZ
|
||||
END
|
||||
|
||||
NUMBER F_ORAINS 6
|
||||
DATE F_S_DATAC
|
||||
BEGIN
|
||||
PROMPT 25 18 "Ora Ins."
|
||||
PROMPT 27 14 "Data "
|
||||
FIELD DTCREAZ
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_S_ORAC 5
|
||||
BEGIN
|
||||
PROMPT 45 14 "Ora "
|
||||
PICTURE "@@:@@"
|
||||
FIELD ORCREAZ
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_USERINS 16
|
||||
GROUPBOX DLG_NULL 76 3
|
||||
BEGIN
|
||||
PROMPT 44 18 "Utente Ins."
|
||||
FLAGS "D"
|
||||
FIELD UTCREAZ
|
||||
PROMPT 1 16 "@bDettagli ultimo aggiornamento"
|
||||
END
|
||||
|
||||
DATE F_DATAAGG
|
||||
STRING F_S_UTENTEUA 16
|
||||
BEGIN
|
||||
PROMPT 2 19 "Data Agg."
|
||||
FLAGS "D"
|
||||
FIELD DTULAGG
|
||||
END
|
||||
|
||||
NUMBER F_ORAAGG 6
|
||||
BEGIN
|
||||
PROMPT 25 19 "Ora Agg."
|
||||
FIELD ORULAGG
|
||||
PROMPT 2 17 "Utente "
|
||||
FIELD UTCREAZ
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_USERAGG 16
|
||||
DATE F_S_DATAUA
|
||||
BEGIN
|
||||
PROMPT 44 19 "Utente Agg."
|
||||
FLAGS "D"
|
||||
FIELD UTULAGG
|
||||
PROMPT 27 17 "Data "
|
||||
FIELD DTCREAZ
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_S_ORAUA 5
|
||||
BEGIN
|
||||
PROMPT 45 17 "Ora "
|
||||
PICTURE "@@:@@"
|
||||
FIELD ORCREAZ
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
TOOLBAR "" 0 0 0 2
|
||||
|
||||
BUTTON DLG_OK 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_DELREC 2 2
|
||||
BEGIN
|
||||
PROMPT 2 1 "Elimina"
|
||||
MESSAGE EXIT,K_DEL
|
||||
PICTURE BMP_DELREC
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 2 2
|
||||
BEGIN
|
||||
PROMPT 4 1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
||||
|
||||
PAGE "Periodi di sospensione" -1 -1 78 20
|
||||
|
||||
GROUPBOX DLG_NULL 76 5
|
||||
BEGIN
|
||||
PROMPT 1 0 "@bDati periodo di sospensione"
|
||||
END
|
||||
|
||||
NUMBER F_S_CODPER 6
|
||||
BEGIN
|
||||
PROMPT 2 1 "Codice "
|
||||
FLAGS "ZDR"
|
||||
FIELD CODPER
|
||||
END
|
||||
|
||||
STRING F_S_TPSOSP 3
|
||||
BEGIN
|
||||
PROMPT 2 2 "Tipo "
|
||||
FIELD TPSOSP
|
||||
USE &TSP
|
||||
INPUT CODTAB F_S_TPSOSP
|
||||
INPUT S0 F_S_DTPSOSP
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_S_TPSOSP CODTAB
|
||||
OUTPUT F_S_DTPSOSP S0
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
STRING F_S_DTPSOSP 50
|
||||
BEGIN
|
||||
PROMPT 16 2 ""
|
||||
USE &TSP
|
||||
INPUT S0 F_S_DTPSOSP
|
||||
INPUT CODTAB F_S_TPSOSP
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_S_TPSOSP
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
DATE F_S_DADATA
|
||||
BEGIN
|
||||
PROMPT 2 3 "Consegne sospese dal "
|
||||
FIELD DATAINI
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
DATE F_S_ADATA
|
||||
BEGIN
|
||||
PROMPT 40 3 "al "
|
||||
FIELD DATAFIN
|
||||
CHECKTYPE REQUIRED
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 76 4
|
||||
BEGIN
|
||||
PROMPT 1 5 "@bDati fatturazione"
|
||||
END
|
||||
|
||||
BOOLEAN F_S_FLFAT
|
||||
BEGIN
|
||||
PROMPT 2 6 "Flag Fatturazione"
|
||||
FIELD FLFATT
|
||||
MESSAGE FALSE CLEAR,F_S_IMPFAT|CLEAR,F_S_PERFAT
|
||||
MESSAGE TRUE ENABLE,F_S_IMPFAT|ENABLE,F_S_PERFAT
|
||||
END
|
||||
|
||||
CURRENCY F_S_IMPFAT
|
||||
BEGIN
|
||||
PROMPT 2 7 "Importo da fatturare "
|
||||
FLAGS "U"
|
||||
FIELD IMPFATT
|
||||
END
|
||||
|
||||
NUMBER F_S_PERFAT 6 2
|
||||
BEGIN
|
||||
PROMPT 43 7 "Percentuale da fatturare "
|
||||
FLAGS "U"
|
||||
FIELD PERCFATT
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 76 4
|
||||
BEGIN
|
||||
PROMPT 1 9 "@bNote"
|
||||
END
|
||||
|
||||
MEMO F_S_NOTEPS 74 3
|
||||
BEGIN
|
||||
PROMPT 2 9 ""
|
||||
FIELD NOTE
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 76 3
|
||||
BEGIN
|
||||
PROMPT 1 13 "@bDettagli creazione periodo di sospensione"
|
||||
END
|
||||
|
||||
STRING F_S_UTENTEC 16
|
||||
BEGIN
|
||||
PROMPT 2 14 "Utente "
|
||||
FIELD UTCREAZ
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
DATE F_S_DATAC
|
||||
BEGIN
|
||||
PROMPT 27 14 "Data "
|
||||
FIELD DTCREAZ
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_S_ORAC 5
|
||||
BEGIN
|
||||
PROMPT 45 14 "Ora "
|
||||
PICTURE "@@:@@"
|
||||
FIELD ORCREAZ
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 76 3
|
||||
BEGIN
|
||||
PROMPT 1 16 "@bDettagli ultimo aggiornamento"
|
||||
END
|
||||
|
||||
STRING F_S_UTENTEUA 16
|
||||
BEGIN
|
||||
PROMPT 2 17 "Utente "
|
||||
FIELD UTCREAZ
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
DATE F_S_DATAUA
|
||||
BEGIN
|
||||
PROMPT 27 17 "Data "
|
||||
FIELD DTCREAZ
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_S_ORAUA 5
|
||||
BEGIN
|
||||
PROMPT 45 17 "Ora "
|
||||
PICTURE "@@:@@"
|
||||
FIELD ORCREAZ
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
||||
TOOLBAR "" 0 0 0 2
|
||||
|
||||
BUTTON DLG_OK 2 2
|
||||
BEGIN
|
||||
PROMPT 1 1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_DELREC 2 2
|
||||
BEGIN
|
||||
PROMPT 2 1 "Elimina"
|
||||
MESSAGE EXIT,K_DEL
|
||||
PICTURE BMP_DELREC
|
||||
END
|
||||
|
||||
BUTTON DLG_CANCEL 2 2
|
||||
BEGIN
|
||||
PROMPT 4 1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
|
@ -158,7 +158,7 @@ bool TGenera_planning_app::kill_planning (TISAM_recordset& selrighe) const
|
||||
rplan.remove();
|
||||
}
|
||||
rplan.close();
|
||||
rplan.pack();
|
||||
//rplan.pack();
|
||||
}
|
||||
else
|
||||
return error_box(TR("Impossibile eliminare i planning richiesti"));
|
||||
|
@ -298,7 +298,7 @@ bool TGestione_planning_mask::on_field_event(TOperable_field& o, TField_event e,
|
||||
{
|
||||
switch (o.dlg())
|
||||
{
|
||||
//se quiesti campi vengono riempiti, allora riempi lo sheet opportunamante
|
||||
//se questi campi vengono riempiti, allora riempi lo sheet opportunamante
|
||||
case F_DADATA:
|
||||
case F_ADATA:
|
||||
case F_CODITI:
|
||||
|
@ -344,7 +344,5 @@ BEGIN
|
||||
PROMPT 4 1 ""
|
||||
END
|
||||
|
||||
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
21
lv/lvperisop.h
Executable file
21
lv/lvperisop.h
Executable file
@ -0,0 +1,21 @@
|
||||
#ifndef __LVPERISOSP_H
|
||||
#define __LVPERISOSP_H
|
||||
|
||||
#define LVPERISOSP_CODCF "CODCF"
|
||||
#define LVPERISOSP_CODCONT "CODCONT"
|
||||
#define LVPERISOSP_CODPER "CODPER"
|
||||
#define LVPERISOSP_DATAINI "DATAINI"
|
||||
#define LVPERISOSP_DATAFIN "DATAFIN"
|
||||
#define LVPERISOSP_TPSOSP "TPSOSP"
|
||||
#define LVPERISOSP_FLFATT "FLFATT"
|
||||
#define LVPERISOSP_IMPFATT "IMPFATT"
|
||||
#define LVPERISOSP_PERCFATT "PERCFATT"
|
||||
#define LVPERISOSP_UTCREAZ "UTCREAZ"
|
||||
#define LVPERISOSP_DTCREAZ "DTCREAZ"
|
||||
#define LVPERISOSP_ORCREAZ "ORCREAZ"
|
||||
#define LVPERISOSP_UTULAGG "UTULAGG"
|
||||
#define LVPERISOSP_DTULAGG "DTULAGG"
|
||||
#define LVPERISOSP_ORULAGG "ORULAGG"
|
||||
#define LVPERISOSP_NOTE "NOTE"
|
||||
|
||||
#endif
|
Loading…
x
Reference in New Issue
Block a user