Patch level :2.2 140

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :stampa mastrini in corso d'opera...adesso stampa qualcosa di più o meno sensato!


git-svn-id: svn://10.65.10.50/trunk@13216 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2005-06-23 15:38:04 +00:00
parent 3b54bda04d
commit c247c55a4a
6 changed files with 494 additions and 86 deletions

View File

@ -17,16 +17,6 @@
#define F_REPORT 213
#define F_TIPOMOV 214
//campi generati dal pdc
#define F_CDC1_INI 306
#define F_CDC12_INI 321
#define F_CDC1_FIN 326
#define F_CDC12_FIN 341
#define F_DES1_INI 346
#define F_DES12_INI 361
#define F_DES1_FIN 366
#define F_DES12_FIN 381
//sheet di pagina 2
#define F_RIGHE 400

View File

@ -2,10 +2,11 @@
#include <execp.h>
#include <reprint.h>
#include "movana.h"
#include "rmovana.h"
#include "ca3.h"
#include "ca3200a.h"
#include "ca3200.h"
#include "calib01.h"
#include "calib02.h"
@ -15,7 +16,9 @@
class TPrint_mastrini_ca_mask : public TAutomask
{
protected:
bool on_field_event(TOperable_field& o, TField_event e, long jolly) {return true;}
bool on_field_event(TOperable_field& o, TField_event e, long jolly);
const TString& get_compatible_library() const;
bool test_compatible_report();
void create_page2();
int create_page2_sheet(int lf, int& y, short& dlg, bool required);
public:
@ -23,6 +26,72 @@ public:
virtual ~TPrint_mastrini_ca_mask() {}
};
const TString& TPrint_mastrini_ca_mask::get_compatible_library() const
{
TString& lib = get_tmp_string();
lib = "ca3200";
const int stp = get_int(F_TIPOCONTI);
lib << (stp == 1 ? 'a' : 'b'); // tipo di report da usare
return lib;
}
bool TPrint_mastrini_ca_mask::test_compatible_report()
{
TFilename lib = get_compatible_library();
const TString& name = get(F_REPORT);
bool ok = name.not_empty();
if (ok)
{
TReport rep;
ok = rep.load(name);
if (ok)
{
TToken_string& libraries = rep.get_libraries();
ok = libraries.get_pos(lib) >= 0;
}
}
if (!ok)
{
set(F_REPORT, lib);
lib.ext("rep");
ok = lib.custom_path();
}
return ok;
}
bool TPrint_mastrini_ca_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
{
switch (o.dlg())
{
case F_TIPOCONTI:
if (e == fe_init || e == fe_modify)
{
test_compatible_report(); //in base al tipo di conti da stampare setta i report compatibili
}
break;
case F_REPORT:
if (e == fe_button)
{
const TString8 lib = get_compatible_library();
TFilename path = o.get();
if (select_custom_file(path, "rep", lib))
{
path = path.name();
path.ext("");
o.set(path);
}
} else
if (e == fe_close)
{
if (!test_compatible_report())
return error_box(TR("Impossibile trovare un report compatibile"));
}
break;
default: break;
}
return true;
}
int TPrint_mastrini_ca_mask::create_page2_sheet(int lf, int& y, short& dlg, bool required)
{
TSheet_field& sf = sfield(F_RIGHE);
@ -129,7 +198,7 @@ void TPrint_mastrini_ca_mask::create_page2()
TPrint_mastrini_ca_mask::TPrint_mastrini_ca_mask()
:TAutomask("ca3200a")
:TAutomask("ca3200")
{
TConfig_anal cfg;
const bool use_pdcc = cfg.get_bool("UsePdcc");
@ -152,16 +221,157 @@ TPrint_mastrini_ca_mask::TPrint_mastrini_ca_mask()
}
///////////////////////////////////////////////////////////
// RECORDSET
///////////////////////////////////////////////////////////
class TPrint_mastrini_ca_recordset : public TISAM_recordset
{
int _anno;
int _tipoconti;
TDate _dadata, _adata;
long _danumreg, _anumreg;
TString _daconto, _aconto, _codcosto, _codcms, _codfas;
protected:
static bool mov_filter(const TRelation* rel);
bool valid_record(const TRelation& rel) const;
virtual void set_custom_filter(TCursor& cur) const;
public:
void set_filter(const TPrint_mastrini_ca_mask& msk, int cms_row);
TPrint_mastrini_ca_recordset(const TString& sql) : TISAM_recordset(sql) { }
};
static const TPrint_mastrini_ca_recordset* myself = NULL;
//metodo per riconoscere se il record corrente soddisfa i filtri della maschera...strafighissimo!
bool TPrint_mastrini_ca_recordset::valid_record(const TRelation& rel) const
{
//prima controlla la testata...
const TRectype& mov = rel.curr(LF_MOVANA);
const TDate data = mov.get(MOVANA_DATACOMP);
if (data < _dadata || (_adata.ok() && data > _adata))
return false;
/* if (_tipoconti > ' ')
{
const int tipoconti = mov.get_int();
if (tipoconti != _tipoconti)
return false;
}*/
//..poi le righe (devono comparire solo le righe con cdc/cms/fsc che appaiono nello sheet)
const TRectype& rmov = rel.curr(LF_RMOVANA);
if (_codcosto.not_empty())
{
const TString& cos = rmov.get(RMOVANA_CODCCOSTO);
if (cos != _codcosto)
return false;
}
if (_codcms.not_empty())
{
const TString& cms = rmov.get(RMOVANA_CODCMS);
if (cms != _codcms)
return false;
}
if (_codfas.not_empty())
{
const TString& fas = rmov.get(RMOVANA_CODFASE);
if (fas != _codfas)
return false;
}
return true;
}
bool TPrint_mastrini_ca_recordset::mov_filter(const TRelation* rel)
{
return myself->valid_record(*rel);
}
void TPrint_mastrini_ca_recordset::set_custom_filter(TCursor& cur) const
{
//filtro sui conti selezionati sulla maschera
TRectype darec(cur.curr()), arec(cur.curr()); //record corrente (rmovana (solo movimentati) o pconana(altri casi))
darec.put("CODCONTO", _daconto);
arec.put("CODCONTO", _aconto);
cur.setregion(darec, arec);
myself = this;
cur.set_filterfunction(mov_filter, true);
}
//metodo per caricare i valori nel recordset dalla maschera...fighissimo!!
void TPrint_mastrini_ca_recordset::set_filter(const TPrint_mastrini_ca_mask& msk, int cms_row)
{
_daconto, _aconto, _codcosto = _codcms = _codfas = "";
if (cms_row >= 0)
{
TSheet_field& sf = msk.sfield(F_RIGHE);
TMask& sm = sf.sheet_mask();
sf.update_mask(cms_row);
TRelation rel(LF_RMOVANA);
sm.autosave(rel);
_codcosto = rel.curr().get(RMOVANA_CODCCOSTO);
_codcms = rel.curr().get(RMOVANA_CODCMS);
_codfas = rel.curr().get(RMOVANA_CODFASE);
}
for (int i = 0; msk.id2pos(F_CDC1_INI+i) > 0; i++)
{
_daconto << msk.get(F_CDC1_INI+i);
_aconto << msk.get(F_CDC1_FIN+i);
}
_dadata = msk.get_date(F_DATAINI);
_adata = msk.get_date(F_DATAFIN);
_tipoconti = msk.get(F_TIPOCONTI)[0];
}
////////////////////////////////////////////////////////
// REPORT
////////////////////////////////////////////////////////
class TPrint_mastrini_ca_rep : public TAnal_report
{
/*protected:
int _anno;
protected:
virtual bool set_recordset(const TString& sql);
virtual bool get_usr_val(const TString& name, TVariant& var) const;
void calcola_saldo_iniziale();*/
public:
void set_filter(const TPrint_mastrini_ca_mask& msk, int cms_row);
};
bool TPrint_mastrini_ca_rep::get_usr_val(const TString& name, TVariant& var) const
{
if (name == "#ESERCIZIO")
{
var.set(_anno);
return true;
}
return TAnal_report::get_usr_val(name, var);
}
bool TPrint_mastrini_ca_rep::set_recordset(const TString& sql)
{
TPrint_mastrini_ca_recordset* rs = new TPrint_mastrini_ca_recordset(sql);
return TReport::set_recordset(rs);
}
void TPrint_mastrini_ca_rep::set_filter(const TPrint_mastrini_ca_mask& msk, int cms_row)
{
_anno = msk.get_int(F_ANNO);
TPrint_mastrini_ca_recordset* rs = (TPrint_mastrini_ca_recordset*)recordset();
rs->set_filter(msk, cms_row);
}
////////////////////////////////////////////////////////
// APPLICAZIONE
@ -211,13 +421,8 @@ void TPrint_mastrini_ca::main_loop()
FOR_EACH_SHEET_ROW(sheet, r, row)
{
TString query;
query << "USE RMOVANA\nJOIN PCONANA INTO CODCONTO==CODCONTO";
rep.set_recordset(query);
rep.mask2report(*_mask);
rep.set_filter(*_mask, r);
book.add(rep);
}
book.print_or_preview(); //stampa il book dei report

48
ca/ca3200.h Executable file
View File

@ -0,0 +1,48 @@
#ifndef __CA3200_H
#define __CA3200_H
//pag. stampa mastrini
#define F_CODDITTA 201
#define F_RAGSOC 202
#define F_DATASTAMPA 203
#define F_ANNO 204
#define F_REPORT 205
//campi generati dal pdc
#define F_CDC1_INI 206
#define F_CDC4_INI 209
#define F_CDC1_FIN 216
#define F_CDC4_FIN 219
#define F_DES1_INI 226
#define F_DES4_INI 229
#define F_DES1_FIN 236
#define F_DES4_FIN 239
//campi sulla maschera
#define F_DATAINI 290
#define F_DATAFIN 291
#define F_STAMPA_PROG_ATT 292
#define F_STAMPA_SALDI_PROG 293
#define F_STAMPA_SALDI_SCAL 294
#define F_TIPOCONTI 295
#define F_MEMORIZZA 296
//sheet di pagina 2
#define F_RIGHE 300
#define S_CDC1 101
#define S_CDC2 102
#define S_CDC3 103
#define S_CDC4 104
#define S_CDC5 105
#define S_CDC6 106
#define S_CDC7 107
#define S_CDC8 108
#define S_CDC9 109
#define S_CDC10 110
#define S_CDC11 111
#define S_CDC12 112
#endif // __CA3200_H

View File

@ -1,21 +1,22 @@
#include "ca3200a.h"
#include "ca3200.h"
TOOLBAR "" 0 -2 0 2
TOOLBAR "" 0 -3 0 3
BUTTON DLG_PRINT 18 2
STRING DLG_PROFILE 50
BEGIN
PROMPT -13 -11 "~Stampa"
PROMPT 9 0 "Profilo "
PSELECT
END
BUTTON DLG_PRINT 10 2
BEGIN
PROMPT -15 -11 "~Stampa"
MESSAGE EXIT,K_ENTER
END
BUTTON F_MEMORIZZA 18 2
BUTTON DLG_QUIT 10 2
BEGIN
PROMPT -23 -11 "~Memorizza scelte"
END
BUTTON DLG_QUIT 18 2
BEGIN
PROMPT -33 -11 ""
PROMPT -55 -11 ""
END
ENDPAGE
@ -104,7 +105,7 @@ BEGIN
PROMPT 26 17 ""
END
DATE F_DATAFINE
DATE F_DATAFIN
BEGIN
PROMPT 62 17 ""
END
@ -124,9 +125,9 @@ BEGIN
PROMPT 55 18 "Stampa saldo scalare"
END
LIST F_SELEZ_STAMPA 34
LIST F_TIPOCONTI 24
BEGIN
PROMPT 2 19 "Selezione mastrini "
PROMPT 2 19 "Selezione conti "
ITEM "1|Movimentati nel periodo"
ITEM "2|Con saldo diverso da 0"
ITEM "3|Tutti"
@ -135,6 +136,8 @@ END
STRING F_REPORT 256 64
BEGIN
PROMPT 2 21 "Report "
FLAGS "B"
CHECKTYPE REQUIRED
END
ENDPAGE

View File

@ -1,48 +0,0 @@
#ifndef __CA3200A_H
#define __CA3200A_H
//pag. stampa mastrini
#define F_CODDITTA 301
#define F_RAGSOC 302
#define F_DATASTAMPA 303
#define F_ANNO 304
#define F_REPORT 305
//campi generati dal pdc
#define F_CDC1_INI 306
#define F_CDC12_INI 321
#define F_CDC1_FIN 326
#define F_CDC12_FIN 341
#define F_DES1_INI 346
#define F_DES12_INI 361
#define F_DES1_FIN 366
#define F_DES12_FIN 381
//campi sulla maschera
#define F_DATAINI 390
#define F_DATAFINE 391
#define F_STAMPA_PROG_ATT 392
#define F_STAMPA_SALDI_PROG 393
#define F_STAMPA_SALDI_SCAL 394
#define F_SELEZ_STAMPA 395
#define F_MEMORIZZA 396
//sheet di pagina 2
#define F_RIGHE 400
#define S_CDC1 101
#define S_CDC2 102
#define S_CDC3 103
#define S_CDC4 104
#define S_CDC5 105
#define S_CDC6 106
#define S_CDC7 107
#define S_CDC8 108
#define S_CDC9 109
#define S_CDC10 110
#define S_CDC11 111
#define S_CDC12 112
#endif // __CA3200A_H

210
ca/ca3200a.rep Executable file
View File

@ -0,0 +1,210 @@
<report libraries="ca3200a,ve1300" name="ca3200a" lpi="8">
<description>Mastrini CA movimentati</description>
<font face="Courier New" size="8" />
<section type="Head" height="6.5">
<font italic="1" face="Courier New" bold="1" size="8" />
<field x="1" type="Stringa" width="50" pattern="1">
<font italic="1" face="Courier New" bold="1" size="10" />
<source>#SYSTEM.RAGSOC</source>
</field>
<field x="80" type="Data" width="10" pattern="1">
<source>#SYSTEM.DATE</source>
</field>
<field x="165" type="Numero" align="right" width="3" pattern="1">
<source>#REPORT.PAGE</source>
</field>
<field x="1" y="1.5" type="Testo" width="4" pattern="1" text="CdC:" />
<field x="11" y="1.5" type="Stringa" width="23" pattern="1">
<source>CODCCOSTO</source>
<prescript description="H0.0 PRESCRIPT">CA_FORMAT_COSTO</prescript>
</field>
<field x="35" y="1.5" type="Stringa" width="50" pattern="1">
<prescript description="H0.0 PRESCRIPT">MESSAGE ISAMREAD,CDC,CODCOSTO=RMOVANA.CODCCOSTO,DESCRIZ</prescript>
</field>
<field x="1" y="3" type="Testo" width="9" pattern="1" text="Commessa:" />
<field x="11" y="3" type="Stringa" width="23" pattern="1">
<source>CODCMS</source>
<prescript description="H0.0 PRESCRIPT">CA_FORMAT_COMMESSA</prescript>
</field>
<field x="35" y="3" type="Stringa" width="50" pattern="1">
<prescript description="H0.0 PRESCRIPT">MESSAGE ISAMREAD,COMMESSE,CODCMS=RMOVANA.CODCMS,DESCRIZ</prescript>
</field>
<field x="1" y="4.5" type="Testo" width="5" pattern="1" text="Fase:" />
<field x="11" y="4.5" type="Stringa" width="13" pattern="1">
<source>CODFASE</source>
<prescript description="H0.0 PRESCRIPT">CA_FORMAT_FASE</prescript>
</field>
<field x="35" y="4.5" type="Stringa" width="50" pattern="1">
<prescript description="H0.0 PRESCRIPT">MESSAGE ISAMREAD,FASI,CODFASE=RMOVANA.CODFASE,DESCRIZ</prescript>
</field>
<field border="2" x="1" y="6" type="Linea" width="167" height="0" pattern="1" />
</section>
<section type="Head" level="1" height="3">
<prescript description="H1 PRESCRIPT">MESSAGE RESET,F1.101
MESSAGE RESET,F1.102</prescript>
<field border="1" radius="100" x="1" type="Testo" valign="center" align="center" shade_offset="25" width="167" height="2.5" text="MASTRINI DI CONTABILITA' ANALITICA">
<font face="Courier New" bold="1" size="16" />
</field>
</section>
<section repeat="1" type="Head" level="2" height="3">
<groupby>CODCONTO</groupby>
<font italic="1" face="Courier New" size="8" />
<field type="Testo" width="6" pattern="1" text="Conto:">
<font italic="1" face="Courier New" bold="1" size="8" />
</field>
<field x="7" type="Stringa" width="23" pattern="1">
<font italic="1" face="Courier New" bold="1" size="8" />
<source>CODCONTO</source>
<prescript description="H2.0 PRESCRIPT">CA_FORMAT_CONTO</prescript>
</field>
<field x="31" type="Stringa" width="50" pattern="1">
<font italic="1" face="Courier New" bold="1" size="8" />
<prescript description="H2.0 PRESCRIPT">MESSAGE ISAMREAD,PCONANA,CODCONTO=CODCONTO,DESCR</prescript>
</field>
<field x="12" y="1.5" type="Testo" align="center" width="11" pattern="1" text="N.Reg.&#2F;Riga" />
<field x="24" y="1.5" type="Testo" width="11" pattern="1" text="Descrizione" />
<field x="43" y="1.5" type="Testo" width="10" pattern="1" text="Data Doc." />
<field x="54" y="1.5" type="Testo" width="6" pattern="1" text="N.Doc." />
<field x="63" y="1.5" type="Testo" width="7" pattern="1" text="Causale" />
<field x="97" y="1.5" type="Testo" align="right" width="4" pattern="1" text="Dare" />
<field x="112" y="1.5" type="Testo" align="right" width="5" pattern="1" text="Avere" />
<field x="121" y="1.5" type="Testo" align="right" width="12" pattern="1" text="Saldo progr." />
<field x="136" y="1.5" type="Testo" align="right" width="12" pattern="1" text="Saldo movim." />
<field x="152" y="1.5" type="Testo" align="right" width="12" pattern="1" text="Altro saldo" />
<field border="1" x="1" y="2.5" type="Linea" width="168" height="0" pattern="1" />
<field x="1" y="1.5" type="Testo" align="center" width="10" id="121" pattern="1" text="Data" />
</section>
<section type="Body" />
<section type="Body" level="1">
<field x="1" type="Data" width="10" pattern="1">
<source>MOVANA.DATACOMP</source>
</field>
<field x="12" type="Numero" align="right" width="7" pattern="1">
<source>NUMREG</source>
</field>
<field x="19" type="Testo" width="1" pattern="1" text="&#2F;" />
<field x="20" type="Numero" align="right" width="3" pattern="1">
<source>NUMRIG</source>
</field>
<field x="24" type="Stringa" dynamic_height="1" width="17" height="3" pattern="1">
<source>DESCR</source>
</field>
<field x="43" type="Data" width="10" pattern="1">
<source>MOVANA.DATADOC</source>
</field>
<field x="54" type="Stringa" width="7" pattern="1">
<source>MOVANA.NUMDOC</source>
</field>
<field x="63" type="Stringa" width="3" pattern="1">
<source>MOVANA.CODCAUS</source>
</field>
<field x="67" type="Stringa" dynamic_height="1" width="17" height="3" pattern="1">
<prescript description="B1.0 PRESCRIPT">MESSAGE ISAMREAD,CAUS,CODCAUS=MOVANA.CODCAUS,DESCR</prescript>
</field>
<field x="86" type="Valuta" align="right" width="15" id="101" pattern="1" hide_zero="1" text="###.###.###,@@">
<source>IMPORTO</source>
<prescript description="B1.101 PRESCRIPT">"RMOVANA.SEZIONE" @
"A" =
IF
0 #THIS !
THEN
</prescript>
<postscript description="B1.101 POSTSCRIPT">MESSAGE ADD,F1.101
MESSAGE ADD,F2.131</postscript>
</field>
<field x="102" type="Valuta" align="right" width="15" id="102" pattern="1" hide_zero="1" text="###.###.###,@@">
<source>IMPORTO</source>
<prescript description="B1.102 PRESCRIPT">"RMOVANA.SEZIONE" @
"D" =
IF
0 #THIS !
THEN
</prescript>
<postscript description="B1.102 POSTSCRIPT">MESSAGE ADD,F1.102
MESSAGE ADD,F2.132</postscript>
</field>
<field x="118" type="Valuta" align="right" width="15" id="103" pattern="1" hide_zero="1" text="###.###.###,@@">
<prescript description="B1.103 PRESCRIPT">"RMOVANA.SEZIONE" @
"D" =
IF
0 #THIS !
THEN
</prescript>
<postscript description="B1.103 POSTSCRIPT">MESSAGE ADD,F1.102
MESSAGE ADD,F2.132</postscript>
</field>
<field x="134" type="Valuta" align="right" width="15" id="104" pattern="1" hide_zero="1" text="###.###.###,@@">
<prescript description="B1.104 PRESCRIPT">"RMOVANA.SEZIONE" @
"D" =
IF
0 #THIS !
THEN
</prescript>
<postscript description="B1.104 POSTSCRIPT">MESSAGE ADD,F1.102
MESSAGE ADD,F2.132</postscript>
</field>
<field x="150" type="Valuta" align="right" width="15" id="105" pattern="1" hide_zero="1" text="###.###.###,@@">
<prescript description="B1.105 PRESCRIPT">"RMOVANA.SEZIONE" @
"D" =
IF
0 #THIS !
THEN
</prescript>
<postscript description="B1.105 POSTSCRIPT">MESSAGE ADD,F1.102
MESSAGE ADD,F2.132</postscript>
</field>
</section>
<section type="Foot" height="1" />
<section type="Foot" level="1">
<field border="2" x="1" y="1" type="Linea" width="168" height="0" pattern="1" />
<field x="85" y="2" type="Testo" width="17" pattern="1" text="Totali periodo:">
<font face="Courier New" bold="1" size="8" />
</field>
<field x="85" y="3.25" type="Testo" width="20" pattern="1" text="Totali progressivi:">
<font face="Courier New" bold="1" size="8" />
</field>
<field x="105" y="2" type="Valuta" align="right" width="15" id="101" pattern="1" text="###.###.###,@@">
<font face="Courier New" bold="1" size="8" />
</field>
<field x="121" y="2" type="Valuta" align="right" width="15" id="102" pattern="1" text="###.###.###,@@">
<font face="Courier New" bold="1" size="8" />
</field>
<field x="137" y="2" type="Valuta" align="right" width="15" id="103" pattern="1" text="###.###.###,@@">
<font face="Courier New" bold="1" size="8" />
</field>
<field x="153" y="2" type="Valuta" align="right" width="15" id="104" pattern="1" text="###.###.###,@@">
<font face="Courier New" bold="1" size="8" />
</field>
</section>
<section type="Foot" level="2" height="1" />
<sql>USE RMOVANA
BY CODCONTO NUMREG NUMRIG
JOIN MOVANA INTO NUMREG==NUMREG</sql>
<prescript description="PRESCRIPT">: SCAMBIA_CAMPI ( F1 F2 -- )
VARIABLE _X1 \ coordinate del campo F1
VARIABLE _Y1
VARIABLE _X2 \ coordinate del campo F2
VARIABLE _Y2
2DUP \ duplica i campi F1 F2 sullo stack
GET_POS \ prende le coordinate del campo F2
_Y2 ! \ e le mette in _Y2 e _X2
_X2 !
GET_POS \ prende le coordinate del campo F1
_Y1 ! \ e le mette in _Y1 e _X1
_X1 !
_X1 @ \ legge le coordinate di F1
_Y1 @
ROT
SET_POS \ mette le coord in F2
_X2 @
_Y2 @
ROT
SET_POS
;
</prescript>
</report>