Exemplo n.º 1
0
def status_colaborador(request):
    retorno = {}
    titulo = ''
    mensagem = ''
    try:
        usuario = Usuarios.objects.get(usuario=request.user)
        if not usuario.permissoes.muda_status_colaborador and not usuario.permissoes.administrador \
                and not usuario.permissoes.administrador_super:
            retorno['titulo'] = titulo_mensagem_permissao_negada()
            retorno['erro'] = 1
            retorno['mensagem'] = mensagem_permissao_negada()
            return HttpResponse(json.dumps(retorno), content_type="application/json")

        elif request.method == 'POST':
            colaborador = Colaboradores.objects.get(id=int(QueryDict(request.body).get('registro_id')))
            status = QueryDict(request.body).get('status')

            colaborador.status = status
            colaborador.save()

            if status == 'ATIVO':
                mensagem = 'Colaborador ativado com sucesso !!!'
                titulo = 'ATIVAR CADASTRO DE COLABORADOR ...'

            elif status == 'INATIVO':
                mensagem = 'colaborador desativado com sucesso !!!'
                titulo = 'DESATIVAR CADASTRO DE COLABORADOR ...'

            elif status == 'EXCLUIDO':
                mensagem = 'colaborador excluido com sucesso !!!'
                titulo = 'EXCLUIR CADASTRO DE COLABORADOR ...'

            elif status == 'AFASTADO':
                mensagem = 'colaborador afastado com sucesso !!!'
                titulo = 'AFASTAR COLABORADOR ...'

            elif status == 'APOSENTADO':
                mensagem = 'colaborador aposentado com sucesso !!!'
                titulo = 'APOSENTAR COLABORADOR ...'

            elif status == 'DEMITIDO':
                mensagem = 'colaborador demitido com sucesso !!!'
                titulo = 'DEMITIR COLABORADOR ...'

            retorno['mensagem'] = mensagem
            retorno['titulo'] = titulo
            retorno['sucesso'] = 1
            retorno['status'] = status
    except:
        retorno['titulo'] = titulo_mensagem_erro_padrao()
        retorno['mensagem'] = mensagem_erro_padrao()
        retorno['erro'] = 1

    return HttpResponse(
            json.dumps(retorno), content_type="application/json")
Exemplo n.º 2
0
def status_usuario(request):
    retorno = {}
    titulo = ''
    mensagem = ''
    try:
        usuario = Usuarios.objects.get(usuario=request.user)
        if not usuario.permissoes.muda_status_usuario and not usuario.permissoes.administrador \
                and not usuario.permissoes.administrador_super:
            retorno['titulo'] = titulo_mensagem_permissao_negada()
            retorno['erro'] = 1
            retorno['mensagem'] = mensagem_permissao_negada()
            return HttpResponse(json.dumps(retorno), content_type="application/json")

        elif request.method == 'POST':
            registro = Usuarios.objects.get(id=int(QueryDict(request.body).get('registro_id')))
            status = QueryDict(request.body).get('status')

            registro.status = status
            registro.save()

            if status == 'ATIVO':
                mensagem = 'Usuario ativado com sucesso !!!'
                titulo = 'ATIVAR CADASTRO DE USUARIO ...'

            elif status == 'INATIVO':
                mensagem = 'Usuario desativado com sucesso !!!'
                titulo = 'DESATIVAR CADASTRO DE USUARIO ...'

            elif status == 'EXCLUIDO':
                mensagem = 'Usuario excluido com sucesso !!!'
                titulo = 'EXCLUIR CADASTRO DE USUARIO ...'

            elif status == 'BLOQUEADO':
                mensagem = 'Usuario BLOQUEADO com sucesso !!!'
                titulo = 'BLOQUEAR USUARIO ...'

            retorno['mensagem'] = mensagem
            retorno['titulo'] = titulo
            retorno['sucesso'] = 1
            retorno['status'] = status
    except:
        retorno['titulo'] = titulo_mensagem_erro_padrao()
        retorno['mensagem'] = mensagem_erro_padrao()
        retorno['erro'] = 1

    return HttpResponse(
            json.dumps(retorno), content_type="application/json")
Exemplo n.º 3
0
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")
Exemplo n.º 4
0
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")
Exemplo n.º 5
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")