Ejemplo n.º 1
0
    def clean(self):
        """ 
        Bloqueia o registro de uma conta a receber quando não há caixa aberto.
        """
        if not caixa_aberto() and not self.pk:
            raise ValidationError(_(u"Não há caixa aberto. Para efetivar um cadastro de uma conta a receber avulsa, é necessário ter o caixa aberto."))

        if not caixa_aberto() and self.pk:
            raise ValidationError(_(u"Não há caixa aberto. Alterações numa conta a receber só podem ser efetivadas após a abertura do caixa."))
Ejemplo n.º 2
0
    def clean(self):
        u""" 
        Bloqueia o registro de uma conta a pagar avulsa quando não há caixa aberto.
        """
        if not caixa_aberto() and not self.pk:
            raise ValidationError(_(u"Não há caixa aberto. Para efetivar um cadastro de uma conta a pagar avulsa, é necessário ter o caixa aberto."))

        if not caixa_aberto() and self.pk:
            raise ValidationError(_(u"Não há caixa aberto. Alterações numa conta a pagar só podem ser efetivadas após a abertura do caixa."))
Ejemplo n.º 3
0
    def post(self, request, *args, **kwargs):
        form = self.form_class(request.POST)
        id_parcela = self.kwargs['id_parcela']
        valor_recebimento = Decimal(request.POST['valor']).quantize(Decimal("0.00"))

        # Checa a situação do caixa
        if not caixa_aberto():
            texto = force_text(_(u'Não há caixa aberto. Para efetivar um recebimento é necessário ter o caixa aberto.'))
            resposta = {
                "message": texto, 
                'recebimento_confirmado': 0,
            }
            resposta = json.dumps({"resposta" : resposta})
            return HttpResponse(resposta, content_type="text/javascript")

        # Checa a situação do valor do recebimento
        perc_valor_minimo_recebimento = Parametrizacao.objects.all().values_list('perc_valor_minimo_recebimento')[0][0]
        parcela = ParcelasContasReceber.objects.get(pk=id_parcela)
        valor_minimo_recebimento = round((parcela.valor_total() * perc_valor_minimo_recebimento) / 100, 2)
        primeiro_recebimento = Recebimento.objects.filter(parcelas_contas_receber=id_parcela).exists()
        
        if valor_recebimento < valor_minimo_recebimento and not primeiro_recebimento:
            texto = force_text(_(u"Primeiro recebimento deve ser de no mínimo %(perc_valor_minimo)s%% do valor da parcela. \
                                    Valor mínimo: R$ %(valor_minimo)s.") % {
                                        'perc_valor_minimo': perc_valor_minimo_recebimento, 
                                        'valor_minimo': valor_minimo_recebimento
                                        })
            resposta = {
                'message': texto, 
                'recebimento_confirmado': 0,
            }
            resposta = json.dumps({"resposta" : resposta})
            return HttpResponse(resposta, content_type="text/javascript")

        if form.is_valid():
            recebimento_obj = form.save()

            LogEntry.objects.log_action(
                user_id         = request.user.pk, 
                content_type_id = ContentType.objects.get_for_model(recebimento_obj).pk,
                object_id       = recebimento_obj.pk,
                object_repr     = force_text(recebimento_obj), 
                action_flag     = ADDITION
            )

            texto = force_text(_(u'Recebimento da parcela "%(p)s" efetuado com sucesso!') % {'p': id_parcela})
            resposta = {
                'message': texto, 
                'recebimento_confirmado': 1,
            }
            resposta = json.dumps({"resposta" : resposta})
            return HttpResponse(resposta, content_type="text/javascript")

        texto = force_text(_(u'Falha ao efetivar a transação. Favor, acione o suporte.'))
        resposta = {
            'message': texto, 
            'recebimento_confirmado': 0,
        }
        resposta = json.dumps({"resposta" : resposta})
        return HttpResponse(resposta, content_type="text/javascript")
Ejemplo n.º 4
0
    def has_add_permission(self, request, obj=None):
        """Remove a permissão para adicionar novo caixa, caso já exista um aberto"""

        if caixa_aberto():
            return False
        else:
            return True
Ejemplo n.º 5
0
 def clean(self):
     """ 
     Bloqueia o registro de uma compra quando não há caixa aberto.
     """
     if not caixa_aberto() and not self.pk:
         raise ValidationError(
             _(u"Não há caixa aberto. Para efetivar uma compra é necessário ter o caixa aberto."
               ))
Ejemplo n.º 6
0
    def gera_pagamento(self):
        print('Etapa 5 - Início do procedimento de inserção de Pagamentos.')

        if caixa_aberto():

            # Busca todas as parcelas que ainda não foram quitadas e que a conta na qual se originam está com status 'Aberta'
            lista_parcelas = ParcelasContasPagar.objects.filter(status=False, contas_pagar__status=False).values_list('pk', 'contas_pagar__data')

            for p in lista_parcelas:

                pula_parcela = bool(np.choice([True, False], p=[0.6, 0.4]))
                if pula_parcela:
                    continue

                quantidade_pagamentos = int(np.choice([1, 2, 3], p=[0.8, 0.15, 0.05]))

                for i in range(quantidade_pagamentos):
                    
                    ultimo_pagamento = Pagamento.objects.filter(parcelas_contas_pagar__pk=p[0]).values_list('data').order_by('-data')

                    parcela = ParcelasContasPagar.objects.get(pk=p[0])
                    valor_a_pagar = parcela.valor_a_pagar()
                    valor_a_pagar_juros = parcela.calculo_juros()
                    valor_a_pagar_multa = parcela.calculo_multa()

                    if not ultimo_pagamento:
                        data_pagamento = p[1] + timedelta(days=random.randint(0,50))
                    else:
                        data_pagamento = ultimo_pagamento[0][0] + timedelta(days=random.randint(0,10))
                    
                    # # Caso a data de pagamento calculado seja maior que a data atual, é definida a data atual como data de pagamento
                    # quant_dias = data_pagamento.date() - data_atual.date()
                    # dias_diferenca = abs(quant_dias.days)

                    # if dias_diferenca > 0:
                    #     data_pagamento = data_atual


                    # Divide o valor a ser recebido caso ainda haja nova iteração
                    if (quantidade_pagamentos == 3 and (i == 0 or i == 1)) or (quantidade_pagamentos == 2 and i == 0):
                        valor_a_pagar = valor_a_pagar / 2

                    #Insere registro de recebimento 
                    Pagamento(  data=data_pagamento.replace(tzinfo=utc), 
                                valor=valor_a_pagar, 
                                juros=valor_a_pagar_juros, 
                                multa=valor_a_pagar_multa,
                                desconto=0.00,
                                parcelas_contas_pagar=parcela
                                ).save()
Ejemplo n.º 7
0
    def gera_recebimento(self):
        print('Etapa 6 - Início do procedimento de inserção de Recebimentos.')

        if caixa_aberto():

            # Busca todas as parcelas que ainda não foram quitadas e que a conta na qual se originam está com status 'Aberta'
            lista_parcelas = ParcelasContasReceber.objects.filter(status=False, contas_receber__status=False).values_list('pk', 'contas_receber__data')

            for p in lista_parcelas:

                pula_parcela = bool(np.choice([True, False], p=[0.6, 0.4]))
                if pula_parcela:
                    continue

                quantidade_recebimentos = int(np.choice([1, 2, 3], p=[0.8, 0.15, 0.05]))

                for i in range(quantidade_recebimentos):
                    
                    ultimo_recebimento = Recebimento.objects.filter(parcelas_contas_receber__pk=p[0]).values_list('data').order_by('-data')

                    parcela = ParcelasContasReceber.objects.get(pk=p[0])
                    valor_a_receber = parcela.valor_a_receber()
                    valor_a_receber_juros = parcela.calculo_juros()
                    valor_a_receber_multa = parcela.calculo_multa()

                    if not ultimo_recebimento:
                        data_recebimento = p[1] + timedelta(days=random.randint(0,50))

                        # Trata valor dos recebimentos de acordo com o percentual do valor mínimo definido nas configurações do sistema
                        if quantidade_recebimentos != 1:
                            perc_valor_minimo_recebimento = Parametrizacao.objects.all().values_list('perc_valor_minimo_recebimento')[0][0]
                            valor_a_receber = round((parcela.valor_total() * perc_valor_minimo_recebimento) / 100, 2)
                    else:
                        data_recebimento = ultimo_recebimento[0][0] + timedelta(days=random.randint(0,10))
                        
                        # Divide o valor a ser recebido caso ainda haja nova iteração
                        if (quantidade_recebimentos == 3 and (i == 0 or i == 1)) or (quantidade_recebimentos == 2 and i == 0):
                            valor_a_receber = valor_a_receber / 2

                    #Insere registro de recebimento 
                    Recebimento(data=data_recebimento.replace(tzinfo=utc), 
                                valor=valor_a_receber, 
                                juros=valor_a_receber_juros, 
                                multa=valor_a_receber_multa,
                                desconto=0.00,
                                parcelas_contas_receber=parcela
                                ).save()
Ejemplo n.º 8
0
    def post(self, request, *args, **kwargs):
        form = self.form_class(request.POST)
        id_parcela = self.kwargs['id_parcela']

        # Checa a situação do caixa
        if not caixa_aberto():
            texto = force_text(
                _(u'Não há caixa aberto. Para efetivar um pagamento é necessário ter o caixa aberto.'
                  ))
            resposta = {
                "message": texto,
                'pagamento_confirmado': 0,
            }
            resposta = json.dumps({"resposta": resposta})
            return HttpResponse(resposta, content_type="text/javascript")

        if form.is_valid():
            pagamento_obj = form.save()

            LogEntry.objects.log_action(
                user_id=request.user.pk,
                content_type_id=ContentType.objects.get_for_model(
                    pagamento_obj).pk,
                object_id=pagamento_obj.pk,
                object_repr=force_text(pagamento_obj),
                action_flag=ADDITION)

            texto = force_text(
                _(u'Pagamento da parcela "%(p)s" efetuado com sucesso!') %
                {'p': id_parcela})
            resposta = {
                'message': texto,
                'pagamento_confirmado': 1,
            }
            resposta = json.dumps({"resposta": resposta})
            return HttpResponse(resposta, content_type="text/javascript")

        texto = force_text(
            _(u'Falha ao efetivar a transação. Favor, acione o suporte.'))
        resposta = {
            'message': texto,
            'pagamento_confirmado': 0,
        }
        resposta = json.dumps({"resposta": resposta})
        return HttpResponse(resposta, content_type="text/javascript")
Ejemplo n.º 9
0
    def post(self, request, *args, **kwargs):
        form = self.form_class(request.POST)
        id_parcela = self.kwargs['id_parcela']

        # Checa a situação do caixa
        if not caixa_aberto():
            texto = force_text(_(u'Não há caixa aberto. Para efetivar um pagamento é necessário ter o caixa aberto.'))
            resposta = {
                "message": texto, 
                'pagamento_confirmado': 0,
            }
            resposta = json.dumps({"resposta" : resposta})
            return HttpResponse(resposta, content_type="text/javascript")

        if form.is_valid():
            pagamento_obj = form.save()

            LogEntry.objects.log_action(
                user_id         = request.user.pk, 
                content_type_id = ContentType.objects.get_for_model(pagamento_obj).pk,
                object_id       = pagamento_obj.pk,
                object_repr     = force_text(pagamento_obj), 
                action_flag     = ADDITION
            )

            texto = force_text(_(u'Pagamento da parcela "%(p)s" efetuado com sucesso!') % {'p': id_parcela})
            resposta = {
                'message': texto, 
                'pagamento_confirmado': 1,
            }
            resposta = json.dumps({"resposta" : resposta})
            return HttpResponse(resposta, content_type="text/javascript")

        texto = force_text(_(u'Falha ao efetivar a transação. Favor, acione o suporte.'))
        resposta = {
            'message': texto, 
            'pagamento_confirmado': 0,
        }
        resposta = json.dumps({"resposta" : resposta})
        return HttpResponse(resposta, content_type="text/javascript")
Ejemplo n.º 10
0
 def clean(self):
     """ 
     Bloqueia o registro de uma venda quando não há caixa aberto.
     """
     if not caixa_aberto() and not self.pk:
         raise ValidationError(_(u"Não há caixa aberto. Para efetivar uma venda é necessário ter o caixa aberto."))
Ejemplo n.º 11
0
    def post(self, request, *args, **kwargs):
        form = self.form_class(request.POST)
        id_parcela = self.kwargs['id_parcela']
        valor_recebimento = Decimal(request.POST['valor']).quantize(
            Decimal("0.00"))

        # Checa a situação do caixa
        if not caixa_aberto():
            texto = force_text(
                _(u'Não há caixa aberto. Para efetivar um recebimento é necessário ter o caixa aberto.'
                  ))
            resposta = {
                "message": texto,
                'recebimento_confirmado': 0,
            }
            resposta = json.dumps({"resposta": resposta})
            return HttpResponse(resposta, content_type="text/javascript")

        # Checa a situação do valor do recebimento
        perc_valor_minimo_recebimento = Parametrizacao.objects.all(
        ).values_list('perc_valor_minimo_recebimento')[0][0]
        parcela = ParcelasContasReceber.objects.get(pk=id_parcela)
        valor_minimo_recebimento = round(
            (parcela.valor_total() * perc_valor_minimo_recebimento) / 100, 2)
        primeiro_recebimento = Recebimento.objects.filter(
            parcelas_contas_receber=id_parcela).exists()

        if valor_recebimento < valor_minimo_recebimento and not primeiro_recebimento:
            texto = force_text(
                _(u"Primeiro recebimento deve ser de no mínimo %(perc_valor_minimo)s%% do valor da parcela. \
                                    Valor mínimo: R$ %(valor_minimo)s.") % {
                    'perc_valor_minimo': perc_valor_minimo_recebimento,
                    'valor_minimo': valor_minimo_recebimento
                })
            resposta = {
                'message': texto,
                'recebimento_confirmado': 0,
            }
            resposta = json.dumps({"resposta": resposta})
            return HttpResponse(resposta, content_type="text/javascript")

        if form.is_valid():
            recebimento_obj = form.save()

            LogEntry.objects.log_action(
                user_id=request.user.pk,
                content_type_id=ContentType.objects.get_for_model(
                    recebimento_obj).pk,
                object_id=recebimento_obj.pk,
                object_repr=force_text(recebimento_obj),
                action_flag=ADDITION)

            texto = force_text(
                _(u'Recebimento da parcela "%(p)s" efetuado com sucesso!') %
                {'p': id_parcela})
            resposta = {
                'message': texto,
                'recebimento_confirmado': 1,
            }
            resposta = json.dumps({"resposta": resposta})
            return HttpResponse(resposta, content_type="text/javascript")

        texto = force_text(
            _(u'Falha ao efetivar a transação. Favor, acione o suporte.'))
        resposta = {
            'message': texto,
            'recebimento_confirmado': 0,
        }
        resposta = json.dumps({"resposta": resposta})
        return HttpResponse(resposta, content_type="text/javascript")