[IMP] account,hr(_expense): Employee private address should be 'private' instead of 'contact'

Purpose of this task is,lots of business flows can be crashed if
the field Private Address(address_home_id) is a private address instead
of a regular contact.

so in this commit,we change the demo data for employee and set the
private type address on employee for private address and also fix
the flows on which errors could occur.

Currently billing administrator does not have right for private address
and while creating payment from expense it was going to set the
customer from the employee's private address on payment so give the
private address right to the billing adminnistrator.
Also chaned admin/demo user's private address as 'private' instead of
regular contact.
and on hr_expense use the Sudo while accessing the home address this
method is used from payslip too.

TaskID:2170016

closes odoo/odoo#46628

Closes: #46628
Related: odoo/enterprise#8924
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
This commit is contained in:
Nidhi Patel
2020-06-11 07:09:48 +00:00
committed by Barad Mahendra
parent 40793fde23
commit 8438286478
5 changed files with 38 additions and 14 deletions
+1 -1
View File
@@ -40,7 +40,7 @@
<record id="group_account_manager" model="res.groups">
<field name="name">Billing Administrator</field>
<field name="category_id" ref="base.module_category_accounting_accounting"/>
<field name="implied_ids" eval="[(4, ref('group_account_invoice'))]"/>
<field name="implied_ids" eval="[(4, ref('group_account_invoice')),(4, ref('base.group_private_addresses'))]"/>
</record>
<record id="base.user_admin" model="res.users">
+9 -1
View File
@@ -10,11 +10,19 @@
<field name="name">Sales</field>
</record>
<record id="res_partner_admin_private_address" model="res.partner">
<field name="name">Administrator</field>
<field name="company_id" ref="base.main_company"/>
<field name="email">admin@example.com</field>
<field name="image_1920" type="base64" file="base/static/img/avatar_grey.png"/>
<field name="type">private</field>
</record>
<record id="employee_admin" model="hr.employee">
<field name="name" eval="obj(ref('base.partner_admin')).name" model="res.partner"/>
<field name="user_id" ref="base.user_admin"/>
<field name="address_id" ref="base.partner_admin"/>
<field name="address_home_id" ref="base.partner_admin"/>
<field name="address_home_id" ref="res_partner_admin_private_address"/>
<field name="image_1920" eval="obj(ref('base.partner_admin')).image_1920" model="res.partner"/>
</record>
+24
View File
@@ -133,6 +133,29 @@ If you have development competencies, we can propose you specific traineeships</
<field name="color" eval="4"/>
</record>
<!-- Address -->
<record id="hr.res_partner_admin_private_address" model="res.partner">
<field name="name">Mitchell Admin</field>
<field name="street">215 Vine St</field>
<field name="city">Scranton</field>
<field name="zip">18503</field>
<field name="country_id" ref="base.us"/>
<field name='state_id' ref="base.state_us_39"/>
<field name="phone">+1 555-555-5555</field>
<field name="email">admin@yourcompany.example.com</field>
</record>
<record id="res_partner_demo_private_address" model="res.partner">
<field name="name">Mark Demo</field>
<field name="street">361-7936 Feugiat St.</field>
<field name="zip">58521</field>
<field name="city">Williston</field>
<field name="country_id" ref="base.us"/>
<field name="phone">+1 555-555-5757</field>
<field name="email">demo@yourcompany.example.com</field>
<field name="type">private</field>
</record>
<!--Employees-->
<record id="employee_admin" model="hr.employee">
@@ -215,6 +238,7 @@ If you have development competencies, we can propose you specific traineeships</
<field name="user_id" ref="base.user_demo"/>
<field name="department_id" ref="dep_rd"/>
<field name="parent_id" ref="employee_admin"/>
<field name="address_home_id" ref="res_partner_demo_private_address"/>
<field name="job_id" ref="hr.job_developer"/>
<field name="job_title">Experienced Developer</field>
<field name="category_ids" eval="[(6, 0, [ref('employee_category_4')])]"/>
@@ -24,14 +24,6 @@
<field name="type">private</field>
</record>
<record id="hr.employee_admin" model="hr.employee">
<field name="address_home_id" ref="res_partner_address_fp"/>
</record>
<record id="hr.employee_qdp" model="hr.employee">
<field name="address_home_id" ref="res_partner_address_fp"/>
</record>
<record id="hr.employee_fme" model="hr.employee">
<field name="address_home_id" ref="res_partner_address_fp"/>
</record>
+4 -4
View File
@@ -383,9 +383,9 @@ class HrExpense(models.Model):
raise UserError(_("No credit account found for the %s journal, please configure one.") % (self.sheet_id.bank_journal_id.name))
account_dest = self.sheet_id.bank_journal_id.default_credit_account_id.id
else:
if not self.employee_id.address_home_id:
if not self.employee_id.sudo().address_home_id:
raise UserError(_("No Home Address found for the employee %s, please configure one.") % (self.employee_id.name))
partner = self.employee_id.address_home_id.with_company(self.company_id)
partner = self.employee_id.sudo().address_home_id.with_company(self.company_id)
account_dest = partner.property_account_payable_id.id or partner.parent_id.property_account_payable_id.id
return account_dest
@@ -404,7 +404,7 @@ class HrExpense(models.Model):
taxes = expense.tax_ids.with_context(round=True).compute_all(expense.unit_amount, expense.currency_id, expense.quantity, expense.product_id)
total_amount = 0.0
total_amount_currency = 0.0
partner_id = expense.employee_id.address_home_id.commercial_partner_id.id
partner_id = expense.employee_id.sudo().address_home_id.commercial_partner_id.id
# source move line
amount = taxes['total_excluded']
@@ -509,7 +509,7 @@ class HrExpense(models.Model):
payment = self.env['account.payment'].create({
'payment_method_id': payment_methods and payment_methods[0].id or False,
'payment_type': 'outbound' if total_amount < 0 else 'inbound',
'partner_id': expense.employee_id.address_home_id.commercial_partner_id.id,
'partner_id': expense.employee_id.sudo().address_home_id.commercial_partner_id.id,
'partner_type': 'supplier',
'journal_id': journal.id,
'date': expense.date,