Adicionar novos formulários de entidade personalizada (Project Service Automation 2.x)
Importante
O Dynamics 365 Project Service Automation evoluiu para Dynamics 365 Project Operations. Para mais informações, consulte Transição do Project Service Automation.
Campo Tipo
O Dynamics 365 Project Service Automation baseia-se no campo Tipo (msdyn_ordertype) das entidades Oportunidade, Proposta, Encomenda e Fatura para distinguir as versões baseadas em trabalho destas entidades das versões baseadas em itens e baseadas em serviços. As versões baseadas em trabalho destas entidades são processadas pelo PSA. Muitas das lógicas de negócio do lado do cliente e do lado do servidor da solução dependem do campo Tipo. Consequentemente, é importante que o campo seja inicializado com um valor correto quando as entidades são criadas. Um valor incorreto pode provocar comportamentos incorretos e alguma lógica de negócio poderá não ser executada corretamente.
Mudança automática de formulários
Para evitar a possível corrupção de dados e comportamentos inesperados causados pela inicialização e edição incorretas dos registos de entidade de vendas, o PSA agora inclui lógica para a mudança automática de formulários em formulários fornecidos com o programa. Esta lógica direciona os utilizadores para o formulário correto para trabalharem com a versão baseada em trabalho ou qualquer outro tipo de entidade Oportunidade, Proposta, Encomenda ou Fatura. Quando um utilizador abre a versão baseada em trabalho de uma entidade Oportunidade, Proposta, Encomenda ou Fatura, o formulário é mudado para Informações do Projeto.
A lógica de mudança automática do formulário depende do mapeamento entre o valor formId e o campo msdyn_ordertype. Todos os formulários fornecidos com o programa foram adicionados a esse mapeamento. No entanto, os formulários personalizados têm de ser adicionados manualmente para indicar qual versão da entidade pretendem processar. É baseado no campo msdyn_ordertype. Se a mudança de formulários estiver a faltar no mapeamento, a lógica será mudada para o formulário de base, com base no valor guardado no campo msdyn_ordertype da entidade.
Adicionar formulários personalizados e ativar a lógica de mudança de formulários
O exemplo que se segue mostra como adicionar um formulário personalizado, Informações do Meu Projeto, para que o mesmo funcione com oportunidades baseadas em trabalho. O mesmo processo é utilizado para adicionar formulários personalizados para que funcionem com propostas, encomendas e faturas.
Siga estes passos para criar uma versão personalizada do formulário Informações do Projeto.
Na entidade Oportunidade, abra o formulário Informações do Projeto e guarde uma cópia sob o nome Informações do Meu Projeto.
Abra o novo formulário e, nas propriedades, certifique-se de que os scripts de inicialização de formulários do formulário Informações do Projeto estão presentes.
Importante
Não remova os scripts. Caso contrário, poderão ser inicializados incorretamente alguns dados.
Verifique se o campo Tipo (msdyn_ordertype) está presente no formulário.
Importante
Não remova este campo. Caso contrário, os scripts de inicialização falharão.
Localize o valor formId do novo formulário. Pode concluir este passo de duas maneiras:
- Exporte o formulário Informações do Meu Projeto como parte de uma solução não gerida e procure o valor formId no ficheiro customization.xml da solução exportada.
- Abra o formulário Informações do Meu Projeto no editor de formulários e, em seguida, procure o identificador exclusivo global (GUID) junto do parâmetro fromId no URL, como mostrado na ilustração seguinte.
Crie um mapeamento msdyn_ordertype para o valor formId editando o recurso Web msdyn_/SalesDocument/PSSalesDocumentCustomFormIds.js. Remova o código do recurso e substitua-o pelo seguinte código.
define(["require", "exports"], function (require, exports) { "use strict"; var SalesDocumentCustomFormIds = (function () { function SalesDocumentCustomFormIds() { } SalesDocumentCustomFormIds.overwriteFormIds = function (mappedFormIds) { /* ---- Notes ---- mappedFormIds[SalesEntity][OrderType] => The array of forms IDs that support particular entity and order type Add or overwrite customized formId for the particular entity and order type by calling: mappedFormIds[<EntityType>][<msdyn_ordertype>].push("<formId>"); Allowed msdyn_ordertype values for reference: ServiceBased: 690970002 (Field Service version of the entity) WorkBased: 192350001 (PSA version of the entity) ItemBased: 192350000 (Regular out of the box entity) Uncomment and update one of the following lines to register custom PSA form for required entity: */ //mappedFormIds[1][192350001].push("<formId>"); //Quote //mappedFormIds[5][192350001].push("<formId>"); //Quote Line //mappedFormIds[2][192350001].push("<formId>"); //Sales Order //mappedFormIds[6][192350001].push("<formId>"); //Sales Order Line // In this example we have added new form for Opportunity mappedFormIds[0][192350001].push("192EE537-DCC4-45D3-B7AF-EA694B9113D2"); //Opportunity //mappedFormIds[4][192350001].push("<formId>"); //Opportunity Line }; return SalesDocumentCustomFormIds; }()); exports.default = SalesDocumentCustomFormIds; });
Guarde e publique as personalizações.