Patch level : 10.0 NO PATCH

Files correlati     : ps0610
Ricompilazione Demo : [ ]
Commento            :
Correzioni dopo prove


git-svn-id: svn://10.65.10.50/branches/R_10_00@21255 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca83 2010-12-07 14:58:05 +00:00
parent 94827f4e23
commit c9c3634de3

@ -1,6 +1,11 @@
#include <applicat.h>
#include "../ve/velib.h"
#include "../mg/anamag.h"
#include "../ve/rcondv.h"
#include "cfven.h"
#include "doc.h"
#include "rdoc.h"
@ -95,8 +100,9 @@ TDoc_key::TDoc_key(const int anno, const TString& codnum, const long ndoc, const
//classe TOrdf_cache
class TOrdf_cache : public TCache
{
TString4 _codnum, _tipodoc;
TString4 _codnum, _tipodoc, _stato;
int _anno;
TDate _data;
protected:
virtual void discarding(const THash_object* obj);
@ -105,7 +111,7 @@ protected:
public:
TDocumento& doc(const TDoc_key& kdoc);
TDocumento& doc(const long codcf);
TOrdf_cache();
TOrdf_cache(const char* from_tipodoc, const TDate& datatdoc);
};
//DISCARDING: salva un documento sul disco prima di eliminarlo dalla cache
@ -127,8 +133,12 @@ TObject* TOrdf_cache::key2obj(const char* key)
doc = new TDocumento('D', _anno, _codnum, 0);
doc->put(DOC_TIPODOC, _tipodoc);
doc->put(DOC_TIPOCF, 'F');
doc->put(DOC_CODCF, codcf);
doc->put(DOC_STATO, _stato);
doc->put(DOC_TIPOCF, 'F');
doc->put(DOC_CODCF, codcf);
doc->put(DOC_DATADOC, _data);
doc->cli2doc();
}
else
{
@ -160,14 +170,23 @@ TDocumento& TOrdf_cache::doc(const long codcf)
}
//metodo costruttore di una cache di 20 elementi
TOrdf_cache::TOrdf_cache() : TCache(20)
TOrdf_cache::TOrdf_cache(const char* from_tipodoc, const TDate& datadoc) : TCache(20)
{
_codnum = "ORDF";
_tipodoc = "ORDF";
const TDate oggi(TODAY);
_anno = oggi.year();
TToken_string key;
key.add("TIP");
key.add(from_tipodoc);
TString80 cod_elab = cache().get(LF_TABCOM, key, "S3"); cod_elab.mid(5,12);
key.cut(0);
key.add("ELD");
key.add(cod_elab);
const TRectype& eld = cache().get(LF_TABCOM, key);
_codnum = eld.get("S6");
_tipodoc = eld.get("S8");
_stato = eld.get("S9");
_anno = datadoc.year();
_data = datadoc;
}
////////////////////////////////////
@ -186,6 +205,8 @@ protected:
virtual void main_loop();
const real cerca_prezzo(const char* codart, const long codcf);
const bool cerca_orf(TDoc_key& dadoc, const long daidriga, const long for1, const long for2, TDoc_key& ordf1, TDoc_key& ordf2);
void ordini_fornitore(const TDocumento& ordc, const int nriga, TDocumento& ordf);
@ -199,6 +220,39 @@ public:
bool load_ini(bool check);
};
//CERCA_PREZZO: cerco il prezzo di un articolo per un dato fornitore
const real TCrea_ordini_srm_app::cerca_prezzo(const char* codart, const long codcf)
{
TToken_string key;
//gestione CFVEN
key.add('F'); //tipocf
key.add(codcf); //codcf
const TRectype& cfven = cache().get(LF_CFVEN, key);
const TString8 codlist = cfven.get(CFV_CODLIST);
const TString8 catven = cfven.get(CFV_CATVEN);
key.cut(0);
//gestione RCONDV
key.add('L'); //tipo
key.add(catven); //categoria di vendita
key.add(""); //tipocf
key.add(""); //codcf
key.add(codlist); //codice listino
key.add('A'); //<A>rticolo
key.add(codart); //codice articolo
real prezzo(cache().get(LF_RCONDV, key, RCONDV_PREZZO));
if(prezzo == ZERO)
{
const TRectype& anamag = cache().get(LF_ANAMAG, codart);
prezzo = anamag.get_real(ANAMAG_ULTCOS1);
}
return prezzo;
}
//CERCA_ORF: cerco se esistono degli ordini fornitori che arrivano dall'ordine cliente in esame
const bool TCrea_ordini_srm_app::cerca_orf(TDoc_key& dadoc, const long daidriga, const long for1, const long for2, TDoc_key& ordf1, TDoc_key& ordf2)
{
@ -337,19 +391,19 @@ void TCrea_ordini_srm_app::elabora_ordini_cliente()
{
TConfig ini(_ini_name, "33");
TString4 para; para.format("%d", LF_DOC);
const char provv = ini.get_char(DOC_PROVV, para);
const int anno = ini.get_int(DOC_ANNO, para);
const TString& codnum = ini.get(DOC_CODNUM, para);
const long ndoc = ini.get_long(DOC_NDOC, para);
const char provv = ini.get_char(DOC_PROVV, para);
const int anno = ini.get_int(DOC_ANNO, para);
const TString& codnum = ini.get(DOC_CODNUM, para);
const long ndoc = ini.get_long(DOC_NDOC, para);
TDoc_key dadoc(anno, codnum, ndoc, provv);
TDoc_key ordf1;
TDoc_key ordf2;
TOrdf_cache ca;
TDocumento ordc(provv, anno, codnum, ndoc);
TOrdf_cache ca(ordc.get(DOC_TIPODOC), ordc.get_date(DOC_DATADOC));
//scorro le righe documento, fermandomi quando la set_paragraph fallisce
//dal momento che non so a priori quante sono le righe del documento
for(int i = 1; i <= ordc.rows(); i++)