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 p01a(const TString id) const;
bool p01b(const TString id) const; bool p01b(const TString id) const;
bool p02a(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 //bool o01b(const TString& DSN) const; Messa in pausa
public: public:
@ -186,6 +188,8 @@ TString TCampass_app::esporta(const TString& DSN, const TString& usr, const TStr
// Funzione disabilitata di debug // Funzione disabilitata di debug
// Innanzitutto svuoto le tabelle // Innanzitutto svuoto le tabelle
//if(!emptyTables(DSN)) return false; //if(!emptyTables(DSN)) return false;
//test();
//return "";
// Adesso inizio a popolarle // Adesso inizio a popolarle
@ -274,6 +278,7 @@ TString TCampass_app::esporta(const TString& DSN, const TString& usr, const TStr
logFile << getTime() << " - Fine esportazione O02!\n"; logFile << getTime() << " - Fine esportazione O02!\n";
// INIZIO O01 // INIZIO O01
logFile << getTime() << " - Inizio esportazione O01:\n"; logFile << getTime() << " - Inizio esportazione O01:\n";
@ -316,6 +321,61 @@ TString TCampass_app::esporta(const TString& DSN, const TString& usr, const TStr
return errors; 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 // Non sono molto sicuro del suo funzionamento
bool TCampass_app::a01a(const TString id) const bool TCampass_app::a01a(const TString id) const
{ {
@ -352,6 +412,7 @@ bool TCampass_app::a01a(const TString id) const
curFiltro = 0; curFiltro = 0;
// Prendo la riga di Filtro // Prendo la riga di Filtro
TRectype rowFiltro = curFiltro.curr(); TRectype rowFiltro = curFiltro.curr();
if(rowFiltro.get_bool("RIGAEVASA")) continue;
// Preparo la riga del documento // Preparo la riga del documento
TRectype filtroRDoc(rdoc.curr()); TRectype filtroRDoc(rdoc.curr());
filtroRDoc.put("DAPROVV", rowFiltro.get("PROVV")); filtroRDoc.put("DAPROVV", rowFiltro.get("PROVV"));
@ -406,9 +467,10 @@ bool TCampass_app::o01a(const TString id) const
// Prendo la riga del FILTRO // Prendo la riga del FILTRO
TRectype rowRDoc = curRDoc.curr(); 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("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 // 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_PROVV, rowRDoc.get("PROVV"));
filtroDoc.put(DOC_ANNO, rowRDoc.get("ANNO")); filtroDoc.put(DOC_ANNO, rowRDoc.get("ANNO"));
filtroDoc.put(DOC_CODNUM, rowRDoc.get("CODNUM")); 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("ANNO", rowRDoc.get("DAANNO"));
filtroFiltro.put("PROVV", rowRDoc.get("DAPROVV")); filtroFiltro.put("PROVV", rowRDoc.get("DAPROVV"));
filtroFiltro.put("NDOC", rowRDoc.get("DANDOC")); filtroFiltro.put("NDOC", rowRDoc.get("DANDOC"));
filtroFiltro.put("IDRIGA", rowRDoc.get("DAIDRIGA"));
TCursor curFiltro(&rdoc, "", 1, &filtroFiltro, &filtroFiltro); 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 // Dichiaro la stringa
TString sqlQuery; TString sqlQuery;
@ -441,7 +503,8 @@ bool TCampass_app::o01a(const TString id) const
sqlQuery << (rowRDoc.get("DACODNUM") == "ORC" ? "R" : "P"); sqlQuery << (rowRDoc.get("DACODNUM") == "ORC" ? "R" : "P");
// Inserisco FLGSTA, CMAG, DPRICHI, DPRICHF, QPORD, XNOTE, CCLI // 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! // 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")); 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("ANNO", rowRDoc.get("DAANNO"));
filtroFiltro.put("PROVV", rowRDoc.get("DAPROVV")); filtroFiltro.put("PROVV", rowRDoc.get("DAPROVV"));
filtroFiltro.put("NDOC", rowRDoc.get("DANDOC")); 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); TCursor curFiltro(&rdoc, "RIGAEVASA!=\"X\"", 1, &filtroFiltro, &filtroFiltro);
curFiltro = 0; curFiltro = 0;
// Se non ho elementi salto tutto // 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 // Dichiaro la stringa
TString sqlQuery; TString sqlQuery;
// Inserisco Tutto (yeeeeeeeeeeeeeee) // Inserisco Tutto (yeeeeeeeeeeeeeee)
sqlQuery << "INSERT INTO O02C ( IKRUNIMP, CStr, CPRD, CCLIH, CCLIR, BVAL, DBS_CART) \ 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) if(sqlset.exec(sqlQuery) != 1)
{ {