14 Commits

Author SHA1 Message Date
Stéphan Sainléger
af2bfdb0a5 [UPD] Arround plan amount with coeff
If 100 <= amount_with_coef <  125, result = 100
If 125 <= amount_with_coef <  175, result = 150
If 175 <= amount_with_coef <= 200, result = 200
2022-05-24 16:56:35 +02:00
Stéphan Sainléger
4b5188bd06 [UPD] Synchronize budget with new quotation lines
By pressing button "Sync missing budget lines", a new budget section
line is created for all the order lines without associated budget line.
2022-05-24 16:56:35 +02:00
Stéphan Sainléger
7c415a3362 [CLEAN] Remove useless comment 2022-05-24 16:12:55 +02:00
Stéphan Sainléger
5ea57cdbe3 [UPD] Update french translations 2022-05-23 23:24:36 +02:00
Stéphan Sainléger
16810acec7 [UPD] Reorganize budget forecast menu 2022-05-22 20:42:54 +02:00
Stéphan Sainléger
33521aef9b [NEW] Add budget model funcitonnalities
User is able to generate budget model and model lines
User can reset a budget and generate one using an existing model
2022-05-22 18:36:48 +02:00
Stéphan Sainléger
cc9101429a [UPD] Add budget_forecast field in timesheet table in tasks 2022-05-21 10:28:23 +02:00
Stéphan Sainléger
d763e7e24b [UPD] Creation budget category Delivery 2022-05-19 16:08:19 +02:00
Stéphan Sainléger
03643727f0 [UPD] Correction on plan_price calculation
To make possible the use of sections and sub-section without child lines
2022-05-19 14:42:42 +02:00
Stéphan Sainléger
82c5e297f7 [UPD] Creation budget category Unplanned 2022-05-19 12:28:35 +02:00
Stéphan Sainléger
0bd839caa3 [NEW] Addons account_budget_forecast creation 2022-05-19 12:21:24 +02:00
Stéphan Sainléger
c23f15cf98 [MIG] Remove Mooncard addons 2022-04-25 15:59:36 +02:00
Stéphan Sainléger
ba403be6ff [MIG] Migration addons account_quotation_sale_order_invoice_title
from 14.0 to 13.0
2022-04-25 15:57:23 +02:00
Stéphan Sainléger
9f36a3c4b3 [NEW] Addons creation - Account Quotation Sale Order Invoice Title 2022-04-22 11:15:43 +02:00
37 changed files with 147 additions and 617 deletions

2
.gitignore vendored
View File

@@ -1,2 +0,0 @@
*.*~
*.pyc

View File

@@ -3,7 +3,7 @@
{
"name": "account_budget_forecast",
"version": "14.0.1.3.0",
"version": "13.0.1.3.0",
"author": "Elabore",
"maintainer": "False",
"website": "False",
@@ -65,7 +65,6 @@ This module is maintained by ELABORE.
"product",
"project",
"sale",
"sale_crm",
"stock",
],
"external_dependencies": {
@@ -77,6 +76,7 @@ This module is maintained by ELABORE.
"wizard/budget_forecast_model_choice.xml",
"views/account_analytic_account.xml",
"views/account_analytic_account_categories.xml",
"views/account_invoice.xml",
"views/sale_order.xml",
"views/budget_forecast.xml",
"views/budget_coefficient.xml",

View File

@@ -2,6 +2,7 @@
from . import account_analytic_account
from . import account_analytic_line
from . import account_move
from . import budget_forecast
from . import budget_forecast_model
from . import sale_order

View File

@@ -146,15 +146,15 @@ class AccountAnalyticAccount(models.Model):
domain = [
("analytic_account_id", "=", record.id),
("parent_state", "in", ["draft", "posted"]),
("move_id.move_type", "in", ["out_invoice", "out_refund"]),
("move_id.type", "in", ["out_invoice", "out_refund"]),
]
invoice_lines = self.env["account.move.line"].search(domain)
for invoice_line in invoice_lines:
if invoice_line.move_id.move_type == "out_invoice":
if invoice_line.move_id.type == "out_invoice":
record.total_incomes = (
record.total_incomes + invoice_line.price_subtotal
)
elif invoice_line.move_id.move_type == "out_refund":
elif invoice_line.move_id.type == "out_refund":
record.total_incomes = (
record.total_incomes - invoice_line.price_subtotal
)

View File

@@ -6,16 +6,4 @@ from odoo import models, fields, api
class AccountAnalyticLine(models.Model):
_inherit = "account.analytic.line"
timesheet_entry = fields.Boolean(
help="Technical field to identify analytic lines created from timesheet vies",
store=True,
default=False,
)
@api.model_create_multi
def create(self, vals_list):
lines = super(AccountAnalyticLine, self).create(vals_list)
for line, values in zip(lines, vals_list):
if line.project_id: # applied only for timesheet
line.timesheet_entry = True
return lines
budget_forecast_id = fields.Many2one("budget.forecast")

View File

@@ -0,0 +1,14 @@
# -*- coding: utf-8 -*-
from odoo import models, fields, api
class AccountMoveLine(models.Model):
_inherit = "account.move.line"
budget_forecast_id = fields.Many2one("budget.forecast")
@api.depends("budget_forecast_id")
def _transfer_budget_forecast_line(self):
for record in self:
record.analytic_line_ids.budget_forecast_id = record.budget_forecast_id.id

View File

@@ -1,8 +1,6 @@
# -*- coding: utf-8 -*-
import logging
from odoo import models, fields, api, _
from odoo.exceptions import UserError
_logger = logging.getLogger(__name__)
@@ -21,13 +19,6 @@ class BudgetForecast(models.Model):
index=True,
copy=True,
)
analytic_tag = fields.Many2one(
"account.analytic.tag",
"Analytic tag",
index=True,
copy=False,
ondelete="cascade",
)
budget_category = fields.Selection(
[
@@ -70,6 +61,16 @@ class BudgetForecast(models.Model):
copy=False,
)
analytic_line_ids = fields.One2many(
"account.analytic.line", "budget_forecast_id", copy=False
)
actual_qty = fields.Float(
"Actual Quantity",
compute="_calc_actual",
store=True,
compute_sudo=True,
copy=False,
)
actual_amount = fields.Float(
"Expenses",
compute="_calc_actual",
@@ -113,9 +114,6 @@ class BudgetForecast(models.Model):
"line_subsection",
]:
record._create_category_sections()
record.analytic_tag = self.env["account.analytic.tag"].create(
{"name": record._calculate_name()}
)
return records
def _create_category_sections(self):
@@ -175,32 +173,24 @@ class BudgetForecast(models.Model):
return val
return ""
def _calculate_name(self):
for record in self:
name = (
record.description
+ " - "
+ record.product_id.name
+ " - "
+ record._get_budget_category_label()
+ " - "
+ record.analytic_id.name
)
return name
@api.onchange("description", "product_id")
def _compute_name(self):
for record in self:
if record.product_id:
values = {"name": record._calculate_name()}
name = (
record.description
+ " - "
+ record.product_id.name
+ " - "
+ record._get_budget_category_label()
+ " - "
+ record.analytic_id.name
)
values = {
"name": name,
}
record.write(values, False)
@api.onchange("name")
def _compute_analytic_tag_name(self):
for record in self:
if record.analytic_tag:
record.analytic_tag.name = record.name
def _sync_sections_data(self):
for record in self:
if record.display_type in ["line_section", "line_subsection"]:
@@ -340,102 +330,69 @@ class BudgetForecast(models.Model):
@api.depends("analytic_id.line_ids.amount")
def _calc_actual(self):
for record in self:
record.actual_amount = 0.00
record.incomes = 0.00
if record.display_type in [
"line_section",
"line_subsection",
"line_article",
]:
if record.display_type in ["line_section", "line_subsection"]:
if record.child_ids:
# Addition of the childs values
# Actual expenses are calculated with the child lines
record.actual_qty = sum(record.mapped("child_ids.actual_qty"))
record.actual_amount = sum(record.mapped("child_ids.actual_amount"))
record.incomes = sum(record.mapped("child_ids.incomes"))
# Incomes are calculated with the analytic lines
line_ids = record.analytic_line_ids.filtered(
lambda x: x.move_id.move_id.type
in ["out_invoice", "out_refund"]
)
record.incomes = sum(line_ids.mapped("amount"))
# Retrieve all the analytics lines linked to the current budget line
analytic_lines = (
self.env["account.analytic.line"]
.search([])
.filtered(lambda x: record.analytic_tag in x.tag_ids)
# Add Invoice lines ids
domain = [
("analytic_account_id", "=", record.analytic_id.id),
("parent_state", "in", ["draft", "posted"]),
("budget_forecast_id", "=", record.id),
("move_id.type", "in", ["out_invoice", "out_refund"]),
]
invoice_lines = self.env["account.move.line"].search(domain)
for invoice_line in invoice_lines:
if invoice_line.move_id.type == "out_invoice":
record.incomes = (
record.incomes + invoice_line.price_subtotal
)
elif invoice_line.move_id.type == "out_refund":
record.incomes = (
record.incomes - invoice_line.price_subtotal
)
record.balance = record.incomes - record.actual_amount
elif record.display_type == "line_note":
record.actual_qty = 0
record.actual_amount = 0.00
else:
line_ids = record.analytic_line_ids.filtered(
lambda x: x.move_id.move_id.type
not in ["out_invoice", "out_refund"]
)
for line in analytic_lines:
if line.move_id:
if line.move_id.move_id.move_type in [
"out_invoice",
"out_refund",
"out_receipt",
]:
record.incomes = record.incomes + line.amount
elif line.move_id.move_id.move_type in [
"in_invoice",
"in_refund",
"in_receipt",
]:
record.actual_amount = record.actual_amount - line.amount
elif line.timesheet_entry:
record.actual_amount = record.actual_amount - line.amount
record.actual_qty = abs(sum(line_ids.mapped("unit_amount")))
record.actual_amount = -sum(line_ids.mapped("amount"))
# Retrieve all the DRAFT invoices linked to the current budget line
# Add Invoice lines ids
domain = [
("analytic_account_id", "=", record.analytic_id.id),
("parent_state", "in", ["draft"]),
("parent_state", "in", ["draft", "posted"]),
("budget_forecast_id", "=", record.id),
("move_id.type", "in", ["in_invoice", "in_refund"]),
]
invoice_lines = (
self.env["account.move.line"]
.search(domain)
.filtered(lambda x: record.analytic_tag in x.analytic_tag_ids)
)
invoice_lines = self.env["account.move.line"].search(domain)
for invoice_line in invoice_lines:
if invoice_line.move_id.move_type == "out_invoice":
record.incomes = record.incomes + invoice_line.price_subtotal
elif invoice_line.move_id.move_type == "out_refund":
record.incomes = record.incomes - invoice_line.price_subtotal
elif invoice_line.move_id.move_type == "in_invoice":
if invoice_line.move_id.type == "in_invoice":
record.actual_qty = record.actual_qty + invoice_line.quantity
record.actual_amount = (
record.actual_amount + invoice_line.price_subtotal
)
elif invoice_line.move_id.move_type == "in_refund":
elif invoice_line.move_id.type == "in_refund":
record.actual_qty = record.actual_qty - invoice_line.quantity
record.actual_amount = (
record.actual_amount - invoice_line.price_subtotal
)
record.balance = record.incomes - record.actual_amount
record.incomes = None
record.balance = None
record.diff_expenses = record.plan_amount_with_coeff - record.actual_amount
def action_view_analytic_lines(self):
self.ensure_one()
analytic_lines = (
self.env["account.analytic.line"]
.search([])
.filtered(lambda x: self.analytic_tag in x.tag_ids)
)
if len(analytic_lines) > 0:
action = self.env["ir.actions.actions"]._for_xml_id(
"analytic.account_analytic_line_action_entries"
)
action["domain"] = [("tag_ids", "ilike", self.analytic_tag.id)]
return action
else:
raise UserError(_("There is no analytic lines linked to this budget line"))
def action_view_draft_invoice_lines(self):
self.ensure_one()
invoice_lines = (
self.env["account.move.line"]
.search([("parent_state", "in", ["draft"])])
.filtered(lambda x: self.analytic_tag in x.analytic_tag_ids)
)
if len(invoice_lines) > 0:
action = self.env["ir.actions.actions"]._for_xml_id(
"account.action_account_moves_all_tree"
)
action["domain"] = [
("analytic_tag_ids", "ilike", self.analytic_tag.id),
("parent_state", "in", ["draft"]),
]
return action
else:
raise UserError(
_("There is no draft invoice lines linked to this budget line")
)

View File

@@ -24,6 +24,7 @@
<field name="note" optional="hide" />
<field name="plan_price" />
<field name="plan_qty" />
<field name="actual_qty" attrs="{'column_invisible' : [('parent.display_actual_amounts', '=', False)]}" />
<field name="plan_amount_without_coeff" string="Plan Amount before Coeff" />
<field name="plan_amount_with_coeff" string="Plan Amount after Coeff" />
<field name="actual_amount" string="Actual Amount" attrs="{'column_invisible' : [('parent.display_actual_amounts', '=', False)]}" />
@@ -50,6 +51,7 @@
<field name="note" optional="hide" />
<field name="plan_price" />
<field name="plan_qty" />
<field name="actual_qty" attrs="{'column_invisible' : [('parent.display_actual_amounts', '=', False)]}" />
<field name="plan_amount_without_coeff" string="Plan Amount before Coeff" />
<field name="plan_amount_with_coeff" string="Plan Amount after Coeff" />
<field name="actual_amount" string="Actual Amount" attrs="{'column_invisible' : [('parent.display_actual_amounts', '=', False)]}" />
@@ -76,6 +78,7 @@
<field name="note" optional="hide" />
<field name="plan_price" />
<field name="plan_qty" />
<field name="actual_qty" attrs="{'column_invisible' : [('parent.display_actual_amounts', '=', False)]}" />
<field name="plan_amount_without_coeff" string="Plan Amount before Coeff" />
<field name="plan_amount_with_coeff" string="Plan Amount after Coeff" />
<field name="actual_amount" string="Actual Amount" attrs="{'column_invisible' : [('parent.display_actual_amounts', '=', False)]}" />
@@ -102,6 +105,7 @@
<field name="note" optional="hide" />
<field name="plan_price" />
<field name="plan_qty" />
<field name="actual_qty" attrs="{'column_invisible' : [('parent.display_actual_amounts', '=', False)]}" />
<field name="plan_amount_without_coeff" string="Plan Amount before Coeff" />
<field name="plan_amount_with_coeff" string="Plan Amount after Coeff" />
<field name="actual_amount" string="Actual Amount" attrs="{'column_invisible' : [('parent.display_actual_amounts', '=', False)]}" />
@@ -128,6 +132,7 @@
<field name="note" optional="hide" />
<field name="plan_price" />
<field name="plan_qty" />
<field name="actual_qty" attrs="{'column_invisible' : [('parent.display_actual_amounts', '=', False)]}" />
<field name="plan_amount_without_coeff" string="Plan Amount before Coeff" />
<field name="plan_amount_with_coeff" string="Plan Amount after Coeff" />
<field name="actual_amount" string="Actual Amount" attrs="{'column_invisible' : [('parent.display_actual_amounts', '=', False)]}" />
@@ -154,6 +159,7 @@
<field name="note" optional="hide" />
<field name="plan_price" />
<field name="plan_qty" />
<field name="actual_qty" attrs="{'column_invisible' : [('parent.display_actual_amounts', '=', False)]}" />
<field name="plan_amount_without_coeff" string="Plan Amount before Coeff" />
<field name="plan_amount_with_coeff" string="Plan Amount after Coeff" />
<field name="actual_amount" string="Actual Amount" attrs="{'column_invisible' : [('parent.display_actual_amounts', '=', False)]}" />
@@ -180,6 +186,7 @@
<field name="note" optional="hide" />
<field name="plan_price" />
<field name="plan_qty" />
<field name="actual_qty" attrs="{'column_invisible' : [('parent.display_actual_amounts', '=', False)]}" />
<field name="plan_amount_without_coeff" string="Plan Amount before Coeff" />
<field name="plan_amount_with_coeff" string="Plan Amount after Coeff" />
<field name="actual_amount" string="Actual Amount" attrs="{'column_invisible' : [('parent.display_actual_amounts', '=', False)]}" />

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="invoice_budget_form" model="ir.ui.view">
<field name="name">account.invoice.budget.form</field>
<field name="model">account.move</field>
<field name="inherit_id" ref="account.view_move_form" />
<field name="arch" type="xml">
<xpath expr="//field[@name='invoice_line_ids']/tree/field[@name='analytic_tag_ids']" position="after">
<field name="budget_forecast_id" domain="[('analytic_id', '=', analytic_account_id), ('product_id', '=', product_id)]" />
</xpath>
</field>
</record>
</odoo>

View File

@@ -8,12 +8,11 @@
<form>
<sheet>
<group>
<group string="Identification">
<group>
<field name="product_id" />
<field name="description" />
<field name="analytic_tag" />
</group>
<group string="Properties">
<group>
<field name="analytic_id" />
<field name="is_summary" />
<field name="budget_category" />
@@ -23,32 +22,30 @@
</group>
</group>
<group>
<group string="Planned">
<field name="plan_price" string="Unit price" />
<field name="plan_qty" string="Quantities" />
<group string="Unit prices">
<field name="plan_price" />
</group>
<group string="Quantities">
<field name="plan_qty" />
<field name="actual_qty" />
</group>
<group string="Totals">
<field name="plan_amount_without_coeff" />
<field name="plan_amount_with_coeff" />
</group>
<group string="Expenses">
<field name="actual_amount" />
<field name="diff_expenses" />
</group>
<group string="Incomes">
<field name="incomes" />
<field name="balance" />
</group>
</group>
<group string="Expenses and Incomes lists">
<group string="Analytic Lines">
<button class="oe_highlight" type="object" name="action_view_analytic_lines">
List analytics lines
</button>
</group>
<group string="Draft invoice lines">
<button class="oe_highlight" type="object" name="action_view_draft_invoice_lines">
List draft invoce lines
</button>
</group>
<group string="Analytic Lines">
<field name="analytic_line_ids" nolabel="1">
<tree>
<field name="date" />
<field name="employee_id" />
<field name="product_id" />
<field name="name" />
<field name="unit_amount" string="Quantity" />
<field name="amount" />
</tree>
</field>
</group>
<group string="Childs" attrs="{'invisible' : [('child_ids','=', False)]}">
<field name="child_ids" nolabel="1">
@@ -58,6 +55,7 @@
<field name="budget_category" />
<field name="plan_price" sum="total" />
<field name="plan_qty" sum="total" />
<field name="actual_qty" sum="total" />
<field name="plan_amount_without_coeff" sum="total" />
<field name="plan_amount_with_coeff" sum="total" />
<field name="actual_amount" sum="total" />
@@ -84,6 +82,7 @@
<field name="budget_category" />
<field name="plan_price" sum="total" />
<field name="plan_qty" sum="total" />
<field name="actual_qty" sum="total" />
<field name="plan_amount_without_coeff" sum="total" />
<field name="plan_amount_with_coeff" sum="total" />
<field name="actual_amount" sum="total" />

View File

@@ -15,10 +15,10 @@
<field name="model">budget.forecast.model.line</field>
<field name="arch" type="xml">
<tree editable="top">
<field name="budget_model" required="True" />
<field name="display_type" required="True" />
<field name="product_id" required="True" />
<field name="name" required="True" />
<field name="budget_model" />
<field name="display_type" />
<field name="product_id" />
<field name="name" />
<field name="parent_id" />
</tree>
</field>

View File

@@ -8,7 +8,7 @@
<field name="inherit_id" ref="hr_timesheet.hr_timesheet_line_tree" />
<field name="arch" type="xml">
<xpath expr="//field[@name='task_id']" position="after">
<field name="tag_ids" widget="many2many_tags" /> <!--domain="[('display_type', '=', 'line_article')]" />-->
<field name="budget_forecast_id" domain="[('display_type', '=', 'line_article')]" />
</xpath>
</field>
</record>

View File

@@ -6,7 +6,7 @@
<field name="inherit_id" ref="hr_timesheet.view_task_form2_inherited" />
<field name="arch" type="xml">
<xpath expr="//field[@name='timesheet_ids']/tree/field[@name='name']" position="after">
<field name="tag_ids" /> <!--domain="[('display_type', '=', 'line_article')]" />-->
<field name="budget_forecast_id" domain="[('display_type', '=', 'line_article')]" />
</xpath>
</field>
</record>

View File

@@ -1,3 +0,0 @@
# -*- coding: utf-8 -*-
from . import models

View File

@@ -1,63 +0,0 @@
# -*- coding: utf-8 -*-
{
"name": "Account Mooncard Receipt Lost Transfer",
"category": "Account",
"version": "14.0.1.0",
"summary": "Transfer the Receipt Lost value in invoices and account move lines",
"author": "Elabore",
"website": "https://elabore.coop/",
"installable": True,
"application": False,
"auto_install": False,
"description": """
======================================
Account Mooncard Receipt Lost Transfer
======================================
This module allows the transfer of the Receipt Lost field value from model newgen.payment.card.transaction in invoices and account.move.line
Installation
============
Before the installation, please ensure that the addons of the repository `Odoo Mooncard Connector <https://github.com/akretion/odoo-mooncard-connector>` are available in your Odoo
Just install account_mooncard_receipt_lost_transfer, all dependencies will be installed by default.
Known issues / Roadmap
======================
Bug Tracker
===========
Bugs are tracked on `GitHub Issues
<https://github.com/elabore-coop/.../issues>`_. In case of trouble, please
check there if your issue has already been reported. If you spotted it first,
help us smashing it by providing a detailed and welcomed feedback.
Credits
=======
Images
------
* Elabore: `Icon <https://elabore.coop/web/image/res.company/1/logo?unique=f3db262>`_.
Contributors
------------
* Stéphan Sainléger <https://github.com/stephansainleger>
Funders
-------
The development of this module has been financially supported by:
* Elabore (https://elabore.coop)
Maintainer
----------
This module is maintained by ELABORE.
""",
"depends": [
"base",
"account",
"base_newgen_payment_card",
],
"data": [
"views/account_move_views.xml",
],
"qweb": [],
}

View File

@@ -1,4 +0,0 @@
# -*- coding: utf-8 -*-
from . import account_move
from . import newgen_payment_card_transaction

View File

@@ -1,15 +0,0 @@
from odoo import fields, models, _
class AccountMove(models.Model):
_inherit = "account.move"
receipt_lost = fields.Boolean(string=_("Receipt lost"), store=True)
mooncard_record = fields.Boolean(store=True)
class AccountMoveLine(models.Model):
_inherit = "account.move.line"
receipt_lost = fields.Boolean(string=_("Receipt lost"), store=True)
mooncard_record = fields.Boolean(store=True)

View File

@@ -1,29 +0,0 @@
from odoo import models
class NewgenPaymentCardTransaction(models.Model):
_inherit = "newgen.payment.card.transaction"
def process_line(self):
res = super(NewgenPaymentCardTransaction, self).process_line()
if res:
for line in self:
if line.invoice_id:
line.invoice_id.receipt_lost = line.receipt_lost
line.invoice_id.mooncard_record = True
move_lines = line.invoice_id.line_ids
for move_line in move_lines:
move_line.receipt_lost = line.receipt_lost
move_line.mooncard_record = True
return res
def generate_bank_journal_move(self):
bank_move = super(
NewgenPaymentCardTransaction, self
).generate_bank_journal_move()
if bank_move:
for line in bank_move.line_ids:
line.receipt_lost = self.receipt_lost
line.mooncard_record = True
return bank_move

View File

@@ -1,26 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_move_form_recipt_lost" model="ir.ui.view">
<field name="name">view.move.form.receipt.lost</field>
<field name="model">account.move</field>
<field name="inherit_id" ref="account.view_move_form" />
<field name="arch" type="xml">
<div name="journal_div" position="after">
<field name="mooncard_record" invisible="1" />
<field name="receipt_lost" attrs="{'invisible': [('mooncard_record','=',False)]}" />
</div>
</field>
</record>
<record id="view_move_line_form_recipt_lost" model="ir.ui.view">
<field name="name">view.move.line.form.recipt.lost</field>
<field name="model">account.move.line</field>
<field name="inherit_id" ref="account.view_move_line_form" />
<field name="arch" type="xml">
<field name="blocked" position="after">
<field name="mooncard_record" invisible="1" />
<field name="receipt_lost" attrs="{'invisible': [('mooncard_record','=',False)]}" />
</field>
</field>
</record>
</odoo>

View File

@@ -1,3 +0,0 @@
# -*- coding: utf-8 -*-
from . import models

View File

@@ -1,63 +0,0 @@
# -*- coding: utf-8 -*-
{
"name": "Account partner account number",
"category": "Account",
"version": "14.0.1.0",
"summary": "Add account number in partner",
"author": "Elabore",
"website": "https://elabore.coop/",
"installable": True,
"application": False,
"auto_install": False,
"description": """
======================================
Account partner account number
======================================
This module add a new field in partner, visible in account move lines for payable and receivable accounts
Installation
============
Just install account_partner_account_number, all dependencies will be installed by default.
Known issues / Roadmap
======================
Bug Tracker
===========
Bugs are tracked on `GitHub Issues
<https://github.com/elabore-coop/.../issues>`_. In case of trouble, please
check there if your issue has already been reported. If you spotted it first,
help us smashing it by providing a detailed and welcomed feedback.
Credits
=======
Images
------
* Elabore: `Icon <https://elabore.coop/web/image/res.company/1/logo?unique=f3db262>`_.
Contributors
------------
* Clément Thoams
Funders
-------
The development of this module has been financially supported by:
* Elabore (https://elabore.coop)
* Rovalterre
Maintainer
----------
This module is maintained by ELABORE.
""",
"depends": [
"base",
"account",
],
"data": [
"views/account_move_views.xml",
"views/partner_views.xml",
],
"qweb": [],
}

View File

@@ -1,61 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_partner_account_number
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-06-09 07:37+0000\n"
"PO-Revision-Date: 2023-06-09 07:37+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: account_partner_account_number
#: model:ir.model.fields,field_description:account_partner_account_number.field_account_move_line__account_code
msgid "Account code"
msgstr "Code comptable"
#. module: account_partner_account_number
#: model:ir.model.fields,field_description:account_partner_account_number.field_res_partner__account_code
#: model:ir.model.fields,field_description:account_partner_account_number.field_res_users__account_code
#: model_terms:ir.ui.view,arch_db:account_partner_account_number.view_partner_property_form_account_code
msgid "Account code"
msgstr "Code comptable"
#. module: account_partner_account_number
#: model:ir.model.constraint,message:account_partner_account_number.constraint_res_partner_account_coder_unique
msgid "Choose another value of account code - it has to be unique!"
msgstr "Choisissez une autre valeur de code comptable - il doit être unique !"
#. module: account_partner_account_number
#: model:ir.model,name:account_partner_account_number.model_res_partner
msgid "Contact"
msgstr ""
#. module: account_partner_account_number
#: model:ir.model.fields,field_description:account_partner_account_number.field_account_move_line__display_name
#: model:ir.model.fields,field_description:account_partner_account_number.field_res_partner__display_name
msgid "Display Name"
msgstr "Nom affiché"
#. module: account_partner_account_number
#: model:ir.model.fields,field_description:account_partner_account_number.field_account_move_line__id
#: model:ir.model.fields,field_description:account_partner_account_number.field_res_partner__id
msgid "ID"
msgstr "Identifiant"
#. module: account_partner_account_number
#: model:ir.model,name:account_partner_account_number.model_account_move_line
msgid "Journal Item"
msgstr "Écriture comptable"
#. module: account_partner_account_number
#: model:ir.model.fields,field_description:account_partner_account_number.field_account_move_line____last_update
#: model:ir.model.fields,field_description:account_partner_account_number.field_res_partner____last_update
msgid "Last Modified on"
msgstr "Dernière modification le"

View File

@@ -1,3 +0,0 @@
# -*- coding: utf-8 -*-
from . import res_partner
from . import account_move_line

View File

@@ -1,20 +0,0 @@
from odoo import fields, models, _, api
class AccountMoveLine(models.Model):
_inherit = "account.move.line"
account_code = fields.Char(compute='get_account_code', string="Account code")
@api.depends('partner_id','account_id')
def get_account_code(self):
"""
assign account number of partner if move line is receivable (Customers) or payable (Suppliers)
"""
for account_move_line in self:
if account_move_line.account_id.id == account_move_line.partner_id.commercial_partner_id.property_account_receivable_id.id or \
account_move_line.account_id.id == account_move_line.partner_id.commercial_partner_id.property_account_payable_id.id:
account_move_line.account_code = account_move_line.partner_id.commercial_partner_id.account_code
else:
account_move_line.account_code = ''

View File

@@ -1,13 +0,0 @@
from odoo import fields, models, _
class ResPartner(models.Model):
_inherit = "res.partner"
account_code = fields.Char('Account code')
_sql_constraints = [
('account_coder_unique',
'unique(account_code)',
'Choose another value of account code - it has to be unique!')
]

View File

@@ -1,14 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_move_line_tree_inherit_account_code" model="ir.ui.view">
<field name="name">account.move.line.tree.inherit.account.number</field>
<field name="model">account.move.line</field>
<field eval="100" name="priority"/>
<field name="inherit_id" ref="account.view_move_line_tree" />
<field name="arch" type="xml">
<xpath expr="//field[@name='partner_id']" position="after">
<field name="account_code" />
</xpath>
</field>
</record>
</odoo>

View File

@@ -1,17 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_partner_property_form_account_code" model="ir.ui.view">
<field name="name">res.partner.property.form.inherit.account.number</field>
<field name="model">res.partner</field>
<field name="priority">2</field>
<field name="inherit_id" ref="account.view_partner_property_form"/>
<field name="groups_id" eval="[(5,)]"/>
<field name="arch" type="xml">
<xpath expr="//page[@name='accounting']/group" position="inside">
<group string="Account code" name="account_code" groups="account.group_account_readonly">
<field name="account_code" />
</group>
</xpath>
</field>
</record>
</odoo>

View File

@@ -2,7 +2,7 @@
{
"name": "Account Quotation Sale Order Invoice Title",
"category": "Account",
"version": "14.0.1.0",
"version": "13.0.1.0",
"summary": "Transfer the Receipt Lost value in invoices and account move lines",
"author": "Elabore",
"website": "https://elabore.coop/",

View File

@@ -1,18 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_move_title_tree" model="ir.ui.view">
<field name="name">move_title.move.tree</field>
<field name="model">account.move</field>
<field name="inherit_id" ref="account.view_move_tree" />
<field name="arch" type="xml">
<xpath expr="//field[@name='name']" position="after">
<field name="move_title" />
</xpath>
</field>
</record>
<record id="view_invoice_title_tree" model="ir.ui.view">
<field name="name">invoice_title.move.tree</field>
<field name="name">amove_title.move.tree</field>
<field name="model">account.move</field>
<field name="inherit_id" ref="account.view_invoice_tree" />
<field name="arch" type="xml">
@@ -27,7 +16,7 @@
<field name="model">account.move</field>
<field name="inherit_id" ref="account.view_move_form" />
<field name="arch" type="xml">
<xpath expr="//div[hasclass('oe_title')]" position="after">
<xpath expr="//field[@name='name']/../.." position="inside">
<h1 class="mt0">
<field name="move_title" placeholder="Title..." />
</h1>

View File

@@ -11,4 +11,7 @@ class SaleAdvancePaymentInv(models.TransientModel):
order, name, amount, so_line
)
res["move_title"] = order.so_title
import pdb
pdb.set_trace()
return res

View File

@@ -1,25 +0,0 @@
{
'name': 'Account Usability Elabore',
'version': '16.0.1.1.0',
'description': 'account usability Elabore : improve account usability in v16',
'summary': '',
'author': '',
'website': '',
'license': 'AGPL-3',
'category': '',
'depends': [
'account','base','account_reconcile_oca','account_check_deposit','account_cash_deposit'
],
'data': [
'security/ir.model.access.csv',
'views/account_search.xml',
'views/account_menu.xml',
'views/account_tree_view.xml',
],
'installable': True,
'auto_install': False,
'application': False,
'assets': {
}
}

View File

@@ -1,26 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_usability_elabore
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-01-18 10:32+0000\n"
"PO-Revision-Date: 2024-01-18 10:32+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: account_usability_elabore
#: model:ir.ui.menu,name:account_usability_elabore.deposit_menu
msgid "Deposit"
msgstr "Dépôt"
#. module: account_usability_elabore
#: model_terms:ir.ui.view,arch_db:account_usability_elabore.account_move_line_search_reconcile_view_inherit
msgid "Amount/Name/Partner"
msgstr "Montant/Libellé/Partenaire"

View File

@@ -1,3 +0,0 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
account.access_account_bank_statement,account.bank.statement,account.model_account_bank_statement,account.group_account_user,1,1,1,0
account.access_account_bank_statement_line,account.bank.statement.line,account.model_account_bank_statement_line,account.group_account_user,1,1,1,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 account.access_account_bank_statement account.bank.statement account.model_account_bank_statement account.group_account_user 1 1 1 0
3 account.access_account_bank_statement_line account.bank.statement.line account.model_account_bank_statement_line account.group_account_user 1 1 1 0

View File

@@ -1,16 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<odoo>
<menuitem
id="deposit_menu"
name="Deposit"
parent="account.menu_finance"
sequence="5"/>
<menuitem
id="account_cash_deposit.account_cash_deposit_menu"
parent="account_usability_elabore.deposit_menu"
sequence="1"/>
<menuitem
id="account_check_deposit.menu_check_deposit_tree"
parent="account_usability_elabore.deposit_menu"
sequence="2"/>
</odoo>

View File

@@ -1,18 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="account_move_line_search_reconcile_view_inherit" model="ir.ui.view">
<field name="name">Account move line search reconcile view inherit</field>
<field name="model">account.move.line</field>
<field name="inherit_id" ref="account_reconcile_oca.account_move_line_search_reconcile_view"/>
<field name="arch" type="xml">
<data>
<field name="name" position="attributes">
<attribute name="filter_domain">['|', '|', '|', ('name', 'ilike', self), ('amount_residual', 'ilike', self), ('ref', 'ilike', self), ('partner_id', 'ilike', self)]</attribute>
<attribute name="string">Amount/Name/Partner</attribute>
</field>
</data>
</field>
</record>
</data>
</odoo>

View File

@@ -1,17 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data>
<record id="account_view_tree_inherit_message_attachment" model="ir.ui.view">
<field name="name">account view tree inherit message attachment</field>
<field name="model">account.move</field>
<field name="inherit_id" ref="account.view_in_invoice_bill_tree"/>
<field name="arch" type="xml">
<data>
<field name="state" position="after">
<field name="message_attachment_count"/>
</field>
</data>
</field>
</record>
</data>
</odoo>