Patch level : aga 07 no patch

Files correlati     : si0.exe
Ricompilazione Demo : [ ]
Commento            :
Corretta selezione stampa servizi
In tutti i form bisogna fare un join da 20 (clienti) a 33 (documenti)


git-svn-id: svn://10.65.10.50/trunk@10037 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2002-02-04 17:01:00 +00:00
parent 81fdc5499d
commit 2d0aeae806

View File

@ -102,6 +102,7 @@ void TListe_application::set_limits()
{
TCursor * c = _form->cursor();
TRelation * r = c->relation();
const int headlnum = r->lfile().num();
TString16 tipo(_select_mask->get(F_TIPOCF));
TString16 cli_fr(_select_mask->get(F_CODFR));
TString16 cli_to(_select_mask->get(F_CODTO));
@ -109,31 +110,56 @@ void TListe_application::set_limits()
from.put("TIPOCF", tipo);
TRectype to(from);
if (cli_fr.empty() && cli_to.empty())
{
TString16 rag_fr(_select_mask->get(F_RAGSOCFR));
if (rag_fr.not_empty())
from.put("RAGSOC", rag_fr);
TString16 rag_to(_select_mask->get(F_RAGSOCTO));
if (rag_to.not_empty())
to.put("RAGSOC", rag_to);
c->setkey(2);
TString filter("(");
if (headlnum == LF_DOC)
{
if (cli_fr.empty() && cli_to.empty())
{
TString16 rag_fr(_select_mask->get(F_RAGSOCFR));
if (rag_fr.not_empty())
filter << format("&&(20->RAGSOC>=\"%s\")", (const char *) rag_fr);
TString16 rag_to(_select_mask->get(F_RAGSOCTO));
if (rag_to.not_empty())
filter << format("&&(20->RAGSOC<=\"%s\")", (const char *) rag_to);
}
else
{
TString16 cli_fr(_select_mask->get(F_CODFR));
if (cli_fr.not_empty())
from.put("CODCF", cli_fr);
TString16 rag_to(_select_mask->get(F_CODTO));
if (rag_to.not_empty())
to.put("CODCF", cli_to);
c->setkey(2);
}
c->setregion(from, to);
}
else
{
TString16 cli_fr(_select_mask->get(F_CODFR));
if (cli_fr.not_empty())
from.put("CODCF", cli_fr);
TString16 rag_to(_select_mask->get(F_CODTO));
if (rag_to.not_empty())
to.put("CODCF", cli_to);
c->setkey(1);
}
c->setregion(from, to);
TString filter;
if (cli_fr.empty() && cli_to.empty())
{
TString16 rag_fr(_select_mask->get(F_RAGSOCFR));
if (rag_fr.not_empty())
filter << format("&&(20->RAGSOC>=\"%s\")", (const char *) rag_fr);
TString16 rag_to(_select_mask->get(F_RAGSOCTO));
if (rag_to.not_empty())
filter << format("&&(20->RAGSOC<=\"%s\")", (const char *) rag_to);
}
else
{
TString16 cli_fr(_select_mask->get(F_CODFR));
if (cli_fr.not_empty())
from.put("CODCF", cli_fr);
TString16 rag_to(_select_mask->get(F_CODTO));
if (rag_to.not_empty())
to.put("CODCF", cli_to);
}
}
if (filter != "(")
filter << "&&";
filter << format("(ANNO==%d)", _select_mask->get_int(F_ANNO));
filter << format("&&(PROVV==\"%c\")", _select_mask->get(F_PROVV)[0]);
filter << format("((33->ANNO==%d)", _select_mask->get_int(F_ANNO));
filter << format("&&(33->PROVV==\"%c\")", _select_mask->get(F_PROVV)[0]);
TSheet_field & s = _select_mask->sfield(F_SHEETNUMS);
const int rows = s.items();
@ -149,7 +175,7 @@ void TListe_application::set_limits()
if (riga.empty_items() || sw.empty())
break; // Interrompe alla prima riga vuota...
e1.format("(33->CODNUM==\"%s\"", (const char*)sw);
e1.format("(CODNUM==\"%s\"", (const char*)sw);
e2 = "";
for (int k=1; k<=6; k++) // Famme vede' li stati generali... Aho' A BURINO! Che e' la Rivoluzione Francese?
{
@ -179,16 +205,16 @@ void TListe_application::set_limits()
}
TDate data_fr(_select_mask->get(F_DA_DATADOC));
if (data_fr.ok())
filter << format("&&(ANSI(33->DATADOC)>=%s)", (const char *) data_fr.string(ANSI));
filter << format("&&(ANSI(33->DATADOC)>=\"%s\")", (const char *) data_fr.string(ANSI));
TDate data_to(_select_mask->get(F_A_DATADOC));
if (data_to.ok())
filter << format("&&(ANSI(33->DATADOC)>=%s)", (const char *) data_to.string(ANSI));
TDate art_fr(_select_mask->get(F_SERVFR));
if (art_fr.ok())
filter << format("&&(ANSI(33->DATADOC)<=\"%s\")", (const char *) data_to.string(ANSI));
TString80 art_fr(_select_mask->get(F_SERVFR));
if (art_fr.not_empty())
filter << format("&&(34->CODARTMAG>=\"%s\")", (const char *) art_fr);
TDate art_to(_select_mask->get(F_SERVTO));
if (art_to.ok())
filter << format("&&(34->CODARTMAG>=\"%s\")", (const char *) art_to);
TString80 art_to(_select_mask->get(F_SERVTO));
if (art_to.not_empty())
filter << format("&&(34->CODARTMAG<=\"%s\")", (const char *) art_to);
filter << ")";
c->setfilter(filter, TRUE);