Skip to content

Commit

Permalink
[MIG] stock_batch_picking_ux: Migration to 16.0
Browse files Browse the repository at this point in the history
closes #405

Signed-off-by: Nicolas Mac Rouillon <nmr@adhoc.com.ar>
  • Loading branch information
bruno-zanotti authored and nicomacr committed Nov 8, 2023
1 parent 2fe0cca commit 4099827
Show file tree
Hide file tree
Showing 8 changed files with 27 additions and 109 deletions.
7 changes: 3 additions & 4 deletions stock_batch_picking_ux/__manifest__.py
Expand Up @@ -19,7 +19,7 @@
##############################################################################
{
'name': 'Stock Usability with Batch Picking and stock vouchers',
'version': "15.0.1.0.0",
'version': "16.0.1.0.0",
'category': 'Warehouse Management',
'sequence': 14,
'summary': '',
Expand All @@ -31,18 +31,17 @@
'depends': [
'stock_ux',
'stock_voucher',
'stock_picking_batch_extended',
'stock_picking_batch',
],
'data': [
'data/stock_batch_picking_data.xml',
'views/stock_batch_picking_views.xml',
'views/stock_move_line_views.xml',
'views/stock_picking_views.xml',
'report/batch_picking_list_data.xml',
],
'demo': [
],
'installable': False,
'installable': True,
'auto_install': True,
'application': False,
}
7 changes: 0 additions & 7 deletions stock_batch_picking_ux/data/stock_batch_picking_data.xml

This file was deleted.

2 changes: 1 addition & 1 deletion stock_batch_picking_ux/i18n/es.po
Expand Up @@ -93,7 +93,7 @@ msgstr "El número de comprobante de albarán debe ser único por partner"
#. module: stock_batch_picking_ux
#: model_terms:ir.ui.view,arch_db:stock_batch_picking_ux.stock_batch_picking_form
msgid "Process Operations"
msgstr "Operaciones del proceso"
msgstr "Procesar cantidades"

#. module: stock_batch_picking_ux
#: model:ir.model,name:stock_batch_picking_ux.model_stock_move_line
Expand Down
2 changes: 1 addition & 1 deletion stock_batch_picking_ux/i18n/es_CL.po
Expand Up @@ -88,7 +88,7 @@ msgstr ""
#. module: stock_batch_picking_ux
#: model_terms:ir.ui.view,arch_db:stock_batch_picking_ux.stock_batch_picking_form
msgid "Process Operations"
msgstr ""
msgstr "Procesar cantidades"

#. module: stock_batch_picking_ux
#: model:ir.model,name:stock_batch_picking_ux.model_stock_move_line
Expand Down
68 changes: 5 additions & 63 deletions stock_batch_picking_ux/models/stock_batch_picking.py
Expand Up @@ -10,35 +10,7 @@ class StockPickingBatch(models.Model):

_inherit = 'stock.picking.batch'

# operation_type = fields.Selection([
# ('incoming', 'Suppliers'),
# ('outgoing', 'Customers'),
# ('internal', 'Internal')],
# 'Type of Operation',
# required=True,
# )
# preferimos limitar por picking type para no confundir a los usuarios
# porque si no podrian imaginar que al seleccionar recepciones de distintos
# lugares van a estar recibiendo todo en una misma
picking_code = fields.Selection([
('incoming', 'Suppliers'),
('outgoing', 'Customers'),
('internal', 'Internal'),
],
'Type of Operation',
# related='picking_type_id.code',
# readonly=True,
required=True,
# el default sobre todo para que no necesitemos script de migracion
default='incoming',
states={'done': [('readonly', True)], 'cancel': [('readonly', True)]},
)
# picking_type_id = fields.Many2one(
# 'stock.picking.type',
# 'Picking Type',
# states={'done': [('readonly', True)], 'cancel': [('readonly', True)]},
# required=True,
# )
picking_type_code = fields.Selection(store=True)
partner_id = fields.Many2one(
'res.partner',
# por ahora lo hacemos requerido porque si no tenemos que hacer algun
Expand Down Expand Up @@ -71,13 +43,6 @@ class StockPickingBatch(models.Model):
related='picking_ids.vouchers',
)

# overwrite this because we need only takes the moves with are not cancel
@api.depends('picking_ids')
def _compute_move_lines(self):
for batch in self:
batch.move_lines = batch.picking_ids.mapped(
"move_lines").filtered(lambda x: x.state != 'cancel')

@api.depends('picking_ids')
def _compute_picking_type_data(self):
for rec in self:
Expand All @@ -88,24 +53,12 @@ def _compute_picking_type_data(self):
# este viene exigido desde la cia pero seguramente lo movamos a
# exigir desde picking type
# solo es requerido para outgoings
if rec.picking_code == 'outgoing':
if rec.picking_type_code == 'outgoing':
rec.restrict_number_package = any(
x.picking_type_id.restrict_number_package
for x in rec.picking_ids)
# TODO deberiamos ver como hacer para aceptar multiples numeros de remitos
# si llega a ser necesario
# voucher_ids = fields.One2many(
# 'stock.picking.voucher',
# 'batch_picking_id',
# 'Vouchers',
# copy=False
# )
# vouchers = fields.Char(
# compute='_compute_vouchers'
# )

# @api.onchange('picking_type_id', 'partner_id')
@api.onchange('picking_code', 'partner_id')
@api.onchange('picking_type_code', 'partner_id')
def changes_set_pickings(self):
# if we change type or partner reset pickings
self.picking_ids = False
Expand Down Expand Up @@ -157,7 +110,7 @@ def action_transfer(self):
rec.picking_ids.write({
'number_of_packages': rec.number_of_packages})

if rec.picking_code == 'incoming' and rec.voucher_number:
if rec.picking_type_code == 'incoming' and rec.voucher_number:
for picking in rec.active_picking_ids:
# agregamos esto para que no se asigne a los pickings
# que no se van a recibir ya que todavia no se limpiaron
Expand All @@ -170,7 +123,7 @@ def action_transfer(self):
'picking_id': picking.id,
'name': rec.voucher_number,
})
elif rec.picking_code != 'incoming':
elif rec.picking_type_code != 'incoming':
# llamamos al chequeo de stock voucher ya que este metodo
# termina usando do_transfer pero el chequeo se llama solo
# con do_new_transfer
Expand All @@ -192,14 +145,3 @@ def do_unreserve_picking(self):
pickings_todo = self.mapped('picking_ids')
self.write({'state': 'draft'})
pickings_todo.do_unreserve()

def action_done(self):
# limpiamos todos los pickings que no tienen cantidades hechas en lo moves
for rec in self:
picking_without_qty_done = self.env['stock.picking']
for picking in rec.picking_ids.filtered(lambda picking: picking.state not in ('cancel', 'done')):
if all([x.qty_done == 0.0 for x in picking.move_line_ids]):
# Check if we need to set some qty done.
picking_without_qty_done |= picking
rec.picking_ids -= picking_without_qty_done
return super(StockPickingBatch, self.with_context(picking_batches=self)).action_done()
2 changes: 1 addition & 1 deletion stock_batch_picking_ux/models/stock_picking.py
Expand Up @@ -32,7 +32,7 @@ def force_transfer(self, force_qty=True):

if force_qty:
for pack in pick.move_line_ids:
pack.qty_done = pack.product_uom_qty
pack.qty_done = pack.reserved_uom_qty
else:
if all(
float_is_zero(
Expand Down
46 changes: 15 additions & 31 deletions stock_batch_picking_ux/views/stock_batch_picking_views.xml
Expand Up @@ -4,17 +4,15 @@
<record model="ir.ui.view" id="stock_batch_picking_search">
<field name="name">stock.picking.batch.form</field>
<field name="model">stock.picking.batch</field>
<field name="inherit_id" ref="stock_picking_batch_extended.stock_batch_picking_search"/>
<field name="inherit_id" ref="stock_picking_batch.stock_picking_batch_filter"/>
<field name="arch" type="xml">
<field name="name" position="after">
<!-- al buscar por picking busca por nro de remto -->
<!-- Al buscar por picking busca por nro de remito -->
<field name="picking_ids"/>
<field name="picking_code"/>
<!-- <field name="picking_type_id"/> -->
<field name="picking_type_code"/>
</field>
<group>
<filter name="picking_code" string="Type of Operation" context="{'group_by':'picking_code'}"/>
<!-- <filter name="picking_type_id" string="Picking Type" context="{'group_by':'picking_type_id'}"/> -->
<filter name="picking_type_code" string="Type of Operation" context="{'group_by':'picking_type_code'}"/>
</group>
</field>
</record>
Expand All @@ -23,13 +21,11 @@
<record model="ir.ui.view" id="stock_batch_picking_tree">
<field name="name">stock.picking.batch.form</field>
<field name="model">stock.picking.batch</field>
<field name="inherit_id" ref="stock_picking_batch_extended.stock_batch_picking_tree"/>
<field name="inherit_id" ref="stock_picking_batch.stock_picking_batch_tree"/>
<field name="arch" type="xml">
<field name="name" position="after">
<field name="vouchers"/>
<!-- <field name="picking_type_id"/> -->
<field name="picking_code"/>
<!-- <field name="picking_ids"/> -->
<field name="picking_type_code"/>
</field>
</field>
</record>
Expand All @@ -38,13 +34,13 @@
<record model="ir.ui.view" id="stock_batch_picking_form">
<field name="name">stock.picking.batch.form</field>
<field name="model">stock.picking.batch</field>
<field name="inherit_id" ref="stock_picking_batch_extended.stock_batch_picking_form"/>
<field name="inherit_id" ref="stock_picking_batch.stock_picking_batch_form"/>
<field name="arch" type="xml">

<button name="action_assign" position="after">
<button name="do_unreserve_picking" string="Unreserve all"
type="object"
attrs="{'invisible': ['|',('use_oca_batch_validation', '!=', True),('state', 'not in', ['assigned', 'in_progress'])]}"/>
attrs="{'invisible': [('state', 'not in', ['assigned', 'in_progress'])]}"/>
</button>

<button name="action_cancel" position="attributes">
Expand All @@ -53,50 +49,38 @@
</button>

<field name="name" position="after">
<button name="add_picking_operation" class="oe_inline oe_right" type="object" string="Process Operations" attrs="{'invisible': [('state', 'in', ['cancel', 'done'])]}"/>
<button name="add_picking_operation" class="oe_highlight oe_inline oe_right" type="object" string="Procesar cantidades" attrs="{'invisible': [('state', 'in', ['draft', 'cancel', 'done'])]}"/>
</field>

<field name="user_id" position="before">
<field name="picking_code" invisible="1"/>
<field name="voucher_required" invisible="1"/>
<field name="picking_code"/>
<!-- <field name="picking_type_id"/> -->
<!-- al final lo sacamos porque ya lo estamos usando para otros tipos -->
<!-- como por ahora solo lo usamos para entrada lo restringimos -->
<field name="partner_id" context="{'res_partner_search_mode': picking_code == 'incoming' and 'supplier' or 'customer'}"/>
<field name="company_id" groups="base.group_multi_company" attrs="{'readonly': [('picking_ids', '!=', [])]}" force_save="1"/>
<field name="partner_id" context="{'res_partner_search_mode': picking_type_code == 'incoming' and 'supplier' or 'customer'}"/>
<!-- <field name="partner_id" context="{'search_default_supplier':1, 'default_supplier':1, 'default_customer':0}" domain="[('supplier','=',True)]"/> -->
<field name="voucher_number" attrs="{'invisible': [('picking_code','!=','incoming')], 'required': [('voucher_required','=',True)]}"/>
<field name="voucher_number" attrs="{'invisible': [('picking_type_code','!=','incoming')], 'required': [('voucher_required','=',True)]}"/>
<field name="number_of_packages"/>
<!-- <field name="voucher_ids" attrs="{'invisible': [('picking_type_code','!=','incoming')]}" widget="many2many_tags" context="{'default_batch_picking': id}" domain="[('id', '=', False)]" options="{'create':True, 'create_edit':True}}"/> -->
</field>

<field name="picking_ids" position="attributes">
<attribute name="context">{'show_print_button': 1}</attribute>
<attribute name="domain">[('company_id', '=', company_id), ('partner_id', '=', partner_id), ('picking_type_id.code', '=', picking_code), ('state', 'in', ('confirmed', 'partially_available', 'assigned'))]</attribute>
<attribute name="domain">[('company_id', '=', company_id), ('partner_id', '=', partner_id), ('picking_type_id.code', '=', picking_type_code), ('state', 'in', ('confirmed', 'partially_available', 'assigned'))]</attribute>
<!-- <attribute name="domain">[('partner_id', '=', partner_id), ('picking_type_id', '=', picking_type_id), ('state', 'in', ('confirmed', 'partially_available', 'assigned'))]</attribute> -->
</field>

<!-- TODO this should go on a PR to oca module -->
<field name="product_id" position="before">
<field name="origin"/>
</field>

<field name="package_id" position="before">
<field name="picking_id" readonly="1"/>
</field>

<field name="move_line_ids" position="attributes">
<attribute name="context">{'from_batch': True}</attribute>
</field>

<field name="move_lines" position="attributes">
<field name="move_ids" position="attributes">
<!-- usamos de vista tree la misma que se usan en los pickins y ademas mostramos el campo del picking -->
<attribute name="context">{'show_picking': True, 'tree_view_ref': 'stock.view_move_picking_tree'}</attribute>
</field>

<field name="qty_done" position="after">
<button name="set_all_done" string="Set all Done" type="object" icon="fa-check" attrs="{'invisible': ['|', ('lots_visible', '=', True), ('state', 'not in', ['confirmed', 'assigned', 'waiting', 'partially_available'])]}"/>
<field name="picking_type_id" position="after">
<button name="action_done" string="Set all Done" type="object" icon="fa-check" attrs="{'invisible': [('state', 'not in', ['confirmed', 'assigned', 'waiting', 'partially_available'])]}"/>
</field>
</field>
</record>
Expand Down
2 changes: 1 addition & 1 deletion stock_batch_picking_ux/views/stock_move_line_views.xml
Expand Up @@ -28,7 +28,7 @@
<attribute name="invisible">context.get('from_batch')</attribute>
</field>
<field name="qty_done" position="before">
<field name="product_uom_qty" readonly="1"/>
<field name="reserved_uom_qty" readonly="1"/>
</field>
</field>
</record>
Expand Down

0 comments on commit 4099827

Please sign in to comment.