From ca3ff032a27d52730699689e33abec6c83de3e71 Mon Sep 17 00:00:00 2001 From: snt Date: Tue, 10 Sep 2024 16:53:28 +0200 Subject: [PATCH] =?UTF-8?q?upgrade=20depositos=20a=20v16.=20A=C3=B1adida?= =?UTF-8?q?=20configuraci=C3=B3n=20para=20definir=20la=20lista=20de=20prec?= =?UTF-8?q?ios=20que=20se=20aplica=20en=20los=20dep=C3=B3sitos=20de=20vent?= =?UTF-8?q?a.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- stock_picking_deposito/models/res_company.py | 7 ++++- .../models/res_config_settings.py | 6 +++- stock_picking_deposito/models/res_partner.py | 31 +++++++------------ .../models/stock_picking.py | 25 +++++---------- .../views/res_config_settings_views.xml | 6 ++-- .../views/stock_picking.xml | 2 -- 6 files changed, 34 insertions(+), 43 deletions(-) diff --git a/stock_picking_deposito/models/res_company.py b/stock_picking_deposito/models/res_company.py index 36757cc..5c893ab 100644 --- a/stock_picking_deposito/models/res_company.py +++ b/stock_picking_deposito/models/res_company.py @@ -8,7 +8,12 @@ class Company(models.Model): _inherit = 'res.company' deposit_journal_id = fields.Many2one( - comodel_name="account.journal", + comodel_name="account.journal", string="Diario de depósitos", help="El diario donde se crearán las facturas en las liquidaciones de depósitos.", ) + retail_pricelist = fields.Many2one( + comodel_name = "product.pricelist", + string = "Lista de precios para minoristas en depósito", + help = "Ésta tarifa se aplicará cunado se generen liquidaciones de ventas a minoristas", + ) diff --git a/stock_picking_deposito/models/res_config_settings.py b/stock_picking_deposito/models/res_config_settings.py index 0eaacb4..23302fc 100644 --- a/stock_picking_deposito/models/res_config_settings.py +++ b/stock_picking_deposito/models/res_config_settings.py @@ -1,4 +1,4 @@ -# Copyright 2021 Criptomart +# Copyright 2021-2024 Criptomart # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from odoo import fields, models @@ -11,3 +11,7 @@ class ResConfigSettings(models.TransientModel): related="company_id.deposit_journal_id", readonly=False, ) + retail_pricelist = fields.Many2one( + related="company_id.retail_pricelist", + readonly=False, + ) diff --git a/stock_picking_deposito/models/res_partner.py b/stock_picking_deposito/models/res_partner.py index a71c246..897fedc 100644 --- a/stock_picking_deposito/models/res_partner.py +++ b/stock_picking_deposito/models/res_partner.py @@ -1,13 +1,9 @@ -# Copyright (C) 2021: Criptomart () -# @author: Criptomart () +# Copyright (C) 2021-2024: Criptomart () # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). -#import logging - from odoo import models, fields, api from odoo.exceptions import ValidationError, Warning -#_logger = logging.getLogger(__name__) class ResPartner(models.Model): _inherit = 'res.partner' @@ -85,33 +81,32 @@ class ResPartner(models.Model): new_prod = True for p in product_list: if p[2]['product_id'] == mv.product_id.id: - p[2]['quantity'] += mv.qty_done + p[2]['debit'] += mv.qty_done * mv.product_id.standard_price new_prod = False break if new_prod: product_list.append([0, False, { 'product_id': mv.product_id.id, - 'quantity': mv.qty_done, + 'debit': mv.qty_done * mv.product_id.standard_price, 'name': mv.product_id.name, 'price_unit': mv.product_id.lst_price, - 'uom_id': mv.product_id.uom_id.id, - 'account_id': self.env['account.account'].search([('user_type_id', '=', self.env.ref('account.data_account_type_expenses').id)], limit=1).id + 'tax_ids' : mv.product_id.supplier_taxes_id, } ]) if len(product_list): - self.deposit_buy_last_liquidation_date = fields.datetime.now() invoice_vals = invoice_obj.default_get(invoice_obj._fields.keys()) + inv_lines = [] invoice_vals.update({ - 'origin': "Liquidación Compras " + self.deposit_buy_last_liquidation_date.strftime("%d-%m-%Y"), - 'type': 'in_invoice', - 'date_invoice': self.deposit_buy_last_liquidation_date.strftime("%Y-%m-%d %H:%M:%S"), + 'ref': "Liquidación Compras " + self.deposit_buy_last_liquidation_date.strftime("%d-%m-%Y"), + 'financial_type': 'payable', 'journal_id': self.env.user.company_id.deposit_journal_id.id, 'partner_id': self.id, 'invoice_line_ids': product_list, 'company_id': self.company_id.id, }) invoice = invoice_obj.create(invoice_vals) - views = [(self.env.ref('account.invoice_form').id, 'form')] + self.deposit_buy_last_liquidation_date = fields.datetime.now() + views = [(self.env.ref('account.view_move_form').id, 'form')] return { 'type': 'ir.actions.act_window', 'res_model': 'account.move', @@ -139,8 +134,6 @@ class ResPartner(models.Model): 'product_id': mv.product_id.id, 'product_uom_qty': mv.quantity, 'name': mv.product_id.name, - 'price_unit': mv.product_id.lst_price, - 'product_uom': mv.product_id.uom_id.id, } ]) if len(product_list): @@ -150,9 +143,10 @@ class ResPartner(models.Model): 'partner_id': self.id, 'origin': "Liquidación Ventas " + self.deposit_sale_last_liquidation_date.strftime("%d-%m-%Y"), 'date_order': self.deposit_sale_last_liquidation_date.strftime("%Y-%m-%d %H:%M:%S"), - #'journal_id': self.env.user.company_id.deposit_journal_id.id, 'order_line': product_list, - 'warehouse_id': self.env.ref('stock_picking_deposito.wh_deposits').id + 'warehouse_id': self.env.ref('stock_picking_deposito.wh_deposits').id, + 'pricelist_id': self.env.user.company_id.retail_pricelist.id, + }) sale_order = self.env['sale.order'].sudo().create(so_vals) views = [(self.env.ref('sale.view_order_form').id, 'form')] @@ -170,4 +164,3 @@ class ResPartner(models.Model): else: msg += "Todavía no se ha realizado ninguna liquidación de ventas a éste proveedor." raise ValidationError(msg) - diff --git a/stock_picking_deposito/models/stock_picking.py b/stock_picking_deposito/models/stock_picking.py index e090f1a..e5f93cb 100644 --- a/stock_picking_deposito/models/stock_picking.py +++ b/stock_picking_deposito/models/stock_picking.py @@ -1,12 +1,12 @@ # Copyright 2021 Criptomart # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl) -#import logging +import logging from odoo import api, models, fields from odoo.exceptions import ValidationError -#_logger = logging.getLogger(__name__) +_logger = logging.getLogger(__name__) class PickingType(models.Model): _inherit = 'stock.picking.type' @@ -14,7 +14,7 @@ class PickingType(models.Model): is_deposit = fields.Boolean( string='Depósito', help='Éste albarán es un depósito, no es una venta final.', - default= False, + default= False, ) class Picking(models.Model): @@ -22,20 +22,10 @@ class Picking(models.Model): @api.model def create(self, vals): - if vals.get("partner_id") and vals.get("location_id") == self.env.ref("stock_picking_deposito.stock_location_deposits_stock").id: - partner = self.env['res.partner'].browse(vals.get("partner_id")) - vals['location_id'] = partner.deposit_sale_location_id.id - return super().create(vals) - - @api.onchange('picking_type_id','partner_id') - def onchange_picking_type(self): - super(Picking, self).onchange_picking_type() - if self.picking_type_id.is_deposit and self.partner_id: - self.change_dest_location() - if self.partner_id and self.location_id == self.env.ref("stock_picking_deposito.stock_location_deposits_stock"): - self.update({ - 'location_id': self.partner_id.deposit_sale_location_id.id, - }) + pick = super().create(vals) + if pick.picking_type_id.is_deposit: + pick.change_dest_location() + return pick def change_dest_location(self): if self.picking_type_id.code == 'internal': @@ -52,4 +42,3 @@ class Picking(models.Model): self.update({ 'location_dest_id': self.partner_id.deposit_buy_location_id.id, }) - diff --git a/stock_picking_deposito/views/res_config_settings_views.xml b/stock_picking_deposito/views/res_config_settings_views.xml index 5065903..2781325 100644 --- a/stock_picking_deposito/views/res_config_settings_views.xml +++ b/stock_picking_deposito/views/res_config_settings_views.xml @@ -1,6 +1,5 @@ - res.config.settings.view.form.inherit.product.deposit res.config.settings @@ -16,11 +15,14 @@ - diff --git a/stock_picking_deposito/views/stock_picking.xml b/stock_picking_deposito/views/stock_picking.xml index 57e33fb..9d1e423 100644 --- a/stock_picking_deposito/views/stock_picking.xml +++ b/stock_picking_deposito/views/stock_picking.xml @@ -1,5 +1,4 @@ - Operation Types inherit @@ -10,5 +9,4 @@ -