Merge pull request #537 from expsa/pla-4541-add-new-budget-updates

add more budget modules
This commit is contained in:
Moutaz Muhammad 2024-08-05 16:23:35 +03:00 committed by GitHub
commit 5aaf011d5e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
16 changed files with 827 additions and 0 deletions

View File

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

View File

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
{
'name': 'Budget Extra Fields',
'version': '1.1',
'category': 'Odex25-Accounting/Odex25-Accounting',
'sequence': 30,
'summary': 'Manage Budget Classifications and Programs',
'description': """ Fix issues with payment
""",
'author': "Expert Co. Ltd.",
'website': "http://www.exp-sa.com",
'depends': ['account_budget_custom','hr'],
'data': [
'security/ir.model.access.csv',
'views/view.xml',
],
'installable': True,
'auto_install': False,
'application': False,
}

View File

@ -0,0 +1,198 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * budget_extra
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-08-05 13:17+0000\n"
"PO-Revision-Date: 2024-08-05 13:17+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: budget_extra
#: model:ir.actions.act_window,name:budget_extra.action_budget_account_program
#: model:ir.model,name:budget_extra.model_budget_account_program
#: model:ir.model.fields,field_description:budget_extra.field_crossovered_budget__account_program_id
#: model:ir.ui.menu,name:budget_extra.menu_budget_account_program
msgid "Account Program"
msgstr "التصنيف حسب البرنامج"
#. module: budget_extra
#: model:ir.model,name:budget_extra.model_crossovered_budget
msgid "Budget"
msgstr "الموازنة"
#. module: budget_extra
#: model:ir.ui.menu,name:budget_extra.menu_budget_classifications
msgid "Budget Classifcations"
msgstr "تصنيف"
#. module: budget_extra
#: model:ir.actions.act_window,name:budget_extra.action_budget_classification
#: model:ir.model,name:budget_extra.model_budget_classification
#: model:ir.model.fields,field_description:budget_extra.field_crossovered_budget__classification_id
#: model:ir.ui.menu,name:budget_extra.menu_budget_classification
msgid "Classification"
msgstr "تصنيف"
#. module: budget_extra
#: model:ir.model.fields,field_description:budget_extra.field_budget_account_program__code
#: model:ir.model.fields,field_description:budget_extra.field_budget_classification__code
#: model:ir.model.fields,field_description:budget_extra.field_budget_door__code
#: model:ir.model.fields,field_description:budget_extra.field_budget_general_classification__code
#: model:ir.model.fields,field_description:budget_extra.field_budget_higher_management__code
#: model:ir.model.fields,field_description:budget_extra.field_budget_management_classification__code
#: model:ir.model.fields,field_description:budget_extra.field_budget_program__code
#: model:ir.model.fields,field_description:budget_extra.field_budget_sub_management__code
msgid "Code"
msgstr "كود"
#. module: budget_extra
#: model:ir.model.fields,field_description:budget_extra.field_budget_account_program__create_uid
#: model:ir.model.fields,field_description:budget_extra.field_budget_classification__create_uid
#: model:ir.model.fields,field_description:budget_extra.field_budget_door__create_uid
#: model:ir.model.fields,field_description:budget_extra.field_budget_general_classification__create_uid
#: model:ir.model.fields,field_description:budget_extra.field_budget_higher_management__create_uid
#: model:ir.model.fields,field_description:budget_extra.field_budget_management_classification__create_uid
#: model:ir.model.fields,field_description:budget_extra.field_budget_program__create_uid
#: model:ir.model.fields,field_description:budget_extra.field_budget_sub_management__create_uid
msgid "Created by"
msgstr ""
#. module: budget_extra
#: model:ir.model.fields,field_description:budget_extra.field_budget_account_program__create_date
#: model:ir.model.fields,field_description:budget_extra.field_budget_classification__create_date
#: model:ir.model.fields,field_description:budget_extra.field_budget_door__create_date
#: model:ir.model.fields,field_description:budget_extra.field_budget_general_classification__create_date
#: model:ir.model.fields,field_description:budget_extra.field_budget_higher_management__create_date
#: model:ir.model.fields,field_description:budget_extra.field_budget_management_classification__create_date
#: model:ir.model.fields,field_description:budget_extra.field_budget_program__create_date
#: model:ir.model.fields,field_description:budget_extra.field_budget_sub_management__create_date
msgid "Created on"
msgstr "انشئ في"
#. module: budget_extra
#: model:ir.model.fields,field_description:budget_extra.field_budget_account_program__display_name
#: model:ir.model.fields,field_description:budget_extra.field_budget_classification__display_name
#: model:ir.model.fields,field_description:budget_extra.field_budget_door__display_name
#: model:ir.model.fields,field_description:budget_extra.field_budget_general_classification__display_name
#: model:ir.model.fields,field_description:budget_extra.field_budget_higher_management__display_name
#: model:ir.model.fields,field_description:budget_extra.field_budget_management_classification__display_name
#: model:ir.model.fields,field_description:budget_extra.field_budget_program__display_name
#: model:ir.model.fields,field_description:budget_extra.field_budget_sub_management__display_name
msgid "Display Name"
msgstr "الاسم"
#. module: budget_extra
#: model:ir.actions.act_window,name:budget_extra.action_budget_door
#: model:ir.model,name:budget_extra.model_budget_door
#: model:ir.model.fields,field_description:budget_extra.field_crossovered_budget__door_id
#: model:ir.ui.menu,name:budget_extra.menu_budget_door
msgid "Door"
msgstr "الباب"
#. module: budget_extra
#: model:ir.actions.act_window,name:budget_extra.action_budget_general_classification
#: model:ir.model,name:budget_extra.model_budget_general_classification
#: model:ir.model.fields,field_description:budget_extra.field_crossovered_budget__general_classification_id
#: model:ir.ui.menu,name:budget_extra.menu_budget_general_classification
msgid "General Classification"
msgstr "التصنيف العام"
#. module: budget_extra
#: model:ir.actions.act_window,name:budget_extra.action_budget_higher_management
#: model:ir.model,name:budget_extra.model_budget_higher_management
#: model:ir.model.fields,field_description:budget_extra.field_crossovered_budget__higher_management_id
#: model:ir.ui.menu,name:budget_extra.menu_budget_higher_management
msgid "Higher Management"
msgstr "الإدارات العليا"
#. module: budget_extra
#: model:ir.model.fields,field_description:budget_extra.field_budget_account_program__id
#: model:ir.model.fields,field_description:budget_extra.field_budget_classification__id
#: model:ir.model.fields,field_description:budget_extra.field_budget_door__id
#: model:ir.model.fields,field_description:budget_extra.field_budget_general_classification__id
#: model:ir.model.fields,field_description:budget_extra.field_budget_higher_management__id
#: model:ir.model.fields,field_description:budget_extra.field_budget_management_classification__id
#: model:ir.model.fields,field_description:budget_extra.field_budget_program__id
#: model:ir.model.fields,field_description:budget_extra.field_budget_sub_management__id
msgid "ID"
msgstr "رقم"
#. module: budget_extra
#: model:ir.model.fields,field_description:budget_extra.field_budget_account_program____last_update
#: model:ir.model.fields,field_description:budget_extra.field_budget_classification____last_update
#: model:ir.model.fields,field_description:budget_extra.field_budget_door____last_update
#: model:ir.model.fields,field_description:budget_extra.field_budget_general_classification____last_update
#: model:ir.model.fields,field_description:budget_extra.field_budget_higher_management____last_update
#: model:ir.model.fields,field_description:budget_extra.field_budget_management_classification____last_update
#: model:ir.model.fields,field_description:budget_extra.field_budget_program____last_update
#: model:ir.model.fields,field_description:budget_extra.field_budget_sub_management____last_update
msgid "Last Modified on"
msgstr "تم التعديل في"
#. module: budget_extra
#: model:ir.model.fields,field_description:budget_extra.field_budget_account_program__write_uid
#: model:ir.model.fields,field_description:budget_extra.field_budget_classification__write_uid
#: model:ir.model.fields,field_description:budget_extra.field_budget_door__write_uid
#: model:ir.model.fields,field_description:budget_extra.field_budget_general_classification__write_uid
#: model:ir.model.fields,field_description:budget_extra.field_budget_higher_management__write_uid
#: model:ir.model.fields,field_description:budget_extra.field_budget_management_classification__write_uid
#: model:ir.model.fields,field_description:budget_extra.field_budget_program__write_uid
#: model:ir.model.fields,field_description:budget_extra.field_budget_sub_management__write_uid
msgid "Last Updated by"
msgstr "تم التعديل بواسطة"
#. module: budget_extra
#: model:ir.model.fields,field_description:budget_extra.field_budget_account_program__write_date
#: model:ir.model.fields,field_description:budget_extra.field_budget_classification__write_date
#: model:ir.model.fields,field_description:budget_extra.field_budget_door__write_date
#: model:ir.model.fields,field_description:budget_extra.field_budget_general_classification__write_date
#: model:ir.model.fields,field_description:budget_extra.field_budget_higher_management__write_date
#: model:ir.model.fields,field_description:budget_extra.field_budget_management_classification__write_date
#: model:ir.model.fields,field_description:budget_extra.field_budget_program__write_date
#: model:ir.model.fields,field_description:budget_extra.field_budget_sub_management__write_date
msgid "Last Updated on"
msgstr "تم التعديل في"
#. module: budget_extra
#: model:ir.actions.act_window,name:budget_extra.action_budget_management_classification
#: model:ir.model,name:budget_extra.model_budget_management_classification
#: model:ir.model.fields,field_description:budget_extra.field_crossovered_budget__management_classification_id
#: model:ir.ui.menu,name:budget_extra.menu_budget_management_classification
msgid "Management Classification"
msgstr "التصنيف الاداري"
#. module: budget_extra
#: model:ir.model.fields,field_description:budget_extra.field_budget_account_program__name
#: model:ir.model.fields,field_description:budget_extra.field_budget_classification__name
#: model:ir.model.fields,field_description:budget_extra.field_budget_door__name
#: model:ir.model.fields,field_description:budget_extra.field_budget_general_classification__name
#: model:ir.model.fields,field_description:budget_extra.field_budget_higher_management__name
#: model:ir.model.fields,field_description:budget_extra.field_budget_management_classification__name
#: model:ir.model.fields,field_description:budget_extra.field_budget_program__name
#: model:ir.model.fields,field_description:budget_extra.field_budget_sub_management__name
msgid "Name"
msgstr "الاسم"
#. module: budget_extra
#: model:ir.actions.act_window,name:budget_extra.action_budget_program
#: model:ir.model,name:budget_extra.model_budget_program
#: model:ir.model.fields,field_description:budget_extra.field_crossovered_budget__program_id
#: model:ir.ui.menu,name:budget_extra.menu_budget_program
msgid "Program"
msgstr "البرنامج"
#. module: budget_extra
#: model:ir.actions.act_window,name:budget_extra.action_budget_sub_management
#: model:ir.model,name:budget_extra.model_budget_sub_management
#: model:ir.model.fields,field_description:budget_extra.field_crossovered_budget__sub_management_id
#: model:ir.ui.menu,name:budget_extra.menu_budget_sub_management
msgid "Sub Management"
msgstr "الإدارات الفرعية"

View File

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

View File

@ -0,0 +1,136 @@
from odoo import models, fields, api
from odoo.exceptions import ValidationError
class BudgetGeneralClassification(models.Model):
_name = 'budget.general.classification'
_description = 'General Classification'
_rec_name = 'name'
name = fields.Char(required=True)
code = fields.Char(required=True)
@api.constrains('code')
def _check_code_unique(self):
for record in self:
if self.search([('code', '=', record.code), ('id', '!=', record.id)]):
raise ValidationError('The code must be unique.')
class BudgetHigherManagement(models.Model):
_name = 'budget.higher.management'
_description = 'Higher Management'
_rec_name = 'name'
name = fields.Char(required=True)
code = fields.Char(required=True)
@api.constrains('code')
def _check_code_unique(self):
for record in self:
if self.search([('code', '=', record.code), ('id', '!=', record.id)]):
raise ValidationError('The code must be unique.')
class BudgetManagementClassification(models.Model):
_name = 'budget.management.classification'
_description = 'Management Classification'
_rec_name = 'name'
name = fields.Char(required=True)
code = fields.Char(required=True)
@api.constrains('code')
def _check_code_unique(self):
for record in self:
if self.search([('code', '=', record.code), ('id', '!=', record.id)]):
raise ValidationError('The code must be unique.')
class BudgetClassification(models.Model):
_name = 'budget.classification'
_description = 'Classification'
_rec_name = 'name'
name = fields.Char(required=True)
code = fields.Char(required=True)
@api.constrains('code')
def _check_code_unique(self):
for record in self:
if self.search([('code', '=', record.code), ('id', '!=', record.id)]):
raise ValidationError('The code must be unique.')
class BudgetSubManagement(models.Model):
_name = 'budget.sub.management'
_description = 'Sub Management'
_rec_name = 'name'
name = fields.Char(required=True)
code = fields.Char(required=True)
@api.constrains('code')
def _check_code_unique(self):
for record in self:
if self.search([('code', '=', record.code), ('id', '!=', record.id)]):
raise ValidationError('The code must be unique.')
class BudgetProgram(models.Model):
_name = 'budget.program'
_description = 'Program'
_rec_name = 'name'
name = fields.Char(required=True)
code = fields.Char(required=True)
@api.constrains('code')
def _check_code_unique(self):
for record in self:
if self.search([('code', '=', record.code), ('id', '!=', record.id)]):
raise ValidationError('The code must be unique.')
class BudgetAccountProgram(models.Model):
_name = 'budget.account.program'
_description = 'Account Program'
_rec_name = 'name'
name = fields.Char(required=True)
code = fields.Char(required=True)
@api.constrains('code')
def _check_code_unique(self):
for record in self:
if self.search([('code', '=', record.code), ('id', '!=', record.id)]):
raise ValidationError('The code must be unique.')
class BudgetDoor(models.Model):
_name = 'budget.door'
_description = 'Door'
_rec_name = 'name'
name = fields.Char(required=True)
code = fields.Char(required=True)
@api.constrains('code')
def _check_code_unique(self):
for record in self:
if self.search([('code', '=', record.code), ('id', '!=', record.id)]):
raise ValidationError('The code must be unique.')
class AccountBudget(models.Model):
_inherit = 'crossovered.budget'
general_classification_id = fields.Many2one('budget.general.classification', string='General Classification')
higher_management_id = fields.Many2one('budget.higher.management', string='Higher Management')
management_classification_id = fields.Many2one('budget.management.classification',
string='Management Classification')
classification_id = fields.Many2one('budget.classification', string='Classification')
sub_management_id = fields.Many2one('budget.sub.management', string='Sub Management')
program_id = fields.Many2one('budget.program', string='Program')
account_program_id = fields.Many2one('budget.account.program', string='Account Program')
door_id = fields.Many2one('budget.door', string='Door')

View File

@ -0,0 +1,9 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_budget_general_classification,budget.general.classification,model_budget_general_classification,base.group_user,1,1,1,1
access_budget_higher_management,budget.higher.management,model_budget_higher_management,base.group_user,1,1,1,1
access_budget_management_classification,budget.management.classification,model_budget_management_classification,base.group_user,1,1,1,1
access_budget_classification,budget.classification,model_budget_classification,base.group_user,1,1,1,1
access_budget_sub_management,budget.sub.management,model_budget_sub_management,base.group_user,1,1,1,1
access_budget_program,budget.program,model_budget_program,base.group_user,1,1,1,1
access_budget_account_program,budget.account.program,model_budget_account_program,base.group_user,1,1,1,1
access_budget_door,budget.door,model_budget_door,base.group_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_budget_general_classification budget.general.classification model_budget_general_classification base.group_user 1 1 1 1
3 access_budget_higher_management budget.higher.management model_budget_higher_management base.group_user 1 1 1 1
4 access_budget_management_classification budget.management.classification model_budget_management_classification base.group_user 1 1 1 1
5 access_budget_classification budget.classification model_budget_classification base.group_user 1 1 1 1
6 access_budget_sub_management budget.sub.management model_budget_sub_management base.group_user 1 1 1 1
7 access_budget_program budget.program model_budget_program base.group_user 1 1 1 1
8 access_budget_account_program budget.account.program model_budget_account_program base.group_user 1 1 1 1
9 access_budget_door budget.door model_budget_door base.group_user 1 1 1 1

View File

@ -0,0 +1,293 @@
<odoo>
<!-- Budget General Classification -->
<record id="view_budget_general_classification_tree" model="ir.ui.view">
<field name="name">budget.general.classification.tree</field>
<field name="model">budget.general.classification</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="code"/>
</tree>
</field>
</record>
<record id="view_budget_general_classification_form" model="ir.ui.view">
<field name="name">budget.general.classification.form</field>
<field name="model">budget.general.classification</field>
<field name="arch" type="xml">
<form>
<group>
<field name="name"/>
<field name="code"/>
</group>
</form>
</field>
</record>
<record id="action_budget_general_classification" model="ir.actions.act_window">
<field name="name">General Classification</field>
<field name="res_model">budget.general.classification</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem id="menu_budget_classifications" name="Budget Classifcations"
parent="account_budget_custom.menu_budget_operations"/>
<menuitem id="menu_budget_general_classification" name="General Classification" parent="menu_budget_classifications"
action="action_budget_general_classification"/>
<!-- Budget Higher Management -->
<record id="view_budget_higher_management_tree" model="ir.ui.view">
<field name="name">budget.higher.management.tree</field>
<field name="model">budget.higher.management</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="code"/>
</tree>
</field>
</record>
<record id="view_budget_higher_management_form" model="ir.ui.view">
<field name="name">budget.higher.management.form</field>
<field name="model">budget.higher.management</field>
<field name="arch" type="xml">
<form>
<group>
<field name="name"/>
<field name="code"/>
</group>
</form>
</field>
</record>
<record id="action_budget_higher_management" model="ir.actions.act_window">
<field name="name">Higher Management</field>
<field name="res_model">budget.higher.management</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem id="menu_budget_higher_management" name="Higher Management" parent="hr.menu_human_resources_configuration"
action="action_budget_higher_management" sequence="120"/> <!-- xxx-->
<!-- Budget Management Classification -->
<record id="view_budget_management_classification_tree" model="ir.ui.view">
<field name="name">budget.management.classification.tree</field>
<field name="model">budget.management.classification</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="code"/>
</tree>
</field>
</record>
<record id="view_budget_management_classification_form" model="ir.ui.view">
<field name="name">budget.management.classification.form</field>
<field name="model">budget.management.classification</field>
<field name="arch" type="xml">
<form>
<group>
<field name="name"/>
<field name="code"/>
</group>
</form>
</field>
</record>
<record id="action_budget_management_classification" model="ir.actions.act_window">
<field name="name">Management Classification</field>
<field name="res_model">budget.management.classification</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem id="menu_budget_management_classification" name="Management Classification"
parent="menu_budget_classifications" action="action_budget_management_classification"/>
<!-- Budget Classification -->
<record id="view_budget_classification_tree" model="ir.ui.view">
<field name="name">budget.classification.tree</field>
<field name="model">budget.classification</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="code"/>
</tree>
</field>
</record>
<record id="view_budget_classification_form" model="ir.ui.view">
<field name="name">budget.classification.form</field>
<field name="model">budget.classification</field>
<field name="arch" type="xml">
<form>
<group>
<field name="name"/>
<field name="code"/>
</group>
</form>
</field>
</record>
<record id="action_budget_classification" model="ir.actions.act_window">
<field name="name">Classification</field>
<field name="res_model">budget.classification</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem id="menu_budget_classification" name="Classification" parent="menu_budget_classifications"
action="action_budget_classification"/>
<!-- Budget Sub Management -->
<record id="view_budget_sub_management_tree" model="ir.ui.view">
<field name="name">budget.sub.management.tree</field>
<field name="model">budget.sub.management</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="code"/>
</tree>
</field>
</record>
<record id="view_budget_sub_management_form" model="ir.ui.view">
<field name="name">budget.sub.management.form</field>
<field name="model">budget.sub.management</field>
<field name="arch" type="xml">
<form>
<group>
<field name="name"/>
<field name="code"/>
</group>
</form>
</field>
</record>
<record id="action_budget_sub_management" model="ir.actions.act_window">
<field name="name">Sub Management</field>
<field name="res_model">budget.sub.management</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem id="menu_budget_sub_management" name="Sub Management" parent="hr.menu_human_resources_configuration"
action="action_budget_sub_management" sequence="150"/> <!-- xxx-->
<!-- Budget Program -->
<record id="view_budget_program_tree" model="ir.ui.view">
<field name="name">budget.program.tree</field>
<field name="model">budget.program</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="code"/>
</tree>
</field>
</record>
<record id="view_budget_program_form" model="ir.ui.view">
<field name="name">budget.program.form</field>
<field name="model">budget.program</field>
<field name="arch" type="xml">
<form>
<group>
<field name="name"/>
<field name="code"/>
</group>
</form>
</field>
</record>
<record id="action_budget_program" model="ir.actions.act_window">
<field name="name">Program</field>
<field name="res_model">budget.program</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem id="menu_budget_program" name="Program" parent="menu_budget_classifications"
action="action_budget_program"/>
<!-- Budget Account Program -->
<record id="view_budget_account_program_tree" model="ir.ui.view">
<field name="name">budget.account.program.tree</field>
<field name="model">budget.account.program</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="code"/>
</tree>
</field>
</record>
<record id="view_budget_account_program_form" model="ir.ui.view">
<field name="name">budget.account.program.form</field>
<field name="model">budget.account.program</field>
<field name="arch" type="xml">
<form>
<group>
<field name="name"/>
<field name="code"/>
</group>
</form>
</field>
</record>
<record id="action_budget_account_program" model="ir.actions.act_window">
<field name="name">Account Program</field>
<field name="res_model">budget.account.program</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem id="menu_budget_account_program" name="Account Program" parent="menu_budget_classifications"
action="action_budget_account_program"/>
<!-- Budget Door -->
<record id="view_budget_door_tree" model="ir.ui.view">
<field name="name">budget.door.tree</field>
<field name="model">budget.door</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="code"/>
</tree>
</field>
</record>
<record id="view_budget_door_form" model="ir.ui.view">
<field name="name">budget.door.form</field>
<field name="model">budget.door</field>
<field name="arch" type="xml">
<form>
<group>
<field name="name"/>
<field name="code"/>
</group>
</form>
</field>
</record>
<record id="action_budget_door" model="ir.actions.act_window">
<field name="name">Door</field>
<field name="res_model">budget.door</field>
<field name="view_mode">tree,form</field>
</record>
<menuitem id="menu_budget_door" name="Door" parent="menu_budget_classifications" action="action_budget_door"/>
<record model="ir.ui.view" id="crossovered_budget_view_form">
<field name="name">crossovered.budget.view.inherit.form</field>
<field name="model">crossovered.budget</field>
<field name="inherit_id" ref="account_budget_custom.crossovered_budget_view_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='user_id']" position="after">
<field name="general_classification_id"/>
<field name="higher_management_id"/>
<field name="management_classification_id"/>
<field name="classification_id"/>
<field name="sub_management_id"/>
<field name="program_id"/>
<field name="account_program_id"/>
<field name="door_id"/>
</xpath>
</field>
</record>
</odoo>

View File

@ -6,6 +6,8 @@ from odoo.exceptions import UserError
class AccountPayment(models.Model):
_inherit = "account.payment"
analytic_account_id = fields.Many2one('account.analytic.account', string='Analytic Account', copy=False)
def action_open_manual_reconciliation_widget(self):
''' Open the manual reconciliation widget for the current payment.
:return: A dictionary representing an action.
@ -31,3 +33,30 @@ class AccountPayment(models.Model):
'tag': 'manual_reconciliation_view',
'context': action_context,
}
def action_post(self):
res = super(AccountPayment, self).action_post()
for payment in self:
payment.state= 'posted'
if payment.analytic_account_id and payment.move_id:
for line in payment.move_id.line_ids:
line.analytic_account_id = payment.analytic_account_id.id
return res
def action_cancel(self):
res = super(AccountPayment, self).action_cancel()
for payment in self:
payment.state= 'cancel'
if payment.analytic_account_id and payment.move_id:
for line in payment.move_id.line_ids:
line.analytic_account_id = payment.analytic_account_id.id
return res
def action_draft(self):
res = super(AccountPayment, self).action_draft()
for payment in self:
payment.state= 'draft'
if payment.analytic_account_id and payment.move_id:
for line in payment.move_id.line_ids:
line.analytic_account_id = payment.analytic_account_id.id
return res

View File

@ -8,6 +8,9 @@
<xpath expr="//field[@name='move_id']" position="attributes">
<attribute name="groups">account.group_account_manager</attribute>
</xpath>
<xpath expr="//field[@name='move_id']" position="after">
<field name="analytic_account_id"/>
</xpath>
<!-- Stat button to open the manual reconciliation widget -->
<xpath expr="//div[@name='button_box']" position="inside">

View File

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

View File

@ -0,0 +1,19 @@
# -*- coding: utf-8 -*-
{
'name': 'Odex25 Payment Fix',
'version': '1.1',
'category': 'Odex25-Accounting/Odex25-Accounting',
'sequence': 30,
'summary': 'Manage financial and analytic accounting',
'description': """ Fix issues with payment
""",
'author': "Expert Co. Ltd.",
'website': "http://www.exp-sa.com",
'depends': ['account', 'odex25_account_accountant'],
'data': [
'views/account_payment_views.xml',
],
'installable': True,
'auto_install': False,
'application': False,
}

View File

@ -0,0 +1,26 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * odex25_account_payment_fix
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-08-05 12:51+0000\n"
"PO-Revision-Date: 2024-08-05 12:51+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: odex25_account_payment_fix
#: model:ir.model.fields,field_description:odex25_account_payment_fix.field_account_payment__analytic_account_id
msgid "Analytic Account"
msgstr "الحساب التحليلي"
#. module: odex25_account_payment_fix
#: model:ir.model,name:odex25_account_payment_fix.model_account_payment
msgid "Payments"
msgstr "الدفعات"

View File

@ -0,0 +1,26 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * odex25_account_payment_fix
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-08-05 12:51+0000\n"
"PO-Revision-Date: 2024-08-05 12:51+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: odex25_account_payment_fix
#: model:ir.model.fields,field_description:odex25_account_payment_fix.field_account_payment__analytic_account_id
msgid "Analytic Account"
msgstr "الحساب التحليلي"
#. module: odex25_account_payment_fix
#: model:ir.model,name:odex25_account_payment_fix.model_account_payment
msgid "Payments"
msgstr "الدفعات"

View File

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

View File

@ -0,0 +1,43 @@
# -*- coding: utf-8 -*-
from odoo import models, fields,api, _
class AccountPayment(models.Model):
_inherit = "account.payment"
analytic_account_id = fields.Many2one('account.analytic.account', string='Analytic Account', copy=True)
def action_post(self):
res = super(AccountPayment, self).action_post()
for payment in self:
payment.state= 'posted'
if payment.analytic_account_id and payment.move_id:
for line in payment.move_id.line_ids:
line.analytic_account_id = payment.analytic_account_id.id
return res
def action_cancel(self):
res = super(AccountPayment, self).action_cancel()
for payment in self:
payment.state= 'cancel'
if payment.analytic_account_id and payment.move_id:
for line in payment.move_id.line_ids:
line.analytic_account_id = payment.analytic_account_id.id
return res
def action_draft(self):
res = super(AccountPayment, self).action_draft()
for payment in self:
payment.state= 'draft'
if payment.analytic_account_id and payment.move_id:
for line in payment.move_id.line_ids:
line.analytic_account_id = payment.analytic_account_id.id
return res
@api.model
def create(self, vals):
res = super(AccountPayment, self).create(vals)
if res.analytic_account_id and res.move_id:
for line in res.move_id.line_ids:
line.analytic_account_id = res.analytic_account_id.id
return res

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_account_payment_form_inherit_odex25_account_accountant" model="ir.ui.view">
<field name="name">account.payment.form.inherit.odex25_account_accountant</field>
<field name="model">account.payment</field>
<field name="inherit_id" ref="account.view_account_payment_form"/>
<field name="arch" type="xml">
<xpath expr="//field[@name='move_id']" position="after">
<field name="analytic_account_id"/>
</xpath>
</field>
</record>
</odoo>