Esempio n. 1
0
class CobranzaDeleteView(PermissionRequiredMixin, DeleteView):
    """Vista para eliminar una cobranza."""

    model = Cobranza
    permission_required = 'accounting.delete_cobranza'
    raise_exception = True
    success_message = _MESSAGE_SUCCESS_DELETE.format('cobranza')
    success_url = reverse_lazy('accounting:cobranza-list')

    def delete(self, request, *args, **kwargs):
        """Sobreescribe método para modificar facturas asociadas."""
        self.object = self.get_object()

        # Las facturas asociadas pasan estar no cobradas
        cobranza_facturas = self.object.cobranza_facturas.all()
        for c_factura in cobranza_facturas:
            Factura.objects.filter(pk=c_factura.factura.id).update(
                cobrado=False)
            Fondo.objects.filter(factura=c_factura.factura).update(
                disponible=False)

        success_url = self.get_success_url()
        self.object.delete()
        messages.success(request, self.success_message)
        return HttpResponseRedirect(success_url)

    def handle_no_permission(self):
        """Redirige a la página de error 403 si no tiene los permisos y está autenticado."""
        if self.raise_exception and self.request.user.is_authenticated:
            return error_403(self.request, MESSAGE_403)
        return redirect('login')
class FacturaProveedorCategoriaDeleteView(PermissionRequiredMixin, DeleteView):
    """Vista que elimina un categoría de factura."""

    model = FacturaProveedorCategoria
    permission_required = 'core.delete_facturaproveedorcategoria'
    raise_exception = True
    success_message = _MESSAGE_SUCCESS_DELETE.format('categoría de factura')
    success_url = reverse_lazy('core:facturaproveedorcategoria-list')

    def delete(self, request, *args, **kwargs):
        """Muestra un mensaje sobre el resultado de la acción."""
        messages.success(request, self.success_message)
        return super().delete(request, *args, **kwargs)

    def handle_no_permission(self):
        """Redirige a la página de error 403 si no tiene los permisos y está autenticado."""
        if self.raise_exception and self.request.user.is_authenticated:
            return error_403(self.request, MESSAGE_403)
        return redirect('login')
Esempio n. 3
0
class FacturaImputadaDeleteView(PermissionRequiredMixin, DeleteView):
    """Vista que elimina un costo."""

    model = FacturaImputada
    permission_required = 'core.delete_facturaimputada'
    raise_exception = True
    success_message = _MESSAGE_SUCCESS_DELETE.format('factura imputada')
    success_url = reverse_lazy('core:facturaimputada-list')
    template_name = 'core/facturaimputada_confirm_delete.html'

    def delete(self, request, *args, **kwargs):
        """
        Al eliminar la imputación la factura suma su total y queda como no cobrada.
        """
        self.object = self.get_object()
        # Restablece nota de credito
        nota_de_credito = self.object.nota_de_credito
        nota_de_credito.cobrado = False
        nota_de_credito.total += nota_de_credito.monto_imputado
        nota_de_credito.monto_imputado = 0
        nota_de_credito.save()

        # Restablece facturas
        facturas = self.object.facturas.all()
        for factura in facturas:
            factura.total += factura.monto_imputado
            factura.monto_imputado = 0
            factura.cobrado = False
            factura.save()

        self.object.delete()
        success_url = self.get_success_url()
        messages.success(request, self.success_message)
        return HttpResponseRedirect(success_url)

    def handle_no_permission(self):
        """Redirige a la página de error 403 si no tiene los permisos y está autenticado."""
        if self.raise_exception and self.request.user.is_authenticated:
            return error_403(self.request, MESSAGE_403)
        return redirect('login')
Esempio n. 4
0
class FacturaProveedorDeleteView(PermissionRequiredMixin, DeleteView):
    """Vista que elimina una factura a proveedor."""

    model = FacturaProveedor
    permission_required = 'core.delete_facturaproveedor'
    raise_exception = True
    success_message = _MESSAGE_SUCCESS_DELETE.format('factura a proveedor')
    success_url = reverse_lazy('core:facturaproveedor-list')

    def delete(self, request, *args, **kwargs):
        """Método que elimina los archivos relacionados."""
        self.object = self.get_object()
        self.object.archivos.all().delete()
        self.object.delete()
        messages.success(request, self.success_message)
        return HttpResponseRedirect(self.success_url)

    def handle_no_permission(self):
        """Redirige a la página de error 403 si no tiene los permisos y está autenticado."""
        if self.raise_exception and self.request.user.is_authenticated:
            return error_403(self.request, MESSAGE_403)
        return redirect('login')
Esempio n. 5
0
class FacturaDeleteView(PermissionRequiredMixin, DeleteView):
    """Vista que elimina una factura."""

    model = Factura
    permission_required = 'core.delete_factura'
    raise_exception = True
    success_message = _MESSAGE_SUCCESS_DELETE.format('factura del cliente')
    success_url = reverse_lazy('core:factura-list')
    template_name = 'core/facturacliente_confirm_delete.html'

    def delete(self, request, *args, **kwargs):
        """Sobreescribe método para eliminar una factura.

        Si elimino una factura y está asociada a una cobranza que la tiene por única
        factura, elimino la cobranza.
        """
        self.object = self.get_object()

        cobranza_factura = CobranzaFactura.objects.filter(
            factura=self.object).first()
        if cobranza_factura:
            count = cobranza_factura.cobranza.cobranza_facturas.count()
            if count == 1:
                Cobranza.objects.get(pk=cobranza_factura.cobranza.pk).delete()

        # Elimino los archivos asociados
        self.object.archivos.all().delete()
        self.object.delete()
        messages.success(request, self.success_message)
        return HttpResponseRedirect(self.success_url)

    def handle_no_permission(self):
        """Redirige a la página de error 403 si no tiene los permisos y está autenticado."""
        if self.raise_exception and self.request.user.is_authenticated:
            return error_403(self.request, MESSAGE_403)
        return redirect('login')