Produto: |
SIGALOJA |
Versões: |
P11 e P12 |
Ocorrência: |
No orçamento realizado no Venda Assistida , não quero permitir que produtos sem estoques salve o orçamento. |
Passo a Passo:
Nesse caso você tem duas opções :
A primeira, seria apenas permitir orçamentos com reserva , nesse caso eu somente vou conseguir reservar produtos com estoque.
A segunda opção seria uma customização no ponto de entrada LJ7001 localizado no final da gravação do orçamento. Essa opção permite customizar a mensagem e/ou o processo de validação.
Segue um exemplo de ponto de entrada para ser utilizado :
#INCLUDE "PROTHEUS.CH"
User Function LJ7001()
Local nParTipo := PARAMIXB[1] //(1-orcamento 2-venda 3-pedido)
Local nPosProd := aPosCpo[Ascan(aPosCpo,{|x| AllTrim(Upper(x[1])) == "LR_PRODUTO"})][2]// Posicao da codigo do produto
Local nPosQuant := aPosCpo[Ascan(aPosCpo,{|x| AllTrim(Upper(x[1])) == "LR_QUANT"})][2] // Posicao da Quantidade
Local nPosLoc := Ascan(aPosCpoDet,{|x| AllTrim(Upper(x[1])) == "LR_LOCAL"}) // Posicao do armazem no aColsDet
Local lRet := .T. // Retorno logico da funcao
Local cLocProd := "" // Localizacao produto
Local nX := 0 // Contador
// Varre todos os itens
For nX:=1 To Len(aCols)
If !aCols[nX][Len(aCols[nX])]
cProdEst := PadR(aCols[nX][nPosProd],TamSX3("B2_COD")[1],Nil)
//Posiciona no SB2 para verificar se possui estoque
DbSelectArea("SB2")
DbSetOrder(1)
If DbSeek(xFilial("SB2")+cProdEst+aColsDet[nX][nPosLoc]) // No caso de recuperacao cProduto vinha sem os espacos
If SaldoSB2() < aCols[nX][nPosQuant]
Alert("O produto "+cProdEst+" nao esta disponivel em estoque")
lRet := .F.
Exit
EndIf
EndIf
EndIf
Next nX
//Retorna se permite ou não salvar o orçamento
Return lRet
0 Comentários