Patch level : 12.0 374

Files correlati     : mr0
Commento            : Sistemata query O01A

git-svn-id: svn://10.65.10.50/branches/R_10_00@23703 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
mtollari 2017-03-24 14:22:47 +00:00
parent 1e28a41950
commit 5baa352c02

View File

@ -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)
{