Incluindo campos de procura em páginas de procura existentes

Entenda e aprenda a sintaxe search_fields.json que define os campos de procura para exibir na interface com o usuário. Você pode adicionar campos de pesquisa, como botões de opção, campos de texto, menus suspensos e seletores de data, para incluir mais parâmetros na consulta de pesquisa.

Como uma referência, o tutorial a seguir inclui campos de procura nas páginas de procura existentes: Tutorial: Customizando o fluxo Criar pedido.

Locais do arquivo JSON

Atualize ou crie o arquivo JSON dentro da pasta src-custom/assets/custom do módulo Por exemplo, packages/<route>/src-custom/assets/custom/search_fields.json..

Se não houver customizações adicionais necessárias, além das mudanças no arquivo JSON, o arquivo JSON não precisará ser associado a nenhuma rota Em vez disso, crie o arquivo JSON em packages/<app>-root-config/src/assets/custom/search_fields.json.. Fazer isso assegura que as futuras liberações do Order Hub sejam aplicadas automaticamente sem sincronizar manualmente seu código de customização
Nota: essa abordagem não requer rotas de atualização no arquivo package-customization.json durante a implementação.

Sintaxe JSON

Quando estiver construindo JSON para novos campos customizados, não use a sintaxe do arquivo search_fields.json padrão no código-fonte. Em vez disso, use a sintaxe a seguir:
  • O corpo JSON principal contém atributos de objeto definidos exclusivamente que são mapeados para módulos diferentes
    • orders é o módulo para as páginas de Procura de Pedido
    • shipments é o módulo para as páginas Procura de Remessa .
    • nodes é o módulo para a página de Procura de nó
    • alerts é o módulo para a página Procura de alertas .
  • Cada objeto contém uma matriz fields que inclui atributos..

Atributos

rótulo
Um rótulo para o campo de procura
tipo
O tipo de campo de procura É possível configurar o atributo para um dos seguintes valores:
addressPicker
Você pode procurar e selecionar um endereço.
Imagem do selecionador de endereço.
data
Você pode digitar ou selecionar uma data no seletor de datas.
Imagem do campo de data
suspenso
Você pode escolher a partir de um menu suspenso.
Imagem do campo suspenso
dropdownQuery
Você pode inserir texto no campo de pesquisa e também especificar o operador a ser usado na consulta. Por exemplo, você pode adicionar uma consulta no menu suspenso para incluir opções como “É”, “Contém ” e “Começa com ”.
Imagem de campo de consulta suspenso
nodePicker
Você pode selecionar a partir de uma lista de nós.
Imagem do campo selecionador de nó
número
Você pode digitar números no campo de pesquisa.
Imagem do campo de entrada de número
rádio
Você pode escolher apenas uma entre várias opções. Também é possível usar o atributo orientation para determinar se os botões de opções devem ser exibidos horizontalmente ou verticalmente
Imagem do campo de entrada de rádio
Texto
Você pode digitar um texto no campo de pesquisa.
Imagem do campo de entrada de texto
alternado
Você pode alternar entre dois modos.
Imagem do campo de entrada de alternância
orientação
Usado apenas para a orientação de tipos radio É possível configurar o atributo para um dos seguintes valores:
  • Horizontal
  • Vertical
O valor padrão é horizontal.
valor
Especifica o valor que o sistema envia na solicitação de pesquisa, com base na sua entrada ou seleção.
lista
Uma lista estática de valores para exibir para menus suspensos e botões de opções.
buscar
Semelhante a um list, mas os valores de exibição são obtidos usando as APIs do IBM Sterling® Order Management System. Para obter mais informações sobre as APIs, consulte Geração e acesso ao Javadoc.
A busca está disponível apenas para os tipos dropdown, dropdownQuerye radio
No comando fetch, um atributo opcional translation especifica qualquer tradução a ser aplicada aos elementos e atributos da lista gerada.
  • key especifica qual atributo de cada elemento da lista deve ser traduzido.
  • prefix especifica um possível prefixo a ser aplicado ao valor do atributo para determinar a chave de tradução.
Por exemplo, o código a seguir recupera as strings traduzidas consultando a chave my.prefix_<value-of-label-attribute>
"translation": { "prefix": "my.prefix_", "key": "label" }
operador
O atributo do operador é aplicado ao valor especificado na solicitação da API que é iniciada. É possível configurar o atributo para um dos valores a seguir:
  • EQ -Igual a
  • LIKE -Contém
  • FLIKE -Inicia com
destino
Controla onde o valor resultante do campo pode ser aplicado.
Para aplicar para todas as consultas de procura, especifique all
Caso contrário, você pode definir explicitamente o atributo com um dos seguintes valores.
Para páginas de procura de pedido:
pedidos
O valor é aplicado a procuras em que a opção Procurar por na UI é configurada como Ordem. Nesse caso, assegure-se de que o atributo request defina uma propriedade de entrada da API getOrderList .
Alertas
O valor é aplicado para a procura de alertas na guia de resultados da procura. Nesse caso, assegure-se de que o atributo request defina uma propriedade de entrada da API orders .
liberações
O valor é aplicado a procuras em que a opção Procurar na IU é configurada como Liberações de pedido. Nesse caso, assegure-se de que o atributo request defina uma propriedade de entrada da API getOrderReleaseList .
linhas
O valor é aplicado a procuras em que a opção Procurar por na UI é configurada como Linhas de Pedido. Nesse caso, assegure-se de que o atributo request defina uma propriedade de entrada da API getOrderLineList .
recebimentos
O valor é aplicado a procuras em que a opção Procurar por na UI é configurada como recebimentos. Nesse caso, assegure-se de que o atributo request defina uma propriedade de entrada da API getOrderReceiptList .
Para páginas de pesquisa de remessas:
remessas
O valor é aplicado a procuras em que a opção Procurar na IU é configurada como Remessa. Nesse caso, assegure-se de que o atributo request defina uma propriedade de entrada da API getShipmentList .
remessa-contêineres
O valor é aplicado a procuras em que a opção Procurar na IU é configurada como Contêiner de remessa. Nesse caso, assegure-se de que o atributo request defina uma propriedade de entrada da API getShipmentContainerList .
solicitação
Quando target é satisfeito, a propriedade (em dot-notation) para configurar na solicitação da API iniciada com o valor do campo.
Para obter mais informações sobre as APIs, consulte Geração e acesso ao Javadoc.
showWhen
Controla a opção Mostrar por sob a qual o campo é exibido Para exibir o campo na página de procura sem controlar onde ele é mostrado, não inclua o atributo.

Exemplos de JSON

Os exemplos a seguir apresentam alguns casos de uso para personalizar as páginas de pesquisa de Pedidos e de Remessas.
Nota: o exemplo a seguir inclui comentários sequenciais como um guia para explicar os atributos enquanto você analisa o código.. Como o JSON não suporta comentários, este exemplo não é uma amostra JSON válida, conforme exibido Se você planeja copiar essa amostra, certifique-se de remover os comentários sequenciais
Exemplo em JSON para um menu suspenso.
{
  "orders": {
    "fields": [
      {	// 1  Example for standard text input
        "label": "Order name",	//The label to display in the user interface
        "type": "text",			//The type of field set to text 
        "request": "OrderName",	//Pass the user input to the specified property of the getOrderList API call
        "target": "orders",		//Value is used only on "Search for: orders"
      },	
      {	// 2  Example for node picker
        "label": "Shipping node",	
        "type": "nodePicker",
        "target": "releases",   //Value is used only on "Search for: Order release". 
        "request": "OrderLine.ShipNode",  //Pass the user selection to the specified getOrderReleaseList property
        "value": {
          "selectedNode": [],
          "enterprise": ""
        }
      },	  
      {	// 3  Example for dropdown that fetches payment method options from api
        "label": "Payment type",
        "type": "dropdown",
        "target": "orders",
        "request": "PaymentMethod.PaymentType",	//Pass the user selected value to the specified getOrderList property
        "fetch": {			//Identify that the dropdown options need to be fetched
          "api": "getPaymentTypeList",	//Fetch dropdown options from getPaymentTypeList api
          "type": "oms",				//Must be "oms" to fetch from Sterling Order Management API.
          "parameters": {				//Parameters to pass to getPaymentTypeList call
            "CallingOrganizationCode": "{{enterprise}}"
          },
          "response": {					//Get the response from getPaymentTypeList call
            "listAttribute": "PaymentType",		//Retrieve the 'PaymentType' from the response 
            "map": {
              "id": "PaymentType",		 //Sets the id to the values of the PaymentType response
              "label": "PaymentTypeDescription" //Sets the dropdown options to the values of the PaymentTypeDescription response
            }
          }
        }
      },	  
      {	// 4  Example for dropdown with static, user defined options 
        "label": "Is Pre Order",
        "type": "dropdown",
        "target": "orders",
        "list": [ { "id": "Y", "label": "Y" }, { "id": "N", "label": "N" } ],	//List the options of the dropdown
        "request": "OrderLine.CustomAttributes.BUC_IsPreOrder",				//Pass the user selected value to the specified property
      },
      {	// 5  Another example for dropdown with static, user defined options
        "label": "Is VIP Order",
        "type": "dropdown",
        "target": "orders",
        "request": "OrderLine.CustomAttributes.BUC_IsVIPOrder",
        "list": [ { "id": "Y", "label": "Y" }, { "id": "N", "label": "N" } ]
      },
      {	// 6  Example for dropdownQuery, which is text input along with operator choice of "Is", "Starts with", "Contains"
        "label": "Serial No",
        "type": "dropdownQuery",
        "target": "orders",
        "request": "OrderLine.SerialNo",
        "operator": "LIKE",		//Set the default to LIKE. LIKE == Contains, EQ == Is, FLIKE == Starts with
        "fetch": {
          "api": "getQueryTypeList",	//Call getQueryTypeList to get the list of options
          "type": "oms",				//Must be "oms" to fetch from Sterling Order Management API.
          "parameters": {},
          "translation": {
            "prefix": "ORDER_SEARCH.GENERAL.LABEL_QUERY_",	//To support translation, specify the key that holds the translated string. 
            "key": "label"				//The translations for "Is,Contains,Starts with" is provided by IBM.
          },						//For custom strings, you can add translated strings into the /assets/i18n folder
          "response": {				//Retrieve response from the getQueryTypeList call
            "listAttribute": "StringQueryTypes.QueryType",
            "map": {
              "id": "QueryType",
              "label": "QueryTypeDesc"
            }
          }
        }
      },	
      {	// 7  Example for toggle 
        "label": "Draft order",
        "type": "toggle",
        "target": "orders",
        "request": "DraftOrderFlag",	//Pass the user selected value to the specified property
        "list": [ 		//List options are based on the valid inputs for the property. In this case, DraftOrderFlag is a 1 character flag that requires the value Y or N
		{ "id": "true", "label": "Y" }, { "id": "false", "label": "N", "selected": "true" } 
		]
      },
      {	// 8  Example for radio type
        "label": "Kit code",
        "type": "radio",
        "list": [ 	//The list of radio options
		{ "id": "LK", "label": "Logical kit" }, { "id": "BUNDLE", "label": "Bundle" }, { "id": "", "label": "None", "selected": "true" } 
		],
        "target": "orders",
        "orientation": "vertical",		//Set orientation as vertical
        "request": "OrderLine.KitCode"	//Pass the user selected value to the specified property
      },	  
      {	// 9  Example for date 
        "label": "Import license expire date",
        "type": "date",
        "target": "orders",
        "request": "OrderLine.ImportLicenseExpDate" //Pass the user selected value to the specified property
      },	  
      {	// 10  Another example for text 
        "label": "Customer zip code",
        "type": "text",
        "request": "CustomerZipCode",
        "target": "orders",
      },
      {	// 11  Example for dropdown that fetches unit of measure options from api
        "label": "Custom unit of measure",
        "type": "dropdown",
        "target": "orders",
        "request": "MeasureOfUnit",	//Pass the user selected value to the specified getOrderList property
        "fetch": {					//Identify that the dropdown options need to be fetched
          "api": "getItemUOMMasterList",	//Fetch dropdown options from getItemUOMMasterList api
          "type": "oms",			//Must be "oms" to fetch from Sterling Order Management API.
          "parameters": {			//Parameters to pass to getItemUOMMasterList
            "CallingOrganizationCode": "{{enterprise}}",
            "UOMType": "QUANTITY",
            "IsInventoryUOM": "Y"
          },
          "response": {		//Get the response from getItemUOMMasterList call.
            "listAttribute": "ItemUOMMaster",	//Retrieve the 'ItemUOMMaster' from the response 
            "map": {
              "id": "UnitOfMeasure",	//Sets the id to the values of the PaymentType response
              "label": "Description"	//Sets the dropdown options to the values of the ItemUOMMaster.Description response
            }
          }
        }
      },
	  {	// 12  Another example of node picker 
        "label": "Merge node",
        "type": "nodePicker",
        "target": "orders",            //Applies only to "Search for: Order" 
        "request": "OrderLine.MergeNode",  
        "value": {
          "selectedNode": [],
          "enterprise": ""
        }
      },
      {    //Example for addressPicker
        "label": "Payment bill to",
        "type": "addressPicker",
        "target": "orders",
        "request": "PaymentMethod.BillToKey",  //Pass the user value to the specified getOrderLineList property
        "value": {
          "content": "",
          "address": ""
        }
      },
      {
        "label": "Prime line number",
        "type": "number",
        "request": "PrimeLineNo",    //Pass the user value to the specified getOrderLineList property
        "target": "all",             

      },
      {
        "label": "Batch No",
        "type": "dropdownQuery",
        "target": "orders",                //Apply to Search for: Orders
        "request": "OrderLine.OrderLineInvAttRequest.BatchNo",
        "operator": "LIKE",
        "fetch": {
          "api": "getQueryTypeList",
          "type": "oms",
          "parameters": {},
          "translation": {
            "prefix": "ORDER_SEARCH.GENERAL.LABEL_QUERY_",
            "key": "label"
          },
          "response": {
            "listAttribute": "StringQueryTypes.QueryType",
            "map": {
              "id": "QueryType",
              "label": "QueryTypeDesc"
            }
          }
        }
      },
      {
        "label": "Is open receipt",
        "type": "toggle",
        "target": "all",
        "request": "OpenReceiptFlag",
        "list": [ { "id": "true", "label": "Y" }, { "id": "false", "label": "N", "selected": "true" } ]
      },
      {
        "label": "Lot Attribute 1",
        "type": "dropdownQuery",
        "target": "orders",
        "request": "OrderLine.OrderLineInvAttRequest.LotAttribute1",
        "operator": "LIKE",
        "fetch": {
          "api": "getQueryTypeList",
          "type": "oms",
          "parameters": {},
          "translation": {
            "prefix": "ORDER_SEARCH.GENERAL.LABEL_QUERY_",
            "key": "label"
          },
          "response": {
            "listAttribute": "StringQueryTypes.QueryType",
            "map": {
              "id": "QueryType",
              "label": "QueryTypeDesc"
            }
          }
        }
      }
    ]
  },
  "shipments": {   //object for shipment search page
    "fields": [
        { 
            "label": "Freight terms",
            "type": "dropdown",
            "target": "shipments",   //Applies only to "Search for: Shipment" 
            "request": "FreightTerms",    //Pass the user selected value to the specified getShipmentList property
            "fetch": {                //Fetch dropdown options from getFreightTermsList API
                "api": "getFreightTermsList",    
                "type": "oms",        //Must be "oms" to fetch from Sterling Order Management API.
                "parameters": {
                    "CallingOrganizationCode": "{{enterprise}}"
                },
                "response": {
                    "listAttribute": "FreightTerms",   //Retrieve the FreightTerms property from the response
                    "map": {
                        "id": "FreightTerms",          //Assign IDs to the options
                        "label": "Description"         //Sets the dropdown options to the values of the Description response
                    }
                }
            }
        },
        {
            "label": "Ship via",
            "type": "dropdown",
            "list": [ { "id": "ROAD", "label": "Road" }, { "id": "AIR", "label": "Air" }, { "id": "SEA", "label": "Sea" } ],
            "target": "shipments",
            "request": "ShipVia"
        },
        {
            "label": "Quantity",
            "type": "number",
            "target": "shipments",
            "request": "ShipmentLines.ShipmentLine.Quantity"
        },
        {
            "label": "Backroom pick complete",
            "type": "dropdown",
            "list": [ { "id": "Y", "label": "Y" }, { "id": "N", "label": "N" } ],
            "target": "shipments",
            "request": "ShipmentLines.ShipmentLine.BackroomPickComplete"
        }
    ]
  }
}
Para que isso funcione com uma lista como a do exemplo, é preciso adicionar um parâmetro extra chamado secondaryType.
 {
                "id": "paymentType",    
                "label": "custom Payment Type",
                "type": "dropdownQuery",
                "comboType": "single",
                "target": "orders",
                "request": "PaymentMethod.PaymentType",
                "secondaryType": "dropdown",
                "queryList": [
                    {
                        "id": "EQ",
                        "label": "Is"
                    },
                    {
                        "id": "FLIKE",
                        "label": "Starts with"
                    },
                    {
                        "id": "LIKE",
                        "label": "Contains"
                    }
                ],                          
                "fetch": {
                    "api": "getPaymentTypeList",
                    "type": "oms",
                    "parameters": {
                        "CallingOrganizationCode": "{{enterprise}}"
                    },
                    "response": {
                        "listAttribute": "PaymentType",
                        "map": {
                            "id": "PaymentType",
                            "label": "PaymentTypeDescription"
                        }
                    }
                },
               "value": {
                    "qryType": "",
                    "id": "",
                    "content": "",
                    "value": ""
                }
            },

Este é um exemplo de ` dropdownQuery ` com outra lista suspensa de valores.

Exemplo de interface com o usuário:

A imagem a seguir ilustra a página Solicitar procura de saída depois de fazer upload do exemplo JSON para a IBM
Captura de tela exibindo a Interface com o usuário de saída do Pedido com a procura para liberação do pedido e procura por filtros de itens selecionados 123 345 567 789 278 756 398 455 111 666 743 999