Pular para o conteúdo principal

Campo Ambiente ASX

Ticket: FORCEWEB-984 > Última atualização: 28 de setembro de 2024

Visão Geral

Funcionalidade que permite selecionar e enviar o campo de ambiente (AD_AMBIENTE) para cada produto em vendas ASX. O objetivo é garantir que o ambiente do produto seja informado corretamente, conforme regras de negócio, e sincronizado com o ERP Sankhya.

Essa Funcionalidade serve para o Force-Web, Sales-Web e Force-App, somente as pastas podem ter a nomenclatura diferente mas a ideia é a mesma!

Arquivos Modificados

ArquivoLocalizaçãoResponsabilidade
products.sales.create.controller.tssrc/controllers/sale/create/Lógica principal para envio do campo ambiente
ProductAmbienceTab/index.tsxsrc/components/sale/ProductModal/Exibição e seleção do ambiente do produto
Tabs/index.tsxsrc/components/sale/ProductModal/Inclusão da aba de ambiente no modal do produto
NewSaleHeader.tsxsrc/components/sale/Exibição do ambiente selecionado no cabeçalho da venda
activity.service.tsxsrc/service/activity/Serviço para buscar opções de ambiente
activity.slice.tssrc/store/Estado global e ações para ambientes
sale-create.slice.tssrc/store/Atualização do campo ambiente no produto da venda
sync.slice.tssrc/store/Sincronização dos dados de ambiente
sale.type.tssrc/types/sale/Tipagem para campos de venda
activity.type.tssrc/types/activity/Tipagem para campos de ambiente
product.types.tssrc/types/product/Tipagem do produto incluindo campo ambiente
permission.tssrc/utils/Controle de permissão para exibir campo ambiente

Fluxo Operacional

  1. Sincronização: Ao iniciar uma nova venda, as opções de ambiente são carregadas via activity.service.tsx e armazenadas no estado global (activity.slice.ts).
  2. Exibição: No modal do produto, a aba "Ambiente" (ProductAmbienceTab/index.tsx) exibe as opções disponíveis para seleção.
  3. Seleção: O usuário seleciona o ambiente desejado, que é salvo no campo AD_AMBIENTE do produto via ação Redux (changeSelectedItensFields em sale-create.slice.ts).
  4. Envio: Ao finalizar a venda, o campo ambiente é enviado junto com os dados do produto para o backend.
  5. Reset: Ao cancelar ou finalizar a venda, o campo ambiente é resetado no estado global.

Tipagem TypeScript

Interface do Produto

// src/types/product/product.types.ts
export interface Product {
// ...campos existentes...
AD_AMBIENTE?: string; // Código do ambiente selecionado
}

Interface de Ambiente

// src/types/activity/activity.type.ts
export type ItensFieldsAmbience = {
data: ItensFieldsData[];
qtdRegistros: number;
hasError: boolean;
};

export type ItensFieldsData = {
opcoes: ItensFieldsOptions[];
nome: string;
descricao: string;
};

export type ItensFieldsOptions = {
LABEL: string;
VALUE: string;
};

Controle de Permissões

A exibição do campo ambiente é condicionada à permissão ASX, verificada via função utilitária:

// src/utils/permission.ts
isASX = () => this?.baseUrl?.includes?.("asx");

Implementação Técnica

  • Busca de opções: O serviço activity.service.tsx consulta as opções de ambiente disponíveis e atualiza o estado global.
  • Estado global: O slice activity.slice.ts mantém as opções e o ambiente selecionado.
  • Exibição e seleção: O componente ProductAmbienceTab/index.tsx renderiza as opções e permite a seleção, disparando a ação para atualizar o produto.
  • Envio do campo: O controller products.sales.create.controller.ts garante que o campo AD_AMBIENTE seja enviado corretamente ao backend.

Exemplo Prático

Seleção de Ambiente

  1. Usuário abre o modal do produto.
  2. Aba "Ambiente" exibe opções como:
    • Sala de Estar
    • Quarto
    • Escritório
  3. Usuário seleciona "Sala de Estar".
  4. O campo AD_AMBIENTE do produto é atualizado para o valor correspondente.

Observações

  • O campo ambiente é obrigatório para produtos ASX.
  • Caso não haja opções disponíveis, o campo não é exibido.
  • A sincronização das opções depende da integração com o ERP Sankhya.

Referências