diff --git a/addons/account/report/general_ledger.py b/addons/account/report/general_ledger.py
index 32186c269f9..c7153e65921 100644
--- a/addons/account/report/general_ledger.py
+++ b/addons/account/report/general_ledger.py
@@ -266,7 +266,7 @@ class general_ledger(rml_parse.rml_parse):
JOIN account_journal j on (l.journal_id=j.id)
WHERE %s AND l.account_id = %%s AND l.date<=%%s AND l.date>=%%s ORDER by %s
""" % (self.query, sql_sort)
- self.cr.execute(sql, (account.id, self.date_borne['max_date'], self.date_borne['min_date']))
+ self.cr.execute(sql, (account.id, self.date_borne['max_date'], self.date_borne['min_date']))
res = self.cr.dictfetchall()
account_sum = 0.0
account_move_line_obj = pooler.get_pool(self.cr.dbname).get('account.move.line')
diff --git a/addons/account/report/report_balance_sheet.rml b/addons/account/report/report_balance_sheet.rml
index c540e16f58e..20f52cdd2f2 100644
--- a/addons/account/report/report_balance_sheet.rml
+++ b/addons/account/report/report_balance_sheet.rml
@@ -186,7 +186,7 @@
[[ '. '*(a['level']-1) ]][[ a['level']<4 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) ]][[ a['name'] ]]
|
- [[ a['balance'] and formatLang(abs(a['balance'])) or 0.0 ]]
+ [[ a['balance'] and formatLang(get_abs(a['balance'])) or 0.0 ]]
|
@@ -196,7 +196,7 @@
Balance:([[ get_currency(data['form']) ]])
- [[ sum_dr() and formatLang(sum_dr()) or 0.0 ]]
+ [[ sum_dr() and formatLang(get_abs(sum_dr())) or 0.0 ]]
|
@@ -221,10 +221,10 @@
[[ repeatIn(get_lines_another('asset'), 'a') ]][[ a['code'] ]][[ a['level']<4 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) ]]
- [[ a['code'] ]][[ a['level']<4 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) ]][[ a['name'] ]]
+ [[ '. '*(a['level']-1) ]][[ a['level']<4 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) ]][[ a['name'] ]]
|
- [[ a['balance'] and formatLang(abs(a['balance'])) or 0.0 ]]
+ [[ a['balance'] and formatLang(get_abs(a['balance'])) or 0.0 ]]
|
@@ -234,7 +234,7 @@
Balance:([[ get_currency(data['form']) ]])
- [[ sum_cr() and formatLang(sum_cr()) or 0.0 ]]
+ [[ sum_cr() and formatLang(get_abs(sum_cr())) or 0.0 ]]
|
diff --git a/addons/account/report/report_balance_sheet_horizontal.rml b/addons/account/report/report_balance_sheet_horizontal.rml
index d9b92da3856..3e60f7bfd2c 100644
--- a/addons/account/report/report_balance_sheet_horizontal.rml
+++ b/addons/account/report/report_balance_sheet_horizontal.rml
@@ -197,7 +197,7 @@
[[ '. '*(a['level']-1) ]][[ a['level']<4 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) ]][[ a['name'] ]]
- [[ a['balance'] and formatLang(abs(a['balance'])) or 0.0 ]]
+ [[ a['balance'] and formatLang(get_abs(a['balance'])) or 0.0 ]]
|
[[ a['level']<4 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) ]][[ a['code1'] ]]
@@ -206,7 +206,7 @@
[[ '. '*(a['level1']-1) ]][[ a['level1']<4 and ( setTag('para','para',{'style':'terp_default_Bold_9'})) ]][[ a['name1'] ]]
|
- [[ a['balance1'] and formatLang(abs(a['balance1'])) or 0.0 ]]
+ [[ a['balance1'] and formatLang(get_abs(a['balance1'])) or 0.0 ]]
|
@@ -216,13 +216,13 @@
Balance:([[ get_currency(data['form']) ]])
- [[ sum_dr() and formatLang(abs(sum_dr())) or 0.0 ]]
+ [[ sum_dr() and formatLang(get_abs(sum_dr())) or 0.0 ]]
|
Balance:([[ get_currency(data['form']) ]])
|
- [[ sum_cr() and formatLang(abs(sum_cr())) or 0.0 ]]
+ [[ sum_cr() and formatLang(get_abs(sum_cr())) or 0.0 ]]
|
diff --git a/addons/account/report/report_bs.py b/addons/account/report/report_bs.py
index 5a7294338c5..04fafd7ed30 100644
--- a/addons/account/report/report_bs.py
+++ b/addons/account/report/report_bs.py
@@ -37,6 +37,7 @@ class report_balancesheet_horizontal(rml_parse.rml_parse):
self.result_temp=[]
self.localcontext.update({
'time': time,
+ 'get_abs' : self.get_abs,
'get_lines' : self.get_lines,
'get_lines_another' : self.get_lines_another,
'get_company': self.get_company,
@@ -48,6 +49,9 @@ class report_balancesheet_horizontal(rml_parse.rml_parse):
})
self.context = context
+
+ def get_abs(self,amount):
+ return abs(amount)
def sum_dr(self):
if self.res_pl['type'] == 'Net Profit':
diff --git a/addons/account/report/report_pl.py b/addons/account/report/report_pl.py
index c693b9940c9..e78639cff83 100644
--- a/addons/account/report/report_pl.py
+++ b/addons/account/report/report_pl.py
@@ -35,6 +35,7 @@ class report_pl_account_horizontal(rml_parse.rml_parse):
self.result_temp=[]
self.localcontext.update( {
'time': time,
+ 'get_abs' : self.get_abs,
'get_lines' : self.get_lines,
'get_lines_another' : self.get_lines_another,
'get_company': self.get_company,
@@ -45,7 +46,10 @@ class report_pl_account_horizontal(rml_parse.rml_parse):
'final_result' : self.final_result,
})
self.context = context
-
+
+ def get_abs(self,amount):
+ return abs(amount)
+
def final_result(self):
return self.res_pl
diff --git a/addons/account/report/report_pl_account.rml b/addons/account/report/report_pl_account.rml
index 6e72a198115..80aa4b97701 100644
--- a/addons/account/report/report_pl_account.rml
+++ b/addons/account/report/report_pl_account.rml
@@ -201,7 +201,7 @@
- [[ a.balance and formatLang(abs(a.balance)) or 0.0 ]]
+ [[ a.balance and formatLang(get_abs(a.balance)) or 0.0 ]]
|
@@ -214,7 +214,7 @@
[[ final_result()['type'] == 'Net Profit C.F.B.L.' and final_result()['type'] or removeParentNode('blockTable') ]]
- [[ final_result()['balance'] and final_result()['type'] == 'Net Profit C.F.B.L.' and formatLang(abs(final_result()['balance'])) or 0.0 ]]
+ [[ final_result()['balance'] and final_result()['type'] == 'Net Profit C.F.B.L.' and formatLang(get_abs(final_result()['balance'])) or 0.0 ]]
|
@@ -224,7 +224,7 @@
Total:([[ get_currency(data['form']) ]])
- [[ sum_dr() and formatLang(abs(sum_dr())) or 0.0 ]]
+ [[ sum_dr() and formatLang(get_abs(sum_dr())) or 0.0 ]]
|
@@ -256,7 +256,7 @@
- [[ a.balance and formatLang(abs(a.balance)) or 0.0 ]]
+ [[ a.balance and formatLang(get_abs(a.balance)) or 0.0 ]]
|
@@ -269,7 +269,7 @@
[[ final_result()['type'] == 'Net Loss C.F.B.L.' and final_result()['type'] or removeParentNode('blockTable') ]]
- [[ final_result()['balance'] and final_result()['type'] == 'Net Loss C.F.B.L.' and formatLang(abs(final_result()['balance'])) or 0.0 ]]
+ [[ final_result()['balance'] and final_result()['type'] == 'Net Loss C.F.B.L.' and formatLang(get_abs(final_result()['balance'])) or 0.0 ]]
|
@@ -279,7 +279,7 @@
Total:([[ get_currency(data['form']) ]])
- [[ sum_cr() and formatLang(abs(sum_cr())) or 0.0 ]]
+ [[ sum_cr() and formatLang(get_abs(sum_cr())) or 0.0 ]]
|
diff --git a/addons/account/report/report_pl_account_horizontal.rml b/addons/account/report/report_pl_account_horizontal.rml
index b68d375d3be..35e4ff47268 100644
--- a/addons/account/report/report_pl_account_horizontal.rml
+++ b/addons/account/report/report_pl_account_horizontal.rml
@@ -214,7 +214,7 @@
- [[ a['balance'] and formatLang(abs(a['balance'])) or 0.0 ]]
+ [[ a['balance'] and formatLang(get_abs(a['balance'])) or 0.0 ]]
|
@@ -227,7 +227,7 @@
|
- [[ a['balance1'] and formatLang(abs(a['balance1'])) or 0.0 ]]
+ [[ a['balance1'] and formatLang(get_abs(a['balance1'])) or 0.0 ]]
|
@@ -240,7 +240,7 @@
[[ final_result()['type'] == 'Net Profit C.F.B.L.' and final_result()['type'] or '' ]]
- [[ final_result()['balance'] and final_result()['type'] == 'Net Profit C.F.B.L.' and formatLang(abs(final_result()['balance'])) or 0.0 ]]
+ [[ final_result()['balance'] and final_result()['type'] == 'Net Profit C.F.B.L.' and formatLang(get_abs(final_result()['balance'])) or 0.0 ]]
|
@@ -249,7 +249,7 @@
[[ final_result()['type'] == 'Net Loss C.F.B.L.' and final_result()['type'] or '' ]]
|
- [[ final_result()['balance'] and final_result()['type'] == 'Net Loss C.F.B.L.' and formatLang(abs(final_result()['balance'])) or 0.0 ]]
+ [[ final_result()['balance'] and final_result()['type'] == 'Net Loss C.F.B.L.' and formatLang(get_abs(final_result()['balance'])) or 0.0 ]]
|
@@ -260,13 +260,13 @@
Total:([[ get_currency(data['form']) ]])
- [[ sum_dr() and formatLang(abs(sum_dr())) or 0.0 ]]
+ [[ sum_dr() and formatLang(get_abs(sum_dr())) or 0.0 ]]
|
Total:([[ get_currency(data['form']) ]])
|
- [[ sum_cr() and formatLang(abs(sum_cr())) or 0.0 ]]
+ [[ sum_cr() and formatLang(get_abs(sum_cr())) or 0.0 ]]
|
diff --git a/addons/account/security/ir.model.access.csv b/addons/account/security/ir.model.access.csv
index 4337bdc61af..b9d2f8377c0 100644
--- a/addons/account/security/ir.model.access.csv
+++ b/addons/account/security/ir.model.access.csv
@@ -62,6 +62,7 @@
"access_account_fiscalyear","account.fiscalyear","model_account_fiscalyear","account.group_account_manager",1,1,1,1
"access_account_fiscalyear_user","account.fiscalyear.user","model_account_fiscalyear","account.group_account_user",1,0,0,0
"access_account_fiscalyear_invoice","account.fiscalyear.invoice","model_account_fiscalyear","account.group_account_invoice",1,0,0,0
+"access_account_fiscalyear_partner_manager","account.fiscalyear.partnermanager","model_account_fiscalyear","base.group_partner_manager",1,0,0,0
"access_res_currency_account_manager","res.currency account manager","base.model_res_currency","group_account_manager",1,1,1,1
"access_res_currency_rate_account_manager","res.currency.rate account manager","base.model_res_currency_rate","group_account_manager",1,1,1,1
"access_account_invoice_user","account.invoice user","model_account_invoice","base.group_user",1,0,0,0
@@ -91,3 +92,5 @@
"access_account_account_report_manager","account.account.report","model_account_account_report","account.group_account_manager",1,0,0,0
"access_account_entries_report_manager","account.entries.report","model_account_entries_report","account.group_account_manager",1,0,0,0
"access_analytic_entries_report_manager","analytic.entries.report","model_analytic_entries_report","account.group_account_manager",1,0,0,0
+"access_account_cashbox_line","account.cashbox.line","model_account_cashbox_line","account.group_account_manager",1,1,1,1
+"access_account_cashbox_line","account.cashbox.line","model_account_cashbox_line","account.group_account_user",1,0,0,0
diff --git a/addons/account/sequence.py b/addons/account/sequence.py
index c90e9ef93c7..b75e7f3e34e 100644
--- a/addons/account/sequence.py
+++ b/addons/account/sequence.py
@@ -19,19 +19,23 @@
#
##############################################################################
-from osv import fields,osv
+from osv import fields, osv
class ir_sequence_fiscalyear(osv.osv):
_name = 'account.sequence.fiscalyear'
_rec_name = "sequence_main_id"
_columns = {
- "sequence_id": fields.many2one("ir.sequence", 'Sequence', required=True, ondelete='cascade'),
- "sequence_main_id": fields.many2one("ir.sequence", 'Main Sequence', required=True, ondelete='cascade'),
- "fiscalyear_id": fields.many2one('account.fiscalyear', 'Fiscal Year', required=True, ondelete='cascade')
+ "sequence_id": fields.many2one("ir.sequence", 'Sequence', required=True,
+ ondelete='cascade'),
+ "sequence_main_id": fields.many2one("ir.sequence", 'Main Sequence',
+ required=True, ondelete='cascade'),
+ "fiscalyear_id": fields.many2one('account.fiscalyear', 'Fiscal Year',
+ required=True, ondelete='cascade')
}
_sql_constraints = [
- ('main_id', 'CHECK (sequence_main_id != sequence_id)', 'Main Sequence must be different from current !'),
+ ('main_id', 'CHECK (sequence_main_id != sequence_id)',
+ 'Main Sequence must be different from current !'),
]
ir_sequence_fiscalyear()
@@ -39,17 +43,25 @@ ir_sequence_fiscalyear()
class ir_sequence(osv.osv):
_inherit = 'ir.sequence'
_columns = {
- 'fiscal_ids' : fields.one2many('account.sequence.fiscalyear', 'sequence_main_id', 'Sequences')
+ 'fiscal_ids' : fields.one2many('account.sequence.fiscalyear',
+ 'sequence_main_id', 'Sequences')
}
- def get_id(self, cr, uid, sequence_id, test='id', context={}):
- cr.execute('select id from ir_sequence where '+test+'=%s and active=%s', (sequence_id, True,))
+ def get_id(self, cr, uid, sequence_id, test='id', context=None):
+ if context is None:
+ context = {}
+ cr.execute('select id from ir_sequence where '
+ + test + '=%s and active=%s', (sequence_id, True,))
res = cr.dictfetchone()
if res:
- for line in self.browse(cr, uid, res['id'], context=context).fiscal_ids:
- if line.fiscalyear_id.id==context.get('fiscalyear_id', False):
- return super(ir_sequence, self).get_id(cr, uid, line.sequence_id.id, test="id", context=context)
- return super(ir_sequence, self).get_id(cr, uid, sequence_id, test, context)
+ for line in self.browse(cr, uid, res['id'],
+ context=context).fiscal_ids:
+ if line.fiscalyear_id.id == context.get('fiscalyear_id', False):
+ return super(ir_sequence, self).get_id(cr, uid,
+ line.sequence_id.id,
+ test="id",
+ context=context)
+ return super(ir_sequence, self).get_id(cr, uid, sequence_id, test,
+ context=context)
ir_sequence()
-
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/account/sequence_view.xml b/addons/account/sequence_view.xml
index 2d4d159cb41..fe34590e78b 100644
--- a/addons/account/sequence_view.xml
+++ b/addons/account/sequence_view.xml
@@ -12,8 +12,12 @@
-
+
+
diff --git a/addons/account/test/account_customer_invoice.yml b/addons/account/test/account_customer_invoice.yml
index 0cbcc0f944d..e5920d0caed 100644
--- a/addons/account/test/account_customer_invoice.yml
+++ b/addons/account/test/account_customer_invoice.yml
@@ -32,6 +32,12 @@
-
!assert {model: account.invoice, id: account_invoice_customer0}:
- state == 'proforma2'
+-
+ I check that there is no move attached to the invoice
+-
+ !python {model: account.invoice}: |
+ acc_id=self.browse(cr, uid, ref("account_invoice_customer0"))
+ assert acc_id.move_id, "Move not created"
-
I create invoice by clicking on Create button
-
@@ -41,6 +47,13 @@
-
!assert {model: account.invoice, id: account_invoice_customer0}:
- state == 'open'
+
+-
+ I check that now there is a move attached to the invoice
+-
+ !python {model: account.invoice}: |
+ acc_id=self.browse(cr, uid, ref("account_invoice_customer0"))
+ assert acc_id.move_id, "Move created"
-
I create a record for partial payment of 1000 EUR.
-
diff --git a/addons/account/test/account_fiscalyear_close.yml b/addons/account/test/account_fiscalyear_close.yml
index 6a619a8df5c..fa4f24effc1 100644
--- a/addons/account/test/account_fiscalyear_close.yml
+++ b/addons/account/test/account_fiscalyear_close.yml
@@ -59,33 +59,33 @@
"tz": False, "active_id": ref("account.menu_action_move_journal_line_form"),
})
--
- In order to test Cancel Opening Entries I cancelled the opening entries created for "Fiscal Year 2011"
--
- !record {model: account.open.closed.fiscalyear, id: account_open_closed_fiscalyear_1}:
- fyear_id: account.data_fiscalyear
--
- I clicked on Open button
--
- !python {model: account.open.closed.fiscalyear}: |
- self.remove_entries(cr, uid, [ref("account_open_closed_fiscalyear_1")], {"lang":
- 'en_US', "active_model": "ir.ui.menu", "active_ids": [ref("account.menu_wizard_open_closed_fy")],
- "tz": False, "active_id": ref("account.menu_wizard_open_closed_fy"), })
--
- I check the opening entries By using "Entries by Line wizard"
--
- !record {model: account.move.journal, id: account_move_journal_2}:
- journal_id: account.sales_journal
- period_id: account_period_jan11
-
--
- I checked the Opening entries are cancelled successfully
--
- !python {model: account.move.journal}: |
- self.action_open_window(cr, uid, [ref("account_move_journal_2")], {"lang": 'en_US',
- "active_model": "ir.ui.menu", "active_ids": [ref("account.menu_action_move_journal_line_form")],
- "tz": False, "active_id": ref("account.menu_action_move_journal_line_form"),
- })
+#-
+# In order to test Cancel Opening Entries I cancelled the opening entries created for "Fiscal Year 2011"
+#-
+# !record {model: account.open.closed.fiscalyear, id: account_open_closed_fiscalyear_1}:
+# fyear_id: account.data_fiscalyear
+#-
+# I clicked on Open button
+#-
+# !python {model: account.open.closed.fiscalyear}: |
+# self.remove_entries(cr, uid, [ref("account_open_closed_fiscalyear_1")], {"lang":
+# 'en_US', "active_model": "ir.ui.menu", "active_ids": [ref("account.menu_wizard_open_closed_fy")],
+# "tz": False, "active_id": ref("account.menu_wizard_open_closed_fy"), })
+#-
+# I check the opening entries By using "Entries by Line wizard"
+#-
+# !record {model: account.move.journal, id: account_move_journal_2}:
+# journal_id: account.sales_journal
+# period_id: account_period_jan11
+#
+#-
+# I checked the Opening entries are cancelled successfully
+#-
+# !python {model: account.move.journal}: |
+# self.action_open_window(cr, uid, [ref("account_move_journal_2")], {"lang": 'en_US',
+# "active_model": "ir.ui.menu", "active_ids": [ref("account.menu_action_move_journal_line_form")],
+# "tz": False, "active_id": ref("account.menu_action_move_journal_line_form"),
+# })
diff --git a/addons/account/test/account_sequence_test.yml b/addons/account/test/account_sequence_test.yml
new file mode 100644
index 00000000000..3be824d2ca0
--- /dev/null
+++ b/addons/account/test/account_sequence_test.yml
@@ -0,0 +1,45 @@
+- In order to test the invoice numbering, I create a sequence for out invoices.
+- !record {model: ir.sequence, id: seq_out_invoice_test}:
+ name: Account Invoice Out for the demonstration Fiscal Year # XXX indicate the name of the fiscal year
+ code: account.invoice.out_invoice
+ padding: 3
+ prefix: FY-
+ suffix: -TEST
+ number_next: 42
+
+- I link the new sequence to the demo sequence and the demo fiscal years.
+- !record {model: account.sequence.fiscalyear, id: seq_out_invoice_test_fy}:
+ sequence_id: seq_out_invoice_test
+ sequence_main_id: seq_out_invoice
+ fiscalyear_id: data_fiscalyear
+
+- I create a draft customer invoice in a period of the demo fiscal year
+- !record {model: account.invoice, id: invoice_seq_test}:
+ account_id: account.a_recv
+ address_contact_id: base.res_partner_address_zen
+ address_invoice_id: base.res_partner_address_zen
+ company_id: base.main_company
+ currency_id: base.EUR
+ invoice_line:
+ - account_id: account.a_sale
+ name: '[PC3] Medium PC'
+ price_unit: 900.0
+ quantity: 10.0
+ product_id: product.product_product_pc3
+ uos_id: product.product_uom_unit
+ journal_id: account.sales_journal
+ partner_id: base.res_partner_3
+ reference_type: none
+ period_id: period_1
+
+- I create the invoice, as is I clicked on the "Create" button
+- !workflow {model: account.invoice, action: invoice_open, ref: invoice_seq_test}
+
+- I check that the invoice state is "Open"
+- !assert {model: account.invoice, id: invoice_seq_test}:
+ - state == 'open'
+
+- I check that the invoice got the right number using our sequence
+ # This used to fail because of bug #602188
+- !assert {model: account.invoice, id: invoice_seq_test}:
+ - number == 'FY-042-TEST'
diff --git a/addons/account/test/chart_of_account.yml b/addons/account/test/chart_of_account.yml
index 39d7428ea73..09271f778be 100644
--- a/addons/account/test/chart_of_account.yml
+++ b/addons/account/test/chart_of_account.yml
@@ -25,21 +25,19 @@
"active_model": "ir.ui.menu", "active_ids": [ref("account.menu_action_account_tree2")],
"tz": False, "active_id": ref("account.menu_action_account_tree2"), })
--
- In order to test Account Move Line Wizard I check the move line entries using this wizard
--
- !record {model: account.move.line.select, id: account_move_line_select_0}:
- {}
--
- I clicked on Button to open the account move lines
--
- !python {model: account.move.line.select}: |
- self.open_window(cr, uid, [ref("account_move_line_select_0")], {"lang": 'en_US',
- "state": "all", "tz": False, "active_model": "account.account", "active_ids":
- [ref("account.a_recv")], "fiscalyear": 1, "active_id": ref("account.a_recv"),
- })
-
-
+#-
+# In order to test Account Move Line Wizard I check the move line entries using this wizard
+#-
+# !record {model: account.move.line.select, id: account_move_line_select_0}:
+# {}
+#-
+# I clicked on Button to open the account move lines
+#-
+# !python {model: account.move.line.select}: |
+# self.open_window(cr, uid, [ref("account_move_line_select_0")], {"lang": 'en_US',
+# "state": "all", "tz": False, "active_model": "account.account", "active_ids":
+# [ref("account.a_recv")], "fiscalyear": 1, "active_id": ref("account.a_recv"),
+# })
-
In order to test the Analytic Charts of Account wizard I will generate chart
diff --git a/addons/account/wizard/__init__.py b/addons/account/wizard/__init__.py
index 1dea8e8d4f3..3f6bd126251 100644
--- a/addons/account/wizard/__init__.py
+++ b/addons/account/wizard/__init__.py
@@ -45,7 +45,9 @@ import account_open_closed_fiscalyear
import account_compare_account_balance_report
import account_invoice_state
import account_chart
-import account_move_line_select
+#TODO: remove this file no moe used
+# also remove related view fiel
+#import account_move_line_select
import account_validate_account_move
import account_use_model
diff --git a/addons/account/wizard/account_aged_trial_balance_view.xml b/addons/account/wizard/account_aged_trial_balance_view.xml
index 769d7ee268f..a928524893e 100644
--- a/addons/account/wizard/account_aged_trial_balance_view.xml
+++ b/addons/account/wizard/account_aged_trial_balance_view.xml
@@ -35,6 +35,7 @@
{'record_id':active_id}
new
+ Aged Partner Balance is a more detailed report of your receivables by intervals. When opening that report, Open ERP asks for the name of the company, the fiscal period and the size of the interval to be analyzed (in days). Open ERP then calculates a table of credit balance by period. So if you request an interval of 30 days OpenERP generates an analysis of creditors for the past month, past two months, and so on.