summaryrefslogtreecommitdiff
path: root/indoteknik_custom/models
diff options
context:
space:
mode:
authorMqdd <ahmadmiqdad27@gmail.com>2026-01-14 17:01:56 +0700
committerMqdd <ahmadmiqdad27@gmail.com>2026-01-14 17:01:56 +0700
commitf77738e0c20c01a544dc233c12c1233793b45180 (patch)
treea41c3b06f11cd90b8f44f133f96b6ed48ea77faa /indoteknik_custom/models
parentc57a8aa2bebecb5c196b08d98bd48ba886f60718 (diff)
<Miqdad> done temp
Diffstat (limited to 'indoteknik_custom/models')
-rw-r--r--indoteknik_custom/models/gudang_service.py93
1 files changed, 85 insertions, 8 deletions
diff --git a/indoteknik_custom/models/gudang_service.py b/indoteknik_custom/models/gudang_service.py
index a84f5c8a..d9b32e91 100644
--- a/indoteknik_custom/models/gudang_service.py
+++ b/indoteknik_custom/models/gudang_service.py
@@ -12,26 +12,103 @@ class GudangService(models.Model):
name = fields.Char('Name', readonly=True)
partner_id = fields.Many2one('res.partner', string='Customer', readonly=True)
- origin = fields.Char(string='Origin SO')
- picking_id = fields.Many2one('stock.picking', string = 'Picking ID')
- # origin_so = fields.Many2one('sale.order', string='Origin SO', compute='_compute_origin_so')
+ origin = fields.Many2one('sale.order', string='Origin SO')
+ # picking_id = fields.Many2one('stock.picking', string = 'Picking ID')
date = fields.Datetime('Date', default=fields.Datetime.now, required=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')
+ state = fields.Selection([('draft', 'Draft'), ('onprogress', 'On Progress'),('done', 'Done'), ('cancel', 'Cancel')], default='draft')
+
+ def _compute_remaining_date(self):
+ if self.state in ['done', 'cancel', 'draft']:
+ return
+ for rec in self:
+ if rec.date:
+ rec.remaining_date = (datetime.now() - rec.date).days
+
+ def send_odoo_notification(self):
+ return {
+ 'type': 'ir.actions.act_window',
+ 'res_model': 'mail.message',
+ 'view_mode': 'form',
+ 'view_type': 'form',
+ 'res_id': self.message_ids[-1].id,
+ }
+
+ def action_submit(self):
+ self.state = 'onprogress'
+ # self.send_odoo_notification()
+
+ def action_done(self):
+ self.state = 'done'
+ # self.send_odoo_notification()
+
+ def action_draft(self):
+ """Reset to draft state"""
+ for record in self:
+ if record.state == 'cancel':
+ record.write({'state': 'draft'})
+ else:
+ raise UserError("Hanya record yang di-cancel yang bisa dikembalikan ke draft")
+ def action_cancel(self):
+ self.state = 'cancel'
+
+ # def write(vals, self):
+ # self.send_odoo_notification()
+ # return super(GudangService, self).write(vals)
+
+ @api.depends('date')
+ def _compute_remaining_date(self):
+ for rec in self:
+ if rec.date:
+ rec.remaining_date = (datetime.now() - rec.date).days
@api.model
def create(self, vals):
if not vals.get('name') or vals['name'] == 'New':
vals['name'] = self.env['ir.sequence'].next_by_code('gudang.service')
+
+ if vals.get('origin') and not vals.get('partner_id'):
+ so = self.env['sale.order'].browse(vals['origin'])
+ vals['partner_id'] = so.partner_id.id
+
return super(GudangService, self).create(vals)
+
+ def write(self, vals):
+ if vals.get('origin'):
+ so = self.env['sale.order'].browse(vals['origin'])
+ vals['partner_id'] = so.partner_id.id
+
+ return super(GudangService, self).write(vals)
+
+
+
+ @api.onchange('origin')
+ def _onchange_origin(self):
+ if not self.origin:
+ self.gudang_service_lines = [(5, 0, 0)]
+ return
+
+ self.partner_id = self.origin.partner_id
+
+ lines = []
+ for line in self.origin.order_line:
+ lines.append((0, 0, {
+ 'product_id': line.product_id.id,
+ 'quantity': line.product_uom_qty,
+ 'origin_so': self.origin.id,
+ }))
+
+ # hapus line lama lalu isi baru
+ self.gudang_service_lines = [(5, 0, 0)] + lines
+
class GudangServiceLine(models.Model):
_name = "gudang.service.line"
- _description = "Gudang Service Line"
- _inherit = ['mail.thread', 'mail.activity.mixin']
product_id = fields.Many2one('product.product', string='Product')
quantity = fields.Float(string='Quantity')
- picking_id = fields.Many2one('stock.picking', string = 'Nomor Picking')
- # origin_so = fields.Many2one('sale.order', string='Origin SO', compute='_compute_origin_so')
- gudang_service_id = fields.Many2one('gudang.service', string='Gudang Service ID') \ No newline at end of file
+ # picking_id = fields.Many2one('stock.picking', string='Nomor Picking')
+ origin_so = fields.Many2one('sale.order', string='Origin SO')
+ gudang_service_id = fields.Many2one('gudang.service', string='Gudang Service ID')