summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models/sj_tele.py
diff options
context:
space:
mode:
Diffstat (limited to 'indoteknik_custom/models/sj_tele.py')
-rw-r--r--indoteknik_custom/models/sj_tele.py83
1 files changed, 43 insertions, 40 deletions
diff --git a/indoteknik_custom/models/sj_tele.py b/indoteknik_custom/models/sj_tele.py
index d44aa338..53ba26fc 100644
--- a/indoteknik_custom/models/sj_tele.py
+++ b/indoteknik_custom/models/sj_tele.py
@@ -18,42 +18,24 @@ class SjTele(models.Model):
sale_name = fields.Char(string='Sale Name')
create_date = fields.Datetime(string='Create Date')
date_doc_kirim = fields.Datetime(string='Tanggal Kirim SJ')
-
- # @api.model
- # def run_pentaho_carte(self):
- # carte = "http://127.0.0.1:8080"
- # job_kjb = r"C:/Users/Indoteknik/Desktop/tes.kjb"
- # params = {"job": job_kjb, "level": "Basic", "block": "Y"}
- # try:
- # r = requests.get(
- # f"{carte}/kettle/executeJob/",
- # params=params,
- # auth=("cluster", "cluster"),
- # timeout=900,
- # )
- # r.raise_for_status()
- # # kalau Carte mengembalikan <result>ERROR</result>, anggap gagal
- # if "<result>ERROR</result>" in r.text:
- # raise UserError(f"Carte error: {r.text}")
- # except Exception as e:
- # _logger.exception("Carte call failed: %s", e)
- # raise UserError(f"Gagal memanggil Carte: {e}")
-
- # time.sleep(3)
-
- # self.env['sj.tele'].sudo().woi()
-
- # return True
+ is_sent = fields.Boolean(default=False)
def woi(self):
bot_mqdd = '8203414501:AAHy_XwiUAVrgRM2EJzW7sZx9npRLITZpb8'
chat_id_mqdd = '-1003087280519'
api_base = f'https://api.telegram.org/bot{bot_mqdd}'
+ # bot_testing = '8306689189:AAHEFe5xwAkapoQ8xKoNZs-6gVfv3kO3kaU'
+ # chat_id_testing = '-4920864331'
+ # api_testing = f'https://api.telegram.org/bot{bot_testing}'
+
+ # Select Data
+ data = self.search([('is_sent', '=', False)], order='create_date asc')
- data = self.search([], order='create_date asc', limit=15)
+ # Old
+ # data = self.search([], order='create_date asc')
if not data:
- text = "Berikut merupakan nomor BU/OUT yang belum ada di Logbook SJ report:\nāœ… tidak ada data (semua sudah tercatat)."
+ text = "āœ… tidak ada data (semua sudah tercatat)."
try:
r = requests.post(api_base + "/sendMessage",
json={'chat_id': chat_id_mqdd, 'text': text},
@@ -74,7 +56,6 @@ class SjTele(models.Model):
dttm = (rec.picking_id.date_doc_kirim if (rec.picking_id and rec.picking_id.date_doc_kirim)
else getattr(rec, 'date_doc_kirim', None))
- # format header tanggal (string), tanpa konversi Waktu/WIB
if dttm:
date_header = dttm if isinstance(dttm, str) else fields.Datetime.to_string(dttm)
date_header = date_header[:10]
@@ -84,19 +65,41 @@ class SjTele(models.Model):
if name:
groups.setdefault(date_header, []).append(f"- ({pid}) - {name} - {so}")
- # build output berurutan per tanggal
for header_date, items in groups.items():
lines.append(header_date)
lines.extend(items)
-
header = "Berikut merupakan nomor BU/OUT yang belum ada di Logbook SJ report:\n"
- text = header + "\n".join(lines)
-
- try:
- r = requests.post(api_base + "/sendMessage",
- json={'chat_id': chat_id_mqdd, 'text': text})
- r.raise_for_status()
- except Exception as e:
- _logger.exception("Gagal kirim Telegram: %s", e)
- return True \ No newline at end of file
+ BUB = 20 # jumlah baris per bubble
+ total = (len(lines) + BUB - 1) // BUB # total bubble
+
+ for i in range(0, len(lines), BUB):
+ body = "\n".join(lines[i:i + BUB])
+ bagian = (i // BUB) + 1
+ text = f"{header}Lampiran ke {bagian}/{total}\n{body}"
+ try:
+ r = requests.post(
+ api_base + "/sendMessage",
+ json={'chat_id': chat_id_mqdd, 'text': text},
+ timeout=20
+ )
+ r.raise_for_status()
+ except Exception as e:
+ _logger.exception("Gagal kirim Telegram (batch %s-%s): %s", i + 1, min(i + BUB, len(lines)), e)
+ time.sleep(5) # jeda kecil biar rapi & aman rate limit
+
+ # Set sent = true ketika sudah terkirim
+ data.write({'is_sent': True})
+
+ return True
+
+ # header = "Berikut merupakan nomor BU/OUT yang belum ada di Logbook SJ report:\n"
+ # text = header + "\n".join(lines)
+ #
+ # try:
+ # r = requests.post(api_base + "/sendMessage",
+ # json={'chat_id': chat_id_mqdd, 'text': text})
+ # r.raise_for_status()
+ # except Exception as e:
+ # _logger.exception("Gagal kirim Telegram: %s", e)
+ # return True \ No newline at end of file