Histórico da Página
Como não permitir realizar orçamentos com produtos sem estoque?
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 |