Patch level :10.0 72

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :riportate le modifiche 5.0 alla 1072


git-svn-id: svn://10.65.10.50/trunk@16827 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2008-06-27 11:12:19 +00:00
parent 2aed525877
commit e9caf569dd
11 changed files with 332 additions and 157 deletions

View File

@ -424,6 +424,7 @@ END
BOOLEAN F_CMS_APPOGGIO
BEGIN
PROMPT 2 6 "Commessa di appoggio"
FIELD APPOGGIO
END
DATE F_CMS_DATAGARA

View File

@ -134,7 +134,7 @@ protected:
bool pareggia_commessa(TAnal_mov& anal_mov);
public:
bool cappotta_movimento(TAnal_mov& anal_mov);
bool elabora_movimento(TAnal_mov& anal_mov, const bool esplodi);
TRib_movanal_app(){}
};
@ -248,21 +248,23 @@ bool TRib_movanal_app::pareggia_commessa(TAnal_mov& anal_mov)
return ho_cambiato_qualchecosa;
}
bool TRib_movanal_app::cappotta_movimento(TAnal_mov& anal_mov)
bool TRib_movanal_app::elabora_movimento(TAnal_mov& anal_mov, const bool esplodi)
{
TRecord_array& input_rows = anal_mov.body(); //record_array con le righe del mov_anal (INPUT)
bool do_rewrite = false;
//Per prima cosa prende le righe del movimento su RMOVANA e le ricompatta..
TRecord_array compact_rows = input_rows; //record array con le righe compattate da creare con la..
compact_rows.destroy_rows(); //..implode_rows(); intanto le azzera per sicurezza
if (esplodi)
{
//Imploditore
ca_implode_rows(input_rows, compact_rows);
//..poi lo riesplode in tutte le righe che possono nascere secondo le regole delle ripartizioni!
//..poi lo riesplode in tutte le righe che possono nascere secondo le regole delle ripartizioni!
TRecord_array output_rows = input_rows; //crea il record_array di output come copia dell'INPUT..
output_rows.destroy_rows(); //..e poi lo pulisce
bool do_rewrite = false;
//Esploditore
if (explode_rows(compact_rows, output_rows, anal_mov.get_int(MOVANA_ANNOES), anal_mov.get_char(MOVANA_TIPOMOV)))
{
@ -277,17 +279,36 @@ bool TRib_movanal_app::cappotta_movimento(TAnal_mov& anal_mov)
anal_mov.put(MOVANA_BLOCCATO, 'X'); //..mette bloccato = X nella testata del movimento
do_rewrite = true;
}
}
else
{
//Imploditore
do_rewrite = ca_implode_rows(input_rows, compact_rows);
if (do_rewrite)
input_rows = compact_rows; // rimette i record compattati negli originali
}
return do_rewrite; //se ha elaborato delle righe e/o e' una elaborazione definitiva, riscrive la..
}
static bool cappotta_callback(const TRelation& rel, void* pJolly)
static bool ripartisci_callback(const TRelation& rel, void* pJolly)
{
TRib_movanal_app& app = *(TRib_movanal_app*)pJolly;
const long numreg = rel.curr().get_long(MOVANA_NUMREG);
TAnal_mov anal_mov(numreg);
//se va tutto bene riscrive l'intero movimento analitico con conseguente ricalcolo saldi
if (app.cappotta_movimento(anal_mov))
if (app.elabora_movimento(anal_mov, true))
anal_mov.rewrite(rel.lfile());
return true;
}
static bool compatta_callback(const TRelation& rel, void* pJolly)
{
TRib_movanal_app& app = *(TRib_movanal_app*)pJolly;
const long numreg = rel.curr().get_long(MOVANA_NUMREG);
TAnal_mov anal_mov(numreg);
//se va tutto bene riscrive l'intero movimento analitico con conseguente ricalcolo saldi
if (app.elabora_movimento(anal_mov, false))
anal_mov.rewrite(rel.lfile());
return true;
@ -298,9 +319,6 @@ void TRib_movanal_app::main_loop()
TRib_movanal_msk mask;
while (mask.run() == K_ENTER)
{
// avvisa l'utente scapestrato che se fa una elaborazione definitiva
// blocchera' i movimenti che processa
_definitivo = mask.get_bool(F_DEFINITIVO);
//deve scandire il file MOVANA con chiave 2 (per data e numero di registrazione)
TRelation rel_movana(LF_MOVANA);
TRectype darec(LF_MOVANA), arec(LF_MOVANA);
@ -315,8 +333,19 @@ void TRib_movanal_app::main_loop()
if (items > 0)
{
bool run = yesno_box(FR("Si desidera elaborare %ld movimenti?"), items);
//e' una compattazione?
const bool compattazione = mask.get_bool(F_COMPATTA);
//se e' un ripartizione potrebbe essere definitiva!
if (!compattazione)
{
// avvisa l'utente scapestrato che se fa una ripartizione definitiva
// blocchera' i movimenti che processa e non potra' piu' tornare indietro
_definitivo = mask.get_bool(F_DEFINITIVO);
if (run && _definitivo)
run = yesno_box(TR("E' stata selezionata l'elaborazione definitiva\nSi desidera proseguire?"));
}
//Presa la decisione si parte! Tenetevi forte...
if (run)
{
// Riempie la lista della causali dei movimenti da pareggiare
@ -336,8 +365,11 @@ void TRib_movanal_app::main_loop()
}
}
cur_movana.scan(cappotta_callback, this, TR("Ripartizione movimenti..."));
}
if (compattazione)
cur_movana.scan(compatta_callback, this, TR("Compattamento movimenti..."));
else
cur_movana.scan(ripartisci_callback, this, TR("Ripartizione movimenti..."));
} //if(run)...
}
else
message_box(TR("Non ci sono movimenti da elaborare nel periodo selezionato"));

View File

@ -4,6 +4,7 @@
#define F_DATAFIN 202
#define F_DEFINITIVO 203
#define F_ANNO 204
#define F_COMPATTA 205
#define F_RIGHE 300
//Devono valere un numero piu' alto di S_CDC12 (che attualmente e' 112) senno' non nascono in fila nello..
//..sheet

View File

@ -33,9 +33,9 @@ END
ENDPAGE
PAGE "Ripartizione movimenti" 0 0 0 2
PAGE "Ripartizione\Compattamento movimenti" 0 0 0 2
GROUPBOX DLG_NULL 78 4
GROUPBOX DLG_NULL 78 8
BEGIN
PROMPT 1 1 "@bParametri di elaborazione"
END
@ -56,11 +56,6 @@ BEGIN
ADD NONE
END
BOOLEAN F_DEFINITIVO
BEGIN
PROMPT 42 2 "Blocca movimenti elaborati"
END
DATA F_DATAINI
BEGIN
PROMPT 2 3 "Dalla data "
@ -73,14 +68,29 @@ BEGIN
CHECKTYPE REQUIRED
END
TEXT -1
RADIOBUTTON F_COMPATTA 1 40
BEGIN
PROMPT 1 5 "@bCommesse/CdC da pareggiare"
PROMPT 2 4 "Elaborazione richiesta"
ITEM " |Ripartizione"
MESSAGE ENABLE,F_DEFINITIVO
ITEM "X|Compattamento"
MESSAGE CLEAR,F_DEFINITIVO
FLAGS "Z"
END
SPREADSHEET F_RIGHE -1 -4
BOOLEAN F_DEFINITIVO
BEGIN
PROMPT 1 6 ""
PROMPT 2 7 "Blocca movimenti elaborati (DEFINITIVO e vale solo per ripartizione)"
END
TEXT -1
BEGIN
PROMPT 1 9 "@bCommesse/CdC da pareggiare"
END
SPREADSHEET F_RIGHE -1 -1
BEGIN
PROMPT 1 10 ""
ITEM "Cms 1"
ITEM "Cms 2"
ITEM "Cms 3"

View File

@ -105,18 +105,19 @@
<field border="2" x="1" y="5.5" type="Linea" width="169" height="0" pattern="1" />
</section>
<section type="Head" level="2" height="1.5" page_break="1">
<groupby>LEVEL &#3C; 2</groupby>
<groupby>(LEVEL&#3C;2)||(LEVEL=4)</groupby>
<font italic="1" face="Arial Narrow" bold="1" size="8" />
<field x="1" type="Array" bg_color="#C0C0C0" width="22">
<field x="1" type="Array" bg_color="#C0C0C0" width="25">
<source>LEVEL</source>
<list>
<li Value="Commesse terminate nel" Code="0" />
<li Value="Commesse terminate nel" Code="1" />
<li Value="Commesse che terminano oltre il" Code="2" />
<li Value="Commesse che terminano oltre il" Code="3" />
<li Value="Commesse di supporto del" Code="4" />
</list>
</field>
<field x="23" type="Numero" align="right" bg_color="#C0C0C0" width="6">
<field x="26" type="Numero" align="right" bg_color="#C0C0C0" width="6">
<source>ANNO</source>
</field>
<field border="1" x="1" y="1.25" type="Linea" width="169" height="0" pattern="1" />
@ -124,7 +125,7 @@
<source>LEVEL</source>
<postscript description="H2.101 POSTSCRIPT">MESSAGE COPY,F2.101</postscript>
</field>
<field x="29" type="Numero" hidden="1" align="right" width="4" id="102" pattern="1">
<field x="32" type="Numero" hidden="1" align="right" width="4" id="102" pattern="1">
<source>ANNO</source>
<postscript description="H2.102 POSTSCRIPT">MESSAGE COPY,F2.102</postscript>
</field>
@ -132,13 +133,14 @@
<section type="Head" level="3" height="1.5">
<groupby>LEVEL</groupby>
<font italic="1" face="Arial Narrow" bold="1" size="8" />
<field x="3" type="Array" bg_color="#C0C0C0" width="40" pattern="1">
<field x="3" type="Array" bg_color="#C0C0C0" width="45" pattern="1">
<source>LEVEL</source>
<list>
<li Value="Commesse avviate in esercizi precedenti" Code="0" />
<li Value="Commesse avviate nell'esercizio selezionato" Code="1" />
<li Value="Commesse avviate in esercizi precedenti" Code="2" />
<li Value="Commesse avviate nell'esercizio selezionato" Code="3" />
<li Value="Commesse di supporto dell'esercizio selezionato" Code="4" />
</list>
</field>
<field border="1" x="2" y="1.25" type="Linea" width="169" height="0" pattern="1" />
@ -245,14 +247,20 @@ THEN
<section type="Foot" level="1" height="3">
<font italic="1" face="Arial Narrow" bold="1" size="8" />
<field border="2" x="1" y="0.75" type="Linea" width="169" height="0" pattern="1" />
<field x="1" y="1.5" type="Testo" fg_color="#FFFFFF" bg_color="#000000" width="25" height="1.5" text="TOTALI GENERALI " />
<field x="1" y="1.5" type="Testo" fg_color="#FFFFFF" bg_color="#000000" width="36" text="TOTALI GENERALI " />
<field x="60.5" y="1.5" type="Valuta" align="right" width="13" id="69" pattern="1" text="###.###.###,@@" />
<field x="74" y="1.5" type="Valuta" align="right" width="13" id="169" pattern="1" text="###.###.###,@@" />
</section>
<section type="Foot" level="2" height="2.5">
<section type="Foot" level="2" height="4.5">
<font italic="1" face="Courier New" bold="1" size="8" />
<prescript description="F2 PRESCRIPT">#LEVEL @
4 = IF
"90@" ENABLE
ELSE
"90@" DISABLE
THEN</prescript>
<field border="1" x="1" y="0.5" type="Linea" width="169" height="0" pattern="1" />
<field x="1" y="1" type="Array" bg_color="#C0C0C0" width="27">
<field x="1" y="1" type="Array" bg_color="#C0C0C0" width="30">
<font italic="1" face="Arial Narrow" bold="1" size="8" />
<source>H2.101</source>
<list>
@ -260,44 +268,62 @@ THEN
<li Value="TOTALI Commesse terminate nel" Code="1" />
<li Value="TOTALI Commesse che terminano oltre il" Code="2" />
<li Value="TOTALI Commesse che terminano oltre il" Code="3" />
<li Value="TOTALI Commesse di supporto del" Code="4" />
</list>
</field>
<field x="28" y="1" type="Numero" align="right" bg_color="#C0C0C0" width="6">
<field x="31" y="1" type="Numero" align="right" bg_color="#C0C0C0" width="6">
<font italic="1" face="Arial Narrow" bold="1" size="8" />
<source>H2.102</source>
</field>
<field border="1" x="1" y="3.25" deactivated="1" type="Linea" width="169" height="0" pattern="1">
<groups>90</groups>
</field>
<field x="1" y="3.5" deactivated="1" type="Testo" fg_color="#FFFFFF" bg_color="#808080" width="30" text="TOTALI commesse normali relative al">
<font italic="1" face="Arial Narrow" bold="1" size="8" />
<groups>90</groups>
</field>
<field x="31" y="3.5" type="Numero" align="right" fg_color="#FFFFFF" bg_color="#808080" width="6">
<font italic="1" face="Arial Narrow" bold="1" size="8" />
<groups>90</groups>
<source>H2.102</source>
</field>
<field x="60.5" y="1" type="Valuta" align="right" width="13" id="69" pattern="1" text="###.###.###,@@">
<font italic="1" face="Arial Narrow" bold="1" size="8" />
<postscript description="F2.69 POSTSCRIPT">MESSAGE ADD,F1.69</postscript>
<postscript description="F2.69 POSTSCRIPT">MESSAGE ADD,F1.69
</postscript>
</field>
<field y="1" type="Numero" hidden="1" align="right" width="1" id="101" pattern="1" />
<field x="34" y="1" type="Numero" hidden="1" align="right" width="4" id="102" pattern="1">
<field x="37" y="1" type="Numero" hidden="1" align="right" width="4" id="102" pattern="1">
<postscript description="F2.102 POSTSCRIPT">MESSAGE COPY,F2.101</postscript>
</field>
<field x="74" y="1" type="Valuta" align="right" width="13" id="169" pattern="1" text="###.###.###,@@">
<font italic="1" face="Arial Narrow" bold="1" size="8" />
<postscript description="F2.169 POSTSCRIPT">MESSAGE ADD,F1.169
MESSAGE RESET,169</postscript>
MESSAGE RESET,169
</postscript>
</field>
</section>
<section type="Foot" level="3" height="2">
<font italic="1" face="Arial Narrow" bold="1" size="8" />
<field border="1" x="2" y="0.25" type="Linea" width="169" height="0" pattern="1" />
<field x="1" y="0.5" type="Array" width="33" pattern="1">
<field x="1" y="0.5" type="Array" width="40" pattern="1">
<source>H3.101</source>
<list>
<li Value="TOTALI Commesse avviate in esercizi precedenti" Code="0" />
<li Value="TOTALI Commesse avviate nell'esercizio selezionato" Code="1" />
<li Value="TOTALI Commesse avviate in esercizi precedenti" Code="2" />
<li Value="TOTALI Commesse avviate nell'esercizio selezionato" Code="3" />
<li Value="TOTALI Commesse di supporto dell'esercizio selezionato" Code="4" />
</list>
</field>
<field x="60.5" y="0.5" type="Valuta" align="right" width="13" id="69" pattern="1" text="###.###.###,@@">
<postscript description="F3.69 POSTSCRIPT">MESSAGE ADD,F2.69</postscript>
<postscript description="F3.69 POSTSCRIPT">MESSAGE ADD,F2.69
MESSAGE ADD,F2.269</postscript>
</field>
<field y="0.5" type="Numero" hidden="1" align="right" width="1" id="101" pattern="1" />
<field x="74" y="0.5" type="Valuta" align="right" width="13" id="169" pattern="1" text="###.###.###,@@">
<postscript description="F3.169 POSTSCRIPT">MESSAGE ADD,F2.169
MESSAGE ADD,F2.369
MESSAGE RESET,169</postscript>
</field>
</section>

View File

@ -93,15 +93,16 @@
</field>
</section>
<section type="Head" level="2" height="1.5">
<groupby>LEVEL &#3C; 2</groupby>
<groupby>(LEVEL&#3C;2)||(LEVEL=4)</groupby>
<font italic="1" face="Arial Narrow" size="8" />
<field x="1" type="Array" bg_color="#C0C0C0" width="22">
<field x="1" type="Array" bg_color="#C0C0C0" width="25">
<source>LEVEL</source>
<list>
<li Value="Commesse terminate nel" Code="0" />
<li Value="Commesse terminate nel" Code="1" />
<li Value="Commesse che terminano oltre il" Code="2" />
<li Value="Commesse che terminano oltre il" Code="3" />
<li Value="Commesse di supporto del" Code="4" />
</list>
</field>
<field x="23" type="Numero" align="right" bg_color="#C0C0C0" width="6">
@ -119,13 +120,14 @@
<section type="Head" level="3" hidden="1" height="1.5">
<groupby>LEVEL</groupby>
<font italic="1" face="Arial Narrow" size="8" />
<field x="3" type="Array" bg_color="#C0C0C0" width="40" pattern="1">
<field x="3" type="Array" bg_color="#C0C0C0" width="45" pattern="1">
<source>LEVEL</source>
<list>
<li Value="Commesse avviate in esercizi precedenti" Code="0" />
<li Value="Commesse avviate nell'esercizio selezionato" Code="1" />
<li Value="Commesse avviate in esercizi precedenti" Code="2" />
<li Value="Commesse avviate nell'esercizio selezionato" Code="3" />
<li Value="Commesse di supporto dell'esercizio selezionato" Code="4" />
</list>
</field>
<field border="1" x="2" y="1.25" type="Linea" width="169" height="0" pattern="1" />
@ -147,8 +149,7 @@
</field>
<field x="48.5" type="Valuta" align="right" width="13" id="169" pattern="1" text="###.###.###,@@">
<source>#RICAVI-#COSTI</source>
<postscript description="B1.169 POSTSCRIPT">MESSAGE ADD,F4.169
MESSAGE ADD,F3.169</postscript>
<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" />
@ -163,11 +164,14 @@ ELSE
-
100
*
0
ROUND
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="65.5" type="Testo" align="center" width="2" id="171" pattern="1" text="%" />
</section>
<section type="Foot">
<field border="1" x="1" y="0.25" type="Linea" width="169" height="0" pattern="1" />
@ -182,19 +186,25 @@ THEN
<section type="Foot" level="1" height="3">
<font italic="1" face="Arial Narrow" bold="1" size="8" />
<field border="2" x="1" y="0.5" type="Linea" width="169" height="0" pattern="1" />
<field x="1" y="1" type="Testo" valign="center" fg_color="#FFFFFF" bg_color="#000000" width="20" height="1.5" id="1" text="TOTALI GENERALI " />
<field x="21" y="1" type="Stringa" valign="center" fg_color="#FFFFFF" bg_color="#400040" width="15" height="1.5" id="2">
<field x="1" y="1" type="Testo" valign="center" fg_color="#FFFFFF" bg_color="#000000" width="20" id="1" text="TOTALI GENERALI " />
<field x="21" y="1" type="Stringa" valign="center" fg_color="#FFFFFF" bg_color="#400040" width="15" id="2">
<font italic="1" face="Arial" bold="1" size="8" />
</field>
<field x="36" y="1.25" type="Valuta" align="right" width="13" id="69" pattern="1" text="###.###.###,@@" />
<field x="49.5" y="1.25" type="Valuta" align="right" width="13" id="169" pattern="1" text="###.###.###,@@">
<field x="36" y="1" type="Valuta" align="right" width="13" id="69" pattern="1" text="###.###.###,@@" />
<field x="49.5" y="1" type="Valuta" align="right" width="13" id="169" pattern="1" text="###.###.###,@@">
<postscript description="F1.169 POSTSCRIPT">MESSAGE RESET,169</postscript>
</field>
</section>
<section type="Foot" level="2" height="3.5">
<section type="Foot" level="2" height="4.5">
<font italic="1" face="Courier New" size="8" />
<prescript description="F2 PRESCRIPT">#LEVEL @
&#09;4 = IF
&#09; "90@" ENABLE
&#09;ELSE
&#09; "90@" DISABLE
THEN</prescript>
<field border="1" x="1" y="0.5" type="Linea" width="169" height="0" pattern="1" />
<field x="1" y="1" type="Array" bg_color="#C0C0C0" width="28">
<field x="1" y="1" type="Array" bg_color="#C0C0C0" width="30">
<font italic="1" face="Arial Narrow" size="8" />
<source>H2.101</source>
<list>
@ -202,12 +212,25 @@ THEN
<li Value="TOTALI Commesse terminate nel" Code="1" />
<li Value="TOTALI Commesse che terminano oltre il" Code="2" />
<li Value="TOTALI Commesse che terminano oltre il" Code="3" />
<li Value="TOTALI Commesse di supporto del" Code="4" />
</list>
</field>
<field x="29" y="1" type="Numero" align="right" bg_color="#C0C0C0" width="6">
<font italic="1" face="Arial Narrow" size="8" />
<source>H2.102</source>
</field>
<field border="1" x="1" y="3.25" deactivated="1" type="Linea" width="169" height="0" pattern="1">
<groups>90</groups>
</field>
<field x="1" y="3.5" deactivated="1" type="Testo" fg_color="#FFFFFF" bg_color="#808080" width="30" text="TOTALI commesse normali relative al">
<font italic="1" face="Arial Narrow" bold="1" size="8" />
<groups>90</groups>
</field>
<field x="31" y="3.5" type="Numero" align="right" fg_color="#FFFFFF" bg_color="#808080" width="6">
<font italic="1" face="Arial Narrow" bold="1" size="8" />
<groups>90</groups>
<source>H2.102</source>
</field>
<field x="39" y="1" type="Valuta" align="right" width="13" id="69" pattern="1" text="###.###.###,@@">
<font italic="1" face="Arial Narrow" bold="1" size="8" />
<postscript description="F2.69 POSTSCRIPT">MESSAGE ADD,F1.69</postscript>
@ -231,15 +254,20 @@ MESSAGE RESET,169</postscript>
<li Value="Commesse avviate nell'esercizio selezionato" Code="1" />
<li Value="Commesse avviate in esercizi precedenti" Code="2" />
<li Value="Commesse avviate nell'esercizio selezionato" Code="3" />
<li Value="TOTALI Commesse di supporto dell'esercizio selezionato" Code="4" />
</list>
</field>
<field x="42" y="0.5" type="Valuta" align="right" width="13" id="69" pattern="1" text="###.###.###,@@">
<postscript description="F3.69 POSTSCRIPT">MESSAGE ADD,F2.69</postscript>
<postscript description="F3.69 POSTSCRIPT">MESSAGE ADD,F2.69
MESSAGE ADD,F2.269
</postscript>
</field>
<field y="0.5" type="Numero" hidden="1" align="right" width="1" id="101" pattern="1" />
<field x="55.5" y="0.5" type="Valuta" align="right" width="13" id="169" pattern="1" text="###.###.###,@@">
<postscript description="F3.169 POSTSCRIPT">MESSAGE ADD,F2.169
MESSAGE RESET,169</postscript>
MESSAGE ADD,F2.369
MESSAGE RESET,169
</postscript>
</field>
</section>
<sql>USE SALDANA</sql>

View File

@ -93,15 +93,16 @@
</field>
</section>
<section type="Head" level="2" height="1.5">
<groupby>LEVEL &#3C; 2</groupby>
<groupby>(LEVEL&#3C;2)||(LEVEL=4)</groupby>
<font italic="1" face="Arial Narrow" size="8" />
<field x="1" type="Array" bg_color="#C0C0C0" width="22">
<field x="1" type="Array" bg_color="#C0C0C0" width="25">
<source>LEVEL</source>
<list>
<li Value="Commesse terminate nel" Code="0" />
<li Value="Commesse terminate nel" Code="1" />
<li Value="Commesse che terminano oltre il" Code="2" />
<li Value="Commesse che terminano oltre il" Code="3" />
<li Value="Commesse di supporto del" Code="4" />
</list>
</field>
<field x="23" type="Numero" align="right" bg_color="#C0C0C0" width="6">
@ -119,13 +120,14 @@
<section type="Head" level="3" hidden="1" height="1.5">
<groupby>LEVEL</groupby>
<font italic="1" face="Arial Narrow" size="8" />
<field x="3" type="Array" bg_color="#C0C0C0" width="40" pattern="1">
<field x="3" type="Array" bg_color="#C0C0C0" width="45" pattern="1">
<source>LEVEL</source>
<list>
<li Value="Commesse avviate in esercizi precedenti" Code="0" />
<li Value="Commesse avviate nell'esercizio selezionato" Code="1" />
<li Value="Commesse avviate in esercizi precedenti" Code="2" />
<li Value="Commesse avviate nell'esercizio selezionato" Code="3" />
<li Value="Commesse di supporto dell'esercizio selezionato" Code="4" />
</list>
</field>
<field border="1" x="2" y="1.25" type="Linea" width="169" height="0" pattern="1" />
@ -138,6 +140,7 @@
<section type="Body" level="1" hidden="1">
<prescript description="B1 PRESCRIPT">1 #H4.3 \ incrementa il contatore per il numero di righe di cdc
+!</prescript>
<field x="65.5" type="Testo" align="center" width="2" pattern="1" text="%" />
<field x="1" type="Stringa" width="20" id="1" pattern="1">
<source>CODCMS</source>
</field>
@ -146,8 +149,7 @@
</field>
<field x="48.5" type="Valuta" align="right" width="13" id="169" pattern="1" text="###.###.###,@@">
<source>#RICAVI-#COSTI</source>
<postscript description="B1.169 POSTSCRIPT">MESSAGE ADD,F4.169
MESSAGE ADD,F3.169</postscript>
<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" />
@ -184,19 +186,25 @@ THEN
<section type="Foot" level="1" height="3">
<font italic="1" face="Arial Narrow" bold="1" size="8" />
<field border="2" x="1" y="0.5" type="Linea" width="169" height="0" pattern="1" />
<field x="1" y="1" type="Testo" valign="center" fg_color="#FFFFFF" bg_color="#000000" width="20" height="1.5" id="1" text="TOTALI GENERALI " />
<field x="21" y="1" type="Stringa" valign="center" fg_color="#FFFFFF" bg_color="#400040" width="15" height="1.5" id="2">
<field x="1" y="1" type="Testo" valign="center" fg_color="#FFFFFF" bg_color="#000000" width="20" id="1" text="TOTALI GENERALI " />
<field x="21" y="1" type="Stringa" valign="center" fg_color="#FFFFFF" bg_color="#400040" width="15" id="2">
<font italic="1" face="Arial" bold="1" size="8" />
</field>
<field x="46.5" y="1.25" type="Valuta" align="right" width="13" id="69" pattern="1" text="###.###.###,@@" />
<field x="60" y="1.25" type="Valuta" align="right" width="13" id="169" pattern="1" text="###.###.###,@@">
<field x="46.5" y="1" type="Valuta" align="right" width="13" id="69" pattern="1" text="###.###.###,@@" />
<field x="60" y="1" type="Valuta" align="right" width="13" id="169" pattern="1" text="###.###.###,@@">
<postscript description="F1.169 POSTSCRIPT">MESSAGE RESET,169</postscript>
</field>
</section>
<section type="Foot" level="2" height="3.5">
<section type="Foot" level="2" height="4.5">
<font italic="1" face="Courier New" size="8" />
<prescript description="F2 PRESCRIPT">#LEVEL @
&#09;4 = IF
&#09; "90@" ENABLE
&#09;ELSE
&#09; "90@" DISABLE
THEN</prescript>
<field border="1" x="1" y="0.5" type="Linea" width="169" height="0" pattern="1" />
<field x="1" y="1" type="Array" bg_color="#C0C0C0" width="28">
<field x="1" y="1" type="Array" bg_color="#C0C0C0" width="30">
<font italic="1" face="Arial Narrow" size="8" />
<source>H2.101</source>
<list>
@ -204,12 +212,25 @@ THEN
<li Value="TOTALI Commesse terminate nel" Code="1" />
<li Value="TOTALI Commesse che terminano oltre il" Code="2" />
<li Value="TOTALI Commesse che terminano oltre il" Code="3" />
<li Value="TOTALI Commesse di supporto del" Code="4" />
</list>
</field>
<field x="29" y="1" type="Numero" align="right" bg_color="#C0C0C0" width="6">
<font italic="1" face="Arial Narrow" size="8" />
<source>H2.102</source>
</field>
<field border="1" x="1" y="3.25" deactivated="1" type="Linea" width="169" height="0" pattern="1">
<groups>90</groups>
</field>
<field x="1" y="3.5" deactivated="1" type="Testo" fg_color="#FFFFFF" bg_color="#808080" width="30" text="TOTALI commesse normali relative al">
<font italic="1" face="Arial Narrow" bold="1" size="8" />
<groups>90</groups>
</field>
<field x="31" y="3.5" type="Numero" align="right" fg_color="#FFFFFF" bg_color="#808080" width="6">
<font italic="1" face="Arial Narrow" bold="1" size="8" />
<groups>90</groups>
<source>H2.102</source>
</field>
<field x="46.5" y="1" type="Valuta" align="right" width="13" id="69" pattern="1" text="###.###.###,@@">
<font italic="1" face="Arial Narrow" bold="1" size="8" />
<postscript description="F2.69 POSTSCRIPT">MESSAGE ADD,F1.69</postscript>
@ -233,15 +254,20 @@ MESSAGE RESET,169</postscript>
<li Value="Commesse avviate nell'esercizio selezionato" Code="1" />
<li Value="Commesse avviate in esercizi precedenti" Code="2" />
<li Value="Commesse avviate nell'esercizio selezionato" Code="3" />
<li Value="TOTALI Commesse di supporto dell'esercizio selezionato" Code="4" />
</list>
</field>
<field x="46.5" y="0.5" type="Valuta" align="right" width="13" id="69" pattern="1" text="###.###.###,@@">
<postscript description="F3.69 POSTSCRIPT">MESSAGE ADD,F2.69</postscript>
<postscript description="F3.69 POSTSCRIPT">MESSAGE ADD,F2.69
MESSAGE ADD,F2.269
</postscript>
</field>
<field y="0.5" type="Numero" hidden="1" align="right" width="1" id="101" pattern="1" />
<field x="60" y="0.5" type="Valuta" align="right" width="13" id="169" pattern="1" text="###.###.###,@@">
<postscript description="F3.169 POSTSCRIPT">MESSAGE ADD,F2.169
MESSAGE RESET,169</postscript>
MESSAGE ADD,F2.369
MESSAGE RESET,169
</postscript>
</field>
</section>
<sql>USE SALDANA</sql>

View File

@ -343,7 +343,26 @@ void TCRPA_report::offset_and_fill_columns(TReport_section& rep_sect, const TStr
new_field->set_field("");
TString ps = "MESSAGE ADD,F";
ps << (rep_sect.level() - 1) << '.' << new_field->id();
//somma al totale speciale delle commesse normali
if (rep_sect.level() == 3)
ps << "\nMESSAGE ADD,F2." << (new_field->id() + 200);
new_field->set_postscript(ps);
//Gestione totali delle commesse normali (Adolf!)
//Alla fine di tutte le 4 sezioni di commesse normali ci va il totale delle medesime; questo..
//..totale va stampato prima della sezione con le commesse di appoggio
if (rep_sect.level() == 2)
{
//sub_new_field e' il campo SOTTO il new_field che appare solo nei totali di sezione 2 (F2)
TReport_field* sub_new_field = (TReport_field*)new_field->dup();
rep_sect.add(sub_new_field);
sub_new_field->offset(TPoint(0, 300));
sub_new_field->set_id(new_field->id() + 200);
sub_new_field->set_groups("90");
sub_new_field->set_postscript("");
}
}
break;
default:
@ -361,6 +380,17 @@ void TCRPA_report::offset_and_fill_columns(TReport_section& rep_sect, const TStr
x0 = campo.get_rect().right();
}
//l'ultimo campo (margine di contribuzione) va generato a mano nel caso dei totali delle commesse normali!!
if (rep_sect.type() == 'F' && rep_sect.level() == 2)
{
TReport_field* sub_new_field_margine = (TReport_field*)rep_sect.find_field(169)->dup();
rep_sect.add(sub_new_field_margine);
sub_new_field_margine->offset(TPoint(0, 300));
sub_new_field_margine->set_id(369);
sub_new_field_margine->set_groups("90");
sub_new_field_margine->set_postscript("");
}
//ordina i campi davvero sul report per id
rep_sect.sort();
}
@ -802,7 +832,7 @@ void TPrint_saldana_recordset::create_lines_to_print(const TString& query)
esc.code2range(_anno, datainiesc, datafinesc);
//deve procedere al confronto tra le date inizio-fine esercizio e quelle inizio-fine commessa..
//..per spostare il record in esame nell'array corretto
TAssoc_array cms[4];
TAssoc_array cms[NUM_LEVELS];
TISAM_recordset saldana(query);
@ -846,9 +876,16 @@ void TPrint_saldana_recordset::create_lines_to_print(const TString& query)
TImporto saldo, saldop;
const int flag = estrai_saldi(saldana, indbil, saldo, saldop, false);
//se ci sono saldi/saldop != 0...
// if (flag != 0)
{
//Le commesse vengono suddivise in varie sezioni in base alle loro date di inizio/fine/proroga..
//..e al fatto che possono essere di appoggio (Adolf rikiesten!) secondo lo schema:
// _ 0 terminano nell'anno selezionato / iniziate nel passato
// _ 1 terminano nell'anno selezionato / iniziate nell'anno selezionato
// _ 2 terminano nel futuro / iniziate nel passato
// _ 3 terminano nel futuro / iniziate nell'anno selezionato
// _ 4 di appoggio / terminano nell'anno selezionato / iniziate nell'anno selezionato
// (indice 1 ma di appoggio in pratica)
//e' inutile considerare le commesse terminate prima dell'esercizio selezionato..
//..cioe' nel passato oppure che iniziano nel futuro!
if (datafine >= datainiesc && dataini <= datafinesc)
@ -862,6 +899,15 @@ void TPrint_saldana_recordset::create_lines_to_print(const TString& query)
if (dataini >= datainiesc)
indice++;
//controlla se la commessa e' di appoggio e di indice 1 (inizia e finisce nell'anno selezionato)
//in questo caso la commessa ha indice 4 e va nella sezione distaccata in fondo al report (Adolf!)
if (indice == 1)
{
const bool cms_appoggio = rec_commesse.get_bool(COMMESSE_APPOGGIO);
if (cms_appoggio)
indice = 4;
}
//ci sono filtri o raggruppamenti per fase o centro di costo?
const TString& fase = saldana.get(SALDANA_FASE).as_string();
const TString& cdc = saldana.get(SALDANA_COSTO).as_string();
@ -915,9 +961,9 @@ void TPrint_saldana_recordset::create_lines_to_print(const TString& query)
}
} //if (datafine >= datainiesc &&...
} //if (flag!=0..
//RIGHE COMMESSA SPECIALE: esistono solo se la commessa e' iniziata prima dell'anno
//RIGHE COMMESSA DETRAZIONE: esistono solo se la commessa e' iniziata prima dell'anno
//selezionato e se ha a che fare con quello in corso,quindi l'indice e' 0 o 2
if (datafine >= datainiesc && dataini < datainiesc)
{
@ -951,9 +997,9 @@ void TPrint_saldana_recordset::create_lines_to_print(const TString& query)
} //if (indbil == 3 ||...
} //for(bool ok=saldana.move_first()..
//merging dei 4 arrayini cms nell'arrayone _righe da mandare in stampa
//merging dei 5 arrayini cms nell'arrayone _righe da mandare in stampa
_righe.destroy();
for (int i = 0; i < 4; i++)
for (int i = 0; i < 5; i++)
{
TAssoc_array& a = cms[i];
TObject* cazzo_cms = NULL;
@ -1005,7 +1051,6 @@ void TPrint_saldana_recordset::requery()
query << " SELECT COSTO=\"" << _cdc << "\"";
}
}
break;
}

View File

@ -56,10 +56,12 @@ public:
///////////////////////////////////////////////////////////////
class TPrint_saldana_recordset : public TRecordset
{
enum { NUM_LEVELS = 5 };
TRecnotype _curr;
TArray _righe;
TArray _colonne;
TAssoc_array _totali[4];
TAssoc_array _totali[NUM_LEVELS];
TIndbil_cache _indicatori;
TEsercizi_contabili _esc;

View File

@ -717,7 +717,7 @@ bool TSimple_anal_msk::on_field_event(TOperable_field& o, TField_event e, long j
switch (o.dlg())
{
case F_TREE:
if (e == fe_button)
if (e == fe_modify)
{
if (edit_mode() && !dirty())
set_mode(MODE_QUERY);
@ -1836,8 +1836,9 @@ void ca_copia_campo(const TRectype& src, const char* campo_src, TRectype& dst, c
dst.put(campo_dst, valore);
}
void ca_implode_rows(const TRecord_array& input_rows, TRecord_array& compact_rows)
bool ca_implode_rows(const TRecord_array& input_rows, TRecord_array& compact_rows)
{
bool implosion_done = false;
const int last_row = input_rows.last_row();
for (int r = input_rows.first_row(); r > 0 && r <= last_row; r = input_rows.succ_row(r))
{
@ -1869,6 +1870,7 @@ void ca_implode_rows(const TRecord_array& input_rows, TRecord_array& compact_row
newrec->put(RMOVANA_NUMRIG, compact_rows.rows() + 1);
compact_rows.add_row(newrec);
}
implosion_done = true; //ha imploso almeno 1 riga!!!
}
else
{
@ -1890,4 +1892,6 @@ void ca_implode_rows(const TRecord_array& input_rows, TRecord_array& compact_row
ca_taglia_campo(compact_rec, RMOVANA_CODCONTORI, compact_rec, RMOVANA_CODCONTO);
}
}
return implosion_done;
}

View File

@ -204,7 +204,7 @@ public:
};
// metodi di implosione movimenti ripartiti!! Serve nel ribaltamento movimenti, stampa rendiconto...
void ca_implode_rows(const TRecord_array& input_rows, TRecord_array& compact_rows);
bool ca_implode_rows(const TRecord_array& input_rows, TRecord_array& compact_rows);
bool ca_ori_present(const TRectype& rec);
bool ca_can_merge_rows(const TRectype& compact_rec, const TRectype& rec);
void ca_taglia_campo(TRectype& src, const char* campo_src, TRectype& dst, const char* campo_dst);