summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorNicolas Martinelli <nim@odoo.com>2015-08-27 11:48:16 +0200
committerNicolas Martinelli <nim@odoo.com>2015-08-27 18:10:18 +0200
commite021a08b300a14f0f41ffe545ffda2c8e0088100 (patch)
tree7a540e736c854a16bb8e35ab259e3a87a67a44be /addons
parent868e7c6a6ecaf7b763e1943222b638e01316f030 (diff)
[IMP] hr*: adaptation due to the new Sale module
Major changes: - No use of UoS anymore - No journal since invoicing is managed in Sale - No invoicing from timesheet Reason: complete rewrite of the Sale module. Responsible: fp, dbo, nim
Diffstat (limited to 'addons')
-rw-r--r--addons/hr_expense/hr_expense.py6
-rw-r--r--addons/hr_expense/hr_expense_demo.xml23
-rw-r--r--addons/hr_expense/hr_expense_view.xml8
-rw-r--r--addons/hr_expense/security/ir.model.access.csv1
-rw-r--r--addons/hr_expense/test/expense_demo.yml5
-rw-r--r--addons/hr_expense/views/report_expense.xml2
-rw-r--r--addons/hr_timesheet/__openerp__.py2
-rw-r--r--addons/hr_timesheet/hr_timesheet.py142
-rw-r--r--addons/hr_timesheet/hr_timesheet_data.xml13
-rw-r--r--addons/hr_timesheet/hr_timesheet_demo.xml26
-rw-r--r--addons/hr_timesheet/hr_timesheet_demo.yml122
-rw-r--r--addons/hr_timesheet/hr_timesheet_view.xml76
-rw-r--r--addons/hr_timesheet/report/hr_timesheet_report.py6
-rw-r--r--addons/hr_timesheet/report/hr_timesheet_report_view.xml2
-rw-r--r--addons/hr_timesheet/security/ir.model.access.csv2
-rw-r--r--addons/hr_timesheet_sheet/__openerp__.py2
-rw-r--r--addons/hr_timesheet_sheet/hr_timesheet_sheet.py12
-rw-r--r--addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml23
-rw-r--r--addons/hr_timesheet_sheet/report/hr_timesheet_report.py3
-rw-r--r--addons/hr_timesheet_sheet/report/hr_timesheet_report_view.xml9
-rw-r--r--addons/hr_timesheet_sheet/static/src/js/timesheet.js9
-rw-r--r--addons/hr_timesheet_sheet/test/test_hr_timesheet_sheet.yml2
22 files changed, 97 insertions, 399 deletions
diff --git a/addons/hr_expense/hr_expense.py b/addons/hr_expense/hr_expense.py
index 0dc7599f70a..0f0de3f4d21 100644
--- a/addons/hr_expense/hr_expense.py
+++ b/addons/hr_expense/hr_expense.py
@@ -199,7 +199,7 @@ class hr_expense_expense(osv.osv):
'ref': x.get('ref', False),
'quantity': x.get('quantity',1.00),
'product_id': x.get('product_id', False),
- 'product_uom_id': x.get('uos_id', False),
+ 'product_uom_id': x.get('uom_id', False),
'analytic_account_id': x.get('account_analytic_id', False),
}
@@ -342,7 +342,7 @@ class hr_expense_expense(osv.osv):
'price':line.total_amount,
'account_id':acc.id,
'product_id':line.product_id.id,
- 'uos_id':line.uom_id.id,
+ 'uom_id':line.uom_id.id,
'account_analytic_id':line.analytic_account.id,
}
@@ -399,7 +399,7 @@ class hr_expense_line(osv.osv):
'total_amount': fields.function(_amount, string='Total', digits=0),
'unit_amount': fields.float('Unit Price', digits_compute=dp.get_precision('Product Price')),
'unit_quantity': fields.float('Quantities', digits_compute= dp.get_precision('Product Unit of Measure')),
- 'product_id': fields.many2one('product.product', 'Product', domain=[('hr_expense_ok','=',True)]),
+ 'product_id': fields.many2one('product.product', 'Product', domain=[('hr_expense_ok','=',True)], required=True),
'uom_id': fields.many2one('product.uom', 'Unit of Measure', required=True),
'description': fields.text('Description'),
'analytic_account': fields.many2one('account.analytic.account','Analytic account'),
diff --git a/addons/hr_expense/hr_expense_demo.xml b/addons/hr_expense/hr_expense_demo.xml
index 4c3d013294c..85ca7547efd 100644
--- a/addons/hr_expense/hr_expense_demo.xml
+++ b/addons/hr_expense/hr_expense_demo.xml
@@ -26,7 +26,7 @@
<field name="list_price">700.0</field>
<field name="standard_price">700.0</field>
<field name="type">service</field>
- <field name="name">Air Ticket</field>
+ <field name="name">Air Flight</field>
<field name="default_code">AT</field>
<field name="categ_id" ref="hr_expense.cat_expense"/>
<field name="hr_expense_ok" eval="True" />
@@ -50,7 +50,8 @@
<record id="expenses_line0" model="hr.expense.line">
<field name="name">Travel Expenses</field>
<field name="date_value" eval="time.strftime('%Y-08-10')"/>
- <field name="analytic_account" ref="analytic.analytic_consultancy"/>
+ <field name="analytic_account" ref="analytic.analytic_our_super_product"/>
+ <field name="product_id" ref="hotel_rent"/>
<field name="expense_id" ref="expenses0"/>
<field eval="200.0" name="unit_amount"/>
<field name="uom_id" ref="product.product_uom_unit"/>
@@ -66,7 +67,7 @@
<record id="travel_by_air_sep" model="hr.expense.line">
<field name="name">Travel by Air</field>
<field name="date_value" eval="time.strftime('%Y-09-03')"/>
- <field name="analytic_account" ref="analytic.analytic_consultancy"/>
+ <field name="analytic_account" ref="analytic.analytic_our_super_product"/>
<field name="product_id" ref="air_ticket"/>
<field name="expense_id" ref="sep_expenses"/>
<field eval="700.0" name="unit_amount"/>
@@ -86,14 +87,14 @@
</record>
<record id="car_travel_sep" model="hr.expense.line">
- <field name="name">Bruxelles - Paris</field>
- <field name="date_value" eval="time.strftime('%Y-09-15')"/>
- <field name="analytic_account" ref="analytic.analytic_nebula"/>
- <field name="product_id" ref="car_travel"/>
- <field name="expense_id" ref="sep_expenses"/>
- <field eval="0.30" name="unit_amount"/>
- <field name="uom_id" ref="product.product_uom_km"/>
- <field eval="622.0" name="unit_quantity"/>
+ <field name="name">Bruxelles - Paris</field>
+ <field name="date_value" eval="time.strftime('%Y-09-15')"/>
+ <field name="analytic_account" ref="analytic.analytic_nebula"/>
+ <field name="product_id" ref="car_travel"/>
+ <field name="expense_id" ref="sep_expenses"/>
+ <field eval="0.30" name="unit_amount"/>
+ <field name="uom_id" ref="product.product_uom_km"/>
+ <field eval="622.0" name="unit_quantity"/>
</record>
</data>
diff --git a/addons/hr_expense/hr_expense_view.xml b/addons/hr_expense/hr_expense_view.xml
index 811cd669dfe..2d382b37f13 100644
--- a/addons/hr_expense/hr_expense_view.xml
+++ b/addons/hr_expense/hr_expense_view.xml
@@ -13,7 +13,7 @@
<field name="date_value"/>
<field name="name"/>
<field name="ref"/>
- <field domain="[('type','in',['normal','contract']), ('parent_id','!=',False)]" name="analytic_account" groups="analytic.group_analytic_accounting"/>
+ <field name="analytic_account"/>
<field name="unit_amount"/>
<field name="unit_quantity"/>
<field name="total_amount" sum="Total" widget="monetary"/>
@@ -94,7 +94,7 @@
<field name="product_id" on_change="onchange_product_id(product_id, context)" context="{'default_hr_expense_ok':1}"/>
<field name="name"/>
<field name="ref"/>
- <field domain="[('type','in',['normal','contract'])]" name="analytic_account" groups="analytic.group_analytic_accounting"/>
+ <field name="analytic_account"/>
</group>
<group>
<field name="unit_amount"/>
@@ -113,7 +113,7 @@
<field name="date_value" string="Expense Date"/>
<field name="name" string="Description"/>
<field name="ref"/>
- <field domain="[('type','in',['normal','contract'])]" name="analytic_account" groups="analytic.group_analytic_accounting"/>
+ <field name="analytic_account"/>
<field name="uom_id" on_change="onchange_uom(product_id, uom_id, context)"/>
<field name="unit_amount"/>
<field name="unit_quantity"/>
@@ -130,7 +130,7 @@
</group>
</group>
</page>
- <page string="Accounting Info" groups="account.group_account_user" attrs="{'invisible': [('state', 'not in', ['done', 'paid'])]}">
+ <page string="Accounting Info" groups="account.group_account_user" attrs="{'invisible': [('state', 'not in', ['done', 'paid', 'accepted'])]}">
<group>
<group>
<field name="journal_id" widget="selection" attrs="{'readonly':[('state','=','done')]}" domain="[('type', '=', 'purchase')]" string="Journal"/>
diff --git a/addons/hr_expense/security/ir.model.access.csv b/addons/hr_expense/security/ir.model.access.csv
index c3f7b604da9..bfc865a5243 100644
--- a/addons/hr_expense/security/ir.model.access.csv
+++ b/addons/hr_expense/security/ir.model.access.csv
@@ -12,7 +12,6 @@ access_account_journal_user,account.journal.user,account.model_account_journal,b
access_account_journal_employee,account.journal.employee,account.model_account_journal,base.group_user,1,0,0,0
access_account_invoice_user,account.invoice.user,account.model_account_invoice,base.group_hr_user,1,1,1,1
access_account_invoice_line_user,account.invoice.line.user,account.model_account_invoice_line,base.group_hr_user,1,1,1,1
-access_account_analytic_journal_user,account.ianalytic.journal.user,analytic.model_account_analytic_journal,base.group_hr_user,1,1,1,1
access_account_invoice_tax_user,account.invoice.tax.user,account.model_account_invoice_tax,base.group_hr_user,1,1,1,1
access_account_move_user,account.move.user,account.model_account_move,base.group_hr_user,1,1,1,1
access_account_move_line_user,account.move.line.user,account.model_account_move_line,base.group_hr_user,1,1,1,1
diff --git a/addons/hr_expense/test/expense_demo.yml b/addons/hr_expense/test/expense_demo.yml
index 06ea4265a1f..cae5817d9a2 100644
--- a/addons/hr_expense/test/expense_demo.yml
+++ b/addons/hr_expense/test/expense_demo.yml
@@ -3,9 +3,6 @@
employee_id: hr.employee_mit
name : 'John Smith'
-
- !record {model: product.product, id: car_travel}:
- hr_expense_ok: 'True'
--
!record {model: hr.expense.line, id: expense_line}:
- product_id: car_travel
+ product_id: hr_expense.car_travel
name: 'Car Travel Expenses'
diff --git a/addons/hr_expense/views/report_expense.xml b/addons/hr_expense/views/report_expense.xml
index 5bb2e1dd8e2..53f120f8b09 100644
--- a/addons/hr_expense/views/report_expense.xml
+++ b/addons/hr_expense/views/report_expense.xml
@@ -44,7 +44,7 @@
<td>
<span t-field="line.name"/>
<span t-field="line.description"/><br/>
- <span t-field="line.analytic_account.complete_name"/>
+ <span t-field="line.analytic_account.name"/>
</td>
<td style="text-center">
<span t-field="line.ref"/>
diff --git a/addons/hr_timesheet/__openerp__.py b/addons/hr_timesheet/__openerp__.py
index 13bb7df9426..0eb4c7dcf7a 100644
--- a/addons/hr_timesheet/__openerp__.py
+++ b/addons/hr_timesheet/__openerp__.py
@@ -27,11 +27,9 @@ up a management by affair.
'hr_timesheet_view.xml',
'report/hr_timesheet_report_view.xml',
'hr_timesheet_installer.xml',
- 'hr_timesheet_data.xml',
'hr_dashboard.xml',
],
'demo': [
- 'hr_timesheet_demo.xml',
'hr_timesheet_demo.yml',
],
'test': [
diff --git a/addons/hr_timesheet/hr_timesheet.py b/addons/hr_timesheet/hr_timesheet.py
index 2877dabd8f4..b83d3c4bb74 100644
--- a/addons/hr_timesheet/hr_timesheet.py
+++ b/addons/hr_timesheet/hr_timesheet.py
@@ -1,149 +1,15 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
-from openerp import models, api, fields, exceptions
-
-from openerp.tools.translate import _
-
-
-class HrEmployee(models.Model):
- _inherit = "hr.employee"
-
- @api.model
- def _get_default_analytic_journal(self):
- # We need the "or ..." because we need an empty recordset of the right type, 'False' is not enough.
- return self.env.ref('hr_timesheet.analytic_journal', raise_if_not_found=False) or self.env['account.analytic.journal']
-
- product_id = fields.Many2one('product.product', 'Product', help="If you want to reinvoice working time of employees, link this employee to a service to determinate the cost price of the job.")
- journal_id = fields.Many2one('account.analytic.journal', 'Analytic Journal', default=_get_default_analytic_journal)
- uom_id = fields.Many2one('product.uom', related='product_id.uom_id', string='Unit of Measure', store=True, readonly=True)
+from openerp import models, fields
+class Company(models.Model):
+ _inherit = 'res.company'
class account_analytic_line(models.Model):
_inherit = 'account.analytic.line'
-
- is_timesheet = fields.Boolean()
-
- @api.model
- def _get_employee_product(self, user_id=None):
- emp = self.env['hr.employee'].search([('user_id', '=', user_id or self.env.uid)], limit=1)
- if emp and emp.product_id.id:
- return emp.product_id.id
- else:
- return None
-
- @api.model
- def _get_employee_unit(self, user_id=None):
- emp = self.env['hr.employee'].search([('user_id', '=', user_id or self.env.uid)], limit=1)
- if emp and emp.product_id.uom_id.id:
- return emp.product_id.uom_id.id
- else:
- return None
-
- @api.model
- def _get_general_account(self, user_id=None):
- emp = self.env['hr.employee'].search([('user_id', '=', user_id or self.env.uid)], limit=1)
- if emp and emp.product_id.categ_id.property_account_expense_categ_id.id:
- return emp.product_id.categ_id.property_account_expense_categ_id.id
- else:
- return None
-
- @api.model
- def _get_analytic_journal(self, user_id=None):
- emp = self.env['hr.employee'].search([('user_id', '=', user_id or self.env.uid)], limit=1)
- if emp and emp.journal_id.id:
- return emp.journal_id.id
- else:
- journal = self.env['account.analytic.journal'].search([('type', '=', 'general')], limit=1)
-
- if journal:
- return journal.id
- else:
- return None
-
- @api.onchange('user_id')
- def V8_on_change_user_id(self):
- new_values = self.on_change_user_id(self.user_id.id, self.is_timesheet)
- if new_values.get("value"):
- for key, value in new_values["value"].iteritems():
- setattr(self, key, value)
-
- def on_change_user_id(self, cr, uid, ids, user_id, is_timesheet=False, context=None):
- if not is_timesheet or not user_id:
- return {}
- res = {"value": {
- 'journal_id': self._get_analytic_journal(cr, uid, user_id, context=context),
- 'product_id': self._get_employee_product(cr, uid, user_id, context=context),
- 'uom_id': self._get_employee_unit(cr, uid, user_id, context=context),
- 'general_account_id': self._get_general_account(cr, uid, user_id, context=context)
- }
- }
- return res
-
- def on_change_unit_amount(self, cr, uid, id, prod_id, unit_amount, company_id, unit=False, journal_id=False, context=None):
- res = {'value': {}}
- if unit_amount:
- # find company
- company_id = self.pool.get('res.company')._company_default_get(cr, uid, 'account.analytic.line', context=context)
- r = super(account_analytic_line, self).on_change_unit_amount(cr, uid, id, prod_id, unit_amount, company_id, unit, journal_id, context=context)
- if r:
- res.update(r)
- # update unit of measurement
- if prod_id:
- uom = self.pool.get('product.product').browse(cr, uid, prod_id, context=context)
- if uom.uom_id:
- res['value'].update({'product_uom_id': uom.uom_id.id})
- else:
- res['value'].update({'product_uom_id': False})
- return res
-
- @api.onchange('date')
- def on_change_date(self):
- if self.is_timesheet and self._origin.date and (self._origin.date != self.date):
- raise exceptions.Warning(_('Changing the date will let this entry appear in the timesheet of the new date.'))
-
- @api.model
- def create(self, values):
- if values.get('is_timesheet'):
- if not values.get('product_id'):
- values['product_id'] = self._get_employee_product()
- if not values.get('product_uom_id'):
- values['product_uom_id'] = self._get_employee_unit()
- if not values.get('general_account_id'):
- values['general_account_id'] = self._get_general_account()
- if not values.get('journal_id'):
- values['journal_id'] = self._get_analytic_journal()
- return super(account_analytic_line, self).create(values)
-
+ is_timesheet = fields.Boolean(string="Is a Timesheet")
class account_analytic_account(models.Model):
_inherit = 'account.analytic.account'
-
use_timesheets = fields.Boolean('Timesheets', help="Check this field if this project manages timesheets", deprecated=True)
- invoice_on_timesheets = fields.Boolean('Timesheets', help="Check this field if this project manages timesheets")
-
- @api.onchange('invoice_on_timesheets')
- def onchange_invoice_on_timesheets(self):
- result = {'value': {}}
- if not self.invoice_on_timesheets:
- return {'value': {'to_invoice': False}}
- try:
- to_invoice = self.env['ir.model.data'].xmlid_to_res_id('hr_timesheet_invoice.timesheet_invoice_factor1')
- result['value']['to_invoice'] = to_invoice
- except ValueError:
- pass
- return result
-
- @api.onchange('template_id')
- def V8_on_change_template(self):
- new_values = self.on_change_template(selftemplate_id.id, self.date_start)
- if new_values.get("value"):
- for key, value in new_values["value"].iteritems():
- setattr(self, key, value)
-
- def on_change_template(self, cr, uid, ids, template_id, date_start=False, context=None):
- res = super(account_analytic_account, self).on_change_template(cr, uid, ids, template_id, date_start=date_start, context=context)
- if template_id and 'value' in res:
- template = self.browse(cr, uid, template_id, context=context)
- res['value']['invoice_on_timesheets'] = template.invoice_on_timesheets
- return res
diff --git a/addons/hr_timesheet/hr_timesheet_data.xml b/addons/hr_timesheet/hr_timesheet_data.xml
deleted file mode 100644
index 35d6bfb0185..00000000000
--- a/addons/hr_timesheet/hr_timesheet_data.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<openerp>
- <data noupdate="1">
-
- <record id="analytic_journal" model="account.analytic.journal">
- <field name="code">TS</field>
- <field name="name">Timesheet Journal</field>
- <field name="type">general</field>
- </record>
-
-
- </data>
-</openerp>
diff --git a/addons/hr_timesheet/hr_timesheet_demo.xml b/addons/hr_timesheet/hr_timesheet_demo.xml
deleted file mode 100644
index faec6e306ca..00000000000
--- a/addons/hr_timesheet/hr_timesheet_demo.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<openerp>
- <data noupdate="1">
- <record id="hr.employee_fp" model="hr.employee">
- <field name="product_id" ref="product.product_product_1"/>
- <field name="journal_id" ref="analytic_journal"/>
- </record>
- <record id="hr.employee_qdp" model="hr.employee">
- <field name="product_id" ref="product.product_product_1"/>
- <field name="journal_id" ref="analytic_journal"/>
- </record>
-
- <record id="analytic.analytic_administratif" model="account.analytic.account">
- <field name="invoice_on_timesheets">True</field>
- </record>
- <record id="analytic.analytic_partners" model="account.analytic.account">
- <field name="invoice_on_timesheets">True</field>
- </record>
- <record id="analytic.analytic_consultancy" model="account.analytic.account">
- <field name="invoice_on_timesheets">True</field>
- </record>
- <record id="analytic.analytic_super_product_trainings" model="account.analytic.account">
- <field name="invoice_on_timesheets">True</field>
- </record>
- </data>
-</openerp>
diff --git a/addons/hr_timesheet/hr_timesheet_demo.yml b/addons/hr_timesheet/hr_timesheet_demo.yml
index 530df19cf9e..53545ab778e 100644
--- a/addons/hr_timesheet/hr_timesheet_demo.yml
+++ b/addons/hr_timesheet/hr_timesheet_demo.yml
@@ -3,70 +3,58 @@
-
!python {model: ir.model.data} : |
import time
- expense_account_id = self.pool.get('account.account').search(cr, uid, [('user_type_id', '=', ref('account.data_account_type_expenses'))])
- if expense_account_id:
- vals = {
- 'name': 'Requirements analysis and specification',
- 'user_id': ref('base.user_root'),
- 'date': time.strftime('%Y-%m-%d'),
- 'unit_amount': 2.00,
- 'product_id': ref('product.product_product_1'),
- 'product_uom_id': ref('product.product_uom_hour'),
- 'account_id': ref('analytic.analytic_administratif'),
- 'amount': -60.00,
- 'general_account_id': expense_account_id[0],
- 'journal_id': ref('analytic_journal')
- }
- self._update(cr, uid, 'account.analytic.line', 'hr_timesheet', vals, 'working_hours_requirements')
- vals = {
- 'name': 'Design and specification',
- 'user_id': ref('base.user_root'),
- 'date': time.strftime('%Y-%m-%d'),
- 'unit_amount': 1.00,
- 'product_id': ref('product.product_product_1'),
- 'product_uom_id': ref('product.product_uom_hour'),
- 'account_id': ref('analytic.analytic_administratif'),
- 'amount': -30.00,
- 'general_account_id': expense_account_id[0],
- 'journal_id': ref('analytic_journal')
- }
- self._update(cr, uid, 'account.analytic.line', 'hr_timesheet', vals, 'working_hours_design')
- vals = {
- 'name': 'Coding and module testing',
- 'user_id': ref('base.user_root'),
- 'date': time.strftime('%Y-%m-%d'),
- 'unit_amount': 3.00,
- 'product_id': ref('product.product_product_1'),
- 'product_uom_id': ref('product.product_uom_hour'),
- 'account_id': ref('analytic.analytic_administratif'),
- 'amount': -90.00,
- 'general_account_id': expense_account_id[0],
- 'journal_id': ref('analytic_journal')
- }
- self._update(cr, uid, 'account.analytic.line', 'hr_timesheet', vals, 'working_hours_coding')
- vals = {
- 'name': 'Integration and system testing',
- 'user_id': ref('base.user_root'),
- 'date': time.strftime('%Y-%m-%d'),
- 'unit_amount': 1.00,
- 'product_id': ref('product.product_product_1'),
- 'product_uom_id': ref('product.product_uom_hour'),
- 'account_id': ref('analytic.analytic_administratif'),
- 'amount': -30.00,
- 'general_account_id': expense_account_id[0],
- 'journal_id': ref('analytic_journal')
- }
- self._update(cr, uid, 'account.analytic.line', 'hr_timesheet', vals, 'working_hours_testing')
- vals = {
- 'name': 'Delivery and maintenance',
- 'user_id': ref('base.user_root'),
- 'date': time.strftime('%Y-%m-%d'),
- 'unit_amount': 1.00,
- 'product_id': ref('product.product_product_1'),
- 'product_uom_id': ref('product.product_uom_hour'),
- 'account_id': ref('analytic.analytic_administratif'),
- 'amount': -30.00,
- 'general_account_id': expense_account_id[0],
- 'journal_id': ref('analytic_journal')
- }
- self._update(cr, uid, 'account.analytic.line', 'hr_timesheet', vals, 'working_hours_maintenance')
+ vals = {
+ 'name': 'Requirements analysis and specification',
+ 'user_id': ref('base.user_root'),
+ 'date': time.strftime('%Y-%m-%d'),
+ 'unit_amount': 2.00,
+ 'product_id': ref('product.product_product_1'),
+ 'product_uom_id': ref('product.product_uom_hour'),
+ 'account_id': ref('analytic.analytic_administratif'),
+ 'amount': -60.00,
+ }
+ self._update(cr, uid, 'account.analytic.line', 'hr_timesheet', vals, 'working_hours_requirements')
+ vals = {
+ 'name': 'Design and specification',
+ 'user_id': ref('base.user_root'),
+ 'date': time.strftime('%Y-%m-%d'),
+ 'unit_amount': 1.00,
+ 'product_id': ref('product.product_product_1'),
+ 'product_uom_id': ref('product.product_uom_hour'),
+ 'account_id': ref('analytic.analytic_administratif'),
+ 'amount': -30.00,
+ }
+ self._update(cr, uid, 'account.analytic.line', 'hr_timesheet', vals, 'working_hours_design')
+ vals = {
+ 'name': 'Coding and module testing',
+ 'user_id': ref('base.user_root'),
+ 'date': time.strftime('%Y-%m-%d'),
+ 'unit_amount': 3.00,
+ 'product_id': ref('product.product_product_1'),
+ 'product_uom_id': ref('product.product_uom_hour'),
+ 'account_id': ref('analytic.analytic_administratif'),
+ 'amount': -90.00,
+ }
+ self._update(cr, uid, 'account.analytic.line', 'hr_timesheet', vals, 'working_hours_coding')
+ vals = {
+ 'name': 'Integration and system testing',
+ 'user_id': ref('base.user_root'),
+ 'date': time.strftime('%Y-%m-%d'),
+ 'unit_amount': 1.00,
+ 'product_id': ref('product.product_product_1'),
+ 'product_uom_id': ref('product.product_uom_hour'),
+ 'account_id': ref('analytic.analytic_administratif'),
+ 'amount': -30.00,
+ }
+ self._update(cr, uid, 'account.analytic.line', 'hr_timesheet', vals, 'working_hours_testing')
+ vals = {
+ 'name': 'Delivery and maintenance',
+ 'user_id': ref('base.user_root'),
+ 'date': time.strftime('%Y-%m-%d'),
+ 'unit_amount': 1.00,
+ 'product_id': ref('product.product_product_1'),
+ 'product_uom_id': ref('product.product_uom_hour'),
+ 'account_id': ref('analytic.analytic_administratif'),
+ 'amount': -30.00,
+ }
+ self._update(cr, uid, 'account.analytic.line', 'hr_timesheet', vals, 'working_hours_maintenance')
diff --git a/addons/hr_timesheet/hr_timesheet_view.xml b/addons/hr_timesheet/hr_timesheet_view.xml
index 95054979f34..2f15ff8bb19 100644
--- a/addons/hr_timesheet/hr_timesheet_view.xml
+++ b/addons/hr_timesheet/hr_timesheet_view.xml
@@ -11,13 +11,8 @@
<field name="user_id" required="1" options='{"no_open": True}'
context="{'default_groups_ref': ['base.group_user']}"/>
<field name="name"/>
- <field domain="[('type','=','normal'),('invoice_on_timesheets','=',1)]" name="account_id" context="{'default_use_timesheets': 1, 'default_type': 'contract'}" options="{'no_open': True, 'no_create': True}"/>
- <field name="unit_amount" string="Duration" on_change="on_change_unit_amount(product_id, unit_amount, False, product_uom_id,journal_id)" sum="Total time" widget="float_time"/>
- <field name="product_uom_id" on_change="on_change_unit_amount(product_id, unit_amount, False, product_uom_id,journal_id)" invisible="1"/>
- <field name="journal_id" invisible="1"/>
- <field name="amount" sum="Total cost" invisible="1"/>
- <field name="general_account_id" invisible="1"/>
- <field name="product_id" on_change="on_change_unit_amount(product_id, unit_amount, False, product_uom_id,journal_id)" domain="[('type','=','service')]" invisible="1"/>
+ <field name="account_id" context="{'default_use_timesheets': 1, 'default_type': 'contract'}" options="{'no_open': True, 'no_create': True}"/>
+ <field name="unit_amount" string="Duration" sum="Total time" widget="float_time"/>
<field name="is_timesheet" invisible="1"/>
</tree>
</field>
@@ -43,18 +38,16 @@
<page string="Information">
<group>
<group string="Product">
- <field name="product_id" on_change="on_change_unit_amount(product_id, unit_amount, False, product_uom_id,journal_id)" domain="[('type','=','service')]"/>
+ <field name="product_id" domain="[('type','=','service')]"/>
<label string="Duration" for="unit_amount"/>
<div>
- <field name="unit_amount" class="oe_inline" on_change="on_change_unit_amount(product_id, unit_amount, False, product_uom_id,journal_id)"/>
+ <field name="unit_amount" class="oe_inline"/>
<field name="product_uom_id" class="oe_inline"/>
</div>
</group>
<group name="accounting" string="Accounting">
- <field domain="[('type','=','normal'),('state', '&lt;&gt;', 'close'),('parent_id','!=',False)]" name="account_id" select="1" options="{'no_open': True, 'no_create': True}"/>
+ <field domain="[('account_type', '=', 'normal')]" name="account_id" select="1" options="{'no_open': True, 'no_create': True}"/>
<field name="amount"/>
- <field name="general_account_id"/>
- <field name="journal_id"/>
</group>
</group>
</page>
@@ -81,58 +74,12 @@
</field>
</record>
- <record model="ir.actions.act_window" id="act_analytic_cost_revenue">
- <field name="context">{'search_default_group_date': 1, 'search_default_group_journal': 1}</field>
- <field name="domain">[('account_id','child_of', active_id)]</field>
- <field name="name">Costs &amp; Revenues</field>
- <field name="res_model">account.analytic.line</field>
- <field name="src_model">account.analytic.account</field>
- <field name="view_mode">tree,form</field>
- <field name="view_type">tree</field>
- <field name="help" type="html">
- <p>
- No activity yet on this contract.
- </p><p>
- In Odoo, contracts and projects are implemented using
- analytic account. So, you can track costs and revenues to analyse
- your margins easily.
- </p><p>
- Costs will be created automatically when you register supplier
- invoices, expenses or timesheets.
- </p><p>
- Revenues will be created automatically when you create customer
- invoices. Customer invoices can be created based on sale orders
- (fixed price invoices), on timesheets (based on the work done) or
- on expenses (e.g. reinvoicing of travel costs).
- </p>
- </field>
- </record>
-
-
- <record id="account_analytic_account_timesheet_form" model="ir.ui.view">
- <field name="name">account.analytic.account.invoice.form</field>
- <field name="model">account.analytic.account</field>
- <field name="inherit_id" ref="analytic.view_account_analytic_account_form"/>
- <field name="arch" type="xml">
- <xpath expr='//div[@name="project"]' position='inside'>
- <field name="invoice_on_timesheets"/>
- <label for="invoice_on_timesheets"/>
- </xpath>
- <div name="button_box" position="inside">
- <button class="oe_stat_button" type="action" name="%(act_analytic_cost_revenue)d"
- icon="fa-usd" string="Cost/Revenue" widget="statinfo" attrs="{'invisible': [('type','=','template')]}"/>
- </div>
- </field>
- </record>
-
<record id="act_hr_timesheet_accounts_form" model="ir.actions.act_window">
<field name="name">Timesheet Accounts</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">account.analytic.account</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
- <field name="domain">[('invoice_on_timesheets','=', True)]</field>
- <field name="context">{'default_invoice_on_timesheets':1}</field>
</record>
<menuitem name="Configuration" id="menu_hr_timesheet_config" sequence="100"
@@ -166,19 +113,6 @@
<menuitem id="menu_hr_working_hours" parent="hr_attendance.menu_hr_time_tracking" action="act_hr_timesheet_line_evry1_all_form"/>
- <record id="hr_timesheet_employee_extd_form" model="ir.ui.view">
- <field name="name">hr.timesheet.employee.extd_form</field>
- <field name="model">hr.employee</field>
- <field name="inherit_id" ref="hr.view_employee_form"/>
- <field name="arch" type="xml">
- <xpath expr="//group[@name='active_group']" position="after">
- <group string="Timesheets">
- <field name="product_id" domain="[('type','=','service')]"/>
- <field name="journal_id"/>
- </group>
- </xpath>
- </field>
- </record>
</data>
</openerp>
diff --git a/addons/hr_timesheet/report/hr_timesheet_report.py b/addons/hr_timesheet/report/hr_timesheet_report.py
index 213ed776c3c..0644cc16d61 100644
--- a/addons/hr_timesheet/report/hr_timesheet_report.py
+++ b/addons/hr_timesheet/report/hr_timesheet_report.py
@@ -11,8 +11,6 @@ class hr_timesheet_report(models.Model):
date = fields.Date('Date', readonly=True)
name = fields.Char('Description', readonly=True)
product_id = fields.Many2one('product.product', 'Product', readonly=True)
- journal_id = fields.Many2one('account.analytic.journal', 'Journal', readonly=True)
- general_account_id = fields.Many2one('account.account', 'General Account', readonly=True)
user_id = fields.Many2one('res.users', 'User', readonly=True)
account_id = fields.Many2one('account.analytic.account', 'Analytic Account', readonly=True)
company_id = fields.Many2one('res.company', 'Company', readonly=True)
@@ -26,9 +24,7 @@ class hr_timesheet_report(models.Model):
sum(aal.amount) as cost,
sum(aal.unit_amount) as quantity,
aal.account_id as account_id,
- aal.journal_id as journal_id,
aal.product_id as product_id,
- aal.general_account_id as general_account_id,
aal.user_id as user_id,
aal.company_id as company_id,
aal.currency_id as currency_id
@@ -46,8 +42,6 @@ class hr_timesheet_report(models.Model):
GROUP BY aal.date,
aal.account_id,
aal.product_id,
- aal.general_account_id,
- aal.journal_id,
aal.user_id,
aal.company_id,
aal.currency_id
diff --git a/addons/hr_timesheet/report/hr_timesheet_report_view.xml b/addons/hr_timesheet/report/hr_timesheet_report_view.xml
index 30584e848e4..3769e89255c 100644
--- a/addons/hr_timesheet/report/hr_timesheet_report_view.xml
+++ b/addons/hr_timesheet/report/hr_timesheet_report_view.xml
@@ -35,9 +35,7 @@
<field name="user_id"/>
<filter string="This Month" name="month" domain="[('date','&lt;=', time.strftime('%Y-%m-%d')),('date','&gt;=',time.strftime('%Y-%m-01'))]" help="month"/>
<group expand="0" string="Extended Filters...">
- <field name="general_account_id"/>
<field name="product_id"/>
- <field name="journal_id"/>
<field name="company_id" groups="base.group_multi_company"/>
<field name="date"/>
</group>
diff --git a/addons/hr_timesheet/security/ir.model.access.csv b/addons/hr_timesheet/security/ir.model.access.csv
index f51d12df530..692ecbe0a7f 100644
--- a/addons/hr_timesheet/security/ir.model.access.csv
+++ b/addons/hr_timesheet/security/ir.model.access.csv
@@ -1,10 +1,8 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_hr_account_analytic_line,account.account.analytic.line,account.model_account_analytic_line,base.group_hr_user,1,1,1,1
access_hr_account_analytic_line_employee,account.account.analytic.line employee,account.model_account_analytic_line,base.group_user,1,1,1,1
-access_account_analytic_journal,account.account.analytic.journal,analytic.model_account_analytic_journal,base.group_hr_user,1,1,1,1
access_product_product_user,product.product user,product.model_product_product,base.group_hr_user,1,1,1,1
access_product_template_hr_timesheet,product.template.hr.timesheet,product.model_product_template,base.group_hr_user,1,1,1,1
access_product_uom_hr_timesheet,product.uom.hr.timesheet,product.model_product_uom,base.group_hr_user,1,1,1,1
access_account_analytic_line_user,account.analytic.line.user,model_account_analytic_line,base.group_user,1,1,1,0
-access_account_analytic_journal_user,account.account.analytic.journal.user,analytic.model_account_analytic_journal,base.group_user,1,0,0,0
access_hr_timesheet_report,hr.timesheet.report,model_hr_timesheet_report,base.group_hr_manager,1,1,0,0
diff --git a/addons/hr_timesheet_sheet/__openerp__.py b/addons/hr_timesheet_sheet/__openerp__.py
index d09c1db1812..678a44960e9 100644
--- a/addons/hr_timesheet_sheet/__openerp__.py
+++ b/addons/hr_timesheet_sheet/__openerp__.py
@@ -26,7 +26,7 @@ The validation can be configured in the company:
* Maximal difference between timesheet and attendances
""",
'website': 'https://www.odoo.com/page/employees',
- 'depends': ['hr_timesheet', 'hr_timesheet_invoice'],
+ 'depends': ['hr_timesheet'],
'data': [
'security/ir.model.access.csv',
'security/hr_timesheet_sheet_security.xml',
diff --git a/addons/hr_timesheet_sheet/hr_timesheet_sheet.py b/addons/hr_timesheet_sheet/hr_timesheet_sheet.py
index 30c09356495..d98f29f251e 100644
--- a/addons/hr_timesheet_sheet/hr_timesheet_sheet.py
+++ b/addons/hr_timesheet_sheet/hr_timesheet_sheet.py
@@ -52,8 +52,6 @@ class hr_timesheet_sheet(osv.osv):
if 'employee_id' in vals:
if not self.pool.get('hr.employee').browse(cr, uid, vals['employee_id'], context=context).user_id:
raise UserError(_('In order to create a timesheet for this employee, you must link him/her to a user.'))
- if not self.pool.get('hr.employee').browse(cr, uid, vals['employee_id'], context=context).journal_id:
- raise UserError(_('In order to create a timesheet for this employee, you must assign an analytic journal to the employee, like \'Timesheet Journal\'.'))
if vals.get('attendances_ids'):
# If attendances, we sort them by date asc before writing them, to satisfy the alternance constraint
vals['attendances_ids'] = self.sort_attendances(cr, uid, vals['attendances_ids'], context=context)
@@ -68,8 +66,6 @@ class hr_timesheet_sheet(osv.osv):
raise UserError(_('You cannot have 2 timesheets that overlap!\nYou should use the menu \'My Timesheet\' to avoid this problem.'))
if not self.pool.get('hr.employee').browse(cr, uid, vals['employee_id'], context=context).product_id:
raise UserError(_('In order to create a timesheet for this employee, you must link the employee to a product.'))
- if not self.pool.get('hr.employee').browse(cr, uid, vals['employee_id'], context=context).journal_id:
- raise UserError(_('In order to create a timesheet for this employee, you must assign an analytic journal to the employee, like \'Timesheet Journal\'.'))
if vals.get('attendances_ids'):
# If attendances, we sort them by date asc before writing them, to satisfy the alternance constraint
# In addition to the date order, deleting attendances are done before inserting attendances
@@ -587,11 +583,10 @@ class hr_timesheet_sheet_sheet_account(osv.osv):
'name': fields.many2one('account.analytic.account', 'Project / Analytic Account', readonly=True),
'sheet_id': fields.many2one('hr_timesheet_sheet.sheet', 'Sheet', readonly=True),
'total': fields.float('Total Time', digits=(16,2), readonly=True),
- 'invoice_rate': fields.many2one('hr_timesheet_invoice.factor', 'Invoice rate', readonly=True),
}
_depends = {
- 'account.analytic.line': ['account_id', 'date', 'to_invoice', 'unit_amount', 'user_id'],
+ 'account.analytic.line': ['account_id', 'date', 'unit_amount', 'user_id'],
'hr_timesheet_sheet.sheet': ['date_from', 'date_to', 'user_id'],
}
@@ -601,15 +596,14 @@ class hr_timesheet_sheet_sheet_account(osv.osv):
min(l.id) as id,
l.account_id as name,
s.id as sheet_id,
- sum(l.unit_amount) as total,
- l.to_invoice as invoice_rate
+ sum(l.unit_amount) as total
from
account_analytic_line l
LEFT JOIN hr_timesheet_sheet_sheet s
ON (s.date_to >= l.date
AND s.date_from <= l.date
AND s.user_id = l.user_id)
- group by l.account_id, s.id, l.to_invoice
+ group by l.account_id, s.id
)""")
diff --git a/addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml b/addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml
index 7f7d8b729bd..9bf04bc2560 100644
--- a/addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml
+++ b/addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml
@@ -11,7 +11,6 @@
<field name="sheet_id"/>
<field name="name" groups="analytic.group_analytic_accounting"/>
<field name="total" sum="Total"/>
- <field name="invoice_rate"/>
</group>
</form>
</field>
@@ -22,7 +21,6 @@
<field name="arch" type="xml">
<search string="Search Account">
<field name="name" groups="analytic.group_analytic_accounting"/>
- <field name="invoice_rate"/>
<field name="sheet_id" />
</search>
</field>
@@ -35,7 +33,6 @@
<field name="sheet_id"/>
<field name="name" groups="analytic.group_analytic_accounting"/>
<field name="total" sum="Total"/>
- <field name="invoice_rate"/>
</tree>
</field>
</record>
@@ -130,27 +127,17 @@
<field context="{'employee_id': employee_id, 'user_id':user_id, 'timesheet_date_from': date_from, 'timesheet_date_to': date_to, 'default_is_timesheet' : 1}" name="timesheet_ids" nolabel="1">
<tree editable="bottom" string="Timesheet Activities">
<field name="date"/>
- <field domain="[('type','in',['normal', 'contract']), ('state', '!=', 'close'),('invoice_on_timesheets','=',1)]" name="account_id" on_change="on_change_account_id(account_id, user_id, unit_amount, is_timesheet, context)" options="{'no_open': True, 'no_create': True}" context="{'default_use_timesheets': 1}"/>
+ <field domain="[('use_timesheets','=',1)]" name="account_id" on_change="on_change_account_id(account_id, user_id, unit_amount, is_timesheet, context)" options="{'no_open': True, 'no_create': True}" context="{'default_use_timesheets': 1}"/>
<field name="name"/>
- <field name="unit_amount" on_change="on_change_unit_amount(product_id, unit_amount, False, product_uom_id,journal_id)" widget="float_time" string="Hours" sum="Hours"/>
- <field name="to_invoice" widget="selection"/>
- <field invisible="1" name="journal_id"/>
- <field invisible="1" name="product_id" domain="[('type','=','service')]" on_change="on_change_unit_amount(product_id, unit_amount, False, product_uom_id,journal_id)"/>
- <field invisible="1" name="product_uom_id" on_change="on_change_unit_amount(product_id, unit_amount, False, product_uom_id,journal_id)"/>
- <field invisible="1" name="amount"/>
- <field invisible="1" name="general_account_id"/>
+ <field name="unit_amount" widget="float_time" string="Hours" sum="Hours"/>
<field invisible="1" name="user_id" required="1"/>
<field name="is_timesheet" invisible="1"/>
</tree>
<form string="Timesheet Activities">
<field name="date"/>
- <field domain="[('type','=','normal'), ('state', '!=', 'close')]" name="account_id" on_change="on_change_account_id(account_id, user_id, unit_amount, is_timesheet, context)"/>
+ <field domain="[('use_timesheets','=',1)]" name="account_id"/>
<field name="name"/>
- <field name="unit_amount" on_change="on_change_unit_amount(product_id, unit_amount, False, product_uom_id,journal_id)" widget="float_time"/>
- <field name="to_invoice"/>
- <field name="journal_id"/>
- <field name="product_id" domain="[('type','=','service')]" on_change="on_change_unit_amount(product_id, unit_amount, False, product_uom_id,journal_id)"/>
- <field name="product_uom_id" on_change="on_change_unit_amount(product_id, unit_amount, False, product_uom_id,journal_id)"/>
+ <field name="unit_amount" widget="float_time"/>
<field name="amount"/>
<field name="general_account_id"/>
<field name="user_id" required="1"/>
@@ -387,7 +374,7 @@
<record id="hr_timesheet_sheet_employee_extd_form" model="ir.ui.view">
<field name="name">hr.timesheet.sheet.employee.extd_form</field>
<field name="model">hr.employee</field>
- <field name="inherit_id" ref="hr_timesheet.hr_timesheet_employee_extd_form"/>
+ <field name="inherit_id" ref="hr.view_employee_form"/>
<field name="arch" type="xml">
<div name="button_box" position="inside">
<button name="%(act_hr_employee_2_hr_timesheet)d"
diff --git a/addons/hr_timesheet_sheet/report/hr_timesheet_report.py b/addons/hr_timesheet_sheet/report/hr_timesheet_report.py
index 7b95a5fbe45..394f153793c 100644
--- a/addons/hr_timesheet_sheet/report/hr_timesheet_report.py
+++ b/addons/hr_timesheet_sheet/report/hr_timesheet_report.py
@@ -7,7 +7,6 @@ from openerp.osv import fields,osv
class hr_timesheet_report(osv.osv):
_inherit = "hr.timesheet.report"
_columns = {
- 'to_invoice': fields.many2one('hr_timesheet_invoice.factor', 'Type of Invoicing',readonly=True),
'nbr': fields.integer('# Nbr Timesheet',readonly=True),
'total_diff': fields.float('# Total Diff',readonly=True),
'total_timesheet': fields.float('# Total Timesheet',readonly=True),
@@ -50,7 +49,6 @@ class hr_timesheet_report(osv.osv):
sum(t.total_diff) as total_diff,
sum(t.total_timesheet) as total_timesheet,
sum(t.total_attendance) as total_attendance,
- aal.to_invoice,
htss.department_id,
htss.state"""
@@ -63,7 +61,6 @@ class hr_timesheet_report(osv.osv):
htss.date_to,
aal.unit_amount,
aal.amount,
- aal.to_invoice,
htss.name,
htss.state,
htss.id,
diff --git a/addons/hr_timesheet_sheet/report/hr_timesheet_report_view.xml b/addons/hr_timesheet_sheet/report/hr_timesheet_report_view.xml
index bd28f835fc7..40f505e3d0d 100644
--- a/addons/hr_timesheet_sheet/report/hr_timesheet_report_view.xml
+++ b/addons/hr_timesheet_sheet/report/hr_timesheet_report_view.xml
@@ -6,9 +6,6 @@
<field name="model">hr.timesheet.report</field>
<field name="inherit_id" ref="hr_timesheet.view_hr_timesheet_report_graph"/>
<field name="arch" type="xml">
- <field name="user_id" position="after">
- <field name="to_invoice" type="row"/>
- </field>
<field name="quantity" position="after">
<field name="total_diff" type="measure"/>
<field name="total_timesheet" type="measure"/>
@@ -30,7 +27,7 @@
<field name="model_id">hr.timesheet.report</field>
<field name="domain">[('state','=','done'), ('date','&lt;=', time.strftime('%Y-%m-%d')),('date','&gt;=',time.strftime('%Y-%m-01'))]</field>
<field name="user_id" eval="False"/>
- <field name="context">{'group_by': ['company_id', 'to_invoice'], 'col_group_by': ['user_id'], 'measures': ['time','cost']}</field>
+ <field name="context">{'group_by': ['company_id'], 'col_group_by': ['user_id'], 'measures': ['time','cost']}</field>
</record>
<record id="view_timesheet_report_search" model="ir.ui.view">
@@ -43,15 +40,13 @@
<filter string="Confirmed" domain="[('state','=','confirm')]"/>
<filter string="Done" domain="[('state','=','done')]"/>
</field>
- <field name="general_account_id" position="after">
- <field name="to_invoice"/>
+ <field name="product_id" position="before">
<field name="department_id"/>
<field name="date_to"/>
<field name="date_from"/>
</field>
<filter name="group_user_id" position="after">
<filter string="Department" context="{'group_by':'department_id'}"/>
- <filter string="Type of Invoicing" context="{'group_by':'to_invoice'}"/>
<filter string="Status" context="{'group_by':'state'}"/>
</filter>
</field>
diff --git a/addons/hr_timesheet_sheet/static/src/js/timesheet.js b/addons/hr_timesheet_sheet/static/src/js/timesheet.js
index 607075aa148..edde1c879bf 100644
--- a/addons/hr_timesheet_sheet/static/src/js/timesheet.js
+++ b/addons/hr_timesheet_sheet/static/src/js/timesheet.js
@@ -111,7 +111,7 @@ var WeeklyTimesheet = form_common.FormWidget.extend(form_common.ReinitializeWidg
var account_names;
var default_get;
return this.render_drop.add(new Model("account.analytic.line").call("default_get", [
- ['account_id','general_account_id', 'journal_id','date','name','user_id','product_id','product_uom_id','to_invoice','amount','unit_amount', 'is_timesheet'],
+ ['account_id','general_account_id', 'journal_id','date','name','user_id','product_id','product_uom_id','amount','unit_amount', 'is_timesheet'],
new data.CompoundContext({'user_id': self.get('user_id'), 'default_is_timesheet':true})]).then(function(result) {
default_get = result;
// calculating dates
@@ -219,11 +219,6 @@ var WeeklyTimesheet = form_common.FormWidget.extend(form_common.ReinitializeWidg
account.days[day_count].lines[0].unit_amount += num - self.sum_box(account, day_count);
var product = (account.days[day_count].lines[0].product_id instanceof Array) ? account.days[day_count].lines[0].product_id[0] : account.days[day_count].lines[0].product_id;
var journal = (account.days[day_count].lines[0].journal_id instanceof Array) ? account.days[day_count].lines[0].journal_id[0] : account.days[day_count].lines[0].journal_id;
- self.defs.push(new Model("account.analytic.line").call("on_change_unit_amount", [[], product, account.days[day_count].lines[0].unit_amount, false, false, journal]).then(function(res) {
- account.days[day_count].lines[0]['amount'] = res.value.amount || 0;
- self.display_totals();
- self.sync();
- }));
if(!isNaN($(this).val())){
$(this).val(self.sum_box(account, day_count, true));
}
@@ -256,11 +251,9 @@ var WeeklyTimesheet = form_common.FormWidget.extend(form_common.ReinitializeWidg
domain: [
['type','in',['normal', 'contract']],
['state', '<>', 'close'],
- ['invoice_on_timesheets','=',1],
['id', 'not in', _.pluck(self.accounts, "account")],
],
context: {
- default_invoice_on_timesheets: 1,
default_type: "contract",
},
modifiers: '{"required": true}',
diff --git a/addons/hr_timesheet_sheet/test/test_hr_timesheet_sheet.yml b/addons/hr_timesheet_sheet/test/test_hr_timesheet_sheet.yml
index df9383af192..774467e04a3 100644
--- a/addons/hr_timesheet_sheet/test/test_hr_timesheet_sheet.yml
+++ b/addons/hr_timesheet_sheet/test/test_hr_timesheet_sheet.yml
@@ -47,7 +47,6 @@
amount: -90.00
product_id: product.product_product_1
general_account_id: a_expense
- journal_id: hr_timesheet.analytic_journal
-
I confirm my Timesheet at end of period by click on "Confirm" button,
if the difference between Timesheet hour and attendance hour is more than 1 hour it will give message.
@@ -76,7 +75,6 @@
amount: -90.00
product_id: product.product_product_1
general_account_id: a_expense
- journal_id: hr_timesheet.analytic_journal
-
I set an allowed difference of 1 hour
-