Patch level :

Files correlati     : pd0610.exe
Ricompilazione Demo : [ ]
Commento            :



CReazione ordini SRM


git-svn-id: svn://10.65.10.50/branches/R_10_00@21426 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2011-01-12 18:39:30 +00:00
parent cd691136c7
commit c2be52559c

View File

@ -188,7 +188,7 @@ TDocumento& TOrdf_cache::doc(const long codcf)
}
//metodo costruttore di una cache di 20 elementi
TOrdf_cache::TOrdf_cache(const char* from_tipodoc, const TDate& datadoc) : TCache(20)
TOrdf_cache::TOrdf_cache(const char* from_tipodoc, const TDate& datadoc) : TCache()
{
TToken_string key;
key.add("TIP");
@ -231,7 +231,7 @@ protected:
void aggiorna_ordf(const TDocumento& ordc, const int nriga, const TDoc_key& adoc, TOrdf_cache& ca);
TDoc_key * crea_ordf(const TDocumento& ordc, const long nriga, const long codfor, TOrdf_cache& ca);
void elimina_ordf(const TDoc_key& adoc, TOrdf_cache& ca);
void elimina_righe(const TDocumento& ordc, const TAssoc_array & ords, TOrdf_cache& ca);
void elimina_righe(const TDocumento& ordc, TOrdf_cache& ca);
void elabora_ordini_cliente();
@ -384,6 +384,8 @@ TDoc_key * TCrea_ordini_srm_app::crea_ordf(const TDocumento& ordc, const long nr
ordf.put(DOC_CODCMS, ordc.get(DOC_CODCMS));
ordf.put(DOC_CODCOSTO, ordc.get(DOC_CODCOSTO));
ordf.put(DOC_FASCMS, ordc.get(RDOC_FASCMS));
ordf.put(DOC_NUMDOCRIF, ordc.numero());
ordf.put(DOC_DATADOCRIF, ordc.get(DOC_DATADOC));
TRiga_documento & row = ordf.new_row("05");
TString rif;
@ -410,7 +412,7 @@ void TCrea_ordini_srm_app::elimina_ordf(const TDoc_key& adoc, TOrdf_cache& ca)
}
//ELIMINA_RIGHE: elimino le righe dagli ordini fornitore che non compaiono più nell'ordine cliente in esame
void TCrea_ordini_srm_app::elimina_righe(const TDocumento& ordc, const TAssoc_array & ords, TOrdf_cache& ca)
void TCrea_ordini_srm_app::elimina_righe(const TDocumento& ordc, TOrdf_cache& ca)
{
const char provv = ordc.get_char(DOC_PROVV);
const int anno = ordc.get_int(DOC_ANNO);
@ -432,30 +434,25 @@ void TCrea_ordini_srm_app::elimina_righe(const TDocumento& ordc, const TAssoc_ar
const int nriga = rdoc.get(RDOC_NRIGA).as_int();
TDoc_key kordf(rdoc.get(RDOC_ANNO).as_int(), rdoc.get(RDOC_CODNUM).as_string(), rdoc.get(RDOC_NDOC).as_int(), rdoc.get(RDOC_PROVV).as_string()[0]);
TDocumento& ordf = ca.doc(kordf);
const long ndoc = ordf.get_long(DOC_NDOC);
const long codfor = ordf.get_long(DOC_CODCF);
// bool trovato = false;
bool trovato = false;
TRiga_documento & r = ordf[nriga];
const TRectype * rordc = r.find_original_rdoc();
if (ords.is_key(kordf))
if (rordc != NULL)
{
for(int i = 1; i <= ordc.physical_rows(); i++)
if (rordc->get(RDOC_PROVV) == rordc->get(DOC_PROVV) &&
rordc->get(RDOC_CODNUM) == rordc->get(DOC_CODNUM) &&
rordc->get(RDOC_ANNO) == rordc->get(DOC_ANNO) &&
rordc->get(RDOC_NDOC) == rordc->get(DOC_NDOC))
{
TRiga_documento rdoc = ordc[i];
if (daidriga == rdoc.get_long(RDOC_IDRIGA))
{
trovato = rdoc.get_long(RDOC_CODAGG1) == codfor;
trovato |= rdoc.get_long(RDOC_CODAGG2) == codfor;
break;
}
if ((rordc->get_long(RDOC_CODAGG1) != codfor) &&
(rordc->get_long(RDOC_CODAGG2) != codfor))
r.put("D", "X");
}
}
if (!trovato)
{
TRiga_documento & r = ordf[nriga];
r.put("D", "X");
}
}
for(bool ok = rdoc.move_first(); ok; ok = rdoc.move_next())
{
@ -485,7 +482,6 @@ void TCrea_ordini_srm_app::elabora_ordini_cliente()
TDoc_key dadoc(anno, codnum, ndoc, provv);
TDoc_key ordf;
TAssoc_array ords;
TDocumento ordc(provv, anno, codnum, ndoc);
@ -494,7 +490,7 @@ void TCrea_ordini_srm_app::elabora_ordini_cliente()
//scorro le righe documento, fermandomi quando la set_paragraph fallisce
//dal momento che non so a priori quante sono le righe del documento
// message_box("start");
message_box("start");
for(int i = 1; i <= ordc.rows(); i++)
{
TRiga_documento& rordc = ordc[i];
@ -510,14 +506,9 @@ void TCrea_ordini_srm_app::elabora_ordini_cliente()
elimina_ordf(ordf, ca);
else
aggiorna_ordf(ordc, i, ordf, ca);
ords.add(ordf, ordf);
}
else
{
TDoc_key * ordf = crea_ordf(ordc, i, codfor1, ca);
ords.add(*ordf, ordf);
}
}
if (codfor2 > 0)
{
@ -528,18 +519,13 @@ void TCrea_ordini_srm_app::elabora_ordini_cliente()
elimina_ordf(ordf, ca);
else
aggiorna_ordf(ordc, i, ordf, ca);
ords.add(ordf, ordf);
}
else
{
TDoc_key * ordf = crea_ordf(ordc, i, codfor2, ca);
ords.add(*ordf, ordf);
}
}
}
elimina_righe(ordc, ords, ca);
elimina_righe(ordc, ca);
ca.destroy();
}