Patch level : 2.2 109
Files correlati : Ricompilazione Demo : [ ] Commento : Riportata la versione 2.1 308 git-svn-id: svn://10.65.10.50/trunk@13141 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
139c50b3d6
commit
7fc6f05e7f
@ -10,6 +10,7 @@
|
||||
#include "batbreg.h"
|
||||
#include "batbcam.h"
|
||||
#include "batbdel.h"
|
||||
#define F_NUM 104
|
||||
#include "batbval.h"
|
||||
#include "batbver.h"
|
||||
#include "batbnoc.h"
|
||||
@ -60,6 +61,7 @@ protected:
|
||||
static bool codgmc_handler(TMask_field& f, KEY k);
|
||||
static bool codnoc_handler(TMask_field& f, KEY k);
|
||||
static bool desnot_handler(TMask_field& f, KEY k);
|
||||
static bool numivd_handler(TMask_field& f, KEY k);
|
||||
|
||||
void fragment_string();
|
||||
void glue_string();
|
||||
@ -619,6 +621,21 @@ bool TGeneric_table_app::desnot_handler(TMask_field& f, KEY k)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TGeneric_table_app::numivd_handler(TMask_field& f, KEY k)
|
||||
{
|
||||
if (f.to_check(k))
|
||||
{
|
||||
const TString & val = f.get();
|
||||
|
||||
if (val.not_empty())
|
||||
{
|
||||
if (!isdigit(val[0]) || !isdigit(val[1]))
|
||||
return error_box("i primi due caratteri devono eesere numerici");
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TGeneric_table_app::user_create()
|
||||
{
|
||||
bool ok = TTable_application::user_create();
|
||||
@ -668,6 +685,9 @@ bool TGeneric_table_app::user_create()
|
||||
|
||||
if (name == TAB_NOTECLI)
|
||||
mask.set_handler(F_NOT_DESC, desnot_handler);
|
||||
|
||||
if (name == TAB_IVDIRETTIVA)
|
||||
mask.set_handler(F_NUM, numivd_handler);
|
||||
}
|
||||
|
||||
return ok;
|
||||
|
@ -76,6 +76,43 @@ public:
|
||||
BA3800_application(char livello) : _liv(toupper(livello)) {}
|
||||
};
|
||||
|
||||
const char * num2str(const TString & s)
|
||||
{
|
||||
TString & str = get_tmp_string(20);
|
||||
|
||||
str = s;
|
||||
str.trim();
|
||||
if (str.len() > 2)
|
||||
{
|
||||
str = s.left(2);
|
||||
const int sub = atoi(s.mid(2));
|
||||
switch (sub)
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
case 2:
|
||||
str << " bis";
|
||||
break;
|
||||
case 3:
|
||||
str << " ter";
|
||||
break;
|
||||
case 4:
|
||||
str << " quater";
|
||||
break;
|
||||
case 5:
|
||||
str << " quinquies";
|
||||
break;
|
||||
case 6:
|
||||
str << " sexies";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
return (const char *) str;
|
||||
}
|
||||
|
||||
void BA3800_application::postclose_print()
|
||||
{
|
||||
if (_liv == 'D')
|
||||
@ -309,7 +346,7 @@ void BA3800_application::totale_numero_arabo()
|
||||
//Fai il totale del numero arabo e stampalo
|
||||
if (_num.not_empty())
|
||||
{
|
||||
set_row (_i,FR("@18gTotale@25g%-4s)"), (const char *) _num);
|
||||
set_row (_i,FR("@18gTotale@25g%s)"), num2str(_num));
|
||||
set_row (_i++,"@86g%s", (const char*) _totale);
|
||||
}
|
||||
}
|
||||
@ -554,7 +591,7 @@ void BA3800_application::stampa_totali_ditta()
|
||||
//Fai il totale del numero arabo e stampalo
|
||||
if (_num.not_empty())
|
||||
{
|
||||
set_row (_i, FR("@18gTotale@25g%-4s)"), (const char *) _num);
|
||||
set_row (_i, FR("@18gTotale@25g%s)"), num2str(_num));
|
||||
set_row (_i++,"@86g%s", (const char*) _totale);
|
||||
}
|
||||
}
|
||||
@ -592,7 +629,7 @@ void BA3800_application::stampa_totali_ditta()
|
||||
//Fai il totale del numero arabo e stampalo
|
||||
if (_num.not_empty())
|
||||
{
|
||||
set_row (_i, FR("@18gTotale@25g%-4s)"), (const char *) _num);
|
||||
set_row (_i, FR("@18gTotale@25g%s)"), num2str(_num));
|
||||
set_row (_i++,"@86g%s", (const char*) _totale);
|
||||
}
|
||||
}
|
||||
@ -626,7 +663,7 @@ void BA3800_application::stampa_totali_ditta()
|
||||
//Fai il totale del numero arabo e stampalo
|
||||
if (_num.not_empty())
|
||||
{
|
||||
set_row (_i,FR("@18gTotale@25g%-4s)"), (const char *) _num);
|
||||
set_row (_i,FR("@18gTotale@25g%s)"), num2str(_num));
|
||||
set_row (_i++,"@86g%s", (const char*) _totale);
|
||||
}
|
||||
}
|
||||
@ -683,7 +720,7 @@ void BA3800_application::stampa_totali_ditta()
|
||||
//Fai il totale del numero arabo e stampalo
|
||||
if (_num.not_empty())
|
||||
{
|
||||
set_row (_i,FR("@18gTotale@25g%-4s)"), (const char *) _num);
|
||||
set_row (_i,FR("@18gTotale@25g%s)"), num2str(_num));
|
||||
set_row (_i++,"@86g%s", (const char*) _totale);
|
||||
}
|
||||
}
|
||||
@ -770,7 +807,7 @@ void BA3800_application::stampa_totali_ditta()
|
||||
//Fai il totale del numero arabo e stampalo
|
||||
if (_num .not_empty())
|
||||
{
|
||||
set_row (_i,FR("@18gTotale@25g%-4s)"), (const char *) _num);
|
||||
set_row (_i,FR("@18gTotale@25g%s)"), num2str(_num));
|
||||
set_row (_i++,"@86g%s", (const char*) _totale);
|
||||
}
|
||||
}
|
||||
@ -1217,9 +1254,9 @@ void BA3800_application::setta_righe_studio(const char * titolo)
|
||||
}
|
||||
if (numero.not_empty())
|
||||
{
|
||||
set_row(_i,"@13g%-4s)", (const char*) _num_da_stamp);
|
||||
set_row(_i,"@13g%s)", num2str(_num_da_stamp));
|
||||
const TString & descr = descrizione_numero(_sez_da_stamp,_let_da_stamp,numeror,numero);
|
||||
setta_righe_descr(descr,"@20g%s");
|
||||
setta_righe_descr(descr,"@27g%s");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1250,9 +1287,9 @@ void BA3800_application::setta_righe_studio(const char * titolo)
|
||||
}
|
||||
if (numero.not_empty())
|
||||
{
|
||||
set_row(_i,"@13g%-4s)", (const char*) _num_da_stamp);
|
||||
set_row(_i,"@13g%s)", num2str(_num_da_stamp));
|
||||
const TString & descr = descrizione_numero(_sez_da_stamp,_let_da_stamp,numeror,numero);
|
||||
setta_righe_descr(descr, "@20g%s");
|
||||
setta_righe_descr(descr, "@27g%s");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1274,9 +1311,9 @@ void BA3800_application::setta_righe_studio(const char * titolo)
|
||||
}
|
||||
if (numero.not_empty())
|
||||
{
|
||||
set_row(_i,"@13g%-4s)", (const char*) _num_da_stamp);
|
||||
set_row(_i,"@13g%s)", num2str(_num_da_stamp));
|
||||
const TString & descr = descrizione_numero(_sez_da_stamp,_let_da_stamp,numeror,numero);
|
||||
setta_righe_descr(descr, "@20g%s");
|
||||
setta_righe_descr(descr, "@27g%s");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1288,9 +1325,9 @@ void BA3800_application::setta_righe_studio(const char * titolo)
|
||||
{
|
||||
if ((_sez_da_stamp=='1')||(_sez_da_stamp=='2')||(_sez_da_stamp=='9'))
|
||||
{
|
||||
set_row(_i,"@13g%-4s)", (const char*) _num_da_stamp);
|
||||
set_row(_i,"@13g%s)", num2str(_num_da_stamp));
|
||||
const TString & descr = descrizione_numero(_sez_da_stamp,_let_da_stamp,numeror,numero);
|
||||
setta_righe_descr(descr, "@20g%s");
|
||||
setta_righe_descr(descr, "@27g%s");
|
||||
_cont_gcs = 1;
|
||||
}
|
||||
}
|
||||
@ -1392,9 +1429,9 @@ void BA3800_application::setta_righe_ditta(const char* titolo)
|
||||
}
|
||||
if (numero.not_empty())
|
||||
{
|
||||
set_row(_i,"@13g%-4s)", (const char *) numero);
|
||||
set_row(_i,"@13g%s)", num2str(numero));
|
||||
const TString & descr = descrizione_numero(sezione, lettera, atoi(numr), numero);
|
||||
setta_righe_descr(descr, "@20g%s");
|
||||
setta_righe_descr(descr, "@27g%s");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1439,9 +1476,9 @@ void BA3800_application::setta_righe_ditta(const char* titolo)
|
||||
}
|
||||
if (numero.not_empty())
|
||||
{
|
||||
set_row(_i,"@13g%-4s)", (const char *) numero);
|
||||
set_row(_i,"@13g%s)", num2str(numero));
|
||||
const TString & descr = descrizione_numero(sezione, lettera, atoi(numr), numero);
|
||||
setta_righe_descr(descr, "@20g%s");
|
||||
setta_righe_descr(descr, "@27g%s");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1461,9 +1498,9 @@ void BA3800_application::setta_righe_ditta(const char* titolo)
|
||||
|
||||
if (numero.not_empty())
|
||||
{
|
||||
set_row(_i,"@13g%-4s)", (const char *) numero);
|
||||
set_row(_i,"@13g%s)", num2str(numero));
|
||||
const TString & descr = descrizione_numero(sezione, lettera, atoi(numr), numero);
|
||||
setta_righe_descr(descr, "@20g%s");
|
||||
setta_righe_descr(descr, "@27g%s");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1477,9 +1514,9 @@ void BA3800_application::setta_righe_ditta(const char* titolo)
|
||||
(_sez_da_stamp == '2') ||
|
||||
(_sez_da_stamp == '9'))
|
||||
{
|
||||
set_row(_i,"@13g%-4s)", (const char *) numero);
|
||||
set_row(_i,"@13g%s)", num2str(numero));
|
||||
const TString & descr = descrizione_numero(sezione, lettera, atoi(numr), numero);
|
||||
setta_righe_descr(descr, "@20g%s");
|
||||
setta_righe_descr(descr, "@27g%s");
|
||||
_cont_gcs = 1;
|
||||
}
|
||||
}
|
||||
|
@ -754,6 +754,7 @@ bool TReport_properties_mask::on_field_event(TOperable_field& o, TField_event e,
|
||||
void TReport_properties_mask::set_report(const TReport& r)
|
||||
{
|
||||
set(F_FONT_AUTO, r.use_printer_font());
|
||||
set(F_ORIENTATION, r.orientation());
|
||||
set(F_DY, r.lpi());
|
||||
set_font_info(r.font());
|
||||
set(F_INCLUDE, ((TReport&)r).get_libraries());
|
||||
@ -774,6 +775,7 @@ void TReport_properties_mask::get_report(TReport& r) const
|
||||
if (get_font_info(f))
|
||||
r.set_font(f);
|
||||
}
|
||||
r.set_orientation(get_int(F_ORIENTATION));
|
||||
|
||||
const TString& oldlib = r.get_libraries();
|
||||
if (oldlib != get(F_INCLUDE))
|
||||
|
@ -53,6 +53,7 @@
|
||||
#define F_REPEAT 166
|
||||
#define F_FONT_AUTO 167
|
||||
#define F_CAN_BREAK 168
|
||||
#define F_ORIENTATION 169
|
||||
|
||||
#define F_SQL 201
|
||||
#define F_IMPORT_QRY 202
|
||||
|
@ -9,20 +9,28 @@ BEGIN
|
||||
MESSAGE TRUE DISABLE,F_FONT_SELECT|DISABLE,F_DY
|
||||
END
|
||||
|
||||
RADIO F_ORIENTATION 1 24
|
||||
BEGIN
|
||||
PROMPT 1 1 "@bOrientamento della carta"
|
||||
ITEM "0|Impostazioni Stampante"
|
||||
ITEM "1|Ritratto (Verticale)"
|
||||
ITEM "2|Paesaggio (Orizzontale)"
|
||||
END
|
||||
|
||||
NUMBER F_DY 2
|
||||
BEGIN
|
||||
PROMPT 1 1 "Linee per pollice "
|
||||
PROMPT 26 2 "Linee per pollice "
|
||||
CHEKCTYPE REQUIRED
|
||||
END
|
||||
|
||||
BUTTON F_FONT_SELECT 10 2
|
||||
BUTTON F_FONT_SELECT 5 2
|
||||
BEGIN
|
||||
PROMPT 1 2 "~Font"
|
||||
PROMPT 26 3 "~Font"
|
||||
END
|
||||
|
||||
SPREADSHEET F_PARAMS 0 -3
|
||||
BEGIN
|
||||
PROMPT 1 4 ""
|
||||
PROMPT 1 5 ""
|
||||
ITEM "Parametro@16"
|
||||
ITEM "Valore@50"
|
||||
END
|
||||
|
@ -7,6 +7,7 @@
|
||||
#define F_DESCR 105
|
||||
#define F_DESCR_LETT 106
|
||||
#define F_DESCR_CLAS 107
|
||||
#define F_SUB 108
|
||||
|
||||
|
||||
|
||||
|
@ -75,26 +75,41 @@ BEGIN
|
||||
FLAGS "D"
|
||||
END
|
||||
|
||||
STRING F_NUM 4
|
||||
STRING F_NUM 2
|
||||
BEGIN
|
||||
PROMPT 1 7 "Numero "
|
||||
FIELD %IVD->CODTAB[7,10]
|
||||
FIELD %IVD->CODTAB[7,8]
|
||||
KEY 1
|
||||
USE %IVD
|
||||
COPY INPUT F_CLASSE
|
||||
INPUT CODTAB[7,10] F_NUM
|
||||
INPUT CODTAB[7,8] F_NUM
|
||||
INPUT CODTAB[9,10] F_SUB
|
||||
DISPLAY "Sezione" CODTAB[1,1]
|
||||
DISPLAY "Lettera" CODTAB[2,2]
|
||||
DISPLAY "Classe @M" CODTAB[3,6]
|
||||
DISPLAY "Numero" CODTAB[7,10]
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_NUM CODTAB[7,10]
|
||||
OUTPUT F_NUM CODTAB[7,8]
|
||||
OUTPUT F_SUB CODTAB[9,10]
|
||||
OUTPUT F_SEZ CODTAB[1,1]
|
||||
OUTPUT F_LETT CODTAB[2,2]
|
||||
OUTPUT F_CLASSE CODTAB[3,6]
|
||||
OUTPUT F_DESCR S0
|
||||
MESSAGE EMPTY CLEAR,F_SUB
|
||||
MESSAGE ENABLE,F_SUB
|
||||
HELP "Numero (arabo) secondo la IV dir. CEE"
|
||||
// VALIDATE AUTOEXIT_FUNC 2 F_LETT F_NUM
|
||||
END
|
||||
|
||||
LIST F_SUB 9
|
||||
BEGIN
|
||||
PROMPT 15 7 ""
|
||||
ITEM " |"
|
||||
ITEM "02|Bis"
|
||||
ITEM "03|Ter"
|
||||
ITEM "04|Quater"
|
||||
ITEM "05|Quinquies"
|
||||
ITEM "06|Sexies"
|
||||
FIELD %IVD->CODTAB[9,10]
|
||||
KEY 1
|
||||
END
|
||||
|
||||
TEXT DLG_NULL
|
||||
@ -115,6 +130,7 @@ BEGIN
|
||||
DISPLAY "Classe @M" CODTAB[3,6]
|
||||
DISPLAY "Numero" CODTAB[7,10]
|
||||
COPY OUTPUT F_NUM
|
||||
OUTPUT F_DESCR S0
|
||||
CHECKTYPE REQUIRED
|
||||
WARNING "Manca la descrizione"
|
||||
END
|
||||
|
@ -225,11 +225,6 @@ void TPianoconti_app::init_insert_mode(TMask& m)
|
||||
s4 = pconti.get(PCN_NUMIVD);
|
||||
if (s3.empty())
|
||||
s3.spaces(4);
|
||||
else
|
||||
s3.right_just(4,'0');
|
||||
|
||||
// if (!s4.empty())
|
||||
// s4.right_just(2,'0');
|
||||
|
||||
key.format("%1d%1s%s%s", s1, (const char*) s2,(const char*) s3, (const char*) s4);
|
||||
s5 = cache().get("%IVD", key, "S0");
|
||||
@ -246,13 +241,15 @@ void TPianoconti_app::init_insert_mode(TMask& m)
|
||||
m.show(FLD_CM1_LETTIVD, ivd_enable);
|
||||
m.show(FLD_CM1_NUMRIVD, ivd_enable);
|
||||
m.show(FLD_CM1_NUMIVD, ivd_enable);
|
||||
m.show(F_SUB, ivd_enable);
|
||||
m.show(FLD_CM1_DESCIVD, ivd_enable); //
|
||||
if (!ivd_enable)
|
||||
{
|
||||
m.set(FLD_CM1_SEZIVD, s1);
|
||||
m.set(FLD_CM1_LETTIVDH, s2);
|
||||
m.set(FLD_CM1_NUMRIVDH, s3);
|
||||
m.set(FLD_CM1_NUMIVDH, s4);
|
||||
m.set(FLD_CM1_NUMIVDH, s4.left(2));
|
||||
m.set(F_SUBH, s4.mid(2));
|
||||
m.set(FLD_CM1_DESCIVDH, s5); //
|
||||
m.enable(FLD_CM1_SEZIVDOPP);
|
||||
m.disable(FLD_CM1_LETTIVDH);
|
||||
@ -263,6 +260,7 @@ void TPianoconti_app::init_insert_mode(TMask& m)
|
||||
m.show(FLD_CM1_LETTIVDH, !ivd_enable);
|
||||
m.show(FLD_CM1_NUMRIVDH, !ivd_enable);
|
||||
m.show(FLD_CM1_NUMIVDH, !ivd_enable);
|
||||
m.show(F_SUBH, !ivd_enable);
|
||||
m.show(FLD_CM1_DESCIVDH, !ivd_enable); //
|
||||
|
||||
if (s.empty())
|
||||
|
@ -24,6 +24,8 @@
|
||||
#define FLD_CM1_NUMRIVDOPP 115
|
||||
#define FLD_CM1_NUMIVDOPP 116
|
||||
#define FLD_CM1_DTIPOSPRIC 117
|
||||
#define F_SUB 118
|
||||
#define F_SUBOPP 119
|
||||
|
||||
#define FLD_CM1_LETTIVDH 120
|
||||
#define FLD_CM1_NUMRIVDH 121
|
||||
@ -35,6 +37,7 @@
|
||||
#define FLD_CM1_DESCIVD 127
|
||||
#define FLD_CM1_DESCIVDOPP 128
|
||||
#define FLD_CM1_DESCIVDH 129
|
||||
#define F_SUBH 130
|
||||
|
||||
#define FLD_CM2_STSOTTBIL 200
|
||||
#define FLD_CM2_STSOTTAB 201
|
||||
|
@ -175,7 +175,7 @@ END
|
||||
|
||||
STRING FLD_CM1_LETTIVD 1 1
|
||||
BEGIN
|
||||
PROMPT 56 7 ""
|
||||
PROMPT 51 7 ""
|
||||
HELP "Codice del conto secondo la IV direttiva CEE"
|
||||
FIELD LETTIVD
|
||||
GROUP 1 5
|
||||
@ -184,14 +184,14 @@ END
|
||||
|
||||
STRING FLD_CM1_LETTIVDH 1
|
||||
BEGIN
|
||||
PROMPT 55 7 ""
|
||||
PROMPT 51 7 ""
|
||||
FLAGS "HDU"
|
||||
GROUP 1 5
|
||||
END
|
||||
|
||||
NUMBER FLD_CM1_NUMRIVD 8 4
|
||||
BEGIN
|
||||
PROMPT 59 7 ""
|
||||
PROMPT 55 7 ""
|
||||
HELP "Codice del conto secondo la IV direttiva CEE"
|
||||
FIELD NUMRIVD
|
||||
GROUP 1 5
|
||||
@ -200,21 +200,22 @@ END
|
||||
|
||||
NUMBER FLD_CM1_NUMRIVDH 8 4
|
||||
BEGIN
|
||||
PROMPT 59 7 ""
|
||||
PROMPT 55 7 ""
|
||||
FLAGS "HDMZ"
|
||||
GROUP 1 5
|
||||
END
|
||||
|
||||
STRING FLD_CM1_NUMIVD 4
|
||||
STRING FLD_CM1_NUMIVD 2
|
||||
BEGIN
|
||||
PROMPT 70 7 ""
|
||||
FIELD NUMIVD
|
||||
PROMPT 64 7 ""
|
||||
FIELD NUMIVD[1,2]
|
||||
GROUP 1 5
|
||||
USE %IVD
|
||||
INPUT CODTAB[1,1] FLD_CM1_SEZIVD
|
||||
INPUT CODTAB[2,2] FLD_CM1_LETTIVD
|
||||
INPUT CODTAB[3,6] FLD_CM1_NUMRIVD
|
||||
INPUT CODTAB[7,10] FLD_CM1_NUMIVD
|
||||
INPUT CODTAB[7,8] FLD_CM1_NUMIVD
|
||||
INPUT CODTAB[9,10] F_SUB
|
||||
DISPLAY "Sezione" CODTAB[1,1]
|
||||
DISPLAY "Lettera" CODTAB[2,2]
|
||||
DISPLAY "Classe @M" CODTAB[3,6]
|
||||
@ -223,17 +224,45 @@ BEGIN
|
||||
OUTPUT FLD_CM1_SEZIVD CODTAB[1,1]
|
||||
OUTPUT FLD_CM1_LETTIVD CODTAB[2,2]
|
||||
OUTPUT FLD_CM1_NUMRIVD CODTAB[3,6]
|
||||
OUTPUT FLD_CM1_NUMIVD CODTAB[7,10]
|
||||
OUTPUT FLD_CM1_NUMIVD CODTAB[7,8]
|
||||
OUTPUT F_SUB CODTAB[9,10]
|
||||
OUTPUT FLD_CM1_DESCIVD S0
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Codice non presente"
|
||||
END
|
||||
|
||||
STRING FLD_CM1_NUMIVDH 4
|
||||
LIST F_SUB 9
|
||||
BEGIN
|
||||
PROMPT 70 7 ""
|
||||
FLAGS "HDZ"
|
||||
PROMPT 69 7 ""
|
||||
GROUP 1 5
|
||||
ITEM " |"
|
||||
ITEM "02|Bis"
|
||||
ITEM "03|Ter"
|
||||
ITEM "04|Quater"
|
||||
ITEM "05|Quinquies"
|
||||
ITEM "06|Sexies"
|
||||
FIELD NUMIVD[3,4]
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING FLD_CM1_NUMIVDH 2
|
||||
BEGIN
|
||||
PROMPT 64 7 ""
|
||||
FLAGS "HD"
|
||||
GROUP 1 5
|
||||
END
|
||||
|
||||
LIST F_SUBH 9
|
||||
BEGIN
|
||||
PROMPT 69 7 ""
|
||||
GROUP 1 5
|
||||
ITEM " |"
|
||||
ITEM "02|Bis"
|
||||
ITEM "03|Ter"
|
||||
ITEM "04|Quater"
|
||||
ITEM "05|Quinquies"
|
||||
ITEM "06|Sexies"
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING FLD_CM1_DESCIVD 70 50
|
||||
@ -251,6 +280,7 @@ BEGIN
|
||||
GROUP 1 5
|
||||
END
|
||||
|
||||
|
||||
STRING FLD_CM1_DESCIVDH 70 50
|
||||
BEGIN
|
||||
PROMPT 24 8 ""
|
||||
@ -275,7 +305,7 @@ END
|
||||
|
||||
STRING FLD_CM1_LETTIVDOPP 1
|
||||
BEGIN
|
||||
PROMPT 55 9 ""
|
||||
PROMPT 51 9 ""
|
||||
HELP "Codice del conto di sezione opposta secondo la IV direttiva CEE"
|
||||
FIELD LETTIVDOPP
|
||||
FLAGS "U"
|
||||
@ -284,34 +314,50 @@ END
|
||||
|
||||
NUMBER FLD_CM1_NUMRIVDOPP 8 4
|
||||
BEGIN
|
||||
PROMPT 59 9 ""
|
||||
PROMPT 55 9 ""
|
||||
HELP "Codice del conto di sezione opposta secondo la IV direttiva CEE"
|
||||
FIELD NUMRIVDOPP
|
||||
FLAGS "MZ"
|
||||
GROUP 1 2 4 7
|
||||
END
|
||||
|
||||
STRING FLD_CM1_NUMIVDOPP 4
|
||||
STRING FLD_CM1_NUMIVDOPP 2
|
||||
BEGIN
|
||||
PROMPT 70 9 ""
|
||||
PROMPT 64 9 ""
|
||||
HELP "Codice del conto di sezione opposta secondo la IV direttiva CEE"
|
||||
FIELD NUMIVDOPP
|
||||
FIELD NUMIVDOPP[1,2]
|
||||
GROUP 1 2 4 7
|
||||
COPY USE FLD_CM1_NUMIVD
|
||||
INPUT CODTAB[1,1] FLD_CM1_SEZIVDOPP
|
||||
INPUT CODTAB[2,2] FLD_CM1_LETTIVDOPP
|
||||
INPUT CODTAB[3,6] FLD_CM1_NUMRIVDOPP
|
||||
INPUT CODTAB[7,10] FLD_CM1_NUMIVDOPP
|
||||
INPUT CODTAB[7,8] FLD_CM1_NUMIVDOPP
|
||||
INPUT CODTAB[9,10] F_SUBOPP
|
||||
COPY DISPLAY FLD_CM1_NUMIVD
|
||||
OUTPUT FLD_CM1_SEZIVDOPP CODTAB[1,1]
|
||||
OUTPUT FLD_CM1_LETTIVDOPP CODTAB[2,2]
|
||||
OUTPUT FLD_CM1_NUMRIVDOPP CODTAB[3,6]
|
||||
OUTPUT FLD_CM1_NUMIVDOPP CODTAB[7,10]
|
||||
OUTPUT FLD_CM1_NUMIVDOPP CODTAB[7,8]
|
||||
OUTPUT F_SUBOPP CODTAB[9,10]
|
||||
OUTPUT FLD_CM1_DESCIVDOPP S0
|
||||
CHECKTYPE NORMAL
|
||||
WARNING "Codice non presente"
|
||||
END
|
||||
|
||||
LIST F_SUBOPP 9
|
||||
BEGIN
|
||||
PROMPT 69 9 ""
|
||||
GROUP 1 2 4 7
|
||||
ITEM " |"
|
||||
ITEM "02|Bis"
|
||||
ITEM "03|Ter"
|
||||
ITEM "04|Quater"
|
||||
ITEM "05|Quinquies"
|
||||
ITEM "06|Sexies"
|
||||
FIELD NUMIVDOPP[3,4]
|
||||
KEY 1
|
||||
END
|
||||
|
||||
STRING FLD_CM1_DESCIVDOPP 70 50
|
||||
BEGIN
|
||||
PROMPT 24 10 ""
|
||||
|
@ -56,8 +56,8 @@ class CG1100_application : public TPrintapp
|
||||
int _old_gruppo;
|
||||
int _i;
|
||||
int _cur_std, _cur_sorted, _cur_senza_ana;
|
||||
TString _clivd, _clivdo;
|
||||
TParagraph_string _d1, _d2, _d3;
|
||||
TString _clivd, _clivdo, _num_dec;
|
||||
TParagraph_string _d1, _d2, _d3, _d4;
|
||||
char _sez_da_stamp,_sez_stamp,_let_da_stamp,_let_stamp;
|
||||
TString _numr_da_stamp,_numr_stamp, _num_stamp, _num_da_stamp;
|
||||
int _gruppo,_conto, _g_prec,_c_prec;
|
||||
@ -101,9 +101,46 @@ public:
|
||||
|
||||
virtual bool process_link(int id, const char* txt);
|
||||
|
||||
CG1100_application() : _clivd(8), _clivdo(8), _d1("", 30), _d2("", 40), _d3("", 40) {}
|
||||
CG1100_application() : _clivd(8), _clivdo(8), _d1("", 30), _d2("", 32), _d3("", 40), _d4("",32) {}
|
||||
};
|
||||
|
||||
const char * num2str(const TString & s)
|
||||
{
|
||||
TString & str = get_tmp_string(20);
|
||||
|
||||
str = s;
|
||||
str.trim();
|
||||
if (str.len() > 2)
|
||||
{
|
||||
str = s.left(2);
|
||||
const int sub = atoi(s.mid(2));
|
||||
switch (sub)
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
case 2:
|
||||
str << " bis";
|
||||
break;
|
||||
case 3:
|
||||
str << " ter";
|
||||
break;
|
||||
case 4:
|
||||
str << " quater";
|
||||
break;
|
||||
case 5:
|
||||
str << " quinquies";
|
||||
break;
|
||||
case 6:
|
||||
str << " sexies";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
return (const char *) str;
|
||||
}
|
||||
|
||||
bool CG1100_application::process_link(int id, const char* txt)
|
||||
{
|
||||
TToken_string str(txt);
|
||||
@ -577,10 +614,10 @@ void CG1100_application::set_con_IV()
|
||||
if (_numr_da_stamp != "")
|
||||
set_row(_i,"@2g%8s", (const char*) numrom);
|
||||
|
||||
set_row(_i,"@11g%-4s", (const char *)_num_da_stamp);
|
||||
set_row(_i,"@11g%s", num2str(_num_da_stamp));
|
||||
|
||||
_d2 = descrizione;
|
||||
set_row(_i,"@16g#a", &_d2);
|
||||
set_row(_i,"@23g#a", &_d2);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -588,20 +625,21 @@ void CG1100_application::set_con_IV()
|
||||
set_row (_i,"@62g$[b]%3d$[n]", _conto);
|
||||
if (_sottoc != 0)
|
||||
set_row (_i,"@66g$[b]%6ld$[n]", _sottoc);
|
||||
set_row (_i,"@73g%.40s", (const char*) descr);
|
||||
_d4 = descr;
|
||||
set_row (_i,"@73g#a", &_d4);
|
||||
|
||||
if (sez_opp != '0')
|
||||
{
|
||||
set_row (_i,"@116g%c", sez_opp);
|
||||
set_row (_i,"@109g%c", sez_opp);
|
||||
|
||||
if (let_opp != '\0')
|
||||
set_row (_i,"@118g%c", let_opp);
|
||||
set_row (_i,"@111g%c", let_opp);
|
||||
|
||||
if (numr_opp != 0)
|
||||
set_row (_i,"@120g%8s", (const char*) numrom_opp);
|
||||
set_row (_i,"@113g%8s", (const char*) numrom_opp);
|
||||
|
||||
if (num_opp.not_empty())
|
||||
set_row (_i++,"@129g%-4s", (const char *) num_opp);
|
||||
set_row (_i++,"@122g%s", num2str(num_opp));
|
||||
}
|
||||
else
|
||||
_i++;
|
||||
@ -759,7 +797,8 @@ void CG1100_application::set_completa()
|
||||
set_row (i, "@58g@1s", FLD(LF_PCON, PCN_SEZIVD) );
|
||||
set_row (i, "@60g@1s", FLD(LF_PCON, PCN_LETTIVD) );
|
||||
set_row (i, "@62g#-8t", &_clivd );
|
||||
set_row (i, "@71g@pn", FLD(LF_PCON, PCN_NUMIVD, "@@") );
|
||||
// set_row (i, "@71g@pn", FLD(LF_PCON, PCN_NUMIVD, "@@") );
|
||||
set_row (i, "@71g#t", &_num_dec);
|
||||
}
|
||||
else
|
||||
if (_tipo_stampa == completa_bil)
|
||||
@ -979,6 +1018,7 @@ bool CG1100_application::preprocess_page(int file,int counter)
|
||||
|
||||
_clivd = itor(c3);
|
||||
_clivdo = itor(o3);
|
||||
_num_dec = num2str(_rec->get(PCN_NUMIVD));
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -1084,8 +1124,8 @@ void CG1100_application::intesta (stampe tipo)
|
||||
set_header (soh++, FR("@20gStampa conti riclassificati per IV direttiva"));
|
||||
s.fill('-');
|
||||
set_header (soh++, (const char *) s);
|
||||
set_header (soh++, FR("@58gCodici Piano@116gSez. e Classe"));
|
||||
set_header (soh++, FR("Classe@16gDescrizione@58gdei Conti @73gDescrizione@116gdi segno opposto"));
|
||||
set_header (soh++, FR("@58gCodici Piano@109gSez. e Classe"));
|
||||
set_header (soh++, FR("Classe@23gDescrizione@58gdei Conti @73gDescrizione@109gdi segno opposto"));
|
||||
|
||||
break;
|
||||
|
||||
|
@ -22,6 +22,8 @@
|
||||
#include "cglib01.h"
|
||||
#include "cglib02.h"
|
||||
|
||||
extern const char * num2str(const TString & s);
|
||||
|
||||
class TRiga_sez_opp : public TObject
|
||||
{
|
||||
TToken_string* _str;
|
||||
@ -2199,7 +2201,7 @@ void TStampa_IVdirettiva::stampa_totali()
|
||||
//Fai il totale del numero arabo e stampalo
|
||||
if (_num.not_empty())
|
||||
{
|
||||
set_row (_i,FR("@18gTotale@25g%-4s)"), (const char *) _num);
|
||||
set_row (_i,FR("@18gTotale@25g%s)"), num2str(_num));
|
||||
set_row (_i++,"@81g%r", &_totale_numero);
|
||||
}
|
||||
}
|
||||
@ -2219,7 +2221,7 @@ void TStampa_IVdirettiva::stampa_totali()
|
||||
//Fai il totale del numero arabo e stampalo
|
||||
if (_num.not_empty())
|
||||
{
|
||||
set_row (_i,FR("@18gTotale@25g%-4s)"), (const char *) _num);
|
||||
set_row (_i,FR("@18gTotale@25g%s)"), num2str(_num));
|
||||
set_row (_i++,"@81g%r", &_totale_numero);
|
||||
}
|
||||
}
|
||||
@ -2254,7 +2256,7 @@ void TStampa_IVdirettiva::stampa_totali()
|
||||
//Fai il totale del numero arabo e stampalo
|
||||
if (_num.not_empty())
|
||||
{
|
||||
set_row (_i,FR("@18gTotale@25g%-4s)"), (const char *) _num);
|
||||
set_row (_i,FR("@18gTotale@25g%s)"), num2str(_num));
|
||||
set_row (_i++,"@81g%r", &_totale_numero);
|
||||
}
|
||||
}
|
||||
@ -2312,7 +2314,7 @@ void TStampa_IVdirettiva::stampa_totali()
|
||||
//Fai il totale del numero arabo e stampalo
|
||||
if (_num.not_empty())
|
||||
{
|
||||
set_row (_i,FR("@18gTotale@25g%-4s)"), (const char *) _num);
|
||||
set_row (_i,FR("@18gTotale@25g%s)"), num2str(_num));
|
||||
set_row (_i++,"@81g%r", &_totale_numero);
|
||||
}
|
||||
}
|
||||
@ -2412,7 +2414,7 @@ void TStampa_IVdirettiva::stampa_totali()
|
||||
//Fai il totale del numero arabo e stampalo
|
||||
if (_num.not_empty())
|
||||
{
|
||||
set_row (_i,FR("@18gTotale@25g%-4s)"), (const char *) _num);
|
||||
set_row (_i,FR("@18gTotale@25g%s)"), num2str(_num));
|
||||
set_row (_i++,"@81g%r", &_totale_numero);
|
||||
}
|
||||
}
|
||||
@ -2613,7 +2615,7 @@ void TStampa_IVdirettiva::stampa_totali_con_raffronto()
|
||||
//Fai il totale del numero arabo e stampalo
|
||||
if (_num.not_empty())
|
||||
{
|
||||
set_row (_i,FR("@18gTotale %-4s)"), (const char *) _num);
|
||||
set_row (_i,FR("@18gTotale %s)"), num2str(_num));
|
||||
set_row (_i,"@81g%r", &_totale_numero);
|
||||
set_row (_i++,"@111g%r", &_totale_num_raf);
|
||||
}
|
||||
@ -2635,7 +2637,7 @@ void TStampa_IVdirettiva::stampa_totali_con_raffronto()
|
||||
//Fai il totale del numero arabo e stampalo
|
||||
if (_num.not_empty())
|
||||
{
|
||||
set_row (_i,FR("@18gTotale %-4s)"), (const char *) _num);
|
||||
set_row (_i,FR("@18gTotale %s)"), num2str(_num));
|
||||
set_row (_i,"@81g%r", &_totale_numero);
|
||||
set_row (_i++,"@111g%r", &_totale_num_raf);
|
||||
}
|
||||
@ -2675,7 +2677,7 @@ void TStampa_IVdirettiva::stampa_totali_con_raffronto()
|
||||
//Fai il totale del numero arabo e stampalo
|
||||
if (_num.not_empty())
|
||||
{
|
||||
set_row (_i,FR("@18gTotale %-4s)"), (const char *) _num);
|
||||
set_row (_i,FR("@18gTotale %s)"), num2str(_num));
|
||||
set_row (_i++,"@81g%r", &_totale_numero);
|
||||
}
|
||||
}
|
||||
@ -2741,7 +2743,7 @@ void TStampa_IVdirettiva::stampa_totali_con_raffronto()
|
||||
//Fai il totale del numero arabo e stampalo
|
||||
if (_num.not_empty())
|
||||
{
|
||||
set_row (_i,FR("@18gTotale@25g%-4s)"), (const char *) _num);
|
||||
set_row (_i,FR("@18gTotale@25g%s)"), num2str(_num));
|
||||
set_row (_i,"@81g%r", &_totale_numero);
|
||||
set_row (_i++,"@111g%r", &_totale_num_raf);
|
||||
}
|
||||
@ -2859,7 +2861,7 @@ void TStampa_IVdirettiva::stampa_totali_con_raffronto()
|
||||
//Fai il totale del numero arabo e stampalo
|
||||
if (_num.not_empty())
|
||||
{
|
||||
set_row (_i,FR("@18gTotale %-4s)"), (const char *) _num);
|
||||
set_row (_i,FR("@18gTotale %s)"), num2str(_num));
|
||||
set_row (_i,"@81g%r", &_totale_numero);
|
||||
set_row (_i++,"@111g%r", &_totale_num_raf);
|
||||
}
|
||||
@ -3093,7 +3095,7 @@ void TStampa_IVdirettiva::stampa_totali_verifica()
|
||||
{
|
||||
if (_num.not_empty())
|
||||
{
|
||||
set_row (_i,FR("@8gTotale@15g%-4s)"), (const char *) _num);
|
||||
set_row (_i,FR("@8gTotale@15g%s)"), num2str(_num));
|
||||
total_printed = true;
|
||||
}
|
||||
}
|
||||
@ -3163,7 +3165,7 @@ void TStampa_IVdirettiva::stampa_totali_verifica()
|
||||
if (_num.not_empty())
|
||||
{
|
||||
if (total_printed) _i++;
|
||||
set_row (_i,FR("@8gTotale@15g%-4s)"), (const char *) _num);
|
||||
set_row (_i,FR("@8gTotale@15g%s)"), num2str(_num));
|
||||
total_printed = true;
|
||||
}
|
||||
}
|
||||
@ -3235,7 +3237,7 @@ void TStampa_IVdirettiva::stampa_totali_verifica()
|
||||
if (_num.not_empty())
|
||||
{
|
||||
if (total_printed) _i++;
|
||||
set_row (_i,FR("@8gTotale@15g%-4s)"), (const char *) _num);
|
||||
set_row (_i,FR("@8gTotale@15g%s)"), num2str(_num));
|
||||
total_printed = true;
|
||||
}
|
||||
}
|
||||
@ -4077,10 +4079,10 @@ void TStampa_IVdirettiva::setta_righe(const char * titolo)
|
||||
if (devo_stampare_risultato_prima_delle_imposte())
|
||||
stampa_risultato_prima_delle_imposte();
|
||||
|
||||
set_row(_i,"@13g%s@17g)", (const char *) numero);
|
||||
TParagraph_string s(descrizione_ivd(sezione,lettera,numeror, numero), 40);
|
||||
set_row(_i,"@13g%s)", num2str(numero));
|
||||
TParagraph_string s(descrizione_ivd(sezione,lettera,numeror, numero), 32);
|
||||
|
||||
setta_righe_descr(s, "@20g%s");
|
||||
setta_righe_descr(s, "@27g%s");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -4129,10 +4131,10 @@ void TStampa_IVdirettiva::setta_righe(const char * titolo)
|
||||
{
|
||||
if (devo_stampare_risultato_prima_delle_imposte())
|
||||
stampa_risultato_prima_delle_imposte();
|
||||
set_row(_i,"@13g%s@17g)", (const char *) numero);
|
||||
TParagraph_string s(descrizione_ivd(sezione,lettera,numeror, numero), 40);
|
||||
set_row(_i,"@13g%s)", num2str(numero));
|
||||
TParagraph_string s(descrizione_ivd(sezione,lettera,numeror, numero), 32);
|
||||
|
||||
setta_righe_descr(s, "@20g%s");
|
||||
setta_righe_descr(s, "@27g%s");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -4155,9 +4157,9 @@ void TStampa_IVdirettiva::setta_righe(const char * titolo)
|
||||
{
|
||||
if (devo_stampare_risultato_prima_delle_imposte())
|
||||
stampa_risultato_prima_delle_imposte();
|
||||
set_row(_i,"@13g%s", (const char *) numero);
|
||||
TParagraph_string s(descrizione_ivd(sezione,lettera,numeror, numero), 40);
|
||||
setta_righe_descr(s,"@20g%s");
|
||||
set_row(_i,"@13g%s)", num2str(numero));
|
||||
TParagraph_string s(descrizione_ivd(sezione,lettera,numeror, numero), 32);
|
||||
setta_righe_descr(s,"@27g%s");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -4168,10 +4170,10 @@ void TStampa_IVdirettiva::setta_righe(const char * titolo)
|
||||
{
|
||||
if (devo_stampare_risultato_prima_delle_imposte())
|
||||
stampa_risultato_prima_delle_imposte();
|
||||
set_row(_i,"@13g%s@17g)", (const char *) numero);
|
||||
TParagraph_string s(descrizione_ivd(sezione,lettera,numeror, numero), 40);
|
||||
set_row(_i,"@13g%s)", num2str(numero));
|
||||
TParagraph_string s(descrizione_ivd(sezione,lettera,numeror, numero), 32);
|
||||
|
||||
setta_righe_descr(s, "@20g%s");
|
||||
setta_righe_descr(s, "@27g%s");
|
||||
if (!_intera_struttura || (_intera_struttura && bil->gruppo[0] != 'Z'))
|
||||
{
|
||||
_cont_gcs = 0;
|
||||
@ -4271,9 +4273,9 @@ void TStampa_IVdirettiva::setta_righe_verifica()
|
||||
}
|
||||
if (numero.not_empty())
|
||||
{
|
||||
set_row(_i,"@0g%s)", (const char *) numero);
|
||||
TParagraph_string s(descrizione_ivd(sezione,lettera,numeror,numero), 40);
|
||||
setta_righe_descr_verifica(s, "@6g%s");
|
||||
set_row(_i,"@0g%s)", num2str(numero));
|
||||
TParagraph_string s(descrizione_ivd(sezione,lettera,numeror,numero), 32);
|
||||
setta_righe_descr_verifica(s, "@13g%s");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -4306,9 +4308,9 @@ void TStampa_IVdirettiva::setta_righe_verifica()
|
||||
}
|
||||
if (numero.not_empty())
|
||||
{
|
||||
set_row(_i,"@0g%s)", (const char *)numero);
|
||||
TParagraph_string s(descrizione_ivd(sezione,lettera,numeror,numero), 40);
|
||||
setta_righe_descr_verifica(s, "@6g%s");
|
||||
set_row(_i,"@0g%s)", num2str(numero));
|
||||
TParagraph_string s(descrizione_ivd(sezione,lettera,numeror,numero), 32);
|
||||
setta_righe_descr_verifica(s, "@13g%s");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -4334,9 +4336,9 @@ void TStampa_IVdirettiva::setta_righe_verifica()
|
||||
|
||||
if (numero.not_empty())
|
||||
{
|
||||
set_row(_i,"@0g%s)", (const char *) numero);
|
||||
TParagraph_string s(descrizione_ivd(sezione,lettera,numeror,numero), 40);
|
||||
setta_righe_descr_verifica(s, "@6g%s");
|
||||
set_row(_i,"@0g%s)", num2str(numero));
|
||||
TParagraph_string s(descrizione_ivd(sezione,lettera,numeror,numero), 32);
|
||||
setta_righe_descr_verifica(s, "@13g%s");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -4351,9 +4353,9 @@ void TStampa_IVdirettiva::setta_righe_verifica()
|
||||
{
|
||||
if (_let_da_stamp != 'Z')
|
||||
{
|
||||
set_row(_i,"@0g%s)", (const char *) numero);
|
||||
TParagraph_string s(descrizione_ivd(sezione,lettera,numeror,numero), 40);
|
||||
setta_righe_descr_verifica(s, "@6g%s");
|
||||
set_row(_i,"@0g%s)", num2str(numero));
|
||||
TParagraph_string s(descrizione_ivd(sezione,lettera,numeror,numero), 32);
|
||||
setta_righe_descr_verifica(s, "@13g%s");
|
||||
_cont_num += 1;
|
||||
_cont_gcs = 0;
|
||||
}
|
||||
|
@ -33,6 +33,43 @@ public:
|
||||
virtual ~TMastrini_record() { }
|
||||
};
|
||||
|
||||
const char * num2str(const TString & s)
|
||||
{
|
||||
TString & str = get_tmp_string(20);
|
||||
|
||||
str = s;
|
||||
str.trim();
|
||||
if (str.len() > 2)
|
||||
{
|
||||
str = s.left(2);
|
||||
const int sub = atoi(s.mid(2));
|
||||
switch (sub)
|
||||
{
|
||||
case 0:
|
||||
case 1:
|
||||
break;
|
||||
case 2:
|
||||
str << " bis";
|
||||
break;
|
||||
case 3:
|
||||
str << " ter";
|
||||
break;
|
||||
case 4:
|
||||
str << " quater";
|
||||
break;
|
||||
case 5:
|
||||
str << " quinquies";
|
||||
break;
|
||||
case 6:
|
||||
str << " sexies";
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
return (const char *) str;
|
||||
}
|
||||
|
||||
const TString& TMastrini_record::get_str(const char* fieldname) const
|
||||
{
|
||||
if (strcmp(fieldname, RMV_DESCR) == 0)
|
||||
@ -3411,14 +3448,14 @@ void TMastrini_application::ricerca_clifo()
|
||||
set_header (4, "%s@8g%c", TR("Classe") , _lettivd);
|
||||
set_header (4, "@10g%-8s", (const char*) _numrivd);
|
||||
if (_numivd.not_empty())
|
||||
set_header (4, "@19g%-4s", (const char *) _numivd);
|
||||
set_header (4, "@19g%s", num2str(_numivd));
|
||||
if (descriz2 != "")
|
||||
{
|
||||
set_header (4,"@23g%-50s",(const char*) descriz2);
|
||||
set_header (4,"@80g%-50s",(const char*) descriz);
|
||||
set_header (4,"@30g%-50s",(const char*) descriz2);
|
||||
set_header (4,"@82g%-50s",(const char*) descriz);
|
||||
}
|
||||
else
|
||||
set_header (4,"@23g%-50s",(const char*) descriz);
|
||||
set_header (4,"@30g%-50s",(const char*) descriz);
|
||||
|
||||
dataini = _data_ini.string();
|
||||
datafine = _data_fine.string();
|
||||
@ -3541,14 +3578,14 @@ int TMastrini_application::ricerca_clifo(int start)
|
||||
set_row(r, "%s@8g%c", TR("Classe"), _lettivd);
|
||||
set_row(r, "@10g%-8s", (const char*) _numrivd);
|
||||
if (_numivd.not_empty())
|
||||
set_row(r, "@19g%-4s", (const char *) _numivd);
|
||||
set_row(r, "@19g%s", num2str(_numivd));
|
||||
if (descriz2.not_empty())
|
||||
{
|
||||
set_row(r,"@23g%-50s",(const char*) descriz2);
|
||||
set_row(r++,"@80g%-50s",(const char*) descriz);
|
||||
set_row(r,"@30g%-50s",(const char*) descriz2);
|
||||
set_row(r++,"@82g%-50s",(const char*) descriz);
|
||||
}
|
||||
else
|
||||
set_row(r++,"@23g%-50s",(const char*) descriz);
|
||||
set_row(r++,"@30g%-50s",(const char*) descriz);
|
||||
|
||||
dataini = _data_ini.string();
|
||||
datafine = _data_fine.string();
|
||||
@ -3651,14 +3688,14 @@ void TMastrini_application::ricerca_gruppo()
|
||||
set_header (4, "@0g%s@12g%c", TR("Classe"), _lettivd);
|
||||
set_header (4, "@14g%-8s",(const char*) _numrivd);
|
||||
if (_numivd.not_empty())
|
||||
set_header (4, "@23g%-4s", (const char *) _numivd);
|
||||
set_header (4, "@23g%s", num2str(_numivd));
|
||||
if (descriz2.not_empty())
|
||||
{
|
||||
set_header (4,"@27g%-50s",(const char*) descriz2);
|
||||
set_header (4,"@80g%-50s",(const char*) descriz);
|
||||
set_header (4,"@34g%-48s",(const char*) descriz2);
|
||||
set_header (4,"@82g%-50s",(const char*) descriz);
|
||||
}
|
||||
else
|
||||
set_header (4,"@27g%-50s",(const char*) descriz);
|
||||
set_header (4,"@34g%-50s",(const char*) descriz);
|
||||
|
||||
dataini = _data_ini.string();
|
||||
datafine = _data_fine.string();
|
||||
@ -3726,14 +3763,14 @@ int TMastrini_application::ricerca_gruppo(int start)
|
||||
set_row(r, "@0g%s@12g%c", TR("Classe"), _lettivd);
|
||||
set_row(r, "@14g%-8s",(const char*) _numrivd);
|
||||
if (_numivd.not_empty())
|
||||
set_row(r, "@23g%-4s", (const char *) _numivd);
|
||||
set_row(r, "@23g%-4s", num2str(_numivd));
|
||||
if (descriz2 != "")
|
||||
{
|
||||
set_row(r,"@27g%-50s",(const char*) descriz2);
|
||||
set_row(r++,"@80g%-50s",(const char*) descriz);
|
||||
set_row(r,"@34g%-48s",(const char*) descriz2);
|
||||
set_row(r++,"@82g%-50s",(const char*) descriz);
|
||||
}
|
||||
else
|
||||
set_row(r++,"@27g%-50s",(const char*) descriz);
|
||||
set_row(r++,"@34g%-50s",(const char*) descriz);
|
||||
|
||||
dataini = _data_ini.string();
|
||||
datafine = _data_fine.string();
|
||||
|
@ -2072,6 +2072,7 @@ bool TReport::load(const char* fname)
|
||||
_lpi = xml.GetIntAttr("lpi", 6);
|
||||
_font.load(xml);
|
||||
_use_printer_font = xml.GetBoolAttr("use_printer_font");
|
||||
_orientation = xml.GetIntAttr("orientation");
|
||||
|
||||
const TXmlItem* desc = xml.FindFirstChild("description");
|
||||
if (desc != NULL)
|
||||
@ -2131,6 +2132,7 @@ bool TReport::save(const char* fname) const
|
||||
xml.SetAttr("libraries", _include);
|
||||
_font.save(xml);
|
||||
xml.SetAttr("use_printer_font", use_printer_font() ? 1 : 0);
|
||||
xml.SetAttr("orientation", orientation());
|
||||
|
||||
const char* sectype = "HBF";
|
||||
for (int j = 0; j < 3; j++)
|
||||
@ -2949,7 +2951,7 @@ void TReport::include_libraries(bool reload)
|
||||
|
||||
TReport::TReport()
|
||||
: _lpi(6), _include(15, ','), _recordset(NULL), _curr_field(NULL),
|
||||
_use_printer_font(false)
|
||||
_use_printer_font(false), _orientation(0)
|
||||
{
|
||||
_expressions.set_report(this);
|
||||
_prescript.set_description("PRESCRIPT");
|
||||
|
@ -447,6 +447,7 @@ class TReport : public TAlex_virtual_machine
|
||||
TReport_expr_cache _expressions;
|
||||
word _rep_page, _book_page;
|
||||
bool _use_printer_font;
|
||||
int _orientation;
|
||||
TReport_field* _curr_field;
|
||||
|
||||
protected:
|
||||
@ -489,6 +490,8 @@ public:
|
||||
const TReport_font& print_font() const;
|
||||
void set_use_printer_font(bool on) { _use_printer_font = on; }
|
||||
bool use_printer_font() const { return _use_printer_font; }
|
||||
void set_orientation(int orion) { _orientation = orion; }
|
||||
int orientation() const { return _orientation; }
|
||||
|
||||
void set_font(const TReport_font& f) { _font = f; }
|
||||
void unmap_font();
|
||||
|
@ -1552,7 +1552,7 @@ bool TReport_book::close_page()
|
||||
void TReport_book::reprint_group_headers(const TReport_section& rs)
|
||||
{
|
||||
const int max_group = _report->find_max_level('H');
|
||||
for (int level = max_group; level >= 2; level--)
|
||||
for (int level = 2; level <= max_group; level++)
|
||||
{
|
||||
TReport_section& rs = _report->section('H', level);
|
||||
if (rs.repeat_on_page())
|
||||
@ -1665,6 +1665,19 @@ bool TReport_book::init(TReport& rep)
|
||||
if (!TBook::init())
|
||||
return false;
|
||||
|
||||
const int report_orientation = rep.orientation();
|
||||
if (report_orientation > 0)
|
||||
{
|
||||
const int priter_orientation = _ph > _pw ? 1 : 2;
|
||||
if (report_orientation != priter_orientation)
|
||||
{
|
||||
// Scambia orientamento della carta
|
||||
xvt_app_escape(XVT_ESC_SET_PRINTER_INFO, _rcd, &_pw, &_ph, NULL, NULL);
|
||||
// Rilegge parametri cambiati
|
||||
xvt_app_escape (XVT_ESC_GET_PRINTER_INFO, _rcd, &_ph, &_pw, &_pvr, &_phr);
|
||||
}
|
||||
}
|
||||
|
||||
_report = &rep;
|
||||
if (_report->use_printer_font())
|
||||
_report->load_printer_font();
|
||||
|
@ -78,7 +78,8 @@ FASCMS|1|10|0|Fase Commessa
|
||||
CODCOSTO|1|20|0|Centro di costo
|
||||
NUMREG|3|7|0|Numero movimento contabilizzato
|
||||
NUMANT|3|7|0|Numero movimento anticipo contabilizzato
|
||||
3
|
||||
4
|
||||
PROVV+ANNO+CODNUM+NDOC|
|
||||
TIPOCF+CODCF+PROVV+ANNO+DATADOC+CODNUM+NDOC|X
|
||||
DATADOC+PROVV+ANNO+CODNUM+NDOC|X
|
||||
TIPOCF+CODCF+PROVV+ANNO+CODNUM+NDOC|X
|
||||
|
7
ve/ve0100c.h
Executable file
7
ve/ve0100c.h
Executable file
@ -0,0 +1,7 @@
|
||||
#define F_DACODNUM 101
|
||||
#define F_DAANNO 102
|
||||
#define F_DAPROVV 103
|
||||
#define F_DANDOC 104
|
||||
#define F_DANRIGA 105
|
||||
|
||||
#define F_DESCRNUM 106
|
95
ve/ve0100c.uml
Executable file
95
ve/ve0100c.uml
Executable file
@ -0,0 +1,95 @@
|
||||
#include "ve0100c.h"
|
||||
|
||||
PAGE "Documento collegato " -1 -1 78 6
|
||||
|
||||
STRING F_DACODNUM 4
|
||||
BEGIN
|
||||
PROMPT 2 1 "Numerazione "
|
||||
USE %NUM
|
||||
INPUT CODTAB F_DACODNUM
|
||||
DISPLAY "Codice" CODTAB
|
||||
DISPLAY "Descrizione@50" S0
|
||||
OUTPUT F_DACODNUM CODTAB
|
||||
OUTPUT F_DESCRNUM S0
|
||||
CHECKTYPE NORMAL
|
||||
FLAGS "U"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
STRING F_DESCRNUM 50
|
||||
BEGIN
|
||||
PROMPT 24 1 ""
|
||||
USE %NUM KEY 2
|
||||
INPUT S0 F_DESCRNUM
|
||||
DISPLAY "Descrizione@50" S0
|
||||
DISPLAY "Codice" CODTAB
|
||||
COPY OUTPUT F_DACODNUM
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
NUMBER F_DAANNO 4
|
||||
BEGIN
|
||||
PROMPT 2 3 "Anno "
|
||||
FLAGS "U"
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
LISTBOX F_DAPROVV 11
|
||||
BEGIN
|
||||
PROMPT 24 3 ""
|
||||
ITEM "D|Definitivo "
|
||||
ITEM "P|Provvisorio"
|
||||
FIELD PROVV
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
NUMBER F_DANDOC 7
|
||||
BEGIN
|
||||
PROMPT 43 3 "Numero "
|
||||
USE LF_RIGHEDOC
|
||||
INPUT PROVV F_DAPROVV SELECT
|
||||
INPUT ANNO F_DAANNO SELECT
|
||||
INPUT CODNUM F_DACODNUM SELECT
|
||||
INPUT NDOC F_DANDOC
|
||||
INPUT NRIGA F_DANRIGA
|
||||
DISPLAY "N.Doc.@7" NDOC
|
||||
DISPLAY "Riga" NRIGA
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
DISPLAY "Articolo@20" CODARTMAG
|
||||
OUTPUT F_DANDOC NDOC
|
||||
OUTPUT F_DANRIGA NRIGA
|
||||
CHECKTYPE SEARCH
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
NUMBER F_DANRIGA 3
|
||||
BEGIN
|
||||
PROMPT 66 3 "Riga "
|
||||
USE LF_RIGHEDOC
|
||||
INPUT PROVV F_DAPROVV SELECT
|
||||
INPUT ANNO F_DAANNO SELECT
|
||||
INPUT CODNUM F_DACODNUM SELECT
|
||||
INPUT NDOC F_DANDOC SELECT
|
||||
INPUT NRIGA F_DANRIGA
|
||||
DISPLAY "N.Doc.@7" NDOC
|
||||
DISPLAY "Riga" NRIGA
|
||||
DISPLAY "Descrizione@50" DESCR
|
||||
DISPLAY "Articolo@20" CODARTMAG
|
||||
OUTPUT F_DANRIGA NRIGA
|
||||
CHECKTYPE NORMAL
|
||||
GROUP 1
|
||||
END
|
||||
|
||||
BUTTON DLG_OK 10 2
|
||||
BEGIN
|
||||
PROMPT -12 -1 ""
|
||||
END
|
||||
|
||||
BUTTON DLG_QUIT 10 2
|
||||
BEGIN
|
||||
PROMPT -22 -1 ""
|
||||
END
|
||||
|
||||
ENDPAGE
|
||||
ENDMASK
|
||||
|
@ -9,6 +9,7 @@ int main(int argc, char **argv)
|
||||
{
|
||||
case 1 : ve1200(argc, argv); break;
|
||||
case 2 : ve1300(argc, argv); break;
|
||||
case 3 : ve1400(argc, argv); break;
|
||||
default: ve1100(argc, argv); break;
|
||||
}
|
||||
return 0;
|
||||
|
1
ve/ve1.h
1
ve/ve1.h
@ -4,6 +4,7 @@
|
||||
int ve1100(int argc, char* argv[]);
|
||||
int ve1200(int argc, char* argv[]);
|
||||
int ve1300(int argc, char* argv[]);
|
||||
int ve1400(int argc, char* argv[]);
|
||||
|
||||
#endif // __VE1_H
|
||||
|
||||
|
355
ve/ve1400.cpp
Executable file
355
ve/ve1400.cpp
Executable file
@ -0,0 +1,355 @@
|
||||
#include <applicat.h>
|
||||
#include <automask.h>
|
||||
#include <defmask.h>
|
||||
#include <execp.h>
|
||||
#include <reprint.h>
|
||||
#include <utility.h>
|
||||
|
||||
#include "velib.h"
|
||||
#include "../ba/ba8400.h"
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// Utility
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
bool cod2app(const char* tok, TString& app)
|
||||
{
|
||||
if (isalpha(tok[0]) && isalpha(tok[1]) && atoi(tok+2) > 1000)
|
||||
{
|
||||
app.strncpy(tok, 3);
|
||||
app << " -" << char(tok[3]-1);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool get_xml_attr(const TString& line, const char* attr, TString& value)
|
||||
{
|
||||
TString str; str << ' ' << attr << "=\"";
|
||||
const int pos = line.find(str);
|
||||
if (pos >= 0)
|
||||
{
|
||||
const int apicia = line.find('"', pos)+1;
|
||||
const int apicic = line.find('"', apicia);
|
||||
if (apicic > apicia)
|
||||
{
|
||||
value = line.sub(apicia, apicic);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool get_xml_child(const TString& line, const char* tag, TString& value)
|
||||
{
|
||||
TString str; str << '<' << tag << '>';
|
||||
const int pos = line.find(str);
|
||||
if (pos >= 0)
|
||||
{
|
||||
const int apicia = line.find('>', pos)+1;
|
||||
const int apicic = line.find('<', apicia);
|
||||
if (apicic > apicia)
|
||||
{
|
||||
value = line.sub(apicia, apicic);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool rep2app(const char* name, TString& app, TString& desc)
|
||||
{
|
||||
app = desc = "";
|
||||
|
||||
TFilename report_name(name);
|
||||
report_name.ext("rep");
|
||||
if (!report_name.custom_path())
|
||||
return false;
|
||||
|
||||
TToken_string libraries(50, ',');
|
||||
|
||||
TString stringona;
|
||||
TScanner scan(report_name);
|
||||
for (int i = 0; i < 3 && scan.good(); i++) // Leggo solo le prime righe
|
||||
stringona << scan.line();
|
||||
get_xml_attr(stringona, "libraries", libraries);
|
||||
get_xml_child(stringona, "description", desc);
|
||||
|
||||
FOR_EACH_TOKEN(libraries, tok) if (strlen(tok) == 6)
|
||||
{
|
||||
if (cod2app(tok, app))
|
||||
return true;
|
||||
}
|
||||
|
||||
cod2app(report_name.name(), app);
|
||||
return true;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TDocument_cache
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TDocument_cache : TCache
|
||||
{
|
||||
protected:
|
||||
virtual TObject* key2obj(const char* key);
|
||||
|
||||
public:
|
||||
TDocumento& doc(const TRectype& rec);
|
||||
|
||||
TDocument_cache() : TCache(23) { }
|
||||
virtual ~TDocument_cache() { }
|
||||
};
|
||||
|
||||
TObject* TDocument_cache::key2obj(const char* key)
|
||||
{
|
||||
TToken_string k(key);
|
||||
const char provv = *k.get(0);
|
||||
const int anno = k.get_int();
|
||||
const TString4 codnum= k.get();
|
||||
const long ndoc = k.get_long();
|
||||
return new TDocumento(provv, anno, codnum, ndoc);
|
||||
}
|
||||
|
||||
TDocumento& TDocument_cache::doc(const TRectype& rec)
|
||||
{
|
||||
TToken_string key;
|
||||
key = rec.get(DOC_PROVV);
|
||||
key.add(rec.get(DOC_ANNO));
|
||||
key.add(rec.get(DOC_CODNUM));
|
||||
key.add(rec.get(DOC_NDOC));
|
||||
TDocumento& d = *(TDocumento*)objptr(key);
|
||||
return d;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TDocument_recordset
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TDocument_recordset : public TISAM_recordset
|
||||
{
|
||||
TDocument_cache _cache;
|
||||
|
||||
protected:
|
||||
virtual const TVariant& get(int logic, const char* field) const;
|
||||
|
||||
public:
|
||||
TDocument_recordset(const char* use) : TISAM_recordset(use) { }
|
||||
virtual ~TDocument_recordset() { }
|
||||
};
|
||||
|
||||
const TVariant& TDocument_recordset::get(int logic, const char* field) const
|
||||
{
|
||||
const int idx = relation()->log2ind(logic);
|
||||
if (idx < 0)
|
||||
return NULL_VARIANT;
|
||||
|
||||
const TRectype& rec = relation()->file(idx).curr();
|
||||
logic = rec.num();
|
||||
|
||||
if ((logic == LF_DOC || logic == LF_RIGHEDOC) && rec.type(field) == _nullfld)
|
||||
{
|
||||
TDocumento& doc = ((TDocument_cache&)_cache).doc(rec);
|
||||
TVariant& var = get_tmp_var();
|
||||
if (logic == LF_DOC)
|
||||
{
|
||||
var = doc.get(field);
|
||||
}
|
||||
else
|
||||
{
|
||||
const int nriga = rec.get_int(RDOC_NRIGA);
|
||||
const TRiga_documento& rdoc = doc[nriga];
|
||||
var = rdoc.get(field);
|
||||
}
|
||||
return var;
|
||||
}
|
||||
return TISAM_recordset::get(logic, field);
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TDocument_report
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TDocument_report : public TReport
|
||||
{
|
||||
protected:
|
||||
virtual bool set_recordset(const TString& query);
|
||||
|
||||
public:
|
||||
bool load(const char* name);
|
||||
};
|
||||
|
||||
bool TDocument_report::set_recordset(const TString& query)
|
||||
{
|
||||
return TReport::set_recordset(new TDocument_recordset(query));
|
||||
}
|
||||
|
||||
bool TDocument_report::load(const char* name)
|
||||
{
|
||||
const bool ok = TReport::load(name);
|
||||
if (ok)
|
||||
{
|
||||
// Purtroppo il recordset delle sottosezioni deve essere reimpostato a mano
|
||||
for (int i = 11; i <= 999; i++)
|
||||
{
|
||||
TReport_section* sec = find_section('B', i);
|
||||
if (sec != NULL)
|
||||
{
|
||||
TRecordset* recset = sec->recordset();
|
||||
if (recset != NULL)
|
||||
{
|
||||
const TString use = recset->query_text();
|
||||
recset = new TDocument_recordset(use);
|
||||
sec->set_recordset(recset);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TKlarkKent_mask
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TKlarkKent_mask : public TAutomask
|
||||
{
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
|
||||
public:
|
||||
TKlarkKent_mask() : TAutomask("ba8500a") { }
|
||||
};
|
||||
|
||||
bool TKlarkKent_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
switch (o.dlg())
|
||||
{
|
||||
case F_REPORT:
|
||||
if (e == fe_button)
|
||||
{
|
||||
TArray_sheet a(-1, -1, 75, 20, "Report", "Nome@16|Progr.|Descrizione@50");
|
||||
TString_array& arr = a.rows_array();
|
||||
|
||||
list_files("*.rep", arr);
|
||||
TFilename dir = firm2dir(-1); dir.add("custom"); dir.add("*.rep");
|
||||
list_files(dir, arr);
|
||||
|
||||
TString app, desc;
|
||||
FOR_EACH_ARRAY_ROW(arr, i, row)
|
||||
{
|
||||
rep2app(*row, app, desc);
|
||||
|
||||
TFilename n = *row; n = n.name(); n.ext("");
|
||||
*row = n;
|
||||
row->add(app);
|
||||
row->add(desc);
|
||||
}
|
||||
|
||||
if (a.run() == K_ENTER)
|
||||
{
|
||||
o.set(a.row(-1).get(0));
|
||||
e = fe_modify;
|
||||
}
|
||||
}
|
||||
if (e == fe_init || e == fe_modify)
|
||||
{
|
||||
TFilename name = o.get();
|
||||
TString app, desc;
|
||||
const bool ok = rep2app(name, app, desc);
|
||||
set(F_FORM, desc);
|
||||
set(F_DOC, app);
|
||||
enable(DLG_PRINT, ok);
|
||||
}
|
||||
break;
|
||||
case DLG_EDIT:
|
||||
if (e == fe_button && !field(F_REPORT).empty())
|
||||
{
|
||||
TString str;
|
||||
str << "ba8 -2 " << get(F_REPORT);
|
||||
TExternal_app app(str);
|
||||
app.run(true);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////
|
||||
// TKlarkKent_app
|
||||
///////////////////////////////////////////////////////////
|
||||
|
||||
class TKlarkKent_app : public TSkeleton_application
|
||||
{
|
||||
protected:
|
||||
virtual void main_loop();
|
||||
};
|
||||
|
||||
void TKlarkKent_app::main_loop()
|
||||
{
|
||||
TString_array arr;
|
||||
for (int i = 2; i < argc(); i++)
|
||||
arr.add(argv(i));
|
||||
if (arr.items() == 0)
|
||||
arr.add(EMPTY_STRING);
|
||||
|
||||
bool can_repeat = false;
|
||||
do
|
||||
{
|
||||
TReport_book book;
|
||||
FOR_EACH_ARRAY_ROW(arr, r, row)
|
||||
{
|
||||
TFilename report_name = *row;
|
||||
report_name.ext("rep");
|
||||
if (row->blank() || !report_name.custom_path())
|
||||
{
|
||||
TKlarkKent_mask m;
|
||||
m.set(F_REPORT, report_name);
|
||||
if (m.run() == K_ENTER)
|
||||
{
|
||||
report_name = m.get(F_REPORT);
|
||||
report_name.ext("rep");
|
||||
report_name.custom_path();
|
||||
*row = report_name;
|
||||
}
|
||||
}
|
||||
|
||||
TString appname, desc;
|
||||
rep2app(report_name, appname, desc);
|
||||
if (appname.not_empty())
|
||||
{
|
||||
appname << ' ' << report_name;
|
||||
TExternal_app app(appname);
|
||||
app.run(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
TDocument_report rep;
|
||||
if (rep.load(report_name))
|
||||
{
|
||||
const bool ok = book.add(rep);
|
||||
if (ok && arr.items() == 1) // Controlla se e' pensabile ripetere la stampa
|
||||
{
|
||||
TFilename msk = report_name;
|
||||
msk.ext("msk");
|
||||
can_repeat = msk.exist(); // Posso ripetere se ho una maschera collegata
|
||||
}
|
||||
else
|
||||
can_repeat = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (book.pages() > 0)
|
||||
book.print_or_preview();
|
||||
} while (can_repeat);
|
||||
}
|
||||
|
||||
int ve1400(int argc, char* argv[])
|
||||
{
|
||||
TKlarkKent_app app;
|
||||
app.run(argc, argv, TR("Stampa Report Vendite"));
|
||||
return 0;
|
||||
}
|
@ -14,6 +14,7 @@
|
||||
|
||||
#include "ve0100.h"
|
||||
#include "ve0100b1.h"
|
||||
#include "ve0100C.h"
|
||||
#include "ve0100o.h"
|
||||
#include "veuml.h"
|
||||
#include "veuml1.h"
|
||||
@ -21,6 +22,34 @@
|
||||
|
||||
#include "sconti.h"
|
||||
|
||||
#include "doc.h"
|
||||
#include "rdoc.h"
|
||||
|
||||
class TOriginal_row_mask : public TAutomask
|
||||
{
|
||||
|
||||
protected:
|
||||
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
|
||||
virtual bool on_key(KEY key);
|
||||
|
||||
public:
|
||||
TOriginal_row_mask() : TAutomask("ve0100c") { }
|
||||
};
|
||||
|
||||
bool TOriginal_row_mask::on_field_event(TOperable_field& o, TField_event e, long jolly)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
bool TOriginal_row_mask::on_key(KEY key)
|
||||
{
|
||||
if (key == K_SHIFT + K_F12)
|
||||
enable(-1);
|
||||
return TAutomask::on_key(key);
|
||||
}
|
||||
|
||||
|
||||
|
||||
TDocumento_mask::TDocumento_mask(const char* td)
|
||||
: TVariable_mask(), _progs_page(-1),
|
||||
_condv(NULL), _smartcard(NULL)
|
||||
@ -576,6 +605,42 @@ bool TDocumento_mask::on_key(KEY key)
|
||||
(const char*)user());
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
if (key == K_F7)
|
||||
{
|
||||
const TSheet_field & sf = sfield(F_SHEET);
|
||||
TDocumento & d = doc();
|
||||
TRiga_documento & riga = d[sf.selected() + 1];
|
||||
TOriginal_row_mask sm;
|
||||
const TRectype * or_row = riga.find_original_rdoc();
|
||||
|
||||
if (or_row != NULL)
|
||||
{
|
||||
sm.set(F_DACODNUM, or_row->get(RDOC_CODNUM));
|
||||
sm.set(F_DAANNO, or_row->get(RDOC_ANNO));
|
||||
sm.set(F_DAPROVV, or_row->get(RDOC_PROVV));
|
||||
sm.set(F_DANDOC, or_row->get(RDOC_NDOC));
|
||||
sm.set(F_DANRIGA, or_row->get(RDOC_NRIGA));
|
||||
sm.disable(-1);
|
||||
}
|
||||
|
||||
if (sm.run() == K_ENTER && sm.field(F_DACODNUM).enabled())
|
||||
{
|
||||
TToken_string key(sm.get(F_DACODNUM));
|
||||
key.add(sm.get(F_DAANNO));
|
||||
key.add(sm.get(F_DAPROVV));
|
||||
key.add(sm.get(F_DANDOC));
|
||||
key.add(sm.get(F_DANRIGA));
|
||||
|
||||
const TRectype & or_row_mod = cache().get(LF_RIGHEDOC, key);
|
||||
if (or_row_mod.empty())
|
||||
riga.reset_original_rdoc_key();
|
||||
else
|
||||
riga.set_original_rdoc_key(or_row_mod);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
return TVariable_mask::on_key(key);
|
||||
}
|
||||
|
||||
@ -1259,6 +1324,7 @@ bool TDocumento_mask::ss_notify( TSheet_field& ss, int r, KEY key )
|
||||
ss.sheet_mask().enable(DLG_USER, on);
|
||||
}
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -2756,4 +2822,3 @@ bool TDocumento_mask::codval_handler( TMask_field& f, KEY key )
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -51,6 +51,7 @@ typedef void* XVT_PALETTE;
|
||||
typedef unsigned long XVT_PALETTE_ATTR;
|
||||
|
||||
#define XVT_ESC_GET_PRINTER_INFO 883
|
||||
#define XVT_ESC_SET_PRINTER_INFO 884
|
||||
|
||||
typedef enum e_display_type {
|
||||
XVT_DISPLAY_MONO, /* monochromatic display */
|
||||
|
@ -126,7 +126,6 @@ void TPRINT_RCD::SetStringElement(const char * p, unsigned int *nSize)
|
||||
void TPRINT_RCD::SetData(wxPrintData & data)
|
||||
{
|
||||
m_size = 0;
|
||||
|
||||
|
||||
SetBoolElement(data.GetCollate(), &m_size);
|
||||
SetBoolElement(data.GetColour(), &m_size);
|
||||
@ -431,10 +430,10 @@ TPrintDC::~TPrintDC()
|
||||
|
||||
BOOLEAN xvt_app_escape(int esc_code, PRINT_RCD* rcd, long* ph, long* pw, long* pvr, long* phr)
|
||||
{
|
||||
*ph = *pw = *pvr = *phr = 0;
|
||||
switch (esc_code)
|
||||
{
|
||||
case XVT_ESC_GET_PRINTER_INFO:
|
||||
*ph = *pw = *pvr = *phr = 0;
|
||||
if (rcd == NULL || xvt_print_is_valid(rcd))
|
||||
{
|
||||
int w, h;
|
||||
@ -457,6 +456,31 @@ BOOLEAN xvt_app_escape(int esc_code, PRINT_RCD* rcd, long* ph, long* pw, long* p
|
||||
return TRUE;
|
||||
}
|
||||
break;
|
||||
case XVT_ESC_SET_PRINTER_INFO:
|
||||
if (rcd != NULL && xvt_print_is_valid(rcd) && ph != NULL && pw != NULL)
|
||||
{
|
||||
wxPrintData data;
|
||||
|
||||
#ifdef WIN32
|
||||
TPRINT_RCD* prcd = (TPRINT_RCD*)rcd;
|
||||
data.SetNativeData(OsWin32_ConvertToNativePrinterInfo(prcd->m_data, prcd->m_size));
|
||||
#endif
|
||||
|
||||
data.ConvertFromNative();
|
||||
data.SetOrientation(*ph > *pw ? 1 : 2);
|
||||
data.ConvertToNative();
|
||||
|
||||
#ifdef WIN32
|
||||
void* pHandle = data.GetNativeData();
|
||||
unsigned int nSize = 0;
|
||||
void* ptr = OsWin32_ConvertFromNativePrinterInfo(pHandle, nSize);
|
||||
prcd->SetData(ptr, nSize);
|
||||
delete ptr;
|
||||
#endif
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user