summaryrefslogtreecommitdiff
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
parentc57a8aa2bebecb5c196b08d98bd48ba886f60718 (diff)
<Miqdad> done temp
-rw-r--r--indoteknik_custom/models/gudang_service.py93
-rw-r--r--indoteknik_custom/views/gudang_service.xml35
-rw-r--r--indoteknik_custom/views/ir_sequence.xml2
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>