Compare commits

..

2 commits

Author SHA1 Message Date
snt
3cc04fb825 Arregla retornos y salidas de depósitos en onchange. 2024-09-18 17:09:51 +02:00
snt
8f306a2237 renombrado 2024-09-15 16:51:31 +02:00
8 changed files with 56 additions and 36 deletions

View file

@ -29,47 +29,52 @@ class Picking(models.Model):
return super().create(vals) return super().create(vals)
def write(self, vals): def write(self, vals):
if vals.get('picking_type_id'): if vals.get("picking_type_id"):
picking_type = self.env['stock.picking.type'].browse(vals.get('picking_type_id')) picking_type = self.env["stock.picking.type"].browse(vals.get("picking_type_id"))
if picking_type.is_deposit: if picking_type.is_deposit:
self.change_dest_location(vals, picking_type.code) self.change_dest_location(vals, picking_type.code)
return super().write(vals) return super().write(vals)
@api.onchange('partner_id') @api.onchange("partner_id")
def onchange_partner_id(self): def onchange_partner_id(self):
#super().onchange_partner_id()
for picking in self: for picking in self:
if not picking.partner_id: if not picking.partner_id:
return return
_logger.debug("onchange %s", picking.location_dest_id.name) # web cliebt does not update without this, wtf? _logger.warning("onchange %s %s", picking.location_dest_id.name, picking.location_id.name) # web cliebt does not update without this, wtf?
_logger.warning("onchange %s", picking.picking_type_id.code)
if picking.picking_type_id.is_deposit: if picking.picking_type_id.is_deposit:
if picking.picking_type_id.code == 'internal': if picking.picking_type_id.code in ["internal","outgoing"]:
if not picking.partner_id.deposit_sale_accept: if not picking.partner_id.deposit_sale_accept:
raise ValidationError("Éste cliente no acepta material en depósito, configúralo antes de crear un depósito para él.") raise ValidationError("Éste cliente no acepta material en depósito, configúralo antes de crear un depósito para él.")
return return
picking.location_dest_id = picking.partner_id.deposit_sale_location_id.id, picking.location_id = picking.partner_id.deposit_sale_location_id.id,
elif picking.picking_type_id.code == 'incoming': moves = picking.env["stock.move"].search([("picking_id", "=", picking.id)])
for move in moves:
move.write({"partner_id": picking.partner_id.id}, {"location_id": picking.location_id})
elif picking.picking_type_id.code == "incoming":
if not picking.partner_id.deposit_buy_accept: if not picking.partner_id.deposit_buy_accept:
raise ValidationError("Éste proveedor no suministra material en depósito, configúralo antes de crear un depósito para él.") raise ValidationError("Éste proveedor no suministra material en depósito, configúralo antes de crear un depósito para él.")
return return
picking.location_dest_id = picking.partner_id.deposit_buy_location_id.id picking.location_dest_id = picking.partner_id.deposit_buy_location_id.id
moves = picking.env['stock.move'].search([('picking_id', '=', picking.id)]) moves = picking.env["stock.move"].search([("picking_id", "=", picking.id)])
for move in moves: for move in moves:
move.write({'partner_id': picking.partner_id.id}, {'location_dest_id': picking.location_dest_id}) move.write({"partner_id": picking.partner_id.id}, {"location_dest_id": picking.location_dest_id})
def change_dest_location(self, vals, code): def change_dest_location(self, vals, code):
if vals.get('partner_id'): if vals.get("partner_id"):
partner = self.env['res.partner'].browse(vals.get('partner_id')) partner = self.env["res.partner"].browse(vals.get("partner_id"))
if code == 'internal': if code == "internal":
if not partner.deposit_sale_accept: if not partner.deposit_sale_accept:
raise ValidationError("Éste cliente no acepta material en depósito, configúralo antes de crear un depósito para él.") raise ValidationError("Éste cliente no acepta material en depósito, configúralo antes de crear un depósito para él.")
return return
vals.update({ vals.update({
'location_dest_id': partner.deposit_sale_location_id.id, "location_dest_id": partner.deposit_sale_location_id.id,
}) })
elif code == 'incoming': elif code == 'incoming':
if not partner.deposit_buy_accept: if not partner.deposit_buy_accept:
raise ValidationError("Éste proveedor no suministra material en depósito, configúralo antes de crear un depósito para él.") raise ValidationError("Éste proveedor no suministra material en depósito, configúralo antes de crear un depósito para él.")
return return
vals.update({ vals.update({
'location_dest_id': partner.deposit_buy_location_id.id, "location_dest_id": partner.deposit_buy_location_id.id,
}) })

View file

@ -1,9 +1,10 @@
{ {
'name': 'Website Product Retail', "name": "Website Product Retail",
'category': 'Product', "category": "Product",
'summary': 'Setea categorías y ribbons de website en productos en distribución.', "summary": "Setea categorías y ribbons de website en productos en distribución.",
'version': "16.0.1.0.0", "version": "16.0.1.0.0",
'description': """ "license": "AGPL-3",
"description": """
Configura categorías y ribbons de website en productos en distribución. Configura categorías y ribbons de website en productos en distribución.
================================================== ==================================================

View file

@ -1,16 +0,0 @@
{
"name": "Display product website descrition in e-commerce catalog pages.",
"version": "16.0.1.0.2",
"category": "Website",
"author": "Criptomart",
"license": "AGPL-3",
"application": False,
"installable": True,
"depends": ["website_sale"],
"data": ["views/website_sale_views.xml"],
"assets": {
"web.assets_frontend": [
"website_sale_product_description_displayed/static/src/scss/custom.scss",
],
}
}

View file

@ -0,0 +1 @@
from . import controllers

View file

@ -0,0 +1,29 @@
{
"name": "Website Sale Product Library.",
"version": "16.0.1.0.3",
"category": "Website",
"summary": "Modifica website_sale para una librería / Tienda de música.",
"author": "Criptomart",
"license": "AGPL-3",
"description": """
Website Sale Product Library
==================================================
Modifica la tienda online con los campos de product_library.
* Linka internal description con website_description.
* Muestra en product en la lista de productos los campos de product_library (subtítulo, autor, editorial, formato, género).
* En la vista del producto, añade subtítulo y autor después del nombre y la descripción.
* Búsueda en la web por autor, editorial y subtítulo.
""",
"depends": ["website_sale", "product_library"],
"data": ["views/website_sale_views.xml"],
"assets": {
"web.assets_frontend": [
"website_sale_product_description_displayed/static/src/scss/custom.scss",
],
},
"application": False,
"installable": True,
}

View file

@ -5,5 +5,5 @@
padding: 4px; padding: 4px;
background-color: #f6f6ff; background-color: #f6f6ff;
border: 1px solid #99d; border: 1px solid #99d;
border-radius: 8px; border-radius: 6px;
} }