mirror of
https://github.com/OCA/bank-payment.git
synced 2025-02-02 10:37:31 +02:00
Handle Priority Payments
This commit is contained in:
@@ -17,5 +17,13 @@
|
||||
<field name="ir_model_id"
|
||||
ref="account_banking_uk_hsbc.model_banking_export_hsbc_wizard"/>
|
||||
</record>
|
||||
<record model="payment.mode.type" id="export_priority_payment">
|
||||
<field name="name">Priority Payment</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>
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
@@ -225,7 +225,8 @@ class banking_export_hsbc_wizard(osv.osv_memory):
|
||||
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)
|
||||
'Faster Payment': paymul.MEANS_FASTER_PAYMENT,
|
||||
'Priority Payment': paymul.MEANS_PRIORITY_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)
|
||||
|
||||
|
||||
@@ -373,39 +373,76 @@ class Batch(LogicalSection):
|
||||
if not edifact_digits(index, 6, 1):
|
||||
raise ValueError("Index must be 6 digits or less: " + str(index))
|
||||
|
||||
# Store the payment means
|
||||
means = None
|
||||
if len(self.transactions)>0:
|
||||
means = self.transactions[0].means
|
||||
|
||||
segments = []
|
||||
|
||||
segments.append([
|
||||
['LIN'],
|
||||
[index],
|
||||
])
|
||||
segments.append([
|
||||
['DTM'],
|
||||
[203, self.exec_date.strftime('%Y%m%d'), 102],
|
||||
])
|
||||
segments.append([
|
||||
['RFF'],
|
||||
['AEK', self.reference],
|
||||
])
|
||||
|
||||
#currencies = set([x.currency for x in self.transactions])
|
||||
#if len(currencies) > 1:
|
||||
# raise ValueError("All transactions in a batch must have the same currency")
|
||||
|
||||
#segments.append([
|
||||
# ['MOA'],
|
||||
# [9, self.amount().quantize(Decimal('0.00')), currencies.pop()],
|
||||
#])
|
||||
segments.append(self.debit_account.fii_or_segment())
|
||||
segments.append([
|
||||
['NAD'],
|
||||
['OY'],
|
||||
[''],
|
||||
self.name_address.upper().split("\n")[0:5],
|
||||
])
|
||||
if means != MEANS_PRIORITY_PAYMENT:
|
||||
segments.append([
|
||||
['LIN'],
|
||||
[index],
|
||||
])
|
||||
segments.append([
|
||||
['DTM'],
|
||||
[203, self.exec_date.strftime('%Y%m%d'), 102],
|
||||
])
|
||||
segments.append([
|
||||
['RFF'],
|
||||
['AEK', self.reference],
|
||||
])
|
||||
|
||||
currencies = set([x.currency for x in self.transactions])
|
||||
if len(currencies) > 1:
|
||||
raise ValueError("All transactions in a batch must have the same currency")
|
||||
|
||||
segments.append([
|
||||
['MOA'],
|
||||
[9, self.amount().quantize(Decimal('0.00')), currencies.pop()],
|
||||
])
|
||||
segments.append(self.debit_account.fii_or_segment())
|
||||
segments.append([
|
||||
['NAD'],
|
||||
['OY'],
|
||||
[''],
|
||||
self.name_address.upper().split("\n")[0:5],
|
||||
])
|
||||
|
||||
for index, transaction in enumerate(self.transactions):
|
||||
segments += transaction.segments(index + 1)
|
||||
if transaction.means == MEANS_PRIORITY_PAYMENT:
|
||||
# Need a debit-credit format for Priority Payments
|
||||
segments.append([
|
||||
['LIN'],
|
||||
[index+1],
|
||||
])
|
||||
segments.append([
|
||||
['DTM'],
|
||||
[203, self.exec_date.strftime('%Y%m%d'), 102],
|
||||
])
|
||||
segments.append([
|
||||
['RFF'],
|
||||
['AEK', self.reference],
|
||||
])
|
||||
|
||||
# Use the transaction amount and currency for the debit line
|
||||
segments.append([
|
||||
['MOA'],
|
||||
[9, transaction.amount.quantize(Decimal('0.00')), transaction.currency],
|
||||
])
|
||||
segments.append(self.debit_account.fii_or_segment())
|
||||
segments.append([
|
||||
['NAD'],
|
||||
['OY'],
|
||||
[''],
|
||||
self.name_address.upper().split("\n")[0:5],
|
||||
])
|
||||
use_index = 1
|
||||
else:
|
||||
use_index = index + 1
|
||||
|
||||
segments += transaction.segments(use_index)
|
||||
|
||||
return segments
|
||||
|
||||
|
||||
Reference in New Issue
Block a user