Exemplo n.º 1
0
def process_frb(file_name):
    incoming_name = os.path.join(INCOMING_ROOT, file_name)
    cf_records, errors = FRBCSVModel.import_data(data=open(incoming_name, 'rU'), skip_rows=3)
    
    new_recs_ctr = 0
    exist_recs_ctr = 0
    errors_cnt = len(errors)

    # HARDCODE
    ext_account = ExternalAccount.objects.get(gl_account__id='1001')

    for rec in cf_records:
        rec['amount'] = rec.pop('debit') + rec.pop('credit')
        rec_obj = Cashflow.objects \
                          .filter(post_date=rec['post_date']) \
                          .filter(amount=rec['amount']) \
                          .filter(external_id=rec['external_id']) \
                          .count()
        if rec_obj > 0:
            exist_recs_ctr += 1
        else:
            new_recs_ctr += 1
            rec['ext_account'] = ext_account
            rec_obj = Cashflow(**rec)
            rec_obj.save()

    summary_msg = 'Loaded FRB file: %d new records, %d duplicate records, %d bad rows' \
                                    % (new_recs_ctr, exist_recs_ctr, errors_cnt)
    return summary_msg, errors