[RESOLVIDO]Adicionar itens q não tem em estoque ao orçamento


#1

Boa tarde.
Nova dúvida.

Para passar um orçamento para um cliente (relatório que desenvolvemos), é feita uma Ordem de Venda normal.
Mas se um cliente quer orçamento de um item que não tem em estoque, não é possível fazer, pois o sistema não deixa adicionar itens sem estoque.
Tem uma maneira de fazer isso?
Porque tem o tipo de documento Proposta e Cotação, mas quando a venda é feita no Terminal de Venda (PDV), não tem opção de escolher o tipo de documento.
Tem como adicionar? Que o vendedor escolha na hora se é venda ou orçamento?

Desde já agradeço. :exclamation:


#2

Cátia, este caso como é um desenvolvimento da empresa que vc trabalha, é caso mais de processos e procedimentos…

Se vc acha, e o responsável por vendas tbm concorda, que o vendedor no terminal PDV deve conseguir criar uma OV Orçamento, dai é o caso de fazer uma modificação na sua implementação… Do ponto de vista técnico não tem problema nenhum vc colocar esta outra opção


#3

O Adempiere em si, não tem essa questão de orçamento?


#4

Segue em anexo a imagem da minha tela de venda:


#5

então, como eu falei… neste caso vc precisaria criar um novo campo no seu PDV com o tipo de documento, e dai quando o vendedor selecionar Orçamento, vc coloca no código que não é para verificar se possui saldo no estoque


#6

Bom dia.
Eu adicionei, na tela de login, um radio button onde, além de poder selecionar venda, transferência e consulta, o usuário seleciona orçamento. Ele abre a mesma tela de venda e transferência. A minha única questão é a do produto sem estoque ainda.
Ele faz a seguinte verificação:

[code]if(!m_Product.isService()){
// Verificar Qtde digitada
if(qtde == null || qtde.signum() < 1)
throw new Exception(“Quantidade Inválida!”);

            // Verificar Estoque
            if(m_WarehousePrice.getQtyAvailable().compareTo(qtde) == -1) 
                throw new Exception("Estoque Insuficiente!");
        }[/code]

Ou seja, se for diferente de serviço, ele verifica se tem estoque.
Eu tentei fazer assim:

[code]// Se for serviço não verifica Estoque
if(!m_Product.isService() || (!SubSalesRep.DOC_ORCAMENTO)){
// Verificar Qtde digitada
if(qtde == null || qtde.signum() < 1)
throw new Exception(“Quantidade Inválida!”);

            // Verificar Estoque
            if(m_WarehousePrice.getQtyAvailable().compareTo(qtde) == -1) 
                throw new Exception("Estoque Insuficiente!");
        }[/code]

Mas ele diz que o operador “!” não pode ser usado para String ou algo assim.
O que eu posso fazer?
Vou ter que criar uma variável boolean pra comparar?

Obrigada desde já. :question:


#7

Olá Catia,

Você precisa sempre passar um boolean dentro do if. Neste caso você está passando um string, então não funciona.

Você pode comparar uma string com outra e o resultado da comparação irá retornar um boolean, ex:

(!SubSalesRep.DOC_ORCAMENTO.equals(getSeuMetodoParaEncontrarODocumentoAtual()))

Att.


#8

Eu tinha colocado assim:

[code]if(!m_Product.isService() && !p_posPanel.p_pos.getDoc().equals(“OR”)){
// Verificar Qtde digitada
if(qtde == null || qtde.signum() < 1)
throw new Exception(“Quantidade Inválida!”);

            // Verificar Estoque
            if(m_WarehousePrice.getQtyAvailable().compareTo(qtde) == -1) 
                throw new Exception("Estoque Insuficiente!");
        }[/code]

Mas ele pula direto pro erro após a verificação.
Vou tentar fazer como você me passou.


#9

Tentei fazer do seu modo, mas também não funcionou. A não ser que fiz errado:

[code]// Se for serviço não verifica Estoque
if(!m_Product.isService() && (!SubSalesRep.DOC_ORCAMENTO.equals(p_posPanel.p_pos.getDoc()))){
// Verificar Qtde digitada
if(qtde == null || qtde.signum() < 1)
throw new Exception(“Quantidade Inválida!”);

            // Verificar Estoque
            if(m_WarehousePrice.getQtyAvailable().compareTo(qtde) == -1) 
                throw new Exception("Estoque Insuficiente!");
        }[/code]

:question:


#10
p_posPanel.p_pos.getDoc()

isso retorna uma String ou um objeto ? Pq pode ser ai o problema, como vc compara dois objetos diferentes, sempre vai ser diferente e nunca vai passar direto pelo seu if


#11

Acho que você está certo.
Alterei, vi os gets que eu tinha… Esse que eu tava passando, realmente, retorna uma string.
Alterei e ficou assim:

[code]if(!m_Product.isService() && (!SubSalesRep.DOC_ORCAMENTO.equals(p_posPanel.p_pos.getC_DocType()))){
// Verificar Qtde digitada
if(qtde == null || qtde.signum() < 1)
throw new Exception(“Quantidade Inválida!”);

            // Verificar Estoque
            if(m_WarehousePrice.getQtyAvailable().compareTo(qtde) == -1) 
                throw new Exception("Estoque Insuficiente!");
        }[/code]

Por enquanto parece que está certo.


#12

Fiz dois orçamentos, deu certo. Agora não deu mais :question:


#13

Eu estava pegando o get errado :slight_smile:
Coloquei assim:

[code]if(m_Product == null || m_WarehousePrice == null)
return;

        // Se for serviço não verifica Estoque
        if(!m_Product.isService() && (!p_posPanel.f_posOrder.getTipoDoc().equals(PosSubPanel.DOC_ORCAMENTO))){
            // Verificar Qtde digitada
            if(qtde == null || qtde.signum() < 1)
                throw new Exception("Quantidade Inválida!");
            
            // Verificar Estoque
            if(m_WarehousePrice.getQtyAvailable().compareTo(qtde) == -1) 
                throw new Exception("Estoque Insuficiente!");
        }[/code]

Ta funcionando :smiley: