summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2025-03-27 14:38:57 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2025-03-27 14:38:57 +0700
commite926482af5f2b95ff465445215c77161223ee671 (patch)
tree3005696f1fb0857930f09e5c0eca4063e35b2e76
parentdb3ff0677f9c6ddd0f04ebcf3e9c780045259f73 (diff)
push
-rw-r--r--indoteknik_custom/models/mrp_production.py11
-rwxr-xr-xindoteknik_custom/models/purchase_order.py17
-rw-r--r--indoteknik_custom/models/purchasing_job.py10
-rw-r--r--indoteknik_custom/models/purchasing_job_state.py3
-rw-r--r--indoteknik_custom/models/stock_move.py4
-rw-r--r--indoteknik_custom/views/mrp_production.xml9
-rwxr-xr-xindoteknik_custom/views/purchase_order.xml1
-rw-r--r--indoteknik_custom/views/purchasing_job.xml1
8 files changed, 36 insertions, 20 deletions
diff --git a/indoteknik_custom/models/mrp_production.py b/indoteknik_custom/models/mrp_production.py
index 0e17fda9..561f5b3c 100644
--- a/indoteknik_custom/models/mrp_production.py
+++ b/indoteknik_custom/models/mrp_production.py
@@ -9,19 +9,11 @@ class MrpProduction(models.Model):
_inherit = 'mrp.production'
desc = fields.Text(string='Description')
- status = fields.Selection([('pending', 'Pending'), ('approved', 'Approved'), ('reject', 'Reject')], string='Status', default='pending', tracking=3)
production_purchase_match = fields.One2many('production.purchase.match', 'production_id', string='Purchase Matches', auto_join=True)
- def action_approve(self):
- if self.env.user.has_group('indoteknik_custom.group_role_merchandiser') and self.status == 'pending':
- self.status = 'approved'
-
- def action_reject(self):
- if self.env.user.has_group('indoteknik_custom.group_role_merchandiser') and self.status == 'pending':
- self.status = 'reject'
def create_po_from_manufacturing(self):
- if not self.status == 'approved':
+ if not self.state == 'confirmed':
raise UserError('Harus Di Approve oleh Merchandiser')
if not self.move_raw_ids:
@@ -63,6 +55,7 @@ class MrpProduction(models.Model):
'company_id': 1, # indoteknik dotcom gemilang
'picking_type_id': 28, # indoteknik bandengan receipts
'date_order': current_time,
+ 'product_bom_id': self.product_id.id,
# 'sale_order_id': self.sale_order_id.id,
'note_description': 'from Manufacturing Order'
}
diff --git a/indoteknik_custom/models/purchase_order.py b/indoteknik_custom/models/purchase_order.py
index d90c4a8a..b107f389 100755
--- a/indoteknik_custom/models/purchase_order.py
+++ b/indoteknik_custom/models/purchase_order.py
@@ -74,6 +74,7 @@ class PurchaseOrder(models.Model):
date_done_picking = fields.Datetime(string='Date Done Picking', compute='get_date_done')
bills_dp_id = fields.Many2one('account.move', string='Bills DP')
bills_pelunasan_id = fields.Many2one('account.move', string='Bills Pelunasan')
+ product_bom_id = fields.Many2one('product.product', string='Product Bom')
grand_total = fields.Monetary(string='Grand Total', help='Amount total + amount delivery', compute='_compute_grand_total')
total_margin_match = fields.Float(string='Total Margin Match', compute='_compute_total_margin_match')
approve_by = fields.Many2one('res.users', string='Approve By')
@@ -726,9 +727,25 @@ class PurchaseOrder(models.Model):
self.unlink_purchasing_job_state()
self._check_qty_plafon_product()
+ if self.product_bom_id:
+ self._remove_product_bom()
return res
+ def _remove_product_bom(self):
+ pj = self.env['v.purchasing.job'].search([
+ ('product_id', '=', self.product_bom_id.id)
+ ])
+
+ if pj:
+ pj_state = self.env['purchasing.job.state'].search([
+ ('purchasing_job_id', '=', pj.id)
+ ])
+
+ if pj_state:
+ pj_state.note = 'Product BOM Sudah Di PO'
+ pj_state.date_po = datetime.utcnow()
+
def check_ppn_mix(self):
reference_taxes = self.order_line[0].taxes_id
diff --git a/indoteknik_custom/models/purchasing_job.py b/indoteknik_custom/models/purchasing_job.py
index 902bc34b..862e72c7 100644
--- a/indoteknik_custom/models/purchasing_job.py
+++ b/indoteknik_custom/models/purchasing_job.py
@@ -25,6 +25,15 @@ class PurchasingJob(models.Model):
], string='APO?')
purchase_representative_id = fields.Many2one('res.users', string="Purchase Representative", readonly=True)
note = fields.Char(string="Note Detail")
+ date_po = fields.Datetime(string='Date PO', copy=False)
+
+ def unlink(self):
+ # Example: Delete related records from the underlying model
+ underlying_records = self.env['purchasing.job'].search([
+ ('product_id', 'in', self.mapped('product_id').ids)
+ ])
+ underlying_records.unlink()
+ return super(PurchasingJob, self).unlink()
def redirect_to_pjs(self):
states = self.env['purchasing.job.state'].search([
@@ -56,6 +65,7 @@ class PurchasingJob(models.Model):
pmp.action,
max(pjs.status_apo::text) AS status_apo,
max(pjs.note::text) AS note,
+ max(pjs.date_po::text) AS date_po,
CASE
WHEN pmp.brand IN ('Tekiro', 'RYU', 'Rexco') THEN 27
WHEN sub.vendor_id = 9688 THEN 397
diff --git a/indoteknik_custom/models/purchasing_job_state.py b/indoteknik_custom/models/purchasing_job_state.py
index 1838a496..d014edfe 100644
--- a/indoteknik_custom/models/purchasing_job_state.py
+++ b/indoteknik_custom/models/purchasing_job_state.py
@@ -14,4 +14,5 @@ class PurchasingJobState(models.Model):
('not_apo', 'Belum APO'),
('apo', 'APO')
], string='APO?', copy=False)
- note = fields.Char(string="Note Detail")
+ note = fields.Char(string="Note Detail", copy=False)
+ date_po = fields.Datetime(string='Date PO', copy=False)
diff --git a/indoteknik_custom/models/stock_move.py b/indoteknik_custom/models/stock_move.py
index b5fc782e..87b1c94e 100644
--- a/indoteknik_custom/models/stock_move.py
+++ b/indoteknik_custom/models/stock_move.py
@@ -15,8 +15,8 @@ class StockMove(models.Model):
barcode = fields.Char(string='Barcode', related='product_id.barcode')
vendor_id = fields.Many2one('res.partner' ,string='Vendor')
- @api.onchange('product_id')
- def onchange_product_to_fill_vendor(self):
+ @api.constrains('product_id')
+ def constrains_product_to_fill_vendor(self):
if self.product_id:
if self.product_id.x_manufacture.override_vendor_id:
self.vendor_id = self.product_id.x_manufacture.override_vendor_id.id
diff --git a/indoteknik_custom/views/mrp_production.xml b/indoteknik_custom/views/mrp_production.xml
index a28cdff8..e639b988 100644
--- a/indoteknik_custom/views/mrp_production.xml
+++ b/indoteknik_custom/views/mrp_production.xml
@@ -6,17 +6,10 @@
<field name="inherit_id" ref="mrp.mrp_production_form_view" />
<field name="arch" type="xml">
<button name="button_mark_done" position="after">
- <button name="action_approve" type="object" string="Approve" attrs="{'invisible': [('status', '!=', 'pending')]}"/>
- </button>
- <button name="button_mark_done" position="after">
- <button name="action_reject" type="object" string="Reject" attrs="{'invisible': [('status', '!=', 'pending')]}"/>
- </button>
- <button name="button_mark_done" position="after">
- <button name="create_po_from_manufacturing" type="object" string="Create PO" class="oe_highlight" attrs="{'invisible': [('status', '!=', 'approved')]}"/>
+ <button name="create_po_from_manufacturing" type="object" string="Create PO" class="oe_highlight" attrs="{'invisible': [('state', '!=', 'confirmed')]}"/>
</button>
<field name="bom_id" position="after">
<field name="desc"/>
- <field name="status"/>
</field>
<xpath expr="//form/sheet/notebook/page/field[@name='move_raw_ids']/tree/field[@name='product_uom_qty']" position="before">
<field name="vendor_id"/>
diff --git a/indoteknik_custom/views/purchase_order.xml b/indoteknik_custom/views/purchase_order.xml
index 36c0db13..d6ad2408 100755
--- a/indoteknik_custom/views/purchase_order.xml
+++ b/indoteknik_custom/views/purchase_order.xml
@@ -65,6 +65,7 @@
<field name="payment_term_id"/>
<field name="total_cost_service" attrs="{'required': [('partner_id', 'in', [9688, 29712])]}"/>
<field name="total_delivery_amt" attrs="{'required': [('partner_id', 'in', [9688, 29712])]}"/>
+ <field name="product_bom_id"/>
</field>
<field name="amount_total" position="after">
<field name="total_margin"/>
diff --git a/indoteknik_custom/views/purchasing_job.xml b/indoteknik_custom/views/purchasing_job.xml
index 16f1bedd..bb1c7643 100644
--- a/indoteknik_custom/views/purchasing_job.xml
+++ b/indoteknik_custom/views/purchasing_job.xml
@@ -17,6 +17,7 @@
<field name="status_apo" invisible="1"/>
<field name="action"/>
<field name="note"/>
+ <field name="date_po"/>
</tree>
</field>
</record>