Árvore de páginas

01. DADOS GERAIS

Produto:

TOTVS Backoffice

Linha de Produto:

Linha Protheus

Segmento:

Backoffice

Módulo:SIGAFAT - Faturamento
Função:MATI410EC1 - Pedidos de Venda via mensagem única SalesOrder

02. DESCRIÇÃO

O ponto de entrada MT410VAR permite manipular os arrays de cabeçalho e itens que serão enviados para a rotina automática do MATA410 durante a integração via mensagem única SalesOrder, permitindo inclusão, alteração ou exclusão de campos.


Importante

Não é permitido realizar a exclusão de apenas item(s) do Pedido de Venda no processo de integração da mensagem SALESORDER, 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 (MT410VAR ) 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

MT410VAR() ---> aRet

04. PARÂMETROS


Nome

Tipo

Descrição

Default

Obrigatório

Referência

PARAMIXBVetor

Vetor com os dados do Pedido que está sendo executado na mensagem única SalesOrder, 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.
[ 03 ] - cJson - Tipo: Character - Devolve a string com a mensagem JSON.




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 MT410VAR
    Local aCab       := aClone(PARAMIXB[1]) //Cabeçalho
    Local aItens     := aClone(PARAMIXB[2]) //Itens
	Local aRet       := {} //Retorno das Customizações do usuário
    Local nPosCli    := Ascan(aCab,{ |X| X[1] == "C5_CLIENTE" })
    Local nPosCPag   := Ascan(aCab,{ |X| X[1] == "C5_CONDPAG" })
    Local nPosNum    := 0
    Local nPosProd   := 0
    Local nPosCC     := 0
    Local nPosDes    := 0
    Local nX         := 0

	oJson := fwEAIobj():new()
    oJson:Activate()
    oJson:loadJson(PARAMIXB[3]) //JSON

    If cEvent == "UPSERT" //Inclusão ou Alteração
        If (nPosNum := Ascan(aCab,{ |X| X[1] == "C5_NUM" })) > 0 //Alteração
            If aCab[nPosCli][2] == "FAT001"
                aCab[nPosCPag][2] := "001"
            EndIf

            For nX:= 1 To Len(aItens)
                If (nPosProd := Ascan(aItens[nX],{ |X| X[1] == "C6_PRODUTO" })) > 0
                    If aItens[nX][nPosProd][2] == "FATR00000000000000000000000001"
                        If (nPosCC := Ascan(aItens[nX],{ |X| X[1] == "C6_CC" })) > 0
                            aItens[nX][nPosCC][2] := "FAT000002"
                        Else
                            aAdd( aItens[nX], { "C6_CC", "FAT000002", Nil } )
                        EndIf
                    EndIf
                EndIf
            Next
        Else //Inclusão
            If aCab[nPosCli][2] == "FAT001"
                aCab[nPosCPag][2] := "002"
            EndIf

            For nX:= 1 To Len(aItens)
                If (nPosProd := Ascan(aItens[nX],{ |X| X[1] == "C6_PRODUTO" })) > 0
                    If aItens[nX][nPosProd][2] == "FATR00000000000000000000000001"
                        If (nPosCC := Ascan(aItens[nX],{ |X| X[1] == "C6_CC" })) > 0 //C6_VALDESC
                            aItens[nX][nPosCC][2] := "FAT000001"
                        Else
                            aAdd( aItens[nX], { "C6_CC", "FAT000001", Nil } )
                        EndIf
                    EndIf
                EndIf
            Next
        EndIf
    ElseIf cEvent == "DELETE" //Exclusão
        For nX:= 1 To Len(aItens)
            If (nPosProd := Ascan(aItens[nX],{ |X| X[1] == "C6_PRODUTO" })) > 0
                If aItens[nX][nPosProd][2] == "FATR00000000000000000000000001"
                    If (nPosDes := Ascan(aItens[nX],{ |X| X[1] == "C6_VALDESC" })) > 0
                        aItens[nX][nPosDes][2] := 0
                    EndIf
                EndIf
            EndIf
        Next
    EndIf

    aRet := {aCab,aItens}

Return aRet