Skip to content

Commit fae9d48

Browse files
ref cron
1 parent f4880d4 commit fae9d48

File tree

2 files changed

+18
-6
lines changed

2 files changed

+18
-6
lines changed

l10n_br_fiscal_dfe/data/ir_cron.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<field name="code">model._cron_search_documents()</field>
1212
<field name="user_id" ref="base.user_root" />
1313
<field name="interval_number">1</field>
14-
<field name="interval_type">days</field>
14+
<field name="interval_type">hours</field>
1515
<field name="numbercall">-1</field>
1616
<field name="active" eval="False" />
1717
</record>

l10n_br_fiscal_dfe/models/dfe_monitor.py

+17-5
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# License AGPL-3 or later (http://www.gnu.org/licenses/agpl)
33

44
import re
5-
from datetime import datetime
5+
from datetime import datetime, timedelta
66

77
from erpbrasil.transmissao import TransmissaoSOAP
88
from lxml import objectify
@@ -37,6 +37,8 @@ class DFeMonitor(models.Model):
3737

3838
last_nsu = fields.Char(related="company_id.last_nsu", readonly=False)
3939

40+
max_nsu = fields.Char(readonly=True)
41+
4042
last_query = fields.Datetime(string="Last query")
4143

4244
use_cron = fields.Boolean(
@@ -109,10 +111,17 @@ def _document_distribution(self):
109111
if self.last_nsu and self.last_nsu.isdigit()
110112
else "000000000000000"
111113
)
112-
maxNSU = ""
114+
maxNSU = self.max_nsu or ""
115+
if last_nsu == maxNSU:
116+
last_query = self.last_query or fields.Datetime.now()
117+
time_difference = fields.Datetime.now() - last_query
118+
if time_difference < timedelta(hours=1):
119+
self.message_post(body=_("Waiting 1 hour before making a new request."))
120+
return
121+
113122
last_query = fields.Datetime.now()
114123

115-
while maxNSU != last_nsu:
124+
while True:
116125
try:
117126
result = self._get_processor().consultar_distribuicao(
118127
cnpj_cpf=re.sub("[^0-9]", "", self.company_id.cnpj_cpf),
@@ -125,18 +134,21 @@ def _document_distribution(self):
125134
break
126135

127136
last_nsu = result.resposta.ultNSU
128-
last_query = fields.Datetime.now()
137+
if not maxNSU:
138+
maxNSU = result.resposta.maxNSU
129139

130140
if not self.validate_distribution_response(result):
131141
break
132142

133143
self._process_distribution(result)
144+
if last_nsu == maxNSU:
145+
break
134146

135-
maxNSU = result.resposta.maxNSU
136147
self.write(
137148
{
138149
"last_nsu": last_nsu,
139150
"last_query": last_query,
151+
"max_nsu": maxNSU,
140152
}
141153
)
142154

0 commit comments

Comments
 (0)