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 |
---|---|---|---|---|---|
PARAMIXB | Vetor | Vetor com os dados do Pedido que está sendo executado na mensagem única SalesOrder, sendo: |
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
#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