Patch level : 10.0 patch 414
Files correlati : lv2 Ricompilazione Demo : [ ] Commento : Aggiunta la gestione del ritiro automatico della dotazione temporanea git-svn-id: svn://10.65.10.50/trunk@19225 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
19378ae935
commit
e5f88c409a
100
lv/lv2400.cpp
100
lv/lv2400.cpp
@ -4,6 +4,7 @@
|
||||
#include <reprint.h>
|
||||
|
||||
#include "lvlib.h"
|
||||
#include "../mg/clifogiac.h"
|
||||
#include "../ve/velib.h"
|
||||
#include "../ve/rcondv.h"
|
||||
|
||||
@ -202,19 +203,21 @@ bool TGenera_documenti_app::crea_documento(const TISAM_recordset& plan, TLog_rep
|
||||
|
||||
const long ndoc = doc.get_long(DOC_NDOC);
|
||||
|
||||
//preparo la chiave per la tabella righe contratti
|
||||
TToken_string keyrcont;
|
||||
keycont.add(codcli);
|
||||
keycont.add(codcont);
|
||||
|
||||
FOR_EACH_ASSOC_OBJECT(_quantita,h,codart,obj)
|
||||
{
|
||||
crea_riga(codart, modpas, tplis, false, prinbo, doc, rep);
|
||||
//preparo la chiave per la tabella righe contratti
|
||||
TToken_string keyrcont;
|
||||
keyrcont.add(codcli);
|
||||
keyrcont.add(codcont);
|
||||
keyrcont.add(codart);
|
||||
const TRectype& rcont = cache().get(LF_LVRCONDV, keyrcont);
|
||||
const TDate dadata = (TDate)rcont.get(LVRCONDV_INDTTMP);
|
||||
const TDate adata = (TDate)rcont.get(LVRCONDV_FIDTTMP);
|
||||
|
||||
/*const TDate dadata = rcont.get(LVRCONDV_INDTTMP).as_date();
|
||||
const TDate adata = rcont.get(LVRCONDV_FIDTTMP).as_date();
|
||||
if (dadata.ok() && dtcons >= dadata && dtcons <= adata)
|
||||
crea_riga(rcont, modpas, true, doc);*/
|
||||
if (dadata.ok() && dtcons == adata)
|
||||
crea_riga(codart, modpas, tplis, true, prinbo, doc, rep);
|
||||
else
|
||||
crea_riga(codart, modpas, tplis, false, prinbo, doc, rep);
|
||||
}
|
||||
|
||||
if (doc.rows() > 0)
|
||||
@ -238,8 +241,7 @@ bool TGenera_documenti_app::crea_documento(const TISAM_recordset& plan, TLog_rep
|
||||
//CREA_RIGA: questa funzione crea una riga merce per una bolla di consegna
|
||||
void TGenera_documenti_app::crea_riga(const TString& codart, const char modpas, const int tplis, const bool tmp, const bool prinbo, TDocumento& doc, TLog_report& rep)
|
||||
{
|
||||
const int perarr = _configlv->get_int("Perarr");
|
||||
|
||||
const int perarr = ini_get_int(CONFIG_DITTA, "lv", "Perarr");
|
||||
//creo la nuova riga
|
||||
TString4 tiporiga;
|
||||
switch (_buono)
|
||||
@ -249,8 +251,6 @@ void TGenera_documenti_app::crea_riga(const TString& codart, const char modpas,
|
||||
default: break;
|
||||
}
|
||||
|
||||
TRiga_documento& rdoc = doc.new_row(tiporiga);
|
||||
|
||||
const long codcli = doc.get_long(DOC_CODCF);
|
||||
const long codcont = doc.get_long(DOC_CODCONT);
|
||||
|
||||
@ -272,7 +272,7 @@ void TGenera_documenti_app::crea_riga(const TString& codart, const char modpas,
|
||||
arrot = false;
|
||||
|
||||
const real conguaglio = rcont.get_real(LVRCONDV_QTACONG);
|
||||
const real& qta = *(real*)_quantita.objptr(codart);
|
||||
real& qta = *(real*)_quantita.objptr(codart);
|
||||
const real& qta1 = *(real*)_quantita_ritirata.objptr(codart);
|
||||
|
||||
//instanzio una cache sulla tabella del magazzino
|
||||
@ -280,6 +280,69 @@ void TGenera_documenti_app::crea_riga(const TString& codart, const char modpas,
|
||||
//recupero i dati di interesse dall'anagrafica di magazzino
|
||||
const real ppconf = anamag.get_real(ANAMAG_PPCONF);
|
||||
|
||||
//GESTIONE DOTAZIONE TEMPOARANEA
|
||||
if (tmp && rcont.get_bool(LVRCONDV_RITAUDTTMP))
|
||||
{
|
||||
TRiga_documento& rdoc = doc.new_row(tiporiga);
|
||||
rdoc.put(RDOC_CODART,codart);
|
||||
rdoc.put(RDOC_CODARTMAG,codart);
|
||||
rdoc.put(RDOC_CHECKED,'X');
|
||||
|
||||
if (prinbo)
|
||||
rdoc.put(RDOC_PREZZO,rcont.get_real(LVRCONDV_PRZDTTMP)); //prezzo
|
||||
|
||||
//recupero i valori delle dotazione temporanea dal magazzino del cliente
|
||||
TLocalisamfile magcli(LF_CLIFOGIAC);
|
||||
magcli.put(CLIFOGIAC_ANNOES, doc.get_date(DOC_DATADOC).year());
|
||||
magcli.put(CLIFOGIAC_TIPOCF, 'C');
|
||||
magcli.put(CLIFOGIAC_CODCF, codcli);
|
||||
magcli.put(CLIFOGIAC_INDSPED, 0); //in realtà è da leggere dal contratto
|
||||
magcli.put(CLIFOGIAC_CODART, codart);
|
||||
magcli.put(CLIFOGIAC_NRIGA, 1);
|
||||
//leggo il record corrispondente
|
||||
magcli.read();
|
||||
long dottmp = magcli.get_long(CLIFOGIAC_DOTTM);
|
||||
|
||||
//se ho ritirato un quantitativo di roba maggiore o uguale alla dotazione temporanea
|
||||
//allora creo la nuova riga documento e azzero la dottmp; altrimenti preparo la riga
|
||||
//per la quantità che ho ritirato e tengo traccia della cosa
|
||||
if (qta >= dottmp)
|
||||
{
|
||||
qta -= dottmp;
|
||||
rdoc.put(RDOC_QTAGG1, dottmp); //quantità ritirata
|
||||
rdoc.put(RDOC_GENERATA, true);
|
||||
rdoc.put(RDOC_CODAGG1, ini_get_string(CONFIG_DITTA, "lv", "CAULVRITDT"));
|
||||
dottmp = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
dottmp -= qta.integer();
|
||||
rdoc.put(RDOC_QTAGG1, qta); //quantità ritirata
|
||||
rdoc.put(RDOC_GENERATA, true);
|
||||
rdoc.put(RDOC_CODAGG1, ini_get_string(CONFIG_DITTA, "lv", "CAULVRITDT"));
|
||||
TString str;
|
||||
str << "L'articolo " << codart << " inserito nel documento " << doc.get(DOC_CODNUM) << "-" << doc.get(DOC_TIPODOC)
|
||||
<< " numero " << doc.get(DOC_NDOC) << " in dotazione temporanea non è stato ritirato completamente."
|
||||
<< " Mancano " << dottmp << "unità";
|
||||
rep.log(1, str);
|
||||
qta = ZERO;
|
||||
}
|
||||
|
||||
//riscrivo la dotazione temporanea aggiornata
|
||||
magcli.put(CLIFOGIAC_ANNOES, doc.get_date(DOC_DATADOC).year());
|
||||
magcli.put(CLIFOGIAC_TIPOCF, 'C');
|
||||
magcli.put(CLIFOGIAC_CODCF, codcli);
|
||||
magcli.put(CLIFOGIAC_INDSPED, 0); //in realtà è da leggere dal contratto
|
||||
magcli.put(CLIFOGIAC_CODART, codart);
|
||||
magcli.put(CLIFOGIAC_NRIGA, 1);
|
||||
magcli.put(CLIFOGIAC_DOTTM, dottmp);
|
||||
magcli.rewrite();
|
||||
}
|
||||
|
||||
if (qta > ZERO)
|
||||
{
|
||||
TRiga_documento& rdoc = doc.new_row(tiporiga);
|
||||
|
||||
const real quantita_noarr = qta - conguaglio;
|
||||
real quantita_arr = quantita_noarr > ZERO ? quantita_noarr : ZERO;
|
||||
//se devo arrotondare
|
||||
@ -306,8 +369,7 @@ void TGenera_documenti_app::crea_riga(const TString& codart, const char modpas,
|
||||
rdoc.put(RDOC_QTAGG4, quantita_noarr); //quantità che avrei consegnato se non arrotondavo (qta ritirata)
|
||||
rdoc.put(RDOC_GENERATA, true);
|
||||
|
||||
const TString4 causale = ini_get_string(CONFIG_DITTA, "lv", "CAUSLAV");
|
||||
rdoc.put(RDOC_CODAGG1, causale); //causale presa dalla configurazione
|
||||
rdoc.put(RDOC_CODAGG1, ini_get_string(CONFIG_DITTA, "lv", "CAUSLAV")); //causale presa dalla configurazione
|
||||
|
||||
//aggiorno il conguaglio sulla riga del contratto
|
||||
if (!rcont.empty())
|
||||
@ -337,7 +399,6 @@ void TGenera_documenti_app::crea_riga(const TString& codart, const char modpas,
|
||||
catven = "";
|
||||
else
|
||||
catven = cfven.get(CFV_CATVEN);
|
||||
|
||||
//cerco il prezzo sul listino
|
||||
key.cut(0);
|
||||
key.add('L'); //tipo
|
||||
@ -357,7 +418,6 @@ void TGenera_documenti_app::crea_riga(const TString& codart, const char modpas,
|
||||
trvlst = true;
|
||||
}
|
||||
}
|
||||
|
||||
//se non ho trovato un listino, o se non c'è un listino impostato
|
||||
//propongo come prezzo il valore convenzionale
|
||||
if (!trvlst)
|
||||
@ -411,7 +471,7 @@ void TGenera_documenti_app::crea_riga(const TString& codart, const char modpas,
|
||||
<< " non è prsente sul contratto del cliente " << codcli;
|
||||
rep.log(1, str);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////
|
||||
|
Loading…
x
Reference in New Issue
Block a user