#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 |