Árvore de páginas


01. DADOS GERAIS

Produto:

TOTVS Manufatura

Linha de Produto:

Linha Protheus

Segmento:

Manufatura

Módulo:SIGAPCP - Planejamento e Controle da Produção
Função:ProductionOrderSearch
País:Brasil
Story:DMANSMARTSQUAD1-22774


02. SITUAÇÃO/REQUISITO

Desenvolver métodos da API ProductionOrderSearch para atender a implementações da funcionalidade de consulta de Ordens de Produção pelo APP Minha Produção.

03. SOLUÇÃO


MÉTODO SEARCHID

Foi criado o método SearchId para retornar a identificação única da sessão da consulta.


Parâmetros de envio: 

  • User- Código do usuário que está realizando a consulta de Ordens de Produção (obrigatório)


JSON de Retorno:

[
    {
        "SearchId": "TC20396"
    }
]


MÉTODO FILTERVALIDATION

Foi criado o método FilterValidation para validar se é possível realizar a consulta com o filtro informado. Ou seja, se a consulta retornar um número maior de ordens de produção que a permitida será apresentada uma mensagem que é necessário rever o filtro para refinar a busca.


Parâmetros de envio: 

  • FilterSearch - Filtro de pesquisa para realizar a seleção das OPs e Operações (obrigatório)
  • NumberOfReturnOrders - Quantidade máxima de ordens de produção que pode retornar na consulta de OPs.


JSON de Retorno:

[
    {
        "Status": true
    }
]


Considerações do método FilterValidation:

  1. Se a consulta retornar um número maior de ordens de produção que a enviada pela TAG NumberOfReturnOrders é apresentada a mensagem: Filtro da consulta retornou muitas Ordens de Produção. Rever filtro para refinar a busca.
  2. Se a consulta não retornar ordem de produção é apresentada a mensagem: Não existe ordem de produção cadastrada para o filtro informado.
  3. Se a consulta retornar a quantidade permitida enviada pela TAG NumberOfReturnOrders é enviado o JSON de retorno com a TAG STATUS igual a true.


MÉTODO PRODUCTIONORDERMASTER

Foi criado o método ProductionOrderMaster para retornar uma lista com informações da ordens de produção e operações das ordens de produção.


Parâmetros de envio: 

  • SearchId - Identificação única da sessão da consulta. (obrigatório)
  • AppointmentType - Tipo do apontamento (opcional)
  • FilterSearch - Filtro de pesquisa para realizar a seleção das OPs e Operações (obrigatório)
  • OrderType - Tipo da ordenação da consulta (opcional)
  • Action - Ação que será realizada (obrigatório)
  • Page - Número da página que deve ser retornada (opcional)
  • PageSize - Tamanho da página que deve ser retornada. Ou seja, quantidade de registros por página (opcional)
  • User - Usuário que está realizando a consulta (obrigatório)


Considerações do método ProductionOrderMaster:

  1. A identificação única deve ser o valor retornado do método SearchId. Sempre que executar o método ProductionOrderMaster deve ser executado previamente o método SearchId para obter a identificação única da sessão.
  2. O tipo de apontamento é opcional e aceita os valores: 1 - Produção Simples; 3 - Produção Mod 2; 4 - Produção Chão de Fábrica, '  ' - Branco - Entende por Produção Simples.
  3. A busca das OPs é realizada com base  no filtro de pesquisa enviado. O filtro pode ser uma Ordem de Produção e/ou Código do Produto, seguindo a regra:
    1. Ordem de Produção
      1. Primeiro é verificado se existe uma OP com o filtro enviado considerando a chave da OP (Número da OP + Item + Sequência + Item Grade). Se existir uma OP serão retornadas as informações desta OP.
      2. Caso não existir uma OP com o filtro enviado considerando a chave da OP (Número da OP + Item + Sequência + Item Grade), é verificado se existe uma OP considerando somente o número da OP. Se existir uma ou mais OPs serão retornadas as informações destas OPs.
      3. Se não existir OP com a chave completa da OP  (Número da OP + Item + Sequência + Item Grade) ou somente com o Número da OP, não é utilizado o campo Ordem de Produção para retornar as informações da OP e Operações da OP.
    2. Código do Produto
      1. Primeiro é verificado se existe uma OP com o filtro enviado considerando o código completo do produto. Se existir uma OP com este código de produto serão retornadas as informações desta OP.
      2. Caso não existir uma OP considerando o código completo do produto, será verificado se existe uma OP contendo uma parte deste código de produto. Se existir uma ou mais OPs serão retornadas as informações desta OP.
      3. Se não existir uma OP com o código do produto completo ou parte dele, não é utilizado o campo Produto para retornar as informações da OP e Operações da OP.
    3. Se existir Ordem de Produção e Produto que atenda o filtro enviado, serão retornadas as informações considerando o filtro de Ordem de Produção ou do Código do Produto. 
    4. Se não existir Ordem de Produção e Produto que atenda o filtro enviado, não é retornada nenhuma informação de Ordem de Produção.
  4. O tipo da ordenação da consulta é opcional e aceita os valores: 1-Por Ordem de Produção; 2-Pela data prevista para o início da Ordem de Produção; 3- Pelo código do produto da Ordem de Produção; '  ' - Branco - Entende por Ordem de Produção.
  5. A ação é obrigatório e indica a ação que o método irá realizar. Aceita os valores: R - Reordenar; B - Buscar; P - Paginação
    1. Quando é enviada a opção para Reordenar não é realizada uma nova busca. É feita a reordenação com base na última busca feita e a reordenação é feita com base no parâmetro OrderType. Mesmo que tenha sido alterado o filtro de pesquisa, não será realizada uma nova busca.
    2. Quando é enviada a opção para Buscar é realizada uma nova busca com base no filtro de pesquisa enviado.
    3. Quando é enviada a opção para Paginar não é realizada uma nova busca. É feita a paginação com base na última busca feita e a paginação é feita com base no parâmetro Page PageSize.
  6. O número da página a ser retornada é opcional e indica qual página deve ser retornada na consulta. Se o parâmetro Page não for enviado, será considerado como 1.
  7. A quantidade de registros por página é opcional e indica quantos registros são apresentados por página. Se o parâmetro PageSize não for enviado, será considerado como 10.
  8. O usuário é obrigatório e deve ser enviado o usuário que esta realizando a consulta.


JSON de Retorno:

{
   "Items": [
        {
            "Split": "     ",
            "StartActivityDate": "20201029",
            "StartOrderDate": "20201029",
            "StatusOrderType": "3",
            "ProductionQuantity": 2.6,
            "ActivityQuantity": 10,
            "ItemDescription": "681-PA                                                                                                                          ",
            "ActivityID": "0000000001"
            "ItemCode": "681-PA         ",
            "StartOrderCPDate": "20201029",
            "EndOrderCPDate": "20201029",
            "EndOrderDate": "        ",
            "ProductionOrderNumber": "00002201001   ",
            "ActivityCode": "10",
            "EndActivityDate": "        ",
            "Quantity": 10,
            "ReportQuantity": 2.6,
            "ActivityDescription": "OPER 10             "
        },
        {
            "Split": "     ",
            "StartActivityDate": "20210427",
            "StartOrderDate": "20210427",
            "StatusOrderType": "3",
            "ProductionQuantity": 12,
            "ActivityQuantity": 10,
            "ItemDescription": "20770-PA                                                                                                                        ",
            "ActivityID": "0000000001"
            "ItemCode": "20770-PA       ",
            "StartOrderCPDate": "20210427",
            "EndOrderCPDate": "20210427",
            "EndOrderDate": "        ",
            "ProductionOrderNumber": "00005501001   ",
            "ActivityCode": "10",
            "EndActivityDate": "        ",
            "Quantity": 10,
            "ReportQuantity": 12,
            "ActivityDescription": "OPER 10             "
        },
        {
            "Split": "     ",
            "StartActivityDate": "20210924",
            "StartOrderDate": "20210924",
            "StatusOrderType": "3",
            "ProductionQuantity": 5.2,
            "ActivityQuantity": 10,
            "ItemDescription": "681-PA                                                                                                                          ",
            "ActivityID": "0000000001"
            "ItemCode": "681-PA         ",
            "StartOrderCPDate": "20210924",
            "EndOrderCPDate": "20210924",
            "EndOrderDate": "        ",
            "ProductionOrderNumber": "00005701001   ",
            "ActivityCode": "10",
            "EndActivityDate": "        ",
            "Quantity": 10,
            "ReportQuantity": 5.2,
            "ActivityDescription": "OPER 10             "
        }
    ],
    "hasNext": false
}


Informações das TAGS do JSON de retorno:

TAG

Nome

Campo

ProductionOrderNumberOrdem de ProduçãoSC2 → C2_FILIAL+C2_NUM+C2_ITEM+C2_SEQUEN+C2_ITEMGRD
ItemCodeCódigo do Produto da OPSC2 → C2_PRODUTO
ItemDescriptionDescrição do Produto da OPSB1 → B1_DESC
QuantityQuantidade Prevista da OPSC2 → C2_QUANT
ProductionQuantityQuantidade Produzida da OPSC2 → C2_QUJE
StartOrderCPDateData Prevista de Início da OPSC2 → C2_DATPRI
EndOrderCPDateData Prevista de Término da OPSC2 → C2_DATPRF
StartOrderDateData de Início Real da OP

Produção Simples: MIN(D3_EMISSAO)

Produção Mod 2: MIN(H6_DTAPONT)

Produção Chão de Fábrica: MIN(CYV_DTRP)

EndOrderDateData de Término Real da OPSC2 → C2_DATRF
StatusOrderTypeStatus da OPMesma regra da função A650DefLeg utilizada para carregar a legenda no MATA650.
SplitSplit da Operação

Tipo 1: Em branco

Tipo 3: Em branco

Tipo 4: CYY → CYY_IDATQO

ActivityCodeCódigo da Operação

Tipo 1: Em branco

Tipo 3: SHY → HY_OPERAC / SG2 → G2_OPERAC

Tipo 4: CY9 → CY9_CDAT

ActivityDescriptionDescrição da Operação

Tipo 1: Em branco

Tipo 3: SHY → HY_DESCRI / SG2 → G2_DESCRI

Tipo 4: CY9 → CY9_DSAT

ActivityQuantityQuantidade Prevista da Operação/Split

Tipo 1: Em branco

Tipo 3: SC2 → C2_QUANT

Tipo 4: CYY → CYY_QTAT

ReportQuantityQuantidade Produzida da Operação/Split

Tipo 1: Em branco

Tipo 3: SH6 → SUM(H6_QTDPROD) + SUM(H6_QTDPERD)

Tipo 4: CYY → CYY_QTATAP + CYY_QTATRF

StartActivityDateData de Início Real da Operação/Split

Tipo 1: Em branco

Tipo 3: SH6 → MIN(H6_DTAPONT)

Tipo 4: CYY → CYY_DTBGAT

EndActivityDateData Fim Real da Operação/Split

Tipo 1: Em branco

Tipo 3: SH6 → MAX(H6_DTAPONT)

Tipo 4: CYY → CYY_DTEDAT

ActivityIDID de identificação da operação

Tipo 1: Em branco

Tipo 3: Em branco

Tipo 4: CYY → CYY_IDAT


Observações das TAGs do JSON de retorno:

  • O Status da OP retorna um valor caractere com os seguintes valores: 1-Prevista; 2-Em aberto; 3-Iniciada; 5-Encerrada Parcialmente; 6-Encerrada Totalmente. Não existe o Status 4-Ocioasa conforme existe na legenda do MATA650 (Ordem de Produção). Se uma OP estiver com o Status Ociosa no MATA650, na API retornará com um dos valores citados anteriormente.
  • A Lista de Operações é carregada quando o Tipo do Apontamento for 3 - Produção Mod 2 ou 4 - Produção Chão de Fábrica. Quando o tipo for 3, as informações serão carregadas das tabelas SHY (Operações x Ordem) ou SG2 (Operações), conforme parametrização:
    • MV_APS = 'TOTVS' ou MV_PCPATOR = .T. - SHY

    • MV_APS <> 'TOTVS' e MV_PCPATOR = .F. - SG2
    • Se uma OP foi criada quando o sistema estava parametrizado para usar a SG2 e após isso foi alterado para usar a SHY, não serão apresentadas as operações desta OP. 
  • Foi criado o Ponto de Entrada POSFilOp onde é possível indicar se a OP selecionada irá ou não retornar no JSON de retorno.


MÉTODO LASTAPPOINTMENTS

Foi criado o método LastAppointments para retornar as últimas ordens de produção apontadas.


Parâmetros de envio: 

  • User - Usuário que realizou o apontamento (obrigatório)
  • AppointmentType - Tipo do apontamento (opcional)
  • NumberOfReturnOrders - Quantidade de ordens a serem retornadas (obrigatório)


Considerações do método LastAppointments:

  1. O tipo de apontamento é opcional e aceita os valores: 1 - Produção Simples; 3 - Produção Mod 2; 4 - Produção Chão de Fábrica, '  ' - Branco - Todos os tipos de apontamentos.
  2. Serão retornadas as últimas OPs apontadas e considerado somente um apontamento por OP (caso os últimos apontamentos na sequência sejam da mesma OP será considerada somente uma vez e irá buscar as próximas).
  3. Serão retornadas somente as OPs que o usuário realizou o apontamento. Ou seja, os apontamentos realizados pelo usuário que foi enviado nos parâmetros de envio.


JSON de Retorno:

{

    "ProductionOrderNumber ": "00000801001"

    "ItemCode ": "AA91"

}


Informações das TAGS do JSON de retorno:

TAG

Nome

Descrição

Campo

ProductionOrderNumberOrdem de ProduçãoOrdem de produção apontada.

D3_OP 

ItemCodeCódigo do ProdutoProduto da ordem de produção

D3_COD

04. DEMAIS INFORMAÇÕES

Não se aplica.

05. ASSUNTOS RELACIONADOS