diff options
| author | Azka Nathan <darizkyfaz@gmail.com> | 2025-10-10 10:42:39 +0700 |
|---|---|---|
| committer | Azka Nathan <darizkyfaz@gmail.com> | 2025-10-10 10:42:39 +0700 |
| commit | fd3ce46f21aa78d9b9caa6ffdd1b9f61d89dfa65 (patch) | |
| tree | de54d6c23f1f86c217836ba3a3aebed0bd80c32a | |
| parent | 137e812a5d96e1d5a82ceffbdf6a0938358e4d07 (diff) | |
select all and unselect all
| -rw-r--r-- | indoteknik_custom/models/partial_delivery.py | 26 | ||||
| -rwxr-xr-x | indoteknik_custom/views/sale_order.xml | 45 |
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"/> |
