summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2025-10-10 10:42:39 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2025-10-10 10:42:39 +0700
commitfd3ce46f21aa78d9b9caa6ffdd1b9f61d89dfa65 (patch)
treede54d6c23f1f86c217836ba3a3aebed0bd80c32a
parent137e812a5d96e1d5a82ceffbdf6a0938358e4d07 (diff)
select all and unselect all
-rw-r--r--indoteknik_custom/models/partial_delivery.py26
-rwxr-xr-xindoteknik_custom/views/sale_order.xml45
2 files changed, 52 insertions, 19 deletions
diff --git a/indoteknik_custom/models/partial_delivery.py b/indoteknik_custom/models/partial_delivery.py
index c9b188ea..1204089b 100644
--- a/indoteknik_custom/models/partial_delivery.py
+++ b/indoteknik_custom/models/partial_delivery.py
@@ -41,6 +41,32 @@ class PartialDeliveryWizard(models.TransientModel):
# res['line_ids'] = lines
# return res
+ def action_select_all(self):
+ for line in self.line_ids:
+ line.selected = True
+ # return action supaya wizard gak nutup
+ return {
+ 'type': 'ir.actions.act_window',
+ 'res_model': self._name,
+ 'view_mode': 'form',
+ 'res_id': self.id,
+ 'target': 'new',
+ }
+
+ def action_unselect_all(self):
+ for line in self.line_ids:
+ line.selected = False
+ # juga reload biar tetap di wizard
+ return {
+ 'type': 'ir.actions.act_window',
+ 'res_model': self._name,
+ 'view_mode': 'form',
+ 'res_id': self.id,
+ 'target': 'new',
+ }
+
+
+
@api.onchange('picking_id')
def _onchange_picking_id(self):
"""Generate lines whenever picking_id is changed"""
diff --git a/indoteknik_custom/views/sale_order.xml b/indoteknik_custom/views/sale_order.xml
index 9620bf50..82daa36f 100755
--- a/indoteknik_custom/views/sale_order.xml
+++ b/indoteknik_custom/views/sale_order.xml
@@ -516,33 +516,40 @@
<field name="name">partial.delivery.wizard.form</field>
<field name="model">partial.delivery.wizard</field>
<field name="arch" type="xml">
- <form string="Partial Delivery">
- <sheet>
- <group>
- <field name="sale_id" invisible="1"/>
- <field name="picking_ids" invisible="1"/>
- <field name="picking_id" options="{'no_create': True, 'no_create_edit': True}" />
- <field name="line_ids" options="{'no_create': True, 'no_create_edit': True}">
- <tree editable="bottom">
- <field name="selected"/>
- <field name="product_id" readonly="1" force_save="1"/>
- <field name="move_id" readonly="1" force_save="1"/>
- <field name="ordered_qty"/>
- <field name="reserved_qty" readonly="1" force_save="1"/>
- <field name="selected_qty" invisible="0"/>
- </tree>
- </field>
- </group>
- </sheet>
+ <form string="Partial Delivery Wizard">
+ <group>
+ <!-- Field ini WAJIB ada walau invisible -->
+ <field name="picking_ids" invisible="1"/>
+
+ <field name="picking_id"/>
+ </group>
+
+ <separator string="Products"/>
+ <div class="oe_button_box" name="select_all_box">
+ <button name="action_select_all" string="✅ Select All" type="object" class="btn-primary"/>
+ <button name="action_unselect_all" string="❌ Unselect All" type="object" class="btn-secondary"/>
+ </div>
+
+ <field name="line_ids" context="{'default_wizard_id': active_id}" widget="many2many">
+ <tree editable="bottom">
+ <field name="selected"/>
+ <field name="product_id"/>
+ <field name="ordered_qty" readonly="1"/>
+ <field name="reserved_qty" readonly="1"/>
+ <field name="selected_qty"/>
+ </tree>
+ </field>
+
<footer>
<button string="Confirm" type="object" name="action_confirm_partial_delivery" class="btn-primary"/>
- <button string="Cancel" special="cancel"/>
+ <button string="Cancel" class="btn-secondary" special="cancel"/>
</footer>
</form>
</field>
</record>
+
<record id="sale_order_multi_update_ir_actions_server" model="ir.actions.server">
<field name="name">Mark As Cancel</field>
<field name="model_id" ref="sale.model_sale_order"/>