from ... import fields, records
[docs]class LockRecord(records.Record):
"""
The LOCK record. This will be the last record in the source file.
"""
bank_app = fields.RegexField(regex="T", length=1, required=True)
app_id = fields.CharField(length=8, required=True)
edi_msg = fields.RegexField(regex="LOCK", length=6, required=True)
separator = fields.CharField(length=1, required=False)
rec_typ = fields.RegexField(regex="99", length=2, required=True)
count = fields.IntegerField(length=13, required=True)
timestamp = fields.TimestampField(format="%y%m%d%H%M%S", length=12,
required=True)
seq_no = fields.IntegerField(length=9, required=True)
[docs]class AdvmulRecord(records.Record):
"""
The actual ADVMUL record. This signifies the actual remittance advice on
the account.
"""
MESSAGE_TYPE = {
"01": 'charging order - priority',
"11": 'charging order - priority',
"12": 'collection order',
"55": 'rejected collection',
}
TRANSACT_TYPE = {
'C': 'credit transaction',
'D': 'debit transaction',
'CR': 'cancelled credit transaction',
'DR': 'cancelled debit transaction',
}
bank_app = fields.RegexField(regex="T", length=1, required=True)
app_id = fields.CharField(length=8, required=True)
edi_msg = fields.RegexField(regex="ADVMUL", length=6, required=True)
separator = fields.CharField(length=1, required=False)
rec_typ = fields.RegexField(regex="02", length=2, required=True)
message_type = fields.RegexField(length=2, required=False,
regex='01|11|12|55')
transact_no = fields.CharField(length=22, required=False)
weight = fields.IntegerField(length=3, required=True)
route_no = fields.RegexField(length=4, regex='0300|7500', required=False)
client_no = fields.CharField(length=14, required=False)
client_name = fields.CharField(length=35, required=False)
client_account_no = fields.CharField(length=34, required=True)
client_reference = fields.CharField(length=16, required=False)
bank_reference = fields.CharField(length=16, required=False)
date = fields.TimestampField(length=8, required=False, format='%Y%m%d')
date_process = fields.TimestampField(length=8, required=True,
format='%Y%m%d')
date_process_other = fields.TimestampField(length=8, required=False,
format='%Y%m%d')
transact_type = fields.RegexField(length=2, required=True,
regex='C|D|CR|DR')
amount = fields.DecimalField(length=16, required=True)
currency = fields.CharField(length=3, required=True)
balance = fields.DecimalField(length=16, required=True)
balance_code = fields.CharField(length=1, required=True)
offset_account_bank_code = fields.CharField(length=11, required=False)
offset_account_no = fields.CharField(length=34, required=False)
offset_account_name = fields.CharField(length=35, required=False)
constant_symbol = fields.IntegerField(length=4, required=False)
variable_symbol = fields.IntegerField(length=10, required=False)
specific_symbol = fields.IntegerField(length=10, required=False)
variable_symbol_offset = fields.IntegerField(length=10, required=False)
specific_symbol_offset = fields.IntegerField(length=10, required=False)
message1 = fields.CharField(length=35, required=False)
message2 = fields.CharField(length=35, required=False)
message3 = fields.CharField(length=35, required=False)
message4 = fields.CharField(length=35, required=False)
note = fields.CharField(length=35, required=False)
balance_final = fields.DecimalField(length=16, required=False)
balance_final_code = fields.CharField(length=1, required=False)
balance_time = fields.TimestampField(length=6, required=False,
format="%h%m%s")
[docs]class AdvmuzRecord(records.Record):
"""
The actual ADVMUZ record. This signifies the actual remittance advice on
the account.
"""
MESSAGE_TYPE = {
"CRE": 'incoming payment',
"DBE": 'outgoing payment',
}
FEE_SETTLING = {
'OUR': 'paid by creditor',
'BEN': 'paid by beneficiary',
'SHA': 'paid by each',
}
bank_app = fields.RegexField(regex="T", length=1, required=True)
app_id = fields.CharField(length=8, required=True)
edi_msg = fields.RegexField(regex="ADVMUZ", length=6, required=True)
separator = fields.CharField(length=1, required=False)
rec_typ = fields.RegexField(regex="02", length=2, required=True)
message_type = fields.RegexField(length=3, required=True, regex='CRE|DBE')
client_no = fields.CharField(length=14, required=False)
order_reference = fields.CharField(length=16, required=True)
reference_item = fields.CharField(length=28, required=True)
weight = fields.IntegerField(length=3, required=True)
client_account_no = fields.CharField(length=34, required=True)
creditor_address1 = fields.CharField(length=35, required=True)
creditor_address2 = fields.CharField(length=35, required=False)
creditor_address3 = fields.CharField(length=35, required=False)
creditor_address4 = fields.CharField(length=35, required=False)
creditor_account_no = fields.CharField(length=35, required=False)
creditor_bank1 = fields.CharField(length=35, required=False)
creditor_bank2 = fields.CharField(length=35, required=False)
creditor_bank3 = fields.CharField(length=35, required=False)
creditor_bank4 = fields.CharField(length=35, required=False)
payment_reason1 = fields.CharField(length=35, required=False)
payment_reason2 = fields.CharField(length=35, required=False)
payment_reason3 = fields.CharField(length=35, required=False)
payment_reason4 = fields.CharField(length=35, required=False)
amount = fields.DecimalField(length=16, required=False)
currency = fields.CharField(length=3, required=False)
amount_account_currency = fields.DecimalField(length=16, required=True)
account_currency = fields.CharField(length=3, required=True)
exchange_rate = fields.DecimalField(length=12, required=False)
local_fee = fields.DecimalField(length=16, required=False)
local_currency = fields.CharField(length=3, required=False)
foreign_fee = fields.DecimalField(length=16, required=False)
foreign_currency = fields.CharField(length=3, required=False)
other_fees = fields.DecimalField(length=16, required=False)
other_fees_currency = fields.CharField(length=3, required=False)
date = fields.TimestampField(length=8, required=True, format='%Y%m%d')
date_process = fields.TimestampField(length=8, required=True,
format='%Y%m%d')
date_due = fields.TimestampField(length=8, required=False, format='%Y%m%d')
client_advice1 = fields.CharField(length=35, required=False)
client_advice2 = fields.CharField(length=35, required=False)
client_advice3 = fields.CharField(length=35, required=False)
client_advice4 = fields.CharField(length=35, required=False)
client_advice5 = fields.CharField(length=35, required=False)
fee_settling = fields.RegexField(length=3, required=False,
regex='OUR|BEN|SHA')
swift_code = fields.CharField(length=11, required=False)
payment_title = fields.CharField(length=3, required=False)
routing_code = fields.CharField(length=34, required=False)