Oops. Fixed the missing comma but the error is still there in a different way
integration.tests.actions.ToDoItemTest_completed Time elapsed: 0 sec <<< > ERROR! > > java.lang.RuntimeException: > org.datanucleus.exceptions.NucleusDataStoreException: An exception was > thrown while adding/validating class(es) : user lacks privilege or object > not found: fromParty > > java.sql.SQLSyntaxErrorException: user lacks privilege or object not > found: fromParty > > > On Wed, Feb 26, 2014 at 3:31 PM, Dan Haywood <[email protected]>wrote: > You are still missing the comma before "fromParty" field in the SELECT > clause. > > @Extension(vendorName = "datanucleus", key = "view-definition", > > value = "CREATE VIEW \"DailySalesTotalForParty\" " + > > "( " + > > " {this.transactionDate}, " + > > " {this.totalAmount} " + <<<<<<<<<<<<<< > HERE <<<<<<<<<<<<< > > " {this.fromParty} " + > > ") AS " + > > > > > On 26 February 2014 14:20, james agada <[email protected]> wrote: > > > This is my class - cleaned up > > > > /* > > > > * Licensed to the Apache Software Foundation (ASF) under one > > > > * or more contributor license agreements. See the NOTICE file > > > > * distributed with this work for additional information > > > > * regarding copyright ownership. The ASF licenses this file > > > > * to you under the Apache License, Version 2.0 (the > > > > * "License"); you may not use this file except in compliance > > > > * with the License. You may obtain a copy of the License at > > > > * > > > > * http://www.apache.org/licenses/LICENSE-2.0 > > > > * > > > > * Unless required by applicable law or agreed to in writing, > > > > * software distributed under the License is distributed on an > > > > * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY > > > > * KIND, either express or implied. See the License for the > > > > * specific language governing permissions and limitations > > > > * under the License. > > > > */ > > > > > > package dom.todo; > > > > > > import java.math.BigDecimal; > > > > import java.util.List; > > > > > > import javax.jdo.annotations.Extension; > > > > import javax.jdo.annotations.IdentityType; > > > > import javax.jdo.annotations.InheritanceStrategy; > > > > > > import org.joda.time.LocalDate; > > > > > > import org.apache.isis.applib.AbstractViewModel; > > > > import org.apache.isis.applib.annotation.Bookmarkable; > > > > import org.apache.isis.applib.annotation.DescribedAs; > > > > import org.apache.isis.applib.annotation.Hidden; > > > > import org.apache.isis.applib.annotation.Immutable; > > > > import org.apache.isis.applib.annotation.Optional; > > > > import org.apache.isis.applib.annotation.Render; > > > > import org.apache.isis.applib.annotation.Render.Type; > > > > import org.apache.isis.applib.annotation.Title; > > > > > > > > > > @javax.jdo.annotations.PersistenceCapable( > > > > identityType = IdentityType.NONDURABLE, > > > > table = "DailySalesTotalForParty", > > > > extensions = { > > > > @Extension(vendorName = "datanucleus", key = "view-definition", > > > > value = "CREATE VIEW \"DailySalesTotalForParty\" " + > > > > "( " + > > > > " {this.transactionDate}, " + > > > > " {this.totalAmount} " + > > > > " {this.fromParty} " + > > > > ") AS " + > > > > "SELECT " + > > > > " \"Transaction\".\"transactionDate\" , " + > > > > > > " SUM(\"Transaction\".\"faceValue\") AS > > \"totalAmount\" ," + > > > > " \"Transaction\".\"fromParty\" " + > > > > " FROM " + > > > > " \"Transaction\" " + > > > > "GROUP BY " + > > > > " \"transactionDate\", " + > > > > " \"fromParty\" " + > > > > "ORDER BY " + > > > > " \"transactionDate\" ") > > > > }) > > > > @javax.jdo.annotations.Inheritance(strategy = > > InheritanceStrategy.NEW_TABLE) > > > > @javax.jdo.annotations.Queries( { > > > > @javax.jdo.annotations.Query( > > > > name="DailySalesForParty", language="JDOQL", > > > > value="SELECT FROM dom.todo.DailySalesTotalForParty WHERE fromParty == > > :party ") > > > > }) > > > > @Bookmarkable > > > > @Immutable > > > > public class DailySalesTotalForParty { > > > > > > // ////////////////////////////////////// > > > > /** > > > > @javax.jdo.annotations.Column(allowsNull = "false") > > > > private String fromParty; > > > > > > /** > > > > * Lazily loaded from the {@link #getReference() reference}, provides > > access > > > > * to the underlying {@link Property}. > > > > @Optional > > > > @Title(sequence = "1") > > > > public String getFromParty() { > > > > return fromParty; > > > > } > > > > > > public void setFromParty(final String party) { > > > > this.fromParty = party; > > > > } > > > > */ > > > > // ////////////////////////////////////// > > > > private java.math.BigInteger fromParty; > > > > @Optional > > > > public java.math.BigInteger getFromParty(){ > > > > return this.fromParty; > > > > } > > > > public void setFromParty_Party_ID_OID(java.math.BigInteger id ){ > > > > this.fromParty =id; > > > > } > > > > > > ////////////////////////////////////// > > > > private LocalDate transactionDate; > > > > > > @Title(sequence = "2", prepend = " - ") > > > > public LocalDate getTransactionDate() { > > > > return transactionDate; > > > > } > > > > > > public void setTransactionDate(final LocalDate dueDate) { > > > > this.transactionDate = dueDate; > > > > } > > > > > > // ////////////////////////////////////// > > > > > > private BigDecimal totalAmount; > > > > > > public BigDecimal getTotalAmount() { > > > > return totalAmount; > > > > } > > > > > > public void setTotalAmount(final BigDecimal total) { > > > > this.totalAmount = total; > > > > } > > > > > > > > > > // ////////////////////////////////////// > > > > > > /** @Render(Type.EAGERLY) > > > > public List<Transaction> getTransactions() { > > > > return transactions.findTransactionForPartyOnDate(getFromParty(), > > getTransactionDate()); > > > > } > > > > */ > > > > // ////////////////////////////////////// > > > > > > private Partytypes partytypes; > > > > > > final public void injectPartytypes(final Partytypes partytypes) { > > > > this.partytypes = partytypes; > > > > } > > > > > > private Transactions transactions; > > > > > > final public void injectTransactions(final Transactions transactions) > > { > > > > this.transactions = transactions; > > > > } > > > > > > } > > > > > > This is the error > > > > > > 15:34:03,784 [Schema main DEBUG] CREATE VIEW > >> "DailySalesTotalForParty" ( "transactionDate", "totalAmount" > >> "fromParty" ) AS SELECT "Transaction"."transactionDate" , > >> SUM("Transaction"."faceValue") AS "totalAmount" , > >> "Transaction"."fromParty" FROM "Transaction" GROUP BY > >> "transactionDate", "fromParty" ORDER BY "transactionDate" > >> > >> 15:34:03,790 [Datastore main ERROR] Error thrown > >> executing CREATE VIEW "DailySalesTotalForParty" ( "transactionDate", > >> "totalAmount" "fromParty" ) AS SELECT > "Transaction"."transactionDate" > >> , SUM("Transaction"."faceValue") AS "totalAmount" , > >> "Transaction"."fromParty" FROM "Transaction" GROUP BY > >> "transactionDate", "fromParty" ORDER BY "transactionDate" : > unexpected > >> token: fromParty required: ) > >> > >> java.sql.SQLSyntaxErrorException: unexpected token: fromParty required: > ) > >> > >> at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source) > >> > >> at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source) > >> > >> at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source) > >> > >> at org.hsqldb.jdbc.JDBCStatement.execute(Unknown Source) > >> > >> > > SQL seems ok, what am i missing? > > > > > > > > > > On Wed, Feb 26, 2014 at 1:46 PM, GESCONSULTOR - Óscar Bou < > > [email protected]> wrote: > > > >> Hi, James. > >> > >> I think that the GROUP BY clause should include all fields referenced in > >> the SELECT that are not part of aggregation formulas (like SUM, AVG, > MIN, > >> MAX, etc.). > >> > >> As "Transaction"."fromParty_Party_ID_OID" is referenced on the SELECT > >> part without being included on any of those aggregation formulas, it > should > >> be included on the GROUP BY section. > >> > >> HTH, > >> > >> Oscar > >> > >> > >> > >> El 26/02/2014, a las 13:38, james agada <[email protected]> > escribió: > >> > >> Took your advice and got it to work when I do not have the fromParty > >> attribute. What could i be doing wrong. This is the error > >> > >> 47:29,831 [Schema main DEBUG] Check of existence > of > >> > >> "DailySalesTotalForParty" returned no table > >> > >> 13:47:29,831 [Schema main DEBUG] Check of > existence > >> of "DailySalesTotalForParty" returned no table > >> > >> 13:47:29,831 [Schema main DEBUG] Creating table > >> "DailySalesTotalForParty" > >> > >> 13:47:29,831 [Schema main DEBUG] Creating table > >> "DailySalesTotalForParty" > >> > >> 13:47:29,831 [Schema main DEBUG] Creating table > >> "DailySalesTotalForParty" > >> > >> 13:47:29,832 [Schema main DEBUG] CREATE VIEW > >> "DailySalesTotalForParty" ( "transactionDate", "totalAmount" > >> "fromParty" ) AS SELECT "Transaction"."transactionDate" , > >> SUM("Transaction"."faceValue") AS "totalAmount" , > >> "Transaction"."fromParty_Party_ID_OID" AS "fromParty" FROM > >> "Transaction" GROUP BY "transactionDate" ORDER BY "transactionDate" > >> > >> 13:47:29,832 [Schema main DEBUG] CREATE VIEW > >> "DailySalesTotalForParty" ( "transactionDate", "totalAmount" > >> "fromParty" ) AS SELECT "Transaction"."transactionDate" , > >> SUM("Transaction"."faceValue") AS "totalAmount" , > >> "Transaction"."fromParty_Party_ID_OID" AS "fromParty" FROM > >> "Transaction" GROUP BY "transactionDate" ORDER BY "transactionDate" > >> > >> 13:47:29,832 [Schema main DEBUG] CREATE VIEW > >> "DailySalesTotalForParty" ( "transactionDate", "totalAmount" > >> "fromParty" ) AS SELECT "Transaction"."transactionDate" , > >> SUM("Transaction"."faceValue") AS "totalAmount" , > >> "Transaction"."fromParty_Party_ID_OID" AS "fromParty" FROM > >> "Transaction" GROUP BY "transactionDate" ORDER BY "transactionDate" > >> > >> 13:47:29,833 [Datastore main ERROR] Error thrown > >> executing CREATE VIEW "DailySalesTotalForParty" ( "transactionDate", > >> "totalAmount" "fromParty" ) AS SELECT > "Transaction"."transactionDate" > >> , SUM("Transaction"."faceValue") AS "totalAmount" , > >> "Transaction"."fromParty_Party_ID_OID" AS "fromParty" FROM > >> "Transaction" GROUP BY "transactionDate" ORDER BY "transactionDate" > : > >> unexpected token: fromParty required: ) > >> > >> java.sql.SQLSyntaxErrorException: unexpected token: fromParty required: > ) > >> > >> at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source) > >> > >> at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source) > >> > >> at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source) > >> > >> > >> > >> And this is the class now > >> > >> package dom.todo; > >> > >> > >> import java.math.BigDecimal; > >> > >> import java.util.List; > >> > >> > >> import javax.jdo.annotations.Extension; > >> > >> import javax.jdo.annotations.IdentityType; > >> > >> import javax.jdo.annotations.InheritanceStrategy; > >> > >> > >> import org.joda.time.LocalDate; > >> > >> > >> import org.apache.isis.applib.AbstractViewModel; > >> > >> import org.apache.isis.applib.annotation.Bookmarkable; > >> > >> import org.apache.isis.applib.annotation.DescribedAs; > >> > >> import org.apache.isis.applib.annotation.Hidden; > >> > >> import org.apache.isis.applib.annotation.Immutable; > >> > >> import org.apache.isis.applib.annotation.Optional; > >> > >> import org.apache.isis.applib.annotation.Render; > >> > >> import org.apache.isis.applib.annotation.Render.Type; > >> > >> import org.apache.isis.applib.annotation.Title; > >> > >> > >> > >> > >> /** > >> > >> * View model that provides a summary of the sales made on a given day by > >> each party > >> > >> @javax.jdo.annotations.PersistenceCapable( > >> > >> identityType = IdentityType.NONDURABLE, > >> > >> table = "DailySalesTotalForParty", > >> > >> extensions = { > >> > >> @Extension(vendorName = "datanucleus", key = "view-definition", > >> > >> value = "CREATE VIEW \"DailySalesTotalForParty\" " + > >> > >> "( " + > >> > >> " {this.transactionDate}, " + > >> > >> " {this.fromParty}, " + > >> > >> " {this.transactiontype}, " + > >> > >> " {this.totalAmount} " + > >> > >> ") AS " + > >> > >> "SELECT " + > >> > >> " \"Tranaction\".\"transactionDate\" , " + > >> > >> " \"Transaction.\".\"fromParty\", " + > >> > >> " \"Transaction.\".\"transactiontype\", " + > >> > >> " SUM(\"Transaction\".\"facevalue\") AS \"totalAmount\", " + > >> > >> " FROM \"Transaction\" " + > >> > >> "GROUP BY " + > >> > >> " \"fromParty\", " + > >> > >> " \"transactionDate\" , " + > >> > >> " \"transactiontype\"" + > >> > >> "ORDER BY " + " \"fromParty\", " + > >> > >> " \"transactionDate\" , " + > >> > >> " \"transactiontype\"" ) > >> > >> }) > >> > >> > >> > >> */ > >> > >> @javax.jdo.annotations.PersistenceCapable( > >> > >> identityType = IdentityType.NONDURABLE, > >> > >> table = "DailySalesTotalForParty", > >> > >> extensions = { > >> > >> @Extension(vendorName = "datanucleus", key = "view-definition", > >> > >> value = "CREATE VIEW \"DailySalesTotalForParty\" " + > >> > >> "( " + > >> > >> " {this.transactionDate}, " + > >> > >> " {this.totalAmount} " + > >> > >> " {this.fromParty} " + > >> > >> ") AS " + > >> > >> "SELECT " + > >> > >> " \"Transaction\".\"transactionDate\" , " + > >> > >> > >> " SUM(\"Transaction\".\"faceValue\") AS > >> \"totalAmount\" ," + > >> > >> " \"Transaction\".\"fromParty_Party_ID_OID\" AS > >> \"fromParty\" " + > >> > >> " FROM " + > >> > >> " \"Transaction\" " + > >> > >> "GROUP BY " + > >> > >> " \"transactionDate\" " + > >> > >> "ORDER BY " + > >> > >> " \"transactionDate\" ") > >> > >> }) > >> > >> @javax.jdo.annotations.Inheritance(strategy = > >> InheritanceStrategy.NEW_TABLE) > >> > >> @javax.jdo.annotations.Queries( { > >> > >> @javax.jdo.annotations.Query( > >> > >> name="DailySalesForParty", language="JDOQL", > >> > >> value="SELECT FROM dom.todo.DailySalesTotalForParty WHERE fromParty == > >> :party ") > >> > >> }) > >> > >> @Bookmarkable > >> > >> @Immutable > >> > >> public class DailySalesTotalForParty { > >> > >> > >> // ////////////////////////////////////// > >> > >> /** > >> > >> @javax.jdo.annotations.Column(allowsNull = "false") > >> > >> private String fromParty; > >> > >> > >> /** > >> > >> * Lazily loaded from the {@link #getReference() reference}, provides > >> access > >> > >> * to the underlying {@link Property}. > >> > >> @Optional > >> > >> @Title(sequence = "1") > >> > >> public String getFromParty() { > >> > >> return fromParty; > >> > >> } > >> > >> > >> public void setFromParty(final String party) { > >> > >> this.fromParty = party; > >> > >> } > >> > >> */ > >> > >> // ////////////////////////////////////// > >> > >> private java.math.BigInteger fromParty; > >> > >> @Optional > >> > >> public java.math.BigInteger getFromParty(){ > >> > >> return this.fromParty; > >> > >> } > >> > >> public void setFromParty_Party_ID_OID(java.math.BigInteger id ){ > >> > >> this.fromParty =id; > >> > >> } > >> > >> > >> ////////////////////////////////////// > >> > >> private LocalDate transactionDate; > >> > >> > >> @Title(sequence = "2", prepend = " - ") > >> > >> public LocalDate getTransactionDate() { > >> > >> return transactionDate; > >> > >> } > >> > >> > >> public void setTransactionDate(final LocalDate dueDate) { > >> > >> this.transactionDate = dueDate; > >> > >> } > >> > >> > >> // ////////////////////////////////////// > >> > >> > >> private BigDecimal totalAmount; > >> > >> > >> public BigDecimal getTotalAmount() { > >> > >> return totalAmount; > >> > >> } > >> > >> > >> public void setTotalAmount(final BigDecimal total) { > >> > >> this.totalAmount = total; > >> > >> } > >> > >> > >> > >> > >> // ////////////////////////////////////// > >> > >> > >> /** @Render(Type.EAGERLY) > >> > >> public List<Transaction> getTransactions() { > >> > >> return transactions.findTransactionForPartyOnDate(getFromParty(), > >> getTransactionDate()); > >> > >> } > >> > >> */ > >> > >> // ////////////////////////////////////// > >> > >> > >> private Partytypes partytypes; > >> > >> > >> final public void injectPartytypes(final Partytypes partytypes) { > >> > >> this.partytypes = partytypes; > >> > >> } > >> > >> > >> private Transactions transactions; > >> > >> > >> final public void injectTransactions(final Transactions > transactions) { > >> > >> this.transactions = transactions; > >> > >> } > >> > >> > >> } > >> > >> > >> > >> On Mon, Feb 24, 2014 at 11:44 PM, Dan Haywood > >> <[email protected]>wrote: > >> > >> On 24 February 2014 21:38, james agada <[email protected]> wrote: > >> > >> You are right. It comes from this definition - not sure what is wrong > >> > >> with > >> > >> it > >> > >> I can see several issues, some trivial, some probably the cause... > >> > >> > >> If, once you've addressed these, there are still issues, then I suggest > >> you > >> strip the class back to a single field, get that working, and then build > >> it > >> up bit by bit... > >> > >> Dan > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> * /* * Licensed to the Apache Software Foundation (ASF) under one * or > >> more contributor license agreements. See the NOTICE file * distributed > >> with this work for additional information * regarding copyright > >> > >> ownership. > >> > >> The ASF licenses this file * to you under the Apache License, Version > >> > >> 2.0 > >> > >> (the * "License"); you may not use this file except in compliance * > >> > >> with > >> > >> the License. You may obtain a copy of the License at * * > >> http://www.apache.org/licenses/LICENSE-2.0 > >> <http://www.apache.org/licenses/LICENSE-2.0> * * Unless required by > >> applicable law or agreed to in writing, * software distributed under > the > >> License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR > >> CONDITIONS OF ANY * KIND, either express or implied. See the License > >> > >> for > >> > >> the * specific language governing permissions and limitations * under > >> > >> the > >> > >> License. */* > >> > >> (trivial) you probably will want to change the license... > >> > >> > >> > >> > >> * package dom.todo;* > >> > >> (trivial) ... and the package > >> > >> > >> > >> [snip] > >> > >> > >> > >> /** > >> * View model that provides a summary of the sales made on a given day by > >> each party > >> */ > >> @javax.jdo.annotations.PersistenceCapable( > >> identityType = IdentityType.NONDURABLE, > >> table = "DailySalesTotalForParty", > >> extensions = { > >> @Extension(vendorName = "datanucleus", key = "view-definition", > >> value = "CREATE VIEW \"DailySalesTotalForParty\" " + > >> "( " + > >> " {this.transactionDate}, " + > >> > >> * " {this.fromPartyId}, " +* > >> > >> > >> I don't think JDO is clever enough to convert this id into a reference > to > >> a > >> Party (how would it know?) So you should do what we did > >> in InvoiceSummaryForPropertyDueDate in Estatio (which is what I think > you > >> based this on) and make FromParty a derived field that does the lookup > >> from > >> a (new) fromPartyId field. > >> > >> > >> > >> > >> > >> * " {this.transactiontype}, " +* > >> > >> > >> there is no 'transactiontype' field on your class ... > >> > >> > >> > >> " {this.totalAmount} " + > >> ") AS " + > >> "SELECT " + > >> > >> * " \"Tranaction\".\"transactiondate\" , " +* > >> > >> > >> > >> the typo on this line "Tranaction". > >> > >> Also, I suggest keeping capitalization consistent, ie transactionDate, > not > >> transactiondate. > >> > >> > >> > >> " \"Transaction.\".\"fromParty\", " + > >> " \"Transaction.\".\"transactiontype\", " > >> + > >> " SUM(\"Transaction\".\"facevalue\") AS > >> \"totalAmount\", " + > >> " FROM \"Transaction\" " + > >> "GROUP BY " + > >> " \"Transaction\".\"fromParty\", " + > >> " \"Transaction\".\"transactiondate\" , " + > >> " \"Transaction\".\"transactiontype\"" + > >> "ORDER BY " + " > >> \"Transaction\".\"fromParty\", " + > >> " \"Transaction\".\"transactiondate\" , " + > >> " \"Transaction\".\"transactiontype\"" ) > >> }) > >> @javax.jdo.annotations.Inheritance(strategy = > >> InheritanceStrategy.NEW_TABLE) > >> @javax.jdo.annotations.Queries( { > >> @javax.jdo.annotations.Query( > >> name="DailySalesForParty", > >> language="JDOQL", > >> value="SELECT FROM > >> dom.todo.DailySalesTotalForParty WHERE fromParty == :party ") > >> }) > >> @Bookmarkable > >> @Immutable > >> public class DailySalesTotalForParty { > >> > >> // ////////////////////////////////////// > >> > >> > >> @javax.jdo.annotations.Column(allowsNull = "false") > >> private Party fromParty; > >> > >> > >> > >> > >> > >> > >> * /** * Lazily loaded from the {@link #getReference() > >> > >> reference}, > >> > >> provides access * to the underlying {@link Property}. */* > >> > >> > >> > >> This comment is from the Estatio code (but does describe what you should > >> do > >> to resolve "FromParty"). > >> > >> > >> @Optional > >> @Title(sequence = "1") > >> public Party getFromParty() { > >> return fromParty; > >> } > >> > >> public void setFromParty(final Party party) { > >> this.fromParty = party; > >> } > >> > >> // ////////////////////////////////////// > >> > >> private LocalDate transactionDate; > >> > >> @Title(sequence = "2", prepend = " - ") > >> public LocalDate getTransactionDate() { > >> return transactionDate; > >> } > >> > >> public void setTransactionDate(final LocalDate dueDate) { > >> this.transactionDate = dueDate; > >> } > >> > >> // ////////////////////////////////////// > >> > >> private BigDecimal totalAmount; > >> > >> public BigDecimal getTotalAmount() { > >> return totalAmount; > >> } > >> > >> public void setTotalAmount(final BigDecimal total) { > >> this.totalAmount = total; > >> } > >> > >> > >> // ////////////////////////////////////// > >> > >> /** @Render(Type.EAGERLY) > >> public List<Transaction> getTransactions() { > >> return transactions.findTransactionForPartyOnDate(getFromParty(), > >> getTransactionDate()); > >> } > >> **/ > >> // ////////////////////////////////////// > >> > >> private Partytypes partytypes; > >> > >> final public void injectPartytypes(final Partytypes partytypes) { > >> this.partytypes = partytypes; > >> } > >> > >> private Transactions transactions; > >> > >> final public void injectTransactions(final Transactions > >> > >> transactions) { > >> > >> this.transactions = transactions; > >> } > >> > >> } > >> > >> > >> > >> > >> > >> Óscar Bou Bou > >> Responsable de Producto > >> Auditor Jefe de Certificación ISO 27001 en BSI > >> CISA, CRISC, APMG ISO 20000, ITIL-F > >> > >> 902 900 231 / 620 267 520 > >> http://www.twitter.com/oscarbou > >> > >> http://es.linkedin.com/in/oscarbou > >> > >> http://www.GesConsultor.com <http://www.gesconsultor.com/> > >> > >> > >> > >> Este mensaje y los ficheros anexos son confidenciales. Los mismos > >> contienen información reservada que no puede ser difundida. Si usted ha > >> recibido este correo por error, tenga la amabilidad de eliminarlo de su > >> sistema y avisar al remitente mediante reenvío a su dirección > electrónica; > >> no deberá copiar el mensaje ni divulgar su contenido a ninguna persona. > >> Su dirección de correo electrónico junto a sus datos personales constan > >> en un fichero titularidad de Gesdatos Software, S.L. cuya finalidad es > la > >> de mantener el contacto con Ud. Si quiere saber de qué información > >> disponemos de Ud., modificarla, y en su caso, cancelarla, puede hacerlo > >> enviando un escrito al efecto, acompañado de una fotocopia de su D.N.I. > a > >> la siguiente dirección: Gesdatos Software, S.L. , Paseo de la > Castellana, > >> 153 bajo - 28046 (Madrid), y Avda. Cortes Valencianas num. 50, 1ºC - > 46015 > >> (Valencia). Asimismo, es su responsabilidad comprobar que este mensaje o > >> sus archivos adjuntos no contengan virus informáticos, y en caso que los > >> tuvieran eliminarlos. > >> > >> > >> > >> > >> > >> > > >
