[IMP] add support for selecting faster payment mode

This commit is contained in:
Tristan Hill
2011-10-25 12:51:12 +01:00
committed by Dmitrijs Ledkovs
parent 4d7ad7ede9
commit c643b61a9e
3 changed files with 28 additions and 17 deletions

View File

@@ -1,13 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record model="payment.mode.type" id="export_hsbc">
<field name="name">HSBC</field>
<field name="code">HSBC</field>
<record model="payment.mode.type" id="export_acm_or_ezone">
<field name="name">ACH or EZONE</field>
<field name="code">not used</field>
<field name="suitable_bank_types"
eval="[(6,0,[ref('base_iban.bank_iban'),ref('base.bank_normal'),])]" />
<field name="ir_model_id"
ref="account_banking_uk_hsbc.model_banking_export_hsbc_wizard"/>
</record>
<record model="payment.mode.type" id="export_faster_payment">
<field name="name">Faster Payment</field>
<field name="code">not used</field>
<field name="suitable_bank_types"
eval="[(6,0,[ref('base.bank_normal'),])]" />
<field name="ir_model_id"
ref="account_banking_uk_hsbc.model_banking_export_hsbc_wizard"/>
</record>
</data>
</openerp>

View File

@@ -149,11 +149,15 @@ class banking_export_hsbc_wizard(osv.osv_memory):
)
transaction_kwargs = {
'charges': paymul.CHARGES_EACH_OWN,
'means': paymul.MEANS_EZONE,
}
elif oe_account.country_id.code == 'GB':
sortcode, accountno = oe_account.acc_number.split(" ", 2)
split = oe_account.acc_number.split(" ", 2)
if len(split) == 2:
sortcode, accountno = split
else:
raise osv.except_osv(
_('Error'),
"Invalid GB acccount number '%s'" % oe_account.acc_number)
paymul_account = paymul.UKAccount(
number=accountno,
sortcode=sortcode,
@@ -162,7 +166,6 @@ class banking_export_hsbc_wizard(osv.osv_memory):
)
transaction_kwargs = {
'charges': paymul.CHARGES_PAYEE,
'means': paymul.MEANS_ACH,
}
else:
raise osv.except_osv(
@@ -183,20 +186,19 @@ class banking_export_hsbc_wizard(osv.osv_memory):
)
)
try:
dest_account, transaction_kwargs = self._create_account(
line.bank_id)
except ValueError as exc:
raise osv.except_osv(
_('Error'),
_('Destination account invalid: ') + str(exc)
)
dest_account, transaction_kwargs = self._create_account(line.bank_id)
means = {'ACH or EZONE': paymul.MEANS_ACH_OR_EZONE,
'Faster Payment': paymul.MEANS_FASTER_PAYMENT}.get(line.order_id.mode.type.name)
if means is None:
raise osv.except_osv('Error', "Invalid payment type mode for HSBC '%s'" % line.order_id.mode.type.name)
try:
return paymul.Transaction(
amount=Decimal(str(line.amount_currency)),
currency=line.currency.name,
account=dest_account,
means=means,
name_address=line.info_partner,
customer_reference=line.name,
payment_reference=line.name,

View File

@@ -354,9 +354,10 @@ CHARGES_PAYEE = 13
CHARGES_EACH_OWN = 14
CHARGES_PAYER = 15
MEANS_ACH = 2
MEANS_EZONE = 2
# values per section 2.8.5 "PAI, Payment Instructions" of "HSBC - CRG Paymul Message Implementation Guide"
MEANS_ACH_OR_EZONE = 2
MEANS_PRIORITY_PAYMENT = 52
MEANS_FASTER_PAYMENT = 'FPS'
CHANNEL_INTRA_COMPANY = 'Z24'