Sitemde temel olarak kredi kartı gibi çok çalışan bir kredi sistemi olacak. Her kullanıcının sınırsız bir kredi limiti vardır, ancak her haftanın sonunda ödeme yapmak zorundadır. Örneğin, bir kullanıcı 1 Mart ile 7 Mart arasında çeşitli satın alımlar yapabilir ve ardından 7 Mart'ın sonunda, tüm satın alma işlemlerini hafta boyunca listeleyen bir fatura ve toplamda 14'lük bir faturaya gönderilir. Ödemeyi yapmazlarsa, hesabıncaya kadar sadece deaktive edilir. Sadece bunu nasıl uygulayacağım konusunda kafamı sarmaya çalışıyorum.Kredi kartı sistemi uygulaması?
Tüm satın alımlarının bir listesini aldım, bu bir sorun değil, ancak bununla ne yapacağımı anlamaya çalışıyorum. 7nci günün sonunda, temelde bir kimlik ve teslim tarihi olan bir fatura üretmek için bir cronjob kurabilirdim ve sonra tüm satın alımları faturaya bağlamak için bir çoktan fazlasına ihtiyacım vardı. . Daha sonra bir kullanıcı hesabına para eklediğinde, mevcut ödenmemiş faturasına göre uygulanıyor mu? Ve ne zaman yeni bir fatura etrafında dolanırsa faturalarını ödemiyorlarsa, şimdi 2 tane üstün olanı var, buna karşı nasıl uygulanacağını nasıl bilebilirim? Veya daha önceki ödenmemiş faturalar için cronjob kontrolünü yapar, iptal eder ve yeni faturaya "bilanço (+ faiz)" olarak yeni bir kalem ekleyebilir miyim? Parayı bir faturaya nasıl uygularsınız? Her bir ödemenin bir faturaya bağlanması gerekiyor mu, yoksa sadece hesabın kredisine yatırılabilir mi? Sonra bir şekilde neyin ödenip neyin ödenmediğine karar verilebilir mi? Faturaları oluşturulmadan önce peşin ödeme yaparlarsa ne olur? Faturaları, faturadaki üretime veya haftanın sonunda vadesine kadar indirir mi? Bunu yapmanın pek çok yolu var ...
Hangi yaklaşımları benimseyeceklerini tarif edebilir mi?
Fatura modelim ilgilenen biri varsa, şu şekilde görünüyor (Django'da). InvoiceItems gerçek bir "ürün" ile bir ters kimlik (ürün üzerinde farklı ürün türleri (farklı tabloları) izin vermek için değil, fatura) değil, ama ben bunu değiştireceğim düşünüyorum.
class Invoice(models.Model):
user = models.ForeignKey(User, related_name='invoices')
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
closed_date = models.DateTimeField(null=True, blank=True)
due_date = models.DateTimeField(default=_next_weekday())
payment_date = models.DateTimeField(null=True, blank=True) # date the invoice was fully paid
total_payments = CurrencyField(default=0)
interest_charges = CurrencyField(default=0)
@property
def days_overdue(self):
dt = self.due_date - datetime.date.today()
return dt.days if dt.days > 0 else 0
@property
def item_total(self):
return self.items.filter(amount__gt=0).aggregate(t=Sum('amount'))['t'] or Decimal('0.00')
@property
def daily_interest(self):
return _round((self.item_total - self.total_payments) * settings.INTEREST_RATE/Decimal('365.242199'))
@property
def subtotal(self):
return self.item_total + self.interest_charges
@property
def tax(self):
return _round(self.subtotal * settings.GST)
@property
def total(self):
return self.subtotal + self.tax
@property
def balance_owing(self):
return self.total - self.total_payments
@property
def is_paid(self):
return self.payment_date != None
@property
def is_open(self):
return self.closed_date == None
@property
def is_overdue(self):
return not self.is_paid and self.due_date < datetime.date.today()
class InvoiceItem(models.Model):
invoice = models.ForeignKey(Invoice, related_name='items')
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
description = models.CharField(max_length=200)
trans_date = models.DateTimeField(verbose_name='transaction date')
amount = CurrencyField()
Bütün gecikmiş öğelere faiz ücretleri eklemek için her gece gece yarısı çalıştırmak üzere ayarlanmış bir crontab var ve faturalar her cuma sabah gönderilir.
Kalan süre zarfında, neyin geciktiğini ve nelerin ücretlendirileceğini takip edemez misiniz? – mpen
Öyleyse ne zaman geçtiğini bilmek için açık kalem muhasebesine gitmem gerekiyormuş gibi geliyor. Bu, uygulanması eğlenceli olacak! Yardımınız için çok teşekkür ederim, size defalarca katılabilseydim. – mpen
Sadece yeni faturalarla ilgili açıklama ekledim. Bilançoda, kredi kartınızla olduğu gibi, dönem sonunda, genellikle faiz tutarı bakiyeden tahsil edilir. Açık kalem muhasebesini, ödemelerin tarihi üzerinde daha iyi bir kontrole sahip olduğu için kullanıyorum (müşterinizin tam olarak ne için ödeme yaptıklarını biliyorsunuz, sadece her şeyi bir kepçeye koymak değil). Ancak, vadeli hesap muhasebesi telefon faturaları, kredi kartları vb. Gibi şeyler için uygundur. Kullanım durumunuza bağlıdır. –