Server IP : 127.0.0.2 / Your IP : 3.138.36.87 Web Server : Apache/2.4.18 (Ubuntu) System : User : www-data ( ) PHP Version : 7.0.33-0ubuntu0.16.04.16 Disable Function : disk_free_space,disk_total_space,diskfreespace,dl,exec,fpaththru,getmyuid,getmypid,highlight_file,ignore_user_abord,leak,listen,link,opcache_get_configuration,opcache_get_status,passthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,php_uname,phpinfo,posix_ctermid,posix_getcwd,posix_getegid,posix_geteuid,posix_getgid,posix_getgrgid,posix_getgrnam,posix_getgroups,posix_getlogin,posix_getpgid,posix_getpgrp,posix_getpid,posix,_getppid,posix_getpwnam,posix_getpwuid,posix_getrlimit,posix_getsid,posix_getuid,posix_isatty,posix_kill,posix_mkfifo,posix_setegid,posix_seteuid,posix_setgid,posix_setpgid,posix_setsid,posix_setuid,posix_times,posix_ttyname,posix_uname,pclose,popen,proc_open,proc_close,proc_get_status,proc_nice,proc_terminate,shell_exec,source,show_source,system,virtual MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /opt/odoo/addons/account_test/data/ |
Upload File : |
<?xml version="1.0" encoding="utf-8"?> <odoo> <record model="accounting.assert.test" id="account_test_01"> <field name="sequence">1</field> <field name="name">Test 1: General balance</field> <field name="desc">Check the balance: Debit sum = Credit sum</field> <field name="code_exec"><![CDATA[sql="""SELECT sum(debit)-sum(credit) as balance FROM account_move_line """ cr.execute(sql) result=[] res= cr.dictfetchall() if res[0]['balance']!=0.0 and res[0]['balance'] is not None: result.append(_('* The difference of the balance is: ')) result.append(res) ]]></field> </record> <record model="accounting.assert.test" id="account_test_03"> <field name="sequence">3</field> <field name="name">Test 3: Movement lines</field> <field name="desc">Check if movement lines are balanced and have the same date and period</field> <field name="code_exec"><![CDATA[order_columns=['am_date','ml_date','am.date','ml.date','am.id'] sql="""SELECT am.id as move_id, sum(debit)-sum(credit) as balance, am.date, ml.date, am.date as am_date, ml.date as ml_date FROM account_move am, account_move_line ml WHERE ml.move_id = am.id GROUP BY am.name, am.id, am.state, am.date, ml.date,am.date, ml.date,am.date, ml.date HAVING abs(sum(ml.debit-ml.credit)) <> 0 or am.date!=ml.date or (am.date!=ml.date) """ cr.execute(sql) res = cr.dictfetchall() if res: res.insert(0,_('* The test failed for these movement lines:')) result = res ]]></field> </record> <!-- TODO: rewrite test since the model of reconciliation has changed --> <!-- <record model="accounting.assert.test" id="account_test_04"> <field name="sequence">4</field> <field name="name">Test 4: Totally reconciled journal items</field> <field name="desc">Check if the totally reconciled journal items are balanced</field> <field name="code_exec"><![CDATA[res = [] cr.execute("SELECT distinct reconcile_id from account_move_line where reconcile_id is not null") rec_ids = cr.dictfetchall() for record in rec_ids : cr.execute("SELECT distinct r.name,r.id from account_journal j,account_period p, account_move_reconcile r,account_move m, account_move_line ml where m.journal_id=j.id and m.date=p.id and ml.reconcile_id=%s and ml.move_id=m.id and ml.reconcile_id=r.id group by r.id,r.name having sum(ml.debit)-sum(ml.credit)<>0", (record['reconcile_id'],)) reconcile_ids=cr.dictfetchall() if reconcile_ids: res.append(', '.join(["Reconcile name: %(name)s, id=%(id)s " % r for r in reconcile_ids])) result = res if result: result.insert(0,_('* The test failed for these reconciled items(id/name):')) ]]></field> </record> --> <record model="accounting.assert.test" id="account_test_05"> <field name="sequence">5</field> <field name="name">Test 5.1 : Payable and Receivable accountant lines of reconciled invoices</field> <field name="desc">Check that reconciled invoice for Sales/Purchases has reconciled entries for Payable and Receivable Accounts</field> <field name="code_exec"><![CDATA[res = [] cr.execute("SELECT distinct inv.number,inv.id from account_invoice inv, account_move m, account_move_line ml, account_account a where m.id=ml.move_id and ml.account_id=a.id and a.internal_type in ('receivable','payable') and inv.move_id=m.id and ml.reconciled is true;") records= cr.dictfetchall() rec = [r['id'] for r in records] res = reconciled_inv() invoices = set(rec).difference(set(res)) result = [rec for rec in records if rec['id'] in invoices] if result: result.insert(0,_('* Invoices that need to be checked: ')) ]]></field> </record> <record model="accounting.assert.test" id="account_test_05_2"> <field name="sequence">6</field> <field name="name">Test 5.2 : Reconcilied invoices and Payable/Receivable accounts</field> <field name="desc">Check that reconciled account moves, that define Payable and Receivable accounts, are belonging to reconciled invoices</field> <field name="code_exec"><![CDATA[res = reconciled_inv() result=[] if res: cr.execute("SELECT distinct inv.number,inv.id from account_invoice inv, account_move_line ml, account_account a, account_move m where m.id=ml.move_id and inv.move_id=m.id and inv.id=inv.move_id and ml.reconciled is false and a.internal_type in ('receivable','payable') and ml.account_id=a.id and inv.id in %s",(tuple(res),)) records = cr.dictfetchall() result = [rec for rec in records] if result: result.insert(0,_('* Invoices that need to be checked: ')) ]]></field> </record> <record model="accounting.assert.test" id="account_test_06"> <field name="sequence">7</field> <field name="name">Test 6 : Invoices status</field> <field name="desc">Check that paid/reconciled invoices are not in 'Open' state</field> <field name="code_exec"><![CDATA[ from odoo import _ res = [] column_order = ['number','id','name','state'] if reconciled_inv(): cr.execute("select inv.name,inv.state,inv.id,inv.number from account_invoice inv where inv.state!='paid' and id in %s", (tuple(reconciled_inv()),)) res = cr.dictfetchall() result = res if result: result.insert(0,_('* Invoices that need to be checked: ')) ]]></field> </record> <record model="accounting.assert.test" id="account_test_07"> <field name="sequence">8</field> <field name="name">Test 7 : Closing balance on bank statements</field> <field name="desc">Check on bank statement that the Closing Balance = Starting Balance + sum of statement lines</field> <field name="code_exec"><![CDATA[column_order = ['name','difference'] cr.execute("SELECT s.balance_start+sum(m.amount)-s.balance_end_real as difference, s.name from account_bank_statement s inner join account_bank_statement_line m on m.statement_id=s.id group by s.id, s.balance_start, s.balance_end_real,s.name having abs(s.balance_start+sum(m.amount)-s.balance_end_real) > 0.000000001;") result = cr.dictfetchall() if result: result.insert(0,_('* Unbalanced bank statement that need to be checked: ')) ]]></field> </record> <!-- TODO account.period has been removed --> <!-- <record model="accounting.assert.test" id="account_test_08"> <field name="sequence">9</field> <field name="name">Test 8 : Accounts and partners on account moves</field> <field name="desc">Check that general accounts and partners on account moves are active</field> <field name="code_exec"><![CDATA[column_order=['partner_name','partner_active','account_name','move_line_id','period'] res = [] cr.execute("SELECT l.id as move_line_id,a.name as account_name,a.code as account_code,r.name as partner_name,r.active as partner_active,p.name as period from account_period p,res_partner r, account_account a,account_move_line l where l.account_id=a.id and l.partner_id=r.id and (not r.active or not a.active) and l.period_id=p.id") res = cr.dictfetchall() result = res if result: result.insert(0,_('* Here is the list of inactive partners and movement lines that are not correct: ')) ]]></field> </record> --> </odoo>