From 6c6d0ab6343024415c183b7d663768ab6c4abd52 Mon Sep 17 00:00:00 2001 From: guy Date: Thu, 11 Sep 2003 13:17:56 +0000 Subject: [PATCH] Patch level : 2.0 564 Files correlati : cg2.exe Ricompilazione Demo : [ ] Commento : 101 Controllo non bloccante in fase di inserimento documenti su nr. doc e data doc per evitare di inserire dei doppioni, con relativa lista di stampa VEDI codice segnalazione 20 di conseguenza.Se non si riesce in fase di immissione fare almeno una stampa di controllo. git-svn-id: svn://10.65.10.50/trunk@11407 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- cg/cg2102.cpp | 65 ++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 56 insertions(+), 9 deletions(-) diff --git a/cg/cg2102.cpp b/cg/cg2102.cpp index dd9d400c1..a6544efa8 100755 --- a/cg/cg2102.cpp +++ b/cg/cg2102.cpp @@ -2215,19 +2215,66 @@ bool TPrimanota_application::data74ter_handler(TMask_field& f, KEY key) return TRUE; } - bool TPrimanota_application::numdoc_handler(TMask_field& f, KEY key) { - TMask& m = f.mask(); - if (key == K_TAB && f.to_check(key, TRUE) && m.insert_mode() && app().is_saldaconto()) + if (f.to_check(key, TRUE)) { - const TString n = f.get(); - if (n.not_empty() && !app().npart_is_prot()) // Copiare numero documento nel numero partita? - { - if (m.field(F_NUMRIF).active() && m.get(F_NUMRIF).blank()) - m.set(F_NUMRIF, n, TRUE); - } + TMask& m = f.mask(); + if (key == K_TAB && m.insert_mode() && app().is_saldaconto()) + { + if (!f.empty() && !app().npart_is_prot()) // Copiare numero documento nel numero partita? + { + if (m.field(F_NUMRIF).active() && m.get(F_NUMRIF).blank()) + m.set(F_NUMRIF, f.get(), TRUE); + } + } } + + // Controllo documenti duplicati + if (key == K_ENTER && app().iva() == iva_acquisti) + { + TMask& m = f.mask(); + + const int annodoc = m.get_date(F_DATADOC).year(); + const long fornitore = m.get_long(F_FORNITORE); + if (annodoc > 0 && fornitore > 0 && !f.empty()) + { + // SELECT NUMREG,DATAREG,DATADOC,NUMDOC FROM MOV + // WHERE TIPO='F' AND CODCF=F_FORNITORE AND + // NUMDOC=F_NUMDOC AND DATAREG>=F_DATADOC AND NUMREG<>F_NUMREG + + TString filter; + filter << MOV_NUMDOC << "=\"" << f.get() << '"'; + if (m.edit_mode()) + { + filter.insert("("); + filter << ")&&(" << MOV_NUMREG << "!=\"" << m.get(F_NUMREG) << "\")"; + } + + TRelation rel(LF_MOV); + TRectype& rec = rel.curr(); + + TRectype recfrom(rec); + recfrom.put(MOV_TIPO, "F"); + recfrom.put(MOV_CODCF, fornitore); + recfrom.put(MOV_DATAREG, m.get(F_DATADOC)); + + TRectype recto(recfrom); + recto.put(MOV_DATAREG, TDate(31, 12, annodoc+1)); + + TCursor cur(&rel, filter, 3, &recfrom, &recto); + const TRecnotype items = cur.items(); + cur.freeze(); + for (cur = 0; cur.pos() < items; ++cur) + { + const int ad = rec.get_date(MOV_DATADOC).year(); + if (ad == annodoc) + return yesno_box("Il documento %d / %s e' gia' stato inserito con la registrazione %ld\nSi desidera continuare ugualmente?", + annodoc, (const char*)f.get(), rec.get_long(MOV_NUMREG)); + } + } + } + return TRUE; }