Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

POGetProd - Manipular informações na pesquisa de produtos para a ordem de produção no APP Minha Produção

Linha de Produto:

Protheus

Segmento:

Manufatura

Módulo:

SIGAPCP - Planejamento e Controle da Produção

Parâmetro(s):

NomeTipoDescriçãoDefaultObrigatórioReferência
PARAMIXB[1]Array Objects

Array  de objetos com os produtos que serão retornados na pesquisa de produtos dos formulários de criação de ordem de produção.

Cada posição do array contém um json object com o código e descrição do produto, além de campos reservados para mostrar contéudo customizado no card do produto na pesquisa.




PARAMIXB[2]StringCódigo do formulário.


Idiomas:

Todos

País(es):

Todos

Banco(s) de Dados:

Todos

Sistema(s) Operacional(is):

Todos

Ponto de Entrada

Descrição:

O ponto de entrada POGetProd é executado na requisição de consulta dos produtos após informar os parâmetros de pesquisa.
Com este ponto de entrada, é possível adicionar e remover produtos da pesquisa, além de poder adicionar de forma não obrigatória até duas informações por produto para mostrar no card da pesquisa.

As duas informações customizadas que poderão ser adicionadas a um card na pesquisa terão três atributos cada uma.

O primeiro é "CustomLabel", que é referente a um rótulo ou descrição do valor que será adicionado. 

O segundo é "CustomValue", que é referente ao valor vinculado ao rótulo criado. Ex.: oJson["CustomLabel"] := "Máquina", oJson["CustomValue"] := "Injetora".

O terceiro é "CustomLink", que é referente ao link que será aberto no navegador quando o usuário clicar no campo de valor.

Obs.:

Para mostrar a informação customizada no card de pesquisa, o único atributo de preenchimento obrigatório é o "CustomValue".

Se o atributo "CustomLink" for informado, o atributo "CustomValue" será um link que será aberto no navegador, caso contrário, será apenas um campo texto.

Localização:

API prodOrderApp, método Get queryProducts- Responsável por devolver os produtos que se encaixam nos parâmetros da pesquisa.

Eventos:

Não se aplica.

Programa Fonte:ProductionOrderAppAPI.PRW

Sintaxe:

POGetProd( ) --> aItemsObj

Retorno:
NomeTipoDescriçãoObrigatório
aItemsObjArray Objects

Array de objetos que será retornado pela api para apresentar a consulta de produtos no aplicativo Minha Produção. Neste array é possível adicionar e remover produtos da pesquisa, além de adicionar até duas informações por produto para mostrar no card da pesquisa.
Mesmo que o array não seja alterado, ele deve ser retornado no mesmo formato para que possa apresentar a consulta corretamente.

Sim
Observações:

Não é permitida a utilização de qualquer componente de interface gráfica nesse ponto de entrada, visto que a função será executada durante uma requisição REST.

Bloco de código
languagec#
firstline1
titleExemplo
linenumberstrue
#INCLUDE "TOTVS.CH"
 
User Function POGetProd()
	Local aAreaSB1  := SB1->(GetArea())
	Local aAreaSB2  := SB2->(GetArea())
    Local aItemsObj := PARAMIXB[1]
	Local cAliasSB2 := GetNextAlias()
    Local cForm     := PARAMIXB[2]
    Local cLocal    := ""
	Local cQuerySB2 := ""
    Local nLenArr   := Len(aItemsObj)
	Local nSaldo    := 0
    Local nX        := 0
    Local oJson     := Nil
         
    For nX:=1 To nLenArr
        //Adicionando informações customizadas ao card de um produto na pesquisa
		dbSelectArea("SB1")
		SB1->(dbSetOrder(1))
		If SB1->(MsSeek(xFilial("SB1") + AllTrim(aItemsObj[nX]["Code"])))
			cLocal  := SB1->B1_LOCPAD

            cQuerySB2 := "SELECT *"
            cQuerySB2 +=  " FROM " + RetSqlName("SB2")
            cQuerySB2 += " WHERE B2_FILIAL  = '" + xFilial("SB2") + "'"
            cQuerySB2 +=   " AND B2_COD     = '" + AllTrim(aItemsObj[nX]["Code"]) + "'"
            cQuerySB2 +=   " AND B2_LOCAL   = '" + cLocal + "'"
            cQuerySB2 +=   " AND D_E_L_E_T_ = ' '"

            dbUseArea(.T., "TOPCONN", TcGenQry( , , cQuerySB2), cAliasSB2, .T., .T.)
            While (cAliasSB2)->(!Eof())
                nSaldo += SaldoSB2(,,,,,cAliasSB2,,,,,)
                dbSkip()
            End

        	(cAliasSB2)->(dbCloseArea())

            aItemsObj[nX]["CustomLabel1"] := "Saldo no armazém padrão (" + cLocal + ")"
            aItemsObj[nX]["CustomValue1"] := CValToChar(nSaldo)
            aItemsObj[nX]["CustomLink1"]  := ""

            nSaldo := 0
		EndIf

        aItemsObj[nX]["CustomLabel2"] := ""
        aItemsObj[nX]["CustomValue2"] := "Pesquisa produto no Google"
        aItemsObj[nX]["CustomLink2"]  := "http://www.google.com.br/search?q=" + AllTrim(aItemsObj[nX]["Code"])
    Next nX

    //Adicionando novo card de produto no retorno da pesquisa
    If AllTrim(cForm) == "OPFORM"
        oJson := JsonObject():New()
        oJson["Code"]         := "PRODUTO3"
        oJson["Description"]  := "DESCRICAO PRODUTO 3"
        oJson["CustomLabel1"] := ""
        oJson["CustomValue1"] := ""
        oJson["CustomLink1"]  := ""
        oJson["CustomLabel2"] := ""
        oJson["CustomValue2"] := ""
        oJson["CustomLink2"]  := ""
        aAdd(aItemsRetaItemsObj, oJson)
    EndIf

    //excluindo card de produto do retorno da pesquisa
    nX := Ascan(aItemsRetaItemsObj,{|x| AllTrim(x["Code"]) == "PRODUTO"})
    If nX > 0
        aDel(aItemsRetaItemsObj, nX)
        aSize(aItemsRetaItemsObj, Len(aItemsRetaItemsObj)-1)
    EndIf

    FreeObj(oJson)    

Return aItemsRetaItemsObj