Patch level :10.0

Files correlati     :
Ricompilazione Demo : [ ]
Commento            :
cespiti per analitica in corso d'opera


git-svn-id: svn://10.65.10.50/trunk@20489 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
luca 2010-05-25 08:49:51 +00:00
parent 9e0c3d1683
commit 963544bc88
13 changed files with 608 additions and 243 deletions

View File

@ -1,6 +1,8 @@
#include <applicat.h> #include <applicat.h>
#include <automask.h> #include <automask.h>
#include <defmask.h> #include <defmask.h>
#include <dongle.h>
#include <modaut.h>
#include <progind.h> #include <progind.h>
#include <recarray.h> #include <recarray.h>
#include <reprint.h> #include <reprint.h>
@ -91,7 +93,14 @@ bool TStampa_sintetica_mask::on_field_event(TOperable_field& o, TField_event e,
} }
TStampa_sintetica_mask::TStampa_sintetica_mask() : TAutomask("ce3900"), _preview(false) TStampa_sintetica_mask::TStampa_sintetica_mask() : TAutomask("ce3900"), _preview(false)
{} {
const bool has_ca = dongle().active(CAAUT);
//se la chiave ha CA mostra i campi gruppo 2 (analitica)..
if (has_ca)
show(-2);
else
hide(-2);
}
/////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////
// RECORDSET // RECORDSET
@ -109,14 +118,19 @@ static const TStampa_sintetica_recordset* myself = NULL;
//metodo per caricare i valori nel recordset dalla maschera...fighissimo!! //metodo per caricare i valori nel recordset dalla maschera...fighissimo!!
void TStampa_sintetica_recordset::set_filter(const TStampa_sintetica_mask& msk) void TStampa_sintetica_recordset::set_filter(const TStampa_sintetica_mask& msk)
{ {
//parametri per costruzione query
const bool exclude_aliens = msk.get_bool(F_EXCLUDE_ALIENS);
const bool anal = dongle().active(CAAUT);
TString query = "USE CESPI\nSELECT ";
query << "(ANSI(DTCOMP)<=#DATAFINE)"; //" << msk.get_date(F_DATAFINE).date2ansi() << ")";
//cespiti alienati esclusi?
if (exclude_aliens)
query << "&&((DTALIEN='')||(ANSI(DTALIEN)>=#DATAINIZIO))"; // << msk.get_date(F_DATAINIZIO).date2ansi() << "))";
//categorie
const TString& dacat = msk.get(F_FROM_CAT); const TString& dacat = msk.get(F_FROM_CAT);
const TString& acat = msk.get(F_TO_CAT); const TString& acat = msk.get(F_TO_CAT);
TString query = "USE CESPI\nSELECT ";
query << "(ANSI(DTCOMP)<=" << msk.get_date(F_DATAFINE).date2ansi() << ")";
//cespiti alienati esclusi?
if (msk.get_bool(F_EXCLUDE_ALIENS))
query << "&&((DTALIEN='')||(ANSI(DTALIEN)>=" << msk.get_date(F_DATAINIZIO).date2ansi() << "))";
if (dacat.full() || acat.full()) if (dacat.full() || acat.full())
{ {
if (dacat == acat) if (dacat == acat)
@ -125,8 +139,38 @@ void TStampa_sintetica_recordset::set_filter(const TStampa_sintetica_mask& msk)
query << "&&(BETWEEN(CODCAT," << dacat << ',' << acat << "))"; query << "&&(BETWEEN(CODCAT," << dacat << ',' << acat << "))";
} }
query << "\nBY CODCAT|CODIMP|CODLOC|IDCESPITE"; //query standard senza raggruppamenti //parte analitica
set(query); //setta la nuova query nel report (che avrebbe solo USE CESPI) if (anal)
{
query << "&&(BETWEEN(SALCECMS.CODCDC,#DACODCDC,#ACODCDC))";
query << "&&(BETWEEN(SALCECMS.CODCMS,#DACODCMS,#ACODCMS))";
query << "&&(BETWEEN(SALCECMS.CODFASE,#DACODFASE,#ACODFASE))";
query << "\nJOIN SALCECMS INTO IDCESPITE=IDCESPITE";
}
//ordinamenti
query << "\nBY CODCAT|CODIMP|CODLOC|IDCESPITE";
//setta la nuova complicata query nel report (che avrebbe solo USE CESPI)
set(query);
set_var("#DATAFINE", msk.get_date(F_DATAFINE).date2ansi());
if (exclude_aliens)
set_var("#DATAINIZIO", msk.get_date(F_DATAINIZIO).date2ansi());
if (anal)
{
const TString& codcdc = msk.get(F_CODCDC);
set_var("#DACODCDC", codcdc);
set_var("#ACODCDC", codcdc);
const TString& codcms = msk.get(F_CODCMS);
set_var("#DACODCMS", codcms);
set_var("#ACODCMS", codcms);
const TString& codfase = msk.get(F_CODFASE);
set_var("#DACODFASE", codfase);
set_var("#ACODFASE", codfase);
}
} }
//////////////////////////////////////////////////////// ////////////////////////////////////////////////////////
@ -137,6 +181,7 @@ class TStampa_sintetica_rep : public TReport
int _anno; int _anno;
int _tpamm; int _tpamm;
int _group_codimp, _group_codloc; int _group_codimp, _group_codloc;
TString _codcdc, _codcms, _codfase;
TCespite _cespite; TCespite _cespite;
protected: protected:
@ -154,6 +199,10 @@ void TStampa_sintetica_rep::set_filter(const TStampa_sintetica_mask& msk)
_group_codimp = msk.get_bool(F_GROUP_CODIMP); _group_codimp = msk.get_bool(F_GROUP_CODIMP);
_group_codloc = msk.get_bool(F_GROUP_CODLOC); _group_codloc = msk.get_bool(F_GROUP_CODLOC);
_codcdc = msk.get(F_CODCDC);
_codcms = msk.get(F_CODCMS);
_codfase = msk.get(F_CODFASE);
((TStampa_sintetica_recordset*) recordset())->set_filter(msk); ((TStampa_sintetica_recordset*) recordset())->set_filter(msk);
} }
@ -317,6 +366,8 @@ bool TStampa_sintetica_rep::get_usr_val(const TString& name, TVariant& var) cons
var = _cespite.res_amm(); var = _cespite.res_amm();
return true; return true;
} }
//campi di testata del report
if (name == "#SITUAZIONE") //tipo situazione da stampare in testata if (name == "#SITUAZIONE") //tipo situazione da stampare in testata
{ {
var.set(_tpamm); var.set(_tpamm);
@ -327,7 +378,21 @@ bool TStampa_sintetica_rep::get_usr_val(const TString& name, TVariant& var) cons
var.set(_anno); var.set(_anno);
return true; return true;
} }
if (name == "#CODCDC")
{
var.set(_codcdc);
return true;
}
if (name == "#CODCMS")
{
var.set(_codcms);
return true;
}
if (name == "#CODFASE")
{
var.set(_codfase);
return true;
}
return TReport::get_usr_val(name, var); return TReport::get_usr_val(name, var);
} }

View File

@ -21,4 +21,11 @@
#define F_GROUP_CODLOC 118 #define F_GROUP_CODLOC 118
#define F_EXCLUDE_ALIENS 119 #define F_EXCLUDE_ALIENS 119
#define F_REPORT 120 #define F_CODCMS 120
#define F_DESCMS 121
#define F_CODFASE 122
#define F_DESFASE 123
#define F_CODCDC 124
#define F_DESCDC 125
#define F_REPORT 126

View File

@ -42,7 +42,6 @@ BEGIN
OUTPUT F_DATAINIZIO 105@->D0 OUTPUT F_DATAINIZIO 105@->D0
OUTPUT F_DATAFINE 105@->D1 OUTPUT F_DATAFINE 105@->D1
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
FIELD CODTAB[1,4]
END END
DATE F_DATAINIZIO DATE F_DATAINIZIO
@ -71,7 +70,6 @@ BEGIN
OUTPUT F_GRUPPO CODTAB[5,6] OUTPUT F_GRUPPO CODTAB[5,6]
OUTPUT F_D_GRUPPO 106@->S0 OUTPUT F_D_GRUPPO 106@->S0
CHECKTYPE NORMAL CHECKTYPE NORMAL
FIELD CODTAB[5,6]
END END
STRING F_SPECIE 4 STRING F_SPECIE 4
@ -89,7 +87,6 @@ BEGIN
OUTPUT F_SPECIE CODTAB[7,10] OUTPUT F_SPECIE CODTAB[7,10]
OUTPUT F_D_SPECIE 107@->S0 OUTPUT F_D_SPECIE 107@->S0
CHECKTYPE NORMAL CHECKTYPE NORMAL
FIELD CODTAB[7,10]
END END
STRING F_D_GRUPPO 60 55 STRING F_D_GRUPPO 60 55
@ -147,7 +144,7 @@ BEGIN
FLAGS "Z" FLAGS "Z"
END END
GROUPBOX DLG_NULL 78 4 GROUPBOX DLG_NULL 39 3
BEGIN BEGIN
PROMPT 1 13 "@bRaggruppamenti" PROMPT 1 13 "@bRaggruppamenti"
END END
@ -161,12 +158,93 @@ END
BOOLEAN F_GROUP_CODLOC BOOLEAN F_GROUP_CODLOC
BEGIN BEGIN
PROMPT 2 15 "Per localita' " PROMPT 20 14 "Per localita' "
END
GROUPBOX DLG_NULL 38 3
BEGIN
PROMPT 41 13 "@bEsclusioni"
END END
BOOLEAN F_EXCLUDE_ALIENS BOOLEAN F_EXCLUDE_ALIENS
BEGIN BEGIN
PROMPT 2 17 "Escludere i cespiti alienati" PROMPT 42 14 "Escludere i cespiti alienati"
END
GROUPBOX DLG_NULL 78 5
BEGIN
PROMPT 1 16 "@bAnalitica"
GROUP 2
END
STRING F_CODCMS 20
BEGIN
PROMPT 2 17 "Commessa "
USE LF_COMMESSE
INPUT CODCMS F_CODCMS
DISPLAY "Codice@20" CODCMS
DISPLAY "Descrizione@50" DESCRIZ
OUTPUT F_CODCMS CODCMS
OUTPUT F_DESCMS DESCRIZ
CHECKTYPE NORMAL
GROUP 2
END
STRING F_DESCMS 50 39
BEGIN
PROMPT 36 17 ""
USE LF_COMMESSE KEY 2
INPUT DESCRIZ F_DESCMS
DISPLAY "Descrizione@50" DESCRIZ
DISPLAY "Codice@20" CODCMS
COPY OUTPUT F_CODCMS
CHECKTYPE NORMAL
GROUP 2
END
STRING F_CODFASE 10
BEGIN
PROMPT 2 18 "Fase "
USE LF_FASI
INPUT CODCMSFAS F_CODCMS SELECT
INPUT CODFASE F_CODFASE
DISPLAY "Fase@10" CODFASE
DISPLAY "Descrizione@50" DESCRIZ
OUTPUT F_CODFASE CODFASE
OUTPUT F_DESFASE DESCRIZ
CHECKTYPE NORMAL
GROUP 2
END
STRING F_DESFASE 50 39
BEGIN
PROMPT 36 18 ""
FLAGS "D"
GROUP 2
END
STRING F_CODCDC 20
BEGIN
PROMPT 2 19 "C. costo "
USE LF_CDC
INPUT CODCOSTO F_CODCDC
DISPLAY "Codice@20" CODCOSTO
DISPLAY "Descrizione@50" DESCRIZ
OUTPUT F_CODCDC CODCOSTO
OUTPUT F_DESCDC DESCRIZ
CHECKTYPE NORMAL
GROUP 2
END
STRING F_DESCDC 50 39
BEGIN
PROMPT 36 19 ""
USE LF_CDC KEY 2
INPUT DESCRIZ F_DESCDC
DISPLAY "Descrizione@50" DESCRIZ
DISPLAY "Codice@20" CODCOSTO
COPY OUTPUT F_CODCDC
GROUP 2
END END
ENDPAGE ENDPAGE

View File

@ -1,30 +1,31 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<report name="ce3900a" orientation="2" lpi="6"> <report name="ce3900a" orientation="2" lpi="6">
<description>Registro cespiti sintetico</description> <description>Registro cespiti sintetico</description>
<font face="Courier New" size="7" /> <font face="Arial Narrow" size="8" />
<section type="Head"> <section type="Head">
<font face="Courier New" bold="1" size="7" /> <font face="Arial Narrow" bold="1" size="8" />
<field x="24" y="0.5" type="Testo" align="center" width="10" pattern="1" text="Data" /> <field x="18.5" y="0.5" type="Testo" align="center" width="10" text="Date" />
<field x="90" y="0.5" type="Testo" width="8" pattern="1" text="Valore" /> <field x="83" y="0.5" type="Testo" align="center" width="8" text="Valori" />
<field x="135" y="0.5" type="Testo" width="20" pattern="1" text="Fondo Ammortamento" /> <field x="124" y="0.5" type="Testo" width="20" text="Fondo Ammortamento" />
<field x="171" y="0.75" type="Testo" align="right" width="12" pattern="1" text="Residuo da" /> <field x="157" y="0.75" type="Testo" align="right" width="12" text="Residuo da" />
<field x="1.5" y="1.5" type="Testo" width="10" pattern="1" text="Codice" /> <field x="1" y="1.5" type="Testo" width="10" text="Codice" />
<field x="11.5" y="1.5" type="Testo" width="11" pattern="1" text="Alienazione" /> <field x="11" y="1.5" type="Testo" width="10" text="Alienazione" />
<field x="24.5" y="1.5" type="Testo" width="10" pattern="1" text="Acquisto" /> <field x="21" y="1.5" type="Testo" width="10" text="Acquisto" />
<field x="35" y="1.5" type="Testo" width="10" pattern="1" text="Entr. Funz." /> <field x="31" y="1.5" type="Testo" width="10" text="Entr. Funz." />
<field x="46" y="1.5" type="Testo" width="28" pattern="1" text="Descrizione" /> <field x="41" y="1.5" type="Testo" width="28" text="Descrizione" />
<field x="72.5" y="1.5" type="Testo" align="right" width="12" pattern="1" text="Iniziale" /> <field x="66" y="1.5" type="Testo" align="right" width="12" text="Iniziale" />
<field x="85.5" y="1.5" type="Testo" align="right" width="12" pattern="1" text="Variazione" /> <field x="78" y="1.5" type="Testo" align="right" width="12" text="Variazione" />
<field x="98.5" y="1.5" type="Testo" align="right" width="12" pattern="1" text="Finale" /> <field x="90" y="1.5" type="Testo" align="right" width="12" text="Finale" />
<field x="112" y="1.5" type="Testo" align="right" width="6" pattern="1" text="%Amm" /> <field x="102.5" y="1.5" type="Testo" align="right" width="6" text="%Amm" />
<field x="119" y="1.5" type="Testo" align="right" width="12" pattern="1" text="Es. corr." /> <field x="109" y="1.5" type="Testo" align="right" width="12" text="Es. corr." />
<field x="132" y="1.5" type="Testo" align="right" width="12" pattern="1" text="Fine es.prec" /> <field x="121" y="1.5" type="Testo" align="right" width="12" text="Fine es.prec" />
<field x="145" y="1.5" type="Testo" align="right" width="12" pattern="1" text="Cessioni" /> <field x="133" y="1.5" type="Testo" align="right" width="12" text="Cessioni" />
<field x="158" y="1.5" type="Testo" align="right" width="12" pattern="1" text="Totale" /> <field x="145" y="1.5" type="Testo" align="right" width="12" text="Totale" />
<field x="171" y="1.5" type="Testo" align="right" width="12" pattern="1" text="ammortizzare" /> <field x="157" y="1.5" type="Testo" align="right" width="12" text="ammortizzare" />
<field border="1" x="1" y="2.5" type="Linea" width="182" height="0" pattern="1" /> <field border="1" x="1" y="2.5" type="Linea" width="168" height="0" />
</section> </section>
<section type="Head" level="1" height="6"> <section type="Head" level="1">
<font face="Arial" size="8" />
<prescript description="H1 PRESCRIPT">MESSAGE RESET,F1.103 <prescript description="H1 PRESCRIPT">MESSAGE RESET,F1.103
MESSAGE RESET,F1.102 MESSAGE RESET,F1.102
MESSAGE RESET,F1.101 MESSAGE RESET,F1.101
@ -32,30 +33,30 @@ MESSAGE RESET,F1.104
MESSAGE RESET,F1.105 MESSAGE RESET,F1.105
MESSAGE RESET,F1.106 MESSAGE RESET,F1.106
MESSAGE RESET,F1.107</prescript> MESSAGE RESET,F1.107</prescript>
<field border="1" radius="100" y="0.5" type="Testo" valign="center" align="center" shade_offset="25" width="182" height="2.5" text="REGISTRO CESPITI SINTETICO"> <field border="1" radius="100" x="12" y="0.5" type="Testo" valign="center" align="center" shade_offset="25" width="148" height="2.5" pattern="2" text="REGISTRO CESPITI SINTETICO">
<font face="Courier New" bold="1" size="16" /> <font face="Times New Roman" bold="1" size="16" />
</field> </field>
<field border="2" y="4" type="Linea" width="182" height="0" pattern="1" /> <field border="2" x="1" y="4" type="Linea" width="168" height="0" />
<field x="1" y="4.5" type="Stringa" width="50" pattern="1"> <field x="1" y="4.5" type="Stringa" width="50">
<font italic="1" face="Courier New" bold="1" size="9" /> <font italic="1" face="Arial" bold="1" size="8" />
<source>#SYSTEM.RAGSOC</source> <source>#SYSTEM.RAGSOC</source>
</field> </field>
<field x="58.5" y="4.5" type="Testo" width="14" pattern="1" text="Data stampa:"> <field x="58.5" y="4.5" type="Testo" width="14" text="Data stampa:">
<font italic="1" face="Courier New" size="9" /> <font italic="1" face="Arial" size="8" />
</field> </field>
<field x="72.5" y="4.5" type="Data" width="11" pattern="1"> <field x="72.5" y="4.5" type="Data" width="11">
<font italic="1" face="Courier New" bold="1" size="9" /> <font italic="1" face="Arial" bold="1" size="8" />
<source>#SYSTEM.DATE</source> <source>#SYSTEM.DATE</source>
</field> </field>
<field x="93" y="4.5" type="Testo" width="7" pattern="1" text="Anno:"> <field x="93" y="4.5" type="Testo" width="7" text="Anno:">
<font italic="1" face="Courier New" size="9" /> <font italic="1" face="Arial" size="8" />
</field> </field>
<field x="100" y="4.5" type="Numero" align="right" width="5" pattern="1"> <field x="100" y="4.5" type="Numero" align="right" width="5">
<font italic="1" face="Courier New" bold="1" size="9" /> <font italic="1" face="Arial" bold="1" size="8" />
<source>#ANNO</source> <source>#ANNO</source>
</field> </field>
<field x="117" y="4.5" type="Array" width="25" pattern="1"> <field x="117" y="4.5" type="Array" width="25">
<font italic="1" face="Courier New" bold="1" size="9" /> <font italic="1" face="Arial" bold="1" size="8" />
<source>#SITUAZIONE</source> <source>#SITUAZIONE</source>
<list> <list>
<li Value="Situazione Fiscale" Code="1" /> <li Value="Situazione Fiscale" Code="1" />
@ -63,10 +64,31 @@ MESSAGE RESET,F1.107</prescript>
<li Value="Situazione Gestionale" Code="3" /> <li Value="Situazione Gestionale" Code="3" />
</list> </list>
</field> </field>
<field x="1" y="6.5" type="Testo" width="12" text="Centro di costo">
<font italic="1" face="Arial" size="8" />
</field>
<field x="13" y="6.5" type="Stringa" width="15">
<font face="Arial" bold="1" size="8" />
<source>#CODCDC</source>
</field>
<field x="35" y="6.5" type="Testo" width="10" text="Commessa">
<font italic="1" face="Arial" size="8" />
</field>
<field x="45" y="6.5" type="Stringa" width="15">
<font face="Arial" bold="1" size="8" />
<source>#CODCMS</source>
</field>
<field x="67.5" y="6.5" type="Testo" width="4" text="Fase">
<font italic="1" face="Arial" size="8" />
</field>
<field x="72.5" y="6.5" type="Stringa" width="15">
<font face="Arial" bold="1" size="8" />
<source>#CODFASE</source>
</field>
</section> </section>
<section type="Head" level="2" height="2" page_break="1"> <section type="Head" level="2" bg_color="#000000" height="1.5" page_break="1" pattern="10" sh_angle="270">
<groupby>CODCAT</groupby> <groupby>CODCAT</groupby>
<font face="Courier New" bold="1" size="7" /> <font face="Arial" bold="1" size="9" />
<prescript description="H2 PRESCRIPT">MESSAGE RESET,F2.103 <prescript description="H2 PRESCRIPT">MESSAGE RESET,F2.103
MESSAGE RESET,F2.102 MESSAGE RESET,F2.102
MESSAGE RESET,F2.101 MESSAGE RESET,F2.101
@ -74,20 +96,19 @@ MESSAGE RESET,F2.104
MESSAGE RESET,F2.105 MESSAGE RESET,F2.105
MESSAGE RESET,F2.106 MESSAGE RESET,F2.106
MESSAGE RESET,F2.107</prescript> MESSAGE RESET,F2.107</prescript>
<field x="1" type="Testo" width="12" pattern="1" text="Categoria:"> <field x="1" y="0.25" type="Testo" txt_color="#FFFFFF" width="12" text="Categoria:" />
<font face="Courier New" bold="1" size="9" /> <field x="18" y="0.25" type="Stringa" txt_color="#FFFFFF" width="70" id="98">
</field>
<field x="16" type="Stringa" width="70" pattern="1">
<font face="Courier New" bold="1" size="9" />
<source>#DESCAT</source> <source>#DESCAT</source>
<postscript description="H2.98 POSTSCRIPT">MESSAGE COPY,F2.98</postscript>
</field> </field>
<field x="13" type="Numero" align="right" width="2" id="101" pattern="1"> <field x="14" y="0.25" type="Numero" align="right" txt_color="#FFFFFF" width="2" id="101">
<font face="Courier New" bold="1" size="9" />
<source>CODCAT</source> <source>CODCAT</source>
<postscript description="H2.101 POSTSCRIPT">MESSAGE COPY,F2.97</postscript>
</field> </field>
</section> </section>
<section type="Head" level="3" hidden="1"> <section type="Head" level="3" hidden="1" bg_color="#808080" sh_color="#C0C0C0" pattern="10" sh_angle="270">
<groupby>CODIMP</groupby> <groupby>CODIMP</groupby>
<font face="Arial" size="9" />
<prescript description="H3 PRESCRIPT">#GROUP_CODIMP @ <prescript description="H3 PRESCRIPT">#GROUP_CODIMP @
IF IF
"H3" SHOW "H3" SHOW
@ -104,20 +125,23 @@ MESSAGE RESET,F3.104
MESSAGE RESET,F3.105 MESSAGE RESET,F3.105
MESSAGE RESET,F3.106 MESSAGE RESET,F3.106
MESSAGE RESET,F3.107</postscript> MESSAGE RESET,F3.107</postscript>
<field x="4" type="Testo" width="12" pattern="1" text="Impianto:"> <field x="4" type="Testo" width="12" text="Impianto:">
<font face="Courier New" bold="1" size="9" /> <font face="Arial" bold="1" size="9" />
</field> </field>
<field x="16.5" type="Stringa" align="right" width="12" id="101" pattern="1"> <field x="16.5" type="Stringa" align="right" width="12" id="97">
<font face="Courier New" bold="1" size="9" /> <font face="Arial" bold="1" size="9" />
<source>CODIMP</source> <source>CODIMP</source>
<postscript description="H3.97 POSTSCRIPT">MESSAGE COPY,F3.97</postscript>
</field> </field>
<field x="30.5" type="Stringa" width="70" id="102" pattern="1"> <field x="30.5" type="Stringa" width="70" id="98">
<font face="Courier New" bold="1" size="9" /> <font face="Arial" bold="1" size="9" />
<prescript description="H3.102 PRESCRIPT">MESSAGE TABLEREAD,CIM,CODIMP,S0</prescript> <prescript description="H3.98 PRESCRIPT">MESSAGE TABLEREAD,CIM,CODIMP,S0</prescript>
<postscript description="H3.98 POSTSCRIPT">MESSAGE COPY,F3.98</postscript>
</field> </field>
</section> </section>
<section type="Head" level="4" hidden="1"> <section type="Head" level="4" hidden="1" bg_color="#C0C0C0" sh_color="#FFFFFF" pattern="10" sh_angle="270">
<groupby>CODLOC</groupby> <groupby>CODLOC</groupby>
<font face="Arial" bold="1" size="8" />
<prescript description="H4 PRESCRIPT">#GROUP_CODLOC @ <prescript description="H4 PRESCRIPT">#GROUP_CODLOC @
IF IF
"H4" SHOW "H4" SHOW
@ -134,81 +158,79 @@ MESSAGE RESET,F4.104
MESSAGE RESET,F4.105 MESSAGE RESET,F4.105
MESSAGE RESET,F4.106 MESSAGE RESET,F4.106
MESSAGE RESET,F4.107</postscript> MESSAGE RESET,F4.107</postscript>
<field x="7" type="Testo" width="12" pattern="1" text="Localita':"> <field x="7" type="Testo" width="8" text="Localita':" />
<font face="Courier New" bold="1" size="9" /> <field x="15" type="Stringa" align="right" width="12" id="97">
</field>
<field x="20" type="Stringa" align="right" width="12" id="101" pattern="1">
<font face="Courier New" bold="1" size="9" />
<source>CODLOC</source> <source>CODLOC</source>
<postscript description="H4.97 POSTSCRIPT">MESSAGE COPY,F4.97</postscript>
</field> </field>
<field x="34" type="Stringa" width="70" id="102" pattern="1"> <field x="29" type="Stringa" width="70" id="98">
<font face="Courier New" bold="1" size="9" /> <prescript description="H4.98 PRESCRIPT">MESSAGE TABLEREAD,LOC,CODLOC,S0</prescript>
<prescript description="H4.102 PRESCRIPT">MESSAGE TABLEREAD,LOC,CODLOC,S0</prescript> <postscript description="H4.98 POSTSCRIPT">MESSAGE COPY,F4.98</postscript>
</field> </field>
</section> </section>
<section type="Body" /> <section type="Body" />
<section type="Body" level="1"> <section type="Body" level="1">
<field type="Stringa" width="10" pattern="1"> <field x="1" type="Stringa" width="10">
<source>IDCESPITE</source> <source>IDCESPITE</source>
</field> </field>
<field x="11.5" type="Data" width="10" pattern="1"> <field x="11" type="Data" width="10">
<source>DTALIEN</source> <source>DTALIEN</source>
</field> </field>
<field x="23" type="Data" width="10" pattern="1"> <field x="21" type="Data" width="10">
<source>DTCOMP</source> <source>DTCOMP</source>
</field> </field>
<field x="34.5" type="Data" width="10" pattern="1"> <field x="31" type="Data" width="10">
<source>DTFUNZ</source> <source>DTFUNZ</source>
</field> </field>
<field x="46" type="Stringa" dynamic_height="1" width="25" height="2" pattern="1"> <field x="41" type="Stringa" dynamic_height="1" width="25" height="2">
<source>DESC</source> <source>DESC</source>
</field> </field>
<field x="112" type="Numero" align="right" width="6" pattern="1" text="##@,@@"> <field x="102.5" type="Numero" align="right" width="6" text="##@,@@">
<source>#PERCAMM</source> <source>#PERCAMM</source>
</field> </field>
<field x="72" type="Valuta" align="right" width="12" id="101" pattern="1" text="#########,@@"> <field x="66" type="Valuta" align="right" width="12" id="101" text="#########,@@">
<source>#COSTOINI</source> <source>#COSTOINI</source>
<postscript description="B1.101 POSTSCRIPT">MESSAGE ADD,F2.101 <postscript description="B1.101 POSTSCRIPT">MESSAGE ADD,F2.101
MESSAGE ADD,F3.101 MESSAGE ADD,F3.101
MESSAGE ADD,F4.101</postscript> MESSAGE ADD,F4.101</postscript>
</field> </field>
<field x="98" type="Valuta" align="right" width="12" id="102" pattern="1" text="#########,@@"> <field x="90" type="Valuta" align="right" width="12" id="102" text="#########,@@">
<source>#COSTOFIN</source> <source>#COSTOFIN</source>
<postscript description="B1.102 POSTSCRIPT">MESSAGE ADD,F2.102 <postscript description="B1.102 POSTSCRIPT">MESSAGE ADD,F2.102
MESSAGE ADD,F3.102 MESSAGE ADD,F3.102
MESSAGE ADD,F4.102</postscript> MESSAGE ADD,F4.102</postscript>
</field> </field>
<field x="85" type="Valuta" align="right" width="12" id="103" pattern="1" text="#########,@@"> <field x="78" type="Valuta" align="right" width="12" id="103" text="#########,@@">
<source>#102-#101</source> <source>#102-#101</source>
<postscript description="B1.103 POSTSCRIPT">MESSAGE ADD,F2.103 <postscript description="B1.103 POSTSCRIPT">MESSAGE ADD,F2.103
MESSAGE ADD,F3.103 MESSAGE ADD,F3.103
MESSAGE ADD,F4.103</postscript> MESSAGE ADD,F4.103</postscript>
</field> </field>
<field x="119" type="Valuta" align="right" width="12" id="104" pattern="1" text="#########,@@"> <field x="109" type="Valuta" align="right" width="12" id="104" text="#########,@@">
<source>#QAMM+#QAMMMV</source> <source>#QAMM+#QAMMMV</source>
<postscript description="B1.104 POSTSCRIPT">MESSAGE ADD,F2.104 <postscript description="B1.104 POSTSCRIPT">MESSAGE ADD,F2.104
MESSAGE ADD,F3.104 MESSAGE ADD,F3.104
MESSAGE ADD,F4.104</postscript> MESSAGE ADD,F4.104</postscript>
</field> </field>
<field x="132" type="Valuta" align="right" width="12" id="105" pattern="1" text="#########,@@"> <field x="121" type="Valuta" align="right" width="12" id="105" text="#########,@@">
<source>#FAMM</source> <source>#FAMM</source>
<postscript description="B1.105 POSTSCRIPT">MESSAGE ADD,F2.105 <postscript description="B1.105 POSTSCRIPT">MESSAGE ADD,F2.105
MESSAGE ADD,F3.105 MESSAGE ADD,F3.105
MESSAGE ADD,F4.105</postscript> MESSAGE ADD,F4.105</postscript>
</field> </field>
<field x="145" type="Valuta" align="right" width="12" id="106" pattern="1" text="#########,@@"> <field x="133" type="Valuta" align="right" width="12" id="106" text="#########,@@">
<source>#CESSELIM+#QAMMMV</source> <source>#CESSELIM+#QAMMMV</source>
<postscript description="B1.106 POSTSCRIPT">MESSAGE ADD,F2.106 <postscript description="B1.106 POSTSCRIPT">MESSAGE ADD,F2.106
MESSAGE ADD,F3.106 MESSAGE ADD,F3.106
MESSAGE ADD,F4.106</postscript> MESSAGE ADD,F4.106</postscript>
</field> </field>
<field x="158" type="Valuta" align="right" width="12" id="107" pattern="1" text="#########,@@"> <field x="145" type="Valuta" align="right" width="12" id="107" text="#########,@@">
<source>#104+#105-#106</source> <source>#104+#105-#106</source>
<postscript description="B1.107 POSTSCRIPT">MESSAGE ADD,F2.107 <postscript description="B1.107 POSTSCRIPT">MESSAGE ADD,F2.107
MESSAGE ADD,F3.107 MESSAGE ADD,F3.107
MESSAGE ADD,F4.107</postscript> MESSAGE ADD,F4.107</postscript>
</field> </field>
<field x="171" type="Valuta" align="right" width="12" id="108" pattern="1" text="#########,@@"> <field x="157" type="Valuta" align="right" width="12" id="108" text="#########,@@">
<source>#RESAMM-#QAMM</source> <source>#RESAMM-#QAMM</source>
<postscript description="B1.108 POSTSCRIPT">MESSAGE ADD,F2.108 <postscript description="B1.108 POSTSCRIPT">MESSAGE ADD,F2.108
MESSAGE ADD,F3.108 MESSAGE ADD,F3.108
@ -216,80 +238,92 @@ MESSAGE ADD,F4.108</postscript>
</field> </field>
</section> </section>
<section type="Foot"> <section type="Foot">
<field border="1" type="Linea" width="182" height="0" pattern="1" /> <field border="1" type="Linea" width="182" height="0" />
<field x="170" y="0.25" type="Testo" width="5" pattern="1" text="Pag."> <field x="170" y="0.25" type="Testo" width="5" text="Pag.">
<font italic="1" face="Courier New" size="9" /> <font italic="1" face="Courier New" size="9" />
</field> </field>
<field x="176" y="0.25" type="Numero" align="right" width="3" pattern="1"> <field x="176" y="0.25" type="Numero" align="right" width="3">
<font italic="1" face="Courier New" bold="1" size="9" /> <font italic="1" face="Courier New" bold="1" size="9" />
<source>#REPORT.PAGE</source> <source>#REPORT.PAGE</source>
</field> </field>
</section> </section>
<section type="Foot" level="1"> <section type="Foot" level="1" bg_color="#000000" height="1.5" pattern="2">
<font face="Courier New" bold="1" size="7" /> <font italic="1" face="Arial" bold="1" size="9" />
<field border="1" x="1" y="0.5" type="Linea" width="182" height="0" pattern="1" /> <field border="2" x="1" y="0.25" type="Linea" fg_color="#FFFFFF" width="168" height="0" />
<field x="45" y="1" type="Testo" width="25" pattern="1" text="Totali generali" /> <field x="1" y="0.5" type="Testo" txt_color="#FFFFFF" width="25" text="Totali generali" />
<field x="71" y="1" type="Valuta" align="right" width="13" id="101" pattern="1" text="#########,@@" /> <field x="66" y="0.5" type="Valuta" align="right" txt_color="#FFFFFF" width="12" id="101" text="#########,@@" />
<field x="97" y="1" type="Valuta" align="right" width="13" id="102" pattern="1" text="#########,@@" /> <field x="90" y="0.5" type="Valuta" align="right" txt_color="#FFFFFF" width="12" id="102" text="#########,@@" />
<field x="84" y="1" type="Valuta" align="right" width="13" id="103" pattern="1" text="#########,@@" /> <field x="78" y="0.5" type="Valuta" align="right" txt_color="#FFFFFF" width="12" id="103" text="#########,@@" />
<field x="118" y="1" type="Valuta" align="right" width="13" id="104" pattern="1" text="#########,@@" /> <field x="109" y="0.5" type="Valuta" align="right" txt_color="#FFFFFF" width="12" id="104" text="#########,@@" />
<field x="131" y="1" type="Valuta" align="right" width="13" id="105" pattern="1" text="#########,@@" /> <field x="121" y="0.5" type="Valuta" align="right" txt_color="#FFFFFF" width="12" id="105" text="#########,@@" />
<field x="144" y="1" type="Valuta" align="right" width="13" id="106" pattern="1" text="#########,@@" /> <field x="133" y="0.5" type="Valuta" align="right" txt_color="#FFFFFF" width="12" id="106" text="#########,@@" />
<field x="157" y="1" type="Valuta" align="right" width="13" id="107" pattern="1" text="#########,@@" /> <field x="145" y="0.5" type="Valuta" align="right" txt_color="#FFFFFF" width="12" id="107" text="#########,@@" />
<field x="170" y="1" type="Valuta" align="right" width="13" id="108" pattern="1" text="#########,@@" /> <field x="157" y="0.5" type="Valuta" align="right" txt_color="#FFFFFF" width="12" id="108" text="#########,@@" />
</section> </section>
<section type="Foot" level="2"> <section type="Foot" level="2" bg_color="#000000" height="1.5" pattern="10" sh_angle="90">
<font face="Courier New" bold="1" size="7" /> <font face="Arial" bold="1" size="9" />
<field border="1" x="1" y="0.5" type="Linea" width="182" height="0" pattern="1" /> <field x="1" y="0.25" type="Testo" txt_color="#FFFFFF" width="15" text="Totale Categoria" />
<field x="45" y="1" type="Testo" width="25" pattern="1" text="Totali per categoria" /> <field x="17" y="0.25" type="Stringa" txt_color="#FFFFFF" width="2" id="97" />
<field x="72" y="1" type="Valuta" align="right" width="12" id="101" pattern="1" text="#########,@@"> <field x="20" y="0.25" type="Stringa" txt_color="#FFFFFF" width="30" id="98">
<font italic="1" face="Arial Narrow" bold="1" size="9" />
</field>
<field x="66" y="0.25" type="Valuta" align="right" txt_color="#FFFFFF" width="12" id="101" text="#########,@@">
<postscript description="F2.101 POSTSCRIPT">MESSAGE ADD,F1.101</postscript> <postscript description="F2.101 POSTSCRIPT">MESSAGE ADD,F1.101</postscript>
</field> </field>
<field x="98" y="1" type="Valuta" align="right" width="12" id="102" pattern="1" text="#########,@@"> <field x="90" y="0.25" type="Valuta" align="right" txt_color="#FFFFFF" width="12" id="102" text="#########,@@">
<postscript description="F2.102 POSTSCRIPT">MESSAGE ADD,F1.102</postscript> <postscript description="F2.102 POSTSCRIPT">MESSAGE ADD,F1.102</postscript>
</field> </field>
<field x="85" y="1" type="Valuta" align="right" width="12" id="103" pattern="1" text="#########,@@"> <field x="78" y="0.25" type="Valuta" align="right" txt_color="#FFFFFF" width="12" id="103" text="#########,@@">
<postscript description="F2.103 POSTSCRIPT">MESSAGE ADD,F1.103</postscript> <postscript description="F2.103 POSTSCRIPT">MESSAGE ADD,F1.103</postscript>
</field> </field>
<field x="119" y="1" type="Valuta" align="right" width="12" id="104" pattern="1" text="#########,@@"> <field x="109" y="0.25" type="Valuta" align="right" txt_color="#FFFFFF" width="12" id="104" text="#########,@@">
<postscript description="F2.104 POSTSCRIPT">MESSAGE ADD,F1.104</postscript> <postscript description="F2.104 POSTSCRIPT">MESSAGE ADD,F1.104</postscript>
</field> </field>
<field x="132" y="1" type="Valuta" align="right" width="12" id="105" pattern="1" text="#########,@@"> <field x="121" y="0.25" type="Valuta" align="right" txt_color="#FFFFFF" width="12" id="105" text="#########,@@">
<postscript description="F2.105 POSTSCRIPT">MESSAGE ADD,F1.105</postscript> <postscript description="F2.105 POSTSCRIPT">MESSAGE ADD,F1.105</postscript>
</field> </field>
<field x="145" y="1" type="Valuta" align="right" width="12" id="106" pattern="1" text="#########,@@"> <field x="133" y="0.25" type="Valuta" align="right" txt_color="#FFFFFF" width="12" id="106" text="#########,@@">
<postscript description="F2.106 POSTSCRIPT">MESSAGE ADD,F1.106</postscript> <postscript description="F2.106 POSTSCRIPT">MESSAGE ADD,F1.106</postscript>
</field> </field>
<field x="158" y="1" type="Valuta" align="right" width="12" id="107" pattern="1" text="#########,@@"> <field x="145" y="0.25" type="Valuta" align="right" txt_color="#FFFFFF" width="12" id="107" text="#########,@@">
<postscript description="F2.107 POSTSCRIPT">MESSAGE ADD,F1.107</postscript> <postscript description="F2.107 POSTSCRIPT">MESSAGE ADD,F1.107</postscript>
</field> </field>
<field x="171" y="1" type="Valuta" align="right" width="12" id="108" pattern="1" text="#########,@@"> <field x="157" y="0.25" type="Valuta" align="right" txt_color="#FFFFFF" width="12" id="108" text="#########,@@">
<postscript description="F2.108 POSTSCRIPT">MESSAGE ADD,F1.108</postscript> <postscript description="F2.108 POSTSCRIPT">MESSAGE ADD,F1.108</postscript>
</field> </field>
</section> </section>
<section type="Foot" level="3" hidden="1"> <section type="Foot" level="3" hidden="1" bg_color="#808080" sh_color="#C0C0C0" height="1.5" pattern="10" sh_angle="90">
<font italic="1" face="Courier New" bold="1" size="7" /> <font italic="1" face="Arial" bold="1" size="9" />
<field x="45" y="0.5" type="Testo" width="25" pattern="1" text="Totali per impianto" /> <field x="4" y="0.25" type="Testo" width="15" text="Totale impianto" />
<field x="72" y="0.5" type="Valuta" align="right" width="12" id="101" pattern="1" text="#########,@@" /> <field border="2" x="1" y="1.25" type="Linea" width="168" height="0" />
<field x="98" y="0.5" type="Valuta" align="right" width="12" id="102" pattern="1" text="#########,@@" /> <field x="20" y="0.25" type="Stringa" width="12" id="97" />
<field x="85" y="0.5" type="Valuta" align="right" width="12" id="103" pattern="1" text="#########,@@" /> <field x="32.5" y="0.25" type="Stringa" width="30" id="98">
<field x="119" y="0.5" type="Valuta" align="right" width="12" id="104" pattern="1" text="#########,@@" /> <font italic="1" face="Arial Narrow" bold="1" size="9" />
<field x="132" y="0.5" type="Valuta" align="right" width="12" id="105" pattern="1" text="#########,@@" /> </field>
<field x="145" y="0.5" type="Valuta" align="right" width="12" id="106" pattern="1" text="#########,@@" /> <field x="66" y="0.25" type="Valuta" align="right" width="12" id="101" text="#########,@@" />
<field x="158" y="0.5" type="Valuta" align="right" width="12" id="107" pattern="1" text="#########,@@" /> <field x="90" y="0.25" type="Valuta" align="right" width="12" id="102" text="#########,@@" />
<field x="171" y="0.5" type="Valuta" align="right" width="12" id="108" pattern="1" text="#########,@@" /> <field x="78" y="0.25" type="Valuta" align="right" width="12" id="103" text="#########,@@" />
<field x="109" y="0.25" type="Valuta" align="right" width="12" id="104" text="#########,@@" />
<field x="121" y="0.25" type="Valuta" align="right" width="12" id="105" text="#########,@@" />
<field x="133" y="0.25" type="Valuta" align="right" width="12" id="106" text="#########,@@" />
<field x="145" y="0.25" type="Valuta" align="right" width="12" id="107" text="#########,@@" />
<field x="157" y="0.25" type="Valuta" align="right" width="12" id="108" text="#########,@@" />
</section> </section>
<section type="Foot" level="4" hidden="1"> <section type="Foot" level="4" hidden="1" bg_color="#C0C0C0" sh_color="#FFFFFF" pattern="10" sh_angle="90">
<font italic="1" face="Courier New" bold="1" size="7" /> <font italic="1" face="Arial" bold="1" size="8" />
<field x="45" y="0.5" type="Testo" width="25" pattern="1" text="Totali per localita'" /> <field x="7" type="Testo" width="15" text="Totale localit&#E0;" />
<field x="72" y="0.5" type="Valuta" align="right" width="12" id="101" pattern="1" text="#########,@@" /> <field x="23.5" type="Stringa" width="12" id="97" />
<field x="98" y="0.5" type="Valuta" align="right" width="12" id="102" pattern="1" text="#########,@@" /> <field x="36.5" type="Stringa" width="20" id="98">
<field x="85" y="0.5" type="Valuta" align="right" width="12" id="103" pattern="1" text="#########,@@" /> <font italic="1" face="Arial Narrow" bold="1" size="8" />
<field x="119" y="0.5" type="Valuta" align="right" width="12" id="104" pattern="1" text="#########,@@" /> </field>
<field x="132" y="0.5" type="Valuta" align="right" width="12" id="105" pattern="1" text="#########,@@" /> <field x="66" type="Valuta" align="right" width="12" id="101" text="#########,@@" />
<field x="145" y="0.5" type="Valuta" align="right" width="12" id="106" pattern="1" text="#########,@@" /> <field x="90" type="Valuta" align="right" width="12" id="102" text="#########,@@" />
<field x="158" y="0.5" type="Valuta" align="right" width="12" id="107" pattern="1" text="#########,@@" /> <field x="78" type="Valuta" align="right" width="12" id="103" text="#########,@@" />
<field x="171" y="0.5" type="Valuta" align="right" width="12" id="108" pattern="1" text="#########,@@" /> <field x="109" type="Valuta" align="right" width="12" id="104" text="#########,@@" />
<field x="121" type="Valuta" align="right" width="12" id="105" text="#########,@@" />
<field x="133" type="Valuta" align="right" width="12" id="106" text="#########,@@" />
<field x="145" type="Valuta" align="right" width="12" id="107" text="#########,@@" />
<field x="157" type="Valuta" align="right" width="12" id="108" text="#########,@@" />
</section> </section>
<sql>USE CESPI KEY 2</sql> <sql>USE CESPI KEY 2</sql>
</report> </report>

View File

@ -14,7 +14,7 @@ int main(int argc,char** argv)
case 3: case 3:
ce4400(argc,argv); break; //trasferimento movimenti cespiti in contabilita' ce4400(argc,argv); break; //trasferimento movimenti cespiti in contabilita'
case 0: case 0:
default: ce4100(argc,argv) ; break; // inserimento cespiti per commessa default: ce4100(argc,argv) ; break; // inserimento cespiti per analitica
} }
return 0; return 0;
} }

View File

@ -8,20 +8,34 @@
class TCesp_per_cms_mask: public TAutomask class TCesp_per_cms_mask: public TAutomask
{ {
int _pos_cms, _pos_fase, _pos_cdc, _pos_util, _pos_cop, _pos_fondo;
public: public:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly); virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
real TCesp_per_cms_mask::somma_perc() const; real TCesp_per_cms_mask::somma_perc() const;
TCesp_per_cms_mask():TAutomask("ce4100a") {} TCesp_per_cms_mask();
}; };
TCesp_per_cms_mask::TCesp_per_cms_mask() : TAutomask ("ce4100a")
{
//setta le posizioni dei campi dello sheet
TSheet_field& sf_righe = sfield(F_RIGHE);
_pos_cms = sf_righe.cid2index(S_CODCMS);
_pos_fase = sf_righe.cid2index(S_CODFASE);
_pos_cdc = sf_righe.cid2index(S_CODCDC);
_pos_util = sf_righe.cid2index(S_PERCUTIL);
_pos_cop = sf_righe.cid2index(S_PERCCOPE);
_pos_fondo = sf_righe.cid2index(S_FONDO);
}
real TCesp_per_cms_mask::somma_perc() const real TCesp_per_cms_mask::somma_perc() const
{ {
TSheet_field& ss = sfield(F_RIGHE); TSheet_field& ss = sfield(F_RIGHE);
real tot_perc; real tot_perc;
FOR_EACH_SHEET_ROW(ss,i,r) FOR_EACH_SHEET_ROW(ss,i,r)
tot_perc += real(r->get(ss.cid2index(S_PERCUTIL))); tot_perc += real(r->get(_pos_util));
return tot_perc; return tot_perc;
} }
@ -37,7 +51,7 @@ bool TCesp_per_cms_mask::on_field_event(TOperable_field& o, TField_event e, long
if (residuo > 0) if (residuo > 0)
{ {
TToken_string& row = ss.row(jolly); TToken_string& row = ss.row(jolly);
row.add(residuo.string(),ss.cid2index(S_PERCUTIL)); row.add(residuo.string(),_pos_util);
} }
} }
if (e == fe_close && (insert_mode() || edit_mode())) if (e == fe_close && (insert_mode() || edit_mode()))
@ -45,21 +59,30 @@ bool TCesp_per_cms_mask::on_field_event(TOperable_field& o, TField_event e, long
//controllo sulle percentuali totali di un cespite //controllo sulle percentuali totali di un cespite
if (somma_perc() != CENTO) if (somma_perc() != CENTO)
return noyes_box("La percentuale complessiva di utilizzo del cespite e' diversa da 100" return noyes_box("La percentuale complessiva di utilizzo del cespite e' diversa da 100"
"\nSi desidera proseguire ?"); "\nSi desidera proseguire ugualmente?");
TAssoc_array lista_cms; TAssoc_array keys_list;
TSheet_field& ss = sfield(F_RIGHE); TSheet_field& ss = sfield(F_RIGHE);
FOR_EACH_SHEET_ROW(ss,i,r) FOR_EACH_SHEET_ROW(ss,i,r)
{ {
//controllo di esistenza codice commessa //controllo di esistenza codici commessa e cdc
const TString& cms = r->get(ss.cid2index(S_CODCMS)); const TString& cms = r->get(_pos_cms);
if (cms.blank()) if (cms.blank())
return error_box("Specificare la commessa sulla riga %d", i+1); return error_box("Specificare la commessa sulla riga %d", i+1);
//controllo di duplicazione codice commessa const TString& cdc = r->get(_pos_cdc);
if (lista_cms.is_key(cms)) if (cdc.blank())
return error_box("Codice commessa %s duplicato", (const char *)cms); return error_box("Specificare il centro di costo sulla riga %d", i+1);
lista_cms.add(cms); //controllo di duplicazione chiave della riga (cms/fase/cdc)
TToken_string row_key;
row_key.add(cms);
const TString& fase = r->get(_pos_fase);
row_key.add(fase);
row_key.add(cdc);
if (keys_list.is_key(row_key))
return error_box("Codice riga %s duplicato", (const char *)row_key);
keys_list.add(row_key);
} }
} }
break; break;
@ -139,7 +162,7 @@ bool TCesp_per_cms::user_destroy()
int ce4100(int argc, char* argv[]) int ce4100(int argc, char* argv[])
{ {
TCesp_per_cms a; TCesp_per_cms a;
a.run(argc,argv,TR("Inserimento cespiti per commessa")); a.run(argc,argv,TR("Distribuzione analitica cespiti"));
return 0; return 0;
} }

View File

@ -1,4 +1,4 @@
//definizioni campi per la maschera ce4100a.uml (immissione cespiti per commessa) //definizioni campi per la maschera ce4100a.uml (anagrafica cespiti per cdc/cms/fase)
#define F_DITTA 201 #define F_DITTA 201
#define F_RAGSOC 202 #define F_RAGSOC 202
#define F_ESERCIZIO 203 #define F_ESERCIZIO 203
@ -13,7 +13,12 @@
#define F_RIGHE 211 #define F_RIGHE 211
#define S_CODCMS 101 #define S_CODCMS 101
#define S_DESCMS 102 #define S_CODFASE 102
#define S_PERCUTIL 103 #define S_CODCDC 103
#define S_PERCCOPE 104 #define S_PERCUTIL 104
#define S_FONDO 105 #define S_PERCCOPE 105
#define S_FONDO 106
#define S_DESCDC 111
#define S_DESCMS 112
#define S_DESFASE 113

View File

@ -4,7 +4,7 @@ TOOLBAR "topbar" 0 0 0 2
#include <relapbar.h> #include <relapbar.h>
ENDPAGE ENDPAGE
PAGE "Anagrafica cespiti per commessa" 0 2 0 0 PAGE "Distribuzione analitica cespiti" 0 2 0 0
GROUPBOX DLG_NULL 78 5 GROUPBOX DLG_NULL 78 5
BEGIN BEGIN
@ -77,16 +77,16 @@ BEGIN
DISPLAY "Codice@10" IDCESPITE DISPLAY "Codice@10" IDCESPITE
DISPLAY "Descrizione@50" LF_CESPI->DESC DISPLAY "Descrizione@50" LF_CESPI->DESC
DISPLAY "Cat." LF_CESPI->CODCAT DISPLAY "Cat." LF_CESPI->CODCAT
DISPLAY "Impianto@10" LF_CESPI->CODIMP DISPLAY "Commessa@20" CODCMS
DISPLAY "Stabilimento@30" LF_CESPI->STABILIM DISPLAY "Fase@10" CODFASE
DISPLAY "Reparto@30" LF_CESPI->REPARTO DISPLAY "Centro di costo@20" CODCDC
DISPLAY "Data Acq.@10" LF_CESPI->DTCOMP DISPLAY "Data Acq.@10" LF_CESPI->DTCOMP
DISPLAY "Data Ali.@10" LF_CESPI->DTALIEN DISPLAY "Data Ali.@10" LF_CESPI->DTALIEN
OUTPUT F_ESERCIZIO CODES OUTPUT F_ESERCIZIO CODES
OUTPUT F_IDCESPITE IDCESPITE OUTPUT F_IDCESPITE IDCESPITE
OUTPUT F_IDCESPITE_N IDCESPITE OUTPUT F_IDCESPITE_N IDCESPITE
OUTPUT F_DESC LF_CESPI->DESC OUTPUT F_DESC LF_CESPI->DESC
CHECKTYPE REQUIRED CHECKTYPE FORCED
FIELD IDCESPITE FIELD IDCESPITE
KEY 1 KEY 1
GROUP 1 GROUP 1
@ -95,7 +95,7 @@ END
STRING F_DESC 60 50 STRING F_DESC 60 50
BEGIN BEGIN
PROMPT 24 4 "" PROMPT 24 4 ""
FLAGS "DP" FLAGS "DPG"
GROUP 1 GROUP 1
END END
@ -118,6 +118,7 @@ BEGIN
OUTPUT F_IDCESPITE_N IDCESPITE OUTPUT F_IDCESPITE_N IDCESPITE
OUTPUT F_DESC_N DESC OUTPUT F_DESC_N DESC
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
FIELD IDCESPITE
KEY 1 KEY 1
GROUP 2 GROUP 2
END END
@ -144,11 +145,12 @@ END
SPREADSHEET F_RIGHE SPREADSHEET F_RIGHE
BEGIN BEGIN
PROMPT 2 6 "" PROMPT 2 6 ""
ITEM "Codice commessa" ITEM "Commessa@20"
ITEM "Descrizione@50" ITEM "Fase@10"
ITEM "Centro di costo@20"
ITEM "% Utilizzo" ITEM "% Utilizzo"
ITEM "% Copertura" ITEM "% Copertura"
ITEM "Valore fondo per commessa" ITEM "Valore fondo"
USE LF_SALCECMS KEY NRIGA USE LF_SALCECMS KEY NRIGA
INPUT CODES F_ESERCIZIO INPUT CODES F_ESERCIZIO
INPUT IDCESPITE F_IDCESPITE INPUT IDCESPITE F_IDCESPITE
@ -160,11 +162,11 @@ ENDPAGE
ENDMASK ENDMASK
//maschera di riga dello sheet //maschera di riga dello sheet
PAGE "Riga" -1 -1 64 8 PAGE "Riga" -1 -1 76 15
STRING S_CODCMS 20 STRING S_CODCMS 20
BEGIN BEGIN
PROMPT 1 1 "Codice commessa " PROMPT 1 1 "Commessa "
USE LF_COMMESSE USE LF_COMMESSE
INPUT CODCMS S_CODCMS INPUT CODCMS S_CODCMS
DISPLAY "Codice@20" CODCMS DISPLAY "Codice@20" CODCMS
@ -176,15 +178,63 @@ BEGIN
FLAGS "U" FLAGS "U"
END END
STRING S_DESCMS 50 45 STRING S_DESCMS 50 37
BEGIN BEGIN
PROMPT 1 2 "Descrizione " PROMPT 35 1 ""
FLAGS "D" USE LF_COMMESSE KEY 2
INPUT DESCRIZ S_DESCMS
DISPLAY "Descrizione@50" DESCRIZ
DISPLAY "Codice@20" CODCMS
COPY OUTPUT S_CODCMS
END
STRING S_CODFASE 10
BEGIN
PROMPT 1 2 "Fase "
USE LF_FASI
INPUT CODCMSFAS S_CODCMS SELECT
INPUT CODFASE S_CODFASE
DISPLAY "Fase@10" CODFASE
DISPLAY "Descrizione@50" DESCRIZ
OUTPUT S_CODFASE CODFASE
OUTPUT S_DESFASE DESCRIZ
CHECKTYPE NORMAL
FIELD CODFASE
FLAGS "U"
END
STRING S_DESFASE 50 37
BEGIN
PROMPT 35 2 ""
END
STRING S_CODCDC 20
BEGIN
PROMPT 1 3 "C.d.costo "
USE LF_CDC
INPUT CODCOSTO S_CODCDC
DISPLAY "Codice@20" CODCOSTO
DISPLAY "Descrizione@50" DESCRIZ
OUTPUT S_CODCDC CODCOSTO
OUTPUT S_DESCDC DESCRIZ
CHECKTYPE REQUIRED
FIELD CODCDC
FLAGS "U"
END
STRING S_DESCDC 50 37
BEGIN
PROMPT 35 3 ""
USE LF_CDC KEY 2
INPUT DESCRIZ S_DESCDC
DISPLAY "Descrizione@50" DESCRIZ
DISPLAY "Codice@20" CODCOSTO
COPY OUTPUT S_CODCDC
END END
NUMBER S_PERCUTIL 6 2 NUMBER S_PERCUTIL 6 2
BEGIN BEGIN
PROMPT 1 3 "Percentuale utilizzo " PROMPT 1 4 "% utilizzo "
CHECKTYPE REQUIRED CHECKTYPE REQUIRED
FLAGS "U" FLAGS "U"
FIELD PERCUTIL FIELD PERCUTIL
@ -192,30 +242,34 @@ END
NUMBER S_PERCCOPE 6 2 NUMBER S_PERCCOPE 6 2
BEGIN BEGIN
PROMPT 1 4 "Percentuale copertura " PROMPT 1 5 "% copertura "
FLAGS "U" FLAGS "U"
FIELD PERCCOPE FIELD PERCCOPE
END END
CURRENCY S_FONDO 18 CURRENCY S_FONDO 18
BEGIN BEGIN
PROMPT 1 5 "Valore fondo per commessa " PROMPT 1 6 "Valore fondo "
FIELD FONDO FIELD FONDO
END END
BUTTON DLG_OK 10 2 ENDPAGE
TOOLBAR "bottombar" 0 0 0 2
BUTTON DLG_OK 2 2
BEGIN BEGIN
PROMPT -13 -1 "" PROMPT 1 1 ""
END END
BUTTON DLG_CANCEL 10 2 BUTTON DLG_CANCEL 2 2
BEGIN BEGIN
PROMPT -23 -1 "" PROMPT 2 1 ""
END END
BUTTON DLG_DELREC 10 2 BUTTON DLG_DELREC 2 2
BEGIN BEGIN
PROMPT -33 -1 "" PROMPT 3 1 ""
END END
ENDPAGE ENDPAGE

View File

@ -1,11 +1,15 @@
#include <diction.h>
#include <prefix.h> #include <prefix.h>
#include <recarray.h> #include <recarray.h>
#include <sheet.h> #include <sheet.h>
#include <diction.h>
#include "celib.h" #include "celib.h"
#include "cespi.h"
#include "salcecms.h"
#include "../cg/cglib01.h" #include "../cg/cglib01.h"
#include "../ca/commesse.h"
/////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////
// Ditta cespiti // Ditta cespiti
@ -429,3 +433,89 @@ bool null_fields(const TRectype& rec, const char* fld0, const char* fld1, const
return true; return true;
} }
//Metodi per cespiti in analitica (come maiali nello spazio!?)
//------------------------------------------------------------
//ricava la % di utilizzo di un cespite in un esercizio, date cms/fase/cdc
real ceca_perc_util(const TString& cespite, const int anno,
const TString& cms, const TString& fase, const TString& cdc)
{
//controllo su date inizio e fine del periodo di utilizzo del cespite nell'esercizio selezionato
const TRectype& cespi = cache().get(LF_CESPI, cespite);
const int codcat = cespi.get_int(CESPI_CODCAT);
TDate dtinies, dtfines;
TEsercizi_contabili esc;
esc.code2range(anno, dtinies, dtfines);
TDate dtfine = dtfines;
const TDate dtalien = cespi.get_date(CESPI_DTALIEN);
if (dtalien.ok() && (dtalien < dtfines))
dtfine = dtalien;
TDate dtini = dtinies;
const TDate dtfunz = cespi.get_date(CESPI_DTFUNZ);
if (dtfunz.ok() && (dtfunz > dtinies))
dtini = dtfunz;
//..a questo punto dtini e dtfine rappresentano il periodo di utilizzo del cespite
//nell'esercizio selezionato
//quindi il periodo di utilizzo del cespite nell'esercizio,in giorni,sara'...
const long delta_cesp = dtfine - dtini + 1;
//Adesso si controlla la durata di ogni commessa (alla quale il cespite ha partecipato) durante
//l'esercizio delezionato
TToken_string key;
key.add(cespite);
key.add(anno);
TRecord_array salcecms(key, LF_SALCECMS);
//ciclo su SALCECMS data una chiave cespite/anno (si fa solo se salcecms non e' vuoto,
//e' inutile perdere tempo..) alla ricerca di tutte le righe con gli ammortamenti di..
//..quel cespite in quell'anno sparsi su varie cdc/cms/fasi
real perc;
if (salcecms.rows() > 0)
{
//
for (int i = 1; i <= salcecms.last_row(); i++)
perc = ceca_calc_perc_util_cesp(salcecms[i], dtini, dtfine);
}
return perc;
}
real ceca_calc_perc_util_cesp(const TRectype& salcecms_rec, const TDate& dtinices, const TDate& dtfineces)
{
//adeesso prende la percentuale di utilizzo del cespite nella commessa..
real percutil = salcecms_rec.get_real(SALCECMS_PERCUTIL);
//normalizza la percentuale...
percutil = percutil / CENTO;
//prende il codice commessa del record..
TString80 codcms = salcecms_rec.get(SALCECMS_CODCMS);
//..ed accede cosi' alla tabella delle commesse
const TRectype& cms = cache().get(LF_COMMESSE, codcms);
//prende le date di inizio e fine commessa dalla tabella per poterle confrontare con le date limite
//del cespite nell'esercizio
TDate dtfine = dtfineces;
//se esiste una data di proroga (DATAPROR) -> la data fine commessa e' la data proroga,altrimenti e'
//la normale data fine commessa (DATAFINE)
TDate dtfinecms = cms.get_date(COMMESSE_DATAPROR);
if (!dtfinecms.ok())
dtfinecms = cms.get_date(COMMESSE_DATAFINE);
if (dtfinecms.ok() && (dtfinecms < dtfineces))
dtfine = dtfinecms;
TDate dtini = dtinices;
const TDate dtinicms = cms.get_date(COMMESSE_DATAINIZIO);
if ((dtinicms.ok()) && (dtinicms > dtinices))
dtini = dtinicms;
//intervallo giorni di utilizzo cespite nella commessa
const real delta_cms = real(dtfine - dtini + 1) / real(dtfineces - dtinices + 1);
//...e la porta in giorni rispetto al totale di utilizzo dei giorni del cespite nell'esercizio
//(il 100% sono i giorni di utilizzo del cespite in tutte le commesse dell'esercizio)
percutil *= delta_cms;
return percutil;
}

View File

@ -71,4 +71,13 @@ bool null_fields(const TRectype& rec, const char* fld0, const char* fld1, const
const char* fld3 = NULL, const char* fld4 = NULL, const char* fld5 = NULL, const char* fld3 = NULL, const char* fld4 = NULL, const char* fld5 = NULL,
const char* fld6 = NULL, const char* fld7 = NULL, const char* fld8 = NULL); const char* fld6 = NULL, const char* fld7 = NULL, const char* fld8 = NULL);
//Metodi da usare nei cespiti per analitica
//-------------------------------------------
real ceca_perc_util(const TString& cespite, const int anno,
const TString& cms, const TString& fase, const TString& cdc);
real ceca_calc_perc_util_cesp(const TRectype& salcecms_rec,
const TDate& dtinices, const TDate& dtfineces);
#endif #endif

View File

@ -1,3 +1,3 @@
145 145
0 0
$salcecms|0|0|67|0|Fondi cespiti per commesse||| $salcecms|0|0|73|0|Cespiti per analitica|||

View File

@ -3,10 +3,10 @@
IDCESPITE|1|10|0|Codice cespite IDCESPITE|1|10|0|Codice cespite
CODES|2|4|0|Codice esercizio CODES|2|4|0|Codice esercizio
NRIGA|2|3|0|N. riga NRIGA|2|3|0|N. riga
CODCDC|1|20|0|Codice centro di costo
CODCMS|1|20|0|Codice commessa CODCMS|1|20|0|Codice commessa
CODFASE|1|10|0|Codice fase
PERCUTIL|4|6|2|Percentuale di utilizzo PERCUTIL|4|6|2|Percentuale di utilizzo
PERCCOPE|4|6|2|Percentuale di copertura
FONDO|4|18|3|Valore fondo per commessa
2 2
IDCESPITE+CODES+NRIGA| IDCESPITE+CODES+NRIGA|
CODES+IDCESPITE+NRIGA| CODES+IDCESPITE+NRIGA|

View File

@ -1,7 +1,7 @@
#define SALCECMS_IDCESPITE "IDCESPITE" #define SALCECMS_IDCESPITE "IDCESPITE"
#define SALCECMS_CODES "CODES" #define SALCECMS_CODES "CODES"
#define SALCECMS_NRIGA "NRIGA" #define SALCECMS_NRIGA "NRIGA"
#define SALCECMS_CODCDC "CODCDC"
#define SALCECMS_CODCMS "CODCMS" #define SALCECMS_CODCMS "CODCMS"
#define SALCECMS_CODFASE "CODFASE"
#define SALCECMS_PERCUTIL "PERCUTIL" #define SALCECMS_PERCUTIL "PERCUTIL"
#define SALCECMS_PERCOPE "PERCCOPE"
#define SALCECMS_FONDO "FONDO"