[Erp5-report] r27619 - in /erp5/trunk/products/ERP5/tests: testNewPayroll.py testPayroll.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Tue Jun 16 17:53:07 CEST 2009
Author: fabien
Date: Tue Jun 16 17:53:07 2009
New Revision: 27619
URL: http://svn.erp5.org?rev=27619&view=rev
Log:
move and update some test from testPayroll to testNewPayroll
Modified:
erp5/trunk/products/ERP5/tests/testNewPayroll.py
erp5/trunk/products/ERP5/tests/testPayroll.py
Modified: erp5/trunk/products/ERP5/tests/testNewPayroll.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testNewPayroll.py?rev=27619&r1=27618&r2=27619&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testNewPayroll.py [utf8] (original)
+++ erp5/trunk/products/ERP5/tests/testNewPayroll.py [utf8] Tue Jun 16 17:53:07 2009
@@ -119,6 +119,7 @@
'salary_range/france/slice_600_to_800',
'marital_status/married',
'marital_status/single',
+ 'group/demo_group',
)
def getBusinessTemplateList(self):
@@ -1814,6 +1815,548 @@
sequence_list.addSequenceString(sequence_string)
sequence_list.play(self)
+ def test_PayrollTaxesReport(self):
+ currency_module = self.getCurrencyModule()
+ if not hasattr(currency_module, 'EUR'):
+ currency_module.newContent(
+ portal_type = 'Currency',
+ reference = "EUR", id = "EUR", base_unit_quantity=0.001 )
+ eur = self.portal.currency_module.EUR
+ service = self.portal.service_module.newContent(
+ portal_type='Service',
+ title='PS1',
+ variation_base_category_list=('tax_category',),
+ variation_category_list=('tax_category/employee_share',
+ 'tax_category/employer_share'))
+ employer = self.portal.organisation_module.newContent(
+ portal_type='Organisation',
+ title='Employer',
+ price_currency_value=eur,
+ group_value=self.portal.portal_categories.group.demo_group)
+ employee1 = self.portal.person_module.newContent(
+ portal_type='Person',
+ title='Employee One',
+ career_reference='E1',
+ career_subordination_value=employer)
+ employee2 = self.portal.person_module.newContent(
+ portal_type='Person',
+ title='Employee Two',
+ career_reference='E2',
+ career_subordination_value=employer)
+ provider = self.portal.organisation_module.newContent(
+ portal_type='Organisation',
+ title='Service Provider')
+ other_provider = self.portal.organisation_module.newContent(
+ portal_type='Organisation',
+ title='Another Service Provider')
+ ps1 = self.portal.accounting_module.newContent(
+ portal_type='Pay Sheet Transaction',
+ title='Employee 1',
+ destination_section_value=employer,
+ source_section_value=employee1,
+ start_date=DateTime(2006, 1, 1),)
+ line = ps1.newContent(portal_type='Pay Sheet Line',
+ resource_value=service,
+ source_section_value=provider,
+ # (destination is set by PaySheetTransaction.createPaySheetLine)
+ destination_value=employee1,
+ variation_category_list=('tax_category/employee_share',
+ 'tax_category/employer_share'))
+ cell_employee = line.newCell('tax_category/employee_share',
+ portal_type='Pay Sheet Cell',
+ base_id='movement',
+ mapped_value_property_list=('price',
+ 'quantity'),)
+ cell_employee.edit(price=-.50, quantity=2000, tax_category='employee_share')
+ cell_employer = line.newCell('tax_category/employer_share',
+ portal_type='Pay Sheet Cell',
+ base_id='movement',
+ mapped_value_property_list=('price',
+ 'quantity'),)
+ cell_employer.edit(price=-.40, quantity=2000, tax_category='employer_share')
+ ps1.plan()
+
+ ps2 = self.portal.accounting_module.newContent(
+ portal_type='Pay Sheet Transaction',
+ title='Employee 2',
+ destination_section_value=employer,
+ source_section_value=employee2,
+ start_date=DateTime(2006, 1, 1),)
+ line = ps2.newContent(portal_type='Pay Sheet Line',
+ resource_value=service,
+ source_section_value=provider,
+ destination_value=employee2,
+ variation_category_list=('tax_category/employee_share',
+ 'tax_category/employer_share'))
+ cell_employee = line.newCell('tax_category/employee_share',
+ portal_type='Pay Sheet Cell',
+ base_id='movement',
+ mapped_value_property_list=('price',
+ 'quantity'),)
+ cell_employee.edit(price=-.50, quantity=3000, tax_category='employee_share')
+ cell_employer = line.newCell('tax_category/employer_share',
+ portal_type='Pay Sheet Cell',
+ base_id='movement',
+ mapped_value_property_list=('price',
+ 'quantity'),)
+ cell_employer.edit(price=-.40, quantity=3000, tax_category='employer_share')
+
+ other_line = ps2.newContent(portal_type='Pay Sheet Line',
+ resource_value=service,
+ destination_value=employee2,
+ source_section_value=other_provider,
+ variation_category_list=('tax_category/employee_share',
+ 'tax_category/employer_share'))
+ cell_employee = other_line.newCell('tax_category/employee_share',
+ portal_type='Pay Sheet Cell',
+ base_id='movement',
+ mapped_value_property_list=('price',
+ 'quantity'),)
+ cell_employee.edit(price=-.46, quantity=2998, tax_category='employee_share')
+ cell_employer = other_line.newCell('tax_category/employer_share',
+ portal_type='Pay Sheet Cell',
+ base_id='movement',
+ mapped_value_property_list=('price',
+ 'quantity'),)
+ cell_employer.edit(price=-.42, quantity=2998, tax_category='employer_share')
+
+ transaction.commit()
+ self.tic()
+
+ # AccountingTransactionModule_getPaySheetMovementMirrorSectionItemList is
+ # used in the report dialog to display possible organisations.
+ self.assertEquals(
+ [('', ''),
+ (other_provider.getTitle(), other_provider.getRelativeUrl()),
+ (provider.getTitle(), provider.getRelativeUrl())],
+ self.portal.accounting_module\
+ .AccountingTransactionModule_getPaySheetMovementMirrorSectionItemList())
+
+ # set request variables and render
+ request_form = self.portal.REQUEST
+ request_form['at_date'] = DateTime(2006, 2, 2)
+ request_form['section_category'] = 'group/demo_group'
+ request_form['simulation_state'] = ['draft', 'planned']
+ request_form['resource'] = service.getRelativeUrl()
+ request_form['mirror_section'] = provider.getRelativeUrl()
+
+ report_section_list = self.getReportSectionList(
+ self.portal.accounting_module,
+ 'AccountingTransactionModule_viewPaySheetLineReport')
+ self.assertEquals(1, len(report_section_list))
+
+ line_list = self.getListBoxLineList(report_section_list[0])
+ data_line_list = [l for l in line_list if l.isDataLine()]
+ self.assertEquals(2, len(data_line_list))
+
+ # base_unit_quantity for EUR is set to 0.001 in createCurrencies, so the
+ # precision is 3
+ precision = self.portal.REQUEST.get('precision')
+ self.assertEquals(3, precision)
+
+ self.checkLineProperties(data_line_list[0],
+ id=1,
+ employee_career_reference='E1',
+ employee_title='Employee One',
+ base=2000,
+ employee_share=2000 * .50,
+ employer_share=2000 * .40,
+ total=(2000 * .50 + 2000 * .40))
+ self.checkLineProperties(data_line_list[1],
+ id=2,
+ employee_career_reference='E2',
+ employee_title='Employee Two',
+ base=3000,
+ employee_share=3000 * .50,
+ employer_share=3000 * .40,
+ total=(3000 * .50 + 3000 * .40))
+ # stat line
+ self.checkLineProperties(line_list[-1],
+ base=3000 + 2000,
+ employee_share=(3000 + 2000) * .50,
+ employer_share=(3000 + 2000) * .40,
+ total=((3000 + 2000) * .50 + (3000 + 2000) * .40))
+
+ def test_PayrollTaxesReportDifferentSalaryRange(self):
+ currency_module = self.getCurrencyModule()
+ if not hasattr(currency_module, 'EUR'):
+ currency_module.newContent(
+ portal_type = 'Currency',
+ reference = "EUR", id = "EUR", base_unit_quantity=0.001 )
+ eur = self.portal.currency_module.EUR
+ service = self.portal.service_module.newContent(
+ portal_type='Service',
+ title='PS1',
+ variation_base_category_list=('tax_category',
+ 'salary_range'),
+ variation_category_list=('tax_category/employee_share',
+ 'tax_category/employer_share',
+ 'salary_range/france/slice_a',
+ 'salary_range/france/slice_b'))
+ employer = self.portal.organisation_module.newContent(
+ portal_type='Organisation',
+ title='Employer',
+ price_currency_value=eur,
+ group_value=self.portal.portal_categories.group.demo_group)
+ employee1 = self.portal.person_module.newContent(
+ portal_type='Person',
+ title='Employee One',
+ career_reference='E1',
+ career_subordination_value=employer)
+ employee2 = self.portal.person_module.newContent(
+ portal_type='Person',
+ title='Employee Two',
+ career_reference='E2',
+ career_subordination_value=employer)
+ provider = self.portal.organisation_module.newContent(
+ portal_type='Organisation',
+ title='Service Provider')
+ other_provider = self.portal.organisation_module.newContent(
+ portal_type='Organisation',
+ title='Another Service Provider')
+ ps1 = self.portal.accounting_module.newContent(
+ portal_type='Pay Sheet Transaction',
+ title='Employee 1',
+ destination_section_value=employer,
+ source_section_value=employee1,
+ start_date=DateTime(2006, 1, 1),)
+ line = ps1.newContent(portal_type='Pay Sheet Line',
+ resource_value=service,
+ source_section_value=provider,
+ # (destination is set by PaySheetTransaction.createPaySheetLine)
+ destination_value=employee1,
+ variation_category_list=('tax_category/employee_share',
+ 'tax_category/employer_share',
+ 'salary_range/france/slice_a',
+ 'salary_range/france/slice_b'))
+ cell_employee_a = line.newCell('tax_category/employee_share',
+ 'salary_range/france/slice_a',
+ portal_type='Pay Sheet Cell',
+ base_id='movement',
+ mapped_value_property_list=('price',
+ 'quantity'),)
+ cell_employee_a.edit(price=-.50, quantity=1000,
+ tax_category='employee_share',
+ salary_range='france/slice_a')
+ cell_employee_b = line.newCell('tax_category/employee_share',
+ 'salary_range/france/slice_b',
+ portal_type='Pay Sheet Cell',
+ base_id='movement',
+ mapped_value_property_list=('price',
+ 'quantity'),)
+ cell_employee_b.edit(price=-.20, quantity=500,
+ tax_category='employee_share',
+ salary_range='france/slice_b')
+
+ cell_employer_a = line.newCell('tax_category/employer_share',
+ 'salary_range/france/slice_a',
+ portal_type='Pay Sheet Cell',
+ base_id='movement',
+ mapped_value_property_list=('price',
+ 'quantity'),)
+ cell_employer_a.edit(price=-.40, quantity=1000,
+ tax_category='employer_share',
+ salary_range='france/slice_a')
+ cell_employer_b = line.newCell('tax_category/employer_share',
+ 'salary_range/france/slice_b',
+ portal_type='Pay Sheet Cell',
+ base_id='movement',
+ mapped_value_property_list=('price',
+ 'quantity'),)
+ cell_employer_b.edit(price=-.32, quantity=500,
+ tax_category='employer_share',
+ salary_range='france/slice_b')
+
+ ps1.plan()
+
+ ps2 = self.portal.accounting_module.newContent(
+ portal_type='Pay Sheet Transaction',
+ title='Employee 2',
+ destination_section_value=employer,
+ source_section_value=employee2,
+ start_date=DateTime(2006, 1, 1),)
+ line = ps2.newContent(portal_type='Pay Sheet Line',
+ resource_value=service,
+ source_section_value=provider,
+ destination_value=employee2,
+ variation_category_list=('tax_category/employee_share',
+ 'tax_category/employer_share',
+ 'salary_range/france/slice_a',
+ 'salary_range/france/slice_b'))
+ cell_employee_a = line.newCell('tax_category/employee_share',
+ 'salary_range/france/slice_a',
+ portal_type='Pay Sheet Cell',
+ base_id='movement',
+ mapped_value_property_list=('price',
+ 'quantity'),)
+ cell_employee_a.edit(price=-.50, quantity=1000,
+ salary_range='france/slice_a',
+ tax_category='employee_share')
+ cell_employee_b = line.newCell('tax_category/employee_share',
+ 'salary_range/france/slice_b',
+ portal_type='Pay Sheet Cell',
+ base_id='movement',
+ mapped_value_property_list=('price',
+ 'quantity'),)
+ cell_employee_b.edit(price=-.20, quantity=3000,
+ salary_range='france/slice_b',
+ tax_category='employee_share')
+
+ cell_employer_a = line.newCell('tax_category/employer_share',
+ 'salary_range/france/slice_a',
+ portal_type='Pay Sheet Cell',
+ base_id='movement',
+ mapped_value_property_list=('price',
+ 'quantity'),)
+ cell_employer_a.edit(price=-.40, quantity=1000,
+ salary_range='france/slice_a',
+ tax_category='employer_share')
+ cell_employer_b = line.newCell('tax_category/employer_share',
+ 'salary_range/france/slice_b',
+ portal_type='Pay Sheet Cell',
+ base_id='movement',
+ mapped_value_property_list=('price',
+ 'quantity'),)
+ cell_employer_b.edit(price=-.32, quantity=3000,
+ salary_range='france/slice_b',
+ tax_category='employer_share')
+ transaction.commit()
+ self.tic()
+
+ # set request variables and render
+ request_form = self.portal.REQUEST
+ request_form['at_date'] = DateTime(2006, 2, 2)
+ request_form['section_category'] = 'group/demo_group'
+ request_form['simulation_state'] = ['draft', 'planned']
+ request_form['resource'] = service.getRelativeUrl()
+ request_form['mirror_section'] = provider.getRelativeUrl()
+
+ report_section_list = self.getReportSectionList(
+ self.portal.accounting_module,
+ 'AccountingTransactionModule_viewPaySheetLineReport')
+ self.assertEquals(1, len(report_section_list))
+
+ line_list = self.getListBoxLineList(report_section_list[0])
+ data_line_list = [l for l in line_list if l.isDataLine()]
+ self.assertEquals(6, len(data_line_list))
+
+ self.checkLineProperties(data_line_list[0],
+ id=1,
+ employee_career_reference='E1',
+ employee_title='Employee One',
+ base=1000,
+ employee_share=1000 * .50,
+ employer_share=1000 * .40,
+ total=(1000 * .50 + 1000 * .40))
+ self.checkLineProperties(data_line_list[1],
+ id=2,
+ employee_career_reference='E2',
+ employee_title='Employee Two',
+ base=1000,
+ employee_share=1000 * .50,
+ employer_share=1000 * .40,
+ total=(1000 * .50 + 1000 * .40))
+ self.checkLineProperties(data_line_list[2],
+ employee_title='Total Slice A',
+ base=2000,
+ employee_share=2000 * .50,
+ employer_share=2000 * .40,
+ #total=(2000 * .50 + 2000 * .40)
+ )
+
+ self.checkLineProperties(data_line_list[3],
+ id=3,
+ employee_career_reference='E1',
+ employee_title='Employee One',
+ base=500,
+ employee_share=500 * .20,
+ employer_share=500 * .32,
+ total=(500 * .20 + 500 * .32))
+ self.checkLineProperties(data_line_list[4],
+ id=4,
+ employee_career_reference='E2',
+ employee_title='Employee Two',
+ base=3000,
+ employee_share=3000 * .20,
+ employer_share=3000 * .32,
+ total=(3000 * .20 + 3000 * .32))
+ self.checkLineProperties(data_line_list[5],
+ employee_title='Total Slice B',
+ base=3500,
+ employee_share=3500 * .20,
+ employer_share=3500 * .32,
+ #total=(3500 * .20 + 3500 * .32),
+ )
+
+ # stat line
+ self.checkLineProperties(line_list[-1],
+ base=2000 + 3500,
+ employee_share=(2000 * .50 + 3500 * .20),
+ employer_share=(2000 * .40 + 3500 * .32),
+ total=((2000 * .50 + 3500 * .20) +
+ (2000 * .40 + 3500 * .32)))
+
+ def test_NetSalaryReport(self):
+ currency_module = self.getCurrencyModule()
+ if not hasattr(currency_module, 'EUR'):
+ currency_module.newContent(
+ portal_type = 'Currency',
+ reference = "EUR", id = "EUR", base_unit_quantity=0.001 )
+ eur = self.portal.currency_module.EUR
+ salary_service = self.portal.service_module.newContent(
+ portal_type='Service',
+ title='Gross Salary',
+ variation_base_category_list=('tax_category',),
+ variation_category_list=('tax_category/employee_share',
+ 'tax_category/employer_share'))
+ service = self.portal.service_module.newContent(
+ portal_type='Service',
+ title='PS1',
+ variation_base_category_list=('tax_category',),
+ variation_category_list=('tax_category/employee_share',
+ 'tax_category/employer_share'))
+ employer = self.portal.organisation_module.newContent(
+ portal_type='Organisation',
+ title='Employer',
+ price_currency_value=eur,
+ group_value=self.portal.portal_categories.group.demo_group)
+ employee1 = self.portal.person_module.newContent(
+ portal_type='Person',
+ title='Employee One',
+ career_reference='E1',
+ career_subordination_value=employer)
+ employee1_ba = employee1.newContent(portal_type='Bank Account',
+ title='Bank 1')
+ employee2 = self.portal.person_module.newContent(
+ portal_type='Person',
+ title='Employee Two',
+ career_reference='E2',
+ career_subordination_value=employer)
+ employee2_ba = employee2.newContent(portal_type='Bank Account',
+ title='Bank 2')
+ provider = self.portal.organisation_module.newContent(
+ portal_type='Organisation',
+ title='Service Provider')
+ other_provider = self.portal.organisation_module.newContent(
+ portal_type='Organisation',
+ title='Another Service Provider')
+ ps1 = self.portal.accounting_module.newContent(
+ portal_type='Pay Sheet Transaction',
+ title='Employee 1',
+ destination_section_value=employer,
+ source_section_value=employee1,
+ payment_condition_source_payment_value=employee1_ba,
+ start_date=DateTime(2006, 1, 1),)
+ line = ps1.newContent(portal_type='Pay Sheet Line',
+ resource_value=salary_service,
+ destination_value=employee1,
+ base_contribution_list=['base_amount/net_salary',],
+ variation_category_list=('tax_category/employee_share',
+ 'tax_category/employer_share'))
+ cell_employee = line.newCell('tax_category/employee_share',
+ portal_type='Pay Sheet Cell',
+ base_id='movement',
+ mapped_value_property_list=('price',
+ 'quantity'),)
+ cell_employee.edit(price=1, quantity=2000, tax_category='employee_share')
+ line = ps1.newContent(portal_type='Pay Sheet Line',
+ resource_value=service,
+ source_section_value=provider,
+ destination_value=employee1,
+ base_contribution_list=['base_amount/net_salary',],
+ variation_category_list=('tax_category/employee_share',
+ 'tax_category/employer_share'))
+ cell_employee = line.newCell('tax_category/employee_share',
+ portal_type='Pay Sheet Cell',
+ base_id='movement',
+ mapped_value_property_list=('price',
+ 'quantity'),)
+ cell_employee.edit(price=-.50, quantity=2000, tax_category='employee_share')
+ cell_employer = line.newCell('tax_category/employer_share',
+ portal_type='Pay Sheet Cell',
+ base_id='movement',
+ mapped_value_property_list=('price',
+ 'quantity'),)
+ cell_employer.edit(price=-.40, quantity=2000, tax_category='employer_share')
+ ps1.plan()
+
+ ps2 = self.portal.accounting_module.newContent(
+ portal_type='Pay Sheet Transaction',
+ title='Employee 2',
+ destination_section_value=employer,
+ source_section_value=employee2,
+ payment_condition_source_payment_value=employee2_ba,
+ start_date=DateTime(2006, 1, 1),)
+ line = ps2.newContent(portal_type='Pay Sheet Line',
+ resource_value=salary_service,
+ destination_value=employee2,
+ base_contribution_list=['base_amount/net_salary',],
+ variation_category_list=('tax_category/employee_share',
+ 'tax_category/employer_share'))
+ cell_employee = line.newCell('tax_category/employee_share',
+ portal_type='Pay Sheet Cell',
+ base_id='movement',
+ mapped_value_property_list=('price',
+ 'quantity'),)
+ cell_employee.edit(price=1, quantity=3000, tax_category='employee_share')
+ line = ps2.newContent(portal_type='Pay Sheet Line',
+ resource_value=service,
+ source_section_value=provider,
+ destination_value=employee2,
+ base_contribution_list=['base_amount/net_salary',],
+ variation_category_list=('tax_category/employee_share',
+ 'tax_category/employer_share'))
+ cell_employee = line.newCell('tax_category/employee_share',
+ portal_type='Pay Sheet Cell',
+ base_id='movement',
+ mapped_value_property_list=('price',
+ 'quantity'),)
+ cell_employee.edit(price=-.50, quantity=3000, tax_category='employee_share')
+ cell_employer = line.newCell('tax_category/employer_share',
+ portal_type='Pay Sheet Cell',
+ base_id='movement',
+ mapped_value_property_list=('price',
+ 'quantity'),)
+ cell_employer.edit(price=-.40, quantity=3000, tax_category='employer_share')
+
+ transaction.commit()
+ self.tic()
+
+ # set request variables and render
+ request_form = self.portal.REQUEST
+ request_form['at_date'] = DateTime(2006, 2, 2)
+ request_form['section_category'] = 'group/demo_group'
+ request_form['simulation_state'] = ['draft', 'planned']
+
+ report_section_list = self.getReportSectionList(
+ self.portal.accounting_module,
+ 'AccountingTransactionModule_viewNetSalaryReport')
+ self.assertEquals(1, len(report_section_list))
+
+ line_list = self.getListBoxLineList(report_section_list[0])
+ data_line_list = [l for l in line_list if l.isDataLine()]
+ self.assertEquals(2, len(data_line_list))
+
+ # base_unit_quantity for EUR is set to 0.001 in createCurrencies, so the
+ # precision is 3
+ precision = self.portal.REQUEST.get('precision')
+ self.assertEquals(3, precision)
+
+ self.checkLineProperties(data_line_list[0],
+ employee_career_reference='E1',
+ employee_title='Employee One',
+ employee_bank_account='Bank 1',
+ total_price=2000 - (2000 * .5),)
+ self.checkLineProperties(data_line_list[1],
+ employee_career_reference='E2',
+ employee_title='Employee Two',
+ employee_bank_account='Bank 2',
+ total_price=3000 - (3000 * .5),)
+ # stat line
+ self.checkLineProperties(
+ line_list[-1],
+ total_price=3000 + 2000 - (2000 * .5) - (3000 * .5))
+
import unittest
def test_suite():
suite = unittest.TestSuite()
Modified: erp5/trunk/products/ERP5/tests/testPayroll.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/tests/testPayroll.py?rev=27619&r1=27618&r2=27619&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/tests/testPayroll.py [utf8] (original)
+++ erp5/trunk/products/ERP5/tests/testPayroll.py [utf8] Tue Jun 16 17:53:07 2009
@@ -575,533 +575,6 @@
pay_sheet.PaySheetTransaction_createAllPaySheetLineList()
pay_sheet_line_list = pay_sheet.contentValues(portal_type='Pay Sheet Line')
self.assertEquals(0, len(pay_sheet_line_list))
-
- def test_PayrollTaxesReport(self):
- eur = self.portal.currency_module.EUR
- service = self.portal.service_module.newContent(
- portal_type='Service',
- title='PS1',
- variation_base_category_list=('tax_category',),
- variation_category_list=('tax_category/employee_share',
- 'tax_category/employer_share'))
- employer = self.portal.organisation_module.newContent(
- portal_type='Organisation',
- title='Employer',
- price_currency_value=eur,
- group_value=self.portal.portal_categories.group.demo_group)
- employee1 = self.portal.person_module.newContent(
- portal_type='Person',
- title='Employee One',
- career_reference='E1',
- career_subordination_value=employer)
- employee2 = self.portal.person_module.newContent(
- portal_type='Person',
- title='Employee Two',
- career_reference='E2',
- career_subordination_value=employer)
- provider = self.portal.organisation_module.newContent(
- portal_type='Organisation',
- title='Service Provider')
- other_provider = self.portal.organisation_module.newContent(
- portal_type='Organisation',
- title='Another Service Provider')
- ps1 = self.portal.accounting_module.newContent(
- portal_type='Pay Sheet Transaction',
- title='Employee 1',
- destination_section_value=employer,
- source_section_value=employee1,
- start_date=DateTime(2006, 1, 1),)
- line = ps1.newContent(portal_type='Pay Sheet Line',
- resource_value=service,
- source_section_value=provider,
- # (destination is set by PaySheetTransaction.createPaySheetLine)
- destination_value=employee1,
- variation_category_list=('tax_category/employee_share',
- 'tax_category/employer_share'))
- cell_employee = line.newCell('tax_category/employee_share',
- portal_type='Pay Sheet Cell',
- base_id='movement',
- mapped_value_property_list=('price',
- 'quantity'),)
- cell_employee.edit(price=-.50, quantity=2000, tax_category='employee_share')
- cell_employer = line.newCell('tax_category/employer_share',
- portal_type='Pay Sheet Cell',
- base_id='movement',
- mapped_value_property_list=('price',
- 'quantity'),)
- cell_employer.edit(price=-.40, quantity=2000, tax_category='employer_share')
- ps1.plan()
-
- ps2 = self.portal.accounting_module.newContent(
- portal_type='Pay Sheet Transaction',
- title='Employee 2',
- destination_section_value=employer,
- source_section_value=employee2,
- start_date=DateTime(2006, 1, 1),)
- line = ps2.newContent(portal_type='Pay Sheet Line',
- resource_value=service,
- source_section_value=provider,
- destination_value=employee2,
- variation_category_list=('tax_category/employee_share',
- 'tax_category/employer_share'))
- cell_employee = line.newCell('tax_category/employee_share',
- portal_type='Pay Sheet Cell',
- base_id='movement',
- mapped_value_property_list=('price',
- 'quantity'),)
- cell_employee.edit(price=-.50, quantity=3000, tax_category='employee_share')
- cell_employer = line.newCell('tax_category/employer_share',
- portal_type='Pay Sheet Cell',
- base_id='movement',
- mapped_value_property_list=('price',
- 'quantity'),)
- cell_employer.edit(price=-.40, quantity=3000, tax_category='employer_share')
-
- other_line = ps2.newContent(portal_type='Pay Sheet Line',
- resource_value=service,
- destination_value=employee2,
- source_section_value=other_provider,
- variation_category_list=('tax_category/employee_share',
- 'tax_category/employer_share'))
- cell_employee = other_line.newCell('tax_category/employee_share',
- portal_type='Pay Sheet Cell',
- base_id='movement',
- mapped_value_property_list=('price',
- 'quantity'),)
- cell_employee.edit(price=-.46, quantity=2998, tax_category='employee_share')
- cell_employer = other_line.newCell('tax_category/employer_share',
- portal_type='Pay Sheet Cell',
- base_id='movement',
- mapped_value_property_list=('price',
- 'quantity'),)
- cell_employer.edit(price=-.42, quantity=2998, tax_category='employer_share')
-
- transaction.commit()
- self.tic()
-
- # AccountingTransactionModule_getPaySheetMovementMirrorSectionItemList is
- # used in the report dialog to display possible organisations.
- self.assertEquals(
- [('', ''),
- (other_provider.getTitle(), other_provider.getRelativeUrl()),
- (provider.getTitle(), provider.getRelativeUrl())],
- self.portal.accounting_module\
- .AccountingTransactionModule_getPaySheetMovementMirrorSectionItemList())
-
- # set request variables and render
- request_form = self.portal.REQUEST
- request_form['at_date'] = DateTime(2006, 2, 2)
- request_form['section_category'] = 'group/demo_group'
- request_form['simulation_state'] = ['draft', 'planned']
- request_form['resource'] = service.getRelativeUrl()
- request_form['mirror_section'] = provider.getRelativeUrl()
-
- report_section_list = self.getReportSectionList(
- self.portal.accounting_module,
- 'AccountingTransactionModule_viewPaySheetLineReport')
- self.assertEquals(1, len(report_section_list))
-
- line_list = self.getListBoxLineList(report_section_list[0])
- data_line_list = [l for l in line_list if l.isDataLine()]
- self.assertEquals(2, len(data_line_list))
-
- # base_unit_quantity for EUR is set to 0.001 in createCurrencies, so the
- # precision is 3
- precision = self.portal.REQUEST.get('precision')
- self.assertEquals(3, precision)
-
- self.checkLineProperties(data_line_list[0],
- id=1,
- employee_career_reference='E1',
- employee_title='Employee One',
- base=2000,
- employee_share=2000 * .50,
- employer_share=2000 * .40,
- total=(2000 * .50 + 2000 * .40))
- self.checkLineProperties(data_line_list[1],
- id=2,
- employee_career_reference='E2',
- employee_title='Employee Two',
- base=3000,
- employee_share=3000 * .50,
- employer_share=3000 * .40,
- total=(3000 * .50 + 3000 * .40))
- # stat line
- self.checkLineProperties(line_list[-1],
- base=3000 + 2000,
- employee_share=(3000 + 2000) * .50,
- employer_share=(3000 + 2000) * .40,
- total=((3000 + 2000) * .50 + (3000 + 2000) * .40))
-
- def test_PayrollTaxesReportDifferentSalaryRange(self):
- eur = self.portal.currency_module.EUR
- service = self.portal.service_module.newContent(
- portal_type='Service',
- title='PS1',
- variation_base_category_list=('tax_category',
- 'salary_range'),
- variation_category_list=('tax_category/employee_share',
- 'tax_category/employer_share',
- 'salary_range/france/tranche_a',
- 'salary_range/france/tranche_b'))
- employer = self.portal.organisation_module.newContent(
- portal_type='Organisation',
- title='Employer',
- price_currency_value=eur,
- group_value=self.portal.portal_categories.group.demo_group)
- employee1 = self.portal.person_module.newContent(
- portal_type='Person',
- title='Employee One',
- career_reference='E1',
- career_subordination_value=employer)
- employee2 = self.portal.person_module.newContent(
- portal_type='Person',
- title='Employee Two',
- career_reference='E2',
- career_subordination_value=employer)
- provider = self.portal.organisation_module.newContent(
- portal_type='Organisation',
- title='Service Provider')
- other_provider = self.portal.organisation_module.newContent(
- portal_type='Organisation',
- title='Another Service Provider')
- ps1 = self.portal.accounting_module.newContent(
- portal_type='Pay Sheet Transaction',
- title='Employee 1',
- destination_section_value=employer,
- source_section_value=employee1,
- start_date=DateTime(2006, 1, 1),)
- line = ps1.newContent(portal_type='Pay Sheet Line',
- resource_value=service,
- source_section_value=provider,
- # (destination is set by PaySheetTransaction.createPaySheetLine)
- destination_value=employee1,
- variation_category_list=('tax_category/employee_share',
- 'tax_category/employer_share',
- 'salary_range/france/tranche_a',
- 'salary_range/france/tranche_b'))
- cell_employee_a = line.newCell('tax_category/employee_share',
- 'salary_range/france/tranche_a',
- portal_type='Pay Sheet Cell',
- base_id='movement',
- mapped_value_property_list=('price',
- 'quantity'),)
- cell_employee_a.edit(price=-.50, quantity=1000,
- tax_category='employee_share',
- salary_range='france/tranche_a')
- cell_employee_b = line.newCell('tax_category/employee_share',
- 'salary_range/france/tranche_b',
- portal_type='Pay Sheet Cell',
- base_id='movement',
- mapped_value_property_list=('price',
- 'quantity'),)
- cell_employee_b.edit(price=-.20, quantity=500,
- tax_category='employee_share',
- salary_range='france/tranche_b')
-
- cell_employer_a = line.newCell('tax_category/employer_share',
- 'salary_range/france/tranche_a',
- portal_type='Pay Sheet Cell',
- base_id='movement',
- mapped_value_property_list=('price',
- 'quantity'),)
- cell_employer_a.edit(price=-.40, quantity=1000,
- tax_category='employer_share',
- salary_range='france/tranche_a')
- cell_employer_b = line.newCell('tax_category/employer_share',
- 'salary_range/france/tranche_b',
- portal_type='Pay Sheet Cell',
- base_id='movement',
- mapped_value_property_list=('price',
- 'quantity'),)
- cell_employer_b.edit(price=-.32, quantity=500,
- tax_category='employer_share',
- salary_range='france/tranche_b')
-
- ps1.plan()
-
- ps2 = self.portal.accounting_module.newContent(
- portal_type='Pay Sheet Transaction',
- title='Employee 2',
- destination_section_value=employer,
- source_section_value=employee2,
- start_date=DateTime(2006, 1, 1),)
- line = ps2.newContent(portal_type='Pay Sheet Line',
- resource_value=service,
- source_section_value=provider,
- destination_value=employee2,
- variation_category_list=('tax_category/employee_share',
- 'tax_category/employer_share',
- 'salary_range/france/tranche_a',
- 'salary_range/france/tranche_b'))
- cell_employee_a = line.newCell('tax_category/employee_share',
- 'salary_range/france/tranche_a',
- portal_type='Pay Sheet Cell',
- base_id='movement',
- mapped_value_property_list=('price',
- 'quantity'),)
- cell_employee_a.edit(price=-.50, quantity=1000,
- salary_range='france/tranche_a',
- tax_category='employee_share')
- cell_employee_b = line.newCell('tax_category/employee_share',
- 'salary_range/france/tranche_b',
- portal_type='Pay Sheet Cell',
- base_id='movement',
- mapped_value_property_list=('price',
- 'quantity'),)
- cell_employee_b.edit(price=-.20, quantity=3000,
- salary_range='france/tranche_b',
- tax_category='employee_share')
-
- cell_employer_a = line.newCell('tax_category/employer_share',
- 'salary_range/france/tranche_a',
- portal_type='Pay Sheet Cell',
- base_id='movement',
- mapped_value_property_list=('price',
- 'quantity'),)
- cell_employer_a.edit(price=-.40, quantity=1000,
- salary_range='france/tranche_a',
- tax_category='employer_share')
- cell_employer_b = line.newCell('tax_category/employer_share',
- 'salary_range/france/tranche_b',
- portal_type='Pay Sheet Cell',
- base_id='movement',
- mapped_value_property_list=('price',
- 'quantity'),)
- cell_employer_b.edit(price=-.32, quantity=3000,
- salary_range='france/tranche_b',
- tax_category='employer_share')
- transaction.commit()
- self.tic()
-
- # set request variables and render
- request_form = self.portal.REQUEST
- request_form['at_date'] = DateTime(2006, 2, 2)
- request_form['section_category'] = 'group/demo_group'
- request_form['simulation_state'] = ['draft', 'planned']
- request_form['resource'] = service.getRelativeUrl()
- request_form['mirror_section'] = provider.getRelativeUrl()
-
- report_section_list = self.getReportSectionList(
- self.portal.accounting_module,
- 'AccountingTransactionModule_viewPaySheetLineReport')
- self.assertEquals(1, len(report_section_list))
-
- line_list = self.getListBoxLineList(report_section_list[0])
- data_line_list = [l for l in line_list if l.isDataLine()]
- self.assertEquals(6, len(data_line_list))
-
- self.checkLineProperties(data_line_list[0],
- id=1,
- employee_career_reference='E1',
- employee_title='Employee One',
- base=1000,
- employee_share=1000 * .50,
- employer_share=1000 * .40,
- total=(1000 * .50 + 1000 * .40))
- self.checkLineProperties(data_line_list[1],
- id=2,
- employee_career_reference='E2',
- employee_title='Employee Two',
- base=1000,
- employee_share=1000 * .50,
- employer_share=1000 * .40,
- total=(1000 * .50 + 1000 * .40))
- self.checkLineProperties(data_line_list[2],
- employee_title='Total Tranche A',
- base=2000,
- employee_share=2000 * .50,
- employer_share=2000 * .40,
- #total=(2000 * .50 + 2000 * .40)
- )
-
- self.checkLineProperties(data_line_list[3],
- id=3,
- employee_career_reference='E1',
- employee_title='Employee One',
- base=500,
- employee_share=500 * .20,
- employer_share=500 * .32,
- total=(500 * .20 + 500 * .32))
- self.checkLineProperties(data_line_list[4],
- id=4,
- employee_career_reference='E2',
- employee_title='Employee Two',
- base=3000,
- employee_share=3000 * .20,
- employer_share=3000 * .32,
- total=(3000 * .20 + 3000 * .32))
- self.checkLineProperties(data_line_list[5],
- employee_title='Total Tranche B',
- base=3500,
- employee_share=3500 * .20,
- employer_share=3500 * .32,
- #total=(3500 * .20 + 3500 * .32),
- )
-
- # stat line
- self.checkLineProperties(line_list[-1],
- base=2000 + 3500,
- employee_share=(2000 * .50 + 3500 * .20),
- employer_share=(2000 * .40 + 3500 * .32),
- total=((2000 * .50 + 3500 * .20) +
- (2000 * .40 + 3500 * .32)))
-
- def test_NetSalaryReport(self):
- eur = self.portal.currency_module.EUR
- salary_service = self.portal.service_module.newContent(
- portal_type='Service',
- title='Gross Salary',
- variation_base_category_list=('tax_category',),
- variation_category_list=('tax_category/employee_share',
- 'tax_category/employer_share'))
- service = self.portal.service_module.newContent(
- portal_type='Service',
- title='PS1',
- variation_base_category_list=('tax_category',),
- variation_category_list=('tax_category/employee_share',
- 'tax_category/employer_share'))
- employer = self.portal.organisation_module.newContent(
- portal_type='Organisation',
- title='Employer',
- price_currency_value=eur,
- group_value=self.portal.portal_categories.group.demo_group)
- employee1 = self.portal.person_module.newContent(
- portal_type='Person',
- title='Employee One',
- career_reference='E1',
- career_subordination_value=employer)
- employee1_ba = employee1.newContent(portal_type='Bank Account',
- title='Bank 1')
- employee2 = self.portal.person_module.newContent(
- portal_type='Person',
- title='Employee Two',
- career_reference='E2',
- career_subordination_value=employer)
- employee2_ba = employee2.newContent(portal_type='Bank Account',
- title='Bank 2')
- provider = self.portal.organisation_module.newContent(
- portal_type='Organisation',
- title='Service Provider')
- other_provider = self.portal.organisation_module.newContent(
- portal_type='Organisation',
- title='Another Service Provider')
- ps1 = self.portal.accounting_module.newContent(
- portal_type='Pay Sheet Transaction',
- title='Employee 1',
- destination_section_value=employer,
- source_section_value=employee1,
- payment_condition_source_payment_value=employee1_ba,
- start_date=DateTime(2006, 1, 1),)
- line = ps1.newContent(portal_type='Pay Sheet Line',
- resource_value=salary_service,
- destination_value=employee1,
- base_contribution_list=['base_amount/net_salary',],
- variation_category_list=('tax_category/employee_share',
- 'tax_category/employer_share'))
- cell_employee = line.newCell('tax_category/employee_share',
- portal_type='Pay Sheet Cell',
- base_id='movement',
- mapped_value_property_list=('price',
- 'quantity'),)
- cell_employee.edit(price=1, quantity=2000, tax_category='employee_share')
- line = ps1.newContent(portal_type='Pay Sheet Line',
- resource_value=service,
- source_section_value=provider,
- destination_value=employee1,
- base_contribution_list=['base_amount/net_salary',],
- variation_category_list=('tax_category/employee_share',
- 'tax_category/employer_share'))
- cell_employee = line.newCell('tax_category/employee_share',
- portal_type='Pay Sheet Cell',
- base_id='movement',
- mapped_value_property_list=('price',
- 'quantity'),)
- cell_employee.edit(price=-.50, quantity=2000, tax_category='employee_share')
- cell_employer = line.newCell('tax_category/employer_share',
- portal_type='Pay Sheet Cell',
- base_id='movement',
- mapped_value_property_list=('price',
- 'quantity'),)
- cell_employer.edit(price=-.40, quantity=2000, tax_category='employer_share')
- ps1.plan()
-
- ps2 = self.portal.accounting_module.newContent(
- portal_type='Pay Sheet Transaction',
- title='Employee 2',
- destination_section_value=employer,
- source_section_value=employee2,
- payment_condition_source_payment_value=employee2_ba,
- start_date=DateTime(2006, 1, 1),)
- line = ps2.newContent(portal_type='Pay Sheet Line',
- resource_value=salary_service,
- destination_value=employee2,
- base_contribution_list=['base_amount/net_salary',],
- variation_category_list=('tax_category/employee_share',
- 'tax_category/employer_share'))
- cell_employee = line.newCell('tax_category/employee_share',
- portal_type='Pay Sheet Cell',
- base_id='movement',
- mapped_value_property_list=('price',
- 'quantity'),)
- cell_employee.edit(price=1, quantity=3000, tax_category='employee_share')
- line = ps2.newContent(portal_type='Pay Sheet Line',
- resource_value=service,
- source_section_value=provider,
- destination_value=employee2,
- base_contribution_list=['base_amount/net_salary',],
- variation_category_list=('tax_category/employee_share',
- 'tax_category/employer_share'))
- cell_employee = line.newCell('tax_category/employee_share',
- portal_type='Pay Sheet Cell',
- base_id='movement',
- mapped_value_property_list=('price',
- 'quantity'),)
- cell_employee.edit(price=-.50, quantity=3000, tax_category='employee_share')
- cell_employer = line.newCell('tax_category/employer_share',
- portal_type='Pay Sheet Cell',
- base_id='movement',
- mapped_value_property_list=('price',
- 'quantity'),)
- cell_employer.edit(price=-.40, quantity=3000, tax_category='employer_share')
-
- transaction.commit()
- self.tic()
-
- # set request variables and render
- request_form = self.portal.REQUEST
- request_form['at_date'] = DateTime(2006, 2, 2)
- request_form['section_category'] = 'group/demo_group'
- request_form['simulation_state'] = ['draft', 'planned']
-
- report_section_list = self.getReportSectionList(
- self.portal.accounting_module,
- 'AccountingTransactionModule_viewNetSalaryReport')
- self.assertEquals(1, len(report_section_list))
-
- line_list = self.getListBoxLineList(report_section_list[0])
- data_line_list = [l for l in line_list if l.isDataLine()]
- self.assertEquals(2, len(data_line_list))
-
- # base_unit_quantity for EUR is set to 0.001 in createCurrencies, so the
- # precision is 3
- precision = self.portal.REQUEST.get('precision')
- self.assertEquals(3, precision)
-
- self.checkLineProperties(data_line_list[0],
- employee_career_reference='E1',
- employee_title='Employee One',
- employee_bank_account='Bank 1',
- total_price=2000 - (2000 * .5),)
- self.checkLineProperties(data_line_list[1],
- employee_career_reference='E2',
- employee_title='Employee Two',
- employee_bank_account='Bank 2',
- total_price=3000 - (3000 * .5),)
- # stat line
- self.checkLineProperties(
- line_list[-1],
- total_price=3000 + 2000 - (2000 * .5) - (3000 * .5))
def test_AccountingLineGeneration(self):
# create services
More information about the Erp5-report
mailing list