| 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 |
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.
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. |
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. |
MATI410() ---> aRet
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. |
Retorno | Tipo | Descrição | Obrigatório |
|---|---|---|---|
| aRet | Array | Array contendo os dados dos campos que serão processados na rotina Pedido de Vendas. | Sim |
#Include'Totvs.ch'
User Function MT410EAI
Local aCab := aClone(PARAMIXB[1])
Local aItens := aClone(PARAMIXB[2])
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 |