Árvore de páginas

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