add project revenue as per month year

This commit is contained in:
pawan.sharma 2022-08-12 13:09:52 +05:30
parent 78c1eb8721
commit 1bca1089ce
9 changed files with 155 additions and 0 deletions

View File

@ -0,0 +1,2 @@
from . import models
from . import wizard

View File

@ -0,0 +1,17 @@
{
'name': 'Project Revenue',
'version': '1.0.1',
'category': 'Project',
'author': 'SunArc Technologies',
'website': 'www.sunarctechnologies.com',
'license': 'LGPL-3',
'depends': ['base','hr','project'],
'data': [
'wizard/project_revenue_wizard.xml',
'security/ir.model.access.csv',
'views/custom_project.xml',
],
'installable': True,
'auto_install': False,
}

View File

@ -0,0 +1 @@
from . import custom_project

View File

@ -0,0 +1,34 @@
from odoo import api, fields, models
from odoo.exceptions import UserError, AccessError, ValidationError
from datetime import datetime
from dateutil import relativedelta
class CustomProject(models.Model):
_inherit = 'project.project'
revenue_amount_lines = fields.One2many('project.revenue.lines' , 'project_id')
class ProjectRevenueLines(models.Model):
_name = 'project.revenue.lines'
project_id = fields.Many2one('project.project')
start_date = fields.Datetime(required=True)
end_date = fields.Datetime(compute='_compute_end_date',store=True)
fixed_amount = fields.Float()

View File

@ -0,0 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_project_revenue_lines,access.project.revenue.lines,model_project_revenue_lines,,1,1,1,0
access_project_revenue_wizard,access.project.revenue.wizard,model_project_revenue_wizard,,1,1,1,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_project_revenue_lines access.project.revenue.lines model_project_revenue_lines 1 1 1 0
3 access_project_revenue_wizard access.project.revenue.wizard model_project_revenue_wizard 1 1 1 0

View File

@ -0,0 +1,23 @@
<odoo>
<record id="view_edit_project_inherit_revenue" model="ir.ui.view">
<field name="name"> project.edit.project.inherit</field>
<field name="model">project.project</field>
<field name="inherit_id" ref="project.edit_project"/>
<field name="arch" type="xml">
<xpath expr="//page[@name='settings']" position="after">
<page name="project_revenue_amount" string="Fixed Amount">
<button name="%(action_project_revenue_wizard)d" string="Add Revenue" type="action" class="oe_highlight"/>
<field name="revenue_amount_lines" context="{'project_id' : active_id}" readonly="1">
<tree editable="bottom">
<field name="project_id" invisible="1"/>
<field name="start_date"/>
<field name="end_date"/>
<field name="fixed_amount"/>
</tree>
</field>
</page>
</xpath>
</field>
</record>
</odoo>

View File

@ -0,0 +1 @@
from . import project_revenue_wizard

View File

@ -0,0 +1,44 @@
from odoo import api, fields, models
from odoo.exceptions import UserError, AccessError, ValidationError
from datetime import datetime
from dateutil import relativedelta
class CustomProjectWizard(models.TransientModel):
_name = 'project.revenue.wizard'
project_id = fields.Many2one('project.project')
start_date = fields.Datetime(required=True)
end_date = fields.Datetime(compute='_compute_end_date', store=True)
fixed_amount = fields.Float()
@api.depends('start_date')
def _compute_end_date(self):
for rec in self:
if rec.start_date:
rec.end_date = rec.start_date + relativedelta.relativedelta(months=1) - relativedelta.relativedelta(
days=1)
def action_set_revenue_lines(self):
values = {
'project_id':self.project_id.id,
'start_date':self.start_date,
'end_date':self.end_date,
'fixed_amount':self.fixed_amount
}
res = self.env['project.revenue.lines'].create(values)
return res
@api.onchange('start_date')
def _onchange_start_date(self):
active_id = self._context.get('active_ids', [])
project_object = self.env['project.project'].search([('id', '=', active_id[0])])
records = self.env['project.revenue.lines'].sudo().search([('project_id', '=', project_object.id)])
if self.start_date:
if self.start_date.day != 1:
raise AccessError('Please select first date of month')
else:
self.project_id = project_object.id
for line in records:
if self.start_date >= line.start_date and self.start_date <= line.end_date:
raise AccessError('Date already exist')

View File

@ -0,0 +1,30 @@
<odoo>
<record id="view_edit_project_wizard_revenue" model="ir.ui.view">
<field name="name"> project.edit.project.inherit,wizard</field>
<field name="model">project.revenue.wizard</field>
<field name="arch" type="xml">
<form string="Project Revenue Wizard">
<group>
<group>
<field name="project_id" readonly="1"/>
<field name="start_date"/>
<field name="end_date"/>
<field name="fixed_amount"/>
</group>
</group>
<footer>
<button string="OK" type="object" name="action_set_revenue_lines" class="btn-primary"/>
<button string="Cancel" class="btn-default" special="cancel"/>
</footer>
</form>
</field>
</record>
<record id="action_project_revenue_wizard" model="ir.actions.act_window">
<field name="name">Project Revenue wizard</field>
<field name="res_model">project.revenue.wizard</field>
<field name="view_id" ref="project_revenue_amount.view_edit_project_wizard_revenue"/>
<field name="target">new</field>
<field name="context">{ 'default_project_id': active_id, 'project_id': active_id } </field>
</record>
</odoo>