Patch level : 10.0 patch 4??

Files correlati     : lv3 profioli di lv
Ricompilazione Demo : [ ]
Commento            :
Quando inserisco un buono di ritiro a mano, solo il buono di ritiro e non il buono di consegna  data di consegna prevista me la deve proporre in automatico, la prima con data superiore alla data del buono di ritiro.
Se ne inserisco una a mano di un giorno che non è in consegna (inserisco un martedi e il cliente passa il lunedi e il giovedi (file lvpasplan) e quel giorno non è previsto nel giri  cioè non ho inserito una consegna per quella data (file lvrconsplan)) mi dovrebbe dare una segnalazione di conferma tipo “giorno di prevista consegna non corrispondente al cliente, confermi?”


git-svn-id: svn://10.65.10.50/trunk@19196 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca83 2009-08-06 15:32:02 +00:00
parent 5ffdc6d8e5
commit b6b59864dd
5 changed files with 77 additions and 7 deletions

View File

@ -50,6 +50,7 @@ public:
virtual void user_set_handler( short fieldid, int index);
virtual void user_set_row_handler(TMask& rm, short field, int index);
void reset_var_mask() {_stcodcf = 0; _stcodcont = 0;}
TDate proponi_dataprco() const;
TGestione_bolle_msk(const char* tipodoc);
int _autoselect;
@ -337,6 +338,29 @@ void TGestione_bolle_msk::dettaglio_causale(TSheet_field& ss)
dmsk.set(F_LVDESCAU, cau.descr());
}
//PROPONI_DATAPRCO: metodo che propone la prima data di prevista consegna
TDate TGestione_bolle_msk::proponi_dataprco() const
{
const TDate dadata = get(F_DATADOC);
TDate dataprco(0,0,0);
if (dadata.ok())
{
TDate adata = dadata;
adata.addmonth(1);
TString query = "USE LVRCONSPLAN KEY 3\n";
query << "FROM CODCF=" << get(F_CODCF) << " CODCONT=" << get(F_LVCODCONT) << " DTCONS=" << dadata << "\n";
query << "TO CODCF=" << get(F_CODCF) << " CODCONT=" << get(F_LVCODCONT) << " DTCONS=" << adata << "\n";
TISAM_recordset consegne(query);
if (consegne.move_first())
dataprco = consegne.get(LVRCONSPLAN_DTCONS).as_date();
}
return dataprco;
}
////////////////////////////
// HANDLER DI DOCUMENTO //
////////////////////////////
@ -460,6 +484,10 @@ bool TGestione_bolle_msk::lv_contratto_handler(TMask_field& f, KEY k)
TString16 tmp;
tmp << codcont;
dmsk.set(F_LVCODCONT, tmp);
const TDate dataprco = dmsk.proponi_dataprco();
if (dataprco.ok() && dmsk.field(F_LVDATAPRCO).empty())
dmsk.set(F_LVDATAPRCO, dataprco);
}
TDocumento& doc = dmsk.doc();
@ -468,12 +496,43 @@ bool TGestione_bolle_msk::lv_contratto_handler(TMask_field& f, KEY k)
return true;
}
//LV_DATAPRCO_HANDLER: handler che si occupa della gestione del campo "data di prevista consegna"
bool TGestione_bolle_msk::lv_dataprco_handler(TMask_field& f, KEY k)
{
TGestione_bolle_msk& dmsk = (TGestione_bolle_msk&)f.mask();
//se sto leggendo o generando un buono di ritiro, abilito questo campo
if (k == K_TAB)
{
TGestione_bolle_msk& dmsk = (TGestione_bolle_msk&)f.mask();
TDocumento& doc = dmsk.doc();
//se la data viene modificata a mano, controlla se è una data di previsto passaggio;
//se non lo è chiedi conferma se si desidera mantenre la data indicata manualmente o se
//è meglio riproporre la data di previsto passaggio
if (!f.empty() && f.focusdirty() && doc.get_date("DATAPRCO") != (TDate)f.get())
{
doc.put("DATAPRCO", f.get());
if (dmsk.get(F_CODNUM) == ini_get_string(CONFIG_DITTA, "lv", "NUM_RIT(0)") && dmsk.get(F_TIPODOC) == ini_get_string(CONFIG_DITTA, "lv", "TIPODOC_RIT(0)"))
dmsk.field(F_LVDATAPRCO).enable();
TString query1 = "USE LVRCONSPLAN KEY 3\n";
query1 << "FROM CODCF=" << dmsk.get(F_CODCF) << " CODCONT=\"" << dmsk.get(F_LVCODCONT) << "\" DTCONS=" << f.get() << "\n";
query1 << "TO CODCF=" << dmsk.get(F_CODCF) << " CODCONT=\"" << dmsk.get(F_LVCODCONT) << "\" DTCONS=" << f.get() << "\n";
TISAM_recordset consegne(query1);
if (!consegne.move_first())
{
f.set_focusdirty(false);
if (!yesno_box(TR("Non è previsto nessun passaggio per questa data, confermi lo stesso?")))
{
const TDate dataprco = dmsk.proponi_dataprco();
if (dataprco.ok())
{
f.set(dataprco);
doc.put("DATAPRCO", dataprco);
}
}
}
}
}
return true;
}
@ -519,6 +578,10 @@ bool TGestione_bolle_msk::lv_bolla_handler(TMask_field& f, KEY k)
doc.put(DOC_DATADOC, datadoc);
doc.put(DOC_CODINDSP, indsped);
doc.put(DOC_CODCONT, codcont);
const TDate dataprco = dmsk.proponi_dataprco();
if (dataprco.ok() && dmsk.field(F_LVDATAPRCO).empty())
doc.put("DATAPRCO", dataprco);
}
if (dmsk._stcodcf == codcf && dmsk._stcodcont == codcont && nrighe > 0)
@ -1107,7 +1170,7 @@ void TGestione_bolle_msk::user_set_handler( short fieldid, int index)
case 4101: set_field_handler(fieldid, lv_data_handler); break;
case 4102: set_field_handler(fieldid, lv_contratto_handler); break;
case 4103: set_field_handler(fieldid, lv_bolla_handler); break;
case 4104: set_field_handler(fieldid, lv_dataprco_handler); break;
case 4105: set_field_handler(fieldid, lv_dataprco_handler); break;
default : TDocumento_mask::user_set_handler(fieldid, index); break;
}
}
@ -1220,6 +1283,12 @@ void TGestione_bolle_app::init_insert_mode(TMask &m)
TDocumento& d = mask.doc();
_giac.reset(d);
//se sto leggendo o generando un buono di ritiro, abilito questo campo
bool enable_dataprco = mask.get(F_CODNUM) == ini_get_string(CONFIG_DITTA, "lv", "NUM_RIT(0)") &&
mask.get(F_TIPODOC) == ini_get_string(CONFIG_DITTA, "lv", "TIPODOC_RIT(0)");
mask.field(F_LVDATAPRCO).enable(enable_dataprco);
mask.reset_var_mask();
mask.first_focus(F_CODCF, false);

View File

@ -226,7 +226,7 @@ Tipo(1)=05
[HANDLERS]
Handler(0) = 106|4101
Handler(1) = 108|4102
Handler(3) = 101|4104
Handler(3) = 805|4105
[PROFILOGRUPPO]
101 = S_NASCOSTO

View File

@ -227,6 +227,7 @@ Tipo(1)=05
Handler(0) = 106|4101
Handler(1) = 108|4103
Handler(2) = 125|4103
Handler(3) = 805|4105
[PROFILOGRUPPO]
101 = S_NASCOSTO

View File

@ -210,7 +210,7 @@ Tipo(1)=05
Handler(0) = 106|4101
Handler(1) = 108|4103
Handler(2) = 125|4103
Handler(3) = 101|4104
Handler(3) = 805|4105
[PROFILOGRUPPO]
101 = S_NASCOSTO

View File

@ -228,7 +228,7 @@ Tipo(1)=05
Handler(0) = 106|4101
Handler(1) = 108|4103
Handler(2) = 125|4103
Handler(3) = 101|4104
Handler(3) = 805|4105
[PROFILOGRUPPO]
101 = S_NASCOSTO