Newer
Older
from django.contrib.auth.models import User
from datetime import date
from django.utils.translation import ugettext_lazy as _
current_year = timezone.now().year
YEARS = [(x, str(x)) for x in range(current_year, current_year + 4)]
class Status:
def __init__(self, name, style_class):
self.name = name
self.style_class = style_class
def __str__(self):
status_list = [
Status(name=_("requested"), style_class='red'),
Status(name=_("rejected"), style_class='black'),
Status(name=_("accepted"), style_class='orange'),
Status(name=_("ordered"), style_class='yellow darken-1'),
Status(name=_("submitted"), style_class='blue'),
Status(name=_("paid"), style_class='green'),
]
status_choices = [(x, val.name) for x, val in enumerate(status_list)]
name = models.CharField(max_length=30, blank=False, verbose_name=_("Cost center"))
year = models.IntegerField(default=timezone.now().year, choices=YEARS, blank=False, verbose_name=_("Year"))
def __str__(self):
verbose_name = _("Cost center")
verbose_name_plural = _("Cost centers")
('manage_costcenter', _("Can manage costcenter")),
name = models.CharField(max_length=20, blank=False, verbose_name=_("Booking account"))
cost_center = models.ForeignKey(to=CostCenter, on_delete=models.CASCADE, blank=False, verbose_name=_("Cost center"))
verbose_name=_("Income account"))
budget = models.IntegerField(default=0, verbose_name=_("Budget"))
saldo = models.DecimalField(max_digits=9, decimal_places=2, default=0.00)
rest = models.DecimalField(max_digits=9, decimal_places=2, default=0.00)
verbose_name = _("Booking account")
verbose_name_plural = _("Booking accounts")
# General information
account = models.ForeignKey(to=Account, on_delete=models.SET_NULL, blank=True, null=True,
contact = models.ForeignKey(to=User, related_name='bookings', on_delete=models.SET_NULL
, verbose_name=_("Created by"), blank=True, null=True)
description = models.CharField(max_length=50, verbose_name=_("Description"))
justification = models.CharField(max_length=2000, blank=True, null=True, verbose_name=_("Reason"))
planned_amount = models.IntegerField(verbose_name=_("Planned amount"))
invoice_date = models.DateField(blank=True, null=True, verbose_name=_("Date of invoice"))
invoice_number = models.CharField(max_length=20, blank=True, null=True, verbose_name=_("Bill number"))
firma = models.CharField(max_length=30, blank=True, null=True, verbose_name=_("Company"))
amount = models.DecimalField(max_digits=9, decimal_places=2, default=0.00, verbose_name=_("Amount"))
payout_number = models.IntegerField(blank=True, null=True, verbose_name=_("Payout number"))
submission_date = models.DateField(blank=True, null=True, verbose_name=_("Submission date"))
booking_date = models.DateField(default=date.today, verbose_name=_("Booking date"))
maturity = models.DateField(blank=True, null=True, verbose_name=_("Maturity"))
upload = models.FileField(upload_to='uploads/fibu/%Y/', default=None, blank=True, null=True,
status = models.IntegerField(default=0, choices=status_choices, verbose_name=_("Status"))
return status_list[self.status]
def __str__(self):
return "{} ({})".format(self.description, self.account)
verbose_name = _("Booking")
verbose_name_plural = _("Bookings")
('manage_booking', _("Can manage bookings")),
('request_booking', _("Can request a booking")),
('check_booking', _("Can check bookings")),