Patch level : 10.0 patch 767

Files correlati     :  ve1.exe
Ricompilazione Demo : [ ]
Commento            :

Stampa fatture ordinate per cliente

Dalla versione 3.2


git-svn-id: svn://10.65.10.50/trunk@20595 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2010-06-21 14:13:41 +00:00
parent a88513c510
commit 919156201f
3 changed files with 109 additions and 16 deletions

View File

@ -12,6 +12,10 @@
#define F_A_DATADOC 129
#define F_TIPOST 130
#define F_TIPOCFD 131
#define F_DA_CLIFO 132
#define F_A_CLIFO 133
#define F_TIPOCF 110
#define F_CODFR 111
#define F_CODTO 112

View File

@ -109,21 +109,28 @@ BEGIN
PROMPT 1 4 "Selezione per "
ITEM "N|Numero documento" MESSAGE SHOW,1@|HIDE,2@
ITEM "D|Data documento" MESSAGE SHOW,2@|HIDE,1@
ITEM "C|Cliente/Forntore" MESSAGE SHOW,3@|HIDE,1@|HIDE,2@
FLAG "P"
END
GROUPBOX DLG_NULL 68 5
BEGIN
PROMPT 1 8 "Selezione per numero"
PROMPT 1 9 "Selezione per numero"
GROUP 1
END
GROUPBOX DLG_NULL 68 5
BEGIN
PROMPT 1 8 "Selezione per data"
PROMPT 1 9 "Selezione per data"
GROUP 2
END
GROUPBOX DLG_NULL 68 7
BEGIN
PROMPT 1 9 "Selezione per cliente"
GROUP 3
END
NUMBER F_DA_NDOC 7 0
BEGIN
PROMPT 2 9 "Dal numero "
@ -187,7 +194,7 @@ END
DATE F_A_DATADOC
BEGIN
PROMPT 2 11 "Alla data "
PROMPT 2 12 "Alla data "
USE 33 KEY 3 SELECT (PROVV==#F_PROVV) && (ANNO==#F_ANNO) && (CODNUM==#F_CODNUM)
JOIN 20 INTO CODCF=CODCF TIPOCF=TIPOCF
JOIN 13 TO 20 INTO COM=COMCF
@ -204,6 +211,42 @@ BEGIN
GROUP 2
END
LIST F_TIPOCFD 1 12
BEGIN
PROMPT 2 10 "Tipo "
ITEM "C|Cliente"
ITEM "F|Fornitore"
GROUP 3
END
NUMBER F_DA_CLIFO 7 0
BEGIN
PROMPT 2 12 "Dal Cli/For"
USE 20
JOIN 13 TO 20 INTO COM==COMCF
INPUT TIPOCF F_TIPOCFD SELECT
INPUT CODCF F_DA_CLIFO
DISPLAY "Codice@7" CODCF
DISPLAY "Ragione Sociale@50" RAGSOC
DISPLAY "Comune@20" 13->DENCOM
OUTPUT F_DA_CLIFO CODCF
GROUP 3
END
NUMBER F_A_CLIFO 7 0
BEGIN
PROMPT 2 14 "Al Cli/For "
USE 20
JOIN 13 TO 20 INTO COM==COMCF
INPUT TIPOCF F_TIPOCFD SELECT
INPUT CODCF F_A_CLIFO
DISPLAY "Codice@7" CODCF
DISPLAY "Ragione Sociale@50" RAGSOC
DISPLAY "Comune@20" 13->DENCOM
OUTPUT F_A_CLIFO CODCF
GROUP 3
END
RADIOBUTTON F_TIPOST 68
BEGIN
PROMPT 1 13 "Stampa"

View File

@ -101,15 +101,30 @@ const TVariant& TDoc_recordset::get_field(int logic, const char* field) const
return TISAM_recordset::get_field(logic, field);
}
static TString _sortexpr;
static TToken_string _sortexpr;
static int compare_rdocs(const TObject** p1, const TObject** p2)
{
const TRectype& r1 = *(const TRectype*)(*p1);
const TRectype& r2 = *(const TRectype*)(*p2);
const TString& c1 = r1.get(_sortexpr);
const TString& c2 = r2.get(_sortexpr);
return c1.compare(c2);
int cmp = 0;
FOR_EACH_TOKEN(_sortexpr, fld)
{
const TString& c1 = r1.get(fld);
const TString& c2 = r2.get(fld);
if (real::is_real(c1) && real::is_real(c2))
{
const real r1(c1);
const real r2(c2);
cmp = r1 == r2 ? 0 : (r1 < r2 ? -1 : +1);
}
else
cmp = c1.compare(c2);
if (cmp != 0)
break;
}
return cmp;
}
TDoc_recordset::TDoc_recordset(const TRecordset& doc, const TString& old_query)
@ -131,12 +146,17 @@ TDoc_recordset::TDoc_recordset(const TRecordset& doc, const TString& old_query)
const int pos = line.find("BY ");
if (pos > 0)
{
_sortexpr = line.mid(pos + 3);
_sortexpr.trim();
if (_sortexpr.starts_with("34."))
_sortexpr.ltrim(3);
if (_sortexpr.starts_with("RDOC."))
_sortexpr.ltrim(5);
TToken_string by(line.mid(pos + 3), ' ');
by.strip_d_spaces(); by.trim();
FOR_EACH_TOKEN(by, tok)
{
TString16 fld = tok;
if (fld.starts_with("34."))
fld.ltrim(3);
if (fld.starts_with("RDOC."))
fld.ltrim(5);
_sortexpr.add(fld);
}
}
line = query.get();
line.trim();
@ -934,6 +954,7 @@ class TReport_doc_app : public TSkeleton_application
bool _no_print_dlg;
protected:
void add_cli_filter(TString& query, bool from) const;
void add_data_filter(TString& query, bool from) const;
void add_ndoc_filter(TString& query, bool from) const;
void add_filter(TString& str, bool from) const;
@ -1007,6 +1028,22 @@ bool TReport_doc_app::get_next_mail(TToken_string& to, TToken_string& cc, TToken
return ok;
}
void TReport_doc_app::add_cli_filter(TString& query, bool from) const
{
if (from)
{
query << " KEY 4 SELECT "
<< "(PROVV='" << _msk->get(F_PROVV)
<< "')&&(ANNO=" << _msk->get(F_ANNO)
<< ")&&(CODNUM='" << _msk->get(F_CODNUM) << "')";
}
query << '\n';
const TString4 tipocf = _msk->get(F_TIPOCFD);
const long cod = _msk->get_long(from ? F_DA_CLIFO : F_A_CLIFO);
if (cod > 0L)
query << (from ? "FROM" : "TO") << " TIPOCF=" << tipocf << " CODCF=" << cod;
}
void TReport_doc_app::add_data_filter(TString& query, bool from) const
{
if (from)
@ -1033,11 +1070,20 @@ void TReport_doc_app::add_ndoc_filter(TString& query, bool from) const
void TReport_doc_app::add_filter(TString& query, bool from) const
{
const bool per_data = _msk->get(F_DATA_O_NUM) == "D";
if (per_data)
const char tipost = _msk->get(F_DATA_O_NUM)[0];
switch (tipost)
{
case 'D' :
add_data_filter(query, from);
else
break;
case 'C' :
add_cli_filter(query, from);
break;
default :
add_ndoc_filter(query, from);
break;
}
}
bool TReport_doc_app::create()