summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models/sj_tele.py
diff options
context:
space:
mode:
authorIT Fixcomart <it@fixcomart.co.id>2025-09-16 09:09:47 +0000
committerIT Fixcomart <it@fixcomart.co.id>2025-09-16 09:09:47 +0000
commit07d8129d96f1e48838e27c33ad762673a04d465e (patch)
treeb3dc5f07488ddb86a60dc917ea5230680b04591e /indoteknik_custom/models/sj_tele.py
parent07a46fdbd16d72e60895d38047b6bb2e344dc18f (diff)
parentaf7fc5db50d7c3f78b70a2b75186db4b4c1f3674 (diff)
Merged in sj_tele (pull request #416)
Sj tele
Diffstat (limited to 'indoteknik_custom/models/sj_tele.py')
-rw-r--r--indoteknik_custom/models/sj_tele.py102
1 files changed, 102 insertions, 0 deletions
diff --git a/indoteknik_custom/models/sj_tele.py b/indoteknik_custom/models/sj_tele.py
new file mode 100644
index 00000000..029adcbe
--- /dev/null
+++ b/indoteknik_custom/models/sj_tele.py
@@ -0,0 +1,102 @@
+from odoo import models, fields, api
+from odoo.exceptions import UserError
+import requests
+import json
+import logging, subprocess
+import time
+from collections import OrderedDict
+
+_logger = logging.getLogger(__name__)
+
+class SjTele(models.Model):
+ _name = 'sj.tele'
+ _description = 'sj.tele'
+
+ picking_id = fields.Many2one('stock.picking', string='Picking')
+ sale_id = fields.Many2one('sale.order', string='Sales Order')
+ picking_name = fields.Char(string='Picking Name')
+ 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
+
+ def woi(self):
+ bot_mqdd = '8203414501:AAHy_XwiUAVrgRM2EJzW7sZx9npRLITZpb8'
+ chat_id_mqdd = '-4885333032'
+ api_base = f'https://api.telegram.org/bot{bot_mqdd}'
+
+ data = self.search([], order='create_date asc', limit=15)
+
+ if not data:
+ text = "Berikut merupakan nomor BU/OUT yang belum ada di Logbook SJ report:\n✅ tidak ada data (semua sudah tercatat)."
+ 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 (no data): %s", e)
+ return True
+
+
+ lines = []
+ groups = OrderedDict()
+
+ for rec in data:
+ name = rec.picking_name or (rec.picking_id.name if rec.picking_id else '')
+ pid = rec.picking_id.id if rec.picking_id else ''
+ so = rec.sale_id.name or rec.sale_name or ''
+ 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]
+ else:
+ date_header = '(Tidak ada tanggal kirim SJ)'
+
+ 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