Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.


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.

...

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
titleImportante

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

Bloco de código
languagecpp
titleExemplo:
#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