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 <automask.h>
#include <defmask.h>
#include <dongle.h>
#include <modaut.h>
#include <progind.h>
#include <recarray.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)
{}
{
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
@ -109,14 +118,19 @@ static const TStampa_sintetica_recordset* myself = NULL;
//metodo per caricare i valori nel recordset dalla maschera...fighissimo!!
void TStampa_sintetica_recordset::set_filter(const TStampa_sintetica_mask& msk)
{
const TString& dacat = msk.get(F_FROM_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() << "))";
//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& acat = msk.get(F_TO_CAT);
if (dacat.full() || acat.full())
{
if (dacat == acat)
@ -125,8 +139,38 @@ void TStampa_sintetica_recordset::set_filter(const TStampa_sintetica_mask& msk)
query << "&&(BETWEEN(CODCAT," << dacat << ',' << acat << "))";
}
query << "\nBY CODCAT|CODIMP|CODLOC|IDCESPITE"; //query standard senza raggruppamenti
set(query); //setta la nuova query nel report (che avrebbe solo USE CESPI)
//parte analitica
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 _tpamm;
int _group_codimp, _group_codloc;
TString _codcdc, _codcms, _codfase;
TCespite _cespite;
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_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);
}
@ -317,6 +366,8 @@ bool TStampa_sintetica_rep::get_usr_val(const TString& name, TVariant& var) cons
var = _cespite.res_amm();
return true;
}
//campi di testata del report
if (name == "#SITUAZIONE") //tipo situazione da stampare in testata
{
var.set(_tpamm);
@ -327,7 +378,21 @@ bool TStampa_sintetica_rep::get_usr_val(const TString& name, TVariant& var) cons
var.set(_anno);
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);
}

View File

@ -21,4 +21,11 @@
#define F_GROUP_CODLOC 118
#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

@ -14,41 +14,40 @@ END
NUMBER F_CODDITTA 5
BEGIN
PROMPT 2 1 "Ditta "
FLAGS "DF"
USE LF_NDITTE
INPUT CODDITTA F_CODDITTA
OUTPUT F_RAGSOC RAGSOC
CHECKTYPE REQUIRED
PROMPT 2 1 "Ditta "
FLAGS "DF"
USE LF_NDITTE
INPUT CODDITTA F_CODDITTA
OUTPUT F_RAGSOC RAGSOC
CHECKTYPE REQUIRED
END
STRING F_RAGSOC 55
BEGIN
PROMPT 20 1 ""
FLAGS "D"
PROMPT 20 1 ""
FLAGS "D"
END
NUMBER F_ESERCIZIO 4
BEGIN
PROMPT 2 2 "Esercizio "
FLAGS "Z"
USE CCE
JOIN ESC ALIAS 105 INTO CODTAB==CODTAB
INPUT CODTAB F_ESERCIZIO
DISPLAY "Codice esercizio" CODTAB
DISPLAY "Data inizio@15" 105@->D0
DISPLAY "Data fine@15" 105@->D1
OUTPUT F_ESERCIZIO CODTAB
OUTPUT F_DATAINIZIO 105@->D0
OUTPUT F_DATAFINE 105@->D1
CHECKTYPE REQUIRED
FIELD CODTAB[1,4]
PROMPT 2 2 "Esercizio "
FLAGS "Z"
USE CCE
JOIN ESC ALIAS 105 INTO CODTAB==CODTAB
INPUT CODTAB F_ESERCIZIO
DISPLAY "Codice esercizio" CODTAB
DISPLAY "Data inizio@15" 105@->D0
DISPLAY "Data fine@15" 105@->D1
OUTPUT F_ESERCIZIO CODTAB
OUTPUT F_DATAINIZIO 105@->D0
OUTPUT F_DATAFINE 105@->D1
CHECKTYPE REQUIRED
END
DATE F_DATAINIZIO
BEGIN
PROMPT 20 2 "Data inizio "
FLAGS "D"
PROMPT 20 2 "Data inizio "
FLAGS "D"
END
DATE F_DATAFINE
@ -59,49 +58,47 @@ END
NUMBER F_GRUPPO 2
BEGIN
PROMPT 2 3 "Gruppo "
FLAGS "Z"
USE CCB KEY 1
JOIN %CGR ALIAS 106 INTO CODTAB==CODTAB[5,6]
INPUT CODTAB[1,4] F_ESERCIZIO SELECT
INPUT CODTAB[5,6] F_GRUPPO
INPUT CODTAB[7,10] F_SPECIE
DISPLAY "Codice" CODTAB[5,6]
DISPLAY "Descrizione@60" 106@->S0
OUTPUT F_GRUPPO CODTAB[5,6]
OUTPUT F_D_GRUPPO 106@->S0
CHECKTYPE NORMAL
FIELD CODTAB[5,6]
PROMPT 2 3 "Gruppo "
FLAGS "Z"
USE CCB KEY 1
JOIN %CGR ALIAS 106 INTO CODTAB==CODTAB[5,6]
INPUT CODTAB[1,4] F_ESERCIZIO SELECT
INPUT CODTAB[5,6] F_GRUPPO
INPUT CODTAB[7,10] F_SPECIE
DISPLAY "Codice" CODTAB[5,6]
DISPLAY "Descrizione@60" 106@->S0
OUTPUT F_GRUPPO CODTAB[5,6]
OUTPUT F_D_GRUPPO 106@->S0
CHECKTYPE NORMAL
END
STRING F_SPECIE 4
BEGIN
PROMPT 2 4 "Specie "
FLAGS "_"
USE CCB KEY 1
JOIN %CAT ALIAS 107 INTO CODTAB[1,2]==CODTAB[5,6] CODTAB[3,6]==CODTAB[7,10]
INPUT CODTAB[1,4] F_ESERCIZIO SELECT
INPUT CODTAB[5,6] F_GRUPPO SELECT
INPUT CODTAB[7,10] F_SPECIE
DISPLAY "Gruppo" CODTAB[5,6]
DISPLAY "Specie" CODTAB[7,10]
DISPLAY "Descrizione@60" 107@->S0
OUTPUT F_SPECIE CODTAB[7,10]
OUTPUT F_D_SPECIE 107@->S0
CHECKTYPE NORMAL
FIELD CODTAB[7,10]
PROMPT 2 4 "Specie "
FLAGS "_"
USE CCB KEY 1
JOIN %CAT ALIAS 107 INTO CODTAB[1,2]==CODTAB[5,6] CODTAB[3,6]==CODTAB[7,10]
INPUT CODTAB[1,4] F_ESERCIZIO SELECT
INPUT CODTAB[5,6] F_GRUPPO SELECT
INPUT CODTAB[7,10] F_SPECIE
DISPLAY "Gruppo" CODTAB[5,6]
DISPLAY "Specie" CODTAB[7,10]
DISPLAY "Descrizione@60" 107@->S0
OUTPUT F_SPECIE CODTAB[7,10]
OUTPUT F_D_SPECIE 107@->S0
CHECKTYPE NORMAL
END
STRING F_D_GRUPPO 60 55
BEGIN
PROMPT 20 3 ""
FLAGS "D"
PROMPT 20 3 ""
FLAGS "D"
END
STRING F_D_SPECIE 60 55
BEGIN
PROMPT 20 4 ""
FLAGS "D"
PROMPT 20 4 ""
FLAGS "D"
END
GROUPBOX DLG_NULL 78 4
@ -147,7 +144,7 @@ BEGIN
FLAGS "Z"
END
GROUPBOX DLG_NULL 78 4
GROUPBOX DLG_NULL 39 3
BEGIN
PROMPT 1 13 "@bRaggruppamenti"
END
@ -156,17 +153,98 @@ BOOLEAN F_GROUP_CODIMP
BEGIN
PROMPT 2 14 "Per impianto "
MESSAGE FALSE CLEAR,F_GROUP_CODLOC
MESSAGE TRUE ENABLE,F_GROUP_CODLOC
MESSAGE TRUE ENABLE,F_GROUP_CODLOC
END
BOOLEAN F_GROUP_CODLOC
BEGIN
PROMPT 2 15 "Per localita' "
PROMPT 20 14 "Per localita' "
END
GROUPBOX DLG_NULL 38 3
BEGIN
PROMPT 41 13 "@bEsclusioni"
END
BOOLEAN F_EXCLUDE_ALIENS
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
ENDPAGE

View File

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

View File

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

View File

@ -8,20 +8,34 @@
class TCesp_per_cms_mask: public TAutomask
{
int _pos_cms, _pos_fase, _pos_cdc, _pos_util, _pos_cop, _pos_fondo;
public:
virtual bool on_field_event(TOperable_field& o, TField_event e, long jolly);
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
{
TSheet_field& ss = sfield(F_RIGHE);
real tot_perc;
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;
}
@ -37,7 +51,7 @@ bool TCesp_per_cms_mask::on_field_event(TOperable_field& o, TField_event e, long
if (residuo > 0)
{
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()))
@ -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
if (somma_perc() != CENTO)
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);
FOR_EACH_SHEET_ROW(ss,i,r)
{
//controllo di esistenza codice commessa
const TString& cms = r->get(ss.cid2index(S_CODCMS));
//controllo di esistenza codici commessa e cdc
const TString& cms = r->get(_pos_cms);
if (cms.blank())
return error_box("Specificare la commessa sulla riga %d", i+1);
//controllo di duplicazione codice commessa
if (lista_cms.is_key(cms))
return error_box("Codice commessa %s duplicato", (const char *)cms);
lista_cms.add(cms);
const TString& cdc = r->get(_pos_cdc);
if (cdc.blank())
return error_box("Specificare il centro di costo sulla riga %d", i+1);
//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;
@ -139,7 +162,7 @@ bool TCesp_per_cms::user_destroy()
int ce4100(int argc, char* argv[])
{
TCesp_per_cms a;
a.run(argc,argv,TR("Inserimento cespiti per commessa"));
a.run(argc,argv,TR("Distribuzione analitica cespiti"));
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_RAGSOC 202
#define F_ESERCIZIO 203
@ -13,7 +13,12 @@
#define F_RIGHE 211
#define S_CODCMS 101
#define S_DESCMS 102
#define S_PERCUTIL 103
#define S_PERCCOPE 104
#define S_FONDO 105
#define S_CODFASE 102
#define S_CODCDC 103
#define S_PERCUTIL 104
#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>
ENDPAGE
PAGE "Anagrafica cespiti per commessa" 0 2 0 0
PAGE "Distribuzione analitica cespiti" 0 2 0 0
GROUPBOX DLG_NULL 78 5
BEGIN
@ -77,16 +77,16 @@ BEGIN
DISPLAY "Codice@10" IDCESPITE
DISPLAY "Descrizione@50" LF_CESPI->DESC
DISPLAY "Cat." LF_CESPI->CODCAT
DISPLAY "Impianto@10" LF_CESPI->CODIMP
DISPLAY "Stabilimento@30" LF_CESPI->STABILIM
DISPLAY "Reparto@30" LF_CESPI->REPARTO
DISPLAY "Commessa@20" CODCMS
DISPLAY "Fase@10" CODFASE
DISPLAY "Centro di costo@20" CODCDC
DISPLAY "Data Acq.@10" LF_CESPI->DTCOMP
DISPLAY "Data Ali.@10" LF_CESPI->DTALIEN
OUTPUT F_ESERCIZIO CODES
OUTPUT F_IDCESPITE IDCESPITE
OUTPUT F_IDCESPITE_N IDCESPITE
OUTPUT F_DESC LF_CESPI->DESC
CHECKTYPE REQUIRED
CHECKTYPE FORCED
FIELD IDCESPITE
KEY 1
GROUP 1
@ -95,7 +95,7 @@ END
STRING F_DESC 60 50
BEGIN
PROMPT 24 4 ""
FLAGS "DP"
FLAGS "DPG"
GROUP 1
END
@ -118,6 +118,7 @@ BEGIN
OUTPUT F_IDCESPITE_N IDCESPITE
OUTPUT F_DESC_N DESC
CHECKTYPE REQUIRED
FIELD IDCESPITE
KEY 1
GROUP 2
END
@ -144,11 +145,12 @@ END
SPREADSHEET F_RIGHE
BEGIN
PROMPT 2 6 ""
ITEM "Codice commessa"
ITEM "Descrizione@50"
ITEM "Commessa@20"
ITEM "Fase@10"
ITEM "Centro di costo@20"
ITEM "% Utilizzo"
ITEM "% Copertura"
ITEM "Valore fondo per commessa"
ITEM "Valore fondo"
USE LF_SALCECMS KEY NRIGA
INPUT CODES F_ESERCIZIO
INPUT IDCESPITE F_IDCESPITE
@ -160,11 +162,11 @@ ENDPAGE
ENDMASK
//maschera di riga dello sheet
PAGE "Riga" -1 -1 64 8
PAGE "Riga" -1 -1 76 15
STRING S_CODCMS 20
BEGIN
PROMPT 1 1 "Codice commessa "
PROMPT 1 1 "Commessa "
USE LF_COMMESSE
INPUT CODCMS S_CODCMS
DISPLAY "Codice@20" CODCMS
@ -176,15 +178,63 @@ BEGIN
FLAGS "U"
END
STRING S_DESCMS 50 45
STRING S_DESCMS 50 37
BEGIN
PROMPT 1 2 "Descrizione "
FLAGS "D"
PROMPT 35 1 ""
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
NUMBER S_PERCUTIL 6 2
BEGIN
PROMPT 1 3 "Percentuale utilizzo "
PROMPT 1 4 "% utilizzo "
CHECKTYPE REQUIRED
FLAGS "U"
FIELD PERCUTIL
@ -192,30 +242,34 @@ END
NUMBER S_PERCCOPE 6 2
BEGIN
PROMPT 1 4 "Percentuale copertura "
PROMPT 1 5 "% copertura "
FLAGS "U"
FIELD PERCCOPE
END
CURRENCY S_FONDO 18
BEGIN
PROMPT 1 5 "Valore fondo per commessa "
PROMPT 1 6 "Valore fondo "
FIELD FONDO
END
BUTTON DLG_OK 10 2
ENDPAGE
TOOLBAR "bottombar" 0 0 0 2
BUTTON DLG_OK 2 2
BEGIN
PROMPT -13 -1 ""
PROMPT 1 1 ""
END
BUTTON DLG_CANCEL 10 2
BUTTON DLG_CANCEL 2 2
BEGIN
PROMPT -23 -1 ""
PROMPT 2 1 ""
END
BUTTON DLG_DELREC 10 2
BUTTON DLG_DELREC 2 2
BEGIN
PROMPT -33 -1 ""
PROMPT 3 1 ""
END
ENDPAGE

View File

@ -1,11 +1,15 @@
#include <diction.h>
#include <prefix.h>
#include <recarray.h>
#include <sheet.h>
#include <diction.h>
#include "celib.h"
#include "cespi.h"
#include "salcecms.h"
#include "../cg/cglib01.h"
#include "../ca/commesse.h"
///////////////////////////////////////////////////////////
// Ditta cespiti
@ -429,3 +433,89 @@ bool null_fields(const TRectype& rec, const char* fld0, const char* fld1, const
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* 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

View File

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

View File

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