diff options
| author | Mqdd <ahmadmiqdad27@gmail.com> | 2026-01-14 17:01:56 +0700 |
|---|---|---|
| committer | Mqdd <ahmadmiqdad27@gmail.com> | 2026-01-14 17:01:56 +0700 |
| commit | f77738e0c20c01a544dc233c12c1233793b45180 (patch) | |
| tree | a41c3b06f11cd90b8f44f133f96b6ed48ea77faa | |
| parent | c57a8aa2bebecb5c196b08d98bd48ba886f60718 (diff) | |
<Miqdad> done temp
| -rw-r--r-- | indoteknik_custom/models/gudang_service.py | 93 | ||||
| -rw-r--r-- | indoteknik_custom/views/gudang_service.xml | 35 | ||||
| -rw-r--r-- | indoteknik_custom/views/ir_sequence.xml | 2 |
3 files changed, 113 insertions, 17 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') diff --git a/indoteknik_custom/views/gudang_service.xml b/indoteknik_custom/views/gudang_service.xml index 19ddcdc6..ada1291b 100644 --- a/indoteknik_custom/views/gudang_service.xml +++ b/indoteknik_custom/views/gudang_service.xml @@ -10,7 +10,8 @@ <field name="name"/> <field name="partner_id"/> <field name="origin"/> - <field name="picking_id"/> + <field name="remaining_date"/> + <!-- <field name="picking_id"/> --> </tree> </field> </record> @@ -20,16 +21,34 @@ <field name="model">gudang.service</field> <field name="arch" type="xml"> <form> + <header> + <button name="action_submit" string="Submit" type="object" + class="btn-primary" + attrs="{'invisible': [('state', 'in', ['cancel', 'done', 'onprogress'])]}"/> + <button name="action_done" string="Set Done" type="object" + class="btn-primary" + attrs="{'invisible': [('state', 'not in', ['onprogress'])]}"/> + <button name="action_cancel" string="Cancel" type="object" + class="btn-secondary" + attrs="{'invisible': [('state', 'in', ['cancel', 'done', 'draft'])]}"/> + <button name="action_draft" string="Set to Draft" type="object" + class="btn-secondary" + attrs="{'invisible': [('state', 'in', ['draft', 'done', 'onprogress'])]}"/> + <field name="state" widget="statusbar" readonly="1"/> + </header> <sheet> - <div class="oe_title"> - <h1> - <field name="name" readonly="1" class="oe_inline"/> - </h1> - </div> + <div class="oe_title"> + <h1> + <field name="name" readonly="1" class="oe_inline"/> + </h1> + </div> <group> <field name="origin"/> - <field name="picking_id"/> + <field name="partner_id"/> + <!-- <field name="picking_id"/> --> <field name="date"/> + <field name="remaining_date"/> + <field name="create_uid"/> </group> <notebook> <page string="Product Lines" name="product_lines"> @@ -37,7 +56,7 @@ <tree string="Product Lines" editable="top" create="0" delete="1"> <field name="product_id"/> <field name="quantity"/> - <field name="picking_id"/> + <!-- <field name="picking_id"/> --> </tree> </field> </page> diff --git a/indoteknik_custom/views/ir_sequence.xml b/indoteknik_custom/views/ir_sequence.xml index 246e3a13..55e48300 100644 --- a/indoteknik_custom/views/ir_sequence.xml +++ b/indoteknik_custom/views/ir_sequence.xml @@ -265,7 +265,7 @@ <field name="name">Gudang Service</field> <field name="code">gudang.service</field> <field name="prefix">MGS/%(year)s/%(month)s/</field> - <field name="padding">3</field> + <field name="padding">4</field> <field name="number_next">1</field> <field name="number_increment">1</field> </record> |
