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_A_DATADOC 129
#define F_TIPOST 130 #define F_TIPOST 130
#define F_TIPOCFD 131
#define F_DA_CLIFO 132
#define F_A_CLIFO 133
#define F_TIPOCF 110 #define F_TIPOCF 110
#define F_CODFR 111 #define F_CODFR 111
#define F_CODTO 112 #define F_CODTO 112

View File

@ -109,21 +109,28 @@ BEGIN
PROMPT 1 4 "Selezione per " PROMPT 1 4 "Selezione per "
ITEM "N|Numero documento" MESSAGE SHOW,1@|HIDE,2@ ITEM "N|Numero documento" MESSAGE SHOW,1@|HIDE,2@
ITEM "D|Data documento" MESSAGE SHOW,2@|HIDE,1@ ITEM "D|Data documento" MESSAGE SHOW,2@|HIDE,1@
ITEM "C|Cliente/Forntore" MESSAGE SHOW,3@|HIDE,1@|HIDE,2@
FLAG "P" FLAG "P"
END END
GROUPBOX DLG_NULL 68 5 GROUPBOX DLG_NULL 68 5
BEGIN BEGIN
PROMPT 1 8 "Selezione per numero" PROMPT 1 9 "Selezione per numero"
GROUP 1 GROUP 1
END END
GROUPBOX DLG_NULL 68 5 GROUPBOX DLG_NULL 68 5
BEGIN BEGIN
PROMPT 1 8 "Selezione per data" PROMPT 1 9 "Selezione per data"
GROUP 2 GROUP 2
END END
GROUPBOX DLG_NULL 68 7
BEGIN
PROMPT 1 9 "Selezione per cliente"
GROUP 3
END
NUMBER F_DA_NDOC 7 0 NUMBER F_DA_NDOC 7 0
BEGIN BEGIN
PROMPT 2 9 "Dal numero " PROMPT 2 9 "Dal numero "
@ -187,7 +194,7 @@ END
DATE F_A_DATADOC DATE F_A_DATADOC
BEGIN 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) USE 33 KEY 3 SELECT (PROVV==#F_PROVV) && (ANNO==#F_ANNO) && (CODNUM==#F_CODNUM)
JOIN 20 INTO CODCF=CODCF TIPOCF=TIPOCF JOIN 20 INTO CODCF=CODCF TIPOCF=TIPOCF
JOIN 13 TO 20 INTO COM=COMCF JOIN 13 TO 20 INTO COM=COMCF
@ -204,6 +211,42 @@ BEGIN
GROUP 2 GROUP 2
END 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 RADIOBUTTON F_TIPOST 68
BEGIN BEGIN
PROMPT 1 13 "Stampa" 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); return TISAM_recordset::get_field(logic, field);
} }
static TString _sortexpr; static TToken_string _sortexpr;
static int compare_rdocs(const TObject** p1, const TObject** p2) static int compare_rdocs(const TObject** p1, const TObject** p2)
{ {
const TRectype& r1 = *(const TRectype*)(*p1); const TRectype& r1 = *(const TRectype*)(*p1);
const TRectype& r2 = *(const TRectype*)(*p2); const TRectype& r2 = *(const TRectype*)(*p2);
const TString& c1 = r1.get(_sortexpr);
const TString& c2 = r2.get(_sortexpr); int cmp = 0;
return c1.compare(c2); 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) 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 "); const int pos = line.find("BY ");
if (pos > 0) if (pos > 0)
{ {
_sortexpr = line.mid(pos + 3); TToken_string by(line.mid(pos + 3), ' ');
_sortexpr.trim(); by.strip_d_spaces(); by.trim();
if (_sortexpr.starts_with("34.")) FOR_EACH_TOKEN(by, tok)
_sortexpr.ltrim(3); {
if (_sortexpr.starts_with("RDOC.")) TString16 fld = tok;
_sortexpr.ltrim(5); if (fld.starts_with("34."))
fld.ltrim(3);
if (fld.starts_with("RDOC."))
fld.ltrim(5);
_sortexpr.add(fld);
}
} }
line = query.get(); line = query.get();
line.trim(); line.trim();
@ -934,6 +954,7 @@ class TReport_doc_app : public TSkeleton_application
bool _no_print_dlg; bool _no_print_dlg;
protected: protected:
void add_cli_filter(TString& query, bool from) const;
void add_data_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_ndoc_filter(TString& query, bool from) const;
void add_filter(TString& str, 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; 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 void TReport_doc_app::add_data_filter(TString& query, bool from) const
{ {
if (from) 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 void TReport_doc_app::add_filter(TString& query, bool from) const
{ {
const bool per_data = _msk->get(F_DATA_O_NUM) == "D"; const char tipost = _msk->get(F_DATA_O_NUM)[0];
if (per_data)
switch (tipost)
{
case 'D' :
add_data_filter(query, from); add_data_filter(query, from);
else break;
case 'C' :
add_cli_filter(query, from);
break;
default :
add_ndoc_filter(query, from); add_ndoc_filter(query, from);
break;
}
} }
bool TReport_doc_app::create() bool TReport_doc_app::create()