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): |
| ||||||||||||||||||
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. 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: |
| ||||||||
| 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. |
#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(aItemsObj, oJson)
EndIf
//excluindo card de produto do retorno da pesquisa
nX := Ascan(aItemsObj,{|x| AllTrim(x["Code"]) == "PRODUTO"})
If nX > 0
aDel(aItemsObj, nX)
aSize(aItemsObj, Len(aItemsObj)-1)
EndIf
FreeObj(oJson)
Return aItemsObj