diff --git a/account_check_deposit/__init__.py b/account_check_deposit/__init__.py new file mode 100644 index 000000000..20b98b3f5 --- /dev/null +++ b/account_check_deposit/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# account_check_deposit for Odoo/OpenERP +# Copyright (C) 2012-2014 Akretion (http://www.akretion.com/) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################### + +from . import account_deposit diff --git a/account_check_deposit/__openerp__.py b/account_check_deposit/__openerp__.py new file mode 100644 index 000000000..136b6dc1d --- /dev/null +++ b/account_check_deposit/__openerp__.py @@ -0,0 +1,59 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# account_check_deposit for Odoo/OpenERP +# Copyright (C) 2012-2014 Akretion (http://www.akretion.com/) +# @author: Benoît GUILLOT +# @author: Chafique DELLI +# @author: Alexis de Lattre +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################### + +{ + 'name': 'Account Check Deposit', + 'version': '0.1', + 'category': 'Accounting & Finance', + 'license': 'AGPL-3', + 'summary': 'Manage deposit of checks to the bank', + 'description': """ +Account Check Deposit +===================== +This module allows you to easily manage check deposits : you can select all +the checks you received as payments and create a global deposit for the +selected checks. + +A journal for received checks is automatically created. +You must configure on this journal the default debit account and the default +credit account. You must also configure on the company the account for +check deposits. +""", + 'author': 'Akretion', + 'website': 'http://www.akretion.com/', + 'depends': [ + 'account_accountant', + 'report_webkit', + ], + 'data': [ + 'account_deposit_view.xml', + 'account_deposit_sequence.xml', + 'company_view.xml', + 'security/ir.model.access.csv', + 'security/check_deposit_security.xml', + 'account_data.xml', + ], + 'installable': True, + 'application': True, +} diff --git a/account_check_deposit/account_data.xml b/account_check_deposit/account_data.xml new file mode 100644 index 000000000..8bc79336f --- /dev/null +++ b/account_check_deposit/account_data.xml @@ -0,0 +1,32 @@ + + + + + + + + + Journal Check Received + CHK/ + 6 + + + + + + Check Received + CHK + bank + + + + + + + diff --git a/account_check_deposit/account_deposit.py b/account_check_deposit/account_deposit.py new file mode 100644 index 000000000..a98df3166 --- /dev/null +++ b/account_check_deposit/account_deposit.py @@ -0,0 +1,340 @@ +# -*- coding: utf-8 -*- +############################################################################### +# +# account_check_deposit for Odoo/OpenERP +# Copyright (C) 2012-2014 Akretion (http://www.akretion.com/) +# @author: Benoît GUILLOT +# @author: Chafique DELLI +# @author: Alexis de Lattre +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################### + +from openerp.osv import fields, orm +from openerp.tools.translate import _ +import openerp.addons.decimal_precision as dp + + +class account_check_deposit(orm.Model): + _name = "account.check.deposit" + _description = "Account Check Deposit" + _order = 'deposit_date desc' + + def _compute_check_deposit(self, cr, uid, ids, name, args, context=None): + res = {} + for deposit in self.browse(cr, uid, ids, context=context): + total = 0.0 + count = 0 + reconcile = False + currency_none_same_company_id = False + if deposit.company_id.currency_id != deposit.currency_id: + currency_none_same_company_id = deposit.currency_id.id + for line in deposit.check_payment_ids: + count += 1 + if currency_none_same_company_id: + total += line.amount_currency + else: + total += line.debit + if deposit.move_id: + for line in deposit.move_id.line_id: + if line.debit > 0 and line.reconcile_id: + reconcile = True + res[deposit.id] = { + 'total_amount': total, + 'is_reconcile': reconcile, + 'currency_none_same_company_id': currency_none_same_company_id, + 'check_count': count, + } + return res + + _columns = { + 'name': fields.char( + 'Name', size=64, readonly=True), + 'check_payment_ids': fields.one2many( + 'account.move.line', 'check_deposit_id', 'Check Payments', + states={'done': [('readonly', '=', True)]}), + 'deposit_date': fields.date( + 'Deposit Date', required=True, + states={'done': [('readonly', '=', True)]}), + 'journal_id': fields.many2one( + 'account.journal', 'Journal', domain=[('type', '=', 'bank')], + required=True, states={'done': [('readonly', '=', True)]}), + 'journal_default_account_id': fields.related( + 'journal_id', 'default_debit_account_id', type='many2one', + relation='account.account', + string='Default Debit Account of the Journal'), + 'currency_id': fields.many2one( + 'res.currency', 'Currency', required=True, + states={'done': [('readonly', '=', True)]}), + 'currency_none_same_company_id': fields.function( + _compute_check_deposit, type='many2one', + relation='res.currency', multi='deposit', + string='Currency (False if same as company)'), + 'state': fields.selection([ + ('draft', 'Draft'), + ('done', 'Done'), + ], 'Status', readonly=True), + 'move_id': fields.many2one( + 'account.move', 'Journal Entry', readonly=True), + 'partner_bank_id': fields.many2one( + 'res.partner.bank', 'Bank Account', required=True, + domain="[('company_id', '=', company_id)]", + states={'done': [('readonly', '=', True)]}), + 'line_ids': fields.related( + 'move_id', 'line_id', relation='account.move.line', + type='one2many', string='Lines', readonly=True), + 'company_id': fields.many2one( + 'res.company', 'Company', required=True, + change_default=True, + states={'done': [('readonly', '=', True)]}), + 'total_amount': fields.function( + _compute_check_deposit, multi='deposit', + string="Total Amount", readonly=True, + type="float", digits_compute=dp.get_precision('Account')), + 'check_count': fields.function( + _compute_check_deposit, multi='deposit', readonly=True, + string="Number of Checks", type="integer"), + 'is_reconcile': fields.function( + _compute_check_deposit, multi='deposit', readonly=True, + string="Reconcile", type="boolean"), + } + + _defaults = { + 'name': '/', + 'deposit_date': fields.date.context_today, + 'state': 'draft', + 'company_id': lambda self, cr, uid, c: self.pool['res.company']. + _company_default_get(cr, uid, 'account.check.deposit', context=c), + } + + def _check_deposit(self, cr, uid, ids): + for deposit in self.browse(cr, uid, ids): + deposit_currency = deposit.currency_id + if deposit_currency == deposit.company_id.currency_id: + for line in deposit.check_payment_ids: + if line.currency_id: + raise orm.except_orm( + _('Error:'), + _("The check with amount %s and reference '%s' " + "is in currency %s but the deposit is in " + "currency %s.") % ( + line.debit, line.ref or '', + line.currency_id.name, + deposit_currency.name)) + else: + for line in deposit.check_payment_ids: + if line.currency_id != deposit_currency: + raise orm.except_orm( + _('Error:'), + _("The check with amount %s and reference '%s' " + "is in currency %s but the deposit is in " + "currency %s.") % ( + line.debit, line.ref or '', + line.currency_id.name, + deposit_currency.name)) + return True + + _constraints = [( + _check_deposit, + "All the checks of the deposit must be in the currency of the deposit", + ['currency_id', 'check_payment_ids', 'company_id'] + )] + + def unlink(self, cr, uid, ids, context=None): + for deposit in self.browse(cr, uid, ids, context=context): + if deposit.state == 'done': + raise orm.except_orm( + _('Error!'), + _("The deposit '%s' is in valid state, so you must " + "cancel it before deleting it.") + % deposit.name) + return super(account_check_deposit, self).unlink( + cr, uid, ids, context=context) + + def backtodraft(self, cr, uid, ids, context=None): + for deposit in self.browse(cr, uid, ids, context=context): + if deposit.move_id: + # It will raise here if journal_id.update_posted = False + deposit.move_id.button_cancel() + for line in deposit.check_payment_ids: + if line.reconcile_id: + line.reconcile_id.unlink() + deposit.move_id.unlink() + deposit.write({'state': 'draft'}) + return True + + def create(self, cr, uid, vals, context=None): + if vals.get('name', '/') == '/': + vals['name'] = self.pool['ir.sequence'].\ + next_by_code(cr, uid, 'account.check.deposit') + return super(account_check_deposit, self).\ + create(cr, uid, vals, context=context) + + def _prepare_account_move_vals(self, cr, uid, deposit, context=None): + date = deposit.deposit_date + period_obj = self.pool['account.period'] + period_ids = period_obj.find(cr, uid, dt=date, context=context) + # period_ids will always have a value, cf the code of find() + move_vals = { + 'journal_id': deposit.journal_id.id, + 'date': date, + 'period_id': period_ids[0], + 'name': _('Check Deposit %s') % deposit.name, + 'ref': deposit.name, + } + return move_vals + + def _prepare_move_line_vals( + self, cr, uid, line, context=None): + assert (line.debit > 0), 'Debit must have a value' + return { + 'name': _('Check Deposit - Ref. Check %s') % line.ref, + 'credit': line.debit, + 'debit': 0.0, + 'account_id': line.account_id.id, + 'partner_id': line.partner_id.id, + 'currency_id': line.currency_id.id or False, + 'amount_currency': line.amount_currency * -1, + } + + def _prepare_counterpart_move_lines_vals( + self, cr, uid, deposit, total_debit, total_amount_currency, + context=None): + return { + 'name': _('Check Deposit %s') % deposit.name, + 'debit': total_debit, + 'credit': 0.0, + 'account_id': deposit.company_id.check_deposit_account_id.id, + 'partner_id': False, + 'currency_id': deposit.currency_none_same_company_id.id or False, + 'amount_currency': total_amount_currency, + } + + def validate_deposit(self, cr, uid, ids, context=None): + am_obj = self.pool['account.move'] + aml_obj = self.pool['account.move.line'] + if context is None: + context = {} + for deposit in self.browse(cr, uid, ids, context=context): + move_vals = self._prepare_account_move_vals( + cr, uid, deposit, context=context) + context['journal_id'] = move_vals['journal_id'] + context['period_id'] = move_vals['period_id'] + move_id = am_obj.create(cr, uid, move_vals, context=context) + total_debit = 0.0 + total_amount_currency = 0.0 + to_reconcile_line_ids = [] + for line in deposit.check_payment_ids: + total_debit += line.debit + total_amount_currency += line.amount_currency + line_vals = self._prepare_move_line_vals( + cr, uid, line, context=context) + line_vals['move_id'] = move_id + move_line_id = aml_obj.create( + cr, uid, line_vals, context=context) + to_reconcile_line_ids.append([line.id, move_line_id]) + + # Create counter-part + if not deposit.company_id.check_deposit_account_id: + raise orm.except_orm( + _('Configuration Error:'), + _("Missing Account for Check Deposits on the " + "company '%s'.") % deposit.company_id.name) + + counter_vals = self._prepare_counterpart_move_lines_vals( + cr, uid, deposit, total_debit, total_amount_currency, + context=context) + counter_vals['move_id'] = move_id + aml_obj.create(cr, uid, counter_vals, context=context) + + am_obj.post(cr, uid, [move_id], context=context) + deposit.write({'state': 'done', 'move_id': move_id}) + # We have to reconcile after post() + for reconcile_line_ids in to_reconcile_line_ids: + aml_obj.reconcile( + cr, uid, reconcile_line_ids, context=context) + return True + + def onchange_company_id( + self, cr, uid, ids, company_id, currency_id, context=None): + vals = {} + if company_id: + company = self.pool['res.company'].browse( + cr, uid, company_id, context=context) + if currency_id: + if company.currency_id.id == currency_id: + vals['currency_none_same_company_id'] = False + else: + vals['currency_none_same_company_id'] = currency_id + partner_bank_ids = self.pool['res.partner.bank'].search( + cr, uid, [('company_id', '=', company_id)], context=context) + if len(partner_bank_ids) == 1: + vals['partner_bank_id'] = partner_bank_ids[0] + else: + vals['currency_none_same_company_id'] = False + vals['partner_bank_id'] = False + return {'value': vals} + + def onchange_journal_id(self, cr, uid, ids, journal_id, context=None): + vals = {} + if journal_id: + journal = self.pool['account.journal'].browse( + cr, uid, journal_id, context=context) + vals['journal_default_account_id'] = \ + journal.default_debit_account_id.id + if journal.currency: + vals['currency_id'] = journal.currency.id + else: + vals['currency_id'] = journal.company_id.currency_id.id + else: + vals['journal_default_account_id'] = False + return {'value': vals} + + def onchange_currency_id( + self, cr, uid, ids, currency_id, company_id, context=None): + vals = {} + if currency_id and company_id: + company = self.pool['res.company'].browse( + cr, uid, company_id, context=context) + if company.currency_id.id == currency_id: + vals['currency_none_same_company_id'] = False + else: + vals['currency_none_same_company_id'] = currency_id + else: + vals['currency_none_same_company_id'] = False + return {'value': vals} + + +class account_move_line(orm.Model): + _inherit = "account.move.line" + + _columns = { + 'check_deposit_id': fields.many2one( + 'account.check.deposit', + 'Check Deposit'), + } + + +class res_company(orm.Model): + _inherit = 'res.company' + + _columns = { + 'check_deposit_account_id': fields.many2one( + 'account.account', 'Account for Check Deposits', + domain=[ + ('type', '<>', 'view'), + ('type', '<>', 'closed'), + ('reconcile', '=', True)]), + } diff --git a/account_check_deposit/account_deposit_sequence.xml b/account_check_deposit/account_deposit_sequence.xml new file mode 100644 index 000000000..912b8047b --- /dev/null +++ b/account_check_deposit/account_deposit_sequence.xml @@ -0,0 +1,27 @@ + + + + + + + + + Account Check Deposit + account.check.deposit + + + + Account Check Deposit + account.check.deposit + DEP + 3 + + + + + diff --git a/account_check_deposit/account_deposit_view.xml b/account_check_deposit/account_deposit_view.xml new file mode 100644 index 000000000..f4b61143b --- /dev/null +++ b/account_check_deposit/account_deposit_view.xml @@ -0,0 +1,135 @@ + + + + + + + + + account.check.deposit.form + account.check.deposit + +
+
+
+ +

+

+ + + + + + + + + + + + + + + + + + + +
+
+
+
+ + + account.check.deposit.tree + account.check.deposit + + + + + + + + + + + + + + + + account.check.deposit.search + account.check.deposit + + + + + + + + + + + + + + + + + Checks Deposits + account.check.deposit + tree,form + + + + +
+
diff --git a/account_check_deposit/company_view.xml b/account_check_deposit/company_view.xml new file mode 100644 index 000000000..74b9019e4 --- /dev/null +++ b/account_check_deposit/company_view.xml @@ -0,0 +1,25 @@ + + + + + + + + + check.deposit.company.form + res.company + + + + + + + + + + + diff --git a/account_check_deposit/i18n/account_check_deposit.pot b/account_check_deposit/i18n/account_check_deposit.pot new file mode 100644 index 000000000..f54d138c7 --- /dev/null +++ b/account_check_deposit/i18n/account_check_deposit.pot @@ -0,0 +1,236 @@ +# Translation of OpenERP Server. +# This file contains the translation of the following modules: +# * account_check_deposit +# +msgid "" +msgstr "" +"Project-Id-Version: OpenERP Server 7.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-02-21 10:01+0000\n" +"PO-Revision-Date: 2013-02-21 10:01+0000\n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: account_check_deposit +#: code:addons/account_check_deposit/account_deposit.py:76 +#, python-format +msgid "You cannot modify a posted entry of this journal.\n" +"First you should set the journal to allow cancelling entries." +msgstr "" + +#. module: account_check_deposit +#: report:addons/account_check_deposit/report/check_deposit.mako:58 +msgid "Beneficiary" +msgstr "" + +#. module: account_check_deposit +#: view:account.check.deposit:0 +msgid "Group By..." +msgstr "" + +#. module: account_check_deposit +#: model:ir.actions.report.xml,name:account_check_deposit.check_deposit_webkit +msgid "WebKit Checks Deposit" +msgstr "" + +#. module: account_check_deposit +#: report:addons/account_check_deposit/report/check_deposit.mako:79 +msgid "Designation" +msgstr "" + +#. module: account_check_deposit +#: field:account.check.deposit,state:0 +msgid "Status" +msgstr "" + +#. module: account_check_deposit +#: report:addons/account_check_deposit/report/check_deposit.mako:78 +msgid "Description" +msgstr "" + +#. module: account_check_deposit +#: field:account.move.line,check_deposit_id:0 +msgid "Check Deposit" +msgstr "" + +#. module: account_check_deposit +#: field:account.check.deposit,company_id:0 +msgid "Company" +msgstr "" + +#. module: account_check_deposit +#: report:addons/account_check_deposit/report/check_deposit.mako:65 +msgid "RIB Key" +msgstr "" + +#. module: account_check_deposit +#: field:account.check.deposit,deposit_date:0 +#: report:addons/account_check_deposit/report/check_deposit.mako:53 +msgid "Deposit Date" +msgstr "" + +#. module: account_check_deposit +#: report:addons/account_check_deposit/report/check_deposit.mako:63 +msgid "Account to crediting" +msgstr "" + +#. module: account_check_deposit +#: report:addons/account_check_deposit/report/check_deposit.mako:76 +msgid "Payment Date" +msgstr "" + +#. module: account_check_deposit +#: view:account.check.deposit:0 +msgid "Date" +msgstr "" + +#. module: account_check_deposit +#: view:account.check.deposit:0 +msgid "Total Credit" +msgstr "" + +#. module: account_check_deposit +#: field:account.check.deposit,bank_id:0 +msgid "Bank" +msgstr "" + +#. module: account_check_deposit +#: field:account.check.deposit,name:0 +msgid "Name" +msgstr "" + +#. module: account_check_deposit +#: view:account.check.deposit:0 +msgid "Checks Deposit Search" +msgstr "" + +#. module: account_check_deposit +#: model:account.account.type,name:account_check_deposit.data_account_type_received_check +msgid "Recieved Checks" +msgstr "" + +#. module: account_check_deposit +#: view:account.check.deposit:0 +#: report:addons/account_check_deposit/report/check_deposit.mako:49 +msgid "Deposit N°" +msgstr "" + +#. module: account_check_deposit +#: view:account.check.deposit:0 +msgid "Total Debit" +msgstr "" + +#. module: account_check_deposit +#: code:addons/account_check_deposit/account_deposit.py:76 +#, python-format +msgid "Error!" +msgstr "" + +#. module: account_check_deposit +#: report:addons/account_check_deposit/report/check_deposit.mako:80 +msgid "Amount" +msgstr "" + +#. module: account_check_deposit +#: view:account.check.deposit:0 +#: model:ir.actions.act_window,name:account_check_deposit.action_check_deposit_tree +#: model:ir.ui.menu,name:account_check_deposit.menu_check_deposit_tree +msgid "Checks Deposit" +msgstr "" + +#. module: account_check_deposit +#: field:account.check.deposit,total_amount:0 +msgid "total amount" +msgstr "" + +#. module: account_check_deposit +#: field:account.check.deposit,partner_id:0 +msgid "Partner" +msgstr "" + +#. module: account_check_deposit +#: selection:account.check.deposit,state:0 +msgid "Cancelled" +msgstr "" + +#. module: account_check_deposit +#: view:account.check.deposit:0 +msgid "Validate Deposit" +msgstr "" + +#. module: account_check_deposit +#: view:account.check.deposit:0 +#: field:account.check.deposit,check_payment_ids:0 +#: report:addons/account_check_deposit/report/check_deposit.mako:70 +msgid "Check Payments" +msgstr "" + +#. module: account_check_deposit +#: report:addons/account_check_deposit/report/check_deposit.mako:41 +msgid "Deposit Slip of Checks(\\u20acuros)" +msgstr "" + +#. module: account_check_deposit +#: report:addons/account_check_deposit/report/check_deposit.mako:55 +msgid "Bank Code" +msgstr "" + +#. module: account_check_deposit +#: report:addons/account_check_deposit/report/check_deposit.mako:77 +msgid "Reference" +msgstr "" + +#. module: account_check_deposit +#: model:ir.model,name:account_check_deposit.model_account_check_deposit +msgid "Account Check Deposit" +msgstr "" + +#. module: account_check_deposit +#: report:addons/account_check_deposit/report/check_deposit.mako:60 +msgid "Office Code" +msgstr "" + +#. module: account_check_deposit +#: view:account.check.deposit:0 +msgid "Check Payment" +msgstr "" + +#. module: account_check_deposit +#: selection:account.check.deposit,state:0 +msgid "Done" +msgstr "" + +#. module: account_check_deposit +#: view:account.check.deposit:0 +msgid "Cancel" +msgstr "" + +#. module: account_check_deposit +#: selection:account.check.deposit,state:0 +msgid "Draft" +msgstr "" + +#. module: account_check_deposit +#: report:addons/account_check_deposit/report/check_deposit.mako:99 +msgid "Total:" +msgstr "" + +#. module: account_check_deposit +#: field:account.check.deposit,move_id:0 +msgid "Journal Entry" +msgstr "" + +#. module: account_check_deposit +#: field:account.check.deposit,journal_id:0 +msgid "Journal" +msgstr "" + +#. module: account_check_deposit +#: model:ir.model,name:account_check_deposit.model_account_move_line +msgid "Journal Items" +msgstr "" + diff --git a/account_check_deposit/i18n/fr.po b/account_check_deposit/i18n/fr.po new file mode 100644 index 000000000..0b869dbdf --- /dev/null +++ b/account_check_deposit/i18n/fr.po @@ -0,0 +1,236 @@ +# Translation of OpenERP Server. +# This file contains the translation of the following modules: +# * account_check_deposit +# +msgid "" +msgstr "" +"Project-Id-Version: OpenERP Server 7.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2013-02-21 10:01+0000\n" +"PO-Revision-Date: 2013-02-21 10:01+0000\n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: account_check_deposit +#: code:addons/account_check_deposit/account_deposit.py:76 +#, python-format +msgid "You cannot modify a posted entry of this journal.\n" +"First you should set the journal to allow cancelling entries." +msgstr "" + +#. module: account_check_deposit +#: report:addons/account_check_deposit/report/check_deposit.mako:58 +msgid "Beneficiary" +msgstr "Bénéficiaire" + +#. module: account_check_deposit +#: view:account.check.deposit:0 +msgid "Group By..." +msgstr "Regrouper par..." + +#. module: account_check_deposit +#: model:ir.actions.report.xml,name:account_check_deposit.check_deposit_webkit +msgid "Print Checks Deposit" +msgstr "Imprimer Remise de Chèques" + +#. module: account_check_deposit +#: report:addons/account_check_deposit/report/check_deposit.mako:79 +msgid "Designation" +msgstr "Désignation" + +#. module: account_check_deposit +#: field:account.check.deposit,state:0 +msgid "Status" +msgstr "Etat" + +#. module: account_check_deposit +#: report:addons/account_check_deposit/report/check_deposit.mako:78 +msgid "Description" +msgstr "Description" + +#. module: account_check_deposit +#: field:account.move.line,check_deposit_id:0 +msgid "Check Deposit" +msgstr "Remise de Chèque" + +#. module: account_check_deposit +#: field:account.check.deposit,company_id:0 +msgid "Company" +msgstr "Société" + +#. module: account_check_deposit +#: report:addons/account_check_deposit/report/check_deposit.mako:65 +msgid "BIS Key" +msgstr "Clé RIB" + +#. module: account_check_deposit +#: field:account.check.deposit,deposit_date:0 +#: report:addons/account_check_deposit/report/check_deposit.mako:53 +msgid "Deposit Date" +msgstr "Date du Versement" + +#. module: account_check_deposit +#: report:addons/account_check_deposit/report/check_deposit.mako:63 +msgid "Account to crediting" +msgstr "Compte à Créditer" + +#. module: account_check_deposit +#: report:addons/account_check_deposit/report/check_deposit.mako:76 +msgid "Payment Date" +msgstr "Date de Paiement" + +#. module: account_check_deposit +#: view:account.check.deposit:0 +msgid "Date" +msgstr "Date" + +#. module: account_check_deposit +#: view:account.check.deposit:0 +msgid "Total Credit" +msgstr "Crédit Total" + +#. module: account_check_deposit +#: field:account.check.deposit,bank_id:0 +msgid "Bank" +msgstr "Banque" + +#. module: account_check_deposit +#: field:account.check.deposit,name:0 +msgid "Name" +msgstr "Nom" + +#. module: account_check_deposit +#: view:account.check.deposit:0 +msgid "Checks Deposit Search" +msgstr "Rechercher une Remise de Chèques" + +#. module: account_check_deposit +#: model:account.account.type,name:account_check_deposit.data_account_type_received_check +msgid "Recieved Checks" +msgstr "Chèques Reçus" + +#. module: account_check_deposit +#: view:account.check.deposit:0 +#: report:addons/account_check_deposit/report/check_deposit.mako:49 +msgid "Deposit N°" +msgstr "Versement N°" + +#. module: account_check_deposit +#: view:account.check.deposit:0 +msgid "Total Debit" +msgstr "Débit Total" + +#. module: account_check_deposit +#: code:addons/account_check_deposit/account_deposit.py:76 +#, python-format +msgid "Error!" +msgstr "Erreur!" + +#. module: account_check_deposit +#: report:addons/account_check_deposit/report/check_deposit.mako:80 +msgid "Amount" +msgstr "Montant" + +#. module: account_check_deposit +#: view:account.check.deposit:0 +#: model:ir.actions.act_window,name:account_check_deposit.action_check_deposit_tree +#: model:ir.ui.menu,name:account_check_deposit.menu_check_deposit_tree +msgid "Checks Deposit" +msgstr "Remise de Chèques" + +#. module: account_check_deposit +#: field:account.check.deposit,total_amount:0 +msgid "total amount" +msgstr "montant total" + +#. module: account_check_deposit +#: field:account.check.deposit,partner_id:0 +msgid "Partner" +msgstr "Partenaire" + +#. module: account_check_deposit +#: selection:account.check.deposit,state:0 +msgid "Cancelled" +msgstr "Annulé" + +#. module: account_check_deposit +#: view:account.check.deposit:0 +msgid "Validate Deposit" +msgstr "Valider Versement" + +#. module: account_check_deposit +#: view:account.check.deposit:0 +#: field:account.check.deposit,check_payment_ids:0 +#: report:addons/account_check_deposit/report/check_deposit.mako:70 +msgid "Check Payments" +msgstr "Paiements par Chèque" + +#. module: account_check_deposit +#: report:addons/account_check_deposit/report/check_deposit.mako:41 +msgid "Deposit Slip of Checks(Euros)" +msgstr "Bordereau de Remise de Chèques(Euros)" + +#. module: account_check_deposit +#: report:addons/account_check_deposit/report/check_deposit.mako:55 +msgid "Bank Code" +msgstr "Code Banque" + +#. module: account_check_deposit +#: report:addons/account_check_deposit/report/check_deposit.mako:77 +msgid "Reference" +msgstr "Référence" + +#. module: account_check_deposit +#: model:ir.model,name:account_check_deposit.model_account_check_deposit +msgid "Account Check Deposit" +msgstr "Compte Remise de Chèque" + +#. module: account_check_deposit +#: report:addons/account_check_deposit/report/check_deposit.mako:60 +msgid "Office Code" +msgstr "Code Guichet" + +#. module: account_check_deposit +#: view:account.check.deposit:0 +msgid "Check Payment" +msgstr "Paiement par Chèque" + +#. module: account_check_deposit +#: selection:account.check.deposit,state:0 +msgid "Done" +msgstr "Terminé" + +#. module: account_check_deposit +#: view:account.check.deposit:0 +msgid "Cancel" +msgstr "Annuler" + +#. module: account_check_deposit +#: selection:account.check.deposit,state:0 +msgid "Draft" +msgstr "Brouillon" + +#. module: account_check_deposit +#: report:addons/account_check_deposit/report/check_deposit.mako:99 +msgid "Total:" +msgstr "Total:" + +#. module: account_check_deposit +#: field:account.check.deposit,move_id:0 +msgid "Journal Entry" +msgstr "Pièce Comptable" + +#. module: account_check_deposit +#: field:account.check.deposit,journal_id:0 +msgid "Journal" +msgstr "Journal" + +#. module: account_check_deposit +#: model:ir.model,name:account_check_deposit.model_account_move_line +msgid "Journal Items" +msgstr "Écritures comptables" + diff --git a/account_check_deposit/report/__init__.py b/account_check_deposit/report/__init__.py new file mode 100644 index 000000000..6d4950f0c --- /dev/null +++ b/account_check_deposit/report/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# account_check_deposit for Odoo/OpenERP +# Copyright (C) 2012-2014 Akretion (http://www.akretion.com/) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################### + +from . import report_webkit_html diff --git a/account_check_deposit/report/check_deposit.mako b/account_check_deposit/report/check_deposit.mako new file mode 100644 index 000000000..67a660ebe --- /dev/null +++ b/account_check_deposit/report/check_deposit.mako @@ -0,0 +1,90 @@ +# -*- coding: utf-8 -*- + + + + + +%for deposit in objects : +<% setLang(deposit.company_id.partner_id.lang) %> +${_("Deposit Slip of Checks in ")} ${deposit.currency_id.name} + + + + + + + + + + + + + + +
${_("Deposit Date")}${_("Deposit Ref")}${_("Beneficiary")}${_("Bank Account Number")}
${formatLang(deposit.deposit_date, date=True)}${deposit.name}${deposit.company_id.partner_id.name}${deposit.partner_bank_id.acc_number}
+ +

${_("Check Payments")}

+ + + + + + + + + + + + %for move_line in deposit.check_payment_ids : + + + + + + + + + %endfor + %endfor + + + + + + +
${_("Payment Date")}${_("Reference")}${_("Debtor")}${_("Amount")}
${move_line.date or ''}${move_line.ref or ''}${move_line.partner_id.name or ''}${deposit.currency_id == deposit.company_id.currency_id and move_line.debit or move_line.amount_currency} ${deposit.currency_id.name}
${_("Total:")}${deposit.total_amount or '0'} ${deposit.currency_id.name}
+ + + diff --git a/account_check_deposit/report/report_webkit_html.py b/account_check_deposit/report/report_webkit_html.py new file mode 100644 index 000000000..9d8a2f77c --- /dev/null +++ b/account_check_deposit/report/report_webkit_html.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# account_check_deposit for Odoo/OpenERP +# Copyright (C) 2012-2014 Akretion (http://www.akretion.com/) +# @author: Benoît GUILLOT +# @author: Chafique DELLI +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################### + +import time +from report import report_sxw + + +class report_webkit_html(report_sxw.rml_parse): + + def __init__(self, cr, uid, name, context): + super(report_webkit_html, self).__init__( + cr, uid, name, context=context) + self.localcontext.update({ + 'time': time, + 'cr': cr, + 'uid': uid, + }) + +report_sxw.report_sxw('report.account.check.deposit', + 'account.check.deposit', + 'addons/account_check_deposit/report/check_deposit.mako', + parser=report_webkit_html) diff --git a/account_check_deposit/security/check_deposit_security.xml b/account_check_deposit/security/check_deposit_security.xml new file mode 100644 index 000000000..0a952aa30 --- /dev/null +++ b/account_check_deposit/security/check_deposit_security.xml @@ -0,0 +1,20 @@ + + + + + + + + + Check Deposit multi-company + + + ['|', ('company_id', '=', False), ('company_id', 'child_of', [user.company_id.id])] + + + + diff --git a/account_check_deposit/security/ir.model.access.csv b/account_check_deposit/security/ir.model.access.csv new file mode 100644 index 000000000..3e679366f --- /dev/null +++ b/account_check_deposit/security/ir.model.access.csv @@ -0,0 +1,2 @@ +"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" +"access_account_check_deposit_account_check_deposit_group_manager","account_check_deposit_account_check_deposit_group_manager","model_account_check_deposit","account.group_account_user",1,1,1,1