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 << '.' << ext[i];
logoname.custom_path();
if (logoname.exist())
if (logoname.custom_path())
break;
}
TImage logo(logoname);
@ -864,7 +863,7 @@ bool TMenu_application::check_user()
TMask m("ba0100a");
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, "UHURA") == 0)
{
@ -1887,7 +1886,7 @@ int ba0100(int argc, char** argv)
TFilename menu = (argc < 2) ? MEN_FILE : argv[1];
if (menu.exist())
if (menu.custom_path())
{
TMenu_application *ma = new TMenu_application(menu);
ma->run(argc, argv, TR("Menu Principale"));

View File

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

View File

@ -354,8 +354,7 @@ TObject* TMenulist_images::key2obj(const char* key)
{
name = key;
name << '.' << ext[i];
name.custom_path();
if (name.exist())
if (name.custom_path())
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
{
TReport_field& _rf;
protected:
void vedo_non_vedo();
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:
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)
{
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;
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);
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
@ -441,7 +458,7 @@ void TReport_field_mask::get_field(TReport_field& rf) const
}
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);
}

View File

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

View File

@ -64,7 +64,7 @@ END
CURRENCY F_TOTPRIMP 18
BEGIN
PROMPT 1 5 " Totale Op.verso cons.finali "
PROMPT 1 5 "Totale Op.verso cons.finali "
MESSAGE COPY,6@
FLAGS "DG"
END
@ -92,126 +92,133 @@ END
TEXT DLG_NULL
BEGIN
PROMPT 2 7 "______________________________________________________________________________"
PROMPT 33 7 "@bOp.Imponibili"
FLAGS "D"
END
TEXT DLG_NULL
BEGIN
PROMPT 72 7 "@bImposte"
FLAGS "D"
END
CURRENCY FM_REGIMP(00) 18
BEGIN
PROMPT 1 8 "Non assegnati Op.Imponibili "
PROMPT 1 8 "Non assegnati "
FLAGS "D"
END
CURRENCY FM_REGIVA(00) 18
BEGIN
PROMPT 51 8 "Imposte "
PROMPT 51 8 " "
FLAGS "D"
END
CURRENCY FM_REGIMP(01) 18
BEGIN
PROMPT 1 9 "VT2 Abruzzo Op.Imponibili "
PROMPT 1 9 "VT2 Abruzzo "
FLAGS "D"
END
CURRENCY FM_REGIVA(01) 18
BEGIN
PROMPT 51 9 "Imposte "
PROMPT 51 9 " "
FLAGS "D"
END
CURRENCY FM_REGIMP(02) 18
BEGIN
PROMPT 1 10 "VT3 Basilicata Op.Imponibili "
PROMPT 1 10 "VT3 Basilicata "
FLAGS "D"
END
CURRENCY FM_REGIVA(02) 18
BEGIN
PROMPT 51 10 "Imposte "
PROMPT 51 10 " "
FLAGS "D"
END
CURRENCY FM_REGIMP(03) 18
BEGIN
PROMPT 1 11 "VT4 Bolzano Op.Imponibili "
PROMPT 1 11 "VT4 Bolzano "
FLAGS "D"
END
CURRENCY FM_REGIVA(03) 18
BEGIN
PROMPT 51 11 "Imposte "
PROMPT 51 11 " "
FLAGS "D"
END
CURRENCY FM_REGIMP(04) 18
BEGIN
PROMPT 1 12 "VT5 Calabria Op.Imponibili "
PROMPT 1 12 "VT5 Calabria "
FLAGS "D"
END
CURRENCY FM_REGIVA(04) 18
BEGIN
PROMPT 51 12 "Imposte "
PROMPT 51 12 " "
FLAGS "D"
END
CURRENCY FM_REGIMP(05) 18
BEGIN
PROMPT 1 13 "VT6 Campania Op.Imponibili "
PROMPT 1 13 "VT6 Campania "
FLAGS "D"
END
CURRENCY FM_REGIVA(05) 18
BEGIN
PROMPT 51 13 "Imposte "
PROMPT 51 13 " "
FLAGS "D"
END
CURRENCY FM_REGIMP(06) 18
BEGIN
PROMPT 1 14 "VT7 Emilia Rom.Op.Imponibili "
PROMPT 1 14 "VT7 Emilia Rom. "
FLAGS "D"
END
CURRENCY FM_REGIVA(06) 18
BEGIN
PROMPT 51 14 "Imposte "
PROMPT 51 14 " "
FLAGS "D"
END
CURRENCY FM_REGIMP(07) 18
BEGIN
PROMPT 1 15 "VT8 Friuli Op.Imponibili "
PROMPT 1 15 "VT8 Friuli "
FLAGS "D"
END
CURRENCY FM_REGIVA(07) 18
BEGIN
PROMPT 51 15 "Imposte "
PROMPT 51 15 " "
FLAGS "D"
END
CURRENCY FM_REGIMP(08) 18
BEGIN
PROMPT 1 16 "VT9 Lazio Op.Imponibili "
PROMPT 1 16 "VT9 Lazio "
FLAGS "D"
END
CURRENCY FM_REGIVA(08) 18
BEGIN
PROMPT 51 16 "Imposte "
PROMPT 51 16 " "
FLAGS "D"
END
CURRENCY FM_REGIMP(09) 18
BEGIN
PROMPT 1 17 "VT10 Liguria Op.Imponibili "
PROMPT 1 17 "VT10 Liguria "
FLAGS "D"
END
CURRENCY FM_REGIVA(09) 18
BEGIN
PROMPT 51 17 "Imposte "
PROMPT 51 17 " "
FLAGS "D"
END
@ -261,7 +268,7 @@ END
CURRENCY DLG_NULL 18
BEGIN
PROMPT 1 5 " Totale op.verso cons.finali "
PROMPT 1 5 "Totale op.verso cons.finali "
FLAGS "D"
GROUP 6
END
@ -289,126 +296,134 @@ END
TEXT DLG_NULL
BEGIN
PROMPT 2 7 "______________________________________________________________________________"
PROMPT 33 7 "@bOp.Imponibili"
FLAGS "D"
END
TEXT DLG_NULL
BEGIN
PROMPT 72 7 "@bImposte"
FLAGS "D"
END
CURRENCY FM_REGIMP(10) 18
BEGIN
PROMPT 1 8 "VT11 Lombardia Op.Imponibili "
PROMPT 1 8 "VT11 Lombardia "
FLAGS "D"
END
CURRENCY FM_REGIVA(10) 18
BEGIN
PROMPT 51 8 "Imposte "
PROMPT 51 8 " "
FLAGS "D"
END
CURRENCY FM_REGIMP(11) 18
BEGIN
PROMPT 1 9 "VT12 Marche Op.Imponibili "
PROMPT 1 9 "VT12 Marche "
FLAGS "D"
END
CURRENCY FM_REGIVA(11) 18
BEGIN
PROMPT 51 9 "Imposte "
PROMPT 51 9 " "
FLAGS "D"
END
CURRENCY FM_REGIMP(12) 18
BEGIN
PROMPT 1 10 "VT13 Molise Op.Imponibili "
PROMPT 1 10 "VT13 Molise "
FLAGS "D"
END
CURRENCY FM_REGIVA(12) 18
BEGIN
PROMPT 51 10 "Imposte "
PROMPT 51 10 " "
FLAGS "D"
END
CURRENCY FM_REGIMP(13) 18
BEGIN
PROMPT 1 11 "VT14 Piemonte Op.Imponibili "
PROMPT 1 11 "VT14 Piemonte "
FLAGS "D"
END
CURRENCY FM_REGIVA(13) 18
BEGIN
PROMPT 51 11 "Imposte "
PROMPT 51 11 " "
FLAGS "D"
END
CURRENCY FM_REGIMP(14) 18
BEGIN
PROMPT 1 12 "VT15 Puglia Op.Imponibili "
PROMPT 1 12 "VT15 Puglia "
FLAGS "D"
END
CURRENCY FM_REGIVA(14) 18
BEGIN
PROMPT 51 12 "Imposte "
PROMPT 51 12 " "
FLAGS "D"
END
CURRENCY FM_REGIMP(15) 18
BEGIN
PROMPT 1 13 "VT16 Sardegna Op.Imponibili "
PROMPT 1 13 "VT16 Sardegna "
FLAGS "D"
END
CURRENCY FM_REGIVA(15) 18
BEGIN
PROMPT 51 13 "Imposte "
PROMPT 51 13 " "
FLAGS "D"
END
CURRENCY FM_REGIMP(16) 18
BEGIN
PROMPT 1 14 "VT17 Sicilia Op.Imponibili "
PROMPT 1 14 "VT17 Sicilia "
FLAGS "D"
END
CURRENCY FM_REGIVA(16) 18
BEGIN
PROMPT 51 14 "Imposte "
PROMPT 51 14 " "
FLAGS "D"
END
CURRENCY FM_REGIMP(17) 18
BEGIN
PROMPT 1 15 "VT18 Toscana Op.Imponibili "
PROMPT 1 15 "VT18 Toscana "
FLAGS "D"
END
CURRENCY FM_REGIVA(17) 18
BEGIN
PROMPT 51 15 "Imposte "
PROMPT 51 15 " "
FLAGS "D"
END
CURRENCY FM_REGIMP(18) 18
BEGIN
PROMPT 1 16 "VT19 Trento Op.Imponibili "
PROMPT 1 16 "VT19 Trento "
FLAGS "D"
END
CURRENCY FM_REGIVA(18) 18
BEGIN
PROMPT 51 16 "Imposte "
PROMPT 51 16 " "
FLAGS "D"
END
CURRENCY FM_REGIMP(19) 18
BEGIN
PROMPT 1 17 "VT20 Umbria Op.Imponibili "
PROMPT 1 17 "VT20 Umbria "
FLAGS "D"
END
CURRENCY FM_REGIVA(19) 18
BEGIN
PROMPT 51 17 "Imposte "
PROMPT 51 17 " "
FLAGS "D"
END
@ -420,22 +435,22 @@ END
CURRENCY FM_REGIVA(20) 18
BEGIN
PROMPT 51 18 "Imposte "
PROMPT 51 18 " "
FLAGS "D"
END
CURRENCY FM_REGIMP(21) 18
BEGIN
PROMPT 1 19 "VT21 Veneto Op.Imponibili "
PROMPT 1 19 "VT21 Veneto "
FLAGS "D"
END
CURRENCY FM_REGIVA(21) 18
BEGIN
PROMPT 51 19 "Imposte "
PROMPT 51 19 " "
FLAGS "D"
END
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>
<font face="Courier New" size="10" />
<section type="Head">
<field type="Stringa" align="center" width="80" height="2" pattern="1">
<font face="Courier New" bold="1" size="14" />
<section type="Head" height="3">
<field type="Stringa" align="center" width="68" height="2" pattern="1">
<font face="Courier New" bold="1" size="12" />
<source>"Lista clienti privati per quadro IVA VT anno " + #ANNO</source>
</field>
<field border="3" y="2" type="Linea" width="80" 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" />
<field border="3" y="2" type="Linea" width="68" height="0" pattern="1" />
</section>
<section type="Head" level="1" />
<section type="Head" level="2" height="3">
@ -32,7 +28,7 @@
</field>
<field border="1" y="2" type="Linea" width="40" height="0" pattern="1" />
</section>
<section type="Head" level="3" height="3">
<section type="Head" level="3" height="4">
<groupby>23.CODCF</groupby>
<prescript description="H3 PRESCRIPT">0 "F3.101" !
0 "F3.102" !</prescript>
@ -48,10 +44,14 @@
<source>20.RAGSOC</source>
</field>
<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 type="Body" />
<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>
</field>
<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">
<source>RMOVIVA.CODIVA</source>
</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>
<prescript description="B1.0 PRESCRIPT">MESSAGE ADD,F3.102</prescript>
</field>
</section>
<section type="Foot" />
<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="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>
</field>
</section>
@ -79,8 +81,8 @@
<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>
</field>
<field x="49" y="1" type="Valuta" align="right" width="18" id="202" pattern="1" text="###.###.###,@@">
<prescript description="F2.202 PRESCRIPT">MESSAGE ADD,F1.202</prescript>
<field x="50" y="1" type="Valuta" align="right" width="18" id="202" pattern="1" text="###.###.###,@@">
<prescript description="F2.202 PRESCRIPT">MESSAGE ADD,F1.302</prescript>
</field>
</section>
<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="###.###.###,@@">
<prescript description="F3.101 PRESCRIPT">MESSAGE ADD,F2.201</prescript>
</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>
</field>
</section>

View File

@ -1,8 +1,8 @@
[MAIN]
DECSEP = ,
FIELDSEP =
RECORDSEP = \n
RECORDSIZE = 0
RECORDSEP =
RECORDSIZE = 250
SKIPLINES = 0
TYPEFIELD = -1
TYPELEN = -1
@ -388,7 +388,6 @@ POSITION(3) = 15
LENGTH(3) = 80
FIELD(3)=19->DESCR
[OPZIONI]
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++)
{
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";
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
{
if (_parentset != NULL && strncmp(name, "#PARENT.", 8) == 0)
return _parentset->get(name+8);
// Se mi accorgo che posso e voglio accedere ad un campo del recordset padre
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);
return var != NULL ? *var : NULL_VARIANT;

View File

@ -1807,9 +1807,7 @@ bool TReport_book::add(TReport& rep, bool progind)
column_delta = dx;
last_body_height = dy;
}
print_subsections(b);
if (column_delta > 0)
_delta.x += column_delta;
else
@ -1818,6 +1816,9 @@ bool TReport_book::add(TReport& rep, bool progind)
_delta.y += dy;
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;
short y = 0;
bool first = true;
for (const char* i = ids.get(0); i; i = ids.get())
{
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(c.get());
if (e->dlg() == f->dlg())
if (e->dlg() == f->dlg() || first)
{
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);
// GUY was Here, but it's Koki fault!
long codcli = 0;
if (is_production_article(art))
codcli = doc.get_long(DOC_CODCF);
const long codcli = is_production_article(art) ? doc.get_long(DOC_CODCF) : 0;
TPrice prz(riga.prezzo(TRUE,TRUE));
TQuantita q(art, um, qta);
@ -2003,7 +2001,7 @@ bool TMatResPlanning::load_gross_requirements()
if (line == NULL)
{
// 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_final_product();
}
@ -2087,12 +2085,12 @@ bool TMatResPlanning::explode_articles()
const TRiga_esplosione& riga = (const TRiga_esplosione&)boom[i];
const TCodice_articolo& art = riga.articolo();
const TRectype& articolo=cache().get(LF_ANAMAG,art);
bool add=TRUE;
bool add=true;
if (!articolo.get(ANAMAG_CODART).blank())
{
const char reorder_type=articolo.get_char(ANAMAG_RIORDINO);
if (reorder_type!='F' && reorder_type!=' ' && reorder_type!='\0') // e' a riordino
add=FALSE;
add=false;
}
if (add)
{
@ -2100,23 +2098,22 @@ bool TMatResPlanning::explode_articles()
TString8 mag = line.codmagdep();
TString8 imp = line.codimp();
TString8 lin = line.codlin();
_artinfo.art2magimpline(art, mag, imp, lin);
// GUY was here with Koki
long codcli = 0;
if (is_production_article(art))
codcli = line.codclifor();
const long codcli = is_production_article(art) ? line.codclifor() : 0L;
_artinfo.art2magimpline(art, mag, imp, lin);
TMRP_line* son = _articles.find(art, riga.giacenza(),mag, "", imp, lin, codcli);
TMRP_line* son = _articles.find(art, riga.giacenza(),mag, EMPTY_STRING, imp, lin, codcli);
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));
}
line.add_son(riga.val(), son);
if (riga.livello() > line.explosion_depth())
line.set_explosion_depth(riga.livello());
const int son_depth = line.explosion_depth()+1;
if (son_depth > son->explosion_depth())
son->set_explosion_depth(son_depth);
line.add_son(riga.val(), son);
distinta.describe(art);
}
}
@ -2223,11 +2220,14 @@ bool TMatResPlanning::load_planned_orders()
const TString8 mag = riga.get(RDOC_CODMAG);
const TString8 imp = riga.get(RDOC_IMPIANTO);
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)
{
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));
}
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
real sm,tmpreal = -curr_article.net_requirement(bucket);
#ifdef DBG
TString80 s;
#endif
if (tmpreal >= ZERO) // Devo calcolare il fabbisogno netto
{
tmpreal = curr_article.on_hand(bucket);
@ -2715,7 +2712,7 @@ bool TMatResPlanning::print_risalita(const TMRP_line & line, const TDate &date,
TPrinter& pr = printer();
TDate todate(date);
TDate fromdate = todate;
const bool isbuck0 = (round_date(fromdate) == 0);
const bool isbuck0 = round_date(fromdate) == 0;
round_date(todate,TRUE);
int rows=0;
//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)
{
return 0;
return 0;
// Guy: a cosa serve ????????????????????????????????????????????????
TPrinter& pr = printer();
TToken_string dockey;
@ -2886,7 +2885,7 @@ return 0;
TMRP_time doc_time;
line.lead_time(bucket,doc_time, TRUE);
TPrintrow r;
//const TString & codnum = docref->codnumdoc();
TMRP_docref * docref = NULL;
TMRP_docrefs * gr_refs= line.record(bucket).requirements_refs();
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)
{
const TMRP_docref& docref = *refs->get_ref_ptr(0);
rdoc = &docref.get_rdoc();
for (int j = refs->last(); j >= 0; j--)
{
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;
}
@ -3169,6 +3180,10 @@ bool TMatResPlanning::emit_orders()
TMRP_line* line = find_risalita_line(riga); // ... cerco la riga di risalita
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--)
{
const TRectype* dardoc = NULL;
@ -3186,8 +3201,7 @@ bool TMatResPlanning::emit_orders()
}
if (dardoc != NULL)
{
rdoc.set_original_rdoc_key(*dardoc); // Imposto DAPROVV, DAANNO, DACODNUM, DANDOC, DAIDRIGA
rdoc.put(RDOC_QTAGG5, line->explosion_depth()); // Memorizzo la profondita' di esplosione
rdoc.set_original_rdoc_key(*dardoc); // Imposto DAPROVV, DAANNO, DACODNUM, DANDOC, DAIDRIGA
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:
Package=<5>

View File

@ -147,10 +147,20 @@ SOURCE=..\ps\ps0872200a.uml
!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"
# Begin Custom Build - Compiling mask $(InputPath)
TargetDir=\u\D_02_01\exed
# Begin Custom Build - Compiling mask $(InputPath)...
TargetDir=\U\Luca\D_02_01\exed
InputPath=..\ps\ps0872200a.uml
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->add(LF_ANAG, "TIPOA=TIPOA|CODANAGR=CODANAGR");
_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, "COM=STATORES+COMRF", 1, LF_ANAG, 200+LF_COMUNI);
_firmrel->add(LF_COMUNI, "STATO=STATORES|COM=COMRES", 1, LF_ANAG, 100+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);
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
_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_COMUNI, "COM=STATORES+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=COMRES", 1, LF_ANAG, 100+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.read();

View File

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

View File

@ -1134,11 +1134,8 @@ protected:
TImporto get_cg_imp(int n);
// Setta l'importo della riga n
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:
// 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;}
bool movement_ok() ;
void add_row_re(int i);
@ -1187,7 +1184,6 @@ class TContabilizzazione : public TElaborazione // velib04b
*_rfa, // tabella raggruppamenti fiscali
*_cve, // tabella categorie di vendita
*_val, // tabella valute estere
*_tri, // tabella tipi di riga
*_prs, // tabella prestazioni
*_spp, // tabella spese
*_caa, // tabella categorie acquisto articoli
@ -1261,6 +1257,8 @@ protected:
bool sc_enabled() const ;
// Ritorna TRUE se il modulo INTRA e' abilitato (verifica anche la causale del documento corrente)
bool in_enabled() const ;
// Controlla se il tipo riga esiste
bool valid_row_type(const char* rt) const;
public:
// Cambia lo stato del documento
error_type change_doc_status(TDocumento&);

View File

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

View File

@ -903,7 +903,6 @@ TContabilizzazione::TContabilizzazione(const char* cod)
_saldi = new TLocalisamfile(LF_SALDI);
_cpg = new TTable("%CPG");
_tri = new TTable("%TRI");
_val = new TTable("%VAL");
_prs = new TTable("PRS");
_spp = new TTable("SPP");
@ -942,7 +941,6 @@ TContabilizzazione::TContabilizzazione(const TRectype& rec)
_saldi = new TLocalisamfile(LF_SALDI);
_cpg = new TTable("%CPG");
_tri = new TTable("%TRI");
_val = new TTable("%VAL");
_prs = new TTable("PRS");
_spp = new TTable("SPP");
@ -968,7 +966,6 @@ TContabilizzazione::~TContabilizzazione()
{
delete _clifo;
delete _cpg;
delete _tri;
delete _val;
delete _gmc;
delete _rfa;
@ -1374,6 +1371,10 @@ error_type TContabilizzazione::compile_head_mov(TDocumento& doc)
mov_rec.put(MOV_TIPO,tipocf);
mov_rec.put(MOV_CODCF,codcf);
mov_rec.put(MOV_OCFPI,occas);
TString4 codvali;
real cambioi;
if (_caus->iva() == iva_acquisti)
{
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();
mov_rec.put(MOV_RITFIS, imposta.get_num());
TString4 codvali(_clifo->curr().get("VALINTRA"));
real cambioi = cambio;
codvali = _clifo->curr().get("VALINTRA");
cambioi = cambio;
if (codvali.not_empty() && codvali != codval)
{
mov_rec.put(MOV_CODVALI,codvali);
@ -1399,25 +1400,37 @@ error_type TContabilizzazione::compile_head_mov(TDocumento& doc)
}
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_CAMBIOI,cambio);
mov_rec.put(MOV_CAMBIOI,cambioi);
codvali = codval;
}
TCurrency corrval(totdocval);
TCurrency corrlire(corrval);
corrval.change_value(codvali, cambioi);
corrlire.change_to_firm_val();
if (::is_true_value(codvali))
{
mov_rec.put(MOV_CORRLIRE,corrlire.get_num());
mov_rec.put(MOV_CORRLIRE,corrlire.get_num());
if (_caus->valintra())
mov_rec.put(MOV_CORRVALUTA,corrval.get_num());
}
else
mov_rec.put(MOV_CORRLIRE,corrval.get_num());
TDate dataintra = data_reg;
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);
}
}
@ -1428,20 +1441,32 @@ error_type TContabilizzazione::compile_head_mov(TDocumento& doc)
TCurrency corrval(totdocval);
TCurrency corrlire(corrval);
mov_rec.put(MOV_CODVALI,codval);
mov_rec.put(MOV_CAMBIOI,cambio);
corrlire.change_to_firm_val();
if (::is_true_value(codval))
codvali = codval;
cambioi = cambio;
if (_caus->valintra() && codvali.empty())
{
mov_rec.put(MOV_CORRLIRE,corrlire.get_num());
mov_rec.put(MOV_CORRVALUTA,corrval.get_num());
codvali = TCurrency::get_firm_val();
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;
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);
}
}
@ -2192,6 +2217,12 @@ error_type TContabilizzazione::create_total_doc_row(TDocumento& doc)
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)
// 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
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);
_tri->put("CODTAB",tiporiga);
if (_tri->read() == NOERR) // controlla l'esistenza della riga
if (valid_row_type(tiporiga)) // controlla l'esistenza della riga
{
TBill conto;
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;
char tipo_rit = '\0';
if (!riga_omaggio && r.imponibile().is_zero())
continue;
if (spesa)
tipo_rit = r.spesa().tipo_ritenuta();
@ -2380,8 +2413,7 @@ error_type TContabilizzazione::compile_rows_mov_re(TDocumento& doc)
{
TRiga_documento & r = doc[i];
tiporiga = r.get(RDOC_TIPORIGA);
_tri->put("CODTAB",tiporiga);
if (_tri->read() == NOERR) // controlla l'esistenza della riga
if (valid_row_type(tiporiga)) // controlla l'esistenza della riga
{
TBill conto;
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)
{
_error = intra_rett_error;
display_error(doc);
_error = no_error;
return _error; // Non posso fare movimenti ma devo fare rettifiche
}
}
@ -3498,6 +3533,7 @@ error_type TContabilizzazione::write_intra(TDocumento& doc)
}
else
intra.put("CODVAL", codvali);
intra.put("CAMBIO", cambioi);
if (intra.write() == _isreinsert) // Succede con le ricontabilizzazioni
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);
break;
case intra_rett_error:
msg.format("Si è verificato un errore nella scrittura del movimento intracomunitario relativamente 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);
msg.format("La data di competenza INTRA del movimento intracomunitario relativo al documento %s/%ld"
"appartiene ad un periodo il cui riepilogo deve essere rettificato manualmente",(const char*)numerazione,numero);
break;
case cont_seq_error:
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 )
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 )
@ -1694,6 +1696,8 @@ key_left( XI_TEXT * text, XinEvent * ep )
if ( 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;
}
}
@ -1715,6 +1719,8 @@ key_right( XI_TEXT * text, XinEvent * ep )
{
if ( text->ip2 < ( int ) strlen( text->string ) )
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 )
@ -1737,6 +1743,9 @@ key_right( XI_TEXT * text, XinEvent * ep )
if ( text->ip2 < ( int ) strlen( text->string ) )
new_ip = text->ip2 + 1;
else
ep->v.character.ch = '\t'; // AGA was here
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();
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;
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)
{
strcpy(dirp->path, path);
return TRUE;
if (dirp != NULL)
strcpy(dirp->path, path);
return dirp != NULL;
}
void xvt_fsys_get_default_dir(DIRECTORY *dirp)
{
if (_startup_dir == NULL)
{
_startup_dir = new wxString;
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);
_startup_dir = new wxString(::wxGetCwd());
xvt_fsys_convert_str_to_dir(*_startup_dir, dirp);
}
BOOLEAN xvt_fsys_get_dir(DIRECTORY *dirp)