Patch level :

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
Sistemato problema nella stampa ca3800. Se si specificava, in una stampa dettagliata, una fase (o un cdc), la prima riga della stampa presentava, anzichè un record corretto, campi a caso del file install.ini!!!


git-svn-id: svn://10.65.10.50/trunk@20278 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2010-03-25 13:56:18 +00:00
parent e2483a4b57
commit 8bcdabcba9
5 changed files with 76 additions and 62 deletions

View File

@ -207,25 +207,29 @@ MESSAGE ADD,F3.69</postscript>
<postscript description="B1.169 POSTSCRIPT">MESSAGE ADD,F4.169
MESSAGE ADD,F3.169</postscript>
</field>
<field x="99" type="Numero" align="right" width="4" id="170" pattern="1">
<field x="99" type="Numero" align="right" width="4" id="170" pattern="1" text="####">
<font italic="1" face="Arial Narrow" size="8" />
<prescript description="B1.170 PRESCRIPT">#RICAVI @
EMPTY= IF
0
0
ELSE
1
#COSTI @
#RICAVI @
&#2F;
-
100
*
0
ROUND
1
#COSTI @
#RICAVI @
&#2F;
-
100
*
0
ROUND
DUP
-999 &#3C; IF
DROP -999
THEN
THEN
#THIS !</prescript>
</field>
<field x="103" type="Testo" align="center" width="2" id="171" pattern="1" text="%" />
<field x="102.5" type="Testo" align="center" width="2" id="171" pattern="1" text="%" />
<field type="Numero" hidden="1" align="right" width="1" id="200" pattern="1">
<prescript description="B1.200 PRESCRIPT">#THIS @
1

View File

@ -140,26 +140,30 @@
<source>#RICAVI-#COSTI</source>
<postscript description="B1.169 POSTSCRIPT">MESSAGE ADD,F3.169</postscript>
</field>
<field x="61.5" type="Numero" align="right" width="4" id="170" pattern="1">
<font italic="1" face="Arial Narrow" size="8" />
<prescript description="B1.170 PRESCRIPT">#RICAVI @
EMPTY= IF
0
ELSE
1
#COSTI @
#RICAVI @
&#2F;
-
100
*
DUP \ duplica la % non arrotondata
#F3.170 \ e incrementa il campo nel footer3
+!
0 ROUND \ e alla fine arrotonda quello sul body
THEN
#THIS !</prescript>
</field>
<field x="61.5" type="Numero" align="right" width="4" id="170" pattern="1" text="####">
<font italic="1" face="Arial Narrow" size="8" />
<prescript description="B1.170 PRESCRIPT">
#RICAVI @
EMPTY= IF
0
ELSE
1
#COSTI @
#RICAVI @
&#2F;
-
100
*
0
ROUND
DUP
-999 &#3C; IF
DROP -999
THEN
THEN
#THIS !
</prescript>
</field>
<field x="65.5" type="Testo" align="center" width="2" id="171" pattern="1" text="%" />
</section>
<section type="Foot">

View File

@ -140,26 +140,30 @@
<source>#RICAVI-#COSTI</source>
<postscript description="B1.169 POSTSCRIPT">MESSAGE ADD,F3.169</postscript>
</field>
<field x="61.5" type="Numero" align="right" width="4" id="170" pattern="1">
<font italic="1" face="Arial Narrow" size="8" />
<prescript description="B1.170 PRESCRIPT">#RICAVI @
EMPTY= IF
0
ELSE
1
#COSTI @
#RICAVI @
&#2F;
-
100
*
DUP \ duplica la % non arrotondata
#F3.170 \ e incrementa il campo nel footer3
+!
0 ROUND \ e alla fine arrotonda quello sul body
THEN
#THIS !</prescript>
</field>
<field x="61.5" type="Numero" align="right" width="4" id="170" pattern="1" text="####">
<font italic="1" face="Arial Narrow" size="8" />
<prescript description="B1.170 PRESCRIPT">
#RICAVI @
EMPTY= IF
0
ELSE
1
#COSTI @
#RICAVI @
&#2F;
-
100
*
0
ROUND
DUP
-999 &#3C; IF
DROP -999
THEN
THEN
#THIS !
</prescript>
</field>
<field x="65.5" type="Testo" align="center" width="2" id="171" pattern="1" text="%" />
</section>
<section type="Foot">

View File

@ -504,10 +504,10 @@ int TPrint_saldana_recordset::ricava_sezione_di_stampa(const TRectype& rec_comme
return indice;
}
TString TPrint_saldana_recordset::ricava_chiave_cdc_fase(const TString& codcms, const TString& fase, const TString& cdc) const
void TPrint_saldana_recordset::ricava_chiave_cdc_fase(const TString& codcms, const TString& fase, const TString& cdc, TString& chiave) const
{
//ci sono filtri o raggruppamenti per fase o centro di costo?
TString chiave = codcms;
chiave = codcms;
//selezione fasi solo su bilancio commessa (_tipo=8)
if (_tipo == 8 && (_tipostampa >= 1 && _tipostampa <= 3))
{
@ -528,7 +528,6 @@ TString TPrint_saldana_recordset::ricava_chiave_cdc_fase(const TString& codcms,
chiave << '|' << cdc; //dettaglia x cdc
}
}
return chiave;
}
@ -648,7 +647,7 @@ void TPrint_saldana_recordset::parse_saldana(TAssoc_array* cms, const TDate& dat
//estrae i dati di commessa e le date relative;le date servono successivamente per stabilire...
//..le sezioni in cui compariranno le commesse nella stampa
const TString& codcms = saldana.get(SALDANA_COMMESSA);
const TString80 codcms = saldana.get(SALDANA_COMMESSA);
const TRectype& rec_commesse = cache().get(LF_COMMESSE, codcms);
//indice: indica la sezione di report in cui apparariranno i valori!
const int indice = ricava_sezione_di_stampa(rec_commesse, datainiesc, datafinesc);
@ -661,10 +660,11 @@ void TPrint_saldana_recordset::parse_saldana(TAssoc_array* cms, const TDate& dat
if (indice >= 0)
{
//ci sono filtri o raggruppamenti per fase o centro di costo?
const TString& fase = saldana.get(SALDANA_FASE);
const TString& cdc = saldana.get(SALDANA_COSTO);
const TString80 fase = saldana.get(SALDANA_FASE);
const TString80 cdc = saldana.get(SALDANA_COSTO);
//ricava la chiave completa per l'assoc_array comprendendo eventuali fasi e/o cdc
TString chiave = ricava_chiave_cdc_fase(codcms, fase, cdc);
TString80 chiave;
ricava_chiave_cdc_fase(codcms, fase, cdc, chiave);
//riempie le righe degli array da mandare poi in stampa
//dapprima le righe normali..
@ -802,7 +802,8 @@ void TPrint_saldana_recordset::parse_saldana_futuri()
const TString& fase = saldana.get(SALDANA_FASE);
const TString& cdc = saldana.get(SALDANA_COSTO);
//ricava la chiave completa per l'assoc_array comprendendo eventuali fasi e/o cdc
TString chiave = ricava_chiave_cdc_fase(codcms, fase, cdc);
TString80 chiave;
ricava_chiave_cdc_fase(codcms, fase, cdc, chiave);
//aggiorna totali della commessa (importi per codcms senza tener conto di fase o cdc)
TAssoc_array& riga_tot = get_row(_totali[indice], codcms, indice, codcms, EMPTY_STRING, EMPTY_STRING,
@ -837,7 +838,8 @@ void TPrint_saldana_recordset::elabora_rmovana(TAssoc_array* cms, const TDate& d
const TString& cdc = rmovana.get(RMOVANA_CODCCOSTO);
//se la riga è risultata buona ricava la chiave completa per l'assoc_array comprendendo eventuali..
//..fasi e/o cdc
TString chiave = ricava_chiave_cdc_fase(codcms, fase, cdc);
TString80 chiave;
ricava_chiave_cdc_fase(codcms, fase, cdc, chiave);
//calcola la "durata complessiva" della riga, ovvero l'intervallo di tempo per cui essa risulta valida
//la data fine ci fa sudare un pò

View File

@ -115,7 +115,7 @@ protected:
real calcola_avanzamento_tempo() const;
const TDate calcola_min_datacomp(const TDate& datainiesc, const TDate& datafinesc) const;
int ricava_sezione_di_stampa(const TRectype& rec_commesse, const TDate& datainiesc, const TDate& datafinesc) const;
TString ricava_chiave_cdc_fase(const TString& codcms, const TString& fase, const TString& cdc) const;
void ricava_chiave_cdc_fase(const TString& codcms, const TString& fase, const TString& cdc, TString& chiave) const;
int numerazioni_documenti(TString_array& num_doc, TString_array& tip_doc, const int tipo) const;
int numerazioni_ordini(TString_array& num_ordini, TString_array& tip_ordini) const;
int numerazioni_fatture(TString_array& num_fatture, TString_array& tip_fatture) const;