def cadastrar_cliente(request): cliente_id = request.POST.get('id') pessoa = request.POST.get('pessoa') usuario = Usuarios.objects.get(usuario=request.user.id) retorno = {} sucesso = {} erro = [] if cliente_id != '0': cliente = Clientes.objects.get(id=int(cliente_id)) else: cliente = None if request.method == 'POST': form = deserialize_form(request.POST.get('form')) form = FormCadastroClientes(form, instance=cliente) if form.is_valid(): registro = form.save(commit=False) # registro.nome_razao_social = NORMALIZAR(registro.nome_razao_social) # registro.nome_fantasia = NORMALIZAR(registro.nome_fantasia) # registro.sobre_nome = NORMALIZAR(registro.sobre_nome) if not cliente_id != '0': registro.empresa = usuario.empresa registro.usuario = int(usuario.id) registro.pessoa = pessoa titulo_mensagem = 'SALVANDO REGISTRO . . .' mensagem = 'O registro foi salvo com sucesso !!!' else: titulo_mensagem = 'ALTERANDO REGISTRO . . .' mensagem = 'O registro foi alterado com sucesso !!!' registro.save() sucesso['success'] = True sucesso['mensagem'] = mensagem sucesso['id'] = registro.id sucesso['titulo'] = titulo_mensagem retorno = json.dumps(sucesso) else: for error in form.errors: erro += {error} titulo_mensagem = 'ERRO NA VALIDAÇÃO DOS DADOS . . .' mensagem = '''O formulário apresentou erros no seu preenchimento. Corrija os campos listados em vermelho e tente novamente. . .''' retorno = json.dumps({ 'titulo': titulo_mensagem, 'mensagem': mensagem, 'erro': erro, }) return HttpResponse(retorno, content_type="application/json")
def registrar_nova_compra(request): compra_id = request.POST.get('id') usuario = Usuarios.objects.get(usuario=request.user.id) retorno = {} sucesso = {} erro = [] if compra_id != '0': compra = Compras.objects.get(id=int(compra_id)) else: compra = None if request.method == 'POST': form = FormCompras(deserialize_form(request.POST.get('form')), instance=compra) if form.is_valid(): registro = form.save(commit=False) if not compra_id != '0': registro.empresa = usuario.empresa registro.usuario = request.user titulo_mensagem = 'SALVANDO REGISTRO . . .' mensagem = 'O registro foi salvo com sucesso !!!' else: titulo_mensagem = 'ALTERANDO REGISTRO . . .' mensagem = 'O registro foi alterado com sucesso !!!' registro.save() sucesso['fornecedor'] = registro.fornecedor.nome_razao_social sucesso['success'] = True sucesso['mensagem'] = mensagem sucesso['id'] = registro.id sucesso['titulo'] = titulo_mensagem retorno = json.dumps(sucesso) else: for error in form.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, }) return HttpResponse(retorno, content_type="application/json")
def post(self, request): id = int(request.POST.get('id') or 0) usuario = Usuarios.objects.get(usuario=request.user.id) empresa = {} sucesso = {} erro = [] if id > 0: registro = Marcas.objects.get(id=id) empresa = registro.empresa else: registro = None empresa = usuario.empresa form = FormMarcas(deserialize_form(request.POST.get('form')), instance=registro) if form.is_valid(): registro = form.save(commit=False) registro.descricao = NORMALIZAR(registro.descricao) registro.obs = NORMALIZAR(registro.obs) registro.empresa = empresa if id < 1: titulo_mensagem = 'SALVANDO REGISTRO . . .' mensagem = 'O registro foi salvo com sucesso !!!' else: titulo_mensagem = 'ALTERANDO REGISTRO . . .' mensagem = 'O registro foi alterado com sucesso !!!' registro.save() sucesso['success'] = True sucesso['mensagem'] = mensagem sucesso['id'] = registro.id sucesso['descricao'] = registro.descricao sucesso['obs'] = registro.obs sucesso['titulo'] = titulo_mensagem retorno = json.dumps(sucesso) else: for error in form.errors: erro += {error} erro += {error} titulo_mensagem = 'ERRO NA VALIDAÇÃO DOS DADOS . . .' mensagem = '''O formulário apresentou erros no seu preenchimento. Corrija os campos listados em vermelho e tente novamente...''' retorno = json.dumps({ 'titulo': titulo_mensagem, 'mensagem': mensagem, 'erro': erro, }) return HttpResponse(retorno, content_type="application/json")
def cadastrar_colaborador(request): colaborador_id = request.POST.get('id') usuario = Usuarios.objects.get(usuario=request.user.id) retorno = {} sucesso = {} erro = [] if colaborador_id != '0': if not usuario.permissoes.administrador and not usuario.permissoes.administrador_super and not usuario.permissoes.edita_colaborador: sucesso['negado'] = 1 sucesso['mensagem'] = mensagem_permissao_negada() sucesso['titulo'] = titulo_mensagem_permissao_negada() retorno = json.dumps(sucesso) return HttpResponse(retorno, content_type="application/json") else: colaborador = Colaboradores.objects.get(id=int(colaborador_id)) else: colaborador = None if not usuario.permissoes.administrador and not usuario.permissoes.administrador_super and not usuario.permissoes.cadastra_colaborador: sucesso['negado'] = 1 sucesso['mensagem'] = mensagem_permissao_negada() sucesso['titulo'] = titulo_mensagem_permissao_negada() retorno = json.dumps(sucesso) return HttpResponse(retorno, content_type="application/json") if request.method == 'POST': form = deserialize_form(request.POST.get('form')) form = FormCadastroColaboradores(form, instance=colaborador) if form.is_valid(): registro = form.save(commit=False) registro.nome = NORMALIZAR(registro.nome) registro.sobre_nome = NORMALIZAR(registro.sobre_nome) if not colaborador_id != '0': registro.empresa = usuario.empresa registro.id_usuario = request.user.id titulo_mensagem = 'SALVANDO REGISTRO...' mensagem = 'O registro foi salvo com sucesso !!!' else: titulo_mensagem = 'ALTERANDO REGISTRO...' mensagem = 'O registro foi alterado com sucesso!!!' registro.save() sucesso['success'] = True sucesso['mensagem'] = mensagem sucesso['id'] = registro.id sucesso['titulo'] = titulo_mensagem retorno = json.dumps(sucesso) else: for error in form.errors: erro += {error} titulo_mensagem = 'ERRO NA VALIDAÇÃO DOS DADOS . . .' mensagem = '''O formulário apresentou erros no seu preenchimento. Corrija os campos listados em vermelho e tente novamente. . .''' retorno = json.dumps({ 'titulo': titulo_mensagem, 'mensagem': mensagem, 'erro': erro, }) return HttpResponse(retorno, content_type="application/json")
def cadastrar_produto(request): produto_id = int(request.POST.get('id') or 0) usuario = Usuarios.objects.get(usuario=request.user.id) retorno = {} sucesso = {} erro = [] if produto_id > 0: produto = Produtos.objects.get(id=produto_id) else: produto = None if request.method == 'POST': form = deserialize_form(request.POST.get('form')) form = FormCadastroProduto(form, instance=produto) if form.is_valid(): registro = form.save(commit=False) if not registro.descricao_completa: registro.descricao_completa = registro.descricao_simplificada registro.descricao_simplificada = NORMALIZAR( registro.descricao_simplificada) registro.descricao_completa = NORMALIZAR( registro.descricao_completa) if registro.codigo_barras and registro.codigo_barras != 'Null' and registro.codigo_barras != 'None': p = Produtos.objects.filter( empresa=usuario.empresa, codigo_barras=registro.codigo_barras) if p: p = Produtos.objects.get( empresa=usuario.empresa, codigo_barras=registro.codigo_barras) if p.id != registro.id: retorno = json.dumps({ 'titulo': 'CÓDIGO DE BARRAS REPETIDO...', 'mensagem': 'Já existe um produto cadastrado com este código de barras...<br>' + str(p.descricao_simplificada) + '...', 'erro': 1, }) return HttpResponse(retorno, content_type="application/json") if produto_id < 1: registro.empresa = usuario.empresa registro.usuario = request.user titulo_mensagem = 'SALVANDO REGISTRO . . .' mensagem = 'O registro foi salvo com sucesso !!!' else: titulo_mensagem = 'ALTERANDO REGISTRO . . .' mensagem = 'O registro foi alterado com sucesso !!!' if registro.valor_compra: preco_venda = ((float(registro.percentual_lucro) / 100) * float(registro.valor_compra)) + float( registro.valor_compra) registro.preco_venda = preco_venda registro.save() sucesso['success'] = True sucesso['mensagem'] = mensagem sucesso['id'] = registro.id sucesso['titulo'] = titulo_mensagem retorno = json.dumps(sucesso) else: for error in form.errors: erro += {error} erro += {error} titulo_mensagem = 'ERRO NA VALIDAÇÃO DOS DADOS . . .' mensagem = '''O formulário apresentou erros no seu preenchimento. Corrija os campos listados em vermelho e tente novamente. . .''' retorno = json.dumps({ 'titulo': titulo_mensagem, 'mensagem': mensagem, 'erro': erro, }) return HttpResponse(retorno, content_type="application/json")
def registrar_nova_venda(request): venda_id = request.POST.get('id') usuario = Usuarios.objects.get(usuario=request.user.id) retorno = {} sucesso = {} erro = [] tabela = [] if venda_id != '0': venda = Vendas.objects.get(id=int(venda_id)) else: venda = None if request.method == 'POST': form = deserialize_form(request.POST.get('form')) form = FormVendas(form, instance=venda) if form.is_valid(): registro = form.save(commit=False) if not venda_id != '0': registro.empresa = usuario.empresa registro.usuario = request.user titulo_mensagem = 'SALVANDO REGISTRO . . .' mensagem = 'O registro foi salvo com sucesso !!!' else: titulo_mensagem = 'ALTERANDO REGISTRO . . .' mensagem = 'O registro foi alterado com sucesso !!!' registro.save() tb_precos = TabelaPrecos.objects.filter(cliente=registro.cliente, status_preco='ATIVO') for index in tb_precos: tabela += [{ 'id_produto': str(index.produto.id), 'produto': str(index.produto), }] sucesso['tabela'] = tabela sucesso['success'] = True sucesso['mensagem'] = mensagem sucesso['id'] = registro.id sucesso['titulo'] = titulo_mensagem sucesso['cliente'] = registro.cliente.nome_razao_social retorno = json.dumps(sucesso) else: for error in form.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, }) return HttpResponse(retorno, content_type="application/json")
def finalizar_venda(request): titulo = 'FINALIZANDO PEDIDO...' mensagem = '' cliente = 0 registro = {} p = {} venda = {} itens = {} erro = 0 id_venda = 0 id_conta = 0 info = 0 alerta = 0 valortotal = 0 sucesso = 0 retorno = {} usuario = Usuarios.objects.get(usuario=request.user.id) if usuario.permissoes.administrador_super or usuario.permissoes.administrador or usuario.permissoes.finaliza_compra: if request.method == 'GET': id_conta = int(request.GET.get('id_conta') or 0) id_venda = int(request.GET.get('id_venda') or 0) elif request.method == 'POST': id_conta = int(request.POST.get('id_conta') or 0) id_venda = int(request.POST.get('id_venda') or 0) if id_venda > 0: venda = Vendas.objects.get(id=id_venda) cliente = venda.cliente.id itens = SaidaProdutos.objects.filter(venda=venda.id, status='AGUARDANDO') if itens: valortotal = 0 desc = 0 tot = 0 for item in itens: valortotal += item.saldo_final desc += item.total_desconto tot += item.valor_unitario if id_conta > 0: conta = ContasReceber.objects.get(id=int(id_conta)) else: conta = None if request.method == 'POST': form = FormContasReceber(deserialize_form( request.POST.get('form')), instance=conta) if form.is_valid(): registro = form.save(commit=False) venda.saldo_final = valortotal venda.valor_total = tot venda.desconto = desc venda.status_pedido = 'CONCLUIDO NAO ENTREGUE' registro.usuario = request.user registro.empresa = usuario.empresa registro.status_conta = 'PENDENTE' registro.data_vencimento = datetime.now() registro.documento_vinculado = venda.id registro.valor_conta = venda.saldo_final registro.descricao = 'Pagamento referente ao pedido 000' + str( venda.id) if registro.valor_entrada < venda.saldo_final: if registro.forma_de_pagamento == 'A VISTA' and registro.valor_entrada == 0.0 or \ registro.forma_de_pagamento == 'A PRAZO': registro.save() conta = ContasReceber.objects.get( id=registro.id) id_conta = conta.id venda.pagamento = conta venda.save() if registro.valor_entrada > 0: pgtos = None frm = FormPagamentos(instance=pgtos) p = frm.save(commit=False) p.conta_id = registro.id p.empresa = registro.empresa p.usuario = request.user p.meio_pagamento = registro.meio_de_pagamento p.data_pagamento = datetime.now() p.data_vencimento = datetime.now() p.valor_pagamento = registro.valor_entrada p.status_pagamento = 'PAGO' registro.status_conta = 'PARCIALMENTE PAGO' p.observacoes_pagamento = 'Pago como entrada no ato da venda.' registro.save() p.save() if registro.forma_de_pagamento == 'A VISTA': pgtos = None frm = FormPagamentos(instance=pgtos) p = frm.save(commit=False) p.empresa = registro.empresa p.usuario = request.user p.meio_pagamento = registro.meio_de_pagamento p.conta_id = registro.id p.data_pagamento = datetime.now() p.data_vencimento = datetime.now() p.valor_pagamento = venda.saldo_final # p.status_pagamento = 'PAGO' # registro.status_conta = 'PAGO' # registro.status_conta = 'PAGO' registro.quantidade_parcelas = 0 p.meio_pagamento = registro.meio_de_pagamento p.observacoes_pagamento = 'Pagamento realizado no ato da venda.' p.save() registro.save() if registro.forma_de_pagamento == 'A PRAZO': data = registro.primeiro_vencimento restante = int( registro.quantidade_parcelas) for ps in range(0, restante): pgtos = None frm = FormPagamentos(instance=pgtos) p = frm.save(commit=False) p.conta_id = registro.id if ps == 0: vencimento = datetime.fromordinal( data.toordinal()) else: vencimento = datetime.fromordinal( data.toordinal() + 31 * ps) p.empresa = registro.empresa p.usuario = request.user p.data_vencimento = vencimento p.valor_pagamento = ( venda.saldo_final - registro.valor_entrada) / restante p.status_pagamento = 'PENDENTE' p.meio_pagamento = registro.meio_de_pagamento p.observacoes_pagamento = 'Pagamento programado conforme informações coletadas nafinalização da venda.' p.save() mensagem = 'Venda finalizada com sucesso!!!' sucesso = 1 for item in itens: if item.status != 'CANCELADO': item.status = 'EM SEPARACAO' item.save() elif registro.forma_de_pagamento == 'A VISTA' and registro.valor_entrada != 0.0: mensagem = 'Tratando se de um pagamento á vista, o valor da entrada deve ser sempre $0,00' erro = 1 elif registro.valor_entrada >= venda.saldo_final: mensagem = '''Tratando-se de um pagamento a prazo, a entrada não pode ser igual nem superior ao valor total do pedido''' erro = 1 else: form_erro = [] for error in form.errors: form_erro += {error} retorno['form_erro'] = form_erro titulo = 'ERRO NA VALIDAÇÃO DOS DADOS...' mensagem = 'Por favor, corrija os campos listados em vermelho e tente novamente...' else: mensagem = 'Não será possível finalizar a venda, pois não foi vendido nenhum ítem. Caso não tenha interesse em continuá-la, você deve cancelar a mesma...' erro = 1 else: mensagem = mensagem_erro_padrao() titulo = titulo_mensagem_erro_padrao() erro = 1 else: mensagem = mensagem_permissao_negada() titulo = titulo_mensagem_permissao_negada() erro = 1 retorno['sucesso'] = sucesso retorno['erro'] = erro retorno['info'] = info retorno['id_conta'] = id_conta retorno['alerta'] = alerta retorno['mensagem'] = mensagem retorno['titulo'] = titulo retorno['valor_total'] = str(valortotal) retorno['method'] = request.method retorno['agente_pagador'] = str(cliente) retorno['data_atual'] = str(datetime.now().strftime('%Y-%m-%d')) return HttpResponse(json.dumps(retorno), content_type="application/json")
def tabelar_preco(request): preco_id = int(request.POST.get('id') or 0) usuario = Usuarios.objects.get(usuario=request.user) retorno = {} sucesso = {} erro = [] if preco_id > 0: preco = TabelaPrecos.objects.get(id=preco_id) else: preco = None if request.method == 'POST': form = FormTabelaPrecos(deserialize_form(request.POST.get('form')), instance=preco) if form.is_valid(): registro = form.save(commit=False) if preco_id < 1: produto_tabela = TabelaPrecos.objects.filter( produto=registro.produto, cliente=registro.cliente) if produto_tabela: retorno = json.dumps({ 'titulo': 'AÇÃO REJEITADA PELO SISTEMA...', 'mensagem': 'Este produto já consta na tabela deste cliente', 'erro': erro, }) return HttpResponse(retorno, content_type="application/json") else: registro.empresa = usuario.empresa registro.usuario = request.user titulo_mensagem = 'TABELANDO PREÇO...' mensagem = 'Preço tabelado com sucesso!!!' else: titulo_mensagem = 'ALTERANDO PREÇO . . .' mensagem = 'O preço foi alterado com sucesso!!!' registro.save() sucesso['success'] = True sucesso['mensagem'] = mensagem sucesso['id'] = registro.id sucesso['titulo'] = titulo_mensagem retorno = json.dumps(sucesso) else: for error in form.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, }) return HttpResponse(retorno, content_type="application/json")
def finalizar_compra(request): titulo = 'FINALIZANDO COMPRA...' mensagem = '' fornecedor = 0 registro = {} p = {} compra = {} itens = {} erro = 0 id_compra = 0 id_conta = 0 info = 0 alerta = 0 valortotal = 0 sucesso = 0 retorno = {} usuario = Usuarios.objects.get(usuario=request.user.id) if usuario.permissoes.administrador_super or usuario.permissoes.administrador or usuario.permissoes.finaliza_compra: if request.method == 'GET': id_conta = int(request.GET.get('id_conta') or 0) id_compra = int(request.GET.get('id_compra') or 0) elif request.method == 'POST': id_conta = int(request.POST.get('id_conta') or 0) id_compra = int(request.POST.get('id_compra') or 0) if id_compra > 0: compra = Compras.objects.get(id=id_compra) fornecedor = compra.fornecedor.id itens = EntradaProdutos.objects.filter(compra=compra.id, status_entrada='LANCADO') if id_conta > 0: conta = ContasPagar.objects.get(id=int(id_conta)) else: conta = None if request.method == 'POST': form = FormContasPagar(deserialize_form( request.POST.get('form')), instance=conta) if form.is_valid(): registro = form.save(commit=False) if itens: valortotal = 0 for item in itens: valortotal = valortotal + item.total compra.valor_total = valortotal compra.status_compra = 'LANCADO' registro.usuario = request.user registro.empresa = usuario.empresa registro.status_conta = 'PENDENTE' registro.data_vencimento = datetime.now() registro.documento_vinculado = compra.id registro.valor_conta = compra.valor_total registro.descricao = 'Pagamento referente a compra 000' + str( compra.id) if registro.valor_entrada < compra.valor_total: if registro.forma_de_pagamento == 'A VISTA' and registro.valor_entrada == 0.0 or \ registro.forma_de_pagamento == 'A PRAZO': registro.save() conta = ContasPagar.objects.get(id=registro.id) id_conta = conta.id compra.pagamento = conta compra.save() if registro.valor_entrada > 0: pgtos = None frm = FormPagamentos(instance=pgtos) p = frm.save(commit=False) p.conta_id = registro.id p.empresa = registro.empresa p.usuario = request.user p.meio_pagamento = registro.meio_de_pagamento p.data_pagamento = datetime.now() p.data_vencimento = datetime.now() p.valor_pagamento = registro.valor_entrada p.status_pagamento = 'PAGO' registro.status_conta = 'PARCIALMENTE PAGO' p.observacoes_pagamento = 'Pago como entrada no ato da compra.' registro.save() p.save() if registro.forma_de_pagamento == 'A VISTA': pgtos = None frm = FormPagamentos(instance=pgtos) p = frm.save(commit=False) p.empresa = registro.empresa p.usuario = request.user p.meio_pagamento = registro.meio_de_pagamento p.conta_id = registro.id p.data_pagamento = datetime.now() p.data_vencimento = datetime.now() p.valor_pagamento = compra.valor_total p.status_pagamento = 'PAGO' registro.status_conta = 'PAGO' registro.status_conta = 'PAGO' registro.quantidade_parcelas = 0 p.meio_pagamento = registro.meio_de_pagamento p.observacoes_pagamento = 'Pagamento realizado no ato da compra.' p.save() registro.save() if registro.forma_de_pagamento == 'A PRAZO': data = registro.primeiro_vencimento restante = int( registro.quantidade_parcelas) for ps in range(0, restante): pgtos = None frm = FormPagamentos(instance=pgtos) p = frm.save(commit=False) p.conta_id = registro.id if ps == 0: vencimento = datetime.fromordinal( data.toordinal()) else: vencimento = datetime.fromordinal( data.toordinal() + 31 * ps) p.empresa = registro.empresa p.usuario = request.user p.data_vencimento = vencimento p.valor_pagamento = ( compra.valor_total - registro.valor_entrada) / restante p.status_pagamento = 'PENDENTE' p.meio_pagamento = registro.meio_de_pagamento p.observacoes_pagamento = \ 'Pagamento programado conforme informações coletadas nafinalização da compra.' p.save() mensagem = 'Compra finalizada com sucesso!!!' sucesso = 1 elif registro.forma_de_pagamento == 'A VISTA' and registro.valor_entrada != 0.0: mensagem = 'Tratando se de um pagamento á vista, o valor da entrada deve ser sempre 0,00' erro = 1 elif registro.valor_entrada >= compra.valor_total: mensagem = '''Tratando-se de um pagamento a prazo, a entrada não pode ser igual nem superior ao valor total da compra''' erro = 1 else: mensagem = 'Não foi possível finalizar a compra, pois não foi vendido nenhum ítem...' erro = 1 else: form_erro = [] for error in form.errors: form_erro += {error} retorno['form_erro'] = form_erro titulo = 'ERRO NA VALIDAÇÃO DOS DADOS...' mensagem = 'Por favor, corrija os campos listados em vermelho e tente novamente...' else: if itens: valortotal = 0 for item in itens: valortotal = valortotal + item.total else: mensagem = mensagem_erro_padrao() titulo = titulo_mensagem_erro_padrao() erro = 1 else: mensagem = mensagem_permissao_negada() titulo = titulo_mensagem_permissao_negada() erro = 1 retorno['sucesso'] = sucesso retorno['erro'] = erro retorno['info'] = info retorno['id_conta'] = id_conta retorno['alerta'] = alerta retorno['mensagem'] = mensagem retorno['titulo'] = titulo retorno['valor_total'] = str(valortotal) retorno['method'] = request.method retorno['favorecido'] = str(fornecedor) retorno['data_atual'] = str(datetime.now().strftime('%Y-%m-%d')) return HttpResponse(json.dumps(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 registrar_saida_produto(request): saida_id = request.POST.get('saida_id') usuario = Usuarios.objects.get(usuario=request.user.id) retorno = {} sucesso = {} erro = [] form_saida = {} registro_saida = {} embalagem_fechada = {} saida_automatica = 0 entrada_automatica = 0 quantidade_baixa = 0 itens_venda = [] classe = '' valor_total = 0 if saida_id != '0': saida = SaidaProdutos.objects.get(id=int(saida_id)) else: saida = None if request.method == 'POST': if 'saida_automatica' in request.POST and request.POST[ 'saida_automatica']: saida_automatica = float(request.POST.get('saida_automatica')) if 'entrada_automatica' in request.POST and request.POST[ 'entrada_automatica']: entrada_automatica = float(request.POST.get('entrada_automatica')) if 'quantidade_baixa' in request.POST and request.POST[ 'quantidade_baixa']: quantidade_baixa = float(request.POST.get('quantidade_baixa')) if 'form_saida' in request.POST and request.POST['form_saida']: form_saida = FormSaidaProdutos(deserialize_form( request.POST.get('form_saida')), instance=saida) if form_saida.is_valid(): registro = form_saida.save(commit=False) produto = Produtos.objects.get(id=registro.produto_id) estoque_total = float(produto.estoque_atual) if produto.id_embalagem_fechada: embalagem_fechada = Produtos.objects.get( id=produto.id_embalagem_fechada) estoque_total += ( embalagem_fechada.estoque_atual * embalagem_fechada.quantidade_embalagem_fechada) if estoque_total >= quantidade_baixa: estoque_atual = produto.estoque_atual novo_estoque = (float(estoque_atual) - quantidade_baixa + entrada_automatica) produto.estoque_atual = ("%.3f" % novo_estoque) if not saida_id != '0': registro.empresa = usuario.empresa titulo_mensagem = 'REGISTRANDO SAÍDA DE PRODUTOS' mensagem = 'Saída registrada com sucesso!!!' else: titulo_mensagem = 'ALTERANDO REGISTRO...' mensagem = 'O registro foi alterado com sucesso!!!' if saida_automatica > 0 and entrada_automatica > 0: saida = FormSaidaProdutos({ 'venda': 2, 'produto': produto.id, 'quantidade': saida_automatica, 'valor_unitario': 0.00, 'percentual_desconto': 0.000, 'total_desconto': 0.00, 'valor_total': 0.00, 'observacoes_saida': '''Baixado automaticamente pelo sistema e adicionado ao produto de codigo ''' + str(produto.id_embalagem_fechada) + '.', 'saldo_final': 0.00, }) if saida.is_valid(): registro_saida = saida.save(commit=False) registro_saida.empresa = usuario.empresa estoque_embalagem_fechada = float( embalagem_fechada.estoque_atual) - saida_automatica embalagem_fechada.estoque_atual = estoque_embalagem_fechada else: sucesso['erro2'] = 1 sucesso[ 'mensagem'] = '''Houve um erro na baixa automática do produto. A venda não pode ser concluída. Por favor, tente novamente. Se o problema persistir, entre em contato com o suporte técnico através do e-mail: [email protected] ...''' sucesso['titulo'] = 'ERRO INTERNO NO SISTEMA...' retorno = json.dumps(sucesso) return HttpResponse(retorno, content_type="application/json") if saida_automatica > 0 and entrada_automatica > 0 and saida.is_valid( ) and form_saida.is_valid(): registro.save() produto.save() registro_saida.save() embalagem_fechada.save() elif saida_automatica == 0 and entrada_automatica == 0 and form_saida.is_valid( ): registro.save() produto.save() else: sucesso['erro2'] = 1 sucesso[ 'mensagem'] = '''Houve um erro interno no sistema, por isto a venda não pode ser concluída. Por favor contate o suporte técnico através do <br> e-mail: [email protected] ''' sucesso['titulo'] = 'ERRO INTERNO NO SISTEMA...' retorno = json.dumps(sucesso) return HttpResponse(retorno, content_type="application/json") sucesso['sucesso'] = 1 itens = SaidaProdutos.objects.filter(venda=registro.venda) for index in itens: classe = '' valor_total += index.saldo_final if index.status == 'CANCELADO': valor_total -= index.saldo_final classe = 'danger' elif index.status == 'ENTREGUE' or index.status == 'SEPARADO': classe = 'success' elif index.status == 'EM SEPARACAO': classe = 'warning' itens_venda += [{ 'venda': str(index.venda), 'id': str(index.id), 'produto': str(index.produto), 'descricao_simplificada': index.produto.descricao_simplificada, 'quantidade': str(index.quantidade), 'valor_unitario': str(index.valor_unitario), 'percentual_desconto': str(index.percentual_desconto), 'total_desconto': str(index.total_desconto), 'valor_total': str(index.valor_total), 'saldo_final': str(index.saldo_final), 'data_saida': str(index.data_saida), 'status': str(index.status), 'observacoes_saida': index.observacoes_saida, 'empresa': str(index.empresa), 'classe': classe, }] else: titulo_mensagem = 'ESTOQUE INSUFICIENTE...' mensagem = 'Não há produto suficiente em estoque...' sucesso['alerta'] = 1 venda = Vendas.objects.get(id=registro.venda.id) sucesso['valor_total'] = str(valor_total) sucesso['itens'] = itens_venda sucesso['cliente'] = str(venda.cliente.nome_razao_social) sucesso['id_pedido'] = venda.id sucesso['mensagem'] = mensagem sucesso['solicitante'] = venda.solicitante sucesso['status_pedido'] = venda.status_pedido sucesso['data_venda'] = str(venda.data_venda.strftime('%d/%m/%Y')) sucesso['data_entrega'] = str( venda.data_entrega.strftime('%d/%m/%Y')) sucesso['id'] = registro.id sucesso['titulo'] = titulo_mensagem retorno = json.dumps(sucesso) else: for error in form_saida.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, }) return HttpResponse(retorno, content_type="application/json")