Beispiel #1
0
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")
Beispiel #2
0
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")
Beispiel #3
0
    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")
Beispiel #4
0
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")
Beispiel #5
0
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")
Beispiel #6
0
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")
Beispiel #7
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")
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")
Beispiel #9
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")
Beispiel #10
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")
Beispiel #11
0
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")