You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

85 lines
2.4 KiB

from datetime import datetime
from django.db import models, connection
from django.urls import reverse
from django.utils.translation import ugettext_lazy as _
from encrypted_model_fields.fields import EncryptedCharField
from abonapp.models import Abon
class AllTimePayLogManager(models.Manager):
@staticmethod
def by_days():
cur = connection.cursor()
cur.execute(
'SELECT SUM(summ) AS alsum, '
'DATE_FORMAT(date_add, "%Y-%m-%d") AS pay_date '
'FROM all_time_pay_log '
'GROUP BY DATE_FORMAT(date_add, "%Y-%m-%d")'
)
while True:
r = cur.fetchone()
if r is None:
break
summ, dat = r
yield {
'summ': summ,
'pay_date': datetime.strptime(dat, '%Y-%m-%d')
}
class PayAllTimeGateway(models.Model):
title = models.CharField(_('Title'), max_length=64)
secret = EncryptedCharField(verbose_name=_('Secret'), max_length=64)
service_id = models.CharField(_('Service id'), max_length=64)
slug = models.SlugField(_('Slug'), max_length=32,
unique=True, allow_unicode=False)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('finapp:edit_pay_gw', self.slug)
class Meta:
db_table = 'pay_all_time_gateways'
verbose_name = _('All time gateway')
ordering = 'title',
# Log for pay system "AllTime"
class AllTimePayLog(models.Model):
abon = models.ForeignKey(
Abon,
on_delete=models.SET_DEFAULT,
blank=True,
null=True,
default=None
)
pay_id = models.CharField(
max_length=36,
unique=True,
primary_key=True
)
date_add = models.DateTimeField(auto_now_add=True)
summ = models.FloatField(_('Cost'), default=0.0)
trade_point = models.CharField(
_('Trade point'),
max_length=20,
default=None,
null=True,
blank=True
)
receipt_num = models.BigIntegerField(_('Receipt number'), default=0)
pay_gw = models.ForeignKey(PayAllTimeGateway,
verbose_name=_('Pay gateway'),
on_delete=models.CASCADE)
objects = AllTimePayLogManager()
def __str__(self):
return self.pay_id
class Meta:
db_table = 'all_time_pay_log'
ordering = ('-date_add',)