diff --git a/account_statement_import_online/models/online_bank_statement_provider.py b/account_statement_import_online/models/online_bank_statement_provider.py
index 840e56059..c04f26812 100644
--- a/account_statement_import_online/models/online_bank_statement_provider.py
+++ b/account_statement_import_online/models/online_bank_statement_provider.py
@@ -188,13 +188,15 @@ def _compute_update_schedule(self):
)[0][1],
}
- def _pull(self, date_since, date_until):
+ def _pull(self, date_since, date_until, one_fetch=False):
"""Pull data for all providers within requested period."""
is_scheduled = self.env.context.get("scheduled")
debug = self.env.context.get("account_statement_online_import_debug")
debug_data = []
for provider in self:
statement_date_since = provider._get_statement_date_since(date_since)
+ if one_fetch:
+ statement_date_since = date_since
while statement_date_since < date_until:
# Note that statement_date_until is exclusive, while date_until is
# inclusive. So if we have daily statements date_until might
@@ -202,6 +204,8 @@ def _pull(self, date_since, date_until):
statement_date_until = (
statement_date_since + provider._get_statement_date_step()
)
+ if one_fetch:
+ statement_date_until = date_until
try:
data = provider._obtain_statement_data(
statement_date_since, statement_date_until
diff --git a/account_statement_import_online/wizards/online_bank_statement_pull_wizard.py b/account_statement_import_online/wizards/online_bank_statement_pull_wizard.py
index 49cc3f0a1..0c5af9691 100644
--- a/account_statement_import_online/wizards/online_bank_statement_pull_wizard.py
+++ b/account_statement_import_online/wizards/online_bank_statement_pull_wizard.py
@@ -4,6 +4,7 @@
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
import pprint
+from datetime import datetime
from odoo import fields, models
@@ -12,15 +13,13 @@ class OnlineBankStatementPullWizard(models.TransientModel):
_name = "online.bank.statement.pull.wizard"
_description = "Online Bank Statement Pull Wizard"
- date_since = fields.Datetime(
- string="From",
- required=True,
- default=fields.Datetime.now,
- )
- date_until = fields.Datetime(
- string="To",
- required=True,
- default=fields.Datetime.now,
+ date_since = fields.Date(string="From", required=True, default=fields.Date.today)
+ date_until = fields.Date(string="To", required=True, default=fields.Date.today)
+ one_fetch = fields.Boolean(
+ string="One fetch",
+ help="If checked, retrieve the whole interval in only one request to the "
+ "provider. This is useful if the provider sets request limits.",
+ default=True,
)
def _get_provider(self):
@@ -35,10 +34,20 @@ def _get_provider(self):
provider = active_record
return provider
+ def _get_datetimes(self):
+ """Return the datetime values for the entered dates, including whole starting
+ and ending days.
+ """
+ self.ensure_one()
+ since = datetime.combine(self.date_since, datetime.min.time())
+ until = datetime.combine(self.date_until, datetime.max.time())
+ return since, until
+
def action_pull(self):
"""Pull statements from provider and then show list of statements."""
provider = self._get_provider()
- provider._pull(self.date_since, self.date_until)
+ since, until = self._get_datetimes()
+ provider._pull(since, until, one_fetch=self.one_fetch)
action = self.env.ref("account.action_bank_statement_tree").sudo().read([])[0]
action["domain"] = [("journal_id", "=", provider.journal_id.id)]
return action
@@ -46,10 +55,10 @@ def action_pull(self):
def action_debug(self):
"""Pull statements in debug and show result."""
provider = self._get_provider().with_context(
- active_test=False,
- account_statement_online_import_debug=True,
+ active_test=False, account_statement_online_import_debug=True
)
- data = provider._pull(self.date_since, self.date_until)
+ since, until = self._get_datetimes()
+ data = provider._pull(since, until, one_fetch=self.one_fetch)
wizard = self.env["online.bank.statement.pull.debug"].create(
{"data": pprint.pformat(data)}
)
diff --git a/account_statement_import_online/wizards/online_bank_statement_pull_wizard.xml b/account_statement_import_online/wizards/online_bank_statement_pull_wizard.xml
index e94b4f317..f5391809c 100644
--- a/account_statement_import_online/wizards/online_bank_statement_pull_wizard.xml
+++ b/account_statement_import_online/wizards/online_bank_statement_pull_wizard.xml
@@ -13,6 +13,7 @@
+