Patch level : 2.2 47

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :

Riportata la versione 22.1 patch 246


git-svn-id: svn://10.65.10.50/trunk@12818 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
alex 2005-03-17 18:21:37 +00:00
parent 995eccc418
commit 36d6a7f5e7
25 changed files with 567 additions and 261 deletions

View File

@ -269,8 +269,7 @@ TPicture_mask::TPicture_mask(const char* name, int dx, int dy,
{ {
logoname = "logo"; logoname = "logo";
logoname << '.' << ext[i]; logoname << '.' << ext[i];
logoname.custom_path(); if (logoname.custom_path())
if (logoname.exist())
break; break;
} }
TImage logo(logoname); TImage logo(logoname);
@ -864,7 +863,7 @@ bool TMenu_application::check_user()
TMask m("ba0100a"); TMask m("ba0100a");
char hostname[256]; xvt_sys_get_host_name(hostname, sizeof(hostname)); char hostname[256]; xvt_sys_get_host_name(hostname, sizeof(hostname));
if (strcmp(hostname, "BATMOBILE") == 0 || strcmp(hostname, "ETABETA") == 0 || if (strcmp(hostname, "BATMOBILE") == 0 || strcmp(hostname, "ARCHIMEDE") == 0 ||
strcmp(hostname, "KIRK") == 0 || strcmp(hostname, "SPOCK") == 0 || strcmp(hostname, "KIRK") == 0 || strcmp(hostname, "SPOCK") == 0 ||
strcmp(hostname, "UHURA") == 0) strcmp(hostname, "UHURA") == 0)
{ {
@ -1887,7 +1886,7 @@ int ba0100(int argc, char** argv)
TFilename menu = (argc < 2) ? MEN_FILE : argv[1]; TFilename menu = (argc < 2) ? MEN_FILE : argv[1];
if (menu.exist()) if (menu.custom_path())
{ {
TMenu_application *ma = new TMenu_application(menu); TMenu_application *ma = new TMenu_application(menu);
ma->run(argc, argv, TR("Menu Principale")); ma->run(argc, argv, TR("Menu Principale"));

View File

@ -168,8 +168,8 @@ void TMenuitem::create(const char* t)
{ {
if (_action.find('.') < 0) if (_action.find('.') < 0)
_action << ".men"; _action << ".men";
TFilename n = _action; n.custom_path(); TFilename n = _action;
if (n.exist()) if (n.custom_path())
menu().read(_action, _action); menu().read(_action, _action);
else else
_action.cut(0); _action.cut(0);
@ -208,14 +208,15 @@ bool TMenuitem::enabled() const
{ {
if (menu().is_dangerous(_action)) if (menu().is_dangerous(_action))
{ {
yes = FALSE; yes = false;
} }
else else
{ {
const int endname = _action.find(' '); const int endname = _action.find(' ');
TFilename name(endname > 0 ? _action.left(endname) : _action); const TFilename name(endname > 0 ? _action.left(endname) : _action);
if (name.exist()) TFilename n = name;
yes = TRUE; if (n.custom_path())
yes = true;
else else
{ {
const char* ext[] = { "exe", "pif", "com", "bat", NULL }; const char* ext[] = { "exe", "pif", "com", "bat", NULL };
@ -223,8 +224,8 @@ bool TMenuitem::enabled() const
for (e = 0; ext[e]; e++) for (e = 0; ext[e]; e++)
{ {
name.ext(ext[e]); n = name; n.ext(ext[e]);
if (name.exist()) if (n.custom_path())
break; break;
} }
yes = ext[e] != NULL; yes = ext[e] != NULL;

View File

@ -354,8 +354,7 @@ TObject* TMenulist_images::key2obj(const char* key)
{ {
name = key; name = key;
name << '.' << ext[i]; name << '.' << ext[i];
name.custom_path(); if (name.custom_path())
if (name.exist())
break; break;
} }

View File

@ -191,6 +191,8 @@ TReport_base_mask::TReport_base_mask(const char* name, TReport& rep)
class TReport_field_mask : public TReport_base_mask class TReport_field_mask : public TReport_base_mask
{ {
TReport_field& _rf;
protected: protected:
void vedo_non_vedo(); void vedo_non_vedo();
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
@ -319,10 +321,12 @@ bool TReport_field_mask::on_field_event(TOperable_field& o, TField_event e, long
case DLG_FINDREC: case DLG_FINDREC:
if (e == fe_button) if (e == fe_button)
{ {
TRecordset* rex = _report.recordset(); TRecordset* rex = _rf.section().recordset();
if (rex == NULL)
rex = _report.recordset();
if (rex != NULL && rex->columns() > 0) if (rex != NULL && rex->columns() > 0)
{ {
TArray_sheet sheet(-1, -1, -1, 20, "Colonne Query", "Nome@16|Tipo@8|Dimensoni@R"); TArray_sheet sheet(-1, -1, -1, 20, TR("Colonne Query"), HR("Nome@16|Tipo@8|Dimensoni@R"));
TToken_string row; TToken_string row;
for (size_t i = 0; i < rex->columns(); i++) for (size_t i = 0; i < rex->columns(); i++)
{ {
@ -343,6 +347,19 @@ bool TReport_field_mask::on_field_event(TOperable_field& o, TField_event e, long
{ {
row = sheet.row(-1); row = sheet.row(-1);
set(F_SOURCE, row.get(0)); set(F_SOURCE, row.get(0));
char tipo = row.get_char(1);
int width = row.get_int(2);
switch (tipo)
{
case 'D':width = 10; break;
case 'L':tipo = 'S'; break;
case 'M':tipo = 'S'; width = 50; break;
default: break;
}
const char str[2] = { tipo, '\0' };
set(F_TYPE, str);
set(F_DX, width);
} }
} }
else else
@ -441,7 +458,7 @@ void TReport_field_mask::get_field(TReport_field& rf) const
} }
TReport_field_mask::TReport_field_mask(TReport_field& rf) TReport_field_mask::TReport_field_mask(TReport_field& rf)
: TReport_base_mask("ba8300b", rf.section().report()) : TReport_base_mask("ba8300b", rf.section().report()), _rf(rf)
{ {
set_field(rf); set_field(rf);
} }

View File

@ -172,40 +172,55 @@ void TKlarkKent_app::main_loop()
if (arr.items() == 0) if (arr.items() == 0)
arr.add(EMPTY_STRING); arr.add(EMPTY_STRING);
TReport_book book; bool can_repeat = false;
FOR_EACH_ARRAY_ROW(arr, r, row) do
{ {
TFilename report_name = *row; TReport_book book;
report_name.ext("rep"); FOR_EACH_ARRAY_ROW(arr, r, row)
if (report_name.empty() || !report_name.custom_path()) {
{ TFilename report_name = *row;
TKlarkKent_mask m; report_name.ext("rep");
m.set(F_REPORT, report_name); if (report_name.empty() || !report_name.custom_path())
if (m.run() == K_ENTER)
{ {
report_name = m.get(F_REPORT); TKlarkKent_mask m;
report_name.custom_path(); 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
{
TReport 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)
TString appname, desc; book.print_or_preview();
rep2app(report_name, appname, desc); } while (can_repeat);
if (appname.not_empty())
{
appname << ' ' << report_name;
TExternal_app app(appname);
app.run(true);
}
else
{
TReport rep;
if (rep.load(report_name))
book.add(rep);
}
}
if (book.pages() > 0)
book.print_or_preview();
} }
int ba8500(int argc, char* argv[]) int ba8500(int argc, char* argv[])

View File

@ -64,7 +64,7 @@ END
CURRENCY F_TOTPRIMP 18 CURRENCY F_TOTPRIMP 18
BEGIN BEGIN
PROMPT 1 5 " Totale Op.verso cons.finali " PROMPT 1 5 "Totale Op.verso cons.finali "
MESSAGE COPY,6@ MESSAGE COPY,6@
FLAGS "DG" FLAGS "DG"
END END
@ -92,126 +92,133 @@ END
TEXT DLG_NULL TEXT DLG_NULL
BEGIN BEGIN
PROMPT 2 7 "______________________________________________________________________________" PROMPT 33 7 "@bOp.Imponibili"
FLAGS "D"
END
TEXT DLG_NULL
BEGIN
PROMPT 72 7 "@bImposte"
FLAGS "D"
END END
CURRENCY FM_REGIMP(00) 18 CURRENCY FM_REGIMP(00) 18
BEGIN BEGIN
PROMPT 1 8 "Non assegnati Op.Imponibili " PROMPT 1 8 "Non assegnati "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIVA(00) 18 CURRENCY FM_REGIVA(00) 18
BEGIN BEGIN
PROMPT 51 8 "Imposte " PROMPT 51 8 " "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIMP(01) 18 CURRENCY FM_REGIMP(01) 18
BEGIN BEGIN
PROMPT 1 9 "VT2 Abruzzo Op.Imponibili " PROMPT 1 9 "VT2 Abruzzo "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIVA(01) 18 CURRENCY FM_REGIVA(01) 18
BEGIN BEGIN
PROMPT 51 9 "Imposte " PROMPT 51 9 " "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIMP(02) 18 CURRENCY FM_REGIMP(02) 18
BEGIN BEGIN
PROMPT 1 10 "VT3 Basilicata Op.Imponibili " PROMPT 1 10 "VT3 Basilicata "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIVA(02) 18 CURRENCY FM_REGIVA(02) 18
BEGIN BEGIN
PROMPT 51 10 "Imposte " PROMPT 51 10 " "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIMP(03) 18 CURRENCY FM_REGIMP(03) 18
BEGIN BEGIN
PROMPT 1 11 "VT4 Bolzano Op.Imponibili " PROMPT 1 11 "VT4 Bolzano "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIVA(03) 18 CURRENCY FM_REGIVA(03) 18
BEGIN BEGIN
PROMPT 51 11 "Imposte " PROMPT 51 11 " "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIMP(04) 18 CURRENCY FM_REGIMP(04) 18
BEGIN BEGIN
PROMPT 1 12 "VT5 Calabria Op.Imponibili " PROMPT 1 12 "VT5 Calabria "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIVA(04) 18 CURRENCY FM_REGIVA(04) 18
BEGIN BEGIN
PROMPT 51 12 "Imposte " PROMPT 51 12 " "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIMP(05) 18 CURRENCY FM_REGIMP(05) 18
BEGIN BEGIN
PROMPT 1 13 "VT6 Campania Op.Imponibili " PROMPT 1 13 "VT6 Campania "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIVA(05) 18 CURRENCY FM_REGIVA(05) 18
BEGIN BEGIN
PROMPT 51 13 "Imposte " PROMPT 51 13 " "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIMP(06) 18 CURRENCY FM_REGIMP(06) 18
BEGIN BEGIN
PROMPT 1 14 "VT7 Emilia Rom.Op.Imponibili " PROMPT 1 14 "VT7 Emilia Rom. "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIVA(06) 18 CURRENCY FM_REGIVA(06) 18
BEGIN BEGIN
PROMPT 51 14 "Imposte " PROMPT 51 14 " "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIMP(07) 18 CURRENCY FM_REGIMP(07) 18
BEGIN BEGIN
PROMPT 1 15 "VT8 Friuli Op.Imponibili " PROMPT 1 15 "VT8 Friuli "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIVA(07) 18 CURRENCY FM_REGIVA(07) 18
BEGIN BEGIN
PROMPT 51 15 "Imposte " PROMPT 51 15 " "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIMP(08) 18 CURRENCY FM_REGIMP(08) 18
BEGIN BEGIN
PROMPT 1 16 "VT9 Lazio Op.Imponibili " PROMPT 1 16 "VT9 Lazio "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIVA(08) 18 CURRENCY FM_REGIVA(08) 18
BEGIN BEGIN
PROMPT 51 16 "Imposte " PROMPT 51 16 " "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIMP(09) 18 CURRENCY FM_REGIMP(09) 18
BEGIN BEGIN
PROMPT 1 17 "VT10 Liguria Op.Imponibili " PROMPT 1 17 "VT10 Liguria "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIVA(09) 18 CURRENCY FM_REGIVA(09) 18
BEGIN BEGIN
PROMPT 51 17 "Imposte " PROMPT 51 17 " "
FLAGS "D" FLAGS "D"
END END
@ -261,7 +268,7 @@ END
CURRENCY DLG_NULL 18 CURRENCY DLG_NULL 18
BEGIN BEGIN
PROMPT 1 5 " Totale op.verso cons.finali " PROMPT 1 5 "Totale op.verso cons.finali "
FLAGS "D" FLAGS "D"
GROUP 6 GROUP 6
END END
@ -289,126 +296,134 @@ END
TEXT DLG_NULL TEXT DLG_NULL
BEGIN BEGIN
PROMPT 2 7 "______________________________________________________________________________" PROMPT 33 7 "@bOp.Imponibili"
FLAGS "D"
END
TEXT DLG_NULL
BEGIN
PROMPT 72 7 "@bImposte"
FLAGS "D"
END END
CURRENCY FM_REGIMP(10) 18 CURRENCY FM_REGIMP(10) 18
BEGIN BEGIN
PROMPT 1 8 "VT11 Lombardia Op.Imponibili " PROMPT 1 8 "VT11 Lombardia "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIVA(10) 18 CURRENCY FM_REGIVA(10) 18
BEGIN BEGIN
PROMPT 51 8 "Imposte " PROMPT 51 8 " "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIMP(11) 18 CURRENCY FM_REGIMP(11) 18
BEGIN BEGIN
PROMPT 1 9 "VT12 Marche Op.Imponibili " PROMPT 1 9 "VT12 Marche "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIVA(11) 18 CURRENCY FM_REGIVA(11) 18
BEGIN BEGIN
PROMPT 51 9 "Imposte " PROMPT 51 9 " "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIMP(12) 18 CURRENCY FM_REGIMP(12) 18
BEGIN BEGIN
PROMPT 1 10 "VT13 Molise Op.Imponibili " PROMPT 1 10 "VT13 Molise "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIVA(12) 18 CURRENCY FM_REGIVA(12) 18
BEGIN BEGIN
PROMPT 51 10 "Imposte " PROMPT 51 10 " "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIMP(13) 18 CURRENCY FM_REGIMP(13) 18
BEGIN BEGIN
PROMPT 1 11 "VT14 Piemonte Op.Imponibili " PROMPT 1 11 "VT14 Piemonte "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIVA(13) 18 CURRENCY FM_REGIVA(13) 18
BEGIN BEGIN
PROMPT 51 11 "Imposte " PROMPT 51 11 " "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIMP(14) 18 CURRENCY FM_REGIMP(14) 18
BEGIN BEGIN
PROMPT 1 12 "VT15 Puglia Op.Imponibili " PROMPT 1 12 "VT15 Puglia "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIVA(14) 18 CURRENCY FM_REGIVA(14) 18
BEGIN BEGIN
PROMPT 51 12 "Imposte " PROMPT 51 12 " "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIMP(15) 18 CURRENCY FM_REGIMP(15) 18
BEGIN BEGIN
PROMPT 1 13 "VT16 Sardegna Op.Imponibili " PROMPT 1 13 "VT16 Sardegna "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIVA(15) 18 CURRENCY FM_REGIVA(15) 18
BEGIN BEGIN
PROMPT 51 13 "Imposte " PROMPT 51 13 " "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIMP(16) 18 CURRENCY FM_REGIMP(16) 18
BEGIN BEGIN
PROMPT 1 14 "VT17 Sicilia Op.Imponibili " PROMPT 1 14 "VT17 Sicilia "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIVA(16) 18 CURRENCY FM_REGIVA(16) 18
BEGIN BEGIN
PROMPT 51 14 "Imposte " PROMPT 51 14 " "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIMP(17) 18 CURRENCY FM_REGIMP(17) 18
BEGIN BEGIN
PROMPT 1 15 "VT18 Toscana Op.Imponibili " PROMPT 1 15 "VT18 Toscana "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIVA(17) 18 CURRENCY FM_REGIVA(17) 18
BEGIN BEGIN
PROMPT 51 15 "Imposte " PROMPT 51 15 " "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIMP(18) 18 CURRENCY FM_REGIMP(18) 18
BEGIN BEGIN
PROMPT 1 16 "VT19 Trento Op.Imponibili " PROMPT 1 16 "VT19 Trento "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIVA(18) 18 CURRENCY FM_REGIVA(18) 18
BEGIN BEGIN
PROMPT 51 16 "Imposte " PROMPT 51 16 " "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIMP(19) 18 CURRENCY FM_REGIMP(19) 18
BEGIN BEGIN
PROMPT 1 17 "VT20 Umbria Op.Imponibili " PROMPT 1 17 "VT20 Umbria "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIVA(19) 18 CURRENCY FM_REGIVA(19) 18
BEGIN BEGIN
PROMPT 51 17 "Imposte " PROMPT 51 17 " "
FLAGS "D" FLAGS "D"
END END
@ -420,22 +435,22 @@ END
CURRENCY FM_REGIVA(20) 18 CURRENCY FM_REGIVA(20) 18
BEGIN BEGIN
PROMPT 51 18 "Imposte " PROMPT 51 18 " "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIMP(21) 18 CURRENCY FM_REGIMP(21) 18
BEGIN BEGIN
PROMPT 1 19 "VT21 Veneto Op.Imponibili " PROMPT 1 19 "VT21 Veneto "
FLAGS "D" FLAGS "D"
END END
CURRENCY FM_REGIVA(21) 18 CURRENCY FM_REGIVA(21) 18
BEGIN BEGIN
PROMPT 51 19 "Imposte " PROMPT 51 19 " "
FLAGS "D" FLAGS "D"
END END
ENDPAGE ENDPAGE
ENDMASK ENDMASK

View File

@ -1,17 +1,13 @@
<report libraries="cg5800a" name="ListaQuadroVTPriv" lpi="6"> <report libraries="cg5800a" name="cg5800ra" lpi="6">
<description>Lista privati per regione per quadro VT</description> <description>Lista privati per regione per quadro VT</description>
<font face="Courier New" size="10" /> <font face="Courier New" size="10" />
<section type="Head"> <section type="Head" height="3">
<field type="Stringa" align="center" width="80" height="2" pattern="1"> <field type="Stringa" align="center" width="68" height="2" pattern="1">
<font face="Courier New" bold="1" size="14" /> <font face="Courier New" bold="1" size="12" />
<source>"Lista clienti privati per quadro IVA VT anno " + #ANNO</source> <source>"Lista clienti privati per quadro IVA VT anno " + #ANNO</source>
</field> </field>
<field border="3" y="2" type="Linea" width="80" height="0" pattern="1" /> <field border="3" y="2" type="Linea" width="68" height="0" pattern="1" />
<field y="3" type="Testo" width="16" pattern="1" text="N.Operazione" />
<field x="20" y="3" type="Testo" align="right" width="18" pattern="1" text="Imponibile" />
<field x="41" y="3" type="Testo" width="6" pattern="1" text="Cod." />
<field x="49" y="3" type="Testo" align="right" width="18" pattern="1" text="Imposta" />
</section> </section>
<section type="Head" level="1" /> <section type="Head" level="1" />
<section type="Head" level="2" height="3"> <section type="Head" level="2" height="3">
@ -32,7 +28,7 @@
</field> </field>
<field border="1" y="2" type="Linea" width="40" height="0" pattern="1" /> <field border="1" y="2" type="Linea" width="40" height="0" pattern="1" />
</section> </section>
<section type="Head" level="3" height="3"> <section type="Head" level="3" height="4">
<groupby>23.CODCF</groupby> <groupby>23.CODCF</groupby>
<prescript description="H3 PRESCRIPT">0 "F3.101" ! <prescript description="H3 PRESCRIPT">0 "F3.101" !
0 "F3.102" !</prescript> 0 "F3.102" !</prescript>
@ -48,10 +44,14 @@
<source>20.RAGSOC</source> <source>20.RAGSOC</source>
</field> </field>
<field border="1" y="2" type="Linea" width="68" height="0" pattern="1" /> <field border="1" y="2" type="Linea" width="68" height="0" pattern="1" />
<field x="1" y="2.25" type="Testo" width="16" pattern="1" text="N.Operazione" />
<field x="19" y="2.25" type="Testo" align="right" width="18" pattern="1" text="Imponibile" />
<field x="41" y="2.25" type="Testo" width="6" pattern="1" text="Cod." />
<field x="50" y="2.25" type="Testo" align="right" width="18" pattern="1" text="Imposta" />
</section> </section>
<section type="Body" /> <section type="Body" />
<section type="Body" level="1"> <section type="Body" level="1">
<field type="Numero" align="right" width="6" pattern="1"> <field x="1" type="Numero" align="right" width="6" pattern="1">
<source>RMOVIVA.NUMREG</source> <source>RMOVIVA.NUMREG</source>
</field> </field>
<field x="16" type="Valuta" align="right" width="20" pattern="1" text="###.###.###,@@"> <field x="16" type="Valuta" align="right" width="20" pattern="1" text="###.###.###,@@">
@ -61,16 +61,18 @@
<field x="41" type="Stringa" width="4" pattern="1"> <field x="41" type="Stringa" width="4" pattern="1">
<source>RMOVIVA.CODIVA</source> <source>RMOVIVA.CODIVA</source>
</field> </field>
<field x="49" type="Valuta" align="right" width="18" pattern="1" text="#########,@@"> <field x="49" type="Valuta" align="right" width="18" pattern="1" text="###.###.###,@@">
<source>RMOVIVA.IMPOSTA</source> <source>RMOVIVA.IMPOSTA</source>
<prescript description="B1.0 PRESCRIPT">MESSAGE ADD,F3.102</prescript> <prescript description="B1.0 PRESCRIPT">MESSAGE ADD,F3.102</prescript>
</field> </field>
</section> </section>
<section type="Foot" /> <section type="Foot" />
<section type="Foot" level="1"> <section type="Foot" level="1">
<field border="2" x="-0.38" y="0.5" type="Linea" width="68" height="0" pattern="1" />
<field border="2" x="-0.5" y="0.75" type="Linea" width="68" height="0" pattern="1" />
<field x="2" y="1" type="Testo" width="15" pattern="1" text="Totale generale" /> <field x="2" y="1" type="Testo" width="15" pattern="1" text="Totale generale" />
<field x="18" y="1" type="Valuta" align="right" width="18" id="301" pattern="1" text="###.###.###,@@" /> <field x="18" y="1" type="Valuta" align="right" width="18" id="301" pattern="1" text="###.###.###,@@" />
<field x="49" y="1" type="Valuta" align="right" width="18" id="302" pattern="1" text="###.###.###,@@"> <field x="50" y="1" type="Valuta" align="right" width="18" id="302" pattern="1" text="###.###.###,@@">
<prescript description="F1.302 PRESCRIPT">MESSAGE ADD,F1.302</prescript> <prescript description="F1.302 PRESCRIPT">MESSAGE ADD,F1.302</prescript>
</field> </field>
</section> </section>
@ -79,8 +81,8 @@
<field x="18" y="1" type="Valuta" align="right" width="18" id="201" pattern="1" text="###.###.###,@@"> <field x="18" y="1" type="Valuta" align="right" width="18" id="201" pattern="1" text="###.###.###,@@">
<prescript description="F2.201 PRESCRIPT">MESSAGE ADD,F1.301</prescript> <prescript description="F2.201 PRESCRIPT">MESSAGE ADD,F1.301</prescript>
</field> </field>
<field x="49" y="1" type="Valuta" align="right" width="18" id="202" pattern="1" text="###.###.###,@@"> <field x="50" y="1" type="Valuta" align="right" width="18" id="202" pattern="1" text="###.###.###,@@">
<prescript description="F2.202 PRESCRIPT">MESSAGE ADD,F1.202</prescript> <prescript description="F2.202 PRESCRIPT">MESSAGE ADD,F1.302</prescript>
</field> </field>
</section> </section>
<section type="Foot" level="3"> <section type="Foot" level="3">
@ -88,7 +90,7 @@
<field x="18" y="1" type="Valuta" align="right" width="18" id="101" pattern="1" text="###.###.###,@@"> <field x="18" y="1" type="Valuta" align="right" width="18" id="101" pattern="1" text="###.###.###,@@">
<prescript description="F3.101 PRESCRIPT">MESSAGE ADD,F2.201</prescript> <prescript description="F3.101 PRESCRIPT">MESSAGE ADD,F2.201</prescript>
</field> </field>
<field x="49" y="1" type="Valuta" align="right" width="18" id="102" pattern="1" text="###.###.###,@@"> <field x="50" y="1" type="Valuta" align="right" width="18" id="102" pattern="1" text="###.###.###,@@">
<prescript description="F3.102 PRESCRIPT">MESSAGE ADD,F2.202</prescript> <prescript description="F3.102 PRESCRIPT">MESSAGE ADD,F2.202</prescript>
</field> </field>
</section> </section>

View File

@ -1,8 +1,8 @@
[MAIN] [MAIN]
DECSEP = , DECSEP = ,
FIELDSEP = FIELDSEP =
RECORDSEP = \n RECORDSEP =
RECORDSIZE = 0 RECORDSIZE = 250
SKIPLINES = 0 SKIPLINES = 0
TYPEFIELD = -1 TYPEFIELD = -1
TYPELEN = -1 TYPELEN = -1
@ -388,7 +388,6 @@ POSITION(3) = 15
LENGTH(3) = 80 LENGTH(3) = 80
FIELD(3)=19->DESCR FIELD(3)=19->DESCR
[OPZIONI] [OPZIONI]
PERCORSO = C:\TEMP\ PERCORSO = C:\TEMP\

View File

@ -258,7 +258,8 @@ bool TRecordset::save_as_silk(const char* path)
for (unsigned int c = 0; c < columns(); c++) for (unsigned int c = 0; c < columns(); c++)
{ {
const TRecordset_column_info& ci = column_info(c); const TRecordset_column_info& ci = column_info(c);
const bool is_alpha = ci._type == _alfafld || ci._type == _charfld || ci._type == _memofld; const bool is_alpha = ci._type == _alfafld || ci._type == _charfld ||
ci._type == _memofld || ci._type == _datefld;
out << "C;Y" << (n+2) << ";X" << (c+1) << ";K"; out << "C;Y" << (n+2) << ";X" << (c+1) << ";K";
if (is_alpha) out << '"'; if (is_alpha) out << '"';
@ -423,8 +424,9 @@ const TVariant& TRecordset::get(const char* column_name) const
const TVariant& TRecordset::get_var(const char* name) const const TVariant& TRecordset::get_var(const char* name) const
{ {
if (_parentset != NULL && strncmp(name, "#PARENT.", 8) == 0) // Se mi accorgo che posso e voglio accedere ad un campo del recordset padre
return _parentset->get(name+8); if (_parentset != NULL && strncmp(name, "#PARENT.", 8) == 0)
return _parentset->get(name+8); // Attenzione! E' giusto usare get() e non get_var()
const TVariant* var = (const TVariant*)_var.objptr(name); const TVariant* var = (const TVariant*)_var.objptr(name);
return var != NULL ? *var : NULL_VARIANT; return var != NULL ? *var : NULL_VARIANT;

View File

@ -1807,9 +1807,7 @@ bool TReport_book::add(TReport& rep, bool progind)
column_delta = dx; column_delta = dx;
last_body_height = dy; last_body_height = dy;
} }
print_subsections(b);
if (column_delta > 0) if (column_delta > 0)
_delta.x += column_delta; _delta.x += column_delta;
else else
@ -1818,6 +1816,9 @@ bool TReport_book::add(TReport& rep, bool progind)
_delta.y += dy; _delta.y += dy;
last_body_height = 0; // Non servirebbe strettamente last_body_height = 0; // Non servirebbe strettamente
} }
// Stampa eventuali sottosezioni
print_subsections(b);
} }
} }

View File

@ -1571,6 +1571,8 @@ TBrowse_sheet::TBrowse_sheet(TCursor* cursor, const char* fields,
TEditable_field* e = NULL; TEditable_field* e = NULL;
short y = 0; short y = 0;
bool first = true;
for (const char* i = ids.get(0); i; i = ids.get()) for (const char* i = ids.get(0); i; i = ids.get())
{ {
if (*i != '"' && strchr(i, '@') == NULL) if (*i != '"' && strchr(i, '@') == NULL)
@ -1632,8 +1634,11 @@ TBrowse_sheet::TBrowse_sheet(TCursor* cursor, const char* fields,
{ {
e->set_handler(browse_field_handler); e->set_handler(browse_field_handler);
e->set(c.get()); e->set(c.get());
if (e->dlg() == f->dlg()) if (e->dlg() == f->dlg() || first)
{
first_focus(e->dlg()); first_focus(e->dlg());
first = false;
}
} }
} }
} }

View File

@ -1991,9 +1991,7 @@ bool TMatResPlanning::load_gross_requirements()
const TCodice_um um = riga.get(RDOC_UMQTA); const TCodice_um um = riga.get(RDOC_UMQTA);
// GUY was Here, but it's Koki fault! // GUY was Here, but it's Koki fault!
long codcli = 0; const long codcli = is_production_article(art) ? doc.get_long(DOC_CODCF) : 0;
if (is_production_article(art))
codcli = doc.get_long(DOC_CODCF);
TPrice prz(riga.prezzo(TRUE,TRUE)); TPrice prz(riga.prezzo(TRUE,TRUE));
TQuantita q(art, um, qta); TQuantita q(art, um, qta);
@ -2003,7 +2001,7 @@ bool TMatResPlanning::load_gross_requirements()
if (line == NULL) if (line == NULL)
{ {
// nuova linea // nuova linea
line = _articles.find(art, liv, mag, "", imp, lin, codcli, TRUE); line = _articles.find(art, liv, mag, "", imp, lin, codcli, true);
line->set_description(riga.get(RDOC_DESCR)); line->set_description(riga.get(RDOC_DESCR));
line->set_final_product(); line->set_final_product();
} }
@ -2087,12 +2085,12 @@ bool TMatResPlanning::explode_articles()
const TRiga_esplosione& riga = (const TRiga_esplosione&)boom[i]; const TRiga_esplosione& riga = (const TRiga_esplosione&)boom[i];
const TCodice_articolo& art = riga.articolo(); const TCodice_articolo& art = riga.articolo();
const TRectype& articolo=cache().get(LF_ANAMAG,art); const TRectype& articolo=cache().get(LF_ANAMAG,art);
bool add=TRUE; bool add=true;
if (!articolo.get(ANAMAG_CODART).blank()) if (!articolo.get(ANAMAG_CODART).blank())
{ {
const char reorder_type=articolo.get_char(ANAMAG_RIORDINO); const char reorder_type=articolo.get_char(ANAMAG_RIORDINO);
if (reorder_type!='F' && reorder_type!=' ' && reorder_type!='\0') // e' a riordino if (reorder_type!='F' && reorder_type!=' ' && reorder_type!='\0') // e' a riordino
add=FALSE; add=false;
} }
if (add) if (add)
{ {
@ -2100,23 +2098,22 @@ bool TMatResPlanning::explode_articles()
TString8 mag = line.codmagdep(); TString8 mag = line.codmagdep();
TString8 imp = line.codimp(); TString8 imp = line.codimp();
TString8 lin = line.codlin(); TString8 lin = line.codlin();
_artinfo.art2magimpline(art, mag, imp, lin);
// GUY was here with Koki // GUY was here with Koki
long codcli = 0; const long codcli = is_production_article(art) ? line.codclifor() : 0L;
if (is_production_article(art))
codcli = line.codclifor();
_artinfo.art2magimpline(art, mag, imp, lin); TMRP_line* son = _articles.find(art, riga.giacenza(),mag, EMPTY_STRING, imp, lin, codcli);
TMRP_line* son = _articles.find(art, riga.giacenza(),mag, "", imp, lin, codcli);
if (son == NULL) if (son == NULL)
{ {
son = _articles.find(art, riga.giacenza(), mag, "", imp, lin, codcli, TRUE); son = _articles.find(art, riga.giacenza(), mag, EMPTY_STRING, imp, lin, codcli, true);
son->set_description(distinta.describe(art)); son->set_description(distinta.describe(art));
} }
line.add_son(riga.val(), son); const int son_depth = line.explosion_depth()+1;
if (riga.livello() > line.explosion_depth()) if (son_depth > son->explosion_depth())
line.set_explosion_depth(riga.livello()); son->set_explosion_depth(son_depth);
line.add_son(riga.val(), son);
distinta.describe(art); distinta.describe(art);
} }
} }
@ -2223,11 +2220,14 @@ bool TMatResPlanning::load_planned_orders()
const TString8 mag = riga.get(RDOC_CODMAG); const TString8 mag = riga.get(RDOC_CODMAG);
const TString8 imp = riga.get(RDOC_IMPIANTO); const TString8 imp = riga.get(RDOC_IMPIANTO);
const TString8 lin = riga.get(RDOC_LINEA); const TString8 lin = riga.get(RDOC_LINEA);
const long clifor = doc.get_long(DOC_CODCF);
TMRP_line* line = _articles.find(art, liv, mag, "", imp, lin, 0L); // GUY was Here, but it's Koki fault!
const long codcli = is_production_article(art) ? doc.get_long(DOC_CODCF) : 0;
TMRP_line* line = _articles.find(art, liv, mag, "", imp, lin, codcli);
if (line == NULL) if (line == NULL)
{ {
line = _articles.find(art, liv, mag, "", imp, lin, 0L, TRUE); line = _articles.find(art, liv, mag, "", imp, lin, codcli, TRUE);
line->set_description(riga.get(RDOC_DESCR)); line->set_description(riga.get(RDOC_DESCR));
} }
TPrice prz(riga.prezzo(TRUE,TRUE)); TPrice prz(riga.prezzo(TRUE,TRUE));
@ -2298,9 +2298,6 @@ bool TMatResPlanning::gross2net_logic(TMRP_line &curr_article, int bucket, bool
// Verifico se esiste gia' un fabbisogno netto // Verifico se esiste gia' un fabbisogno netto
real sm,tmpreal = -curr_article.net_requirement(bucket); real sm,tmpreal = -curr_article.net_requirement(bucket);
#ifdef DBG
TString80 s;
#endif
if (tmpreal >= ZERO) // Devo calcolare il fabbisogno netto if (tmpreal >= ZERO) // Devo calcolare il fabbisogno netto
{ {
tmpreal = curr_article.on_hand(bucket); tmpreal = curr_article.on_hand(bucket);
@ -2715,7 +2712,7 @@ bool TMatResPlanning::print_risalita(const TMRP_line & line, const TDate &date,
TPrinter& pr = printer(); TPrinter& pr = printer();
TDate todate(date); TDate todate(date);
TDate fromdate = todate; TDate fromdate = todate;
const bool isbuck0 = (round_date(fromdate) == 0); const bool isbuck0 = round_date(fromdate) == 0;
round_date(todate,TRUE); round_date(todate,TRUE);
int rows=0; int rows=0;
//int extraleadtime = _mask->get_int(F_XTRA_LDTIME); //int extraleadtime = _mask->get_int(F_XTRA_LDTIME);
@ -2876,7 +2873,9 @@ int TMatResPlanning::print_internal_ref(const TMRP_internalref &iref, int backle
int TMatResPlanning::print_gross_ref(const TMRP_line& line, int bucket) int TMatResPlanning::print_gross_ref(const TMRP_line& line, int bucket)
{ {
return 0; return 0;
// Guy: a cosa serve ????????????????????????????????????????????????
TPrinter& pr = printer(); TPrinter& pr = printer();
TToken_string dockey; TToken_string dockey;
@ -2886,7 +2885,7 @@ return 0;
TMRP_time doc_time; TMRP_time doc_time;
line.lead_time(bucket,doc_time, TRUE); line.lead_time(bucket,doc_time, TRUE);
TPrintrow r; TPrintrow r;
//const TString & codnum = docref->codnumdoc();
TMRP_docref * docref = NULL; TMRP_docref * docref = NULL;
TMRP_docrefs * gr_refs= line.record(bucket).requirements_refs(); TMRP_docrefs * gr_refs= line.record(bucket).requirements_refs();
int grref = gr_refs ? gr_refs->items() : 0; int grref = gr_refs ? gr_refs->items() : 0;
@ -2986,10 +2985,22 @@ const TRectype* TMatResPlanning::irefs2rdoc(const TMRP_internalrefs& irefs) cons
} }
if (refs != NULL && refs->items() > 0) if (refs != NULL && refs->items() > 0)
{ {
const TMRP_docref& docref = *refs->get_ref_ptr(0); for (int j = refs->last(); j >= 0; j--)
rdoc = &docref.get_rdoc(); {
const TMRP_docref& docref = *refs->get_ref_ptr(j);
if (docref.numrig() > 0)
rdoc = &docref.get_rdoc();
}
} }
} }
// Quin comincia la magia, perche' differente dalla risalita standard
if (rdoc == NULL)
{
const TMRP_internalrefs* inter = rec.internal_refs();
if (inter != NULL && inter->items() > 0)
rdoc = irefs2rdoc(*inter);
}
} }
return rdoc; return rdoc;
} }
@ -3169,6 +3180,10 @@ bool TMatResPlanning::emit_orders()
TMRP_line* line = find_risalita_line(riga); // ... cerco la riga di risalita TMRP_line* line = find_risalita_line(riga); // ... cerco la riga di risalita
if (line != NULL) if (line != NULL)
{ {
const int depth = line->explosion_depth()+1; // Profondita' esplosione (+1 per non avere zeri)
rdoc.put(RDOC_QTAGG5, depth); // Per ora memorizziamo in QTAGG5, scelto a caso
// Cerco la riga di risalita
for (int bucket = line->last_bucket(); bucket >= 0; bucket--) for (int bucket = line->last_bucket(); bucket >= 0; bucket--)
{ {
const TRectype* dardoc = NULL; const TRectype* dardoc = NULL;
@ -3186,8 +3201,7 @@ bool TMatResPlanning::emit_orders()
} }
if (dardoc != NULL) if (dardoc != NULL)
{ {
rdoc.set_original_rdoc_key(*dardoc); // Imposto DAPROVV, DAANNO, DACODNUM, DANDOC, DAIDRIGA rdoc.set_original_rdoc_key(*dardoc); // Imposto DAPROVV, DAANNO, DACODNUM, DANDOC, DAIDRIGA
rdoc.put(RDOC_QTAGG5, line->explosion_depth()); // Memorizzo la profondita' di esplosione
break; break;
} }
} }

View File

@ -78,6 +78,21 @@ Package=<4>
############################################################################### ###############################################################################
Project: "ps0920"=.\ps0920.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
Begin Project Dependency
Project_Dep_Name AgaLib
End Project Dependency
}}}
###############################################################################
Global: Global:
Package=<5> Package=<5>

View File

@ -147,10 +147,20 @@ SOURCE=..\ps\ps0872200a.uml
!IF "$(CFG)" == "ps0872 - Win32 Release" !IF "$(CFG)" == "ps0872 - Win32 Release"
# Begin Custom Build - Compiling mask $(InputPath)...
TargetDir=D:\Release\Campo21
InputPath=..\ps\ps0872200a.uml
InputName=ps0872200a
"$(TargetDir)\$(InputName).msk" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
msk32 $(InputPath) $(TargetDir)\$(InputName).msk
# End Custom Build
!ELSEIF "$(CFG)" == "ps0872 - Win32 Debug" !ELSEIF "$(CFG)" == "ps0872 - Win32 Debug"
# Begin Custom Build - Compiling mask $(InputPath) # Begin Custom Build - Compiling mask $(InputPath)...
TargetDir=\u\D_02_01\exed TargetDir=\U\Luca\D_02_01\exed
InputPath=..\ps\ps0872200a.uml InputPath=..\ps\ps0872200a.uml
InputName=ps0872200a InputName=ps0872200a

171
projects/ps0920.dsp Executable file
View File

@ -0,0 +1,171 @@
# Microsoft Developer Studio Project File - Name="ps0920" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Application" 0x0101
CFG=ps0920 - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "ps0920.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "ps0920.mak" CFG="ps0920 - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "ps0920 - Win32 Release" (based on "Win32 (x86) Application")
!MESSAGE "ps0920 - Win32 Debug" (based on "Win32 (x86) Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=xicl6.exe
MTL=midl.exe
RSC=rc.exe
!IF "$(CFG)" == "ps0920 - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "..\release"
# PROP Intermediate_Dir "..\release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
# ADD CPP /nologo /MT /W3 /O2 /I "..\include" /I "..\xvaga" /I "..\xi" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "XVT" /FD /c
# SUBTRACT CPP /YX
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o "NUL" /win32
# ADD BASE RSC /l 0x410 /d "NDEBUG"
# ADD RSC /l 0x410 /i "..\..\wx240\include" /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=xilink6.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
# ADD LINK32 version.lib wsock32.lib kernel32.lib gdi32.lib user32.lib advapi32.lib comdlg32.lib shell32.lib ole32.lib oleaut32.lib comctl32.lib rpcrt4.lib winspool.lib /nologo /subsystem:windows /machine:I386 /nodefaultlib:"libc.lib" /out:"D:\Release\Campo21/ps0920.exe"
# SUBTRACT LINK32 /map /debug /nodefaultlib
!ELSEIF "$(CFG)" == "ps0920 - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "..\debug"
# PROP Intermediate_Dir "..\debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
# ADD CPP /nologo /MTd /W3 /Gm /Zi /Od /I "..\include" /I "..\xvaga" /I "..\xi" /D "_DEBUG" /D "WIN32" /D "DBG" /D "_WINDOWS" /FR /FD /c
# SUBTRACT CPP /YX
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o "NUL" /win32
# ADD BASE RSC /l 0x410 /d "_DEBUG"
# ADD RSC /l 0x410 /i "..\..\wx240\include" /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=xilink6.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
# ADD LINK32 version.lib wsock32.lib kernel32.lib gdi32.lib user32.lib advapi32.lib comdlg32.lib shell32.lib ole32.lib oleaut32.lib comctl32.lib rpcrt4.lib winspool.lib /nologo /subsystem:windows /debug /machine:I386 /nodefaultlib:"libc.lib" /out:"..\exed\ps0920.exe" /pdbtype:sept
# SUBTRACT LINK32 /nodefaultlib
!ENDIF
# Begin Target
# Name "ps0920 - Win32 Release"
# Name "ps0920 - Win32 Debug"
# Begin Group "Sources"
# PROP Default_Filter "cpp"
# Begin Source File
SOURCE=..\ps\ps0920.cpp
# End Source File
# Begin Source File
SOURCE=..\ps\ps0920100.cpp
# End Source File
# End Group
# Begin Group "Masks"
# PROP Default_Filter "uml"
# Begin Source File
SOURCE=..\ps\ps0920100a.uml
!IF "$(CFG)" == "ps0920 - Win32 Release"
# Begin Custom Build - Compiling mask $(InputPath)...
TargetDir=D:\Release\Campo21
InputPath=..\ps\ps0920100a.uml
InputName=ps0920100a
"$(TargetDir)\$(InputName).msk" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
msk32 $(InputPath) $(TargetDir)\$(InputName).msk
# End Custom Build
!ELSEIF "$(CFG)" == "ps0920 - Win32 Debug"
# Begin Custom Build - Compiling mask $(InputPath)...
TargetDir=\u\D_02_01\exed
InputPath=..\ps\ps0920100a.uml
InputName=ps0920100a
"$(TargetDir)\$(InputName).msk" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
msk32 $(InputPath) $(TargetDir)\$(InputName).msk
# End Custom Build
!ENDIF
# End Source File
# End Group
# Begin Group "Headers"
# PROP Default_Filter "h"
# Begin Source File
SOURCE=..\ps\ps0920.h
# End Source File
# Begin Source File
SOURCE=..\ps\ps0920100a.h
# End Source File
# End Group
# Begin Source File
SOURCE=.\ps0920.rc
!IF "$(CFG)" == "ps0920 - Win32 Release"
# ADD BASE RSC /l 0x410
# ADD RSC /l 0x410
!ELSEIF "$(CFG)" == "ps0920 - Win32 Debug"
# ADD BASE RSC /l 0x410
# ADD RSC /l 0x410 /fo"..\Debug/ps0920.res"
!ENDIF
# End Source File
# End Target
# End Project

4
projects/ps0920.rc Executable file
View File

@ -0,0 +1,4 @@
"9012" ICON DISCARDABLE "../exed/res/exe.ico"
rcinclude ../../wx240/include/wx/msw/wx.rc

View File

@ -1937,8 +1937,8 @@ bool TStampaDoc_application::create()
_firmrel= new TRelation(LF_NDITTE); // istanziamento e impostazione della relazione di gestione della ditta corrente _firmrel= new TRelation(LF_NDITTE); // istanziamento e impostazione della relazione di gestione della ditta corrente
_firmrel->add(LF_ANAG, "TIPOA=TIPOA|CODANAGR=CODANAGR"); _firmrel->add(LF_ANAG, "TIPOA=TIPOA|CODANAGR=CODANAGR");
_firmrel->add(LF_UNLOC,"CODDITTA=CODDITTA"); // si posiziona sulla prima unita' locale della ditta _firmrel->add(LF_UNLOC,"CODDITTA=CODDITTA"); // si posiziona sulla prima unita' locale della ditta
_firmrel->add(LF_COMUNI, "COM=STATORES+COMRES", 1, LF_ANAG, 100+LF_COMUNI); _firmrel->add(LF_COMUNI, "STATO=STATORES|COM=COMRES", 1, LF_ANAG, 100+LF_COMUNI);
_firmrel->add(LF_COMUNI, "COM=STATORES+COMRF", 1, LF_ANAG, 200+LF_COMUNI); _firmrel->add(LF_COMUNI, "STATO=STATORES|COM=COMRF", 1, LF_ANAG, 200+LF_COMUNI);
open_files(LF_TABCOM, LF_TAB, LF_OCCAS, LF_CLIFO, LF_INDSP, LF_CFVEN, LF_MOVMAG, LF_RMOVMAG, LF_CONDV, LF_ANAMAG , LF_SVRIEP, LF_AGENTI, LF_PERCPROV, LF_CAUSALI, 0); open_files(LF_TABCOM, LF_TAB, LF_OCCAS, LF_CLIFO, LF_INDSP, LF_CFVEN, LF_MOVMAG, LF_RMOVMAG, LF_CONDV, LF_ANAMAG , LF_SVRIEP, LF_AGENTI, LF_PERCPROV, LF_CAUSALI, 0);
const int argc = TApplication::argc(); const int argc = TApplication::argc();

View File

@ -721,8 +721,8 @@ TReport_doc::TReport_doc(const char* name)
// istanziamento e impostazione della relazione di gestione della ditta corrente // istanziamento e impostazione della relazione di gestione della ditta corrente
_firmrel.add(LF_ANAG, "TIPOA=TIPOA|CODANAGR=CODANAGR"); _firmrel.add(LF_ANAG, "TIPOA=TIPOA|CODANAGR=CODANAGR");
_firmrel.add(LF_UNLOC,"CODDITTA=CODDITTA"); // si posiziona sulla prima unita' locale della ditta _firmrel.add(LF_UNLOC,"CODDITTA=CODDITTA"); // si posiziona sulla prima unita' locale della ditta
_firmrel.add(LF_COMUNI, "COM=STATORES+COMRES", 1, LF_ANAG, 100+LF_COMUNI); _firmrel.add(LF_COMUNI, "STATO=STATORES|COM=COMRES", 1, LF_ANAG, 100+LF_COMUNI);
_firmrel.add(LF_COMUNI, "COM=STATORES+COMRF", 1, LF_ANAG, 200+LF_COMUNI); _firmrel.add(LF_COMUNI, "STATO=STATORES|COM=COMRF", 1, LF_ANAG, 200+LF_COMUNI);
_firmrel.curr().put(NDT_CODDITTA, prefix().get_codditta()); _firmrel.curr().put(NDT_CODDITTA, prefix().get_codditta());
_firmrel.read(); _firmrel.read();

View File

@ -173,55 +173,62 @@ void TRDoc2JBI::transfer()
tipo = 'O'; tipo = 'O';
if (tipo != ' ') if (tipo != ' ')
{ {
filerdoc.zero(); const int nriga = cur.curr().get_int(RDOC_NRIGA);
filerdoc.put("CODDITTA", get_firm()); // ditta TRiga_documento& rigadoc = (*doc)[nriga];
filerdoc.put("TIPO", tipo); // tipologia documento const real qta = cur.curr().get_real(RDOC_QTA);
filerdoc.put("DATADOC", cur.curr(LF_DOC).get(DOC_DATADOC)); // data doc. real importo = rigadoc.importo(FALSE, FALSE);
// record anamag if (!qta.is_zero() || !importo.is_zero())
const TRectype& rec_anamag = cache().get(LF_ANAMAG, cur.curr().get(RDOC_CODARTMAG)); {
// record clifo e cfven filerdoc.zero();
TToken_string key; filerdoc.put("CODDITTA", get_firm()); // ditta
key.add(cur.curr(LF_DOC).get(DOC_TIPOCF)); filerdoc.put("TIPO", tipo); // tipologia documento
key.add(cur.curr(LF_DOC).get(DOC_CODCF)); TDate data = cur.curr(LF_DOC).get(DOC_DATADOC);
const TRectype& rec_cfven = cache().get(LF_CFVEN, key); filerdoc.put("DATADOC", data.string()); // data doc.
const TRectype& rec_clifo = cache().get(LF_CLIFO, key); // record anamag
// record comuni const TRectype& rec_anamag = cache().get(LF_ANAMAG, cur.curr().get(RDOC_CODARTMAG));
key = ""; // record clifo e cfven
key.add(rec_clifo.get(CLI_STATOCF)); TToken_string key;
key.add(rec_clifo.get(CLI_COMCF)); key.add(cur.curr(LF_DOC).get(DOC_TIPOCF));
const TRectype& rec_comuni = cache().get(LF_COMUNI, key); key.add(cur.curr(LF_DOC).get(DOC_CODCF));
TString16 tmp = cur.curr().get(RDOC_CODMAG); const TRectype& rec_cfven = cache().get(LF_CFVEN, key);
filerdoc.put("CODDEP", tmp); // codice deposito const TRectype& rec_clifo = cache().get(LF_CLIFO, key);
tmp = tmp.left(3); // record comuni
filerdoc.put("CODMAG", tmp); // codice magazzino key = "";
tmp = rec_anamag.get(ANAMAG_GRMERC); key.add(rec_clifo.get(CLI_STATOCF));
filerdoc.put("SOTTOGR", tmp); // sottogruppo merceologico key.add(rec_clifo.get(CLI_COMCF));
tmp = tmp.left(3); const TRectype& rec_comuni = cache().get(LF_COMUNI, key);
filerdoc.put("GRUPPO", tmp); //gruppo merceologico TString16 tmp = cur.curr().get(RDOC_CODMAG);
tmp = cur.curr(LF_DOC).get(DOC_ZONA); filerdoc.put("CODDEP", tmp); // codice deposito
if (tmp.empty()) tmp = tmp.left(3);
tmp = rec_cfven.get(CFV_CODZONA); filerdoc.put("CODMAG", tmp); // codice magazzino
filerdoc.put("ZONA", tmp); // zona tmp = rec_anamag.get(ANAMAG_GRMERC);
filerdoc.put("REGIONE", rec_comuni.get(COM_UFFREG)); // regione filerdoc.put("SOTTOGR", tmp); // sottogruppo merceologico
filerdoc.put("PROV", rec_comuni.get(COM_PROVCOM)); // provincia tmp = tmp.left(3);
tmp = cur.curr(LF_DOC).get(DOC_CATVEN); filerdoc.put("GRUPPO", tmp); //gruppo merceologico
if (tmp.empty()) tmp = cur.curr(LF_DOC).get(DOC_ZONA);
tmp = rec_cfven.get(CFV_CATVEN); if (tmp.empty())
filerdoc.put("CATMERCLI", tmp); // cat. merceologica tmp = rec_cfven.get(CFV_CODZONA);
filerdoc.put("CODCLI", cur.curr(LF_DOC).get(DOC_CODCF)); // codice cliente filerdoc.put("ZONA", tmp); // zona
tmp = cur.curr(LF_DOC).get(DOC_CODAG); filerdoc.put("REGIONE", rec_comuni.get("CODREG")); // regione
if (tmp.empty()) filerdoc.put("PROV", rec_comuni.get(COM_PROVCOM)); // provincia
tmp = rec_cfven.get(CFV_CODAG); tmp = cur.curr(LF_DOC).get(DOC_CATVEN);
filerdoc.put("CODAG", tmp); // codice agente if (tmp.empty())
filerdoc.put("CODART", cur.curr().get(RDOC_CODARTMAG)); // codice articolo tmp = rec_cfven.get(CFV_CATVEN);
filerdoc.put("TIPODOC", cur.curr(LF_DOC).get(DOC_TIPODOC)); // tipo documento filerdoc.put("CATMERCLI", tmp); // cat. merceologica
filerdoc.put("QTA", cur.curr().get(RDOC_QTA)); // quantita filerdoc.put("CODCLI", cur.curr(LF_DOC).get(DOC_CODCF)); // codice cliente
filerdoc.put("IMPORTO", ""); tmp = cur.curr(LF_DOC).get(DOC_CODAG);
filerdoc.put("SCONTATO", ""); if (tmp.empty())
tmp = rec_cfven.get(CFV_CODAG);
update_tab(filetab, filerdoc.curr()); filerdoc.put("CODAG", tmp); // codice agente
filerdoc.put("CODART", cur.curr().get(RDOC_CODARTMAG)); // codice articolo
filerdoc.put("TIPODOC", cur.curr(LF_DOC).get(DOC_TIPODOC)); // tipo documento
filerdoc.put("QTA", cur.curr().get(RDOC_QTA)); // quantita
filerdoc.put("IMPORTO", importo);
importo = rigadoc.importo(TRUE, FALSE);
filerdoc.put("SCONTATO", importo);
update_tab(filetab, filerdoc.curr());
err = filerdoc.write();
err = filerdoc.write();
} }
if (err != NOERR) if (err != NOERR)
error_box("Errore %d in scrittura file dbf. Elaborazione non terminata.", err); error_box("Errore %d in scrittura file dbf. Elaborazione non terminata.", err);
@ -270,4 +277,4 @@ int ve7600(int argc, char** argv)
TRDoc2JBI app; TRDoc2JBI app;
app.run(argc, argv, "Trasferimento JBI"); app.run(argc, argv, "Trasferimento JBI");
return 0; return 0;
} }

View File

@ -1134,11 +1134,8 @@ protected:
TImporto get_cg_imp(int n); TImporto get_cg_imp(int n);
// Setta l'importo della riga n // Setta l'importo della riga n
void set_cg_imp(int n, const TImporto& imp); void set_cg_imp(int n, const TImporto& imp);
// verifica se il movimento e' quadrato oppure ha qualche maledetto sbilancio
// ritorna TRUE, ovviamente, se everything's alright.
public: public:
// ricalcola le righe di contabilita' dalle righe iva presenti
// e verifica la quadratura del movimento. Ritorna TRUE se il movimento e' scrivibile
void set_caus(TCausale * c) { _caus = c;} void set_caus(TCausale * c) { _caus = c;}
bool movement_ok() ; bool movement_ok() ;
void add_row_re(int i); void add_row_re(int i);
@ -1187,7 +1184,6 @@ class TContabilizzazione : public TElaborazione // velib04b
*_rfa, // tabella raggruppamenti fiscali *_rfa, // tabella raggruppamenti fiscali
*_cve, // tabella categorie di vendita *_cve, // tabella categorie di vendita
*_val, // tabella valute estere *_val, // tabella valute estere
*_tri, // tabella tipi di riga
*_prs, // tabella prestazioni *_prs, // tabella prestazioni
*_spp, // tabella spese *_spp, // tabella spese
*_caa, // tabella categorie acquisto articoli *_caa, // tabella categorie acquisto articoli
@ -1261,6 +1257,8 @@ protected:
bool sc_enabled() const ; bool sc_enabled() const ;
// Ritorna TRUE se il modulo INTRA e' abilitato (verifica anche la causale del documento corrente) // Ritorna TRUE se il modulo INTRA e' abilitato (verifica anche la causale del documento corrente)
bool in_enabled() const ; bool in_enabled() const ;
// Controlla se il tipo riga esiste
bool valid_row_type(const char* rt) const;
public: public:
// Cambia lo stato del documento // Cambia lo stato del documento
error_type change_doc_status(TDocumento&); error_type change_doc_status(TDocumento&);

View File

@ -248,8 +248,8 @@ const TSpesa_prest & TRiga_documento::spesa() const
test_firm(); test_firm();
const TString16 codice(get("CODART")); const TString80 codice(get("CODART"));
TString16 index; index << tipor << codice; TString80 index; index << tipor << codice;
TSpesa_prest * s = (TSpesa_prest *) _spese.objptr(index); TSpesa_prest * s = (TSpesa_prest *) _spese.objptr(index);
if (s == NULL) if (s == NULL)

View File

@ -903,7 +903,6 @@ TContabilizzazione::TContabilizzazione(const char* cod)
_saldi = new TLocalisamfile(LF_SALDI); _saldi = new TLocalisamfile(LF_SALDI);
_cpg = new TTable("%CPG"); _cpg = new TTable("%CPG");
_tri = new TTable("%TRI");
_val = new TTable("%VAL"); _val = new TTable("%VAL");
_prs = new TTable("PRS"); _prs = new TTable("PRS");
_spp = new TTable("SPP"); _spp = new TTable("SPP");
@ -942,7 +941,6 @@ TContabilizzazione::TContabilizzazione(const TRectype& rec)
_saldi = new TLocalisamfile(LF_SALDI); _saldi = new TLocalisamfile(LF_SALDI);
_cpg = new TTable("%CPG"); _cpg = new TTable("%CPG");
_tri = new TTable("%TRI");
_val = new TTable("%VAL"); _val = new TTable("%VAL");
_prs = new TTable("PRS"); _prs = new TTable("PRS");
_spp = new TTable("SPP"); _spp = new TTable("SPP");
@ -968,7 +966,6 @@ TContabilizzazione::~TContabilizzazione()
{ {
delete _clifo; delete _clifo;
delete _cpg; delete _cpg;
delete _tri;
delete _val; delete _val;
delete _gmc; delete _gmc;
delete _rfa; delete _rfa;
@ -1374,6 +1371,10 @@ error_type TContabilizzazione::compile_head_mov(TDocumento& doc)
mov_rec.put(MOV_TIPO,tipocf); mov_rec.put(MOV_TIPO,tipocf);
mov_rec.put(MOV_CODCF,codcf); mov_rec.put(MOV_CODCF,codcf);
mov_rec.put(MOV_OCFPI,occas); mov_rec.put(MOV_OCFPI,occas);
TString4 codvali;
real cambioi;
if (_caus->iva() == iva_acquisti) if (_caus->iva() == iva_acquisti)
{ {
const TString16 tdoc_cont(doc.tipo().totale_doc_cont()); const TString16 tdoc_cont(doc.tipo().totale_doc_cont());
@ -1388,8 +1389,8 @@ error_type TContabilizzazione::compile_head_mov(TDocumento& doc)
imposta.change_to_firm_val(); imposta.change_to_firm_val();
mov_rec.put(MOV_RITFIS, imposta.get_num()); mov_rec.put(MOV_RITFIS, imposta.get_num());
TString4 codvali(_clifo->curr().get("VALINTRA")); codvali = _clifo->curr().get("VALINTRA");
real cambioi = cambio; cambioi = cambio;
if (codvali.not_empty() && codvali != codval) if (codvali.not_empty() && codvali != codval)
{ {
mov_rec.put(MOV_CODVALI,codvali); mov_rec.put(MOV_CODVALI,codvali);
@ -1399,25 +1400,37 @@ error_type TContabilizzazione::compile_head_mov(TDocumento& doc)
} }
else else
{ {
codvali = codval;
cambioi = cambio;
if (_caus->valintra() && codvali.empty())
{
codvali = TCurrency::get_firm_val();
if (codvali.empty())
codvali = TCurrency::get_euro_val();
cambioi = 1.00;
}
mov_rec.put(MOV_CODVALI,codval); mov_rec.put(MOV_CODVALI,codval);
mov_rec.put(MOV_CAMBIOI,cambio); mov_rec.put(MOV_CAMBIOI,cambioi);
codvali = codval; codvali = codval;
} }
TCurrency corrval(totdocval); TCurrency corrval(totdocval);
TCurrency corrlire(corrval); TCurrency corrlire(corrval);
corrval.change_value(codvali, cambioi); corrval.change_value(codvali, cambioi);
corrlire.change_to_firm_val(); corrlire.change_to_firm_val();
if (::is_true_value(codvali)) mov_rec.put(MOV_CORRLIRE,corrlire.get_num());
{ if (_caus->valintra())
mov_rec.put(MOV_CORRLIRE,corrlire.get_num());
mov_rec.put(MOV_CORRVALUTA,corrval.get_num()); mov_rec.put(MOV_CORRVALUTA,corrval.get_num());
}
else
mov_rec.put(MOV_CORRLIRE,corrval.get_num());
TDate dataintra = data_reg; TDate dataintra = data_reg;
if (doc.tipo().nota_credito()) if (doc.tipo().nota_credito())
dataintra = doc.get_date(DOC_DATADOCRIF); {
TDate d = doc.get_date(DOC_DATADOCRIF);
if (d.ok())
dataintra = d;
}
mov_rec.put(MOV_DATACOMPI, dataintra); mov_rec.put(MOV_DATACOMPI, dataintra);
} }
} }
@ -1428,20 +1441,32 @@ error_type TContabilizzazione::compile_head_mov(TDocumento& doc)
TCurrency corrval(totdocval); TCurrency corrval(totdocval);
TCurrency corrlire(corrval); TCurrency corrlire(corrval);
mov_rec.put(MOV_CODVALI,codval); codvali = codval;
mov_rec.put(MOV_CAMBIOI,cambio); cambioi = cambio;
corrlire.change_to_firm_val(); if (_caus->valintra() && codvali.empty())
if (::is_true_value(codval))
{ {
mov_rec.put(MOV_CORRLIRE,corrlire.get_num()); codvali = TCurrency::get_firm_val();
mov_rec.put(MOV_CORRVALUTA,corrval.get_num());
if (codvali.empty())
codvali = TCurrency::get_euro_val();
cambioi = 1.00;
} }
else
mov_rec.put(MOV_CORRLIRE,corrval.get_num()); mov_rec.put(MOV_CODVALI,codvali);
mov_rec.put(MOV_CAMBIOI,cambioi);
corrlire.change_to_firm_val();
mov_rec.put(MOV_CORRLIRE,corrlire.get_num());
if (_caus->valintra())
mov_rec.put(MOV_CORRVALUTA,corrval.get_num());
TDate dataintra = data_reg; TDate dataintra = data_reg;
if (doc.tipo().nota_credito()) if (doc.tipo().nota_credito())
dataintra = doc.get_date(DOC_DATADOCRIF); {
TDate d = doc.get_date(DOC_DATADOCRIF);
if (d.ok())
dataintra = d;
}
mov_rec.put(MOV_DATACOMPI, dataintra); mov_rec.put(MOV_DATACOMPI, dataintra);
} }
} }
@ -2192,6 +2217,12 @@ error_type TContabilizzazione::create_total_doc_row(TDocumento& doc)
return _error; return _error;
} }
bool TContabilizzazione::valid_row_type(const char* rt) const
{
const TRectype& tri = cache().get("%TRI", rt);
return !tri.empty();
}
error_type TContabilizzazione::compile_rows_mov(TDocumento& doc) error_type TContabilizzazione::compile_rows_mov(TDocumento& doc)
// Compila le righe // Compila le righe
{ {
@ -2218,10 +2249,9 @@ error_type TContabilizzazione::compile_rows_mov(TDocumento& doc)
_totali_lordi.destroy();// resetta l'assoc_array dei totali lordi _totali_lordi.destroy();// resetta l'assoc_array dei totali lordi
for (int i=1; good() && i<=rows; i++) // browse all this fucked document rows for (int i=1; good() && i<=rows; i++) // browse all this fucked document rows
{ {
TRiga_documento & r = doc[i]; TRiga_documento& r = doc[i];
tiporiga = r.get(RDOC_TIPORIGA); tiporiga = r.get(RDOC_TIPORIGA);
_tri->put("CODTAB",tiporiga); if (valid_row_type(tiporiga)) // controlla l'esistenza della riga
if (_tri->read() == NOERR) // controlla l'esistenza della riga
{ {
TBill conto; TBill conto;
const char tipo = r.tipo().tipo(); const char tipo = r.tipo().tipo();
@ -2232,6 +2262,9 @@ error_type TContabilizzazione::compile_rows_mov(TDocumento& doc)
const bool spesa = r.tipo().tipo() == RIGA_SPESEDOC; const bool spesa = r.tipo().tipo() == RIGA_SPESEDOC;
char tipo_rit = '\0'; char tipo_rit = '\0';
if (!riga_omaggio && r.imponibile().is_zero())
continue;
if (spesa) if (spesa)
tipo_rit = r.spesa().tipo_ritenuta(); tipo_rit = r.spesa().tipo_ritenuta();
@ -2380,8 +2413,7 @@ error_type TContabilizzazione::compile_rows_mov_re(TDocumento& doc)
{ {
TRiga_documento & r = doc[i]; TRiga_documento & r = doc[i];
tiporiga = r.get(RDOC_TIPORIGA); tiporiga = r.get(RDOC_TIPORIGA);
_tri->put("CODTAB",tiporiga); if (valid_row_type(tiporiga)) // controlla l'esistenza della riga
if (_tri->read() == NOERR) // controlla l'esistenza della riga
{ {
TBill conto; TBill conto;
const char tipo = r.tipo().tipo(); const char tipo = r.tipo().tipo();
@ -3315,6 +3347,9 @@ error_type TContabilizzazione::write_intra(TDocumento& doc)
if (freq.compare_periodo(data_intra, data_reg, tipo_intra) < 0) if (freq.compare_periodo(data_intra, data_reg, tipo_intra) < 0)
{ {
_error = intra_rett_error; _error = intra_rett_error;
display_error(doc);
_error = no_error;
return _error; // Non posso fare movimenti ma devo fare rettifiche return _error; // Non posso fare movimenti ma devo fare rettifiche
} }
} }
@ -3498,6 +3533,7 @@ error_type TContabilizzazione::write_intra(TDocumento& doc)
} }
else else
intra.put("CODVAL", codvali); intra.put("CODVAL", codvali);
intra.put("CAMBIO", cambioi); intra.put("CAMBIO", cambioi);
if (intra.write() == _isreinsert) // Succede con le ricontabilizzazioni if (intra.write() == _isreinsert) // Succede con le ricontabilizzazioni
intra.rewrite(); // si effettua una riscrittura intra.rewrite(); // si effettua una riscrittura
@ -3678,8 +3714,8 @@ void TContabilizzazione::display_error(TDocumento& doc)
"Verificare la consistenza dei files relativi ai movimenti intracomunitari.",(const char*)numerazione,numero); "Verificare la consistenza dei files relativi ai movimenti intracomunitari.",(const char*)numerazione,numero);
break; break;
case intra_rett_error: case intra_rett_error:
msg.format("Si è verificato un errore nella scrittura del movimento intracomunitario relativamente al documento %s/%ld." msg.format("La data di competenza INTRA del movimento intracomunitario relativo al documento %s/%ld"
"La data di competenza INTRA appartiene ad un periodo il cui riepilogo che deve essere rettificato manualmente",(const char*)numerazione,numero); "appartiene ad un periodo il cui riepilogo deve essere rettificato manualmente",(const char*)numerazione,numero);
break; break;
case cont_seq_error: case cont_seq_error:
msg.format("Il documento precedente al %s/%ld non e' stato contabilizzato." msg.format("Il documento precedente al %s/%ld non e' stato contabilizzato."

View File

@ -1672,6 +1672,8 @@ key_left( XI_TEXT * text, XinEvent * ep )
{ {
if ( text->ip1 >= 1 ) if ( text->ip1 >= 1 )
text->selection_start_ip = text->ip1 = --text->ip2; text->selection_start_ip = text->ip1 = --text->ip2;
else
ep->v.character.ch = XI_KEY_BTAB; // AGA was here
} }
} }
else if ( text->ip1 == text->selection_start_ip ) else if ( text->ip1 == text->selection_start_ip )
@ -1694,6 +1696,8 @@ key_left( XI_TEXT * text, XinEvent * ep )
if ( text->ip1 >= 1 ) if ( text->ip1 >= 1 )
new_ip = text->ip1 - 1; new_ip = text->ip1 - 1;
else
ep->v.character.ch = XI_KEY_BTAB; // AGA was here
text->selection_start_ip = text->ip1 = text->ip2 = new_ip; text->selection_start_ip = text->ip1 = text->ip2 = new_ip;
} }
} }
@ -1715,6 +1719,8 @@ key_right( XI_TEXT * text, XinEvent * ep )
{ {
if ( text->ip2 < ( int ) strlen( text->string ) ) if ( text->ip2 < ( int ) strlen( text->string ) )
text->selection_start_ip = text->ip1 = ++text->ip2; text->selection_start_ip = text->ip1 = ++text->ip2;
else
ep->v.character.ch = '\t'; // AGA was here
} }
} }
else if ( text->ip2 == text->selection_start_ip ) else if ( text->ip2 == text->selection_start_ip )
@ -1737,6 +1743,9 @@ key_right( XI_TEXT * text, XinEvent * ep )
if ( text->ip2 < ( int ) strlen( text->string ) ) if ( text->ip2 < ( int ) strlen( text->string ) )
new_ip = text->ip2 + 1; new_ip = text->ip2 + 1;
else
ep->v.character.ch = '\t'; // AGA was here
text->selection_start_ip = text->ip1 = text->ip2 = new_ip; text->selection_start_ip = text->ip1 = text->ip2 = new_ip;
} }
} }

View File

@ -211,7 +211,8 @@ HBITMAP OsWin32_CreateBitmap(const wxImage& img, wxDC& dc)
HDC hDC = (HDC)dc.GetHDC(); HDC hDC = (HDC)dc.GetHDC();
int nDepth = dc.GetDepth(); int nDepth = dc.GetDepth();
if (nDepth == 1) // Altrimenti le stampanti in B/N perdono i toni di grigio // Altrimenti le stampanti in B/N perdono i toni di grigio
if (nDepth == 1 && !OsWin32_IsWindowsServer())
{ {
hDC = NULL; hDC = NULL;
nDepth = 24; nDepth = 24;

View File

@ -2721,30 +2721,16 @@ BOOLEAN xvt_fsys_convert_dir_to_str(DIRECTORY *dirp, char *path, int sz_path)
BOOLEAN xvt_fsys_convert_str_to_dir(const char *path, DIRECTORY *dirp) BOOLEAN xvt_fsys_convert_str_to_dir(const char *path, DIRECTORY *dirp)
{ {
strcpy(dirp->path, path); if (dirp != NULL)
return TRUE; strcpy(dirp->path, path);
return dirp != NULL;
} }
void xvt_fsys_get_default_dir(DIRECTORY *dirp) void xvt_fsys_get_default_dir(DIRECTORY *dirp)
{ {
if (_startup_dir == NULL) if (_startup_dir == NULL)
{ _startup_dir = new wxString(::wxGetCwd());
_startup_dir = new wxString; xvt_fsys_convert_str_to_dir(*_startup_dir, dirp);
wxFileName::SplitPath(wxTheApp->argv[0], _startup_dir, NULL, NULL);
#ifdef LINUX
if (*_startup_dir == ".")
*_startup_dir = "";
#endif
if (_startup_dir->IsEmpty())
{
char exedir[_MAX_PATH];
xvt_fsys_get_dir(dirp);
xvt_fsys_convert_dir_to_str(dirp, exedir, sizeof(exedir));
*_startup_dir = exedir;
}
}
if (dirp != NULL)
xvt_fsys_convert_str_to_dir(*_startup_dir, dirp);
} }
BOOLEAN xvt_fsys_get_dir(DIRECTORY *dirp) BOOLEAN xvt_fsys_get_dir(DIRECTORY *dirp)