Tiempo aproximado de lectura: 00:05:00 min
Duda
Como colocar el objeto de negocio localizado en Smart View ?
Ambiente
FRAMEWORK - Framework (Línea Protheus) MI - Todas las versiones 12
Solución
Nuevos métodos
preesquema()
Método que se llamará antes de getSchema() , aquí se pueden agregar nuevos campos al esquema, que no están en el esquema principal y que pueden ser campos nuevos, campos de totalización, campos que solo existen en un país específico, etc.
preDatos()
Método que será llamado antes de getData() , este método se puede utilizar para actualizar la consulta con los campos que se pueden agregar al objeto de negocio ubicado o para agregar el lugar donde se debe ubicar.
procesar datos()
Este método debe llamarse antes de enviar los datos en getData() para que se agreguen los datos de los campos que estarán en el objeto de negocio localizado.
¿Cómo funcionará?
1er escenario:
Los objetos con la anotación país=TODOS se mostrarán para todos los países y toda la información de ese objeto se heredará en el objeto comercial localizado.
A partir de este punto, la información/datos de la ubicación se debe agregar a otra fuente, heredando la clase principal. Y estas fuentes localizadas deben venir con el activo igual a .F.
Sugerimos usar propiedades en la clase para que sea visible en los objetos. Si se usan variables locales, el objeto localizado no heredará estas variables.
2do Escenario:
Si el objeto es exclusivo de un país, por ejemplo, un informe fiscal solo para Brasil, el país de anotación debe ser igual a BRA y el activo debe ser .T.
¿Cómo serán las anotaciones y la herencia de objetos de negocio?
1er Escenario:
Si tengo la clase MATR190TReportsBusinessObject como objeto de negocio predeterminado, así es como se verá la anotación y la herencia de la clase:
@totvsFrameworkTReportsIntegratedProvider(active=.T., team="SIGACOM", tables="SA5", name="Produto X Fornecedor", country="ALL", initialRelease="12.1.2210")class MATR190TReportsBusinessObject from totvs.framework.treports.integratedprovider.IntegratedProvider |
Para el objeto comercial localizado en el país ARG, tendremos el siguiente cambio:
@totvsFrameworkTReportsIntegratedProvider(active=.F., tables="SA5", team="SIGACOM", name="Produto X Fornecedor", country="ARG", initialRelease="12.1.2210")class MATR190TReportsBusinessObjectARG from custom.materiais.MATR190TReportsBusinessObject |
Nota: El objeto comercial ubicado hereda la clase principal (predeterminada) que se creó y debe venir con active=.F. para que no aparezca duplicado en Smart View
2do Escenario:
@totvsFrameworkTReportsIntegratedProvider(active=.T., team="SIGACOM", tables="SA5", name="Produto X Fornecedor", country="BRA", initialRelease="12.1.2210")class ProdFornTReportsBusinessObjectBRA from totvs.framework.treports.integratedprovider.IntegratedProvider |
Nota: En este caso el activo es igual a .T. ya que es un objeto exclusivo sólo para Brasil
Ejemplo completo
Objeto estándar:
Objeto localizado (ARG):
Resultados en Vista inteligente
Objeto estándar:
Objeto localizado ARG:


0 Comentarios