clearcorp team mailing list archive
-
clearcorp team
-
Mailing list archive
-
Message #00353
lp:~dr.clearcorp/openerp-costa-rica/6.1-l10n_cr_account_baking_cr_bac into lp:openerp-costa-rica
Diana Rodríguez Martínez has proposed merging lp:~dr.clearcorp/openerp-costa-rica/6.1-l10n_cr_account_baking_cr_bac into lp:openerp-costa-rica.
Requested reviews:
CLEARCORP drivers (clearcorp-drivers)
For more details, see:
https://code.launchpad.net/~dr.clearcorp/openerp-costa-rica/6.1-l10n_cr_account_baking_cr_bac/+merge/132710
[FIX] Bac imported file statements
--
https://code.launchpad.net/~dr.clearcorp/openerp-costa-rica/6.1-l10n_cr_account_baking_cr_bac/+merge/132710
Your team CLEARCORP development team is subscribed to branch lp:openerp-costa-rica.
=== modified file 'l10n_cr_account_banking_cr_bac/bac_mt940.py'
--- l10n_cr_account_banking_cr_bac/bac_mt940.py 2012-07-17 23:02:22 +0000
+++ l10n_cr_account_banking_cr_bac/bac_mt940.py 2012-11-02 15:11:21 +0000
@@ -27,6 +27,7 @@
import re
import osv
import logging
+import datetime
bt = models.mem_bank_transaction
logger = logging.getLogger('bac_mt940')
@@ -95,15 +96,14 @@
# The wizard doesn't check for sort code
self.local_account = record['sortcode'] + record['accnum']
def _statement_number():
- #self.id = '-'.join([self.id, self.local_account, record['statementnr']])
self.id = self.local_account + '-' + record['statementnr']
def _opening_balance():
self.start_balance = record2float(record,'startingbalance')
self.local_currency = record['currencycode']
def _closing_balance():
self.end_balance = record2float(record, 'endingbalance')
- self.date = record['bookingdate']
- dateString = record['bookingdate'].strftime("%Y-%m-%d")
+ today = datetime.datetime.today()
+ dateString = today.strftime("%Y-%m-%d %H:%M:%S")
self.id = dateString + '-' + self.id
def _transaction_new():
self.transactions.append(transaction(record))
@@ -141,9 +141,7 @@
else:
transaction = self.transactions[-1]
#transaction.id = ','.join([record[k] for k in ['infoline{0}'.format(i) for i in range(2,5)] if record.has_key(k)])
- transaction.id = record['infoline1']
-
-
+ transaction.id = record['infoline1']
def raise_error(message, line):
raise osv.osv.except_osv(_('Import error'),
@@ -159,8 +157,11 @@
''')
def parse(self, cr, data):
- result = []
+ result = []
parser = BACParser()
+ list_record = []
+ inversion_colocada = 0
+
# Split into statements
statements = [st for st in re.split('[\r\n]*(?=:20:)', data)]
# Split by records
@@ -168,19 +169,83 @@
for statement_lines in statement_list:
stmnt = statement()
- records = [parser.parse_record(record) for record in statement_lines]
- [stmnt.import_record(r) for r in records if r is not None]
-
-
- if stmnt.is_valid():
- result.append(stmnt)
- else:
- logger.info("Invalid Statement:")
- logger.info(records[0])
- logger.info(records[1])
- logger.info(records[2])
- logger.info(records[3])
- logger.info(records[4])
+
+ """EXTRACCION DE DATOS """
+ for record in statement_lines:
+ records = parser.parse_record(record)
+
+ if records is not None:
+ ############START PAGO CAPITAL INVERSION
+ if records['recordid'] == '60F':
+ start_balance = float(records['startingbalance'])
+ if records['recordid'] == '61':
+ amount = float(records['amount'])
+ if records['recordid'] == '86' and records['infoline1'] == 'PAGO CAPITAL INVERSION':
+ start_amount = amount
+ start_balance += amount #con la suma ya realizada.
+ ############END PAGO CAPITAL INVERSION
+
+ ############START INVERSION COLOCADA
+ if records['recordid'] == '86':
+ cad = records['infoline1']
+ if cad.find('INVERSION COLOCADA') > 0:
+ inversion_colocada = amount
+
+ if records['recordid'] == '62F':
+ ending_balance = (inversion_colocada + float(records['endingbalance']))
+
+ if records is not None:
+ """ACTUALIZACION DE DATOS """
+ for record in statement_lines:
+ if record is not None:
+ records = parser.parse_record(record)
+
+ if (records['recordid'] == '60F'):
+ dic = {'startingbalance':start_balance}
+ records.update(dic)
+
+ if (records['recordid'] == '62F'):
+ dic = {'endingbalance': ending_balance}
+ records.update(dic)
+
+ if (records['recordid'] == '64'):
+ dic = {'endingbalance': ending_balance}
+ records.update(dic)
+
+ #SI LA LINEA NO ES INVERSION COLOCADA O PAGO CAPITAL INVERSION, SE AGREGA A LA LISTA
+ #PAGO_CAPITAL
+ if (records['recordid'] == '86'):
+ cad = records['infoline1']
+
+ if (cad != "PAGO CAPITAL INVERSION") and (cad.find("INVERSION COLOCADA") < 0):
+ list_record.append(records)
+
+ if (records['recordid'] == '61'):
+ try:
+ if float(records['amount']) != start_amount and float(records['amount']) != inversion_colocada:
+ list_record.append(records)
+ except:
+ list_record.append(records)
+ #####################################################################
+
+ if (records['recordid'] != '61' and records['recordid'] != '86' ):
+ list_record.append(records)
+
+ [stmnt.import_record(r) for r in list_record if r is not None]
+
+ if stmnt.is_valid():
+ result.append(stmnt)
+ list_record = []
+ inversion_colocada = 0
+ start_balance = 0
+ else:
+ logger.info("Invalid Statement:")
+ logger.info(records[0])
+ logger.info(records[1])
+ logger.info(records[2])
+ logger.info(records[3])
+ logger.info(records[4])
+ list_record = []
return result
Follow ups