Árvore de páginas

Versões comparadas

Chave

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

...

Portuguese

Pagetitle
MTA190D1 - Manipulação do valor do custo do Documento de Entrada
MTA190D1 - Manipulação do valor do custo do Documento de Entrada

Ponto-de-Entrada: MTA190D1 - Manipulação do valor do custo do Documento de Entrada


Versões:Microsiga Protheus 10, Microsiga Protheus 11, Microsiga Protheus 12
Compatível Países:Todos
Sistemas Operacionais:Todos
Compatível às Bases de Dados:Todos
Idiomas:Espanhol , Inglês


Descrição: Manipula valores de custo da NF de entrada (SD1).

Localização: Function Recalc() - Responsável por recalcular o custo de entrada.

Em que ponto: O ponto é acionado antes de regravar o custo no arquivo de itens de NF de entrada (SD1).


Programa Fonte:MATA190.PRX

Sintaxe: MTA190D1() - Manipulação do valor do custo da NF de entrada ( < PARAMIXB> ) --> aRet

Parâmetros:


NomeTipoDescriçãoDefaultObrigatórioReferência
PARAMIXB[1]VetorO programa recebe como parâmetro um array contendo os custos que serão gravados pelo sistema no arquivo SD1.
X
PARAMIXB[2]VetorO programa recebe como parâmetro um array contendo os custos, número da nota, série e número do item.



RetornoaRet


Bloco de código
languagedelphi
themeMidnight
firstline1
titleExemplo
#INCLUDE "PROTHEUS.CH"

/*/{Protheus.doc} User Function MTA190D1
    PE MTA190D1 - Permite ajustar o custo da nota de entrada
    @type  Function
    @author TOTVS
    @since 22/11/2021
    /*/

User Function MTA190D1() 
 
    Local aCustEnt  := PARAMIXB[1] 
    Local aItem     := PARAMIXB[2]
    local nCusto1   := 0
    local ncusto2   := 0
    local ncusto3   := 0 
    local ncusto4   := 0
    local ncusto5   := 0
    local cDoc      := ''
    local cSerie    := ''
    local citem     := ''
    local aCusRet   := {}
    Local nI        := 0
    
    aCusRet := aclone(aCustEnt)

    For nI := 1 To Len(aCustEnt)
        If Len(aCustEnt[nI]) > 0 .And. Len(aItem[nI]) > 0
            //ordenação do array n = D1_FILIAL+D1_DOC+D1_SERIE+D1_FORNECE+D1_LOJA+D1_COD+D1_ITEM
            nCusto1 := aCustEnt [nI,1]
            nCusto2 := aCustEnt [nI,2]
            nCusto3 := aCustEnt [nI,3]
            nCusto4 := aCustEnt [nI,4]
            nCusto5 := aCustEnt [nI,5]
            
            // aItem mesma ordenação n = D1_FILIAL+D1_DOC+D1_SERIE+D1_FORNECE+D1_LOJA+D1_COD+D1_ITEM porem com referencia da nota e item
            nCusto1 := aItem [nI,1]
            nCusto2 := aItem [nI,2]
            nCusto3 := aItem [nI,3]
            nCusto4 := aItem [nI,4]
            nCusto5 := aItem [nI,5]
            cDoc    := aItem [nI,6,1]
            cSerie  := aItem [nI,6,2]
            cItem   := aItem [nI,6,3]

            //Exemplo de regra:
            If cDoc == 'EST000054' .And. cSerie == '1  ' .And. cItem == '0001'
                aCustEnt [nI,1] := aCustEnt [nI,1]*10
            EndIf
            
            // IMPORTANTE não mudar a ordenação do array de saida 
            aCusret [nI,1] := aCustEnt [nI,1] //ou aItem [nI,1]
            aCusret [nI,2] := aCustEnt [nI,2] //ou aItem [nI,2]
            aCusret [nI,3] := aCustEnt [nI,3] //ou aItem [nI,3]
            aCusret [nI,4] := aCustEnt [nI,4] //ou aItem [nI,1]
            aCusret [nI,5] := aCustEnt [nI,5] //ou aItem [nI,1]
        EndIf
    Next nI
    
return (aCusret)
 


Observações: Cada elemento do PARAMIXB[1] se refere ao item na SD1, a ordenação do index é D1_FILIAL+D1_DOC+D1_SERIE+D1_FORNECE+D1_LOJA+D1_COD+D1_ITEM. O ponto de entrada deve retornar o array com o custo nas 5 moedas. No PARAMIXB[2], segue o mesmo index do PARAMIXB[1], porém, contém os valores D1_DOC, D1_SERIE e D1_ITEM.