Refactoring to resolve circular import

Added brands field to invoices
This commit is contained in:
Kumi 2020-06-05 07:52:52 +02:00
parent df85d23295
commit 96cae766ed
4 changed files with 17 additions and 10 deletions

View file

@ -5,7 +5,6 @@ from core.models.profiles import ClientProfile
from core.models.brands import Brand from core.models.brands import Brand
from core.fields.base import LongCharField from core.fields.base import LongCharField
from core.fields.numbers import CostField from core.fields.numbers import CostField
from core.models.invoices import InvoiceItem, Invoice
from dateutil.relativedelta import relativedelta from dateutil.relativedelta import relativedelta
@ -38,6 +37,8 @@ class Billable(Model):
recur_count = PositiveIntegerField(null=True) recur_count = PositiveIntegerField(null=True)
def next_invoicing(self): def next_invoicing(self):
from core.models.invoices import InvoiceItem, Invoice
try: try:
invoiceitems = InvoiceItem.objects.filter(billable=self) invoiceitems = InvoiceItem.objects.filter(billable=self)

View file

@ -2,13 +2,13 @@ from django.db.models import Model, ForeignKey, CASCADE, PositiveIntegerField, T
from core.fields.base import LongCharField from core.fields.base import LongCharField
from core.fields.numbers import CostField from core.fields.numbers import CostField
from core.models.services import Service
from core.models.profiles import ClientProfile from core.models.profiles import ClientProfile
from core.models.local import Currency from core.models.local import Currency
from core.models.billable import Billable from core.models.brands import Brand
class Invoice(Model): class Invoice(Model):
client = ForeignKey(ClientProfile, on_delete=CASCADE) client = ForeignKey(ClientProfile, on_delete=PROTECT)
brand = ForeignKey(Brand, on_delete=PROTECT)
number = LongCharField() number = LongCharField()
created = DateField() created = DateField()
due = DateField() due = DateField()
@ -16,6 +16,9 @@ class Invoice(Model):
currency = ForeignKey(Currency, on_delete=PROTECT) currency = ForeignKey(Currency, on_delete=PROTECT)
class InvoiceItem(Model): class InvoiceItem(Model):
from core.models.services import Service
from core.models.billable import Billable
invoice = ForeignKey(Invoice, on_delete=CASCADE) invoice = ForeignKey(Invoice, on_delete=CASCADE)
sort = PositiveIntegerField() sort = PositiveIntegerField()
name = LongCharField() name = LongCharField()

View file

@ -1,9 +1,8 @@
from core.models.billable import CycleChoices
from core.fields.base import LongCharField from core.fields.base import LongCharField
from core.fields.color import ColorField from core.fields.color import ColorField
from core.fields.numbers import CostField from core.fields.numbers import CostField
from django.db.models import Model, IntegerChoices, PositiveIntegerField, ForeignKey, CASCADE, CharField, TextField, ManyToManyField from django.db.models import Model, PositiveIntegerField, ForeignKey, CASCADE, CharField, TextField, ManyToManyField
from importlib import import_module from importlib import import_module
@ -35,6 +34,8 @@ class ProductPlan(Model):
product = ForeignKey(Product, on_delete=CASCADE) product = ForeignKey(Product, on_delete=CASCADE)
class ProductPlanItem(Model): class ProductPlanItem(Model):
from core.models.billable import CycleChoices
plan = ForeignKey(ProductPlan, on_delete=CASCADE) plan = ForeignKey(ProductPlan, on_delete=CASCADE)
cycle = PositiveIntegerField(choices=CycleChoices.choices) cycle = PositiveIntegerField(choices=CycleChoices.choices)
count = PositiveIntegerField() count = PositiveIntegerField()

View file

@ -1,5 +1,3 @@
from core.models.billable import CycleChoices
from core.models.products import ProductGroup
from core.fields.numbers import CostField from core.fields.numbers import CostField
from django.db.models import Model, TextField, CharField, ManyToManyField, ForeignKey, CASCADE, PositiveIntegerField, OneToOneField from django.db.models import Model, TextField, CharField, ManyToManyField, ForeignKey, CASCADE, PositiveIntegerField, OneToOneField
@ -10,6 +8,8 @@ from logging import getLogger
logger = getLogger(__name__) logger = getLogger(__name__)
class Service(Model): class Service(Model):
from core.models.products import ProductGroup
name = CharField(max_length=255) name = CharField(max_length=255)
description = TextField(null=True, blank=True) description = TextField(null=True, blank=True)
handler_module = CharField(max_length=255, null=True, blank=True) handler_module = CharField(max_length=255, null=True, blank=True)
@ -36,6 +36,8 @@ class ServicePlan(Model):
ServicePlanItem.objects.create(plan=plan, cycle=item.cycle, count=item.count, cost=item.cost) ServicePlanItem.objects.create(plan=plan, cycle=item.cycle, count=item.count, cost=item.cost)
class ServicePlanItem(Model): class ServicePlanItem(Model):
from core.models.billable import CycleChoices
plan = ForeignKey(ServicePlan, on_delete=CASCADE) plan = ForeignKey(ServicePlan, on_delete=CASCADE)
cycle = PositiveIntegerField(choices=CycleChoices.choices) cycle = PositiveIntegerField(choices=CycleChoices.choices)
count = PositiveIntegerField() count = PositiveIntegerField()