Ejemplo n.º 1
0
def initiate_transfer(db, t_id):
    amount, status = db.one(
        """
        SELECT t.amount, t.status
          FROM transfers t
         WHERE t.id = %s
           AND t.status = 'pre'
    """, (t_id, ))
    assert status == 'pre', (t_id, status)
    tipper_wallet = db.one(
        """
        SELECT w.remote_id, w.remote_owner_id
          FROM transfers t
          JOIN wallets w ON w.remote_id = t.wallet_from
         WHERE t.id = %s
    """, (t_id, ))
    tippee_wallet = db.one(
        """
        SELECT w.remote_id, w.remote_owner_id
          FROM transfers t
          JOIN wallets w ON w.remote_id = t.wallet_to
         WHERE t.id = %s
    """, (t_id, ))
    tr = Transfer()
    tr.AuthorId = tipper_wallet.remote_owner_id
    tr.CreditedUserId = tippee_wallet.remote_owner_id
    tr.CreditedWalletId = tippee_wallet.remote_id
    tr.DebitedFunds = amount.int()
    tr.DebitedWalletId = tipper_wallet.remote_id
    tr.Fees = Money(0, amount.currency)
    tr.Tag = str(t_id)
    execute_transfer(db, t_id, tr)
    return tr
Ejemplo n.º 2
0
def transfer(db, tipper, tippee, amount, context, **kw):
    tipper_wallet = NS(remote_id=kw.get('tipper_wallet_id'),
                       remote_owner_id=kw.get('tipper_mango_id'))
    if not all(tipper_wallet.__dict__.values()):
        tipper_wallet = Participant.from_id(tipper).get_current_wallet(
            amount.currency)
    tippee_wallet = NS(remote_id=kw.get('tippee_wallet_id'),
                       remote_owner_id=kw.get('tippee_mango_id'))
    if not all(tippee_wallet.__dict__.values()):
        tippee_wallet = Participant.from_id(tippee).get_current_wallet(
            amount.currency, create=True)
    wallet_from = tipper_wallet.remote_id
    wallet_to = tippee_wallet.remote_id
    t_id = prepare_transfer(
        db,
        tipper,
        tippee,
        amount,
        context,
        wallet_from,
        wallet_to,
        team=kw.get('team'),
        invoice=kw.get('invoice'),
        bundles=kw.get('bundles'),
        unit_amount=kw.get('unit_amount'),
    )
    tr = Transfer()
    tr.AuthorId = tipper_wallet.remote_owner_id
    tr.CreditedUserId = tippee_wallet.remote_owner_id
    tr.CreditedWalletId = wallet_to
    tr.DebitedFunds = amount.int()
    tr.DebitedWalletId = wallet_from
    tr.Fees = Money(0, amount.currency)
    tr.Tag = str(t_id)
    return execute_transfer(db, t_id, tr), t_id
Ejemplo n.º 3
0
def transfer(db, tipper, tippee, amount, context, **kw):
    get = lambda id, col: db.one(
        "SELECT {0} FROM participants WHERE id = %s".format(col), (id, ))
    wallet_from = kw.get('tipper_wallet_id') or get(tipper,
                                                    'mangopay_wallet_id')
    wallet_to = kw.get('tippee_wallet_id') or get(tippee, 'mangopay_wallet_id')
    if not wallet_to:
        wallet_to = create_wallet(db, Participant.from_id(tippee))
    t_id = prepare_transfer(
        db,
        tipper,
        tippee,
        amount,
        context,
        wallet_from,
        wallet_to,
        team=kw.get('team'),
        invoice=kw.get('invoice'),
        bundles=kw.get('bundles'),
    )
    tr = Transfer()
    tr.AuthorId = kw.get('tipper_mango_id') or get(tipper, 'mangopay_user_id')
    tr.CreditedUserId = kw.get('tippee_mango_id') or get(
        tippee, 'mangopay_user_id')
    tr.CreditedWalletId = wallet_to
    tr.DebitedFunds = Money(int(amount * 100), 'EUR')
    tr.DebitedWalletId = wallet_from
    tr.Fees = Money(0, 'EUR')
    tr.Tag = str(t_id)
    tr.save()
    return record_transfer_result(db, t_id, tr), t_id
Ejemplo n.º 4
0
def initiate_transfer(db, t_id):
    amount, status = db.one("""
        SELECT t.amount, t.status
          FROM transfers t
         WHERE t.id = %s
           AND t.status = 'pre'
    """, (t_id,))
    assert status == 'pre', (t_id, status)
    tipper_wallet = db.one("""
        SELECT w.remote_id, w.remote_owner_id
          FROM transfers t
          JOIN wallets w ON w.remote_id = t.wallet_from
         WHERE t.id = %s
    """, (t_id,))
    tippee_wallet = db.one("""
        SELECT w.remote_id, w.remote_owner_id
          FROM transfers t
          JOIN wallets w ON w.remote_id = t.wallet_to
         WHERE t.id = %s
    """, (t_id,))
    tr = Transfer()
    tr.AuthorId = tipper_wallet.remote_owner_id
    tr.CreditedUserId = tippee_wallet.remote_owner_id
    tr.CreditedWalletId = tippee_wallet.remote_id
    tr.DebitedFunds = Money_to_cents(amount)
    tr.DebitedWalletId = tipper_wallet.remote_id
    tr.Fees = Money(0, amount.currency)
    tr.Tag = str(t_id)
    execute_transfer(db, t_id, tr)
    return tr
Ejemplo n.º 5
0
def transfer(db, tipper, tippee, amount, context, **kw):
    t_id = db.one("""
        INSERT INTO transfers
                    (tipper, tippee, amount, context, team, invoice, status)
             VALUES (%s, %s, %s, %s, %s, %s, 'pre')
          RETURNING id
    """, (tipper, tippee, amount, context, kw.get('team'), kw.get('invoice')))
    get = lambda id, col: db.one("SELECT {0} FROM participants WHERE id = %s".format(col), (id,))
    tr = Transfer()
    tr.AuthorId = kw.get('tipper_mango_id') or get(tipper, 'mangopay_user_id')
    tr.CreditedUserId = kw.get('tippee_mango_id') or get(tippee, 'mangopay_user_id')
    tr.CreditedWalletId = kw.get('tippee_wallet_id') or get(tippee, 'mangopay_wallet_id')
    if not tr.CreditedWalletId:
        tr.CreditedWalletId = create_wallet(db, Participant.from_id(tippee))
    tr.DebitedFunds = Money(int(amount * 100), 'EUR')
    tr.DebitedWalletId = kw.get('tipper_wallet_id') or get(tipper, 'mangopay_wallet_id')
    tr.Fees = Money(0, 'EUR')
    tr.Tag = str(t_id)
    tr.save()
    return record_transfer_result(db, t_id, tr)
Ejemplo n.º 6
0
def transfer(db, tipper, tippee, amount, context, **kw):
    tipper_wallet = NS(remote_id=kw.get('tipper_wallet_id'), remote_owner_id=kw.get('tipper_mango_id'))
    if not all(tipper_wallet.__dict__.values()):
        tipper_wallet = Participant.from_id(tipper).get_current_wallet(amount.currency)
    tippee_wallet = NS(remote_id=kw.get('tippee_wallet_id'), remote_owner_id=kw.get('tippee_mango_id'))
    if not all(tippee_wallet.__dict__.values()):
        tippee_wallet = Participant.from_id(tippee).get_current_wallet(amount.currency, create=True)
    wallet_from = tipper_wallet.remote_id
    wallet_to = tippee_wallet.remote_id
    t_id = prepare_transfer(
        db, tipper, tippee, amount, context, wallet_from, wallet_to,
        team=kw.get('team'), invoice=kw.get('invoice'), bundles=kw.get('bundles'),
    )
    tr = Transfer()
    tr.AuthorId = tipper_wallet.remote_owner_id
    tr.CreditedUserId = tippee_wallet.remote_owner_id
    tr.CreditedWalletId = wallet_to
    tr.DebitedFunds = amount.int()
    tr.DebitedWalletId = wallet_from
    tr.Fees = Money(0, amount.currency)
    tr.Tag = str(t_id)
    return execute_transfer(db, t_id, tr), t_id