feat: added tpv app
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
from decimal import Decimal
|
||||
from uuid import uuid4
|
||||
from django.db import models
|
||||
from django.utils.text import gettext_lazy as _
|
||||
|
||||
|
||||
def set_default_metadata():
|
||||
return {"items": [], "response": None}
|
||||
|
||||
|
||||
class PaymentTPV(models.Model):
|
||||
class StatusChoices(models.TextChoices):
|
||||
PAID = "PAI", _("Pagado")
|
||||
PENDING = "PEN", _("Pendiente")
|
||||
ERROR = "ERR", _("Error")
|
||||
|
||||
hash = models.UUIDField(verbose_name=_("Hash"), default=uuid4, db_index=True)
|
||||
|
||||
status = models.CharField(
|
||||
max_length=3,
|
||||
default=StatusChoices.PENDING,
|
||||
choices=StatusChoices.choices,
|
||||
verbose_name=_("Estado"),
|
||||
)
|
||||
amount = models.DecimalField(
|
||||
max_digits=8,
|
||||
decimal_places=2,
|
||||
default=Decimal("0"),
|
||||
verbose_name=_("Cantidad a pagar"),
|
||||
)
|
||||
|
||||
creation_date = models.DateTimeField(
|
||||
auto_now_add=True, verbose_name=_("Fecha de creación")
|
||||
)
|
||||
last_modification_date = models.DateTimeField(
|
||||
auto_now=True, verbose_name=_("Fecha de última modificación")
|
||||
)
|
||||
|
||||
contact_email = models.EmailField(
|
||||
blank=True, null=True, verbose_name=_("Email de contacto")
|
||||
)
|
||||
observations = models.CharField(
|
||||
max_length=255,
|
||||
default="",
|
||||
blank=True,
|
||||
null=True,
|
||||
verbose_name=_("Observaciones"),
|
||||
)
|
||||
|
||||
metadata = models.JSONField(
|
||||
default=set_default_metadata, verbose_name=_("Metadata")
|
||||
)
|
||||
"""
|
||||
Metadata example:
|
||||
{
|
||||
"items": [{
|
||||
"id": 1000,
|
||||
"type": "type",
|
||||
"amount_to_pay": 10.00,
|
||||
"amount_to_pay_int": 1000,
|
||||
}],
|
||||
}
|
||||
"""
|
||||
|
||||
def regenerate_uuid(self):
|
||||
self.hash = uuid4()
|
||||
self.save()
|
||||
|
||||
@property
|
||||
def amount_integer(self) -> int:
|
||||
return int(self.amount * 100)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _("Pago de pedido en Redsys")
|
||||
verbose_name_plural = _("Pagos de pedidos en Redsys")
|
||||
Reference in New Issue
Block a user