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')
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")
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')
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")
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')