From b852a5583073212f2399cf7d75e41f5ac5aadce6 Mon Sep 17 00:00:00 2001 From: alex Date: Thu, 21 Apr 2011 12:37:12 +0000 Subject: [PATCH] Patch level : Files correlati : Ricompilazione Demo : [ ] Commento : Personalizzazione SRM git-svn-id: svn://10.65.10.50/branches/R_10_00@22012 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ps/pd0610200.cpp | 128 +++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 108 insertions(+), 20 deletions(-) diff --git a/ps/pd0610200.cpp b/ps/pd0610200.cpp index a86e8fb86..4464aef60 100755 --- a/ps/pd0610200.cpp +++ b/ps/pd0610200.cpp @@ -61,18 +61,6 @@ TObject* TOrdf_cache::key2obj(const char* key) doc->put(DOC_DATADOC, _data); doc->put(DOC_DATACONS, _data); - TToken_string keyc; - - //gestione CONDV - Contratti - keyc.add('C'); //tipo - keyc.add(""); //categoria di vendita - keyc.add('F'); //tipocf - keyc.add(codcf); //codcf - keyc.add("001"); //codice contratto - - const TRectype & contr = cache().get(LF_CONDV, keyc); - if (!contr.empty()) - doc->put(DOC_CODCONT, "001"); } else { @@ -144,8 +132,8 @@ protected: void aggiorna_righe(TDocumento& ordf, const TDocumento& ordc, const TRiga_documento& rordc, TRiga_documento& rordf, int idrigac); void ordini_fornitore(const TDocumento& ordc, const int nriga, TDocumento& ordf); - 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 aggiorna_ordf(const TDocumento& ordc, const int nriga, const TDoc_key& adoc, TOrdf_cache& ca, bool first); + TDoc_key * crea_ordf(const TDocumento& ordc, const long nriga, const long codfor, TOrdf_cache& ca, bool first); void elimina_ordf(const TDoc_key& adoc, TOrdf_cache& ca); void elimina_righe(const TDocumento& ordc, TOrdf_cache& ca); @@ -279,15 +267,64 @@ void TCrea_ordini_srm_app::ordini_fornitore(const TDocumento& ordc, const int nr } //AGGIORNA_ORDF: aggiorno l'ordine fornitore che esiste già in base alle modifiche fatte sull'ordine cliente attuale -void TCrea_ordini_srm_app::aggiorna_ordf(const TDocumento& ordc, const int nriga, const TDoc_key& adoc, TOrdf_cache& ca) +void TCrea_ordini_srm_app::aggiorna_ordf(const TDocumento& ordc, const int nriga, const TDoc_key& adoc, TOrdf_cache& ca, bool first) { TDocumento& ordf = ca.doc(adoc); + const TRiga_documento & orfrow = ordc[nriga]; + const long codcf = ordf.get_long(DOC_CODCF); + TToken_string keyc; + const TString8 codlist = orfrow.get(first ? "LF1" : "LF2"); + + //gestione CONDV - Listini + if (codlist.full()) + { + keyc.add('L'); //tipo + keyc.add(ordf.get(DOC_CATVEN)); //categoria di vendita + keyc.add(""); //tipocf + keyc.add(""); //codcf + keyc.add(codlist); + + const TRectype& list = cache().get(LF_CONDV, keyc); + if (!list.empty()) + ordf.put(DOC_CODCONT, codlist); + } + //gestione CONDV - Contratti + TString8 codcont = orfrow.get(first ? "CF1" : "CF2"); + + if (codcont.full()) + { + keyc.cut(0); + keyc.add('C'); //tipo + keyc.add(""); //categoria di vendita + keyc.add('F'); //tipocf + keyc.add(codcf); //codcf + keyc.add(orfrow.get(first ? "CF1" : "CF2")); + + const TRectype & contr = cache().get(LF_CONDV, keyc); + if (!contr.empty()) + ordf.put(DOC_CODCONT, codcont); + else + codcont.cut(0); + } + if (codcont.full()) + { + keyc.cut(0); + keyc.add('C'); //tipo + keyc.add(""); //categoria di vendita + keyc.add('F'); //tipocf + keyc.add(codcf); //codcf + keyc.add("001"); //codice contratto + + const TRectype & contr1 = cache().get(LF_CONDV, keyc); + if (!contr1.empty()) + ordf.put(DOC_CODCONT, "001"); + } ordini_fornitore(ordc, nriga, ordf); } //CREA_ORDF: creo un nuovo ordine cliente -TDoc_key * TCrea_ordini_srm_app::crea_ordf(const TDocumento& ordc, const long nriga, const long codfor, TOrdf_cache& ca) +TDoc_key * TCrea_ordini_srm_app::crea_ordf(const TDocumento& ordc, const long nriga, const long codfor, TOrdf_cache& ca, bool first) { TDoc_key kordf; TDoc_key kdadoc(ordc.get_int(DOC_ANNO), ordc.get(DOC_CODNUM), ordc.get_long(DOC_NDOC), ordc.get_char(DOC_PROVV)); @@ -302,6 +339,57 @@ TDoc_key * TCrea_ordini_srm_app::crea_ordf(const TDocumento& ordc, const long nr ordf.put(DOC_FASCMS, ordc.get(RDOC_FASCMS)); ordf.put(DOC_NUMDOCRIF, ordc.numero()); ordf.put(DOC_DATADOCRIF, ordc.get(DOC_DATADOC)); + + const TRiga_documento & orfrow = ordc[nriga]; + const long codcf = ordf.get_long(DOC_CODCF); + TToken_string keyc; + const TString8 codlist = orfrow.get(first ? "LF1" : "LF2"); + + //gestione CONDV - Listini + if (codlist.full()) + { + keyc.add('L'); //tipo + keyc.add(ordf.get(DOC_CATVEN)); //categoria di vendita + keyc.add(""); //tipocf + keyc.add(""); //codcf + keyc.add(codlist); + + const TRectype& list = cache().get(LF_CONDV, keyc); + if (!list.empty()) + ordf.put(DOC_CODCONT, codlist); + } + //gestione CONDV - Contratti + TString8 codcont = orfrow.get(first ? "CF1" : "CF2"); + + if (codcont.full()) + { + keyc.cut(0); + keyc.add('C'); //tipo + keyc.add(""); //categoria di vendita + keyc.add('F'); //tipocf + keyc.add(codcf); //codcf + keyc.add(orfrow.get(first ? "CF1" : "CF2")); + + const TRectype & contr = cache().get(LF_CONDV, keyc); + if (!contr.empty()) + ordf.put(DOC_CODCONT, codcont); + else + codcont.cut(0); + } + if (codcont.full()) + { + keyc.cut(0); + keyc.add('C'); //tipo + keyc.add(""); //categoria di vendita + keyc.add('F'); //tipocf + keyc.add(codcf); //codcf + keyc.add("001"); //codice contratto + + const TRectype & contr1 = cache().get(LF_CONDV, keyc); + if (!contr1.empty()) + ordf.put(DOC_CODCONT, "001"); + } + TRiga_documento & row = ordf.new_row("05"); TString rif; @@ -421,10 +509,10 @@ void TCrea_ordini_srm_app::elabora_ordini_cliente() if (delete_docs) elimina_ordf(ordf, ca); else - aggiorna_ordf(ordc, i, ordf, ca); + aggiorna_ordf(ordc, i, ordf, ca, true); } else - TDoc_key * ordf = crea_ordf(ordc, i, codfor1, ca); + TDoc_key * ordf = crea_ordf(ordc, i, codfor1, ca, true); } if (codfor2 > 0) { @@ -434,10 +522,10 @@ void TCrea_ordini_srm_app::elabora_ordini_cliente() if (delete_docs) elimina_ordf(ordf, ca); else - aggiorna_ordf(ordc, i, ordf, ca); + aggiorna_ordf(ordc, i, ordf, ca, false); } else - TDoc_key * ordf = crea_ordf(ordc, i, codfor2, ca); + TDoc_key * ordf = crea_ordf(ordc, i, codfor2, ca, false); } }