mirror of
https://github.com/OCA/bank-statement-import.git
synced 2025-01-20 12:37:43 +02:00
@@ -194,30 +194,8 @@ class AccountStatementImportSheetParser(models.TransientModel):
|
||||
return " ".join(content_l)
|
||||
return content_l[0]
|
||||
|
||||
def _parse_rows(self, mapping, currency_code, csv_or_xlsx, columns): # noqa: C901
|
||||
if isinstance(csv_or_xlsx, tuple):
|
||||
rows = range(1, csv_or_xlsx[1].nrows)
|
||||
else:
|
||||
rows = csv_or_xlsx
|
||||
|
||||
lines = []
|
||||
for row in rows:
|
||||
if isinstance(csv_or_xlsx, tuple):
|
||||
book = csv_or_xlsx[0]
|
||||
sheet = csv_or_xlsx[1]
|
||||
values = []
|
||||
for col_index in range(sheet.row_len(row)):
|
||||
cell_type = sheet.cell_type(row, col_index)
|
||||
cell_value = sheet.cell_value(row, col_index)
|
||||
if cell_type == xlrd.XL_CELL_DATE:
|
||||
cell_value = xldate_as_datetime(cell_value, book.datemode)
|
||||
values.append(cell_value)
|
||||
else:
|
||||
values = list(row)
|
||||
|
||||
timestamp = self._get_values_from_column(
|
||||
values, columns, "timestamp_column"
|
||||
)
|
||||
def _parse_row(self, mapping, currency_code, values, columns): # noqa: C901
|
||||
timestamp = self._get_values_from_column(values, columns, "timestamp_column")
|
||||
currency = (
|
||||
self._get_values_from_column(values, columns, "currency_column")
|
||||
if columns["currency_column"]
|
||||
@@ -243,9 +221,7 @@ class AccountStatementImportSheetParser(models.TransientModel):
|
||||
else None
|
||||
)
|
||||
original_currency = (
|
||||
self._get_values_from_column(
|
||||
values, columns, "original_currency_column"
|
||||
)
|
||||
self._get_values_from_column(values, columns, "original_currency_column")
|
||||
if columns["original_currency_column"]
|
||||
else None
|
||||
)
|
||||
@@ -296,7 +272,7 @@ class AccountStatementImportSheetParser(models.TransientModel):
|
||||
)
|
||||
|
||||
if currency != currency_code:
|
||||
continue
|
||||
return {}
|
||||
|
||||
if isinstance(timestamp, str):
|
||||
timestamp = datetime.strptime(timestamp, mapping.timestamp_format)
|
||||
@@ -312,9 +288,9 @@ class AccountStatementImportSheetParser(models.TransientModel):
|
||||
amount = -amount
|
||||
|
||||
if original_amount:
|
||||
original_amount = self._parse_decimal(
|
||||
original_amount, mapping
|
||||
).copy_sign(amount)
|
||||
original_amount = self._parse_decimal(original_amount, mapping).copy_sign(
|
||||
amount
|
||||
)
|
||||
else:
|
||||
original_amount = 0.0
|
||||
|
||||
@@ -341,6 +317,30 @@ class AccountStatementImportSheetParser(models.TransientModel):
|
||||
line["bank_name"] = bank_name
|
||||
if bank_account is not None:
|
||||
line["bank_account"] = bank_account
|
||||
return line
|
||||
|
||||
def _parse_rows(self, mapping, currency_code, csv_or_xlsx, columns): # noqa: C901
|
||||
if isinstance(csv_or_xlsx, tuple):
|
||||
rows = range(1, csv_or_xlsx[1].nrows)
|
||||
else:
|
||||
rows = csv_or_xlsx
|
||||
|
||||
lines = []
|
||||
for row in rows:
|
||||
if isinstance(csv_or_xlsx, tuple):
|
||||
book = csv_or_xlsx[0]
|
||||
sheet = csv_or_xlsx[1]
|
||||
values = []
|
||||
for col_index in range(sheet.row_len(row)):
|
||||
cell_type = sheet.cell_type(row, col_index)
|
||||
cell_value = sheet.cell_value(row, col_index)
|
||||
if cell_type == xlrd.XL_CELL_DATE:
|
||||
cell_value = xldate_as_datetime(cell_value, book.datemode)
|
||||
values.append(cell_value)
|
||||
else:
|
||||
values = list(row)
|
||||
line = self._parse_row(mapping, currency_code, values, columns)
|
||||
if line:
|
||||
lines.append(line)
|
||||
return lines
|
||||
|
||||
|
||||
Reference in New Issue
Block a user