Esempio n. 1
0
    def make_fee(self, rdata, request):
        from tv.models import FeeType, Fee, Payment
        from abon.models import Abonent
        from datetime import datetime

        print rdata

        ftype_id = int(rdata["type"])
        uid = int(rdata["abonent"])
        sum = float(rdata["sum"])
        tmpdate = rdata["bankdate"]
        descr = rdata["descr"] or ""
        autopay = rdata["autopay"] or False
        autoactivate = rdata["autoactivate"] or False

        try:
            ftype = FeeType.objects.get(pk=ftype_id)
        except FeeType.DoesNotExist:
            return dict(success=False, title="Сбой снятия денег", msg="register not found", errors="", data={})

        inner_descr = "%s [%s] (%s)" % (ftype.__unicode__(), rdata["sum"], rdata["descr"] or "")

        try:
            abonent = Abonent.objects.get(pk=uid)
        except Abonent.DoesNotExist:
            return dict(success=False, title="Сбой снятия денег", msg="abonent not found", errors="", data={})

        try:
            bank_date = datetime.strptime(tmpdate, "%Y-%m-%dT%H:%M:%S").date()
        except ValueError:
            return dict(success=False, title="Сбой снятия денег", msg="invalid date", errors="", data={})

        f = Fee()
        f.fee_type = ftype
        f.bill = abonent.bill
        f.sum = sum
        f.descr = descr
        f.inner_descr = inner_descr
        f.admin = request.user
        f.timestamp = bank_date
        f.save()
        f.make()

        if autopay:
            p = Payment()
            p.register = None
            p.source = None
            p.bill = abonent.bill
            p.sum = sum
            p.descr = descr
            p.inner_descr = inner_descr
            p.admin = request.user
            p.bank_date = bank_date
            p.save()
            p.make()

        if autoactivate:
            if abonent.disabled:
                rdata["date"] = rdata["bankdate"]
                rdata["descr"] = inner_descr
                return [
                    self.enable(rdata, request=request),
                    dict(success=True, title="Снятие проведено", msg="...", errors="", data={}),
                ]

        return dict(success=True, title="Снятие проведено", msg="...", errors="", data={})
Esempio n. 2
0
    def make_transfer(self, rdata, request):
        from tv.models import Fee, Payment
        from abon.models import Abonent
        from datetime import datetime

        descr = rdata["descr"] or ""

        if "abonent_from" in rdata and rdata["abonent_from"] > 0:
            pass
        else:
            return dict(
                success=False,
                title="Сбой переносa средств",
                msg="Invalid option value: abonent_from",
                errors="",
                data={},
            )

        if "abonent_to" in rdata and rdata["abonent_to"] > 0:
            pass
        else:
            return dict(
                success=False, title="Сбой переносa средств", msg="Invalid option value: abonent_to", errors="", data={}
            )

        if "sum" in rdata and rdata["sum"] > 0:
            pass
        else:
            return dict(
                success=False, title="Сбой переносa средств", msg="Invalid option value: sum", errors="", data={}
            )

        if "date" in rdata and rdata["date"] > 0:
            date = rdata["date"]
            try:
                date = datetime.strptime(date, "%Y-%m-%dT%H:%M:%S").date()
            except ValueError:
                return dict(success=False, title="Сбой переносa средств", msg="invalid date", errors="", data={})
        else:
            return dict(success=False, title="Сбой переносa средств", msg="invalid date", errors="", data={})
        try:
            abon_from = Abonent.objects.get(pk=rdata["abonent_from"])
            abon_to = Abonent.objects.get(pk=rdata["abonent_to"])
        except Abonent.DoesNotExist:
            return dict(success=False, title="Сбой переносa средств", msg="Abonent not found", errors="", data={})
        else:
            f = Fee()
            f.bill = abon_from.bill
            f.sum = rdata["sum"]
            f.descr = "Трансфер средств. recipient client id = %s " % abon_to.pk
            f.inner_descr = descr
            f.admin = request.user
            f.bank_date = date
            f.save()
            f.make()

            p = Payment()
            p.bill = abon_to.bill
            p.sum = rdata["sum"]
            p.descr = "Трансфер средств. source client id = %s " % abon_from.pk
            p.inner_descr = descr
            p.admin = request.user
            p.bank_date = date
            p.save()
            p.make()

        print rdata
        return dict(success=True, title="Перенос средств успешен", msg="...", errors="", data={})
Esempio n. 3
0
    def make_payment(self, rdata, request):
        from tv.models import PaymentRegister, Payment
        from abon.models import Abonent
        from datetime import datetime

        print rdata

        register_id = int(rdata["register"])
        uid = int(rdata["abonent"])
        sum = float(rdata["sum"])
        tmpdate = rdata["bankdate"]
        descr = rdata["descr"] or ""

        try:
            register = PaymentRegister.objects.get(pk=register_id)
        except PaymentRegister.DoesNotExist:
            return dict(success=False, title="Сбой проведения оплаты", msg="register not found", errors="", data={})

        try:
            abonent = Abonent.objects.get(pk=uid)
        except Abonent.DoesNotExist:
            return dict(success=False, title="Сбой проведения оплаты", msg="abonent not found", errors="", data={})

        try:
            bank_date = datetime.strptime(tmpdate, "%Y-%m-%dT%H:%M:%S").date()
        except ValueError:
            return dict(success=False, title="Сбой проведения оплаты", msg="invalid date", errors="", data={})

        pr = Payment.objects.latest("id")
        pt = Payment.objects.filter(id__gte=pr.id - 5, bill=abonent.bill)

        if not request.user.has_perm("accounts.rpc_abon_make_double_payment"):
            if pt.count() > 0:
                return dict(
                    success=False,
                    title="Сбой проведения оплаты",
                    msg="Возможно повторный ввод квитанции",
                    errors="",
                    data={},
                )

        p = Payment()
        p.register = register
        p.source = register.source
        p.bill = abonent.bill
        p.sum = sum
        p.descr = descr
        p.inner_descr = descr
        p.admin = request.user
        p.bank_date = bank_date
        p.save()

        return dict(success=True, title="Оплата принята", msg="...", errors="", data={})