From 511f18ed248a906bf5d7fb54b665bbcd34b15eda Mon Sep 17 00:00:00 2001 From: mtollari Date: Mon, 3 Apr 2017 14:27:34 +0000 Subject: [PATCH] Patch level : 12.0 no-patch Files correlati : Commento : Risistemate tutte le query di Campo/Compass git-svn-id: svn://10.65.10.50/branches/R_10_00@23724 c028cbd2-c16b-5b4b-a496-9718f37d4682 --- src/mr/mr0600.cpp | 64 ++++++++++++++++++++++++++++++----------------- 1 file changed, 41 insertions(+), 23 deletions(-) diff --git a/src/mr/mr0600.cpp b/src/mr/mr0600.cpp index 14a5f5d9f..21da3407f 100644 --- a/src/mr/mr0600.cpp +++ b/src/mr/mr0600.cpp @@ -311,13 +311,13 @@ TString TCampass_app::esporta(const TString& DSN, const TString& usr, const TStr if(!a01a(a01)) errors << "ERRORE TABELLA: A01A\n"; // O01A else logFile << getTime() << " - Esportata tabella A01A\n"; - + endExport(a01); logFile << getTime() << " - Fine esportazione A01!\n"; logFile.close(); - + return errors; } @@ -386,7 +386,7 @@ bool TCampass_app::a01a(const TString id) const TRelation rilprod(LF_RILPROD), rdoc(LF_RIGHEDOC), filtro(LF_RIGHEDOC); int items; TString msg("Esportazione tabella "); msg << "A01A"; - TCursor curRilprod(&rilprod, "CODNUM = \"ORC\" && QTA >= 0"); + TCursor curRilprod(&rilprod, "CODNUM = \"ORC\" && QTA > 0"); items = curRilprod.items(); TProgress_monitor p(items, msg); @@ -400,13 +400,16 @@ bool TCampass_app::a01a(const TString id) const // Prendo la riga di RILPROD TRectype rowRilprod = curRilprod.curr(); + // Applico i filtri di nuovo + if(rowRilprod.get_int("QTA") <= 0 || rowRilprod.get("CODNUM") != "ORC") continue; + // Vado a prendere il documento di riferimento TRectype filtroFiltro(filtro.curr()); filtroFiltro.put("CODNUM", rowRilprod.get("CODNUM")); filtroFiltro.put("ANNO", rowRilprod.get("ANNO")); filtroFiltro.put("PROVV", rowRilprod.get("PROVV")); filtroFiltro.put("NDOC", rowRilprod.get("NDOC")); - TCursor curFiltro(&rdoc, "RIGAEVASA != \"X\"", 1, &filtroFiltro, &filtroFiltro); + TCursor curFiltro(&rdoc, "", 1, &filtroFiltro, &filtroFiltro); if(curFiltro.items() > 0) { curFiltro = 0; @@ -419,7 +422,7 @@ bool TCampass_app::a01a(const TString id) const filtroRDoc.put("DAANNO", rowFiltro.get("ANNO")); filtroRDoc.put("DACODNUM", rowFiltro.get("CODNUM")); filtroRDoc.put("DANDOC", rowFiltro.get("NDOC")); - filtroRDoc.put("DAIDRIGA", rowFiltro.get("IDRIGA")); + //filtroRDoc.put("DAIDRIGA", rowFiltro.get("IDRIGA")); Non esiste questa chiave TString codartmag; codartmag << "CODARTMAG == \"" << rowRilprod.get("CODART") << "\""; TCursor curRdoc(&rdoc, codartmag, 4, &filtroRDoc, &filtroRDoc); if(curRdoc.items() > 0) @@ -427,6 +430,10 @@ bool TCampass_app::a01a(const TString id) const curRdoc = 0; // Prendo la riga di RDOC TRectype rowRDoc = curRdoc.curr(); + + // Riapplico i filtri + if(rowRilprod.get("CODART") != rowRDoc.get("CODARTMAG") || rowFiltro.get("IDRIGA") != rowRDoc.get("DAIDRIGA")) continue; + // Dichiaro la stringa TString sqlQuery; sqlQuery << "INSERT INTO A01A ( IKRUNIMP, FAZI, CStr, CPRD, NMOV, CMAC, QPFPRO, FSALDO, NFAS ) \ @@ -491,7 +498,10 @@ bool TCampass_app::o01a(const TString id) const filtroFiltro.put("NDOC", rowRDoc.get("DANDOC")); TCursor curFiltro(&rdoc, "", 1, &filtroFiltro, &filtroFiltro); curFiltro = 0; - if (curFiltro.items() == 0 || rowRDoc.get_int("DAIDRIGA") != curFiltro.curr().get_int("IDRIGA")|| curFiltro.curr().get_bool("RIGAEVASA")) continue; // Controllo ma la query sopra non mi va come al solito + + // Filtro aggiuntivo + if (curFiltro.items() == 0 || rowRDoc.get_int("DAIDRIGA") != curFiltro.curr().get_int("IDRIGA")|| curFiltro.curr().get_bool("RIGAEVASA")) continue; + // Dichiaro la stringa TString sqlQuery; @@ -577,6 +587,9 @@ bool TCampass_app::o01c(const TString id) const if(rowRDoc.get("CODART") != rowRDist.get("CODDIST")) continue; + // Filtro aggiuntivo + if(rowRDist.get("TIPO") != "A" || rowRDoc.get_bool("RIGAEVASA")) continue; // Filtro RIGAEVASA prima così mi risparmio righe + // Vado a prendere la riga di riferimento TRectype filtroFiltro(filtro.curr()); if(rowRDoc.get("DACODNUM") == "ORC" || rowRDoc.get("DACODNUM") == "PRC") @@ -585,11 +598,12 @@ bool TCampass_app::o01c(const TString id) const filtroFiltro.put("ANNO", rowRDoc.get("DAANNO")); filtroFiltro.put("PROVV", rowRDoc.get("DAPROVV")); filtroFiltro.put("NDOC", rowRDoc.get("DANDOC")); - filtroFiltro.put("IDRIGA", rowRDoc.get("DAIDRIGA")); - TCursor curFiltro(&rdoc, "RIGAEVASA != \"X\"", 1, &filtroFiltro, &filtroFiltro); + //filtroFiltro.put("IDRIGA", rowRDoc.get("DAIDRIGA")); + TCursor curFiltro(&rdoc, "", 1, &filtroFiltro, &filtroFiltro); for (curFiltro = 0; curFiltro.pos() < curFiltro.items() && !p.is_cancelled(); ++curFiltro) { - if(curFiltro.curr().get_int("IDRIGA") != rowRDoc.get_int("DAIDRIGA")) continue; + // Filtro aggiuntivo + if(curFiltro.curr().get_int("IDRIGA") != rowRDoc.get_int("DAIDRIGA") || curFiltro.curr().get_bool("RIGAEVASA")) continue; TString sqlQuery; sqlQuery << "INSERT INTO O01C ( IKRUNIMP, CStr, CPRD, CARTFIL, CUDM, QIMP, QBASE, XTCALC, NSEQ ) \ VALUES('" << id << "','DBS','" << zeroFill(rowRDoc.get("NDOC")) << "." << rowRDoc.get("IDRIGA") << "','" << rowRDist.get("CODCOMP") << "','" @@ -614,7 +628,6 @@ bool TCampass_app::o01e(const TString id) const TRelation doc(LF_DOC), rdoc(LF_RIGHEDOC), filtro(LF_RIGHEDOC); int items; TString msg("Esportazione tabella "); msg << "O01E"; - // Creo il filtro per la chiave del cursore, da quel che ho capito le chiavi sono più veloci di un filtro (come è possibile?) TRectype filtroRDoc(rdoc.curr()); filtroRDoc.put("CODNUM", "ORP1"); TCursor curRDoc(&rdoc, "", 1, &filtroRDoc, &filtroRDoc); items = curRDoc.items(); @@ -636,12 +649,12 @@ bool TCampass_app::o01e(const TString id) const filtroFiltro.put("ANNO", rowRDoc.get("DAANNO")); filtroFiltro.put("PROVV", rowRDoc.get("DAPROVV")); filtroFiltro.put("NDOC", rowRDoc.get("DANDOC")); - filtroFiltro.put("IDRIGA", rowRDoc.get("DAIDRIGA")); - TCursor curFiltro(&rdoc, "RIGAEVASA != \"X\"", 1, &filtroFiltro, &filtroFiltro); + //filtroFiltro.put("IDRIGA", rowRDoc.get("DAIDRIGA")); + TCursor curFiltro(&filtro, "", 1, &filtroFiltro, &filtroFiltro); for (curFiltro = 0; curFiltro.pos() < curFiltro.items() && !p.is_cancelled(); ++curFiltro) { TRectype rowFiltro(curFiltro.curr()); - if(rowFiltro.get_int("IDRIGA") != rowRDoc.get_int("DAIDRIGA")) continue; + if(rowFiltro.get_int("IDRIGA") != rowRDoc.get_int("DAIDRIGA") || rowFiltro.get_bool("RIGAEVASA")) continue; // Dichiaro la stringa TString sqlQuery; TString codagg; codagg << rowFiltro.get("CODAGG1"); @@ -674,9 +687,9 @@ bool TCampass_app::o02a(const TString CodNum, const TString id) const TRelation doc(LF_DOC), rdoc(LF_RIGHEDOC), filtro(LF_RIGHEDOC); int items; TString msg("Esportazione tabella "); msg << "O02A - " << CodNum; - // Creo il filtro per la chiave del cursore, da quel che ho capito le chiavi sono più veloci di un filtro (come è possibile?) - TRectype filtroRDoc(filtro.curr()); filtroRDoc.put("CODNUM", CodNum); - TCursor curRDoc(&rdoc, "RIGAEVASA != \"X\"", 1, &filtroRDoc, &filtroRDoc); + + TRectype filtroRDoc(rdoc.curr()); filtroRDoc.put("CODNUM", CodNum); + TCursor curRDoc(&rdoc, "", 1, &filtroRDoc, &filtroRDoc); items = curRDoc.items(); TProgress_monitor p(items, msg); @@ -687,10 +700,15 @@ bool TCampass_app::o02a(const TString CodNum, const TString id) const // Aggiorno il Progress Monitor if (!p.add_status()) break; - // Dichiaro la stringa - TString sqlQuery; + // Prendo la riga di RDOC TRectype rowRDoc = curRDoc.curr(); + + // Filtro aggiuntivo + if(rowRDoc.get_bool("RIGAEVASA")) continue; + + // Dichiaro la stringa + TString sqlQuery; // Vado a prendere il documento di riferimento TRectype filtroDoc(doc.curr()); @@ -760,15 +778,15 @@ bool TCampass_app::o02c(const TString CodNum, const TString id) const filtroFiltro.put("NDOC", rowRDoc.get("DANDOC")); //filtroFiltro.put("IDRIGA", rowRDoc.get("DAIDRIGA")); - TCursor curFiltro(&rdoc, "RIGAEVASA!=\"X\"", 1, &filtroFiltro, &filtroFiltro); + TCursor curFiltro(&rdoc, "", 1, &filtroFiltro, &filtroFiltro); curFiltro = 0; // Se non ho elementi salto tutto - if(curFiltro.items() == 0 || rowRDoc.get_int("DAIDRIGA") != curFiltro.curr().get_int("IDRIGA") || curFiltro.curr().get_bool("RIGAEVASA")) continue; // Aggiungo ulteriore controllo, PERCHÉ NON METTE DAIDRIGA!? + if(curFiltro.items() <= 0 || rowRDoc.get_int("DAIDRIGA") != curFiltro.curr().get_int("IDRIGA") || curFiltro.curr().get_bool("RIGAEVASA")) continue; // Aggiungo ulteriore controllo, PERCHÉ NON METTE DAIDRIGA!? // Dichiaro la stringa TString sqlQuery; - // Inserisco Tutto (yeeeeeeeeeeeeeee) + // Inserisco Tutto sqlQuery << "INSERT INTO O02C ( IKRUNIMP, CStr, CPRD, CCLIH, CCLIR, BVAL, DBS_CART) \ - VALUES('" << id << "','DBS','" << zeroFill(rowRDoc.get("NDOC")) << "." << rowRDoc.get("IDRIGA") << "','" << rowRDoc.get("DAANNO") << "." << CodNum << "." << zeroFill(rowRDoc.get("DANDOC")) << "','" << rowRDoc.get("DAIDRIGA") << "','1','" << rowRDoc.get("CODART") << "');"; + VALUES('" << id << "','DBS','" << zeroFill(rowRDoc.get("NDOC")) << "." << rowRDoc.get("IDRIGA") << "','" << rowRDoc.get("DAANNO") << "." << rowRDoc.get("DACODNUM") << "." << zeroFill(rowRDoc.get("DANDOC")) << "','" << rowRDoc.get("DAIDRIGA") << "','1','" << rowRDoc.get("CODART") << "');"; if(sqlset.exec(sqlQuery) != 1) { @@ -804,7 +822,7 @@ bool TCampass_app::o03a(const TString id) const TString sqlQuery; // Prendo la riga di RDOC TRectype rowClifo = curClifo.curr(); - // Inserisco tutto in un colpo (yeeeeeeeee) + // Inserisco tutto in un colpo sqlQuery << "INSERT INTO O03A ( IKRUNIMP, FAZI, CStr, CCLI, RCLI ) \ VALUES('" << id << "','U','DBS','" << zeroFill(rowClifo.get("CODCF")) << "','" << toEscape(rowClifo.get("RAGSOC")) << "');";