Consolidate and update initial migrations and models
Regenerated initial migrations for account, advertisement, commerce, configuration, and social apps to include recent schema changes and remove obsolete migration files. Added new migrations for Deutsche Post and Zasilkovna integrations, including new fields and choices. Updated commerce models to improve currency handling and discount code logic. This unifies the database schema and prepares for new features and integrations.
This commit is contained in:
@@ -165,8 +165,9 @@ class Order(models.Model):
|
||||
|
||||
# Stored order grand total; recalculated on save
|
||||
total_price = models.DecimalField(max_digits=10, decimal_places=2, default=Decimal('0.00'))
|
||||
# Currency - captured from site configuration at creation time, never changes
|
||||
currency = models.CharField(max_length=10, default="", help_text="Order currency - captured from site configuration at order creation and never changes")
|
||||
|
||||
# Currency - captured from site configuration at creation time, never changes
|
||||
currency = models.CharField(max_length=10, default="", help_text="Order currency - captured from site configuration at order creation and never changes")
|
||||
|
||||
# fakturační údaje (zkopírované z user profilu při objednávce)
|
||||
user = models.ForeignKey(
|
||||
@@ -261,23 +262,23 @@ class Order(models.Model):
|
||||
raise ValidationError("Order must have at least one item.")
|
||||
|
||||
def get_currency(self):
|
||||
\"\"\"Get order currency - falls back to site configuration if not set\"\"\"
|
||||
"""Get order currency - falls back to site configuration if not set"""
|
||||
if self.currency:
|
||||
return self.currency
|
||||
config = SiteConfiguration.get_solo()
|
||||
return config.currency
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
is_new = self.pk is None
|
||||
|
||||
# CRITICAL: Set currency from site configuration ONLY at creation time
|
||||
# Once set, currency should NEVER change to maintain order integrity
|
||||
if is_new and not self.currency:
|
||||
config = SiteConfiguration.get_solo()
|
||||
self.currency = config.currency
|
||||
|
||||
# Keep total_price always in sync with items and discount
|
||||
self.total_price = self.calculate_total_price()
|
||||
is_new = self.pk is None
|
||||
|
||||
# CRITICAL: Set currency from site configuration ONLY at creation time
|
||||
# Once set, currency should NEVER change to maintain order integrity
|
||||
if is_new and not self.currency:
|
||||
config = SiteConfiguration.get_solo()
|
||||
self.currency = config.currency
|
||||
|
||||
# Keep total_price always in sync with items and discount
|
||||
self.total_price = self.calculate_total_price()
|
||||
if self.user and is_new:
|
||||
self.import_data_from_user()
|
||||
|
||||
@@ -503,7 +504,7 @@ class DiscountCode(models.Model):
|
||||
)
|
||||
|
||||
# nebo fixní částka
|
||||
amount = models.DecimalField(max_digits=10, decimal_places=2, null=True, blank=True, help_text=\"Fixed discount amount in site currency\")
|
||||
amount = models.DecimalField(max_digits=10, decimal_places=2, null=True, blank=True, help_text="Fixed discount amount in site currency")
|
||||
|
||||
valid_from = models.DateTimeField(default=timezone.now)
|
||||
valid_to = models.DateTimeField(null=True, blank=True)
|
||||
|
||||
Reference in New Issue
Block a user