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:
parent
cd691136c7
commit
c2be52559c
@ -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();
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user