Árvore de páginas


CONTEÚDO

  1. Dados Gerais
  2. Descrição
  3. Sintaxe
  4. Parâmetros
  5. Retorno
  6. 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.

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.

Importante

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

PARAMIXBVetorVetor 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             ObjetoObjeto Xml com os dados relacionados a mensagem única Order.


oLtOfItem             ObjetoObjeto Json com os dados relacionados a mensagem única Order.


05. RETORNO

Retorno

Tipo

Descrição

Obrigatório

aRetArrayArray contendo os dados dos campos que serão processados na rotina Pedido de Vendas.Sim


06. EXEMPLO

Exemplo:
#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