From 1ee67a03e06dde0586ab95b7fa04c27cca934007 Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 1 Apr 2011 13:00:11 +0000 Subject: [PATCH] Patch level : 10.966 Files correlati : ve0.exe Ricompilazione Demo : [ ] Commento : MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bug 0001810: SRM: in creaz. aut. ORF da C non riesco a fare interrrogaz. per riferimento SRM: Nella creazione automatica ORF da C ed inserendo il riferimento stesso della commessa , SRM ha la necessità di vedere quanti ORF sono stati creati a fronte di una C. Il campo riferimento viene riportato correttamente negli ORF ma la ricerca per riferimento è lentissima (si parla di minuti!!!) e non porta nessun risultato. La ricerca ora viene filtrata per cliente/ fornitore se lo indico altrimenti viene fatta per documento di riferimento. nello sheet il codice e la ragione sociale sono stati spostati dopo il documento di riferimento e la data git-svn-id: svn://10.65.10.50/branches/R_10_00@21871 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- ve/velib06a.cpp | 43 ++++++++++++++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/ve/velib06a.cpp b/ve/velib06a.cpp index 7b502452b..13310106d 100755 --- a/ve/velib06a.cpp +++ b/ve/velib06a.cpp @@ -2395,24 +2395,49 @@ bool TDocumento_mask::numdocrif_search_handler(TMask_field& f, KEY key) TRelation rel(LF_DOC); rel.add(LF_CLIFO, "TIPOCF==TIPOCF|CODCF==CODCF"); rel.add(LF_RIGHEDOC, "PROVV==PROVV|ANNO==ANNO|CODNUM==CODNUM|NDOC==NDOC|NRIGA==1"); + const long codcf = m.get_int(F_CODCF); + bool is_clifor = (codcf > 0L); TRectype& filtrec = rel.curr(); - filtrec.put(DOC_TIPOCF, m.get(F_TIPOCF)); - filtrec.put(DOC_CODCF, m.get(F_CODCF)); - TSorted_cursor cur(&rel, "TIPOCF|CODCF|PROVV|ANNO|CODNUM|NUMDOCRIF", "", 2, &filtrec, &filtrec); - TString80 filter; - filter.format("(CODNUM==\"%s\")&&(PROVV==\"D\")&&(ANNO==\"%d\")", - (const char*)m.get(F_CODNUM), m.get_int(F_ANNO)); - cur.setfilter(filter); + if (is_clifor) + { + filtrec.put(DOC_TIPOCF, m.get(F_TIPOCF)); + filtrec.put(DOC_CODCF, codcf); + } + else + filtrec.put(DOC_CODNUM, m.get(F_CODNUM)); + filtrec.put(DOC_PROVV, m.get(F_PROVV)); + filtrec.put(DOC_ANNO, m.get(F_ANNO)); + + TSorted_cursor cur(&rel, "NUMDOCRIF", "", is_clifor ? 2: 1, &filtrec, &filtrec); + + if (is_clifor) + { + TString80 filter; + + filter.format(DOC_CODNUM "==\"%s\"", (const char*)m.get(F_CODNUM)); + cur.setfilter(filter); + } TToken_string siblings; - TToken_string header(HR("Codice|Ragione Sociale@50|Docum.Rif.|Data@10|Docum.Rif. 1|Docum.Rif. 2|Docum.Rif. 3|Documento|Data\nDocumento@10|Totale\nDocumento@18V|Valuta|Stato")); - TToken_string fieldlist("CODCF|20->RAGSOC|NUMDOCRIF|DATADOCRIF|DOC1|DOC2|DOC3|NDOC|DATADOC|G1:TOTDOC|CODVAL|STATO"); + TToken_string header(HR("Docum.Rif.|Data@10|Codice|Ragione Sociale@50|Docum.Rif. 1|Docum.Rif. 2|Docum.Rif. 3|Documento|Data\nDocumento@10|Totale\nDocumento@18V|Valuta|Stato")); + TToken_string fieldlist("NUMDOCRIF|DATADOCRIF|CODCF|20->RAGSOC|DOC1|DOC2|DOC3|NDOC|DATADOC|G1:TOTDOC|CODVAL|STATO"); add_custom_search_fields(m, fieldlist, header); TBrowse_sheet sheet(&cur, fieldlist, TR("Documento di riferimento"), header, 0, (TEdit_field&)f, siblings); + TCursor * c = sheet.cursor(); + + if (c != NULL) + { + TRectype rec(filtrec); + + rec.put(DOC_NUMDOCRIF, m.get(F_NUMDOCRIF)); + c->curr() = rec; + c->read(); + } + if (sheet.run() == K_ENTER) { const int pos_ndoc = fieldlist.get_pos(DOC_NDOC);