parent
cfd3790359
commit
a1692fd65c
|
@ -8,6 +8,7 @@ def register():
|
|||
Pool.register(
|
||||
sale.SaleLine,
|
||||
sale.SaleLineQuickActionSplit,
|
||||
sale.SaleLineQuickActionMove,
|
||||
module='sale_line_quick_actions', type_='model')
|
||||
Pool.register(
|
||||
sale.SaleLineQuickAction,
|
||||
|
|
24
locale/es.po
24
locale/es.po
|
@ -61,3 +61,27 @@ msgstr "Aceptar"
|
|||
msgctxt "wizard_button:sale.line.quick_action,split,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
msgctxt "wizard_button:sale.line.quick_action,split,do_move:"
|
||||
msgid "OK"
|
||||
msgstr "Aceptar"
|
||||
|
||||
msgctxt "wizard_button:sale.line.quick_action,move,end:"
|
||||
msgid "Cancel"
|
||||
msgstr "Cancelar"
|
||||
|
||||
msgctxt "model:ir.model.button,string:sale_line_move_wizard_button"
|
||||
msgid "Move"
|
||||
msgstr "Mover"
|
||||
|
||||
msgctxt "model:sale.line.quick_action.move,name:"
|
||||
msgid "Sale line quick action move"
|
||||
msgstr "Acción rápida mover línea de venta"
|
||||
|
||||
msgctxt "model:ir.action,name:wizard_quick_actions_move"
|
||||
msgid "Move"
|
||||
msgstr "Mover"
|
||||
|
||||
msgctxt "field:sale.line.quick_action.move,sale:"
|
||||
msgid "Sale"
|
||||
msgstr "Venta"
|
46
sale.py
46
sale.py
|
@ -6,7 +6,8 @@ from trytond.pyson import Eval
|
|||
from trytond.transaction import Transaction
|
||||
from trytond.wizard import Wizard, StateTransition, StateView, Button
|
||||
|
||||
__all__ = ['SaleLine', 'SaleLineQuickAction', 'SaleLineQuickActionSplit']
|
||||
__all__ = ['SaleLine', 'SaleLineQuickAction', 'SaleLineQuickActionSplit',
|
||||
'SaleLineQuickActionMove']
|
||||
|
||||
|
||||
class SaleLine(metaclass=PoolMeta):
|
||||
|
@ -23,6 +24,10 @@ class SaleLine(metaclass=PoolMeta):
|
|||
'split_wizard': {
|
||||
'invisible': Eval('sale_state') != 'draft',
|
||||
'depends': ['sale_state']
|
||||
},
|
||||
'move_wizard': {
|
||||
'invisible': Eval('sale_state') != 'draft',
|
||||
'depends': ['sale_state']
|
||||
}
|
||||
})
|
||||
|
||||
|
@ -77,6 +82,12 @@ class SaleLine(metaclass=PoolMeta):
|
|||
lines.extend(self.copy([self], remainders))
|
||||
return lines
|
||||
|
||||
@classmethod
|
||||
@ModelView.button_action(
|
||||
'sale_line_quick_actions.wizard_quick_actions_move')
|
||||
def move_wizard(cls, records):
|
||||
pass
|
||||
|
||||
|
||||
class SaleLineQuickActionSplit(ModelView):
|
||||
'''Sale line quick action split'''
|
||||
|
@ -101,6 +112,14 @@ class SaleLineQuickActionSplit(ModelView):
|
|||
return 2
|
||||
|
||||
|
||||
class SaleLineQuickActionMove(ModelView):
|
||||
'''Sale line quick action move'''
|
||||
__name__ = 'sale.line.quick_action.move'
|
||||
|
||||
sale = fields.Many2One('sale.sale', 'Sale', required=True,
|
||||
domain=[('state', '=', 'draft')])
|
||||
|
||||
|
||||
class SaleLineQuickAction(Wizard):
|
||||
'''Sale line quick action'''
|
||||
__name__ = 'sale.line.quick_action'
|
||||
|
@ -113,6 +132,12 @@ class SaleLineQuickAction(Wizard):
|
|||
Button('OK', 'do_split', default=True)]
|
||||
)
|
||||
do_split = StateTransition()
|
||||
move = StateView('sale.line.quick_action.move',
|
||||
'sale_line_quick_actions.line_move_view_form', [
|
||||
Button('Cancel', 'end'),
|
||||
Button('OK', 'do_move', default=True)]
|
||||
)
|
||||
do_move = StateTransition()
|
||||
|
||||
@classmethod
|
||||
def __setup__(cls):
|
||||
|
@ -137,12 +162,13 @@ class SaleLineQuickAction(Wizard):
|
|||
return {
|
||||
Modeldata.get_id(
|
||||
'sale_line_quick_actions',
|
||||
'wizard_quick_actions_copy'
|
||||
): 'duplicate',
|
||||
'wizard_quick_actions_copy'): 'duplicate',
|
||||
Modeldata.get_id(
|
||||
'sale_line_quick_actions',
|
||||
'wizard_quick_actions_split'
|
||||
): 'split'
|
||||
'wizard_quick_actions_split'): 'split',
|
||||
Modeldata.get_id(
|
||||
'sale_line_quick_actions',
|
||||
'wizard_quick_actions_move'): 'move'
|
||||
}
|
||||
|
||||
def transition_duplicate(self):
|
||||
|
@ -176,3 +202,13 @@ class SaleLineQuickAction(Wizard):
|
|||
|
||||
def _get_split_values(self):
|
||||
return {}
|
||||
|
||||
def transition_do_move(self):
|
||||
pool = Pool()
|
||||
SaleLine = pool.get('sale.line')
|
||||
sale_lines = SaleLine.browse(Transaction().context['active_ids'])
|
||||
SaleLine.copy(sale_lines, default={
|
||||
'sale': self.move.sale.id
|
||||
})
|
||||
SaleLine.delete(sale_lines)
|
||||
return 'end'
|
||||
|
|
27
sale.xml
27
sale.xml
|
@ -62,5 +62,32 @@
|
|||
<field name="button" ref="sale_line_split_wizard_button"/>
|
||||
<field name="group" ref="sale.group_sale"/>
|
||||
</record>
|
||||
|
||||
<!-- Move -->
|
||||
<record model="ir.action.wizard" id="wizard_quick_actions_move">
|
||||
<field name="name">Move</field>
|
||||
<field name="wiz_name">sale.line.quick_action</field>
|
||||
<field name="model">sale.line</field>
|
||||
</record>
|
||||
<record model="ir.action.keyword" id="act_sale_line_move_keyword">
|
||||
<field name="keyword">form_action</field>
|
||||
<field name="model">sale.line,-1</field>
|
||||
<field name="action" ref="wizard_quick_actions_move"/>
|
||||
</record>
|
||||
<record model="ir.ui.view" id="line_move_view_form">
|
||||
<field name="model">sale.line.quick_action.move</field>
|
||||
<field name="type">form</field>
|
||||
<field name="name">line_move_form</field>
|
||||
</record>
|
||||
<record model="ir.model.button" id="sale_line_move_wizard_button">
|
||||
<field name="name">move_wizard</field>
|
||||
<field name="string">Move</field>
|
||||
<field name="model" search="[('model', '=', 'sale.line')]"/>
|
||||
</record>
|
||||
<record model="ir.model.button-res.group"
|
||||
id="sale_line_move_wizard_button_group_sale">
|
||||
<field name="button" ref="sale_line_move_wizard_button"/>
|
||||
<field name="group" ref="sale.group_sale"/>
|
||||
</record>
|
||||
</data>
|
||||
</tryton>
|
|
@ -161,4 +161,23 @@ Check split method::
|
|||
4
|
||||
>>> line1, _, _, line4 = sale.lines
|
||||
>>> line1.quantity == line4.quantity == 1.0
|
||||
True
|
||||
True
|
||||
|
||||
Check move method::
|
||||
|
||||
>>> sale2 = Sale()
|
||||
>>> sale2.party = customer
|
||||
>>> sale2.payment_term = payment_term
|
||||
>>> sale2.save()
|
||||
>>> data, = Modeldata.find([
|
||||
... ('module', '=', 'sale_line_quick_actions'),
|
||||
... ('fs_id', '=', 'wizard_quick_actions_move')])
|
||||
>>> move_line = Wizard('sale.line.quick_action', [sale_line], action={'id': data.db_id})
|
||||
>>> move_line.form.sale = sale2
|
||||
>>> move_line.execute('do_move')
|
||||
>>> sale.reload()
|
||||
>>> len(sale.lines)
|
||||
3
|
||||
>>> sale2.reload()
|
||||
>>> len(sale2.lines)
|
||||
1
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0"?>
|
||||
<!-- The COPYRIGHT file at the top level of this repository contains the full
|
||||
copyright notices and license terms. -->
|
||||
<form>
|
||||
<label name="sale"/>
|
||||
<field name="sale"/>
|
||||
</form>
|
Loading…
Reference in New Issue