Browse Source

[ADD] Initial Commit 'bank_reconciliation'

pull/145/head
Ajmal JK 6 years ago
parent
commit
6617beaae6
  1. 43
      bank_reconciliation/README.rst
  2. 21
      bank_reconciliation/__init__.py
  3. 40
      bank_reconciliation/__manifest__.py
  4. 3
      bank_reconciliation/models/__init__.py
  5. 52
      bank_reconciliation/models/account_journal.py
  6. 23
      bank_reconciliation/models/account_move_line.py
  7. 2
      bank_reconciliation/security/ir.model.access.csv
  8. BIN
      bank_reconciliation/static/description/bank-reconciliation-cybrosys-1.png
  9. BIN
      bank_reconciliation/static/description/bank-reconciliation-cybrosys-2.png
  10. BIN
      bank_reconciliation/static/description/bank-reconciliation-cybrosys-3.png
  11. BIN
      bank_reconciliation/static/description/bank-reconciliation-cybrosys-4.png
  12. BIN
      bank_reconciliation/static/description/bank-reconciliation-cybrosys-5.png
  13. BIN
      bank_reconciliation/static/description/bank_statement_edited.png
  14. BIN
      bank_reconciliation/static/description/bank_statement_wiz.png
  15. BIN
      bank_reconciliation/static/description/banner.jpg
  16. BIN
      bank_reconciliation/static/description/cybro_logo.png
  17. BIN
      bank_reconciliation/static/description/dash_board.png
  18. BIN
      bank_reconciliation/static/description/dashboard_change.png
  19. BIN
      bank_reconciliation/static/description/icon.png
  20. 361
      bank_reconciliation/static/description/index.html
  21. BIN
      bank_reconciliation/static/description/payment_done.png
  22. BIN
      bank_reconciliation/static/description/payments.png
  23. 28
      bank_reconciliation/views/account_journal_dashboard_view.xml
  24. 41
      bank_reconciliation/views/account_move_line_view.xml
  25. 2
      bank_reconciliation/wizard/__init__.py
  26. 55
      bank_reconciliation/wizard/bank_statement_wiz.py
  27. 56
      bank_reconciliation/wizard/bank_statement_wiz_view.xml

43
bank_reconciliation/README.rst

@ -0,0 +1,43 @@
.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
Manual Bank Reconciliation
==========================
Manual Bank Reconciliation
Installation
============
- www.odoo.com/documentation/13.0/setup/install.html
- Install our custom addon
Company
-------
* `Cybrosys Techno Solutions <https://cybrosys.com/>`__
Credits
-------
* Developer:
Shahil @ Cybrosys
Contacts
--------
* Mail Contact : odoo@cybrosys.com
Bug Tracker
-----------
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported.
Maintainer
==========
.. image:: https://cybrosys.com/images/logo.png
:target: https://cybrosys.com
This module is maintained by Cybrosys Technologies.
For support and more information, please visit `Our Website <https://cybrosys.com/>`__
Further information
===================
HTML Description: `<static/description/index.html>`__

21
bank_reconciliation/__init__.py

@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Fasluca(<faslu@cybrosys.in>)
# you can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
# 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 (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# GENERAL PUBLIC LICENSE (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from . import models
from . import wizard

40
bank_reconciliation/__manifest__.py

@ -0,0 +1,40 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# Author: Fasluca(<faslu@cybrosys.in>)
# you can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
# 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 (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# GENERAL PUBLIC LICENSE (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
{
'name': 'Manual Bank Reconciliation',
'version': '13.0.1.0.0',
'author': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'website': 'https://www.cybrosys.com',
'category': 'Accounting',
'summary': 'Replacing default bank statement reconciliation method by traditional way',
'description': """Replacing default bank statement reconciliation method by traditional way""",
'depends': ['account'],
'data': [
'security/ir.model.access.csv',
'views/account_move_line_view.xml',
'views/account_journal_dashboard_view.xml',
'wizard/bank_statement_wiz_view.xml',
],
'images': ['static/description/banner.jpg'],
'license': 'AGPL-3',
'installable': True,
'auto_install': False,
}

3
bank_reconciliation/models/__init__.py

@ -0,0 +1,3 @@
# -*- coding: utf-8 -*-
from . import account_move_line
from . import account_journal

52
bank_reconciliation/models/account_journal.py

@ -0,0 +1,52 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
from odoo.tools.misc import formatLang
class AccountJournal(models.Model):
_inherit = 'account.journal'
bank_statements_source = fields.Selection([('manual', 'Record Manually'), ('undefined', 'Undefined')],
string='Bank Feeds',
default='undefined',
help="Defines how the bank statements will be registered")
def create_bank_statement(self):
print(self.read())
context = self._context.copy()
"""return action to create a bank statements. This button should be called only on journals with type =='bank'"""
action = self.env.ref('bank_reconciliation.action_bank_statement_wiz').read()[0]
# action.update({
# 'context': "{'default_journal_id': " + str(self.id) + "}",
# })
return action
def get_journal_dashboard_datas(self):
res = super(AccountJournal, self).get_journal_dashboard_datas()
account_sum = 0.0
bank_balance = 0.0
currency = self.currency_id or self.company_id.currency_id
account_ids = tuple(ac for ac in [self.default_debit_account_id.id, self.default_credit_account_id.id] if ac)
if account_ids:
amount_field = 'balance' if (
not self.currency_id or self.currency_id == self.company_id.currency_id) else 'amount_currency'
query = """SELECT sum(%s) FROM account_move_line WHERE account_id in %%s AND date <= %%s;""" % (
amount_field,)
self.env.cr.execute(query, (account_ids, fields.Date.today(),))
query_results = self.env.cr.dictfetchall()
if query_results and query_results[0].get('sum') != None:
account_sum = query_results[0].get('sum')
query = """SELECT sum(%s) FROM account_move_line WHERE account_id in %%s AND date <= %%s AND
statement_date is not NULL;""" % (amount_field,)
self.env.cr.execute(query, (account_ids, fields.Date.today(),))
query_results = self.env.cr.dictfetchall()
if query_results and query_results[0].get('sum') != None:
bank_balance = query_results[0].get('sum')
difference = currency.round(account_sum - bank_balance) + 0.0
res.update({
'last_balance': formatLang(self.env, currency.round(bank_balance) + 0.0, currency_obj=currency),
'difference': formatLang(self.env, currency.round(difference) + 0.0, currency_obj=currency)
})
return res

23
bank_reconciliation/models/account_move_line.py

@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
class AccountMoveLine(models.Model):
_inherit = "account.move.line"
bank_statement_id = fields.Many2one('bank.statement', 'Bank Statement', copy=False)
statement_date = fields.Date('Bank.St Date', copy=False)
def write(self, vals):
if not vals.get("statement_date"):
vals.update({"reconciled": False})
for record in self:
if record.payment_id and record.payment_id.state == 'reconciled':
record.payment_id.state = 'posted'
elif vals.get("statement_date"):
vals.update({"reconciled": True})
for record in self:
if record.payment_id:
record.payment_id.state = 'reconciled'
res = super(AccountMoveLine, self).write(vals)
return res

2
bank_reconciliation/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_bank_statement,bank_statement,model_bank_statement,account.group_account_user,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_bank_statement bank_statement model_bank_statement account.group_account_user 1 1 1 1

BIN
bank_reconciliation/static/description/bank-reconciliation-cybrosys-1.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

BIN
bank_reconciliation/static/description/bank-reconciliation-cybrosys-2.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 118 KiB

BIN
bank_reconciliation/static/description/bank-reconciliation-cybrosys-3.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

BIN
bank_reconciliation/static/description/bank-reconciliation-cybrosys-4.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

BIN
bank_reconciliation/static/description/bank-reconciliation-cybrosys-5.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 119 KiB

BIN
bank_reconciliation/static/description/bank_statement_edited.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

BIN
bank_reconciliation/static/description/bank_statement_wiz.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
bank_reconciliation/static/description/banner.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

BIN
bank_reconciliation/static/description/cybro_logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
bank_reconciliation/static/description/dash_board.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.7 KiB

BIN
bank_reconciliation/static/description/dashboard_change.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
bank_reconciliation/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

361
bank_reconciliation/static/description/index.html

@ -0,0 +1,361 @@
<section class="oe_container" style="background-image:url(https://www.cybrosys.com/images/odoo-index-header-banner.png);background-repeat:no-repeat;background-size:100%;padding: 4% 0% 2% 15%;background-position-y: -107px;">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan" style="font-size: 35px;color: #fff;font-weight: 900;text-transform: uppercase;text-align: left;margin: 0;margin-bottom: 16px;">
Manual Bank Reconciliation
</h2>
<h3 class="oe_slogan" style="font-size: 25px;color: #fff;font-weight: 600;text-align: left;opacity: 1;margin: 0 !important;">
The traditional way of reconciling bank statement
</h3>
<h5 class="oe_slogan" style="text-align: left;background: #fff;width: 293px;padding: 10px;color: #080808 !important;opacity: 1 !important;font-weight: 600;font-size: 20px;">
<a style="color: #080808 !important;" href="https://www.cybrosys.com" target="_blank">Cybrosys Technologies</a>
</h5>
<a style="color: #080808 !important;" href="https://www.cybrosys.com" target="_blank">
<div style="width: 215px;margin-left: 57%;text-align: center;background: #ffffff;height: 215px;border-radius: 100%;display: flex;justify-content: center;align-items: center;box-shadow: 0 0 12px 4px #00000059;">
<img src="https://www.cybrosys.com/images/cybro-logo-oca.png" alt="cybrosys technologies" style="width: 180px;"/>
</div>
</a>
</div>
</section>
<section class="oe_container" style="padding: 1% 0% 3% 15%;">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;">
Overview
</h2>
<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;">
This module replaces the Odoo default bank statement reconciliation with traditional way of just putting the date in each line.
</h3>
</div>
</section>
<!--<section class="oe_container" style="background-image:url(https://www.cybrosys.com/images/odoo-index-banner1.png); background-repeat:no-repeat; background-size:cover;padding: 10% 0% 25% 15%;">-->
<!--<div class="oe_row oe_spaced">-->
<!--<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;">-->
<!--Features-->
<!--</h2>-->
<!--<h3 class="oe_slogan" style="text-align: left;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 18px;">-->
<!--<img src="https://www.cybrosys.com/images/ico-tick.png">-->
<!--Modify database selector page-->
<!--</h3>-->
<!--</div>-->
<!--</section>-->
<section class="oe_container" style="padding: 3% 0% 0% 15%;">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;">
Screenshots
</h2>
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;">
<img src="https://www.cybrosys.com/images/ico-tick.png">
When You click on "New Statement" a window will open
</h3>
<div class="oe_row oe_spaced">
<img src="bank-reconciliation-cybrosys-1.png" alt="" style="width: 95%;"/>
</div>
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;">
<img src="https://www.cybrosys.com/images/ico-tick.png">
There you can see the list on journal items that are 'not reconciled'
</h3>
<div class="oe_row oe_spaced">
<img src="bank-reconciliation-cybrosys-2.png" alt="" style="width: 95%;"/>
</div>
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;">
<img src="https://www.cybrosys.com/images/ico-tick.png">
There you can see the list on journal items that are 'not reconciled'
<ul>
<li>You can see the details about the current balance as per company books, bank balance based on already reconciled journal entries as 'Balance as per bank'
and difference between them as 'Amount not reflected in Bank'</li>
</ul>
</h3>
<div class="oe_row oe_spaced">
<img src="bank-reconciliation-cybrosys-3.png" alt="" style="width: 95%;"/>
</div>
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;">
<img src="https://www.cybrosys.com/images/ico-tick.png">
Fill the dates mentioned in bank statement in 'Bank.St Date' column of respective line. Click on 'Save' button before closing the window.
</h3>
<ul>
<li>Hope you have noticed the changes in Balance as per company books, Balance as per bank and Amount not reflected in Bank</li>
</ul>
<div class="oe_row oe_spaced">
<img src="bank-reconciliation-cybrosys-4.png" alt="" style="width: 95%;"/>
</div>
<h3 class="oe_slogan" style="text-align: left;padding: 5% 0% 0% 0%;font-size: 16px;width: 90%;margin: 0;margin-top: 14px;color: #000 !important;opacity: 1 !important;line-height: 24px;">
<img src="https://www.cybrosys.com/images/ico-tick.png">
One more thing to point out is, this will also mark the bank payments as 'Reconciled'
</h3>
<div class="oe_row oe_spaced">
<img src="bank-reconciliation-cybrosys-5.png" alt="" style="width: 95%;"/>
</div>
</div>
</section>
<section class="oe_container" style="padding: 7px 0% 0% 3%;">
<div class="oe_row oe_spaced">
<a style="color: #080808 !important;" href="https://apps.odoo.com/apps/modules/browse?search=cybrosys" target="_blank"><img src="https://www.cybrosys.com/images/view-more-apps.jpg" alt="cybrosys technologies" style="width: 100%;margin-bottom: 50px;"/></a>
</div>
</section>
<section class="oe_container" style="padding: 1% 0% 0% 3%;">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;">
Our Services
</h2>
<div style="display:flex;padding-top: 20px;justify-content: space-between;">
<div style="flex-basis: 18%;">
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;">
<a href="https://www.cybrosys.com/odoo-customization-and-installation/" target="_blank">
<img src="https://www.cybrosys.com/images/odoo-customization.png" style="width: 100%;border-radius: 100%;"/>
</a>
</div>
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;">
<a href="https://www.cybrosys.com/odoo-customization-and-installation/" target="_blank">
Odoo Customization
</a>
</h3>
</div>
<div style="flex-basis: 18%;">
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;">
<a href="https://www.cybrosys.com/odoo-erp-implementation/" target="_blank">
<img src="https://www.cybrosys.com/images/odoo-erp-implementation.png" style="width: 100%;border-radius: 100%;"/>
</a>
</div>
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;">
<a href="https://www.cybrosys.com/odoo-erp-implementation/" target="_blank">
Odoo Implementation </a>
</h3>
</div>
<div style="flex-basis: 18%;">
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;">
<a href="https://www.cybrosys.com/odoo-erp-integration/" target="_blank">
<img src="https://www.cybrosys.com/images/odoo-erp-integration.png" style="width: 100%;border-radius: 100%;"/>
</a>
</div>
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;">
<a href="https://www.cybrosys.com/odoo-erp-integration/" target="_blank">
Odoo Integration
</a>
</h3>
</div>
<div style="flex-basis: 18%;">
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;">
<a href="https://www.cybrosys.com/odoo-erp-support/" target="_blank">
<img src="https://www.cybrosys.com/images/odoo-erp-support.png" style="width: 100%;border-radius: 100%;"/>
</a>
</div>
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;">
<a href="https://www.cybrosys.com/odoo-erp-support/" target="_blank">
Odoo Support</a>
</h3>
</div>
<div style="flex-basis: 18%;">
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;">
<a href="https://www.cybrosys.com/hire-odoo-developer/" target="_blank">
<img src="https://www.cybrosys.com/images/hire-odoo-developer.png" style="width: 100%;border-radius: 100%;"/>
</a>
</div>
<h3 class="oe_slogan" style="font-weight: 800;text-align: center;font-size: 14px;width: 100%;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;">
<a href="https://www.cybrosys.com/hire-odoo-developer/" target="_blank">
Hire Odoo Developers</a>
</h3>
</a>
</div>
</div>
</div>
</section>
<section class="oe_container" style="padding: 1% 0% 0% 3%;">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 600;margin: 0px !important;">
Our Industries
</h2>
<div style="display:flex;justify-content: space-between;flex-wrap:wrap;">
<div style="flex-basis: 32%;padding-top: 20px;">
<div style="width:30%; float:left;">
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<a href="https://www.cybrosys.com/odoo/industries/best-trading-erp/" target="_blank">
<img src="https://www.cybrosys.com/images/odoo-index-industry-1.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/>
</a>
</div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;">
<a href="https://www.cybrosys.com/odoo/industries/best-trading-erp/" target="_blank">
Trading
</a>
</h3>
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;">
Easily procure and sell your products.
</h3>
</div>
</div>
<div style="flex-basis: 32%;padding-top: 20px;">
<div style="width:30%; float:left;">
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<a href="https://www.cybrosys.com/odoo/industries/manufacturing-erp-software/" target="_blank">
<img src="https://www.cybrosys.com/images/odoo-index-industry-2.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/>
</a>
</div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;">
<a href="https://www.cybrosys.com/odoo/industries/manufacturing-erp-software/" target="_blank">
Manufacturing</a>
</h3>
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;">
Plan, track and schedule your operations.
</h3>
</div>
</div>
<div style="flex-basis: 32%;padding-top: 20px;">
<div style="width:30%; float:left;">
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<a href="https://www.cybrosys.com/odoo/industries/restaurant-management/" target="_blank">
<img src="https://www.cybrosys.com/images/odoo-index-industry-3.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/>
</a>
</div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;">
<a href="https://www.cybrosys.com/odoo/industries/restaurant-management/" target="_blank">
Restaurant</a>
</h3>
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;">
Run your bar or restaurant methodical.
</h3>
</div>
</div>
<div style="flex-basis: 32%;padding-top: 20px;">
<div style="width:30%; float:left;">
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<a href="https://www.cybrosys.com/odoo/industries/pos/" target="_blank">
<img src="https://www.cybrosys.com/images/odoo-index-industry-4.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/>
</a>
</div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;">
<a href="https://www.cybrosys.com/odoo/industries/pos/" target="_blank">
POS</a>
</h3>
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;">
Easy configuring and convivial selling.
</h3>
</div>
</div>
<div style="flex-basis: 32%;padding-top: 20px;">
<div style="width:30%; float:left;">
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<a href="https://www.cybrosys.com/odoo/industries/ecommerce-website/" target="_blank">
<img src="https://www.cybrosys.com/images/odoo-index-industry-5.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/>
</a>
</div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 0px;margin-left: 16px;">
<a href="https://www.cybrosys.com/odoo/industries/ecommerce-website/" target="_blank">
E-commerce & Website</a>
</h3>
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;">
Mobile friendly, awe-inspiring product pages.
</h3>
</div>
</div>
<div style="flex-basis: 32%;padding-top: 20px;">
<div style="width:30%; float:left;">
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<a href="https://www.cybrosys.com/odoo/industries/hotel-management-erp/" target="_blank">
<img src="https://www.cybrosys.com/images/odoo-index-industry-6.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/>
</a>
</div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;">
<a href="https://www.cybrosys.com/odoo/industries/hotel-management-erp/" target="_blank">
Hotel Management</a>
</h3>
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;">
An all-inclusive hotel management application.
</h3>
</div>
</div>
<div style="flex-basis: 32%;padding-top: 20px;">
<div style="width:30%; float:left;">
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<a href="https://www.cybrosys.com/odoo/industries/education-erp-software/" target="_blank">
<img src="https://www.cybrosys.com/images/odoo-index-industry-7.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/>
</a>
</div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;">
<a href="https://www.cybrosys.com/odoo/industries/education-erp-software/" target="_blank">
Education</a>
</h3>
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;">
A Collaborative platform for educational management.
</h3>
</div>
</div>
<div style="flex-basis: 32%;padding-top: 20px;">
<div style="width:30%; float:left;">
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<a href="https://www.cybrosys.com/odoo/industries/service-management/" target="_blank">
<img src="https://www.cybrosys.com/images/odoo-index-industry-8.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/>
</a>
</div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:800;width: auto;margin: 0;margin-top: 14px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 4px;margin-left: 16px;">
<a href="https://www.cybrosys.com/odoo/industries/service-management/" target="_blank">
Service Management</a>
</h3>
<h3 class="oe_slogan" style=" text-align: left;font-size: 13px;width: auto;margin: 0;margin-top:5px;color: #000 !important;margin-top: 5px;opacity: 1 !important;line-height: 17px;float: left;margin-top: 5px;margin-left: 16px;">
Keep track of services and invoice accordingly.
</h3>
</div>
</div>
</div>
</div>
</section>
<section class="oe_container" style="background-image:url(https://www.cybrosys.com/images/odoo-index-footer-bg.png); background-repeat:no-repeat; background-size:100%;padding: 13% 0% 6% 0%;">
<div class="oe_slogan" style="margin-top:10px !important;margin-bottom: 0px;">
<div>
<a style="color: #5c5c5c !important;border-radius: 0;background: none;border: none;background: #fff;box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62, 57, 107, 0.05);border-radius: 30px;font-size: 12px;padding: 9px 26px;margin-right: 9px;width: 200px;text-transform: capitalize;" class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;" href="mailto:odoo@cybrosys.com"><i class="fa fa-envelope"></i> Email us </a>
<a style="color: #5c5c5c !important;border-radius: 0;background: none;border: none;background: #fff;box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62, 57, 107, 0.05);border-radius: 30px;font-size: 12px;padding: 9px 26px;margin-right: 9px;width: 200px;text-transform: capitalize;" class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;" href="https://www.cybrosys.com/contact/"><i class="fa fa-phone"></i> Contact Us </a>
<a style="color: #5c5c5c !important;border-radius: 0;background: none;border: none;background: #fff;box-shadow: 0 10px 40px 0 rgba(62,57,107,0.07), 0 2px 9px 0 rgba(62, 57, 107, 0.05);border-radius: 30px;font-size: 12px;padding: 9px 26px;margin-right: 9px;width: 200px;text-transform: capitalize;" class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;" href="https://www.cybrosys.com/contact/"><i class="fa fa-check-square"></i> Request Customization </a>
</div>
<br>
<img src="https://www.cybrosys.com/images/logo.png" style="width: 190px; margin-bottom: 25px;margin-top: 30px;" class="center-block">
<div>
<a href="https://twitter.com/cybrosys" target="_blank"><i class="fa fa-2x fa-twitter" style="color:white;background: #00a0d1;width:35px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td>
<a href="https://www.linkedin.com/company/cybrosys-technologies-pvt-ltd" target="_blank"><i class="fa fa-2x fa-linkedin" style="color:white;background: #31a3d6;width:35px;padding-left: 3px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td>
<a href="https://www.facebook.com/cybrosystechnologies" target="_blank"><i class="fa fa-2x fa-facebook" style="color:white;background: #3b5998;width:35px; ;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td>
<a href="https://plus.google.com/106641282743045431892/about" target="_blank"><i class="fa fa-2x fa-google-plus" style="color:white;background: #c53c2c;width:35px;padding-left: 3px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td>
<a href="https://in.pinterest.com/cybrosys" target="_blank"><i class="fa fa-2x fa-pinterest" style="color:white;background: #ac0f18;width:35px;padding-left: 3px;height: 35px;padding-top: 7px;font-size: 21px;margin-right: 6px;border-radius: 100%;"></i></a></td>
</div>
</div>
</section>

BIN
bank_reconciliation/static/description/payment_done.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

BIN
bank_reconciliation/static/description/payments.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

28
bank_reconciliation/views/account_journal_dashboard_view.xml

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="account_journal_dashboard_kanban_view" model="ir.ui.view">
<field name="name">account.journal.dashboard.kanban</field>
<field name="model">account.journal</field>
<field name="inherit_id" ref="account.account_journal_dashboard_kanban_view"/>
<field name="arch" type="xml">
<div name="latest_statement" position="replace">
<div class="row" name="latest_statement" t-if="dashboard.last_balance and dashboard.account_balance">
<div class="col-7">
<span title="Latest Statement">Latest Statement</span>
</div>
<div class="col-5 text-right">
<span><t t-esc="dashboard.last_balance"/></span>
</div>
</div>
<div class="row" name="difference" t-if="dashboard.last_balance and dashboard.account_balance">
<div class="col-7">
<span title="Balance Difference">Difference</span>
</div>
<div class="col-5 text-right">
<span><t t-esc="dashboard.difference"/></span>
</div>
</div>
</div>
</field>
</record>
</odoo>

41
bank_reconciliation/views/account_move_line_view.xml

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="view_move_line_form" model="ir.ui.view">
<field name="name">account.move.line.form</field>
<field name="model">account.move.line</field>
<field name="inherit_id" ref="account.view_move_line_form" />
<field name="arch" type="xml">
<field name="date_maturity" position="after">
<field name="statement_date"/>
</field>
</field>
</record>
<record id="view_bank_statement_move_line_tree" model="ir.ui.view">
<field name="name">account.bank.statement.move.line.tree</field>
<field name="model">account.move.line</field>
<field name="arch" type="xml">
<tree string="Journal Items" create="false">
<field name="date"/>
<field name="move_id" required="0" groups="account.group_account_user"/>
<field name="journal_id" options='{"no_open":True}'/>
<field name="name"/>
<field name="ref"/>
<field name="statement_id" invisible="1"/>
<field name="partner_id"/>
<!--<field name="account_id" options='{"no_open":True}' domain="[('company_id', '=', company_id)]" groups="account.group_account_user"/>-->
<!--<field name="analytic_account_id" groups="account.group_account_user"/>-->
<field name="reconciled" invisible="1"/>
<field name="full_reconcile_id"/>
<field name="debit"/>
<field name="credit"/>
<field name="amount_currency" readonly="True" groups="base.group_multi_currency"/>
<field name="currency_id" readonly="True" invisible="1" />
<field name="date_maturity"/>
<field name="statement_date"/>
<field name="company_currency_id" invisible="1"/>
<field name="company_id" invisible="1"/>
</tree>
</field>
</record>
</odoo>

2
bank_reconciliation/wizard/__init__.py

@ -0,0 +1,2 @@
# -*- coding: utf-8 -*-
from . import bank_statement_wiz

55
bank_reconciliation/wizard/bank_statement_wiz.py

@ -0,0 +1,55 @@
# -*- coding: utf-8 -*-
from odoo import api, fields, models, _
class BankStatement(models.Model):
_name = 'bank.statement'
@api.onchange('journal_id', 'date_from', 'date_to')
def _get_lines(self):
self.account_id = self.journal_id.default_debit_account_id.id or self.journal_id.default_credit_account_id.id
self.currency_id = self.journal_id.currency_id or self.journal_id.company_id.currency_id or \
self.env.user.company_id.currency_id
domain = [('account_id', '=', self.account_id.id), ('statement_date', '=', False)]
if self.date_from:
domain += [('date', '>=', self.date_from)]
if self.date_to:
domain += [('date', '<=', self.date_to)]
s_lines = []
lines = self.env['account.move.line'].search(domain)
for line in self.statement_lines:
line.bank_statement_id = self.id
self.statement_lines = lines
@api.depends('statement_lines.statement_date')
def _compute_amount(self):
gl_balance = 0
bank_balance = 0
current_update = 0
domain = [('account_id', '=', self.account_id.id)]
lines = self.env['account.move.line'].search(domain)
gl_balance += sum([line.debit - line.credit for line in lines])
domain += [('id', 'not in', self.statement_lines.ids), ('statement_date', '!=', False)]
lines = self.env['account.move.line'].search(domain)
bank_balance += sum([line.balance for line in lines])
current_update += sum([line.debit - line.credit if line.statement_date else 0 for line in self.statement_lines])
self.gl_balance = gl_balance
self.bank_balance = bank_balance + current_update
self.balance_difference = self.gl_balance - self.bank_balance
journal_id = fields.Many2one('account.journal', 'Bank', domain=[('type', '=', 'bank')])
account_id = fields.Many2one('account.account', 'Bank Account')
date_from = fields.Date('Date From')
date_to = fields.Date('Date To')
statement_lines = fields.One2many('account.move.line', 'bank_statement_id')
gl_balance = fields.Monetary('Balance as per Company Books', readonly=True, compute='_compute_amount')
bank_balance = fields.Monetary('Balance as per Bank', readonly=True, compute='_compute_amount')
balance_difference = fields.Monetary('Amounts not Reflected in Bank', readonly=True, compute='_compute_amount')
current_update = fields.Monetary('Balance of entries updated now')
currency_id = fields.Many2one('res.currency', string='Currency')
company_id = fields.Many2one('res.company', string='Company',
default=lambda self: self.env['res.company']._company_default_get('bank.statement'))

56
bank_reconciliation/wizard/bank_statement_wiz_view.xml

@ -0,0 +1,56 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="bank_statement_wiz" model="ir.ui.view">
<field name="name">bank.statement.reconciliation</field>
<field name="model">bank.statement</field>
<field name="arch" type="xml">
<form string="Bank Statement Reconciliation">
<group>
<group>
<field name="journal_id"/>
<field name="account_id"/>
</group>
<group>
<field name="date_from"/>
<field name="date_to"/>
</group>
</group>
<group>
<field name="statement_lines" nolabel="1">
<tree create="false" editable="bottom" default_order="date">
<field name="date" readonly="True"/>
<field name="move_id" readonly="True" invisible="1" groups="account.group_account_user"/>
<field name="name" readonly="True"/>
<field name="ref" readonly="True"/>
<field name="partner_id" readonly="True"/>
<field name="amount_currency" readonly="True" groups="base.group_multi_currency"/>
<field name="currency_id" readonly="True" invisible="1" />
<field name="date_maturity" readonly="True"/>
<field name="statement_date"/>
<field name="company_currency_id" invisible="1" readonly="True"/>
<field name="debit" readonly="True"/>
<field name="credit" readonly="True"/>
</tree>
</field>
</group>
<group class="oe_subtotal_footer oe_right">
<field name="gl_balance"/>
<field name="balance_difference"/>
<field name="bank_balance"/>
</group>
</form>
</field>
</record>
<record id="action_bank_statement_wiz" model="ir.actions.act_window">
<field name="name">Bank Statement Reconciliation</field>
<field name="res_model">bank.statement</field>
<field name="type">ir.actions.act_window</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
<menuitem id="menu_action_bank_reconciliation" parent="account.menu_finance_entries_actions" action="action_bank_statement_wiz" sequence="25"/>
</odoo>
Loading…
Cancel
Save