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 <postscript description="B1.169 POSTSCRIPT">MESSAGE ADD,F4.169
MESSAGE ADD,F3.169</postscript> MESSAGE ADD,F3.169</postscript>
</field> </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" /> <font italic="1" face="Arial Narrow" size="8" />
<prescript description="B1.170 PRESCRIPT">#RICAVI @ <prescript description="B1.170 PRESCRIPT">#RICAVI @
EMPTY= IF EMPTY= IF
0 0
ELSE ELSE
1 1
#COSTI @ #COSTI @
#RICAVI @ #RICAVI @
&#2F; &#2F;
- -
100 100
* *
0 0
ROUND ROUND
DUP
-999 &#3C; IF
DROP -999
THEN
THEN THEN
#THIS !</prescript> #THIS !</prescript>
</field> </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"> <field type="Numero" hidden="1" align="right" width="1" id="200" pattern="1">
<prescript description="B1.200 PRESCRIPT">#THIS @ <prescript description="B1.200 PRESCRIPT">#THIS @
1 1

View File

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

View File

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

View File

@ -504,10 +504,10 @@ int TPrint_saldana_recordset::ricava_sezione_di_stampa(const TRectype& rec_comme
return indice; 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? //ci sono filtri o raggruppamenti per fase o centro di costo?
TString chiave = codcms; chiave = codcms;
//selezione fasi solo su bilancio commessa (_tipo=8) //selezione fasi solo su bilancio commessa (_tipo=8)
if (_tipo == 8 && (_tipostampa >= 1 && _tipostampa <= 3)) 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 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... //estrae i dati di commessa e le date relative;le date servono successivamente per stabilire...
//..le sezioni in cui compariranno le commesse nella stampa //..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); const TRectype& rec_commesse = cache().get(LF_COMMESSE, codcms);
//indice: indica la sezione di report in cui apparariranno i valori! //indice: indica la sezione di report in cui apparariranno i valori!
const int indice = ricava_sezione_di_stampa(rec_commesse, datainiesc, datafinesc); 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) if (indice >= 0)
{ {
//ci sono filtri o raggruppamenti per fase o centro di costo? //ci sono filtri o raggruppamenti per fase o centro di costo?
const TString& fase = saldana.get(SALDANA_FASE); const TString80 fase = saldana.get(SALDANA_FASE);
const TString& cdc = saldana.get(SALDANA_COSTO); const TString80 cdc = saldana.get(SALDANA_COSTO);
//ricava la chiave completa per l'assoc_array comprendendo eventuali fasi e/o cdc //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 //riempie le righe degli array da mandare poi in stampa
//dapprima le righe normali.. //dapprima le righe normali..
@ -802,7 +802,8 @@ void TPrint_saldana_recordset::parse_saldana_futuri()
const TString& fase = saldana.get(SALDANA_FASE); const TString& fase = saldana.get(SALDANA_FASE);
const TString& cdc = saldana.get(SALDANA_COSTO); const TString& cdc = saldana.get(SALDANA_COSTO);
//ricava la chiave completa per l'assoc_array comprendendo eventuali fasi e/o cdc //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) //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, 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); const TString& cdc = rmovana.get(RMOVANA_CODCCOSTO);
//se la riga è risultata buona ricava la chiave completa per l'assoc_array comprendendo eventuali.. //se la riga è risultata buona ricava la chiave completa per l'assoc_array comprendendo eventuali..
//..fasi e/o cdc //..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 //calcola la "durata complessiva" della riga, ovvero l'intervallo di tempo per cui essa risulta valida
//la data fine ci fa sudare un pò //la data fine ci fa sudare un pò

View File

@ -115,7 +115,7 @@ protected:
real calcola_avanzamento_tempo() const; real calcola_avanzamento_tempo() const;
const TDate calcola_min_datacomp(const TDate& datainiesc, const TDate& datafinesc) 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; 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_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_ordini(TString_array& num_ordini, TString_array& tip_ordini) const;
int numerazioni_fatture(TString_array& num_fatture, TString_array& tip_fatture) const; int numerazioni_fatture(TString_array& num_fatture, TString_array& tip_fatture) const;