summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models
diff options
context:
space:
mode:
Diffstat (limited to 'indoteknik_custom/models')
-rw-r--r--indoteknik_custom/models/gudang_service.py44
1 files changed, 30 insertions, 14 deletions
diff --git a/indoteknik_custom/models/gudang_service.py b/indoteknik_custom/models/gudang_service.py
index 585563ca..2fe239ad 100644
--- a/indoteknik_custom/models/gudang_service.py
+++ b/indoteknik_custom/models/gudang_service.py
@@ -9,12 +9,14 @@ class GudangService(models.Model):
_name = "gudang.service"
_description = "Gudang Service"
_inherit = ['mail.thread', 'mail.activity.mixin']
+ _order = 'remaining_date desc, id asc'
name = fields.Char('Name', readonly=True)
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, required=True)
+ done_date = fields.Datetime(string='Date Done', copy=False)
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')
state = fields.Selection([('draft', 'Draft'), ('onprogress', 'On Progress'),('done', 'Done'), ('cancel', 'Cancel')], default='draft')
@@ -71,38 +73,52 @@ class GudangService(models.Model):
records._send_logistic_notification()
- @api.depends('date', 'state')
+ @api.depends('date', 'state', 'done_date')
def _compute_remaining_date(self):
today = fields.Date.today()
for rec in self:
- if rec.state in ['done', 'cancel', 'draft'] or not rec.date:
+ if not rec.date:
rec.remaining_date = 0
continue
+
+ if rec.state in ['draft', 'cancel']:
+ rec.remaining_date = 0
+ continue
+
+ if rec.state == 'done' and rec.done_date:
+ rec.remaining_date = (rec.done_date.date() - rec.date.date()).days
+ continue
+
rec.remaining_date = (today - rec.date.date()).days
+
def action_submit(self):
- self.state = 'onprogress'
+ for rec in self:
+ rec.state = 'onprogress'
+ rec.date = fields.Datetime.now()
self._send_logistic_notification
- # self.send_odoo_notification()
def action_done(self):
- self.state = 'done'
- # self.send_odoo_notification()
+ for rec in self:
+ rec.state = 'done'
+ if not rec.done_date:
+ rec.done_date = fields.Datetime.now()
def action_draft(self):
"""Reset to draft state"""
- for record in self:
- if record.state == 'cancel':
- record.write({'state': 'draft'})
+ for rec in self:
+ if rec.state == 'cancel':
+ rec.write({'state': 'draft'})
else:
raise UserError("Only Canceled Record Can Be Reset To Draft")
def action_cancel(self):
- if self.state == 'done':
- raise UserError("You cannot cancel a done record")
- if not self.cancel_reason:
- raise UserError("Cancel Reason must be filled")
- self.state = 'cancel'
+ for rec in self:
+ if rec.state == 'done':
+ raise UserError("You cannot cancel a done record")
+ if not rec.cancel_reason:
+ raise UserError("Cancel Reason must be filled")
+ rec.state = 'cancel'
# def write(vals, self):
# self.send_odoo_notification()