Patch level : 10.0 patch 604
Files correlati : lv2 Ricompilazione Demo : [ ] Commento : Corretto l'utilizzo delle causali di partenza presenti sulle righe dei BdR git-svn-id: svn://10.65.10.50/trunk@20023 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
58628ad60a
commit
965e22e6c4
@ -53,7 +53,7 @@ class TGenera_documenti_app : public TSkeleton_application
|
||||
private:
|
||||
//Metodi per la generazione dei documenti
|
||||
bool crea_documento(const TISAM_recordset& plan, TLog_report& rep, int& numdocgen, TAssoc_array& documenti);
|
||||
void crea_riga(const TString& codart, const char modpas, const int tplis, const bool tmp, const bool prinbo, TDocumento& doc, TLog_report& rep);
|
||||
void crea_riga(TToken_string& chiave, const char modpas, const int tplis, const bool tmp, const bool prinbo, TDocumento& doc, TLog_report& rep);
|
||||
//Metodi per il recupero di codnum, tpdoc, stato
|
||||
bool numerazione_ddt(TString& codnum, TString& tpdoc, TString& statoi, TString& statof) const;
|
||||
bool numerazione_drit(const int cod, TString& codnum, TString& tpdoc, TString& statoi, TString& statof) const;
|
||||
@ -299,8 +299,10 @@ bool TGenera_documenti_app::crea_documento(const TISAM_recordset& plan, TLog_rep
|
||||
int err = 1;
|
||||
if(numerodoc > 0)
|
||||
{
|
||||
FOR_EACH_ASSOC_OBJECT(_quantita,h,codart,obj)
|
||||
FOR_EACH_ASSOC_OBJECT(_quantita,h,key,obj)
|
||||
{
|
||||
TToken_string chiave(key);
|
||||
const TString80 codart = chiave.get(0);
|
||||
//preparo la chiave per la tabella righe contratti
|
||||
TToken_string keyrcont;
|
||||
keyrcont.add(codcli);
|
||||
@ -311,9 +313,9 @@ bool TGenera_documenti_app::crea_documento(const TISAM_recordset& plan, TLog_rep
|
||||
const TDate adata = (TDate)rcont.get(LVRCONDV_FIDTTMP);
|
||||
|
||||
if (dadata.ok() && dtcons >= adata)
|
||||
crea_riga(codart, modpas, tplis, true, prinbo, doc, rep);
|
||||
crea_riga(chiave, modpas, tplis, true, prinbo, doc, rep);
|
||||
else
|
||||
crea_riga(codart, modpas, tplis, false, prinbo, doc, rep);
|
||||
crea_riga(chiave, modpas, tplis, false, prinbo, doc, rep);
|
||||
}
|
||||
|
||||
if (doc.rows() > 0)
|
||||
@ -346,7 +348,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)
|
||||
void TGenera_documenti_app::crea_riga(TToken_string& chiave, const char modpas, const int tplis, const bool tmp, const bool prinbo, TDocumento& doc, TLog_report& rep)
|
||||
{
|
||||
const int perarr = ini_get_int(CONFIG_DITTA, "lv", "Perarr");
|
||||
//creo la nuova riga
|
||||
@ -360,6 +362,8 @@ void TGenera_documenti_app::crea_riga(const TString& codart, const char modpas,
|
||||
|
||||
const long codcli = doc.get_long(DOC_CODCF);
|
||||
const long codcont = doc.get_long(DOC_CODCONT);
|
||||
const TString80 codart = chiave.get(0);
|
||||
const TString4 causale = chiave.get(1);
|
||||
|
||||
//calcolo della quantità che va sulla bolla
|
||||
|
||||
@ -375,8 +379,8 @@ void TGenera_documenti_app::crea_riga(const TString& codart, const char modpas,
|
||||
arrot = false;
|
||||
|
||||
const real conguaglio = rcont.get_real(LVRCONDV_QTACONG);
|
||||
real& qta = *(real*)_quantita.objptr(codart);
|
||||
const real& qta1 = *(real*)_quantita_ritirata.objptr(codart);
|
||||
real& qta = *(real*)_quantita.objptr(chiave);
|
||||
const real& qta1 = *(real*)_quantita_ritirata.objptr(chiave);
|
||||
const real przdttmp = rcont.get_real(LVRCONDV_PRZDTTMP);
|
||||
|
||||
//instanzio una cache sulla tabella del magazzino
|
||||
@ -419,7 +423,7 @@ void TGenera_documenti_app::crea_riga(const TString& codart, const char modpas,
|
||||
|
||||
rdoc.put(RDOC_CODIVA, anamag.get(ANAMAG_CODIVA)); //codiva
|
||||
|
||||
const TCausale_lavanderie caudt(ini_get_string(CONFIG_DITTA, "lv", "CAULVRITDT"));
|
||||
const TCausale_lavanderie caudt(causale);
|
||||
|
||||
//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
|
||||
@ -429,7 +433,7 @@ void TGenera_documenti_app::crea_riga(const TString& codart, const char modpas,
|
||||
qta -= dottmp;
|
||||
rdoc.put(RDOC_QTAGG1, dottmp); //quantità ritirata
|
||||
rdoc.put(RDOC_GENERATA, true);
|
||||
rdoc.put(RDOC_CODAGG1, caudt.codice());
|
||||
rdoc.put(RDOC_CODAGG1, caudt.caucol().empty() ? caudt.codice() : caudt.caucol());
|
||||
dottmp = 0;
|
||||
dotod -= dottmp;
|
||||
TString str;
|
||||
@ -443,7 +447,7 @@ void TGenera_documenti_app::crea_riga(const TString& codart, const char modpas,
|
||||
dotod -= qta;
|
||||
rdoc.put(RDOC_QTAGG1, qta); //quantità ritirata
|
||||
rdoc.put(RDOC_GENERATA, true);
|
||||
rdoc.put(RDOC_CODAGG1, caudt.codice());
|
||||
rdoc.put(RDOC_CODAGG1, caudt.caucol().empty() ? caudt.codice() : caudt.caucol());
|
||||
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."
|
||||
@ -518,7 +522,7 @@ void TGenera_documenti_app::crea_riga(const TString& codart, const char modpas,
|
||||
rdoc.put(RDOC_GENERATA, true);
|
||||
|
||||
//causale da mettere sulle righe documento
|
||||
const TCausale_lavanderie cau(ini_get_string(CONFIG_DITTA, "lv", "CAUSLAV"));
|
||||
const TCausale_lavanderie cau(causale);
|
||||
const TString4 codcau = cau.caucol().empty() ? cau.codice() : cau.caucol();
|
||||
rdoc.put(RDOC_CODAGG1, codcau);
|
||||
|
||||
@ -803,26 +807,28 @@ void TGenera_documenti_app::calcolo_quantita(const TDocumento& doc, const char r
|
||||
const TRiga_documento& rdoc = doc[i];
|
||||
//estraggo i dati di interesse
|
||||
const TString80 codart = rdoc.get(RDOC_CODARTMAG);
|
||||
const TString4 codcau = rdoc.get(RDOC_CODAGG1);
|
||||
TToken_string key; key.add(codart); key.add(codcau);
|
||||
const real qtardoc = rdoc.get_real(RDOC_QTAGG1);
|
||||
//se è una riga che riguarda un articolo e se la quantità su questa riga non è nulla, allora la elaboro
|
||||
if (codart.full() && !qtardoc.is_zero())
|
||||
{
|
||||
TArticolo& art = rdoc.articolo();
|
||||
//leggo se esiste già nel TAssoc_array
|
||||
real *qta = (real*)_quantita.objptr(codart);
|
||||
real *qta1 = (real*)_quantita_ritirata.objptr(codart);
|
||||
real *qta = (real*)_quantita.objptr(key);
|
||||
real *qta1 = (real*)_quantita_ritirata.objptr(key);
|
||||
//se non esiste
|
||||
if (qta == NULL)
|
||||
{
|
||||
//per ora memorizzo zero
|
||||
qta = new real;
|
||||
_quantita.add(codart,qta);
|
||||
_quantita.add(key,qta);
|
||||
}
|
||||
if (qta1 == NULL)
|
||||
{
|
||||
//per ora memorizzo zero
|
||||
qta1 = new real;
|
||||
_quantita_ritirata.add(codart,qta1);
|
||||
_quantita_ritirata.add(key,qta1);
|
||||
}
|
||||
//aggiorno la quantità convertendola all'unità di misura di base, aggiungendola o sottraendola
|
||||
//...se si tratta di un ritiro o di un anticipo rispettivamente; nel caso della scansione delle
|
||||
|
Loading…
x
Reference in New Issue
Block a user