← Back to team overview

clearcorp team mailing list archive

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