Patch level : 10.0 732
Files correlati : pr1.exe pr1300a.msk Ricompilazione Demo : [ ] Commento : 0001607: 002422 - stampa schede Descrizione il bottone di esportazione excell non produce risultati; da impostazione stampante, scelgo di stampare su file, chiede il nome del file (che è già impostato) git-svn-id: svn://10.65.10.50/trunk@20432 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
0e70489f6b
commit
e8e526e6f1
274
pr/pr1300.cpp
274
pr/pr1300.cpp
@ -1,4 +1,6 @@
|
||||
#include <applicat.h>
|
||||
#include <automask.h>
|
||||
#include <defmask.h>
|
||||
#include <printer.h>
|
||||
#include <progind.h>
|
||||
|
||||
@ -6,6 +8,10 @@
|
||||
#include "pr1300a.h"
|
||||
#include "..\ve\velib.h"
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TStampa_schedeprovv_form
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TStampa_schedeprovv_form : public TForm
|
||||
{
|
||||
TString _basecalcolo;
|
||||
@ -25,7 +31,7 @@ TStampa_schedeprovv_form::TStampa_schedeprovv_form(const char* name) : TForm(nam
|
||||
|
||||
bool TStampa_schedeprovv_form::validate(TForm_item &cf, TToken_string &s)
|
||||
{
|
||||
const TString code = s.get(0);
|
||||
const TFixed_string code(s.get(0));
|
||||
if (code == "_BASECALCOLO")
|
||||
{
|
||||
real valore;
|
||||
@ -59,12 +65,41 @@ bool TStampa_schedeprovv_form::validate(TForm_item &cf, TToken_string &s)
|
||||
return TForm::validate(cf, s);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TStampa_schedeprovv_mask
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TStampa_schedeprovv_mask : public TAutomask
|
||||
{
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
public:
|
||||
TStampa_schedeprovv_mask() : TAutomask("pr1300a") {}
|
||||
};
|
||||
|
||||
bool TStampa_schedeprovv_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
if (e == fe_button && o.dlg() == DLG_PREVIEW) // Anteprima
|
||||
{ stop_run('A'); }
|
||||
return true;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TStampa_schedeprovv
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TStampa_schedeprovv : public TSkeleton_application
|
||||
{
|
||||
TMask * _m;
|
||||
void riporta_pagamenti(TCursor &cur);
|
||||
|
||||
protected:
|
||||
void riporta_pagamenti(TCursor &cur);
|
||||
void print_or_preview(bool paper);
|
||||
|
||||
virtual void print() { print_or_preview(true); }
|
||||
virtual void preview() { print_or_preview(false); }
|
||||
|
||||
public:
|
||||
virtual bool create();
|
||||
virtual bool destroy();
|
||||
virtual void main_loop();
|
||||
@ -77,7 +112,7 @@ bool TStampa_schedeprovv::create()
|
||||
LF_OCCAS, LF_PCON, LF_MOVMAG, LF_RMOVMAG, LF_MAG, LF_SVRIEP,
|
||||
LF_AGENTI, LF_PERCPROV, LF_ATTIV, LF_CAUSALI, 0);
|
||||
|
||||
_m= new TMask ("pr1300a");
|
||||
_m = new TStampa_schedeprovv_mask;
|
||||
|
||||
return TSkeleton_application::create();
|
||||
}
|
||||
@ -119,117 +154,134 @@ void TStampa_schedeprovv::riporta_pagamenti(TCursor &cur)
|
||||
}
|
||||
}
|
||||
|
||||
void TStampa_schedeprovv::print_or_preview(bool paper)
|
||||
{
|
||||
const TPrtype pt = printer().printtype(); // save printer mode
|
||||
if (paper == (pt == screenvis))
|
||||
{
|
||||
if (paper)
|
||||
printer().set_printtype(winprinter);
|
||||
else
|
||||
printer().set_printtype(screenvis);
|
||||
}
|
||||
|
||||
TStampa_schedeprovv_form frm("pr1300a");
|
||||
|
||||
const int hh = 7;
|
||||
const int fh = 1;
|
||||
const int fl = printer().formlen();
|
||||
|
||||
int rows[4]; // Righe orizzontali
|
||||
rows[0] = hh-3;
|
||||
rows[1] = hh;
|
||||
rows[2] = fl-1;
|
||||
rows[3] = 0;
|
||||
frm.genera_intestazioni(odd_page, hh-2);
|
||||
frm.genera_fincatura(odd_page, hh-3, fl-1, rows);
|
||||
|
||||
// filtro e regione
|
||||
TString filter;
|
||||
|
||||
if (_m->get(F_FILTRO).full())
|
||||
{
|
||||
filter = PROV_SALDATA;
|
||||
if (_m->get(F_FILTRO)[0]=='P')
|
||||
filter << "==\"X\"" ;
|
||||
else
|
||||
filter << "!=\"X\"" ;
|
||||
}
|
||||
if (_m->get_bool(F_NOZERO))
|
||||
{
|
||||
bool not_empty = filter.not_empty();
|
||||
if (not_empty)
|
||||
{
|
||||
filter.insert("(");
|
||||
filter << ") && (";
|
||||
}
|
||||
filter << "(" << PROV_IMPPRDOC << "!= 0)";
|
||||
if (not_empty)
|
||||
filter << ")";
|
||||
}
|
||||
if (_m->get(F_DADATA).not_empty() || _m->get(F_ADATA).not_empty())
|
||||
{
|
||||
TDate datam;
|
||||
bool not_empty = filter.not_empty();
|
||||
if (not_empty)
|
||||
{
|
||||
filter.insert("(");
|
||||
filter << ") && (";
|
||||
}
|
||||
if (_m->get(F_DADATA).not_empty())
|
||||
{
|
||||
datam = _m->get_date(F_DADATA);
|
||||
filter << "(ANSI(" << PROV_DATADOC << ")>=\"" << datam.string(ANSI) << "\")";
|
||||
if (_m->get(F_ADATA).not_empty())
|
||||
filter << " && ";
|
||||
}
|
||||
if (_m->get(F_ADATA).not_empty())
|
||||
{
|
||||
datam = _m->get_date(F_ADATA);
|
||||
filter << "(ANSI(" << PROV_DATADOC << ")<=\"" << datam.string(ANSI) << "\")";
|
||||
}
|
||||
if (not_empty)
|
||||
filter << ")";
|
||||
}
|
||||
|
||||
// aggiungo comunque il file alla relazione perche' mi serve avere il documento sempre
|
||||
frm.cursor()->relation()->add(LF_DOC, "CODNUM==CODNUM|ANNO==ANNO|PROVV==\"D\"|NDOC==NDOC");
|
||||
|
||||
const TString& tipodoc = _m->get(F_TIPODOC);
|
||||
if (tipodoc.full())
|
||||
{
|
||||
//frm.cursor()->relation()->add(LF_DOC, "CODNUM==CODNUM|ANNO==ANNO|PROVV==\"D\"|NDOC==NDOC");
|
||||
bool not_empty = filter.full();
|
||||
|
||||
if (not_empty)
|
||||
{
|
||||
filter.insert("(");
|
||||
filter << ") && (";
|
||||
}
|
||||
|
||||
filter << LF_DOC << "->TIPODOC == \"" << tipodoc << "\"";
|
||||
|
||||
if (not_empty)
|
||||
filter << ")";
|
||||
|
||||
frm.cursor()->setfilter(filter, TRUE);
|
||||
}
|
||||
else
|
||||
frm.cursor()->setfilter(filter);
|
||||
|
||||
TRectype start(LF_PROVV),end(LF_PROVV);
|
||||
if (_m->get(F_DAAGE).not_empty())
|
||||
start.put(PROV_CODAGE,_m->get(F_DAAGE));
|
||||
if (_m->get(F_AAGE).not_empty())
|
||||
end.put(PROV_CODAGE,_m->get(F_AAGE));
|
||||
frm.cursor()->setregion(start,end);
|
||||
|
||||
frm.set_basecalcolo(_m->get(F_FORMULA));
|
||||
|
||||
// abilita le sezioni dei totali
|
||||
frm.find_field('B',odd_page,"CLIENTI").show(!_m->get_bool(F_RAGGCLI));
|
||||
frm.find_field('B',odd_page,"HCLIENTI").show(!_m->get_bool(F_RAGGDOC));
|
||||
frm.find_field('B',odd_page,"DOCUMENTI").show(!_m->get_bool(F_RAGGDOC));
|
||||
frm.find_field('B',odd_page,"HDOCUMENTI").show(!_m->get_bool(F_RAGGRATE));
|
||||
frm.find_field('B',odd_page,"RATEDOC").show(!_m->get_bool(F_RAGGRATE));
|
||||
frm.print();
|
||||
if (_m->get(F_DEFINITIVA)[0]=='D')
|
||||
{
|
||||
riporta_pagamenti(*frm.cursor());
|
||||
}
|
||||
|
||||
printer().set_printtype(pt); // Restore printer mode
|
||||
}
|
||||
|
||||
void TStampa_schedeprovv::main_loop()
|
||||
{
|
||||
while (_m->run()!=K_QUIT)
|
||||
KEY k;
|
||||
while ((k = _m->run()) != K_QUIT)
|
||||
{
|
||||
TStampa_schedeprovv_form frm("pr1300a");
|
||||
|
||||
const int hh = 7;
|
||||
const int fh = 1;
|
||||
const int fl = printer().formlen();
|
||||
|
||||
int rows[4]; // Righe orizzontali
|
||||
rows[0] = hh-3;
|
||||
rows[1] = hh;
|
||||
rows[2] = fl-1;
|
||||
rows[3] = 0;
|
||||
frm.genera_intestazioni(odd_page, hh-2);
|
||||
frm.genera_fincatura(odd_page, hh-3, fl-1, rows);
|
||||
|
||||
// filtro e regione
|
||||
TString filter;
|
||||
|
||||
if (_m->get(F_FILTRO).not_empty())
|
||||
{
|
||||
filter = PROV_SALDATA;
|
||||
if (_m->get(F_FILTRO)[0]=='P')
|
||||
filter << "==\"X\"" ;
|
||||
else
|
||||
filter << "!=\"X\"" ;
|
||||
}
|
||||
if (_m->get_bool(F_NOZERO))
|
||||
{
|
||||
bool not_empty = filter.not_empty();
|
||||
if (not_empty)
|
||||
{
|
||||
filter.insert("(");
|
||||
filter << ") && (";
|
||||
}
|
||||
filter << "(" << PROV_IMPPRDOC << "!= 0)";
|
||||
if (not_empty)
|
||||
filter << ")";
|
||||
}
|
||||
if (_m->get(F_DADATA).not_empty() || _m->get(F_ADATA).not_empty())
|
||||
{
|
||||
TDate datam;
|
||||
bool not_empty = filter.not_empty();
|
||||
if (not_empty)
|
||||
{
|
||||
filter.insert("(");
|
||||
filter << ") && (";
|
||||
}
|
||||
if (_m->get(F_DADATA).not_empty())
|
||||
{
|
||||
datam = _m->get_date(F_DADATA);
|
||||
filter << "(ANSI(" << PROV_DATADOC << ")>=\"" << datam.string(ANSI) << "\")";
|
||||
if (_m->get(F_ADATA).not_empty())
|
||||
filter << " && ";
|
||||
}
|
||||
if (_m->get(F_ADATA).not_empty())
|
||||
{
|
||||
datam = _m->get_date(F_ADATA);
|
||||
filter << "(ANSI(" << PROV_DATADOC << ")<=\"" << datam.string(ANSI) << "\")";
|
||||
}
|
||||
if (not_empty)
|
||||
filter << ")";
|
||||
}
|
||||
|
||||
// aggiungo comunque il file alla relazione perche' mi serve avere il documento sempre
|
||||
frm.cursor()->relation()->add(LF_DOC, "CODNUM==CODNUM|ANNO==ANNO|PROVV==\"D\"|NDOC==NDOC");
|
||||
|
||||
const TString & tipodoc = _m->get(F_TIPODOC);
|
||||
if (tipodoc.not_empty())
|
||||
{
|
||||
//frm.cursor()->relation()->add(LF_DOC, "CODNUM==CODNUM|ANNO==ANNO|PROVV==\"D\"|NDOC==NDOC");
|
||||
bool not_empty = filter.not_empty();
|
||||
|
||||
if (not_empty)
|
||||
{
|
||||
filter.insert("(");
|
||||
filter << ") && (";
|
||||
}
|
||||
|
||||
filter << LF_DOC << "->TIPODOC == \"" << tipodoc << "\"";
|
||||
|
||||
if (not_empty)
|
||||
filter << ")";
|
||||
|
||||
frm.cursor()->setfilter(filter, TRUE);
|
||||
}
|
||||
else
|
||||
frm.cursor()->setfilter(filter);
|
||||
|
||||
TRectype start(LF_PROVV),end(LF_PROVV);
|
||||
if (_m->get(F_DAAGE).not_empty())
|
||||
start.put(PROV_CODAGE,_m->get(F_DAAGE));
|
||||
if (_m->get(F_AAGE).not_empty())
|
||||
end.put(PROV_CODAGE,_m->get(F_AAGE));
|
||||
frm.cursor()->setregion(start,end);
|
||||
|
||||
frm.set_basecalcolo(_m->get(F_FORMULA));
|
||||
|
||||
// abilita le sezioni dei totali
|
||||
frm.find_field('B',odd_page,"CLIENTI").show(!_m->get_bool(F_RAGGCLI));
|
||||
frm.find_field('B',odd_page,"HCLIENTI").show(!_m->get_bool(F_RAGGDOC));
|
||||
frm.find_field('B',odd_page,"DOCUMENTI").show(!_m->get_bool(F_RAGGDOC));
|
||||
frm.find_field('B',odd_page,"HDOCUMENTI").show(!_m->get_bool(F_RAGGRATE));
|
||||
frm.find_field('B',odd_page,"RATEDOC").show(!_m->get_bool(F_RAGGRATE));
|
||||
frm.print();
|
||||
if (_m->get(F_DEFINITIVA)[0]=='D')
|
||||
{
|
||||
riporta_pagamenti(*frm.cursor());
|
||||
}
|
||||
print_or_preview(k == K_ENTER);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,14 +1,19 @@
|
||||
#include "pr1300a.h"
|
||||
|
||||
TOOLBAR "topbar" 0 0 0 2
|
||||
#include <printbar.h>
|
||||
#include <aprintbar.h>
|
||||
ENDPAGE
|
||||
|
||||
PAGE "Stampa schede di provvigione" 0 2 0 0
|
||||
|
||||
GROUPBOX DLG_NULL 78 4
|
||||
BEGIN
|
||||
PROMPT 1 1 "@bIntervallo"
|
||||
END
|
||||
|
||||
STRING F_DAAGE 5
|
||||
BEGIN
|
||||
PROMPT 2 1 "Da agente "
|
||||
PROMPT 2 2 "Da agente "
|
||||
FLAGS "UZ"
|
||||
USE LF_AGENTI
|
||||
INPUT CODAGE F_DAAGE
|
||||
@ -20,7 +25,7 @@ END
|
||||
|
||||
STRING F_AAGE 5
|
||||
BEGIN
|
||||
PROMPT 34 1 "Ad agente "
|
||||
PROMPT 2 3 "Ad agente "
|
||||
FLAGS "UZ"
|
||||
COPY USE F_DAAGE
|
||||
INPUT CODAGE F_AAGE
|
||||
@ -29,51 +34,66 @@ BEGIN
|
||||
GROUP G_CODAGE
|
||||
END
|
||||
|
||||
DATE F_DADATA
|
||||
BEGIN
|
||||
PROMPT 34 2 "Da data "
|
||||
END
|
||||
|
||||
DATE F_ADATA
|
||||
BEGIN
|
||||
PROMPT 34 3 "A data "
|
||||
END
|
||||
|
||||
GROUPBOX DLG_NULL 78 8
|
||||
BEGIN
|
||||
PROMPT 1 5 "@bParametri e filtri"
|
||||
END
|
||||
|
||||
LIST F_DEFINITIVA 15
|
||||
BEGIN
|
||||
PROMPT 2 3 "Stampa "
|
||||
PROMPT 2 6 "Stampa "
|
||||
ITEM "P|provvisoria"
|
||||
MESSAGE ENABLE,F_FILTRO
|
||||
ITEM "D|definitiva"
|
||||
MESSAGE "D",F_FILTRO|DISABLE,F_FILTRO
|
||||
END
|
||||
|
||||
LIST F_FILTRO 30
|
||||
LIST F_FILTRO 1 30
|
||||
BEGIN
|
||||
PROMPT 34 3 "Seleziona "
|
||||
ITEM "|tutte le provvigioni"
|
||||
ITEM "D|solo le provv. da pagare"
|
||||
ITEM "P|solo le provv. gia' pagate"
|
||||
PROMPT 34 6 "Selezione "
|
||||
ITEM "|Tutte le provvigioni"
|
||||
ITEM "D|Solo da pagare"
|
||||
ITEM "P|Solo gia' pagate"
|
||||
END
|
||||
|
||||
BOOL F_RAGGCLI
|
||||
BEGIN
|
||||
PROMPT 2 5 "Raggruppa i clienti"
|
||||
MESSAGE TRUE "X",F_RAGGDOC|DISABLE,F_RAGGDOC
|
||||
PROMPT 2 7 "Raggruppamento clienti"
|
||||
MESSAGE FALSE ENABLE,F_RAGGDOC
|
||||
MESSAGE TRUE "X",F_RAGGDOC|DISABLE,F_RAGGDOC
|
||||
END
|
||||
|
||||
BOOL F_RAGGDOC
|
||||
BEGIN
|
||||
PROMPT 35 5 "Raggruppa i documenti"
|
||||
MESSAGE TRUE "X",F_RAGGRATE|DISABLE,F_RAGGRATE|"",F_TIPODOC|DISABLE, F_TIPODOC
|
||||
PROMPT 34 7 "Raggruppamento documenti"
|
||||
MESSAGE FALSE ENABLE,F_RAGGRATE|ENABLE,F_TIPODOC
|
||||
MESSAGE TRUE "X",F_RAGGRATE|DISABLE,F_RAGGRATE|"",F_TIPODOC|DISABLE, F_TIPODOC
|
||||
END
|
||||
|
||||
BOOL F_RAGGRATE
|
||||
BEGIN
|
||||
PROMPT 2 7 "Raggruppa le rate"
|
||||
PROMPT 2 8 "Raggruppamento rate"
|
||||
END
|
||||
|
||||
BOOL F_NOZERO
|
||||
BEGIN
|
||||
PROMPT 35 7 "Non stampare doc. con provvigione nulla"
|
||||
PROMPT 34 8 "Non stampare documenti senza provvigioni"
|
||||
END
|
||||
|
||||
STRING F_TIPODOC 4
|
||||
BEGIN
|
||||
PROMPT 2 9 "Tipo doc. "
|
||||
HELP "Codice tipo documento"
|
||||
PROMPT 2 9 "Tipo documento "
|
||||
HELP "Selezionare il tipo documento da stampare"
|
||||
USE %TIP SELECT B3=="X"
|
||||
INPUT CODTAB F_TIPODOC
|
||||
DISPLAY "Codice" CODTAB
|
||||
@ -83,19 +103,9 @@ BEGIN
|
||||
FLAG "UP"
|
||||
END
|
||||
|
||||
DATE F_DADATA
|
||||
BEGIN
|
||||
PROMPT 2 11 "Da data "
|
||||
END
|
||||
|
||||
DATE F_ADATA
|
||||
BEGIN
|
||||
PROMPT 35 11 "A data "
|
||||
END
|
||||
|
||||
STRING F_FORMULA 10
|
||||
BEGIN
|
||||
PROMPT 2 13 "Stampa "
|
||||
PROMPT 2 11 "Stampa "
|
||||
USE %FRD
|
||||
FLAG "U"
|
||||
CHECKTYPE NORMAL
|
||||
@ -108,13 +118,13 @@ END
|
||||
|
||||
STRING F_D_FORMULA 50
|
||||
BEGIN
|
||||
PROMPT 25 13 ""
|
||||
PROMPT 26 11 ""
|
||||
FLAG "D"
|
||||
END
|
||||
|
||||
STRING F_PROFILO 50
|
||||
BEGIN
|
||||
PROMPT 2 15 "Profilo "
|
||||
PROMPT 2 -1 "Profilo "
|
||||
PSELECT
|
||||
//MESSAGE K_SPACE,F_ORDINAMENTO|K_SPACE,F_VAL2PRINT
|
||||
END
|
||||
|
Loading…
x
Reference in New Issue
Block a user