Merge pull request #538 from expsa/dev_odex25_accounting
Dev odex25 accounting
This commit is contained in:
commit
81170f63cf
|
|
@ -0,0 +1,2 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from . import models
|
||||
|
|
@ -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,
|
||||
}
|
||||
|
|
@ -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 "الإدارات الفرعية"
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from . import model
|
||||
|
|
@ -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')
|
||||
|
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
|
|
@ -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
|
||||
|
|
@ -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">
|
||||
|
|
|
|||
|
|
@ -0,0 +1,4 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
|
||||
from . import models
|
||||
|
|
@ -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,
|
||||
}
|
||||
|
|
@ -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 "الدفعات"
|
||||
|
|
@ -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 "الدفعات"
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from . import account_payment
|
||||
|
|
@ -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
|
||||
|
|
@ -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>
|
||||
Loading…
Reference in New Issue