Histórico da Página
CONTEÚDO
- Dados Gerais
- Descrição
- Sintaxe
- Parâmetros
- Retorno
- Exemplo
01. DADOS GERAIS
Produto: | TOTVS Backoffice |
---|---|
Linha de Produto: | Linha Protheus |
Segmento: | Backoffice |
Módulo: | SIGAFAT - Faturamento |
Função: | MT410EAI - Mensagem Única Pedido de Venda (Order) |
Abrangências: | Microsiga Protheus 12 |
Versões: | Microsiga Protheus 12 |
Compatível Países: | Todos |
Sistemas Operacionais: | Todos |
Compatível com as Bases de Dados: | Todos |
Nível de Acesso: | Nível 1 (Acesso Clientes) |
Idiomas: | Todos |
02. DESCRIÇÃO
O ponto de entrada MT410EAI
...
permite manipular os arrays de cabeçalho e itens
...
que serão enviados para a rotina automática do MATA410 durante a integração (MATI410 / MATI410O ), permitindo inclusão, alteração ou exclusão de campos.
...
Observações
...
Formato do array aCab:
aCabx,1: nome do campo
aCabx,2: conteúdo do campo
aCabx,3: reservado
Onde x, é a posição referente ao campo no array.
Formato do array aItens:
aItensx,y,1: nome do campo
aItensx,y,2: conteúdo do campo
aItensx,y,3: reservado
Onde x, é a posição referente ao do item no array e y a posição referente ao campo.
Dica |
---|
O tratamento para edição do array pode ser feita com base no JSON ou XML enviado para a mensagem única. O JSON ou XML enviado na requisição é encaminhado ao Ponto de Entrada através das variáveis oXml e oLtOfItem onde permite ser feito um tratamento dentro do PE para adicionar ou manipular informações de cabeçalho ou itens a ser enviado a rotina MATA410 e permite alteração ou exclusão de apenas um item conforme o mensagem única enviada. |
Aviso | ||
---|---|---|
| ||
Não é permitido realizar a exclusão de apenas item(s) do Pedido de Venda no processo de integração da mensagem ORDER, para realizar o processo de exclusão, é necessário excluir o Pedido de Venda, e criar um novo informando apenas os itens desejados. Existe a possibilidade da utilização desse ponto de entrada (MT410EAI ) que permite exclusão de apenas item(s) na alteração. Para isso será necessário a manipulação do array aItens, incluindo as informações de LINPOS e AUTODELETA conforme o exemplo documentado abaixo no Item 06. |
03. SINTAXE
MATI410() ---> aRet
04. PARÂMETROS
Nome | Tipo | Descrição | Default | Obrigatório | Referência |
---|---|---|---|---|---|
PARAMIXB | Vetor | Vetor com os dados do Pedido que está sendo executado na mensagem única Order, sendo: [ 01 ] - aCab - Tipo: Array - Relação de campos referente ao cabeçalho do pedido. [ 02 ] - aItens - Tipo: Array - Relação de campos referente aos itens do pedido. | |||
oXml | Objeto | Objeto Xml com os dados relacionados a mensagem única Order. | |||
oLtOfItem | Objeto | Objeto Json com os dados relacionados a mensagem única Order. |
05. RETORNO
Retorno | Tipo | Descrição | Obrigatório |
---|---|---|---|
aRet | Array | Array contendo os dados dos campos que serão processados na rotina Pedido de Vendas. | Sim |
06. EXEMPLO
Bloco de código | ||||
---|---|---|---|---|
| ||||
#Include'Totvs.ch'
User Function MT410EAI
Local aCab := |
...
Exemplos
...
aClone(PARAMIXB[1]) |
...
Local aItens := aClone(PARAMIXB[2] |
...
Local aRet := {} //Customizações do usuário
aRet := {aCab,aItens}
Return aRet
...
Preview
...
Veja também
...
Idioma
...
Português(Brasil)
...
Versões
...
Todos
...
Sistemas Operacionais Suportados
...
Todos
...
Compatível com as Bases de Dados
...
Todas
...
Updates
...
Parâmetros
...
Retorno
...
Eventos de chamada do Ponto de Entrada
...
Variáveis
...
Programa Fonte
...
)
Local nTamC6ITEM := GetSx3Cache("C6_ITEM","X3_TAMANHO")
Local nI := 1
Local oXmlAux := Nil
Local oJsonAux := Nil
Local aRet := {} //Customizações do usuário
Local nPosCli := 0
Local nPosCPag := 0
IF FWIsInCallStack("MATI410")
//Verifica o Cabeçalho do Pedido de Vendas
nPosCli := Ascan(aCab,{ |X| X[1] == "C5_CLIENTE" })
nPosCPag := Ascan(aCab,{ |X| X[1] == "C5_CONDPAG" })
If aCab[nPosCli][2] == "FAT001"
Aadd(aCab,{"C5_DESCONT", 5, NIL})
EndIf
For nI := 1 To Len(oXml:_TOTVSMessage:_BusinessMessage:_BusinessContent:_SalesOrderItens:_Item)
oXmlAux := oXml:_TOTVSMessage:_BusinessMessage:_BusinessContent:_SalesOrderItens:_Item[nI]
//Verifica se existe a TAG Customizada <ItemDeleted>1</ItemDeleted> no XML.
If Type("oXmlAux:_ItemDeleted:Text") != "U"
//Caso a TAG Customizada <ItemDeleted> seja 1 será excluido esse item, caso seja diferente de 1 o item apenas será alterado.
If oXmlAux:_ItemDeleted:Text == "1"
aItens[nI][AsCan(aItens[nI][1],"C6_ITEM")] :={"LINPOS","C6_ITEM",PadR(oXmlAux:_OrderItem:Text, nTamC6ITEM)}
Aadd(aItens[nI],{"AUTDELETA", "S", NIL})
Else
aItens[nI][AsCan(aItens[nI][1],"C6_ITEM")] :={"LINPOS","C6_ITEM",PadR(oXmlAux:_OrderItem:Text, nTamC6ITEM)}
Aadd(aItens[nI],{"AUTDELETA", "N", NIL})
EndIf
EndIf
Next
ElseIf FWIsInCallStack("MATI410O")
//Verifica o Cabeçalho do Pedido de Vendas
nPosCli := Ascan(aCab,{ |X| X[1] == "C5_CLIENTE" })
nPosCPag := Ascan(aCab,{ |X| X[1] == "C5_CONDPAG" })
If aCab[nPosCli][2] == "FAT001"
aCab[nPosCPag][2] := "001"
EndIf
For nI := 1 To Len(oLtOfItem)
oJsonAux := oLtOfItem[nI]
//Verifica se existe a TAG Customizada <ItemDeleted>1</ItemDeleted> no JSON.
If Type("oJsonAux:getPropValue('ItemDeleted')") != "U"
//Caso a TAG Customizada <ItemDeleted> sejA 1 será excluido esse item, caso seja diferente de 1 o item apenas será alterado.
If oJsonAux:getPropValue('ItemDeleted') == "1"
aItens[nI][AsCan(aItens[nI][1],"C6_ITEM")] :={"LINPOS","C6_ITEM",PadR(oJsonAux:getPropValue("OrderItem"), nTamC6ITEM)}
Aadd(aItens[nI],{"AUTDELETA", "S", NIL})
Else
aItens[nI][AsCan(aItens[nI][1],"C6_ITEM")] :={"LINPOS","C6_ITEM",PadR(oJsonAux:getPropValue('OrderItem'), nTamC6ITEM)}
Aadd(aItens[nI],{"AUTDELETA", "N", NIL})
EndIf
EndIf
Next
EndIf
aRet := {aCab,aItens}
Return aRet |