Example #1
0
def buscar_produtos(request):
    usuario = Usuarios.objects.get(usuario=request.user.id)
    tb_produtos = {}
    mensagem = ''
    produtos = []
    classe = ''
    alerta = 0
    sucesso = 0
    erro = 0
    valor_total = 0
    valor_estoque = 0
    titulo = 'PESQUISANDO PRODUTOS...'
    if 'status' in request.GET and request.GET['status']:
        status = request.GET.get('status')
        if usuario.permissoes.administrador or usuario.permissoes.acessa_cadastro_produto:
            tb_produtos = Produtos.objects.filter(
                empresa=usuario.empresa,
                status=status).order_by('descricao_simplificada')
        elif usuario.permissoes.administrador_super:
            tb_produtos = Produtos.objects.filter(
                status=status).order_by('descricao_simplificada')

    if 'descricao' in request.GET and request.GET['descricao']:
        descricao = request.GET.get('descricao')
        if usuario.permissoes.administrador or usuario.permissoes.acessa_cadastro_produto:
            tb_produtos = Produtos.objects.filter(
                empresa=usuario.empresa.id,
                descricao_simplificada__contains=descricao.upper()).order_by(
                    'descricao_simplificada')
        elif usuario.permissoes.administrador_super:
            tb_produtos = Produtos.objects.filter(
                descricao_simplificada__contains=descricao.upper()).order_by(
                    'descricao_simplificada')

        if not tb_produtos:
            if usuario.permissoes.administrador or usuario.permissoes.acessa_cadastro_produto:
                tb_produtos = Produtos.objects.filter(
                    empresa=usuario.empresa.id,
                    descricao_simplificada__contains=descricao.lower(
                    )).order_by('descricao_simplificada')
            elif usuario.permissoes.administrador_super:
                tb_produtos = Produtos.objects.filter(
                    descricao_simplificada__contains=descricao.lower(
                    )).order_by('descricao_simplificada')

        if not tb_produtos:
            mensagem = 'Voce pesquisou por [ ' + str(
                descricao) + ' ] Nenhum Produto corresponde a sua pesquisa...'
        else:
            mensagem = 'Voce pesquisou por [ ' + str(
                descricao) + ' ] Um total de ' + str(
                    len(tb_produtos
                        )) + ' registros corresponderam á sua pesquisa...'

    if 'codigo_barras' in request.GET and request.GET['codigo_barras']:
        codigo_barras = str(request.GET.get('codigo_barras'))
        if usuario.permissoes.administrador or usuario.permissoes.acessa_cadastro_produto:
            tb_produtos = Produtos.objects.filter(
                empresa=usuario.empresa.id,
                codigo_barras=codigo_barras).order_by('descricao_simplificada')
        elif usuario.permissoes.administrador_super:
            tb_produtos = Produtos.objects.filter(
                codigo_barras=codigo_barras).order_by('descricao_simplificada')

        if not tb_produtos:
            mensagem = 'Voce pesquisou por produtos com o seguinte código de barras: [ ' + codigo_barras + ''' ].
                          Nenhum produto corresponde a sua pesquisa...'''
        else:
            mensagem = 'Voce pesquisou por produtos com o seguinte código de barras: [ ' + codigo_barras + ''' ].
                        Um total de ''' + str(len(
                tb_produtos)) + ' registros corresponderam á sua pesquisa....'

    if 'id_produto' in request.GET and request.GET['id_produto']:
        id_produto = int(request.GET.get('id_produto') or 0)
        if usuario.permissoes.administrador or usuario.permissoes.acessa_cadastro_produto:
            tb_produtos = Produtos.objects.filter(empresa=usuario.empresa.id,
                                                  id=id_produto)
        elif usuario.permissoes.administrador_super:
            tb_produtos = Produtos.objects.filter(id=id_produto)

        if not tb_produtos:
            mensagem = 'Voce pesquisou por produtos com o seguinte ID: [ 000.' + str(
                id_produto) + ''' ].
                          Nenhum produto corresponde a sua pesquisa...'''
        else:
            mensagem = 'Voce pesquisou por produtos com o seguinte ID: [ ' + str(
                id_produto) + ''' ].
                        Um total de ''' + str(
                    len(tb_produtos
                        )) + ' registros corresponderam á sua pesquisa...'
    sucesso = 1
    for index in tb_produtos:
        tatal_desconto = 0
        if index.anunciar_produto:
            anuncio = 'ANUNCIADO'
        else:
            anuncio = 'SEM ANUNCIO'

        if (index.estoque_atual >
                index.estoque_minimo) and index.estoque_minimo > 0:
            classe = 'success'
        elif (index.estoque_atual
              == index.estoque_minimo) and index.estoque_minimo > 0:
            classe = 'warning'
        elif (index.estoque_atual <
              index.estoque_minimo) and index.estoque_minimo > 0:
            classe = 'danger'

        if index.desconto_maximo >= index.atacado_desconto and index.desconto_maximo > 0:
            tatal_desconto = ((index.desconto_maximo / 100) *
                              index.estoque_atual) * index.preco_venda

        elif index.desconto_maximo < index.atacado_desconto and index.atacado_desconto > 0:
            tatal_desconto = ((index.atacado_desconto / 100) *
                              index.estoque_atual) * index.preco_venda
        elif index.desconto_maximo < 0.001 and index.atacado_desconto < 0.001:
            tatal_desconto = 0

        valor_total = index.estoque_atual * index.preco_venda
        valor_estoque = valor_total - tatal_desconto

        valor_total = '%0.02f' % valor_total
        valor_estoque = '%0.02f' % valor_estoque
        tatal_desconto = '%0.02f' % tatal_desconto

        produtos += [{
            'codigo_barras':
            index.codigo_barras,
            'preco_venda':
            moeda_real(index.preco_venda),
            'valor_compra':
            moeda_real(index.valor_compra),
            'valor_total':
            moeda_real(valor_total),
            'tatal_desconto':
            moeda_real(tatal_desconto),
            'valor_estoque':
            moeda_real(valor_estoque),
            'estoque_atual':
            str(index.estoque_atual),
            'descricao_simplificada':
            index.descricao_simplificada,
            'unidade_medida':
            index.unidade_medida,
            'categoria':
            str(index.categoria_produto),
            'estoque_minimo':
            str(index.estoque_minimo),
            'estoque_maximo':
            str(index.estoque_maximo),
            'fracionar_produto':
            index.fracionar_produto,
            'id_embalagem_fechada':
            str(index.id_embalagem_fechada),
            'quantidade_embalagem_fechada':
            str(index.quantidade_embalagem_fechada),
            'percentual_lucro':
            str(index.percentual_lucro),
            'desconto_maximo':
            str(index.desconto_maximo),
            'atacado_apartir':
            str(index.atacado_apartir),
            'atacado_desconto':
            str(index.atacado_desconto),
            'anunciar_produto':
            anuncio,
            'empresa':
            str(index.empresa),
            'marca':
            str(index.marca_produto),
            'id':
            index.id,
            'status':
            index.status,
            'classe':
            classe,
        }]

    retorno = json.dumps({
        'produtos': produtos,
        'titulo': titulo,
        'mensagem': mensagem,
        'erro': erro,
        'alerta': alerta,
        'sucesso': sucesso,
    })
    return HttpResponse(retorno, content_type='application/json')
Example #2
0
def registrar_entrada_produto(request):
    entrada_id = int(request.POST.get('entrada_id' or 0))
    atualizar_preco = request.POST.get('atualizar_preco')
    atualizar_preco_tabelado = request.POST.get('atualizar_preco_tabelado')

    usuario = Usuarios.objects.get(usuario=request.user.id)
    retorno = {}
    sucesso = {}
    erro = []
    itens_compra = []
    quantidade_anterior = 0
    classe = ''
    compra = ''
    valor_total = 0
    if request.method == 'POST':
        if entrada_id > 0:
            entrada = EntradaProdutos.objects.get(id=int(entrada_id))
            quantidade_anterior = entrada.quantidade
        else:
            entrada = None
        if 'form_entrada' in request.POST and request.POST['form_entrada']:
            form_entrada = FormEntradaProdutos(deserialize_form(
                request.POST.get('form_entrada')),
                                               instance=entrada)
            if form_entrada.is_valid():
                registro = form_entrada.save(commit=False)
                produto = Produtos.objects.get(id=registro.produto_id)
                estoque_atual = float(produto.estoque_atual)
                estoque_total = (float(estoque_atual) -
                                 float(quantidade_anterior))
                quantidade = float(registro.quantidade)
                novo_estoque = (float(estoque_total) + float(quantidade))
                produto.estoque_atual = ("%.3f" % novo_estoque)
                if entrada_id < 1:
                    registro.empresa = usuario.empresa
                    registro.usuario = request.user
                    titulo_mensagem = 'REGISTRANDO ENTRADA DE PRODUTOS'
                    mensagem = 'Entrada registrada com sucesso!!!'
                else:
                    titulo_mensagem = 'ALTERANDO REGISTRO...'
                    mensagem = 'O registro foi alterado com sucesso!!!'
                if novo_estoque >= 0 or entrada_id < 1:
                    preco_compra_anterior = produto.valor_compra
                    percentual = produto.percentual_lucro
                    preco_compra_atual = registro.preco_compra

                    if atualizar_preco == 'SIM':
                        produto.preco_venda = ((
                            (percentual / 100) * preco_compra_atual) +
                                               preco_compra_atual)
                        produto.valor_compra = registro.preco_compra

                    if atualizar_preco_tabelado == 'SIM':
                        tabela_preco = TabelaPrecos.objects.filter(
                            produto__id=produto.id)
                        for item in tabela_preco:
                            percentual = item.percentual
                            item.preco_venda = ((
                                (percentual / 100) * preco_compra_atual) +
                                                preco_compra_atual)
                            item.save()

                    registro.save()
                    produto.save()
                    itens = EntradaProdutos.objects.filter(
                        compra=registro.compra)
                    for index in itens:
                        classe = 'success'
                        valor_total += index.total
                        if index.status_entrada == 'CANCELADO':
                            classe = 'danger'
                            valor_total -= index.total
                        itens_compra += [{
                            'id':
                            str(index.id),
                            'compra':
                            str(index.compra),
                            'produto':
                            str(index.produto),
                            'quantidade':
                            str(index.quantidade),
                            'preco_compra':
                            moeda_real(index.preco_compra),
                            'data_entrada':
                            str(index.data_entrada),
                            'data_fabricacao':
                            str(index.data_fabricacao),
                            'data_validade':
                            str(index.data_validade),
                            'numero_lote':
                            str(index.numero_lote),
                            'total':
                            moeda_real(index.total),
                            'balanco':
                            index.balanco,
                            'marca':
                            str(index.produto.marca_produto),
                            'status_entrada':
                            index.status_entrada,
                            'observacoes_entrada':
                            index.observacoes_entrada,
                            'empresa':
                            str(index.empresa),
                            'classe':
                            classe
                        }]
                    compra = Compras.objects.get(id=registro.compra.id)
                    sucesso['itens'] = itens_compra
                    sucesso['mensagem'] = mensagem + ' ' + moeda_real(
                        preco_compra_atual) + ' | ' + moeda_real(
                            preco_compra_anterior)
                    sucesso['id'] = registro.id
                    sucesso['titulo'] = titulo_mensagem
                    sucesso['sucesso'] = 1
                    sucesso['fornecedor'] = str(
                        compra.fornecedor.nome_razao_social)
                    sucesso['valor_total'] = moeda_real(valor_total)
                    sucesso['data_compra'] = str(
                        compra.data_compra.strftime("%d-%m-%Y"))
                    sucesso['solicitante'] = compra.solicitante
                    sucesso['status_compra'] = compra.status_compra
                    retorno = json.dumps(sucesso)
                elif novo_estoque < 0 and (entrada_id > 0):
                    retorno = json.dumps({
                        'titulo': 'QUANTIDADE INVÁLIDA...',
                        'mensagem':
                        'Parte desre produto já foi vendido. Não foi possível fazer a alteração...',
                        'erro2': 1,
                    })
            else:
                for error in form_entrada.errors:
                    erro += {error}
                    erro += {error}
                titulo_mensagem = 'ERRO NA VALIDAÇÃO DOS DADOS...'
                mensagem = 'Por favor, corrija os campos listados em vermelho e tente novamente...'
                retorno = json.dumps({
                    'titulo': titulo_mensagem,
                    'mensagem': mensagem,
                    'erro': erro,
                })
        else:
            retorno = json.dumps({
                'titulo': titulo_mensagem_erro_padrao(),
                'mensagem': mensagem_erro_padrao(),
                'erro2': 1,
            })
    return HttpResponse(retorno, content_type="application/json")
Example #3
0
def buscar_compras(request):
    usuario = Usuarios.objects.get(usuario=request.user.id)
    tb_compras = {}
    mensagem = ''
    compras = []
    classe = ''

    if 'status' in request.GET and request.GET['status']:
        status = request.GET.get('status')

        if usuario.permissoes.administrador or usuario.permissoes.acessa_registro_compra:
            tb_compras = Compras.objects.filter(empresa=usuario.empresa.id,
                                                status_compra=status)

        if usuario.permissoes.administrador_super:
            tb_compras = Compras.objects.filter(status_compra=status)

    if 'id_compra' in request.GET and request.GET['id_compra']:
        id_compra = request.GET.get('id_compra')

        if usuario.permissoes.administrador or usuario.permissoes.acessa_registro_compra:
            tb_compras = Compras.objects.filter(empresa=usuario.empresa.id,
                                                pk=int(id_compra))

        if usuario.permissoes.administrador_super:
            tb_compras = Compras.objects.filter(pk=int(id_compra))

    if 'data_compra' in request.GET and request.GET['data_compra']:
        data_compra = request.GET.get('data_compra')
        data_compra = datetime.strptime(data_compra, "%Y-%m-%d")

        if usuario.permissoes.administrador or usuario.permissoes.acessa_registro_compra:
            tb_compras = Compras.objects.filter(empresa=usuario.empresa.id,
                                                data_compra=data_compra)

        if usuario.permissoes.administrador_super:
            tb_compras = Compras.objects.filter(data_compra=data_compra)

    if 'fornecedor' in request.GET and request.GET['fornecedor']:
        fornecedor = request.GET.get('fornecedor')

        if usuario.permissoes.administrador or usuario.permissoes.acessa_registro_compra:
            tb_compras = Compras.objects.filter(empresa=usuario.empresa.id,
                                                fornecedor=fornecedor)

        if usuario.permissoes.administrador_super:
            tb_compras = Compras.objects.filter(fornecedor=fornecedor)

    if 'nota_fiscal' in request.GET and request.GET['nota_fiscal']:
        nota_fiscal = request.GET.get('nota_fiscal')

        if usuario.permissoes.administrador or usuario.permissoes.acessa_registro_compra:
            tb_compras = Compras.objects.filter(empresa=usuario.empresa.id,
                                                nota_fiscal=nota_fiscal)

        if usuario.permissoes.administrador_super:
            tb_compras = Compras.objects.filter(nota_fiscal=nota_fiscal)

    if tb_compras:
        for index in tb_compras:

            if index.status_compra == 'NAO LANCADO':
                classe = ''
            elif index.status_compra == 'PARCIALMENTE LANCADO':
                classe = 'warning'
            elif index.status_compra == 'LANCADO':
                classe = 'success'
            elif index.status_compra == 'CANCELADO':
                classe = 'danger'

            compras += [{
                'id':
                index.id,
                'fornecedor':
                str(index.fornecedor),
                'solicitante':
                index.solicitante,
                'data_compra':
                str(index.data_compra),
                'nota_fiscal':
                index.nota_fiscal,
                'valor_total':
                moeda_real(index.valor_total),
                'pagamento':
                str(index.pagamento) if index.pagamento else 'EM ABERTO',
                'status_pagamento':
                str(index.pagamento.status_conta)
                if index.pagamento else 'EM ABERTO',
                'status_compra':
                index.status_compra,
                'observacoes':
                index.observacoes,
                'empresa':
                str(index.empresa),
                'classe':
                classe,
                'mensagem':
                mensagem,
            }]

    retorno = json.dumps(compras)
    return HttpResponse(retorno, content_type='application/json')
Example #4
0
def muda_status_compra(request):
    usuario = Usuarios.objects.get(usuario=request.user.id)
    retorno = {}
    mensagem = ''
    titulo = ''
    sucesso = 0
    erro = 0
    info = 0
    itens_compra = []
    status = ''
    status_compra = ''
    titulo = 'ALTERANDO STÁTUS DA COMPRA...'
    if usuario.permissoes.administrador_super or usuario.permissoes.administrador or usuario.permissoes.muda_status_compra:
        if request.method == 'POST':
            compra = Compras.objects.filter(
                pk=int(QueryDict(request.body).get('id_compra')))
            status = QueryDict(request.body).get('status')
            if compra:
                compra = Compras.objects.get(
                    pk=int(QueryDict(request.body).get('id_compra')))
                status_compra = compra.status_compra
                if status != status_compra:
                    compra.status_compra = status
                    compra.save()
                    sucesso = 1
                    if status == 'NAO LANCADO':
                        mensagem = 'Esta compra foi marcado novamente como não lançada...'

                    elif status == 'PARCIALMENTE LANCADO':
                        mensagem = 'Esta compra foi marcado como parcialmente lançada...'

                    elif status == 'LANCADO':
                        mensagem = 'Esta compra foi marcada como lançada...'

                    elif status == 'CANCELADO':
                        itens = EntradaProdutos.objects.filter(
                            compra=compra.id, status_entrada='LANCADO')
                        if itens:
                            for item in itens:
                                produto = Produtos.objects.get(
                                    id=item.produto.id)
                                produto.estoque_atual -= item.quantidade
                                item.status_entrada = 'CANCELADO'
                                item.save()
                                produto.save()
                                itens = EntradaProdutos.objects.filter(
                                    compra=compra.id)
                                for index in itens:
                                    classe = 'success'
                                    if index.status_entrada == 'CANCELADO':
                                        classe = 'danger'
                                    itens_compra += [{
                                        'id':
                                        str(index.id),
                                        'compra':
                                        str(index.compra),
                                        'produto':
                                        str(index.produto),
                                        'quantidade':
                                        str(index.quantidade),
                                        'preco_compra':
                                        moeda_real(index.preco_compra),
                                        'data_entrada':
                                        str(index.data_entrada),
                                        'data_fabricacao':
                                        str(index.data_fabricacao),
                                        'data_validade':
                                        str(index.data_validade),
                                        'numero_lote':
                                        str(index.numero_lote),
                                        'total':
                                        moeda_real(index.total),
                                        'balanco':
                                        index.balanco,
                                        'marca':
                                        str(index.produto.marca_produto),
                                        'status_entrada':
                                        index.status_entrada,
                                        'observacoes_entrada':
                                        index.observacoes_entrada,
                                        'empresa':
                                        str(index.empresa),
                                        'classe':
                                        classe
                                    }]
                        mensagem = 'Compra cancelada com sucesso!!!'
                elif status == status_compra:
                    mensagem = '''O registro não foi alterado, pois o seu státus é exatamente o mesmo indicado para
                                  alteração...'''
                    info = 1
    else:
        erro = 1
        mensagem = mensagem_permissao_negada()
        titulo = titulo_mensagem_permissao_negada()
    retorno['itens'] = itens_compra
    retorno['sucesso'] = sucesso
    retorno['erro'] = erro
    retorno['info'] = info
    retorno['mensagem'] = mensagem
    retorno['titulo'] = titulo
    retorno['status'] = status
    retorno['status_compra'] = status_compra
    return HttpResponse(json.dumps(retorno), content_type="application/json")
Example #5
0
def buscar_compra(request):
    usuario = Usuarios.objects.get(usuario=request.user.id)
    id = int(request.GET.get('id') or 0)
    compra = {}
    itens_compra = []
    valor_total = 0

    try:
        if usuario.permissoes.administrador or usuario.permissoes.edita_compra:
            compra = Compras.objects.get(id=id, empresa=usuario.empresa)
    except:
        pass

    try:
        if usuario.permissoes.administrador_super:
            compra = Compras.objects.get(id=id)
    except:
        pass

    if not compra:
        retorno = json.dumps({
            'titulo': 'REGISTRO NÃO ENCONTRADO',
            'mensagem':
            'O sistema não identificou nenhuma compra com este ID.',
            'alerta': 1,
        })
    else:
        form = FormCompras(instance=compra)
        titulo = 'BUSCANADO REGISTROS...'
        mensagem = 'Busca efetuada com sucesso ! ! !'
        campos = {}
        classe = ''
        itens = EntradaProdutos.objects.filter(compra=compra.pk)
        for index in itens:
            classe = 'success'
            valor_total += index.total
            if index.status_entrada == 'CANCELADO':
                classe = 'danger'
                valor_total -= index.total
            itens_compra += [{
                'id': str(index.id),
                'compra': str(index.compra),
                'produto': str(index.produto),
                'quantidade': str(index.quantidade),
                'preco_compra': moeda_real(index.preco_compra),
                'data_entrada': str(index.data_entrada),
                'data_fabricacao': str(index.data_fabricacao),
                'data_validade': str(index.data_validade),
                'numero_lote': str(index.numero_lote),
                'total': moeda_real(index.total),
                'balanco': index.balanco,
                'status_entrada': index.status_entrada,
                'observacoes_entrada': index.observacoes_entrada,
                'empresa': str(index.empresa),
                'marca': str(index.produto.marca_produto),
                'classe': classe
            }]
        for campo in form.fields:
            if campo in form.initial:
                campos[form.auto_id % campo] = str(form.initial[campo])

        retorno = json.dumps({
            'id':
            id,
            'titulo':
            titulo,
            'mensagem':
            mensagem,
            'fornecedor':
            str(compra.fornecedor.nome_razao_social),
            'valor_total':
            str(valor_total),
            'data_compra':
            str(compra.data_compra.strftime('%d/%m/%Y')),
            'solicitante':
            compra.solicitante,
            'status_compra':
            compra.status_compra,
            'campos':
            campos,
            'itens':
            itens_compra,
        })

    return HttpResponse(retorno, content_type='application/json')