Exemplo n.º 1
0
def activation_bonus_handler(request, **kwargs):
    """THE SPONSOR RECEIVES THE MATCHING PERCENTAGE GRADE"""
    member = kwargs.get("member", None)
    operation = kwargs.get("operation", None)
    a_m = ACTIVATION_MATRIX
    created_by = member
    origin = OperationType.objects.filter(code_name=operation).first()
    """UPDATE SPONSOR BV"""
    ancestors_bv_update(member, ACTIVATION_BV, origin)
    """WALLET INCOME"""
    try:
        ancestors = member.get_ancestors(ascending=True)
        ancestors = [ancestor for ancestor in ancestors if ancestor.status]
    except ValueError as e:
        logger.error(e)
        ancestors = []
    # print("Ancestors => {}".format(ancestors))

    operation_data = {
        'wallet': "wallet1",
        'sender': member,
        'operation': origin,
        'created_by': created_by
    }

    for ancestor, value in zip(ancestors, a_m):
        if ancestor:
            print("Ancestor => {}, Value => {}".format(ancestor, value))
            bonus_amount = ACTIVATION_BV * value / 100
            operation_data['member'] = ancestor
            operation_data['receiver'] = ancestor
            operation_tnx("M2m", bonus_amount, **operation_data)
Exemplo n.º 2
0
def sponsorship_bonus_handler(request, **kwargs):
    """THE SPONSOR RECEIVES THE MATCHING PERCENTAGE GRADE"""
    sponsor = kwargs.get("sponsor", None)
    pack = kwargs.get("pack", None)
    s_m = SPONSORSHIP_MATRIX
    created_by = request.user.member

    sponsor_info = Member.objects.get(username__exact=sponsor)

    bonus_amount = 0
    """WALLET INCOME"""
    if sponsor_info.grade == "silver":
        bonus_amount = pack.bv * s_m[0][pack.level] / 100
    if sponsor_info.grade == "gold":
        bonus_amount = pack.bv * s_m[1][pack.level] / 100
    if sponsor_info.grade == "diamond":
        bonus_amount = pack.bv * s_m[2][pack.level] / 100

    operation_data = {
        'member': sponsor_info,
        'wallet': "wallet1",
        'sender': None,
        'receiver': sponsor_info,
        'operation': 'sponsorship_bonus',
        'created_by': created_by
    }
    return operation_tnx("M2m", bonus_amount, **operation_data)
Exemplo n.º 3
0
def member_activation(request, data):
    sender = data.get('sender')
    receiver = data.get('receiver')
    amount = data.get('amount')

    operation_data = {
        'member': sender,
        'wallet': "wallet2",
        'sender': sender,
        'receiver': receiver,
        'operation': 'activation',
        'created_by': sender
    }
    operation_status = operation_tnx("m2M", amount, **operation_data)

    print("Operation Data => {}".format(operation_data))
    print("Operation Status => {}".format(operation_status))
    activation_bonus_handler(request, **{
        'member': receiver,
        'operation': 'activation'
    })

    if operation_status:
        member_status_update(receiver, True)
        """Autoship Counter Init"""
        autoship = Counter.objects.get(code="autoship")
        set_counter(receiver, autoship)

        print("Member Grade => {}".format(receiver.grade))
        print("ENUMS GRADE => {}".format(GRADES.diamond))

        if receiver.grade == GRADES.diamond:
            """Pool 10 Counter Init"""
            pool_10 = Counter.objects.get(code="pool_10")
            set_counter(receiver, pool_10)
        else:
            """Upgrade Counter Init"""
            upgrade = Counter.objects.get(code="upgrade")
            set_counter(receiver, upgrade)

        password = generate_password()

        user = User.objects.get(username=receiver.username)
        user.set_password(password)
        user.save()

        notify_data = {
            'action': 'activation',
            'e_subject': 'PhytOrganic - Member Activation',
            'e_receiver': receiver.email,
            'e_context': {
                'username': receiver.username,
                'password': password
            }
        }
        notifier(**notify_data)
        return True
Exemplo n.º 4
0
    def post(self, request, *args, **kwargs):
        post = request.POST
        pass
        amount = post.get("amount", 0)
        t_receiver = post.get("username", "")
        security_code = post.get('security_code', "")
        member = self.request.user.member

        try:
            if len(t_receiver) == 0:
                receiver = member
                wallet = "wallet1"
            else:
                receiver = Member.objects.get(username=t_receiver)
                wallet = "wallet2"
        except Member.DoesNotExist:
            messages.warning(request, _("Receiver doesn't exist !"))
            return redirect('wallet:member-transfer')

        check = check_password_hash(member.security_code, security_code)
        if check:
            if receiver == member:
                cond = member.member_wallet.wallet1 >= Decimal(amount)
            else:
                cond = member.member_wallet.wallet2 >= Decimal(amount)

            if cond:
                operation_data = {
                    'member': member,
                    'wallet': wallet,
                    'sender': member,
                    'receiver': receiver,
                    'operation': 'transfer',
                    'created_by': member
                }
                transaction_status = operation_tnx("m2m", Decimal(amount),
                                                   **operation_data)
                if transaction_status:
                    messages.success(
                        request, _("Green Gold transfer done successfully !"))
                else:
                    messages.error(request, _("An error occurred !!!"))
            else:
                messages.error(
                    request,
                    _("Your Wallet balance is not sufficient to process this transfer !!!"
                      ))
        else:
            messages.error(request,
                           _("Wallet Password incorrect, please try again."))

        return redirect('wallet:member-transfer')
Exemplo n.º 5
0
def teeps_handler(request, **kwargs):
    """THE ENROLLER RECEIVES THE MATCHING PERCENTAGE GRADE"""
    pack = kwargs.get("pack", None)
    teep = pack.bv * TEEPS_PERCENT / 100

    enroller = request.user.member

    operation_data = {
        'member': enroller,
        'wallet': "wallet1",
        'sender': None,
        'receiver': None,
        'operation': 'teeps',
        'created_by': enroller
    }
    return operation_tnx("M2m", teep, **operation_data)
Exemplo n.º 6
0
def maintenance_incentive_handler(request, pack_id):
    maintenance_pack = MaintenancePack.objects.get(id=pack_id)

    operation_data = {
        'member': request.user.member,
        'wallet': "wallet2",
        'sender': request.user.member,
        'receiver': None,
        'operation': 'maintenance_incentive',
        'created_by': request.user.member
    }

    ancestors_bv_update(request.user.member,
                        maintenance_pack.bv,
                        operation="maintenance_incentive")

    return operation_tnx("m2M", maintenance_pack.price, **operation_data)
Exemplo n.º 7
0
def maintenance_pairing(*args, **kwargs):
    """print('ARGS => {}'.format(args))
    print('KWARGS => {}'.format(kwargs))
    member = kwargs.get('member', None)
    limit = kwargs.get('limit')"""
    members = Member.objects.filter(status=True)
    for member in members:
        if member is not None and member.status is True:
            left = member.member_bv.left
            right = member.member_bv.right

            bv = right if left - right >= 0 else left

            if bv > 0:
                amount = bv * (MAINTENANCE_PARING_PERCENT / 100) * 2

                operation_data = {
                    'member': member,
                    'wallet': 'wallet1',
                    'receiver': member,
                    'operation': 'maintenance_pairing',
                    'created_by': member
                }
                transaction_status = operation_tnx("M2m", Decimal(amount),
                                                   **operation_data)
                if transaction_status:
                    member_bv = MemberBV.objects.get(member=member)
                    member_bv.left = F("left") - bv
                    member_bv.right = F("right") - bv

                    try:
                        member_bv.save()
                        return True
                    except IntegrityError as e:
                        logger.error(e)
                        return False
                    except ValueError as e:
                        logger.error(e)
                        return False
            else:
                return False
        else:
            return False
Exemplo n.º 8
0
def member_registration(request, data):
    placement_name = data.get('placement_name', None)
    pack = data.get('pack', None)
    delivery_method = data.get('delivery_method', None)
    payment_mode = data.get('payment_mode', None)
    pack = Pack.objects.filter(id=int(pack)).first()
    """1. MEMBER CREATION"""
    parent = Member.objects.filter(username=placement_name).first()
    password = generate_password()
    member_info = {
        'username': data.get('username', None),
        'first_name': data.get('first_name', None),
        'last_name': data.get('last_name', None),
        'email': data.get('email', None),
        'sponsor': data.get('sponsor', None),
        'parent': parent,
        'placement_name': data.get('placement_name', None),
        'placement_mode': data.get('placement_mode', None),
        'grade': "" if pack is None else pack.code,
        'paper_id': data.get('paper_id', None),
        'gender': data.get('gender', None),
        'birth_date': data.get('birth_date', None),
        'contact': data.get('contact', None),
        'residential_country': data.get('residential_country', None),
        'address_1': data.get('address_1', None),
        'address_2': data.get('address_2', None),
        'post_code': data.get('post_code', None),
        'city': data.get('city', None),
        'state': data.get('state', None),
        'country': data.get('country', None),
        'security_code': password
    }
    member = Member(**member_info)
    print("Member => {}".format(member))
    member.save()
    """2. ORDER PROCESS"""
    sender = request.user.member
    print("Enroller => {}".format(sender))

    operation_data = {
        'member': sender,
        'wallet': payment_mode,
        'sender': sender,
        'receiver': member,
        'operation': 'registration',
        'created_by': sender
    }
    operation_status = operation_tnx("m2M", pack.price, **operation_data)

    print("Operation Data => {}".format(operation_data))
    print("Operation Status => {}".format(operation_status))

    if operation_status:
        """3. UPDATE MEMBER STATUS"""
        member_status_update(member, True)
        """4. ORDER INFO"""
        order_tnx_handler(member=member,
                          order_type="P",
                          pack=pack,
                          payment_mode=payment_mode,
                          delivery_method=delivery_method)
        """5. TEEPS"""
        teeps_handler(request, pack=pack)
        """6. SPONSORSHIP BONUS"""
        sponsorship_bonus_handler(request, sponsor=member.sponsor, pack=pack)
        """7. TEAM BONUS"""
        team_bonus_handler(request,
                           pack=pack,
                           member=member,
                           operation="team_bonus")

        notify_data = {
            'action': 'registration',
            'e_subject': 'PhytOrganic - Member Registration',
            'e_receiver': member.email,
            'e_context': {
                'username': member.username,
                'password': password
            }
        }
        notifier(**notify_data)
        return True
    else:
        return False