diff options
| author | Azka Nathan <darizkyfaz@gmail.com> | 2026-01-02 21:12:05 +0700 |
|---|---|---|
| committer | Azka Nathan <darizkyfaz@gmail.com> | 2026-01-02 21:12:05 +0700 |
| commit | 622dbf1f8fd2b6306b147cf27b17be8e017fd2e8 (patch) | |
| tree | 751a7e48cb12f1fabe748cba8c7bcad07da70023 | |
| parent | 96b1fcaace545021f446071bdd495ac810c0f5e7 (diff) | |
| parent | 87b38e373002bdc0ed224bf71762536c0a4d1d85 (diff) | |
Merge branch 'main' of bitbucket.org:altafixco/fixco-addons
# Conflicts:
# fixco_custom/models/stock_picking.py
# fixco_custom/views/stock_picking.xml
| -rw-r--r-- | fixco_custom/models/shipment_group.py | 43 | ||||
| -rwxr-xr-x | fixco_custom/models/stock_picking.py | 20 | ||||
| -rwxr-xr-x | fixco_custom/views/stock_picking.xml | 12 |
3 files changed, 65 insertions, 10 deletions
diff --git a/fixco_custom/models/shipment_group.py b/fixco_custom/models/shipment_group.py index 117de0b..2e2dffa 100644 --- a/fixco_custom/models/shipment_group.py +++ b/fixco_custom/models/shipment_group.py @@ -52,12 +52,26 @@ class ShipmentGroup(models.Model): raise UserError(f"Pickings berikut telah dibatalkan:{cancelled_names}") for picking_line in shipment.picking_lines: + if picking_line.picking_id: + # set shipment group ke stock.picking + picking_line.picking_id.write({ + 'shipment_group_id': shipment.id + }) + picking_line.picking_id.message_post( + body=_( + "📦 <b>Dispatched</b><br/>" + "Picking ini telah di-dispatch melalui " + "<b>Shipment Group %s</b>." + ) % shipment.number + ) + shipment_lines = self.env['shipment.group.line'].search([ ('shipment_id', '=', shipment.id), ('invoice_marketplace', '=', picking_line.invoice_marketplace), ('picking_id', '=', picking_line.picking_id.id) ]) + # reset product shipment picking_line.product_shipment_lines.unlink() for sl in shipment_lines: @@ -70,6 +84,35 @@ class ShipmentGroup(models.Model): 'order_reference': sl.order_reference, }) + + # def sync_product_to_picking_line(self): + # for shipment in self: + # cancelled_picking = shipment.picking_lines.filtered( + # lambda picking: picking.status == 'CANCELLED' + # ) + # if cancelled_picking: + # cancelled_names = "\n - " + "\n - ".join(cancelled_picking.mapped("name")) + # raise UserError(f"Pickings berikut telah dibatalkan:{cancelled_names}") + + # for picking_line in shipment.picking_lines: + # shipment_lines = self.env['shipment.group.line'].search([ + # ('shipment_id', '=', shipment.id), + # ('invoice_marketplace', '=', picking_line.invoice_marketplace), + # ('picking_id', '=', picking_line.picking_id.id) + # ]) + + # picking_line.product_shipment_lines.unlink() + + # for sl in shipment_lines: + # self.env['product.shipment.line'].create({ + # 'picking_line_id': picking_line.id, + # 'product_id': sl.product_id.id, + # 'carrier': sl.carrier or picking_line.carrier, + # 'invoice_marketplace': sl.invoice_marketplace, + # 'picking_id': sl.picking_id.id, + # 'order_reference': sl.order_reference, + # }) + def _compute_related_count(self): for record in self: record.related_count = len(record.picking_lines) diff --git a/fixco_custom/models/stock_picking.py b/fixco_custom/models/stock_picking.py index 21bdbf0..79a0665 100755 --- a/fixco_custom/models/stock_picking.py +++ b/fixco_custom/models/stock_picking.py @@ -65,6 +65,13 @@ class StockPicking(models.Model): soo_number = fields.Char(string='SOO Altama Number', related='purchase_id.soo_number') type_sku = fields.Selection([('single', 'Single SKU'), ('multi', 'Multi SKU')], string='Type SKU') list_product = fields.Char(string='List Product') + is_dispatched = fields.Boolean(string='Is Dispatched', default=False, compute='_compute_is_dispatched', readonly=True) + + @api.depends('shipment_group_id') + def _compute_is_dispatched(self): + for picking in self: + picking.is_dispatched = bool(picking.shipment_group_id) + def action_cancel_selected_pickings(self): for picking in self: @@ -86,21 +93,21 @@ class StockPicking(models.Model): self.ship_order() def create_invoices(self): - + so_id = self.sale_id.id if not so_id: raise UserError(_("Gaada So nya!")) - + sale_orders = self.env['sale.order'].browse(so_id) created_invoices = self.env['account.move'] - + for order in sale_orders: invoice = order.with_context(default_invoice_origin=order.name)._create_invoices(final=True) invoice.action_post() created_invoices += invoice - + order.invoice_ids += invoice - + if created_invoices: action = { 'name': _('Created Invoice'), @@ -111,7 +118,7 @@ class StockPicking(models.Model): } else: action = {'type': 'ir.actions.act_window_close'} - + return action def button_validate(self): @@ -122,6 +129,7 @@ class StockPicking(models.Model): if self.name.startswith('BU/INT') and self.picking_type_code == 'internal' and self.env.user.id not in [10,15,2] and self.location_dest_id.id == 86: raise UserError(_("Hanya bang rafly hanggara yang bisa validate")) + res = super(StockPicking, self).button_validate() # if self.name.startswith('BU/OUT') and self.origin.startswith('SO/'): diff --git a/fixco_custom/views/stock_picking.xml b/fixco_custom/views/stock_picking.xml index ec8b17d..b7fb001 100755 --- a/fixco_custom/views/stock_picking.xml +++ b/fixco_custom/views/stock_picking.xml @@ -13,6 +13,8 @@ <field name="type_sku" optional="hide"/> <field name="carrier" optional="hide"/> <field name="create_date" optional="hide"/> + <field name="shipment_group_id" optional="hide"/> + <field name="is_dispatched" optional="hide"/> </field> </field> </record> @@ -47,6 +49,8 @@ <field name="tracking_number" readonly="1"/> <field name="invoice_number" readonly="1"/> <field name="invoice_mp" readonly="1"/> + <field name="shipment_group_id" readonly="1"/> + <field name="is_dispatched" readonly="1"/> <field name="channel" readonly="1"/> <field name="ginee_task_id" readonly="1"/> <field name="pdf_label_url" readonly="1" widget="url"/> @@ -64,7 +68,7 @@ <field name="ginee_pickup_time_id" readonly="1"/> </group> </group> - + <field name="location_id" position="after"> <field name="carrier"/> <field name="shipment_group_id"/> @@ -90,7 +94,7 @@ filter_domain="['|', '|', ('name', 'ilike', self), ('origin', 'ilike', self), ('invoice_mp', 'ilike', self)]"/> </field> </field> - </record> + </record> <record id="stock_picking_shipment_group_ir_actions_server" model="ir.actions.server"> <field name="name">Shipment Group</field> @@ -99,7 +103,7 @@ <field name="state">code</field> <field name="code">action = records.open_form_shipment_group()</field> </record> - + <record id="stock_picking_print_picking_list_ir_actions_server" model="ir.actions.server"> <field name="name">Print Picking List</field> <field name="model_id" ref="stock.model_stock_picking"/> @@ -153,4 +157,4 @@ </data> -</odoo>
\ No newline at end of file +</odoo> |
