Adicionando uma caixa de entrada à página de detalhes “Criar pedido”
O fluxo “Criar pedido” é uma ação de Pedido que pertence ao buc-app-order módulo. Nesta lição, você aprenderá como habilitar a personalização do buc-app-order módulo, copiar os recursos necessários para iniciar a personalização e, em seguida, adicionar uma caixa de entrada para capturar o número do pedido de compra do cliente.
Procedimento
- Abra o devtoolkit_docker/orderhub-code/buc-app-order/overrides.json arquivo.
- Para criar um pedido, defina runAsCustomization como verdadeiro para habilitar a personalização para esta rota. Essa configuração instrui o Order Hub a consultar seu código personalizado quando a rota create-order for chamada.Importante: defina runAsCustomization como verdadeiro apenas para as rotas que estão sendo personalizadas no momento. Recomenda-se personalizar no máximo cinco rotas por vez.
- Encontre o código-fonte da página Criar pedido existente.Neste caso, os arquivos estão em buc-app-order/packages/create-order/src/app/features/order/create-order/order-setup/.
- Replique a estrutura da pasta src na pasta src-custom.
- Vá para o buc-app-order/packages/create-order/src-custom/app diretório.
- Crie as pastas recursos/pedido/criar-pedido/configuração-do-pedidoCertifique-se de que o caminho resultante seja: buc-app-order/packages/create-order/src-custom/app/features/order/create-order/order-setup/.
- Vá para o diretório buc-app-order/packages/create-order/src/app/features/order/create-order/order-setup e copie os arquivos order-setup.component.html e order-setup.component.ts.Observação: você não precisa copiar o arquivo.scss, pois este tutorial não altera o estilo dos elementos.
- Cole os arquivos no diretório buc-app-order/packages/create-order/src-custom/app/features/order/create-order/order-setup.Você pode notar alguns erros devido a caminhos relativos. Você pode ignorar esses erros.
- Abra o arquivo src-custom/app/features/order/create-order/order-setup/order-setup.component.html.
- Como você precisa adicionar uma caixa de entrada, analise as caixas de entrada que existem no order-setup.component.html arquivo. Você pode usar a caixa de entrada do número do pedido como ponto de partida. A etapa seguinte utiliza código semelhante ao da caixa de entrada Número do pedido.
- Adicione a nova caixa de entrada na mesma linha do campo existente “Data de cancelamento solicitada”.
Dica: procure por “Data de cancelamento solicitada” e observe que ela está dentro de um div com
class bx--row. Adicione a seguinte caixa de entrada como uma coluna dentro desta linha.<div class="combo-box bx--col-md-3"> <buc-label class="size--sm" [label]="'CREATE_ORDER.ORDER_SETUP.CUSTOMER_PO_ORDER_LABEL' | translate" placeholder="" [(inputValue)]="custPONo" [isDisabled]="isEdit"></buc-label> </div>- Esta caixa de entrada permite que os usuários adicionem um número de ordem de compra do cliente ao pedido que estão criando.
- O valor [label] usa notação de ponto para recuperar a string dos arquivos de tradução JSON. Você criará o en.json arquivo que contém a string literal em etapas posteriores.
- custPONo é uma variável personalizada que armazenará as entradas do usuário. Você atualizará o arquivo.ts para incluir essa nova variável custPONo nas etapas posteriores.
- Configure as cadeias de tradução e as configurações do ambiente.
- Copie a pasta assets de buc-app-order/packages/order-shared e cole em buc-app-order/packages/create-order/src-custom.
- Abra o buc-app-order/angular.json arquivo.
- Substitua o conteúdo atual da matriz projects > create-order > architect > build > configurations > merged > assets pelas seguintes entradas. O objetivo desta etapa é direcionar o módulo para usar os arquivos de recursos personalizados em vez dos arquivos de /order-shared.
"assets": [ { "glob": "**", "input": "packages/create-order/src-merged/assets", "output": "assets" }, { "glob": "*.json", "input": "packages/create-order/src-merged/assets/buc-app-order", "output": "assets/create-order" }, { "glob": "**", "input": "node_modules/@buc/svc-angular/assets", "output": "assets" }, { "glob": "**", "input": "node_modules/@buc/common-components/assets", "output": "assets" } ], - Substitua também o conteúdo na matriz projects > create-order > architect > build > configurations > merged-prod > assets.
- Copie a pasta environments de buc-app-order/packages/create-order/src'' para 'buc-app-order/packages/create-order/src-custom'.
- Vá para o buc-app-order/packages/create-order/src-custom/environments diretório.
- Adicione a seguinte linha ao final dos arquivos environment.tsenvrionment.prod.ts e.
environment.customization = true; - Pare e reinicie o servidor para que as alterações nos arquivos angular.jsonoverrides.json e entrem em vigor.Interrompa o trabalho. Em seguida, execute:
yarn stop-appyarn start-app - Crie uma pasta personalizada em “buc-app-order/packages/create-order/src-custom/assets”. Você pode colocar seus recursos personalizados nesta pasta.
- Crie uma pasta i18n em 'buc-app-order/packages/create-order/src-custom/assets/custom'.
- Crie um arquivo en.json em 'buc-app-order/packages/create-order/src-custom/assets/custom/i18n.O en.json arquivo inclui as strings literais em inglês a serem exibidas na interface do usuário. Você pode adicionar strings traduzidas criando outros arquivos JSON. Nomeie os arquivos com base nos códigos de idioma ISO-639. Por exemplo, fr.json para strings em francês.
- Cole o seguinte conteúdo JSON no arquivo en.json .
Este arquivo de tradução é usado para exibir o texto em inglês para a caixa de entrada que você criou na etapa 9.{ "CREATE_ORDER": { "ORDER_SETUP": { "CUSTOMER_PO_ORDER_LABEL": "Customer purchase order number (optional)" } } }
- Abra o arquivo src-custom/app/features/order/create-order/order-setup/order-setup.component.ts.
- Adicione a seguinte variável à classe OrderSetupComponent.
custPONo = '';
- Como essa caixa de entrada personalizada é semelhante à caixa de entrada Número do pedido existente, você pode procurar no order-setup.component. arquivo a variável ` orderNo ` e copiar sua implementação para a variável ` custPONo `.
- Seguindo a lógica orderNo, adicione o seguinte código à função prepareOrderDetails( ).
this.custPONo = this.orderDetailsData.CustomerPONo;Para obter mais informações sobre a
CustomerPONoAPI, consulte o Javadoc. - Adicione o seguinte código à função ` changeOrder( `.
CustomerPONo: this.custPONo, - O último lugar em que a variável orderNo aparece é na função onText($event, field). Você não precisa usar esta função, portanto ignore esta parte.
- Seguindo a lógica orderNo, adicione o seguinte código à função prepareOrderDetails( ).
- Certifique-se de que o parâmetro seja passado para a chamada da API. A API utilizada para criar um pedido é denominad createOrder e está localizada em buc-app-order/packages/order-shared/src/lib/data-services/create-order-data.service.ts. Agora você precisa personalizar esse arquivo.ts.
- Crie uma pasta de serviços de dados em /packages/create-order/src-custom/app/.
- Copie o buc-app-order/packages/order-shared/src/lib/data-services/create-order-data.service.ts arquivo para esta nova pasta.

- Abra o buc-app-order/packages/create-order/src-custom/app/data-services/create-order-data.service.ts arquivo
- Atualize os caminhos de importação para Modelos e CommonService.
import { Templates } from '@buc/order-shared/lib/constants/order.constants'; import { CommonService } from '@buc/order-shared/lib/data-services/common-service.service'; - Em createOrChangeOrder, adicione o seguinte código para passar o valor CustomerPONo da caixa de entrada.
CustomerPONo: params.CustomerPONo,
- Modifique o buc-app-order/packages/create-order/src-custom/app/app-customization.impl.ts arquivo da seguinte maneira.
- Adicione uma instrução de importação:
import { CreateOrderDataService } from "./data-services/create-order-data.service"; - Adicione o CreateOrderDataService à matriz de provedores.
import { CreateOrderDataService } from "./data-services/create-order-data.service"; export class AppCustomizationImpl { static readonly components = []; static readonly providers = [CreateOrderDataService]; static readonly imports = []; } - Adicione uma instrução de importação:
- No src-custom/app/features/order/create-order/order-setup/order-setup.components.ts arquivo, altere o caminho de importação para o CreateOrderDataService para:
import { CreateOrderDataService } from '../../../../data-services/create-order-data.service';
- Você adicionou com sucesso uma caixa de entrada à página Criar detalhes do pedido. Agora teste as alterações.
- Faça login no Order Hub de última geração.
- Clique em Pedidos > Saída.
- Clique em Criar pedidoAgora você pode ver o campo Número do pedido de compra do cliente (opcional).
