📌 Documentação do Ponto de Entrada MP_ITEMPV
🧩 Identificação
- Nome do Ponto de Entrada:
MP_ITEMPV - Objetivo: Montar e retornar a estrutura de itens (
aItens) para execução da rotinaEXCAUTO, com base nos dados recebidos da integração "Mercos". - Programa: U_JobMped2 ( sincronização de Entidades de Entrada )
- Localização: Apos a Montagem de cada item do aItens de envio no Execautou Mata410
📥 Parâmetros Recebidos (PARAMIXB)
PARAMIXB[1]: Filial da conta "MERCOS".PARAMIXB[2]: Código da conta "MERCOS".PARAMIXB[3]: Array que representa o ITENS do pedido e será preenchido pela função.PARAMIXB[4]: Objeto JSON contendo os dados dos pedidos recebidos.PARAMIXB[5]: Tipo de operação (ex: venda, bonificação, etc)
🏗️ Estrutura Padrao Montada (aItens)
Dependendo da Opção de integração Orcamento ou Pedido de vendas a Variavel CPrefTe pode ser alterada para Ck ou C6.
| Campo | Valor Atribuído | Nil |
| cPrefIte+"_ITEM" | cItens | Nil |
| cPrefIte+"_PRODUTO" | cProd | Nil |
| cPrefIte+"_QTDVEN" | nQuant | Nil |
| cPrefIte+"_PRCVEN" | nPrcVen | Nil |
| cPrefIte+"_VALOR" | nTotal | Nil |
| cPrefIte+"_PRUNIT" | nPrcTab | Nil |
| cPrefIte+"_TES" | cTes | Nil |
| cPrefIte+"_LOCAL" | cLocal | Nil |
| cPrefIte+"_NUMPCOM" | cNPedCli | Nil |
| cPrefIte+"_XMPTAB" | cIdTab | Nil |
| cPrefIte+"_XMPOBS" | cObser | Nil |
| cPrefIte+"_XMPESP" | cOpEsp | Nil |
| cPrefIte+"_XIDMP" | cIdItem | Nil |
| C6_ITEMPC | StrZero(y,2) | Nil |
| cPrefIte+"_DESCONT" | nDesc | Nil |
🔁 Retorno
- A função retorna o array
aItensjá preenchido com os dados necessários para a criação do pedido viaEXCAUTO.
Exemplo:
|
User Function MP_ITEMPV
local cFilMp := PARAMIXB[1] // FILIAL DA CONTA MERCOS
local cCtaMp := PARAMIXB[2] // CODIGO DA CONTA MERCOS
local aLinha := PARAMIXB[3] // ARRAY INTENS COM ESTRTURA PARA EXECUÇÃO DO EXCAUTO
local aPedido := PARAMIXB[4] // OBJETO RETORNO GET JSON MEUS PEDIDOS
local cTipVen := PARAMIXB[5] // TIPO DE OPERAÇÃO
local nPosProd := aScan(aLinha,{|x|AllTrim(x[1]) == "C6_PRODUTO"})
local nPosDesc := aScan(aLinha,{|x|AllTrim(x[1]) == "C6_DESCONT"})
local nPosVlr := aScan(aLinha,{|x|AllTrim(x[1]) == "C6_VALOR"})
local nPosPrc := aScan(aLinha,{|x|AllTrim(x[1]) == "C6_PRCVEN"})
local nPosQtd := aScan(aLinha,{|x|AllTrim(x[1]) == "C6_QTDVEN"})
local nPosPrun := aScan(aLinha,{|x|AllTrim(x[1]) == "C6_PRUNIT"})
local nPosLoca := aScan(aLinha,{|x|AllTrim(x[1]) == "C6_LOCAL"})
local nDescont := 0
local nPrcVen
local nQtdVen
local nValor
local cLocPad := POSICIONE("SB1",1,XFILIAL("SB1")+aLinha[nPosProd,2],"B1_LOCPAD")
aLinha[nPosLoca,2] := cLocPad //ALTERA LOCAL DE ESTOQUE DE ACORDO COM LOCAL PADRAO DO PRODUTO
Return(aLinha)
|