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."))
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."))
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")
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
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." ))
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()
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()
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")
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")
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."))
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")