Patch level : 10.0 patch 413

Files correlati     : lv2
Ricompilazione Demo : [ ]
Commento            :
2) 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)  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?”

Mi propone anche la data del buono di ritiro, ma deve propormi almeno il giorno dopo, difficile che conto lo sporco oggi per oggi


6) Come di avevo anticipato al telefono occorre un tabulato durante la generazione delle bolle di consegna Per elencare gli articoli SULLA BOLLA DI SPORCO e messi in bolla di consegna che non sono presenti in contratto Il tabulato dovrebbe fornire i seguenti dati Cliente,articolo quantità , numero e data bolla (Corretto il mesaggio del log)


git-svn-id: svn://10.65.10.50/trunk@19202 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca83 2009-08-11 14:29:29 +00:00
parent afbf8ea975
commit 879ef7ba98

View File

@ -5,12 +5,13 @@
#include "lvlib.h"
#include "../ve/velib.h"
#include "../ve/rcondv.h"
#include "doc.h"
#include "rdoc.h"
#include "lvcondv.h"
#include "lvrcondv.h"
#include "lvrconsplan.h"
#include "rdoc.h"
#include "lv2400a.h"
@ -158,6 +159,7 @@ bool TGenera_documenti_app::crea_documento(const TISAM_recordset& plan, TLog_rep
//creo il documento corretto riempiendo i campi che già conosco
TDocumento doc('D',anno,codnum,0);
doc.put(DOC_TIPODOC, tpdoc);
doc.write();
//calcola tutte le quantità riportate sui documenti di ritiro, sui documenti di anticipo e sulle bolle di consegna
//...eventualmente modificate a mano
@ -204,7 +206,7 @@ bool TGenera_documenti_app::crea_documento(const TISAM_recordset& plan, TLog_rep
}
if (doc.rows() > 0)
err = doc.write();
err = doc.rewrite();
else
doc.remove();
@ -249,14 +251,6 @@ void TGenera_documenti_app::crea_riga(const TString& codart, const char modpas,
keyrcont.add(codart);
//instanzio una cache sulla tabella delle righe contratti
const TRectype& rcont = cache().get(LF_LVRCONDV,keyrcont);
//se il record è vuoto aggiorno il log
if (rcont.empty())
{
TString str;
str << "L'articolo " << codart << "non è prsente sul contratto del cliente " << codcli;
rep.log(1, str);
}
//recupero i dati di interesse dalla riga del contratto
bool arrot;
@ -308,11 +302,70 @@ void TGenera_documenti_app::crea_riga(const TString& codart, const char modpas,
//elaborazione sul prezzo da utilizzare
real prezzo;
//elaborazione per il prezzo: o lo prendo dalle righe contratto, o dall'anagrafica magazzino
if (tplis == 0)
prezzo = rcont.get_real(LVRCONDV_PREZZO);
if (rcont.empty())
{
//PROPONI PREZZO
TToken_string key;
key.add('C');
key.add(codcli);
const TRectype& cfven = cache().get(LF_CFVEN, key);
bool trvlst = false;
if (!cfven.empty())
{
//se è settata la categoria merceologica, leggo sia il listino che la cat merc, altrimenti solo il listino
TString8 codlis = cfven.get(CFV_CODLIST);
TString8 catven;
TConfig* configve = new TConfig(CONFIG_DITTA,"ve");
const char gesliscv = configve->get_char("GESLISCV");
if (gesliscv != 'X')
catven = "";
else
catven = cfven.get(CFV_CATVEN);
//cerco il prezzo sul listino
key.cut(0);
key.add('L'); //tipo
key.add(catven); //catven
key.add(""); //tipocf
key.add(""); //codcf
key.add(codlis); //codlis
key.add('A'); //tiporiga
key.add(codart); //codriga
key.add(""); //um
key.add(""); //nscagl
const TRectype& rcondv = cache().get(LF_RCONDV, key);
if (!rcondv.empty())
{
prezzo = rcondv.get_real(RCONDV_PREZZO);
trvlst = true;
}
}
//se non ho trovato un listino, o se non c'è un listino impostato
//propongo come prezzo il valore convenzionale
if (!trvlst)
{
key.cut(0);
key.add(codart);
key.add(1);
const TRectype& umart = cache().get(LF_UMART, key);
prezzo = umart.get_real(UMART_PREZZO);
if (umart.get(UMART_PREZZO).full())
trvlst = true;
}
}
else
prezzo = anamag.get_real(ANAMAG_COSTSTD);
{
//elaborazione per il prezzo: o lo prendo dalle righe contratto, o dall'anagrafica magazzino
if (tplis == 0)
prezzo = rcont.get_real(LVRCONDV_PREZZO);
else
prezzo = anamag.get_real(ANAMAG_COSTSTD);
}
rdoc.put(RDOC_CODART,codart);
rdoc.put(RDOC_CODARTMAG,codart);
@ -320,7 +373,7 @@ void TGenera_documenti_app::crea_riga(const TString& codart, const char modpas,
if (prinbo)
{
if (!tmp)
rdoc.put(RDOC_PREZZO,rcont.get_real(LVRCONDV_PREZZO));
rdoc.put(RDOC_PREZZO, prezzo);
else //per adesso per questo ramo non ci passa mai, perchè non sappiamo come gestire le dotazioni temporanee
rdoc.put(RDOC_PREZZO,rcont.get_real(LVRCONDV_PRZDTTMP));
rdoc.put(RDOC_SCONTO,rcont.get(LVRCONDV_SCONTPERC)); //sconto
@ -335,6 +388,17 @@ void TGenera_documenti_app::crea_riga(const TString& codart, const char modpas,
rdoc.put(RDOC_CODMAG, magazzino);
rdoc.put(RDOC_CODMAGC, magazzinoc);
//se il record di riga contratto è vuoto aggiorno il log
if (rcont.empty())
{
TString str;
str << "L'articolo " << codart << " inserito nel documento " << doc.get(DOC_CODNUM) << "-" << doc.get(DOC_TIPODOC)
<< " numero " << doc.get(DOC_NDOC) << " in quantità " << quantita_arr
<< "non è prsente sul contratto del cliente " << codcli;
rep.log(1, str);
}
}
//////////////////////////////////////////////////////////////
@ -739,8 +803,6 @@ bool TGenera_documenti_app::transfer()
docritiri.set_var("#DADATA", dadatacons);
docritiri.set_var("#ADATA", adatacons);
int cazzone = docritiri.items();
TProgind pi(docritiri.items(), TR("Generazione documenti in corso..."), true, true);
for (bool ok = docritiri.move_first(); ok; ok = docritiri.move_next())
@ -780,7 +842,7 @@ bool TGenera_documenti_app::transfer()
TISAM_recordset plan(query);
if (plan.move_first())
if (plan.move_to(1))
{
_quantita.destroy();
_quantita_ritirata.destroy();