From c2be52559cc79a1c6418002f0ce77f682e96007b Mon Sep 17 00:00:00 2001 From: alex Date: Wed, 12 Jan 2011 18:39:30 +0000 Subject: [PATCH] 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 --- ps/pd0610200.cpp | 52 ++++++++++++++++++------------------------------ 1 file changed, 19 insertions(+), 33 deletions(-) diff --git a/ps/pd0610200.cpp b/ps/pd0610200.cpp index 547790522..30b3daf02 100755 --- a/ps/pd0610200.cpp +++ b/ps/pd0610200.cpp @@ -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(); }