Assunto
Produto: | Datasul |
Versões: | |
Ocorrência: | Como customizar o Portal de Pedidos? |
Ambiente: | |
Passo a passo: | |
Observações: | |
Estrutura do Portal
O funcionamento do portal possui as seguintes partes para poder funcionar corretamente:
Onde | AppServer | JBOSS | JBOSS | Browser |
Provê | Lógica de Negócio | WebService Comunicação com Progress | Serviços REST para o Portal | Interface com Usuario |
Customiza | Pontos EPC padrão | - | - | Pontos EPC |
Tecnologia | Progress | - | Java | HTML/CSS/JavaScript |
No AppServer são executadas as Fachadas, DBO´s e API´s padrão do Datasul, todos implementam os pontos EPC necessários para customização, nas DBO´s existem os pontos de EPC padrão, e nas API´s e Fachadas são implementados os pontos de EPC específicos para as regras de negócio, a documentação dos pontos das BO´s e API´s está disponível no documento de técnicas de customização e na documentação de cada BO/API, os pontos de EPC das fachadas para o portal são as seguintes:
Pontos de EPC Progress nas Fachadas (API)
Fachada | Ponto / Parâmetros tt-epc | Descrição |
FCHDIS0036API | getCustomerDetail | Retorna para a tela detalhes do cliente, na TEMP-TABLE existe o campo caracter epcValue que pode ser usado para passar informações para a tela. |
| ttCustomerDetails | Handle da TEMP-TABLE Definida na include fchdis0036.i1 |
Fachada | Ponto / Parâmetros tt-epc | Descrição |
FCHDIS0036API | searchCustomersQueryRep | Ponto epc executado exatamente antes da query dinâmica para pesquisa de clientes ser preparada para buscar os dados, o handle da query poderá ser manipulado para considerar logicas de busca diferenciadas |
| p-prop | Lista separada por ‘|’ com os nomes das propriedades que foram passadas como parâmetros para o serviço |
| p-values | Lista separada por ‘|’ com os valores das propriedades que foram passadas como parâmetros para o serviço. |
| query | Handle do objeto query que pode ser manipulado |
Fachada | Ponto / Parâmetros tt-epc | Descrição |
FCHDIS0036API | searchCustomers | Retorna para a tela a lista dos clientes, na TEMP-TABLE existe o campo caracter epcValue que pode ser usado para passar informações para a tela. |
| ttCustomerDetails | Handle da TEMP-TABLE Definida na include fchdis0036.i1 |
Fachada | Ponto / Parâmetros tt-epc | Descrição |
FCHDIS0037API | afterGetModelItems | Retorna para a tela a lista itens de um modelo, se houver um item com quantidade, este item é adicionado automaticamente. |
| idiModel | Código do modelo de pedido |
| nrPedido | Código do pedido de venda |
| ttSimpleOrderItem | Handle da TEMP-TABLE Definida na include fchdis0038.i1 |
Fachada | Ponto / Parâmetros tt-epc | Descrição |
FCHDIS0038API | afterSearchProducts | Ponto chamado na pesquisa de produtos |
| nrPedido | Código do pedido de venda |
| searchTerm | Termo de pesquisa digitado pelo usuário na tela de pesquisa. |
| ttSimpleOrderItem | Handle da TEMP-TABLE Definida na include fchdis0038.i1 |
Fachada | Ponto / Parâmetros tt-epc | Descrição |
FCHDIS0039API | afterStartNewOrder | Retorna para a tela a temp-table com os dados do pedido após a sua criação. |
| idiModel | Código modelo usado para criar o pedido de venda |
| ttOrder | Handle da TEMP-TABLE Definida na include fchdis0039.i5 |
Fachada | Ponto / Parâmetros tt-epc | Descrição |
FCHDIS0039API | processOrder | Ponto executado antes no momento da liberação do pedido pelo usuário do portal. |
| nrPedido | Código do pedido de venda |
Fachada | Ponto / Parâmetros tt-epc | Descrição |
FCHDIS0039API | afterSaveOrderItem | Ponto executado após salvar o item do pedido no portal |
| nrPedido | Código do pedido de venda |
| nrSeq | Sequência do item |
| itemCode | Código do item |
| itemReference | Código da referência do item |
| ttOrderItem | Handle da TEMP-TABLE Definida na include fchdis0039.i6 |
Fachada | Ponto / Parâmetros tt-epc | Descrição |
FCHDIS0039API | addItems | Ponto chamado antes de incluir itens no pedido, a temp-table contêm os itens que serão incluídos no pedido. |
| nrPedido | Código do pedido de venda |
| ttSimpleOrderItem | Handle da TEMP-TABLE Definida na include fchdis0038.i1 |
Fachada | Ponto / Parâmetros tt-epc | Descrição |
FCHDIS0039API | afterAddItems | Ponto chamado depois de incluir itens no pedido |
| nrPedido | Código do pedido de venda |
Fachada | Ponto / Parâmetros tt-epc | Descrição |
FCHDIS0039API | onCopyOrder | Ponto chamado depois de criar a cópia do pedido e antes de incluir os itens na copia |
| nrPedido | Código do pedido de venda origem |
| newNrPedido | Código do pedido de venda copiado |
| newNrPedcli | Código do pedido do cliente do novo pedido. |
Fachada | Ponto / Parâmetros tt-epc | Descrição |
FCHDIS0039API | afterGetOrder | Ponto chamado na busca do pedido para a tela. |
| nrPedido | Código do pedido de venda |
| ttDetailOrder | Handle da TEMP-TABLE Definida na include fchdis0039.i1 |
| ttDetailOrderItem | Handle da TEMP-TABLE Definida na include fchdis0039.i2 |
Fachada | Ponto / Parâmetros tt-epc | Descrição |
FCHDIS0039API | afterGetDetailOrder | Ponto chamado na busca do pedido para a tela de detalhe de pedido. |
| nrPedido | Código do pedido de venda |
| ttDetailOrder | Handle da TEMP-TABLE Definida na include fchdis0039.i1 |
Fachada | Ponto / Parâmetros tt-epc | Descrição |
FCHDIS0039API | afterGetOrderItem | Ponto chamado na busca do item do pedido para a tela. |
| nrPedido | Código do pedido de venda |
| nrSeq | Sequência do item |
| itemCode | Código do item |
| itemReference | Código de referência do item |
| ttOrderItem | Handle da TEMP-TABLE Definida na include fchdis0039.i6 |
Fachada | Ponto / Parâmetros tt-epc | Descrição |
FCHDIS0039API | afterGetDetailOrderItem | Ponto chamado na busca do item do pedido para a tela de detalhe de pedido. |
| nrPedido | Código do pedido de venda |
| nrSeq | Sequência do item |
| itemCode | Código do item |
| itemReference | Código de referência do item |
| ttDetailOrderItem | Handle da TEMP-TABLE Definida na include fchdis0039.i2 |
Fachada | Ponto / Parâmetros tt-epc | Descrição |
FCHDIS0039API | getPortalOrderSummary | Ponto chamado na busca dos dados do resumo de pedidos. |
| iniDate | Data Inicial do período de pedido |
| endDate | Data final do período de pedido |
| ttPortalOrderSummary | Handle da TEMP-TABLE Definida na include fchdis0039.i4 |
Fachada | Ponto / Parâmetros tt-epc | Descrição |
FCHDIS0039API | afterGetOrderHeader | Ponto chamado na busca do cabeçalho do pedido para a tela de cadastro de pedido. |
| nrPedido | Código do pedido de venda |
| ttOrder | Handle da TEMP-TABLE Definida na include fchdis0039.i5 |
Fachada | Ponto / Parâmetros tt-epc | Descrição |
FCHDIS0039API | beforeSaveOrderPortal | Ponto chamado antes da gravação do cabeçalho do pedido para a tela de cadastro de pedido. |
| nrPedido | Código do pedido de venda |
| ttOrder | Handle da TEMP-TABLE Definida na include fchdis0039.i5 |
Fachada | Ponto / Parâmetros tt-epc | Descrição |
FCHDIS0039API | afterSaveOrder | Ponto chamado depois da gravação do cabeçalho do pedido para a tela de cadastro de pedido. |
| nrPedido | Código do pedido de venda |
| c-estado | Indicador se é inclusão ou alteração (Create/Update) |
| ttOrder | Handle da TEMP-TABLE Definida na include fchdis0039.i5 |
Fachada | Ponto / Parâmetros tt-epc | Descrição |
FCHDIS0039API | afterDeleteOrderItem | Ponto chamado depois de excluir um item do pedido |
| nrPedido | Código do pedido de venda |
Fachada | Ponto / Parâmetros tt-epc | Descrição |
FCHDIS0039API | afterGetOrderList | Ponto chamado na busca dos pedidos para a tela de carteira de pedido. |
| dtIni | Data inicial para pedidos |
| cField | Campo de pesquisa |
| cQuery | Termo de pesquisa |
| ttDetailOrder | Handle da TEMP-TABLE Definida na include fchdis0039.i1 |
Fachada | Ponto / Parâmetros tt-epc | Descrição |
FCHDIS0039API | beforePiCompleteOrder | Ponto chamado antes de completar o pedido |
| rowPedVenda | RowId da tabela ped-venda |
Fachada | Ponto / Parâmetros tt-epc | Descrição |
FCHDIS0039API | afterPiCompleteOrder | Ponto chamado depois de completar o pedido |
| rowPedVenda | RowId da tabela ped-venda |
Fachada | Ponto / Parâmetros tt-epc | Descrição |
FCHDIS0039API | beforeSaveOrderItemPortal | Ponto chamado antes de salvar um item do pedido |
| nrPedido | Código do pedido de venda |
| action | Operação: Add/Update |
| tt-ped-item | Handle da TEMP-TABLE definida na include dibo/bodi154.i |
Fachada | Ponto / Parâmetros tt-epc | Descrição |
FCHDIS0039API | addItemsInternal | Ponto chamado antes de incluir um item do pedido |
| cNomeAbrev | Nome abreviado do cliente |
| cNrPedCli | Número do pedido do cliente |
| tt-ped-item | Handle da TEMP-TABLE definida na include dibo/bodi154.i |
| ttSimpleOrderItem | Handle da TEMP-TABLE Definida na include fchdis0038.i1 |
Fachada | Ponto / Parâmetros tt-epc | Descrição |
FCHDIS0039API | afterAddItemsInternal | Ponto chamado depois de incluir um item do pedido |
| cNomeAbrev | Nome abreviado do cliente |
| cNrPedCli | Número do pedido do cliente |
| tt-ped-item | Handle da TEMP-TABLE definida na include dibo/bodi154.i |
| ttSimpleOrderItem | Handle da TEMP-TABLE Definida na include fchdis0038.i1 |
Estrutura para customização HTML
Todas as customizações para telas do portal têm que ser escritas em JavaScript e ficar no JBOSS liberadas no contexto no seguinte padrão de endereço:
Jboss\server\[instancia]\deploy\custom.war\[modulo]\[tela].js | |
Exemplo: Para customizar a tela dts/mpd/order, deve ser criado o arquivo order.js no seguinte diretório do jboss, C:\Jboss\server\instancia8080\deploy\custom.war\mpd\, o arquivo de customização deve ter o mesmo nome do arquivo java script principal, da tela que será customizada.
Customização em HTML está documentada no TDN, é feita através do atributo totvs-custom-element que deve ser adicionada em uma tag HTML com o nome do evento que será utilizado para customizar este elemento.
Customização no Java Script está documentada no TDN, é utilizada para permitir a chamada de pontos de customização nos métodos de controllers das telas, para manipular o comportamento padrão.
Exemplo de Customização: http://tdn.totvs.com/pages/viewpage.action?pageId=185738044
OBS 01: Não é possível customizar o conteúdo dinâmico utilizando ng-include com a diretiva totvs-custom-element, porque o ng-include renderiza o conteúdo após chamar a diretiva de customização, nesse caso deve-se utilizar o atributo onload do ng-include e chamar o evento por um metodo do controller via javascript.
OBS 02: Usando diretivas ng-include aninhadas, onload pode não funcionar, nesse caso deve-se utilizar o evento $includeContentLoaded.
Quando um controller chama um evento de customização com o callCustomEvent, o método homônimo do evento recebe como parâmetro, o que for enviado no callCustomEvent.
Por exemplo:
result = customizationService.callCustomEvent('initEvent', controller);
O método initEvent da customização irá receber o objeto “controller”.
Se o método da customização tiver um retorno, esse valor será retornado pelo método callCustomEvent, se não houver customização, o retorno será sempre ‘ok’.
Pontos EPC nas telas HTML
Os seguintes pontos de EPC estão disponíveis nas telas HTML do Portal:
Tela | Evento | Parâmetros | Descrição |
dts/mpd/customer | |
| afterLoadCustomer | Ponto chamado na busca dos dados do cliente na tela de detalhe do cliente |
| | controller | Referência para a instância do controller da tela |
Tela | Evento | Parâmetros | Descrição |
dts/mpd/order | |
| afterLoadOrder | Ponto chamado na busca dos dados do pedido na tela de cadastro de pedido |
| | controller | Referência para a instância do controller da tela |
Tela | Evento | Parâmetros | Descrição |
dts/mpd/order | |
| onEditOrderItem | Ponto chamado na busca dos dados de um item do pedido para edição. |
| | controller | Referência para a instância do controller da tela |
Tela | Evento | Parâmetros | Descrição |
dts/mpd/orderdetail | afterLoadOrderDetail | Ponto chamado na busca dos dados do pedido na tela de detalhe de pedido |
| | controller | Referência para a instância do controller da tela |
Tela | Evento | Parâmetros | Descrição |
dts/mpd/salesorders | |
| afterLoadOrders | Ponto chamado na renderização do detalhe de cada pedido na lista de pedidos da tela de carteira de pedidos |
| | controller | Referência para a instância do controller da tela |
| | item | Referência para o objeto do pedido que está sendo renderizado na tela. |
| | index | Sequencial na renderização do pedido na tela. |
Pontos de customização nas telas HTML
As seguintes telas possuem pontos de customização com o atributo totvs-custom-element:
Tela | Descrição |
dts/mpd/customer | Detalhe do Cliente |
dts/mpd/customerbill | Títulos dos Clientes |
dts/mpd/customers | Carteira de Clientes |
dts/mpd/invoices | Notas Fiscais dos Clientes |
dts/mpd/model | Seleção de Modelos |
dts/mpd/newmodel | Novo Modelo de Pedido |
dts/mpd/itemmodel | Item do Modelo de Pedido |
dts/mpd/itemsearch | Pesquisa de Item |
dts/mpd/order.edit | Edição do Pedido |
dts/mpd/order | Pedido de Venda |
dts/mpd/orderitem.detail | Detalhe do Item do Pedido |
dts/mpd/orderitem | Item do Pedido |
dts/mpd/orderdetail | Detalhe do Pedido |
dts/mpd/orderhistory | Histórico do Pedido |
dts/mpd/priceitem | Lista de Produtos |
dts/mpd/prices | Pesquisa de Tabela de Preço |
dts/mpd/productdetail | Detalhe do Produto |
dts/mpd/salescharge | Comissões de Vendas |
dts/mpd/salesgoals | Metas de Vendas |
dts/mpd/salesorders | Carteira de Pedidos |
dts/mpd/schedule | Agenda de Visitas |