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 " ".join(content_l)
|
||||||
return content_l[0]
|
return content_l[0]
|
||||||
|
|
||||||
def _parse_rows(self, mapping, currency_code, csv_or_xlsx, columns): # noqa: C901
|
def _parse_row(self, mapping, currency_code, values, columns): # noqa: C901
|
||||||
if isinstance(csv_or_xlsx, tuple):
|
timestamp = self._get_values_from_column(values, columns, "timestamp_column")
|
||||||
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"
|
|
||||||
)
|
|
||||||
currency = (
|
currency = (
|
||||||
self._get_values_from_column(values, columns, "currency_column")
|
self._get_values_from_column(values, columns, "currency_column")
|
||||||
if columns["currency_column"]
|
if columns["currency_column"]
|
||||||
@@ -243,9 +221,7 @@ class AccountStatementImportSheetParser(models.TransientModel):
|
|||||||
else None
|
else None
|
||||||
)
|
)
|
||||||
original_currency = (
|
original_currency = (
|
||||||
self._get_values_from_column(
|
self._get_values_from_column(values, columns, "original_currency_column")
|
||||||
values, columns, "original_currency_column"
|
|
||||||
)
|
|
||||||
if columns["original_currency_column"]
|
if columns["original_currency_column"]
|
||||||
else None
|
else None
|
||||||
)
|
)
|
||||||
@@ -296,7 +272,7 @@ class AccountStatementImportSheetParser(models.TransientModel):
|
|||||||
)
|
)
|
||||||
|
|
||||||
if currency != currency_code:
|
if currency != currency_code:
|
||||||
continue
|
return {}
|
||||||
|
|
||||||
if isinstance(timestamp, str):
|
if isinstance(timestamp, str):
|
||||||
timestamp = datetime.strptime(timestamp, mapping.timestamp_format)
|
timestamp = datetime.strptime(timestamp, mapping.timestamp_format)
|
||||||
@@ -312,9 +288,9 @@ class AccountStatementImportSheetParser(models.TransientModel):
|
|||||||
amount = -amount
|
amount = -amount
|
||||||
|
|
||||||
if original_amount:
|
if original_amount:
|
||||||
original_amount = self._parse_decimal(
|
original_amount = self._parse_decimal(original_amount, mapping).copy_sign(
|
||||||
original_amount, mapping
|
amount
|
||||||
).copy_sign(amount)
|
)
|
||||||
else:
|
else:
|
||||||
original_amount = 0.0
|
original_amount = 0.0
|
||||||
|
|
||||||
@@ -341,6 +317,30 @@ class AccountStatementImportSheetParser(models.TransientModel):
|
|||||||
line["bank_name"] = bank_name
|
line["bank_name"] = bank_name
|
||||||
if bank_account is not None:
|
if bank_account is not None:
|
||||||
line["bank_account"] = bank_account
|
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)
|
lines.append(line)
|
||||||
return lines
|
return lines
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user