From bbffc7f7092ad28994d511b3b7022e55b07ec2a8 Mon Sep 17 00:00:00 2001 From: Mqdd Date: Mon, 19 Jan 2026 22:25:00 +0700 Subject: revisi date --- indoteknik_custom/models/gudang_service.py | 55 +++++++++++++++++++----------- indoteknik_custom/views/gudang_service.xml | 31 +++++++++-------- 2 files changed, 51 insertions(+), 35 deletions(-) diff --git a/indoteknik_custom/models/gudang_service.py b/indoteknik_custom/models/gudang_service.py index 0cdee5af..e401a65c 100644 --- a/indoteknik_custom/models/gudang_service.py +++ b/indoteknik_custom/models/gudang_service.py @@ -15,7 +15,18 @@ class GudangService(models.Model): partner_id = fields.Many2one('res.partner', string='Customer', readonly=True) origin = fields.Many2one('sale.order', string='Origin SO', required=True) # picking_id = fields.Many2one('stock.picking', string = 'Picking ID', domain="[('sale_id', '=', origin)]") - date = fields.Datetime('Date', default=fields.Datetime.now, tracking=True, copy=False) + schedule_date = fields.Date( + string="Schedule Date", + required=True, + tracking=True + ) + + start_date = fields.Datetime( + string="Date Processed", + copy=False, + tracking=True + ) + done_date = fields.Datetime(string='Date Done', copy=False, tracking=True) gudang_service_lines = fields.One2many('gudang.service.line', 'gudang_service_id', string='Gudang Service Lines') remaining_date = fields.Char('Remaining Date', compute='_compute_remaining_date') @@ -67,9 +78,9 @@ class GudangService(models.Model): 'user_id': user.id, 'summary': 'Gudang Service On Progress', 'note': _( - 'Gudang Service %s masih On Progress sejak %s' - ) % (rec.name, rec.date), - 'date_deadline': fields.Date.today(), + 'Ada Jadwal Service Barang di Document %s Jadwal Service 📅 %s' + ) % (rec.name, rec.schedule_date), + # 'date_deadline': fields.Date.today(), }) # kirim ke private message odoo @@ -77,7 +88,7 @@ class GudangService(models.Model): if not channel: continue res = self.env['mail.channel'].browse(channel) - res.with_user(self.env.user.browse(25)).message_post(body=_('Gudang Service %s masih On Progress sejak %s') % (rec.name, rec.date), message_type='comment', subtype_xmlid='mail.mt_comment') + res.with_user(self.env.user.browse(25)).message_post(body=_('Ada Jadwal Service Barang di Document %s Jadwal Service 📅 %s') % (rec.name, rec.schedule_date), message_type='comment', subtype_xmlid='mail.mt_comment') @api.model def cron_notify_onprogress_gudang_service(self): @@ -89,30 +100,32 @@ class GudangService(models.Model): records._send_logistic_notification() - @api.depends('date', 'state', 'done_date') + @api.depends('start_date', 'done_date', 'state') def _compute_remaining_date(self): today = fields.Date.today() + for rec in self: - if not rec.date: - rec.remaining_date = 0 + if not rec.start_date: + rec.remaining_date = "-" continue - if rec.state in ['draft', 'cancel']: - rec.remaining_date = 0 - continue + start = rec.start_date.date() if rec.state == 'done' and rec.done_date: - days = (rec.done_date.date() - rec.date.date()).days - rec.remaining_date = "Since %s days" % days - continue + end = rec.done_date.date() + else: + end = today + + days = (end - start).days + rec.remaining_date = _("Since %s days") % days - rec.remaining_date = (today - rec.date.date()).days def action_submit(self): for rec in self: rec.state = 'onprogress' - rec.date = fields.Datetime.now() + rec.start_date = fields.Datetime.now() + # rec.date = fields.Datetime.now() def action_done(self): for rec in self: @@ -146,13 +159,14 @@ class GudangService(models.Model): raise UserError("You cannot cancel a done record") if not rec.cancel_reason: raise UserError("Cancel Reason must be filled") + rec.start_date = False + rec.done_date = False rec.state = 'cancel' @api.model def create(self, vals): # Send notification - self._send_logistic_notification() if not vals.get('name') or vals['name'] == 'New': vals['name'] = self.env['ir.sequence'].next_by_code('gudang.service') @@ -160,7 +174,10 @@ class GudangService(models.Model): so = self.env['sale.order'].browse(vals['origin']) vals['partner_id'] = so.partner_id.id - return super(GudangService, self).create(vals) + res = super(GudangService, self).create(vals) + # Send notification + res._send_logistic_notification() + return res def write(self, vals): if vals.get('origin'): @@ -169,8 +186,6 @@ class GudangService(models.Model): return super(GudangService, self).write(vals) - - @api.onchange('origin') def _onchange_origin(self): if not self.origin: diff --git a/indoteknik_custom/views/gudang_service.xml b/indoteknik_custom/views/gudang_service.xml index 9818825b..42674585 100644 --- a/indoteknik_custom/views/gudang_service.xml +++ b/indoteknik_custom/views/gudang_service.xml @@ -18,7 +18,8 @@ - + + @@ -34,7 +35,7 @@
-