Árvore de páginas


  

Ponto-de-Entrada: MTA242S - Preenche o array aCols com quantidades/produtos da desmontagem ou validar a quantidade secundária da desmontagem


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


Descrição:

LOCALIZAÇÃO : Executado na função MATA242 (desmontagem de produtos).

EM QUE PONTO : O ponto de entrada 'MT242S' é utilizado para validação da quantidade secundária da desmontagem, é chamada no momento da validação da quantidade secundária. Pode ser utilizada para preencher o array aCols com as quantidades ou produtos que serão o resultado da desmontagem ou validar a quantidade secundária da desmontagem digitada.

Eventos


 

Programa Fonte
MATA242.PRX
Sintaxe

MTA242S - Preenche o array aCols com quantidades/produtos da desmontagem ou validar a quantidade secundária da desmontagem ( < PARAMIXB> ) --> lContinua

Parâmetros:

Nome

Tipo

Descrição

Referência

cProduto

Caractere

Código do Produto Origem da Desmontagem

Não

nQtdOrigSe

Numérico

Quantidade digitada na desmontagem (2ª U.M.)

Não

oGet

Objeto

Objeto do tipo MsGetDados, referente ao grid dos itens da desmontagem

Sim



Retorno
lContinua
    (logico)
  • Caso verdadeiro prossegue com a digitacao do cabeçalho da desmontagem. Caso falso impede a digitacao dos demais campos e aguarda a validação do conteúdo digitado.
Observações


 

Exemplos :


MTA242S
#include 'totvs.ch'
/*/{Protheus.doc} User Function MTA242S
    Permite validar o campo de Quantidade (na segunda unidade de medida)
    Permite manipular o objeto oGet (MsGetDados)
    @type  Function
    @author TOTVS
    /*/
User Function MTA242S()
    Local cCodPro  := ParamIXB[1]
    Local nQuant2  := ParamIXB[2]
    Local oGet     := ParamIXB[3]
    Local nQuant   := 0
    Local nProDest := AScan(aHeader, {|x| AllTrim(x[2]) == 'D3_COD'})
    Local nQDest   := AScan(aHeader, {|x| AllTrim(x[2]) == 'D3_QUANT'})
    Local nQDest2  := AScan(aHeader, {|x| AllTrim(x[2]) == 'D3_QTSEGUM'})
    Local nLocDest := AScan(aHeader, {|x| AllTrim(x[2]) == 'D3_LOCAL'})
    Local lRet     := .T.
    Local nBkp     := n

    //Inserir as validações do cabeçalho
    //...
    //Exemplo de Desmontagem onde preenche o grid com vários produtos ao informar a quantidade
    //Atenção: O preenchimento desta forma não executa validações de campo ou de linha
    //As validações devem ser feitas na própria customização
    //Via rotina automática, o objeto oGet não está disponível

    If AllTrim(cCodPro) == 'TESTE' .And. nQuant2 > 0 .And. !IsBlind()
        //O objeto já está instanciado com a primeira linha criada
        n := 1
        aCols[n, nProDest] := PadR('TESTE1', TamSX3('D3_COD')[1])
        aCols[n, nQDest2]  := 1*nQuant2
        aCols[n, nQDest]   := 1*ConvUM(cCodPro, nQuant2)
        aCols[n, nLocDest] := PadR('01', TamSX3('D3_LOCAL')[1])

        //Adiciona outra linha
        oGet:AddLine()
        n := 2
        aCols[n, nProDest] := PadR('TESTE2', TamSX3('D3_COD')[1])
        aCols[n, nQDest2]  := 4*nQuant2
        aCols[n, nQDest]   := 4*ConvUM(cCodPro, nQuant2)
        aCols[n, nLocDest] := PadR('01', TamSX3('D3_LOCAL')[1])

        //Atualiza a interface com os dados inseridos
        oGet:ForceRefresh()
    EndIf
    n := nBkp
Return lRet



/*/{Protheus.doc} ConvUM
    Converte a segunda unidade de medida na primeira
/*/

Static Function ConvUM(cProduto, nQt2)
    Local aArea    := GetArea()
    Local aAreaSB1 := SB1->(GetArea())
    Local nQt1   := 0
    Local nFator := 0
    Local cMult  := ''

    cMult  := Posicione('SB1', 1, FWXFilial('SB1')+cProduto, 'B1_TIPCONV')
    nFator := Posicione('SB1', 1, FWXFilial('SB1')+cProduto, 'B1_CONV')

    If cMult == 'M'
        nQt1 := nQt2 / nFator
    ElseIf cMult == 'D'
        nQt1 := nQt2 * nFator
    EndIf

    SB1->(RestArea(aAreaSB1))
    RestArea(aArea)

Return nQt1    



Resultado gerado:


Observações

  • O parâmetro oGet é uma instância da classe MsGetDados, armazenando informações do grid. Para mais informações sobre a classe, acesse: https://tdn.totvs.com/display/framework/MsGetDados
  • O ponto de entrada está localizado na validação do campo de Quantidade secundária do cabeçalho e também permite validar a quantidade inserida. No exemplo acima, é recomendável incluir quaisquer validações antes de preencher o grid com os produtos da estrutura.
  • O parâmetro oGet não está disponível em execuções automáticas (via MsExecAuto), assim, é recomendável que se proteja o bloco que trata o preenchimento do objeto oGet com a função IsBlind. Veja em: https://tdn.totvs.com/pages/viewpage.action?pageId=6814878
  • Caso seja necessário deletar uma linha do grid pelo ponto de entrada, basta preencher a última posição da linha do array aCols com .T., exemplo: aCols[2, Len(aCols[2]) := .T. deleta a segunda linha do grid


Assuntos relacionados :

https://tdn.totvs.com.br/display/public/PROT/MTA242Q+-+Preenche+o+array+aCols+com+quantidadesprodutos+da+desmontagem+ou+valida+a+quantidade+da+desmontagem