Skip to content
Snippets Groups Projects
Commit a083f427 authored by Nicolas Russo's avatar Nicolas Russo
Browse files

Merge branch 'T8640' into 'master'

[FIX][T8640] Update_sale_analysis_lines method changed to fix duplicated lines

See merge request !29
parents ae86992d 5f9572eb
Branches master
No related tags found
1 merge request!29[FIX][T8640] Update_sale_analysis_lines method changed to fix duplicated lines
"""This module contains the custom implementation of the `account.move` model."""
from odoo import models
import logging
_logger = logging.getLogger(__name__)
class AccountMove(models.Model):
"""
......@@ -44,7 +46,7 @@ class AccountMove(models.Model):
sms = self.env['account.move'].search([('state', '=', 'posted')])
for move in sms:
if move.is_sale_document(include_receipts=True):
if not self.env["account.sales.analysis"].search([('move_line_id', 'in', move.line_ids.ids)]):
_logger.info('account_move_id executed: %s' %(move.id))
move._create_sale_analysis_lines()
def delete_duplicated_sale_analysis_lines(self):
......
......@@ -15,53 +15,58 @@ class AccountMoveLine(models.Model):
sale_analysis_lines = []
for line in self:
if line.product_id:
document_type = ""
if not line.move_id.provisional:
document_type = line.move_id.l10n_latam_document_type_id.name
product_supplierinfo = self.env["product.supplierinfo"].search(
[("product_id", "=", line.product_id.id), ("determine_cost", "=", True)]
)
cost_currency = False
if product_supplierinfo:
cost_currency = product_supplierinfo.currency_id
inverse_company_rate = 0.0
if cost_currency:
if cost_currency.is_current_company_currency:
inverse_company_rate = 1.0
else:
cost_currency_rate = self.env["res.currency.rate"].search(
[
("name", "=", line.move_id.invoice_date),
("currency_id", "=", cost_currency.id),
]
)
if cost_currency_rate:
inverse_company_rate = cost_currency_rate.inverse_company_rate
cost_currency = cost_currency.id
sale_analysis_lines.append(
{
"brand_id": line.product_id.brand_id.id,
"company_id": line.move_id.company_id.id,
"cost_currency": cost_currency,
"date": line.move_id.invoice_date if line.move_id.invoice_date else line.move_id.date,
"default_code": line.product_id.default_code,
"document_type": document_type,
"family_id": line.product_id.family_id.id,
"historical_cost": line.product_id.standard_price,
"inverse_company_rate": inverse_company_rate,
"journal_id": line.move_id.journal_id.id,
"name": line.move_id.name,
"partner_id": line.move_id.partner_id.id,
"partner_city": line.move_id.partner_id.city,
"price_unit": line.price_unit,
"product_id": line.product_id.id,
"product_qty": line.quantity,
"team_id": line.move_id.team_id.id,
"user_id": line.move_id.invoice_user_id.id,
"subfamily_id": line.product_id.subfamily_id.id,
"move_line_id": line.id,
}
)
if not self.env["account.sales.analysis"].search([("move_line_id", "=", line.id)]):
document_type = ""
if not line.move_id.provisional:
document_type = line.move_id.l10n_latam_document_type_id.name
product_supplierinfo = self.env["product.supplierinfo"].search(
[
("product_id", "=", line.product_id.id),
("determine_cost", "=", True),
("company_id", "=", line.company_id.id)
]
)
cost_currency = False
if product_supplierinfo:
cost_currency = product_supplierinfo.ensure_one().currency_id
inverse_company_rate = 0.0
if cost_currency:
if cost_currency.is_current_company_currency:
inverse_company_rate = 1.0
else:
cost_currency_rate = self.env["res.currency.rate"].search(
[
("name", "=", line.move_id.invoice_date),
("currency_id", "=", cost_currency.id),
]
)
if cost_currency_rate:
inverse_company_rate = cost_currency_rate.inverse_company_rate
cost_currency = cost_currency.id
sale_analysis_lines.append(
{
"brand_id": line.product_id.brand_id.id,
"company_id": line.move_id.company_id.id,
"cost_currency": cost_currency,
"date": line.move_id.invoice_date if line.move_id.invoice_date else line.move_id.date,
"default_code": line.product_id.default_code,
"document_type": document_type,
"family_id": line.product_id.family_id.id,
"historical_cost": line.product_id.standard_price,
"inverse_company_rate": inverse_company_rate,
"journal_id": line.move_id.journal_id.id,
"name": line.move_id.name,
"partner_id": line.move_id.partner_id.id,
"partner_city": line.move_id.partner_id.city,
"price_unit": line.price_unit,
"product_id": line.product_id.id,
"product_qty": line.quantity,
"team_id": line.move_id.team_id.id,
"user_id": line.move_id.invoice_user_id.id,
"subfamily_id": line.product_id.subfamily_id.id,
"move_line_id": line.id,
}
)
return sale_analysis_lines
def clean_sale_analysis_lines(self):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment