diff --git a/src/mr/mr0600.cpp b/src/mr/mr0600.cpp index 4f1cc18d2..14a5f5d9f 100644 --- a/src/mr/mr0600.cpp +++ b/src/mr/mr0600.cpp @@ -69,6 +69,8 @@ protected: bool p01a(const TString id) const; bool p01b(const TString id) const; bool p02a(const TString id) const; + /**< Funzione di test */ + bool test() const; //bool o01b(const TString& DSN) const; Messa in pausa public: @@ -186,6 +188,8 @@ TString TCampass_app::esporta(const TString& DSN, const TString& usr, const TStr // Funzione disabilitata di debug // Innanzitutto svuoto le tabelle //if(!emptyTables(DSN)) return false; + //test(); + //return ""; // Adesso inizio a popolarle @@ -261,7 +265,7 @@ TString TCampass_app::esporta(const TString& DSN, const TString& usr, const TStr if(!o02a("PRC", o02)) errors << "ERRORE TABELLA: O02A - PRC\n"; // O02A PRC else logFile << getTime() << " - Esportata tabella O02A - PRC\n"; - + if(!o02c("ORC", o02)) errors << "ERRORE TABELLA: O02C - ORC\n"; // O02C ORC else logFile << getTime() << " - Esportata tabella O02C - ORC\n"; @@ -273,7 +277,8 @@ TString TCampass_app::esporta(const TString& DSN, const TString& usr, const TStr endExport(o02); logFile << getTime() << " - Fine esportazione O02!\n"; - + + // INIZIO O01 logFile << getTime() << " - Inizio esportazione O01:\n"; @@ -316,6 +321,61 @@ TString TCampass_app::esporta(const TString& DSN, const TString& usr, const TStr return errors; } +bool TCampass_app::test() const +{ + TODBC_recordset sqlset("", true); + // Controllo la connessione + if (!sqlset.connect(DSN, usr, psw)) + return false; + TRelation doc(LF_DOC),rdoc(LF_RIGHEDOC), filtro(LF_RIGHEDOC); + int items; + TString msg("Esportazione tabella "); msg << "O01A"; + // Creo il filtro per la chiave del cursore + TRectype filtroRDoc(rdoc.curr()); filtroRDoc.put("CODNUM", "ORP1"); + TCursor curRDoc(&rdoc, "", 1, &filtroRDoc, &filtroRDoc); + items = curRDoc.items(); + TProgress_monitor p(items, msg); + // Adesso inserisco tutta la bella roba + int i = 0, j = 0, k = 0; + for (curRDoc = 0; curRDoc.pos() < items && !p.is_cancelled(); ++curRDoc) + { + int num = curRDoc.pos(); + // Aggiorno il Progress Monitor + if (!p.add_status()) + break; + // Prendo la riga del FILTRO + TRectype rowRDoc = curRDoc.curr(); + if(rowRDoc.get("DACODNUM") != "ORC" && rowRDoc.get("DACODNUM") != "PRC") continue; // Filtro subito, evito di caricare un sacco di documenti per nulla + if(rowRDoc.get_bool("RIGAEVASA")) continue; + j++; + + TRectype filtroDoc(TRelation(LF_DOC).curr()); + filtroDoc.put(DOC_PROVV, rowRDoc.get("PROVV")); + filtroDoc.put(DOC_ANNO, rowRDoc.get("ANNO")); + filtroDoc.put(DOC_CODNUM, rowRDoc.get("CODNUM")); + filtroDoc.put(DOC_NDOC, rowRDoc.get("NDOC")); + TCursor curDoc(&doc, "", 1, &filtroDoc, &filtroDoc); + if(curDoc.items() > 0) + { + k++; + + + TRectype filtroFiltro(filtro.curr()); + filtroFiltro.put("CODNUM", rowRDoc.get("DACODNUM")); + filtroFiltro.put("ANNO", rowRDoc.get("DAANNO")); + filtroFiltro.put("PROVV", rowRDoc.get("DAPROVV")); + 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; + i++; + } + } + message_box(TR("Numero elementi prima: %d, con doc: %d dopo: %d"), j, k, i); + return true; +} + + // Non sono molto sicuro del suo funzionamento bool TCampass_app::a01a(const TString id) const { @@ -352,6 +412,7 @@ bool TCampass_app::a01a(const TString id) const curFiltro = 0; // Prendo la riga di Filtro TRectype rowFiltro = curFiltro.curr(); + if(rowFiltro.get_bool("RIGAEVASA")) continue; // Preparo la riga del documento TRectype filtroRDoc(rdoc.curr()); filtroRDoc.put("DAPROVV", rowFiltro.get("PROVV")); @@ -406,9 +467,10 @@ bool TCampass_app::o01a(const TString id) const // Prendo la riga del FILTRO TRectype rowRDoc = curRDoc.curr(); if(rowRDoc.get("DACODNUM") != "ORC" && rowRDoc.get("DACODNUM") != "PRC") continue; // Filtro subito, evito di caricare un sacco di documenti per nulla + if(rowRDoc.get_bool("RIGAEVASA")) continue; // Vado a prendere il documento di riferimento - TRectype filtroDoc(doc.curr()); + TRectype filtroDoc(TRelation(LF_DOC).curr()); filtroDoc.put(DOC_PROVV, rowRDoc.get("PROVV")); filtroDoc.put(DOC_ANNO, rowRDoc.get("ANNO")); filtroDoc.put(DOC_CODNUM, rowRDoc.get("CODNUM")); @@ -427,9 +489,9 @@ bool TCampass_app::o01a(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, "", 1, &filtroFiltro, &filtroFiltro); - if (curFiltro.items() == 0 || rowRDoc.get_bool("RIGAEVASA")) continue; // Controllo ma la query sopra non mi va come al solito + 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 // Dichiaro la stringa TString sqlQuery; @@ -441,7 +503,8 @@ bool TCampass_app::o01a(const TString id) const sqlQuery << (rowRDoc.get("DACODNUM") == "ORC" ? "R" : "P"); // Inserisco FLGSTA, CMAG, DPRICHI, DPRICHF, QPORD, XNOTE, CCLI - sqlQuery << "',NULL,'"; + sqlQuery << "','" << (rowRDoc.get("RIGAEVASA") == "X" ? "C" : "A"); + sqlQuery << "','"; // Se non ho un codice magazzino metto lo standard, Roberto ha detto di metterlo a mano tanto non cambierà mai! TString mag(rowRDoc.get("CODMAG")); @@ -695,17 +758,17 @@ bool TCampass_app::o02c(const TString CodNum, 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")); + //filtroFiltro.put("IDRIGA", rowRDoc.get("DAIDRIGA")); TCursor curFiltro(&rdoc, "RIGAEVASA!=\"X\"", 1, &filtroFiltro, &filtroFiltro); curFiltro = 0; // Se non ho elementi salto tutto - if(rowRDoc.get_int("DAIDRIGA") != curFiltro.curr().get_int("IDRIGA") || curFiltro.items() == 0 || 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) sqlQuery << "INSERT INTO O02C ( IKRUNIMP, CStr, CPRD, CCLIH, CCLIR, BVAL, DBS_CART) \ - VALUES('" << id << "','DBS','" << zeroFill(rowRDoc.get("NDOC")) << "." << rowRDoc.get("NRIGA") << "','" << 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") << "." << CodNum << "." << zeroFill(rowRDoc.get("DANDOC")) << "','" << rowRDoc.get("DAIDRIGA") << "','1','" << rowRDoc.get("CODART") << "');"; if(sqlset.exec(sqlQuery) != 1) {