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 <reprint.h>
|
||||||
|
|
||||||
#include "lvlib.h"
|
#include "lvlib.h"
|
||||||
|
#include "../mg/clifogiac.h"
|
||||||
#include "../ve/velib.h"
|
#include "../ve/velib.h"
|
||||||
#include "../ve/rcondv.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);
|
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)
|
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();
|
if (dadata.ok() && dtcons == adata)
|
||||||
const TDate adata = rcont.get(LVRCONDV_FIDTTMP).as_date();
|
crea_riga(codart, modpas, tplis, true, prinbo, doc, rep);
|
||||||
if (dadata.ok() && dtcons >= dadata && dtcons <= adata)
|
else
|
||||||
crea_riga(rcont, modpas, true, doc);*/
|
crea_riga(codart, modpas, tplis, false, prinbo, doc, rep);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (doc.rows() > 0)
|
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
|
//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)
|
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
|
//creo la nuova riga
|
||||||
TString4 tiporiga;
|
TString4 tiporiga;
|
||||||
switch (_buono)
|
switch (_buono)
|
||||||
@ -249,8 +251,6 @@ void TGenera_documenti_app::crea_riga(const TString& codart, const char modpas,
|
|||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
TRiga_documento& rdoc = doc.new_row(tiporiga);
|
|
||||||
|
|
||||||
const long codcli = doc.get_long(DOC_CODCF);
|
const long codcli = doc.get_long(DOC_CODCF);
|
||||||
const long codcont = doc.get_long(DOC_CODCONT);
|
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;
|
arrot = false;
|
||||||
|
|
||||||
const real conguaglio = rcont.get_real(LVRCONDV_QTACONG);
|
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);
|
const real& qta1 = *(real*)_quantita_ritirata.objptr(codart);
|
||||||
|
|
||||||
//instanzio una cache sulla tabella del magazzino
|
//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
|
//recupero i dati di interesse dall'anagrafica di magazzino
|
||||||
const real ppconf = anamag.get_real(ANAMAG_PPCONF);
|
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;
|
const real quantita_noarr = qta - conguaglio;
|
||||||
real quantita_arr = quantita_noarr > ZERO ? quantita_noarr : ZERO;
|
real quantita_arr = quantita_noarr > ZERO ? quantita_noarr : ZERO;
|
||||||
//se devo arrotondare
|
//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_QTAGG4, quantita_noarr); //quantità che avrei consegnato se non arrotondavo (qta ritirata)
|
||||||
rdoc.put(RDOC_GENERATA, true);
|
rdoc.put(RDOC_GENERATA, true);
|
||||||
|
|
||||||
const TString4 causale = ini_get_string(CONFIG_DITTA, "lv", "CAUSLAV");
|
rdoc.put(RDOC_CODAGG1, ini_get_string(CONFIG_DITTA, "lv", "CAUSLAV")); //causale presa dalla configurazione
|
||||||
rdoc.put(RDOC_CODAGG1, causale); //causale presa dalla configurazione
|
|
||||||
|
|
||||||
//aggiorno il conguaglio sulla riga del contratto
|
//aggiorno il conguaglio sulla riga del contratto
|
||||||
if (!rcont.empty())
|
if (!rcont.empty())
|
||||||
@ -337,7 +399,6 @@ void TGenera_documenti_app::crea_riga(const TString& codart, const char modpas,
|
|||||||
catven = "";
|
catven = "";
|
||||||
else
|
else
|
||||||
catven = cfven.get(CFV_CATVEN);
|
catven = cfven.get(CFV_CATVEN);
|
||||||
|
|
||||||
//cerco il prezzo sul listino
|
//cerco il prezzo sul listino
|
||||||
key.cut(0);
|
key.cut(0);
|
||||||
key.add('L'); //tipo
|
key.add('L'); //tipo
|
||||||
@ -357,7 +418,6 @@ void TGenera_documenti_app::crea_riga(const TString& codart, const char modpas,
|
|||||||
trvlst = true;
|
trvlst = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//se non ho trovato un listino, o se non c'è un listino impostato
|
//se non ho trovato un listino, o se non c'è un listino impostato
|
||||||
//propongo come prezzo il valore convenzionale
|
//propongo come prezzo il valore convenzionale
|
||||||
if (!trvlst)
|
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;
|
<< " non è prsente sul contratto del cliente " << codcli;
|
||||||
rep.log(1, str);
|
rep.log(1, str);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////
|
||||||
|
Loading…
x
Reference in New Issue
Block a user