46 lines
1.7 KiB
Python
46 lines
1.7 KiB
Python
# This file is part of Tryton. The COPYRIGHT file at the top level of
|
|
# this repository contains the full copyright notices and license terms.
|
|
from trytond.model import fields
|
|
from trytond.pool import Pool, PoolMeta
|
|
from trytond.pyson import Eval
|
|
|
|
|
|
class Shop(metaclass=PoolMeta):
|
|
__name__ = 'web.shop'
|
|
|
|
stripe_journal = fields.Many2One(
|
|
'account.payment.journal', "Stripe Journal",
|
|
domain=[
|
|
('stripe_account', '!=', None),
|
|
('currency', '=', Eval('currency', -1)),
|
|
],
|
|
depends=['currency'])
|
|
|
|
def vsf_order_create(self, data, sale, user):
|
|
pool = Pool()
|
|
Payment = pool.get('account.payment')
|
|
PaymentGroup = pool.get('account.payment.group')
|
|
sale = super().vsf_order_create(data, sale, user)
|
|
payment_method = data['addressInformation']['payment_method_code']
|
|
if payment_method == 'stripe':
|
|
payment_method_additional = (
|
|
data['addressInformation']['payment_method_additional'])
|
|
payment = Payment()
|
|
payment.company = sale.company
|
|
payment.kind = 'receivable'
|
|
payment.party = sale.party
|
|
payment.origin = sale
|
|
payment.amount = sale.total_amount
|
|
payment.journal = self.stripe_journal
|
|
payment.stripe_token = payment_method_additional['id']
|
|
payment.stripe_chargeable = True
|
|
payment.save()
|
|
Payment.approve([payment])
|
|
group = PaymentGroup(
|
|
company=payment.company,
|
|
journal=payment.journal,
|
|
kind=payment.kind)
|
|
group.save()
|
|
Payment.process([payment], lambda: group)
|
|
return sale
|