Jagdish Panchal (Open ERP) has proposed merging
lp:~openerp-dev/openobject-addons/trunk-clean_yml_hr_expense-jap into
lp:openobject-addons.
Requested reviews:
Jagdish Panchal (Open ERP) (jap-openerp)
Meera Trambadia (OpenERP) (mtr-openerp)
OpenERP Core Team (openerp)
For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-clean_yml_hr_expense-jap/+merge/83114
Hr_expense: Clean up the test case
---------------------------------
1) Removed hr_expense_report.yml
2) test_hr_expense.yml rename this file to confirm2heldinvoiced.yml and also
modify
--
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-clean_yml_hr_expense-jap/+merge/83114
Your team OpenERP R&D Team is subscribed to branch
lp:~openerp-dev/openobject-addons/trunk-clean_yml_hr_expense-jap.
=== modified file 'hr_expense/__openerp__.py'
--- hr_expense/__openerp__.py 2011-12-06 12:03:55 +0000
+++ hr_expense/__openerp__.py 2011-12-08 06:53:29 +0000
@@ -62,8 +62,9 @@
'demo_xml': [
'hr_expense_demo.xml',
],
- 'test': ['test/test_hr_expense.yml',
- 'test/hr_expense_report.yml',
+ 'test': [
+ 'test/expense_demo.yml',
+ 'test/expense_process.yml',
],
'installable': True,
'active': False,
=== modified file 'hr_expense/hr_expense.py'
--- hr_expense/hr_expense.py 2011-11-18 11:44:53 +0000
+++ hr_expense/hr_expense.py 2011-12-08 06:53:29 +0000
@@ -87,6 +87,7 @@
\nIf the admin accepts it, the state is \'Accepted\'.\n If an invoice is made for the expense request, the state is \'Invoiced\'.\n If the expense is paid to user, the state is \'Reimbursed\'.'),
}
_defaults = {
+ 'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'hr.employee', context=c),
'date': lambda *a: time.strftime('%Y-%m-%d'),
'state': 'draft',
'employee_id': _employee_get,
=== modified file 'hr_expense/hr_expense_data.xml'
--- hr_expense/hr_expense_data.xml 2011-08-04 10:27:23 +0000
+++ hr_expense/hr_expense_data.xml 2011-12-08 06:53:29 +0000
@@ -8,18 +8,6 @@
<field name="parent_id" ref="product.cat0"/>
<field name="name">Expenses</field>
</record>
-
- <record id="product_product_expense_car" model="product.product">
- <field name="list_price">0.32</field>
- <field name="standard_price">0.32</field>
- <field name="uom_id" ref="product.product_uom_km"/>
- <field name="uom_po_id" ref="product.product_uom_km"/>
- <field name="type">consu</field>
- <field name="name">Travel Expenses</field>
- <field name="default_code">TRA</field>
- <field name="categ_id" ref="hr_expense.cat_expense"/>
- <field name="hr_expense_ok" eval="True" />
- </record>
</data>
-</openerp>
\ No newline at end of file
+</openerp>
=== modified file 'hr_expense/hr_expense_demo.xml'
--- hr_expense/hr_expense_demo.xml 2011-08-04 10:27:23 +0000
+++ hr_expense/hr_expense_demo.xml 2011-12-08 06:53:29 +0000
@@ -1,96 +1,76 @@
<?xml version="1.0" ?>
<openerp>
- <data noupdate="1">
-
- <record id="product_product_expense_air" model="product.product">
- <field name="list_price">1.0</field>
- <field name="standard_price">1.0</field>
- <field name="uom_id" ref="product.product_uom_unit"/>
- <field name="uom_po_id" ref="product.product_uom_unit"/>
+ <data>
+
+ <record id="hr.employee4" model="hr.employee">
+ <field name="address_home_id" ref="base.res_partner_address_1"/>
+ </record>
+
+ <record id="car_travel" model="product.product">
+ <field name="list_price">0.32</field>
+ <field name="type">service</field>
+ <field name="name">Car Travel Expenses</field>
+ <field name="default_code">CarTRA</field>
+ <field name="categ_id" ref="hr_expense.cat_expense"/>
+ <field name="hr_expense_ok" eval="True" />
+ </record>
+
+ <record id="air_ticket" model="product.product">
+ <field name="list_price">700.0</field>
<field name="type">service</field>
<field name="name">Air Ticket</field>
<field name="default_code">AT</field>
- <field name="categ_id" ref="product.cat2"/>
+ <field name="categ_id" ref="hr_expense.cat_expense"/>
<field name="hr_expense_ok" eval="True" />
</record>
- <record id="product_product_expense_hotel" model="product.product">
- <field name="list_price">1.0</field>
- <field name="standard_price">1.0</field>
- <field name="uom_id" ref="product.product_uom_unit"/>
- <field name="uom_po_id" ref="product.product_uom_unit"/>
+ <record id="hotel_rent" model="product.product">
+ <field name="list_price">400.0</field>
<field name="type">service</field>
<field name="name">Hotel Accommodation</field>
<field name="default_code">HA0</field>
- <field name="categ_id" ref="product.cat2"/>
+ <field name="categ_id" ref="hr_expense.cat_expense"/>
<field name="hr_expense_ok" eval="True" />
</record>
- <record id="hr_expense_expense_septemberexpenses0" model="hr.expense.expense">
- <field name="currency_id" ref="base.EUR"/>
- <field name="employee_id" ref="hr.employee1"/>
- <field name="user_id" ref="base.user_root"/>
- <field name="name">May Expenses</field>
- <field name="company_id" ref="base.main_company"/>
- <field name="date" eval="time.strftime('%Y-%m-03')"/>
- <field name="state">draft</field>
+ <record id="sep_expenses" model="hr.expense.expense">
+ <field name="employee_id" ref="hr.employee4"/>
+ <field name="name">September Expenses</field>
+ <field name="date" eval="time.strftime('%Y-09-28')"/>
</record>
- <record id="hr_expense_line_travelbycarcustomerseagatedouble0" model="hr.expense.line">
+ <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-%m-03')"/>
+ <field name="date_value" eval="time.strftime('%Y-09-03')"/>
<field name="analytic_account" ref="account.analytic_consultancy"/>
- <field name="product_id" ref="product_product_expense_air"/>
- <field model="hr.expense.expense" name="expense_id" search="[('name', '=', u'May Expenses')]"/>
+ <field name="product_id" ref="air_ticket"/>
+ <field name="expense_id" ref="sep_expenses"/>
<field eval="700.0" name="unit_amount"/>
<field name="uom_id" ref="product.product_uom_unit"/>
<field eval="1.0" name="unit_quantity"/>
</record>
- <record id="hr_expense_line_basicpcserverforseagate0" model="hr.expense.line">
- <field name="name">Basic PC - Server for Seagate</field>
- <field name="date_value" eval="time.strftime('%Y-%m-03')"/>
- <field name="analytic_account" ref="account.analytic_seagate_p2"/>
- <field name="product_id" ref="product.product_product_pc4"/>
- <field model="hr.expense.expense" name="expense_id" search="[('name', '=', u'May Expenses')]"/>
- <field eval="1200.0" name="unit_amount"/>
- <field name="uom_id" ref="product.product_uom_unit"/>
- <field eval="1.0" name="unit_quantity"/>
- </record>
-
- </data>
-
- <data noupdate="1">
- <record id="hr_expense_expense_septemberexpenses1" model="hr.expense.expense">
- <field name="currency_id" ref="base.EUR"/>
- <field name="employee_id" ref="hr.employee1"/>
- <field name="user_id" ref="base.user_root"/>
- <field name="name">Travel Expenses</field>
- <field name="company_id" ref="base.main_company"/>
- <field name="date" eval="time.strftime('%Y-%m-20')"/>
- <field name="state">draft</field>
- </record>
-
- <record id="hr_expense_line_hotelexpensesthymbra0" model="hr.expense.line">
+ <record id="hotel_bill_sep" model="hr.expense.line">
<field name="name">Hotel Expenses - Thymbra</field>
- <field name="date_value" eval="time.strftime('%Y-%m-03')"/>
+ <field name="date_value" eval="time.strftime('%Y-09-20')"/>
<field name="analytic_account" ref="account.analytic_thymbra"/>
- <field name="product_id" ref="product_product_expense_hotel"/>
- <field model="hr.expense.expense" name="expense_id" search="[('name', '=', u'Travel Expenses')]"/>
+ <field name="product_id" ref="hotel_rent"/>
+ <field name="expense_id" ref="sep_expenses"/>
<field eval="400.0" name="unit_amount"/>
<field name="uom_id" ref="product.product_uom_unit"/>
<field eval="5.0" name="unit_quantity"/>
</record>
- <record id="hr_expense_line_car_travel" model="hr.expense.line">
+ <record id="car_travel_sep" model="hr.expense.line">
<field name="name">Bruxelles - Paris</field>
- <field name="date_value" eval="time.strftime('%Y-%m-03')"/>
+ <field name="date_value" eval="time.strftime('%Y-09-15')"/>
<field name="analytic_account" ref="account.analytic_thymbra"/>
- <field name="product_id" ref="product_product_expense_car"/>
- <field model="hr.expense.expense" name="expense_id" search="[('name', '=', u'Travel Expenses')]"/>
+ <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>
</openerp>
=== added file 'hr_expense/test/expense_demo.yml'
--- hr_expense/test/expense_demo.yml 1970-01-01 00:00:00 +0000
+++ hr_expense/test/expense_demo.yml 2011-12-08 06:53:29 +0000
@@ -0,0 +1,11 @@
+-
+ !record {model: hr.expense.expense, id: sep_expenses, view: False}:
+ employee_id: 'hr.employee4'
+ name : 'John Smith'
+-
+ !record {model: product.product, id: car_travel, view: False}:
+ hr_expense_ok: 'True'
+-
+ !record {model: hr.expense.line, id: expense_line, view: False}:
+ product_id: 'car_travel'
+ name: 'Car Travel Expenses'
\ No newline at end of file
=== renamed file 'hr_expense/test/test_hr_expense.yml' => 'hr_expense/test/expense_process.yml'
--- hr_expense/test/test_hr_expense.yml 2011-11-08 09:33:29 +0000
+++ hr_expense/test/expense_process.yml 2011-12-08 06:53:29 +0000
@@ -1,121 +1,60 @@
-
- In order to test hr_expenses for OpenERP, I create expenses for employee and manage employee's expenses.
--
- I create an unit of measure category "Working Time".
--
- !record {model: product.uom.categ, id: product_uom_categ_workingtime0}:
- name: Working Time.
-
--
- I create a new employee.
--
- !record {model: hr.employee, id: hr.employee}:
- address_home_id: base.res_partner_address_1
- address_id: base.main_address
--
- I assign home address to employee.
--
- !record {model: hr.employee, id: hr.employee1}:
- address_home_id: base.res_partner_address_1
- address_id: base.main_address
--
- I create product unit of measure "Hour".
--
- !record {model: product.uom, id: product_uom_hour0}:
- category_id: 'product_uom_categ_workingtime0'
- factor: 8.0
- name: Hour
- rounding: 0.01
--
- I Create a product "travel".
--
- !record {model: product.product, id: product_product_travel0}:
- categ_id: product.product_category_services
- cost_method: standard
- list_price: 800.0
- mes_type: fixed
- name: Travel
- procure_method: make_to_stock
- standard_price: 700.0
- supply_method: buy
- type: product
- uom_id: 'product_uom_hour0'
- uom_po_id: 'product_uom_hour0'
- volume: 0.0
- warranty: 0.0
- weight: 0.0
- weight_net: 0.0
--
- I mark this product for expenses.
--
- !python {model: product.product}: |
- self.on_change_hr_expense_ok(cr, uid, [ref('product_product_travel0')], True)
--
- I create an expense.
--
- !record {model: hr.expense.expense, id: hr_expense_expense_september0}:
- company_id: base.main_company
- date: !eval "'%s-05-05' %(datetime.now().year)"
- name: September Expenses
- line_ids:
- - date_value: !eval "'%s-05-27' %(datetime.now().year)"
- name: Travel
- product_id: 'product_product_travel0'
- sequence: 0.0
- uom_id: product.product_uom_unit
- unit_amount: 700.0
- user_id: base.user_root
--
- I check that expense is in "Draft" state.
--
- !assert {model: hr.expense.expense, id: hr_expense_expense_september0}:
+ I test the process of "Employee Expenses" by processing the expenses of an employee for September month
+-
+ I check that state is 'Draft'.
+-
+ !assert {model: hr.expense.expense, id: sep_expenses, severity: error, string: Expense should be in Draft state}:
- state == 'draft'
-
- I change the employee on expense form.
--
- !python {model: hr.expense.expense}: |
- res = self.onchange_employee_id(cr, uid, [ref('hr_expense_expense_september0')], ref('hr.employee1'), None)
- values = dict([('employee_id', ref('hr.employee1'))] + res['value'].items())
- self.write(cr, uid, [ref('hr_expense_expense_september0')], values, None)
--
- Now I change the related product on expense line.
--
- !python {model: hr.expense.expense}: |
- exp_line_obj = self.pool.get('hr.expense.line')
- exp_obj = self.browse(cr, uid, ref('hr_expense_expense_september0'), None)
- line_ids = [line.id for line in exp_obj.line_ids]
- res = exp_line_obj.onchange_product_id(cr, uid, line_ids, ref('product_product_expense_air'), False, ref('hr.employee1'), None)
- values = dict([('product_id', ref('product_product_expense_air'))] + res['value'].items())
- exp_line_obj.write(cr, uid, line_ids, values, None)
--
- I confirm this expenses by click on "Confirm" button.
--
- !workflow {model: hr.expense.expense, action: confirm, ref: hr_expense_expense_september0}
-
--
- I check that state is "Waiting Confirmation".
--
- !assert {model: hr.expense.expense, id: hr_expense_expense_september0}:
+ I change the state.
+-
+ !workflow {model: hr.expense.expense, action: confirm, ref: sep_expenses}
+-
+ I check that state is 'Confirm'.
+-
+ !assert {model: hr.expense.expense, id: sep_expenses, severity: error, string: Expense should be in Confirm state}:
- state == 'confirm'
-
- I accept this expense by click on "Accept" button.
--
- !workflow {model: hr.expense.expense, action: validate, ref: hr_expense_expense_september0}
-
--
- I invoiced this expense by click on "Invoice" button.
--
- !python {model: hr.expense.expense}: |
- self.invoice(cr, uid, [ref('hr_expense_expense_september0')], None)
--
- I check that state is "Invoiced".
--
- !assert {model: hr.expense.expense, id: hr_expense_expense_september0}:
- - state == 'invoiced'
--
- I check that Invoice is created for the expense.
--
- !python {model: hr.expense.expense}: |
- exp = self.browse(cr, uid, [ref('hr_expense_expense_september0')])[0]
- assert exp.invoice_id, "Invoice should be created"
-
+ I approve the September expenses.
+-
+ !workflow {model: hr.expense.expense, action: validate, ref: sep_expenses}
+-
+ I check that state is 'Approved'
+-
+ !assert {model: hr.expense.expense, id: sep_expenses, severity: error, string: Expense should be in Approved state}:
+ - state == 'accepted'
+-
+ I make Invoice for the expense.
+-
+ !python {model: hr.expense.expense}: |
+ self.invoice(cr, uid, [ref('sep_expenses')])
+-
+ I check invoice details.
+-
+ !python {model: hr.expense.expense}: |
+ sep_expenses = self.browse(cr, uid, ref("sep_expenses"), context=context)
+ assert sep_expenses.state == 'invoiced', "Expense should be in 'Invoiced' state."
+ assert sep_expenses.invoice_id, "Expense should have link of Invoice."
+ assert sep_expenses.invoice_id.currency_id == sep_expenses.currency_id,"Invoice currency is not correspond with supplier invoice currency"
+ assert sep_expenses.invoice_id.origin == sep_expenses.name,"Invoice origin is not correspond with supplier invoice"
+ assert sep_expenses.invoice_id.type == 'in_invoice', "Invoice type is not supplier invoice"
+ assert sep_expenses.invoice_id.amount_total == sep_expenses.amount,"Invoice total amount is not correspond with supplier invoice total"
+ assert len(sep_expenses.invoice_id.invoice_line) == len(sep_expenses.line_ids),"Lines of Invoice and supplier invoice Line are not correspond"
+-
+ I pay the expenses.
+-
+ !python {model: hr.expense.expense}: |
+ self.expense_paid(cr, uid, [ref('sep_expenses')])
+-
+ I check that state of expenses is 'Paid'.
+-
+ !assert {model: hr.expense.expense, id: sep_expenses, severity: error, string: Expense should be in Paid state}:
+ - state == 'paid'
+-
+ I print a report of the expenses.
+-
+ !python {model: hr.expense.expense}: |
+ import netsvc, tools, os
+ (data, format) = netsvc.LocalService('report.hr.expense').create(cr, uid, [ref('hr_expense.sep_expenses')], {}, {})
+ if tools.config['test_report_directory']:
+ file(os.path.join(tools.config['test_report_directory'], 'hr_expense-report.'+format), 'wb+').write(data)
\ No newline at end of file
=== removed file 'hr_expense/test/hr_expense_report.yml'
--- hr_expense/test/hr_expense_report.yml 2011-01-14 00:11:01 +0000
+++ hr_expense/test/hr_expense_report.yml 1970-01-01 00:00:00 +0000
@@ -1,8 +0,0 @@
--
- In order to test the PDF reports defined on a HR Expense, we will print a HR Expense
--
- !python {model: hr.expense.expense}: |
- import netsvc, tools, os
- (data, format) = netsvc.LocalService('report.hr.expense').create(cr, uid, [ref('hr_expense.hr_expense_expense_septemberexpenses0'),ref('hr_expense.hr_expense_expense_septemberexpenses1')], {}, {})
- if tools.config['test_report_directory']:
- file(os.path.join(tools.config['test_report_directory'], 'hr_expense-report.'+format), 'wb+').write(data)
\ No newline at end of file
_______________________________________________
Mailing list: https://launchpad.net/~openerp-dev-gtk
Post to : [email protected]
Unsubscribe : https://launchpad.net/~openerp-dev-gtk
More help : https://help.launchpad.net/ListHelp