Browse Source

Feb 17 [UPDT] : Updated 'dynamic_accounts_report'

pull/243/head
AjmalCybro 2 years ago
parent
commit
16fe2919cb
  1. 2
      dynamic_accounts_report/__manifest__.py
  2. 8
      dynamic_accounts_report/doc/RELEASE_NOTES.md
  3. 2
      dynamic_accounts_report/models/account_account_custom.py
  4. 1
      dynamic_accounts_report/report/general_ledger.py
  5. 6
      dynamic_accounts_report/static/src/js/ageing.js
  6. 1
      dynamic_accounts_report/static/src/js/daybook.js
  7. 1
      dynamic_accounts_report/static/src/js/partner_ledger.js
  8. 18
      dynamic_accounts_report/static/src/xml/general_ledger_view.xml
  9. 1
      dynamic_accounts_report/wizard/balance_sheet_config.py
  10. 2
      inventory_report_generator/README.rst
  11. 1
      inventory_report_generator/__init__.py
  12. 5
      inventory_report_generator/__manifest__.py
  13. 2
      inventory_report_generator/controllers/__init__.py
  14. 12
      inventory_report_generator/controllers/main.py
  15. 6
      inventory_report_generator/doc/RELEASE_NOTES.md
  16. 72
      inventory_report_generator/models/inventory_report.py
  17. 3
      inventory_report_generator/report/inventory_pdf_report.py
  18. 39
      inventory_report_generator/report/inventory_pdf_report.xml
  19. 399
      inventory_report_generator/static/description/index.html
  20. 14
      inventory_report_generator/static/src/css/inventory_report.css
  21. 251
      inventory_report_generator/static/src/xml/inventory_report_view.xml

2
dynamic_accounts_report/__manifest__.py

@ -22,7 +22,7 @@
{ {
'name': 'Dynamic Financial Reports V16', 'name': 'Dynamic Financial Reports V16',
'version': '16.0.1.0.1', 'version': '16.0.1.0.2',
'category': 'Accounting', 'category': 'Accounting',
'live_test_url': 'https://www.youtube.com/watch?v=gVQi9q9Rs-E&t=5s', 'live_test_url': 'https://www.youtube.com/watch?v=gVQi9q9Rs-E&t=5s',
'summary': """Dynamic Financial Reports with drill 'summary': """Dynamic Financial Reports with drill

8
dynamic_accounts_report/doc/RELEASE_NOTES.md

@ -5,8 +5,12 @@
#### ADD #### ADD
- Initial commit for Odoo 16 dynamic financial reports - Initial commit for Odoo 16 dynamic financial reports
#### 01.02.2023 #### 01.02.2023
#### Version 16.0.1.0.1 #### Version 16.0.1.0.1
#### UPDT #### UPDT
- css file updated - CSS file updated
#### 07.02.2023
#### Version 16.0.1.0.2
#### UPDT AND BUGFIX
- Report Bug Fix: Correct the currency used in the General Ledger

2
dynamic_accounts_report/models/account_account_custom.py

@ -52,7 +52,6 @@ class AccountAccountCustom(models.Model):
[('type', '=', 'account_type')]): [('type', '=', 'account_type')]):
for rec in record.account_ids: for rec in record.account_ids:
if rec.id == self._origin.id: if rec.id == self._origin.id:
print("function called")
record.write({"account_ids": [(3, rec.id)]}) record.write({"account_ids": [(3, rec.id)]})
if self.account_type.startswith("asset"): if self.account_type.startswith("asset"):
for record1 in self.env[ for record1 in self.env[
@ -64,7 +63,6 @@ class AccountAccountCustom(models.Model):
{"account_ids": [(4, self._origin.id)]}) {"account_ids": [(4, self._origin.id)]})
elif self.account_type.startswith( elif self.account_type.startswith(
"liability") or self.account_type == "equity": "liability") or self.account_type == "equity":
print('function_called...........')
for record1 in self.env[ for record1 in self.env[
'account.financial.report'].search( 'account.financial.report'].search(
[('type', '=', 'account_type')]): [('type', '=', 'account_type')]):

1
dynamic_accounts_report/report/general_ledger.py

@ -6,7 +6,6 @@ class GeneralLedger(models.AbstractModel):
@api.model @api.model
def _get_report_values(self, docids, data=None): def _get_report_values(self, docids, data=None):
if self.env.context.get('trial_pdf_report'): if self.env.context.get('trial_pdf_report'):
if data.get('report_data'): if data.get('report_data'):
data.update({'account_data': data.get('report_data')['report_lines'], data.update({'account_data': data.get('report_data')['report_lines'],

6
dynamic_accounts_report/static/src/js/ageing.js

@ -260,11 +260,9 @@ odoo.define('dynamic_accounts_report.ageing', function (require) {
var account_id = $(event.currentTarget).data('account-id'); var account_id = $(event.currentTarget).data('account-id');
var partner_id = $(event.currentTarget)[0].cells[0].innerText; var partner_id = $(event.currentTarget)[0].cells[0].innerText;
console.log("partner_id",partner_id)
var offset = 0; var offset = 0;
var td = $(event.currentTarget).next('tr').find('td'); var td = $(event.currentTarget).next('tr').find('td');
console.log("td",td.length)
if (td.length == 1) { if (td.length == 1) {
self._rpc({ self._rpc({
@ -274,8 +272,6 @@ odoo.define('dynamic_accounts_report.ageing', function (require) {
[self.wizard_id] [self.wizard_id]
], ],
}).then(function(data) { }).then(function(data) {
console.log(data)
_.each(data['report_lines'][0], function(rep_lines) { _.each(data['report_lines'][0], function(rep_lines) {
_.each(rep_lines['child_lines'], function(child_line) { _.each(rep_lines['child_lines'], function(child_line) {
@ -305,7 +301,6 @@ odoo.define('dynamic_accounts_report.ageing', function (require) {
}, },
view_acc_move: function(event) { view_acc_move: function(event) {
console.log("view_acc_move")
event.preventDefault(); event.preventDefault();
var self = this; var self = this;
var context = {}; var context = {};
@ -344,7 +339,6 @@ odoo.define('dynamic_accounts_report.ageing', function (require) {
apply_filter: function(event) { apply_filter: function(event) {
console.log("filter")
event.preventDefault(); event.preventDefault();
var self = this; var self = this;
self.initial_render = false; self.initial_render = false;

1
dynamic_accounts_report/static/src/js/daybook.js

@ -90,7 +90,6 @@ odoo.define('dynamic_partner_daybook.daybook', function (require) {
method: 'view_report', method: 'view_report',
args: [[this.wizard_id]], args: [[this.wizard_id]],
}).then(function(datas) { }).then(function(datas) {
console.log("data",datas)
_.each(datas['report_lines'], function(rep_lines) { _.each(datas['report_lines'], function(rep_lines) {
rep_lines.debit = self.format_currency(datas['currency'],rep_lines.debit); rep_lines.debit = self.format_currency(datas['currency'],rep_lines.debit);
rep_lines.credit = self.format_currency(datas['currency'],rep_lines.credit); rep_lines.credit = self.format_currency(datas['currency'],rep_lines.credit);

1
dynamic_accounts_report/static/src/js/partner_ledger.js

@ -381,7 +381,6 @@ odoo.define('dynamic_accounts_report.partner_ledger', function (require) {
var account_type_ids_text = []; var account_type_ids_text = [];
var span_res = document.getElementById("type_res") var span_res = document.getElementById("type_res")
var type_list = $(".type").select2('data') var type_list = $(".type").select2('data')
console.log(type_list)
for (var i = 0; i < type_list.length; i++) { for (var i = 0; i < type_list.length; i++) {
if(type_list[i].element[0].selected === true) if(type_list[i].element[0].selected === true)
{account_type_id.push(parseInt(type_list[i].id)) {account_type_id.push(parseInt(type_list[i].id))

18
dynamic_accounts_report/static/src/xml/general_ledger_view.xml

@ -415,7 +415,8 @@
<span>-</span> <span>-</span>
</t> </t>
<t t-else=""> <t t-else="">
<t t-esc="account_line.currency_code"/> <!-- <t t-esc="account_line.currency_code"/>-->
<t t-esc="currency_symbol"/>
<t t-esc="account_line.debit"/> <t t-esc="account_line.debit"/>
<!-- <t t-esc="Math.round(account_line.debit * Math.pow(10, 2)) / Math.pow(10, 2)"/>--> <!-- <t t-esc="Math.round(account_line.debit * Math.pow(10, 2)) / Math.pow(10, 2)"/>-->
</t> </t>
@ -425,7 +426,8 @@
<span>-</span> <span>-</span>
</t> </t>
<t t-else=""> <t t-else="">
<t t-esc="account_line.currency_code"/> <!-- <t t-esc="account_line.currency_code"/>-->
<t t-esc="currency_symbol"/>
<t t-esc="account_line.credit"/> <t t-esc="account_line.credit"/>
<!-- <t t-esc="Math.round(account_line.credit * Math.pow(10, 2)) / Math.pow(10, 2)"/>--> <!-- <t t-esc="Math.round(account_line.credit * Math.pow(10, 2)) / Math.pow(10, 2)"/>-->
</t> </t>
@ -437,7 +439,8 @@
<t t-else=""> <t t-else="">
<t t-set="t_balance" <t t-set="t_balance"
t-value="Math.round((t_balance+account_line.balance)* 100) / 100"/> t-value="Math.round((t_balance+account_line.balance)* 100) / 100"/>
<t t-esc="account_line.currency_code"/> <!-- <t t-esc="account_line.currency_code"/>-->
<t t-esc="currency_symbol"/>
<!-- <t t-esc="account_line.balance"/>--> <!-- <t t-esc="account_line.balance"/>-->
<t t-esc="t_balance" <t t-esc="t_balance"
t-options='{"widget": "float", "precision": 2}'/> t-options='{"widget": "float", "precision": 2}'/>
@ -453,7 +456,8 @@
<t t-else=""> <t t-else="">
<t t-esc="account_line.debit"/> <t t-esc="account_line.debit"/>
<!-- <t t-esc="Math.round(account_line.debit * Math.pow(10, 2)) / Math.pow(10, 2)"/>--> <!-- <t t-esc="Math.round(account_line.debit * Math.pow(10, 2)) / Math.pow(10, 2)"/>-->
<t t-esc="account_line.currency_code"/> <!-- <t t-esc="account_line.currency_code"/>-->
<t t-esc="currency_symbol"/>
</t> </t>
</td> </td>
<td t-att-style="style_right" class="amt"> <td t-att-style="style_right" class="amt">
@ -463,7 +467,8 @@
<t t-else=""> <t t-else="">
<t t-esc="account_line.credit"/> <t t-esc="account_line.credit"/>
<!-- <t t-esc="Math.round(account_line.credit * Math.pow(10, 2)) / Math.pow(10, 2)"/>--> <!-- <t t-esc="Math.round(account_line.credit * Math.pow(10, 2)) / Math.pow(10, 2)"/>-->
<t t-esc="account_line.currency_code"/> <!-- <t t-esc="account_line.currency_code"/>-->
<t t-esc="currency_symbol"/>
</t> </t>
</td> </td>
<td t-att-style="style_right" class="amt"> <td t-att-style="style_right" class="amt">
@ -477,7 +482,8 @@
t-options='{"widget": "float", "precision": 2}'/> t-options='{"widget": "float", "precision": 2}'/>
<!-- <t t-esc="account_line.balance"/>--> <!-- <t t-esc="account_line.balance"/>-->
<!-- <t t-esc="Math.round(account_line.balance * Math.pow(10, 2)) / Math.pow(10, 2)"/>--> <!-- <t t-esc="Math.round(account_line.balance * Math.pow(10, 2)) / Math.pow(10, 2)"/>-->
<t t-esc="account_line.currency_code"/> <!-- <t t-esc="account_line.currency_code"/>-->
<t t-esc="currency_symbol"/>
</t> </t>
</td> </td>
</t> </t>

1
dynamic_accounts_report/wizard/balance_sheet_config.py

@ -123,7 +123,6 @@ class BalanceSheet(models.TransientModel):
# states = [report.account_type_ids] # states = [report.account_type_ids]
"""end""" """end"""
print(report)
accounts = self.env['account.account'].search([ accounts = self.env['account.account'].search([
('account_type', 'in', ('account_type', 'in',
report.account_ids.mapped('account_type')) report.account_ids.mapped('account_type'))

2
inventory_report_generator/README.rst

@ -1,6 +1,6 @@
Inventory All In One Report Generator Inventory All In One Report Generator
===================================== =====================================
* Inventory All In One Dynamic Report For Odoo 15 community And Enterprise editions * Inventory All In One Dynamic Report For Odoo 16 community And Enterprise editions
Installation Installation
============ ============

1
inventory_report_generator/__init__.py

@ -18,7 +18,6 @@
# If not, see <http://www.gnu.org/licenses/>. # If not, see <http://www.gnu.org/licenses/>.
# #
############################################################################# #############################################################################
from . import models from . import models
from . import report from . import report
from . import controllers from . import controllers

5
inventory_report_generator/__manifest__.py

@ -3,7 +3,7 @@
# #
# Cybrosys Technologies Pvt. Ltd. # Cybrosys Technologies Pvt. Ltd.
# #
# Copyright (C) 2022-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). # Copyright (C) 2022-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# #
# You can modify it under the terms of the GNU AFFERO # You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. # GENERAL PUBLIC LICENSE (AGPL v3), Version 3.
@ -12,7 +12,6 @@
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details. # GNU AFFERO GENERAL PUBLIC LICENSE (AGPL v3) for more details.
#
# You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE # You should have received a copy of the GNU AFFERO GENERAL PUBLIC LICENSE
# (AGPL v3) along with this program. # (AGPL v3) along with this program.
# If not, see <http://www.gnu.org/licenses/>. # If not, see <http://www.gnu.org/licenses/>.
@ -21,7 +20,7 @@
{ {
'name': 'Inventory All In One Report Generator', 'name': 'Inventory All In One Report Generator',
'version': '15.0.1.1.1', 'version': '16.0.1.1.2',
'summary': "Dynamic Inventory Report Generator", 'summary': "Dynamic Inventory Report Generator",
'description': "Dynamic Inventory Report Generator", 'description': "Dynamic Inventory Report Generator",
'category': 'Inventory', 'category': 'Inventory',

2
inventory_report_generator/controllers/__init__.py

@ -3,7 +3,7 @@
# #
# Cybrosys Technologies Pvt. Ltd. # Cybrosys Technologies Pvt. Ltd.
# #
# Copyright (C) 2022-TODAY Cybrosys Technologies(<https://www.cybrosys.com>). # Copyright (C) 2022-TODAY Cybrosys Technologies(<https://www.cybrosys.com>).
# #
# You can modify it under the terms of the GNU AFFERO # You can modify it under the terms of the GNU AFFERO
# GENERAL PUBLIC LICENSE (AGPL v3), Version 3. # GENERAL PUBLIC LICENSE (AGPL v3), Version 3.

12
inventory_report_generator/controllers/main.py

@ -26,8 +26,10 @@ from odoo.tools import html_escape
class TBXLSXReportController(http.Controller): class TBXLSXReportController(http.Controller):
@http.route('/inventory_dynamic_xlsx_reports', type='http', auth='user', methods=['POST'], csrf=False) @http.route('/inventory_dynamic_xlsx_reports', type='http', auth='user',
def get_report_xlsx(self, model, options, output_format, report_data, report_name, dfr_data, **kw): methods=['POST'], csrf=False)
def get_report_xlsx(self, model, options, output_format, report_data,
report_name, dfr_data, **kw):
uid = request.session.uid uid = request.session.uid
report_obj = request.env[model].with_user(uid) report_obj = request.env[model].with_user(uid)
dfr_data = dfr_data dfr_data = dfr_data
@ -39,10 +41,12 @@ class TBXLSXReportController(http.Controller):
None, None,
headers=[ headers=[
('Content-Type', 'application/vnd.ms-excel'), ('Content-Type', 'application/vnd.ms-excel'),
('Content-Disposition', content_disposition(report_name + '.xlsx')) ('Content-Disposition',
content_disposition(report_name + '.xlsx'))
] ]
) )
report_obj.get_inventory_xlsx_report(options, response, report_data, dfr_data) report_obj.get_inventory_xlsx_report(options, response,
report_data, dfr_data)
response.set_cookie('fileToken', token) response.set_cookie('fileToken', token)
return response return response
except Exception as e: except Exception as e:

6
inventory_report_generator/doc/RELEASE_NOTES.md

@ -1,7 +1,7 @@
## Module <sale_report_generator> ## Module <inventory_report_generator>
#### 14.10.2022 #### 16.02.2023
#### Version 16.0.1.0.0 #### Version 16.0.1.1.2
#### ADD #### ADD
Initial Commit Initial Commit

72
inventory_report_generator/models/inventory_report.py

@ -44,7 +44,6 @@ class DynamicInventoryReport(models.Model):
@api.model @api.model
def inventory_report(self, option): def inventory_report(self, option):
# orders = self.env['purchase.order'].search([])
report_values = self.env['dynamic.inventory.report'].search( report_values = self.env['dynamic.inventory.report'].search(
[('id', '=', option[0])]) [('id', '=', option[0])])
data = { data = {
@ -89,7 +88,8 @@ class DynamicInventoryReport(models.Model):
return filters return filters
def get_filter_data(self, option): def get_filter_data(self, option):
r = self.env['dynamic.inventory.report'].search([('id', '=', option[0])]) r = self.env['dynamic.inventory.report'].search(
[('id', '=', option[0])])
default_filters = {} default_filters = {}
filter_dict = { filter_dict = {
@ -113,18 +113,19 @@ class DynamicInventoryReport(models.Model):
new_filter = None new_filter = None
if data.get('report_type') == 'report_by_transfers': if data.get('report_type') == 'report_by_transfers':
query = ''' query = '''select l.name,l.partner_id,l.scheduled_date,l.origin,
select l.name,l.partner_id,l.scheduled_date,l.origin,l.company_id,l.state,res_partner.name as partner,res_company.name as company,l.id as id l.company_id,l.state,res_partner.name as partner,
from stock_picking as l res_company.name as company,l.id as id from stock_picking as l
left join res_partner on l.partner_id = res_partner.id left join res_partner on l.partner_id = res_partner.id left join
left join res_company on l.company_id = res_company.id res_company on l.company_id = res_company.id'''
'''
term = 'Where ' term = 'Where '
if data.get('date_from'): if data.get('date_from'):
query += "Where l.scheduled_date >= '%s' " % data.get('date_from') query += " Where l.scheduled_date >= '%s' " % data.get(
'date_from')
term = 'AND ' term = 'AND '
if data.get('date_to'): if data.get('date_to'):
query += term + "l.scheduled_date <= '%s' " % data.get('date_to') query += term + " l.scheduled_date <= '%s' " % data.get(
'date_to')
self._cr.execute(query) self._cr.execute(query)
report_by_order = self._cr.dictfetchall() report_by_order = self._cr.dictfetchall()
report_sub_lines.append(report_by_order) report_sub_lines.append(report_by_order)
@ -136,26 +137,26 @@ class DynamicInventoryReport(models.Model):
LEFT OUTER JOIN ir_property prop_date ON prop_date.res_id = CONCAT('product.product,', product_product.id) LEFT OUTER JOIN ir_property prop_date ON prop_date.res_id = CONCAT('product.product,', product_product.id)
left join product_category on product_category.id = product_template.categ_id left join product_category on product_category.id = product_template.categ_id
''' '''
term = 'Where ' term = ' Where '
if data.get('date_from'): if data.get('date_from'):
query += "Where l.create_date >= '%s' " % data.get('date_from') query += " Where prop_date.create_date >= '%s' " % data.get('date_from')
term = 'AND ' term = ' AND '
if data.get('date_to'): if data.get('date_to'):
query += term + "l.create_date <= '%s' " % data.get('date_to') query += term + " prop_date.create_date <= '%s' " % data.get('date_to')
self._cr.execute(query) self._cr.execute(query)
report_by_order_details = self._cr.dictfetchall() report_by_order_details = self._cr.dictfetchall()
report_sub_lines.append(report_by_order_details) report_sub_lines.append(report_by_order_details)
elif data.get('report_type') == 'report_by_warehouse': elif data.get('report_type') == 'report_by_warehouse':
query = ''' query = '''select l.name,l.company_id,l.view_location_id,
select l.name,l.company_id,l.view_location_id,l.reception_route_id as route,l.write_date,res_company.name as company,stock_location.name as location,stock_location_route.name as route l.reception_route_id as route,l.write_date,res_company.name as
from stock_warehouse as l company,stock_location.name as location,stock_route.name as
left join res_company on res_company.id = l.company_id route from stock_warehouse as l left join res_company on
left join stock_location on stock_location.id = l.view_location_id res_company.id = l.company_id left join stock_location on
left join stock_location_route on stock_location_route.id = l.reception_route_id stock_location.id = l.view_location_id left join stock_route on
''' stock_route.id = l.reception_route_id'''
term = 'Where ' term = ' Where '
if data.get('date_from'): if data.get('date_from'):
query += "Where l.write_date >= '%s' " % data.get('date_from') query += " Where l.write_date >= '%s' " % data.get('date_from')
term = 'AND ' term = 'AND '
if data.get('date_to'): if data.get('date_to'):
query += term + "l.write_date <= '%s' " % data.get('date_to') query += term + "l.write_date <= '%s' " % data.get('date_to')
@ -163,14 +164,13 @@ class DynamicInventoryReport(models.Model):
report_by_product = self._cr.dictfetchall() report_by_product = self._cr.dictfetchall()
report_sub_lines.append(report_by_product) report_sub_lines.append(report_by_product)
elif data.get('report_type') == 'report_by_location': elif data.get('report_type') == 'report_by_location':
query = ''' query = '''select l.complete_name,l.usage as location_type,
select l.complete_name,l.usage as location_type,l.create_date,l.company_id,res_company.name as company l.create_date,l.company_id,res_company.name as company from
from stock_location as l stock_location as l left join res_company on res_company.id =
left join res_company on res_company.id = l.company_id l.company_id'''
''' term = ' Where '
term = 'Where '
if data.get('date_from'): if data.get('date_from'):
query += "Where l.create_date >= '%s' " % data.get('date_from') query += " Where l.create_date >= '%s' " % data.get('date_from')
term = 'AND ' term = 'AND '
if data.get('date_to'): if data.get('date_to'):
query += term + "l.create_date <= '%s' " % data.get('date_to') query += term + "l.create_date <= '%s' " % data.get('date_to')
@ -312,10 +312,6 @@ class DynamicInventoryReport(models.Model):
sheet.write('C7', 'Create Date', heading) sheet.write('C7', 'Create Date', heading)
sheet.write('D7', 'Product Cost', heading) sheet.write('D7', 'Product Cost', heading)
sheet.write('E7', 'On Hand Qty', heading) sheet.write('E7', 'On Hand Qty', heading)
# sheet.write('F7', 'Product Name', heading)
# sheet.write('G7', 'Price unit', heading)
# sheet.write('H7', 'Qty', heading)
# sheet.write('I7', 'Price Total', heading)
lst = [] lst = []
for rec in report_data_main[0]: for rec in report_data_main[0]:
@ -338,14 +334,10 @@ class DynamicInventoryReport(models.Model):
two_lst = [] two_lst = []
row += 1 row += 1
sheet.write(row, col, rec_data['category'], txt_l) sheet.write(row, col, rec_data['category'], txt_l)
sheet.write(row, col + 1, rec_data['name'], txt_l) sheet.write(row, col + 1, rec_data['name']['en_US'], txt_l)
sheet.write(row, col + 2, rec_data['create_date'], txt_l) sheet.write(row, col + 2, rec_data['create_date'], txt_l)
sheet.write(row, col + 3, rec_data['value_float'], txt_l) sheet.write(row, col + 3, rec_data['value_float'], txt_l)
sheet.write(row, col + 4, rec_data['quantity'], txt_l) sheet.write(row, col + 4, rec_data['quantity'], txt_l)
# sheet.write(row, col + 5, rec_data['product'], txt_l)
# sheet.write(row, col + 6, rec_data['price_unit'], txt_l)
# sheet.write(row, col + 7, rec_data['sum'], txt_l)
# sheet.write(row, col + 8, rec_data['amount_total'], txt_l)
if filters.get('report_type') == 'report_by_warehouse': if filters.get('report_type') == 'report_by_warehouse':
sheet.merge_range('B5:D5', 'Report Type: ' + sheet.merge_range('B5:D5', 'Report Type: ' +
@ -376,7 +368,7 @@ class DynamicInventoryReport(models.Model):
sheet.write(row, col + 1, rec_data['write_date'], txt_l) sheet.write(row, col + 1, rec_data['write_date'], txt_l)
sheet.write(row, col + 2, rec_data['company'], txt_l) sheet.write(row, col + 2, rec_data['company'], txt_l)
sheet.write(row, col + 3, rec_data['location'], txt_l) sheet.write(row, col + 3, rec_data['location'], txt_l)
sheet.write(row, col + 4, rec_data['route'], txt_l) sheet.write(row, col + 4, rec_data['route']['en_US'], txt_l)
if filters.get('report_type') == 'report_by_location': if filters.get('report_type') == 'report_by_location':

3
inventory_report_generator/report/inventory_pdf_report.py

@ -30,7 +30,8 @@ class PurchaseOrder(models.AbstractModel):
if self.env.context.get('inventory_pdf_report'): if self.env.context.get('inventory_pdf_report'):
if data.get('report_data'): if data.get('report_data'):
data.update({'report_main_line_data': data.get('report_data')['report_lines'], data.update({'report_main_line_data': data.get('report_data')[
'report_lines'],
'Filters': data.get('report_data')['filters'], 'Filters': data.get('report_data')['filters'],
'company': self.env.company, 'company': self.env.company,
}) })

39
inventory_report_generator/report/inventory_pdf_report.xml

@ -1,4 +1,13 @@
<odoo> <odoo>
<record id="action_report_inventory_all_in_one" model="ir.actions.report">
<field name="name">Inventory All In One Report</field>
<field name="model">dynamic.inventory.report</field>
<field name="report_type">qweb-pdf</field>
<field name="report_name">inventory_report_generator.inventory_pdf_report</field>
<field name="report_file">inventory_report_generator.inventory_pdf_report</field>
<field name="binding_type">report</field>
</record>
<template id="inventory_pdf_report"> <template id="inventory_pdf_report">
<t t-call="web.html_container"> <t t-call="web.html_container">
<t t-call="web.internal_layout"> <t t-call="web.internal_layout">
@ -45,17 +54,21 @@
</div> </div>
</div> </div>
<br></br> <br></br>
<table class="table table-sm table-reports"> <table class="table table-sm table-reports">
<thead> <thead>
<tr > <tr>
<th class="text-left">Reference</th> <th class="text-left">Reference</th>
<th colspan="6" class="text-center">Scheduled Date</th> <th colspan="6" class="text-center">Scheduled
<th colspan="6" class="text-right">Source Document</th> Date
</th>
<th colspan="6" class="text-right">Source
Document
</th>
<th colspan="6" class="text-right">Company</th> <th colspan="6" class="text-right">Company</th>
<th colspan="6" class="text-center">Delivery Address</th> <th colspan="6" class="text-center">Delivery
Address
</th>
<th colspan="6" class="text-left">State</th> <th colspan="6" class="text-left">State</th>
</tr> </tr>
</thead> </thead>
@ -82,7 +95,6 @@
</td> </td>
</tr> </tr>
</t> </t>
@ -130,8 +142,10 @@
<th>Category</th> <th>Category</th>
<th colspan="6">Product Name</th> <th colspan="6">Product Name</th>
<th colspan="6" class="text-right">Create Date</th> <th colspan="6" class="text-right">Create Date</th>
<th colspan="6" class="text-center">Product Cost</th> <th colspan="6" class="text-center">Product Cost
<th colspan="6" class="text-center">On Hand Qty</th> </th>
<th colspan="6" class="text-center">On Hand Qty
</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@ -292,12 +306,5 @@
<br></br> <br></br>
</div> </div>
</template> </template>
<record id="action_report_inventory_all_in_one" model="ir.actions.report">
<field name="name">Inventory All In One Report</field>
<field name="model">dynamic.inventory.report</field>
<field name="report_type">qweb-pdf</field>
<field name="report_name">inventory_report_generator.inventory_pdf_report</field>
<field name="report_file">inventory_report_generator.inventory_pdf_report</field>
</record>
</odoo> </odoo>

399
inventory_report_generator/static/description/index.html

@ -1,19 +1,20 @@
<div style="background-color: #714B67; min-height: 600px; width: 100%; padding: 15px; position: relative;"> <div style="background-color: #714B67; min-height: 600px; width: 100%; padding: 15px; position: relative;">
<!-- TITLE BAR --> <!-- TITLE BAR -->
<div <div
style="border-bottom: 1px solid #875A7B; padding: 15px; display: flex; justify-content: space-between; align-items: center;"> style="border-bottom: 1px solid #875A7B; padding: 15px; display: flex; justify-content: space-between; align-items: center;">
<img src="assets/misc/cybrosys-logo.png" width="42" height="42" style="width: 42px; height: 42px;" /> <img src="assets/misc/cybrosys-logo.png" width="42" height="42"
style="width: 42px; height: 42px;"/>
<div> <div>
<div style="color: #7C7BAD; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;" <div style="color: #7C7BAD; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;"
class="mr-2"> class="mr-2">
<i class="fa fa-check mr-1"></i>Community <i class="fa fa-check mr-1"></i>Community
</div> </div>
<div style="color: #875A7B; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;" <div style="color: #875A7B; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;"
class="mr-2"> class="mr-2">
<i class="fa fa-check mr-1"></i>Enterprise <i class="fa fa-check mr-1"></i>Enterprise
</div> </div>
<div style="color: #017E84; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;" <div style="color: #017E84; font-size: 14px; font-family: 'Montserrat', sans-serif; font-weight: bold; background-color: white; display: inline-block; padding: 3px 10px; border-radius: 50px;"
class="mr-2"> class="mr-2">
<i class="fa fa-check mr-1"></i>Odoo.sh <i class="fa fa-check mr-1"></i>Odoo.sh
</div> </div>
</div> </div>
@ -21,66 +22,71 @@
<!-- END OF TITLE BAR --> <!-- END OF TITLE BAR -->
<!-- APP HERO --> <!-- APP HERO -->
<h1 style="color: #FFFFFF; font-weight: bolder; font-size: 50px; text-align: center; margin-top: 50px;">Inventory All In One Report Generator</h1> <h1 style="color: #FFFFFF; font-weight: bolder; font-size: 50px; text-align: center; margin-top: 50px;">
<p style="color:#FFFFFF; padding: 8px 15px; text-align: center; font-size: 24px;">Dynamic Inventory Report Generator</p> Inventory All In One Report Generator</h1>
<p style="color:#FFFFFF; padding: 8px 15px; text-align: center; font-size: 24px;">
Dynamic Inventory Report Generator</p>
<!-- END OF APP HERO --> <!-- END OF APP HERO -->
<img src="assets/screenshots/hero.gif" <img src="assets/screenshots/hero.gif"
style="width: 75%; height: auto; position: absolute; margin-left: auto; margin-right: auto; top: 45%; left: 12%; right: auto;" /> style="width: 75%; height: auto; position: absolute; margin-left: auto; margin-right: auto; top: 45%; left: 12%; right: auto;"/>
</div> </div>
<!-- NAVIGATION SECTION --> <!-- NAVIGATION SECTION -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px; margin-top: 300px;"> <div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px; margin-top: 300px;">
<div class="d-flex justify-content-center align-items-center mr-2" <div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/compass.png" /> <img src="assets/misc/compass.png"/>
</div> </div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Explore This <h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Explore This
Module</h2> Module</h2>
</div> </div>
<div class="row my-4" style="font-family: 'Montserrat', sans-serif;"> <div class="row my-4" style="font-family: 'Montserrat', sans-serif;">
<div class="col-sm-12 col-md-6 my-3"> <div class="col-sm-12 col-md-6 my-3">
<a href="#overview"> <a href="#overview">
<div class="d-flex justify-content-between align-items-center" <div class="d-flex justify-content-between align-items-center"
style="background-color: #f5f5f5; padding: 30px; width: 100%;"> style="background-color: #f5f5f5; padding: 30px; width: 100%;">
<div> <div>
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Overview</span> <span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Overview</span>
<span <span
style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">Learn style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">Learn
more about this more about this
module</span> module</span>
</div> </div>
<img src="assets/misc/right-arrow.png" width="36" height="36" /> <img src="assets/misc/right-arrow.png" width="36" height="36"/>
</div> </div>
</a> </a>
</div> </div>
<div class="col-sm-12 col-md-6 my-3"> <div class="col-sm-12 col-md-6 my-3">
<a href="#features"> <a href="#features">
<div class="d-flex justify-content-between align-items-center" <div class="d-flex justify-content-between align-items-center"
style="background-color: #f5f5f5; padding: 30px; width: 100%;"> style="background-color: #f5f5f5; padding: 30px; width: 100%;">
<div> <div>
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Features</span> <span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Features</span>
<span <span
style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">View style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">View
features of this features of this
module</span> module</span>
</div> </div>
<img src="assets/misc/right-arrow.png" width="36" height="36" /> <img src="assets/misc/right-arrow.png" width="36" height="36"/>
</div> </div>
</a> </a>
</div> </div>
<div class="col-sm-12 col-md-6 my-3"> <div class="col-sm-12 col-md-6 my-3">
<a href="#screenshots"> <a href="#screenshots">
<div class="d-flex justify-content-between align-items-center" <div class="d-flex justify-content-between align-items-center"
style="background-color: #f5f5f5; padding: 30px; width: 100%;"> style="background-color: #f5f5f5; padding: 30px; width: 100%;">
<div> <div>
<span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Screenshots</span> <span style="color: #714B67; font-size: 24px; font-weight: 500; display: block;">Screenshots</span>
<span <span
style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">View style="color: #714B67; font-size: 16px; font-weight: 400; color:#282F33; display: block;">View
screenshots for this screenshots for this
module</span> module</span>
</div> </div>
<img src="assets/misc/right-arrow.png" width="36" height="36" /> <img src="assets/misc/right-arrow.png" width="36" height="36"/>
</div> </div>
</a> </a>
</div> </div>
@ -88,84 +94,109 @@
<!-- END OF NAVIGATION SECTION --> <!-- END OF NAVIGATION SECTION -->
<!-- OVERVIEW SECTION --> <!-- OVERVIEW SECTION -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="overview"> <div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;"
id="overview">
<div class="d-flex justify-content-center align-items-center mr-2" <div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/pie-chart.png" /> <img src="assets/misc/pie-chart.png"/>
</div> </div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Overview <h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Overview
</h2> </h2>
</div> </div>
<div class="row" style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;"> <div class="row"
style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;">
<div class="col-sm-12 py-4"> <div class="col-sm-12 py-4">
This app is useful to provide different Inventory Reports to do analysis. It shows the Inventory analysis of a company in many aspects such as by order,order details,salesman and so on. It can be filtered out based on different date ranges too. This app is useful to provide different Inventory Reports to do
analysis. It shows the Inventory analysis of a company in many aspects
such as by order,order details,salesman and so on. It can be filtered
out based on different date ranges too.
</div> </div>
</div> </div>
<!-- END OF OVERVIEW SECTION --> <!-- END OF OVERVIEW SECTION -->
<!-- FEATURES SECTION --> <!-- FEATURES SECTION -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="features"> <div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;"
id="features">
<div class="d-flex justify-content-center align-items-center mr-2" <div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/features.png" /> <img src="assets/misc/features.png"/>
</div> </div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Features <h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Features
</h2> </h2>
</div> </div>
<div class="row" style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;"> <div class="row"
style="font-family: 'Montserrat', sans-serif; font-weight: 400; font-size: 14px; line-height: 200%;">
<div class="col-sm-12 col-md-6"> <div class="col-sm-12 col-md-6">
<div class="d-flex align-items-center" style="margin-top: 40px; margin-bottom: 40px"> <div class="d-flex align-items-center"
<img src="assets/misc/check-box.png" class="mr-2" /> style="margin-top: 40px; margin-bottom: 40px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Community & Enterprise Support</span> <span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Community & Enterprise Support</span>
</div> </div>
<div class="d-flex align-items-center" style="margin-top: 30px; margin-bottom: 30px"> <div class="d-flex align-items-center"
<img src="assets/misc/check-box.png" class="mr-2" /> style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> <span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Filtering based on different aspects</span> Filtering based on different aspects</span>
</div> </div>
<div class="d-flex align-items-center" style="margin-top: 30px; margin-bottom: 30px"> <div class="d-flex align-items-center"
<img src="assets/misc/check-box.png" class="mr-2" /> style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> <span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Drilled on approach</span> Drilled on approach</span>
</div> </div>
</div> </div>
<div class="d-flex align-items-center" style="margin-top: 30px; margin-bottom: 30px"> <div class="d-flex align-items-center"
<img src="assets/misc/check-box.png" class="mr-2" /> style="margin-top: 30px; margin-bottom: 30px">
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Print Reports in both PDF and XLSX format.</span> <img src="assets/misc/check-box.png" class="mr-2"/>
</div> <span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Print Reports in both PDF and XLSX format.</span>
<div class="d-flex align-items-center" style="margin-top: 30px; margin-bottom: 30px"> </div>
<img src="assets/misc/check-box.png" class="mr-2" /> <div class="d-flex align-items-center"
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> style="margin-top: 30px; margin-bottom: 30px">
<img src="assets/misc/check-box.png" class="mr-2"/>
<span style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Generates Report for a specific date range.</span> Generates Report for a specific date range.</span>
</div>
</div> </div>
</div> </div>
</div>
<!-- END OF FEATURES SECTION --> <!-- END OF FEATURES SECTION -->
<!-- SCREENSHOTS SECTION --> <!-- SCREENSHOTS SECTION -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;" id="screenshots"> <div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;"
id="screenshots">
<div class="d-flex justify-content-center align-items-center mr-2" <div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/pictures.png" /> <img src="assets/misc/pictures.png"/>
</div> </div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Screenshots <h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Screenshots
</h2> </h2>
</div> </div>
<div class="row"> <div class="row">
<div class="col-sm-12"> <div class="col-sm-12">
<div style="display: block; margin: 30px auto;"> <div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">All In One Inventory Report Menu</h3> <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
All In One Inventory Report Menu</h3>
<img src="assets/screenshots/1.png" class="img-thumbnail"> <img src="assets/screenshots/1.png" class="img-thumbnail">
</div> </div>
<div style="display: block; margin: 30px auto;"> <div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Inventory Report Based On Categories</h3> <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Inventory Report Based On Categories</h3>
<img src="assets/screenshots/2.png" class="img-thumbnail"> <img src="assets/screenshots/2.png" class="img-thumbnail">
</div> </div>
<div style="display: block; margin: 30px auto;"> <div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">Inventory Report Based On Product</h3> <h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Inventory Report Based On Product</h3>
<img src="assets/screenshots/3.png" class="img-thumbnail"> <img src="assets/screenshots/3.png" class="img-thumbnail">
</div> </div>
@ -174,12 +205,15 @@ Generates Report for a specific date range.</span>
<!-- END OF SCREENSHOTS SECTION --> <!-- END OF SCREENSHOTS SECTION -->
<!-- RELATED PRODUCTS --> <!-- RELATED PRODUCTS -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> <div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2" <div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/categories.png" /> <img src="assets/misc/categories.png"/>
</div> </div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Related <h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Related
Products Products
</h2> </h2>
</div> </div>
@ -189,65 +223,89 @@ Generates Report for a specific date range.</span>
<!-- The slideshow --> <!-- The slideshow -->
<div class="carousel-inner" style="padding: 30px;"> <div class="carousel-inner" style="padding: 30px;">
<div class="carousel-item" style="min-height: 198.656px;"> <div class="carousel-item" style="min-height: 198.656px;">
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
<a href="https://apps.odoo.com/apps/modules/15.0/dynamic_accounts_report/" target="_blank"> style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/dynamic_accounts_report/"
target="_blank">
<div style="border-radius:10px"> <div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;" <img class="img img-responsive center-block"
src="assets/modules/1.png"> style="border-radius: 0px;"
src="assets/modules/1.png">
</div> </div>
</a> </a>
</div> </div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
<a href="https://apps.odoo.com/apps/modules/15.0/custom_gantt_view/" target="_blank"> style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/custom_gantt_view/"
target="_blank">
<div style="border-radius:10px"> <div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;" <img class="img img-responsive center-block"
src="assets/modules/2.png"> style="border-radius: 0px;"
src="assets/modules/2.png">
</div> </div>
</a> </a>
</div> </div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
<a href="https://apps.odoo.com/apps/modules/15.0/project_custom_gantt/" target="_blank"> style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/project_custom_gantt/"
target="_blank">
<div style="border-radius:10px"> <div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;" <img class="img img-responsive center-block"
src="assets/modules/3.png"> style="border-radius: 0px;"
src="assets/modules/3.png">
</div> </div>
</a> </a>
</div> </div>
</div> </div>
<div class="carousel-item active" style="min-height: 198.656px;"> <div class="carousel-item active"
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> style="min-height: 198.656px;">
<a href="https://apps.odoo.com/apps/modules/15.0/account_reports_xlsx/" target="_blank"> <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/account_reports_xlsx/"
target="_blank">
<div style="border-radius:10px"> <div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;" <img class="img img-responsive center-block"
src="assets/modules/4.png"> style="border-radius: 0px;"
src="assets/modules/4.png">
</div> </div>
</a> </a>
</div> </div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
<a href="https://apps.odoo.com/apps/modules/15.0/base_accounting_kit/" target="_blank"> style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/base_accounting_kit/"
target="_blank">
<div style="border-radius:10px"> <div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;" <img class="img img-responsive center-block"
src="assets/modules/5.png"> style="border-radius: 0px;"
src="assets/modules/5.png">
</div> </div>
</a> </a>
</div> </div>
<div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16" style="float:left"> <div class="col-xs-12 col-sm-4 col-md-4 mb16 mt16"
<a href="https://apps.odoo.com/apps/modules/15.0/hr_payroll_community/" target="_blank"> style="float:left">
<a href="https://apps.odoo.com/apps/modules/15.0/hr_payroll_community/"
target="_blank">
<div style="border-radius:10px"> <div style="border-radius:10px">
<img class="img img-responsive center-block" style="border-radius: 0px;" <img class="img img-responsive center-block"
src="assets/modules/6.png"> style="border-radius: 0px;"
src="assets/modules/6.png">
</div> </div>
</a> </a>
</div> </div>
</div> </div>
</div> </div>
<!-- Left and right controls --> <!-- Left and right controls -->
<a class="carousel-control-prev" href="#demo1" data-slide="prev" style="width:35px; color:#000"> <span <a class="carousel-control-prev" href="#demo1" data-slide="prev"
class="carousel-control-prev-icon"><i class="fa fa-chevron-left" style="font-size:24px"></i></span> style="width:35px; color:#000"> <span
</a> <a class="carousel-control-next" href="#demo1" data-slide="next" style="width:35px; color:#000"> class="carousel-control-prev-icon"><i
<span class="carousel-control-next-icon"><i class="fa fa-chevron-right" class="fa fa-chevron-left"
style="font-size:24px"></i></span>
</a> <a class="carousel-control-next" href="#demo1"
data-slide="next" style="width:35px; color:#000">
<span class="carousel-control-next-icon"><i
class="fa fa-chevron-right"
style="font-size:24px"></i></span> style="font-size:24px"></i></span>
</a> </a>
</div> </div>
</div> </div>
</div> </div>
@ -255,12 +313,15 @@ Generates Report for a specific date range.</span>
<!-- OUR SERVICES --> <!-- OUR SERVICES -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> <div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2" <div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/star.png" /> <img src="assets/misc/star.png"/>
</div> </div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Our Services <h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Our Services
</h2> </h2>
</div> </div>
@ -268,30 +329,36 @@ Generates Report for a specific date range.</span>
<div class="row"> <div class="row">
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3" <div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #1dd1a1 !important; border-radius: 15px !important; height: 80px; width: 80px;"> style="background-color: #1dd1a1 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/cogs.png" class="img-responsive" height="48px" width="48px"> <img src="assets/icons/cogs.png" class="img-responsive"
height="48px" width="48px">
</div> </div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> <h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo Odoo
Customization</h6> Customization</h6>
</div> </div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3" <div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #ff6b6b !important; border-radius: 15px !important; height: 80px; width: 80px;"> style="background-color: #ff6b6b !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/wrench.png" class="img-responsive" height="48px" width="48px"> <img src="assets/icons/wrench.png" class="img-responsive"
height="48px" width="48px">
</div> </div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> <h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo Odoo
Implementation</h6> Implementation</h6>
</div> </div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3" <div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #6462CD !important; border-radius: 15px !important; height: 80px; width: 80px;"> style="background-color: #6462CD !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/lifebuoy.png" class="img-responsive" height="48px" width="48px"> <img src="assets/icons/lifebuoy.png" class="img-responsive"
height="48px" width="48px">
</div> </div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> <h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo Odoo
Support</h6> Support</h6>
</div> </div>
@ -299,10 +366,12 @@ Generates Report for a specific date range.</span>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3" <div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #ffa801 !important; border-radius: 15px !important; height: 80px; width: 80px;"> style="background-color: #ffa801 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/user.png" class="img-responsive" height="48px" width="48px"> <img src="assets/icons/user.png" class="img-responsive"
height="48px" width="48px">
</div> </div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> <h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Hire Hire
Odoo Odoo
Developer</h6> Developer</h6>
@ -310,20 +379,24 @@ Generates Report for a specific date range.</span>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3" <div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #54a0ff !important; border-radius: 15px !important; height: 80px; width: 80px;"> style="background-color: #54a0ff !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/puzzle.png" class="img-responsive" height="48px" width="48px"> <img src="assets/icons/puzzle.png" class="img-responsive"
height="48px" width="48px">
</div> </div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> <h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo Odoo
Integration</h6> Integration</h6>
</div> </div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3" <div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #6d7680 !important; border-radius: 15px !important; height: 80px; width: 80px;"> style="background-color: #6d7680 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/update.png" class="img-responsive" height="48px" width="48px"> <img src="assets/icons/update.png" class="img-responsive"
height="48px" width="48px">
</div> </div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> <h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo Odoo
Migration</h6> Migration</h6>
</div> </div>
@ -331,30 +404,36 @@ Generates Report for a specific date range.</span>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3" <div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #786fa6 !important; border-radius: 15px !important; height: 80px; width: 80px;"> style="background-color: #786fa6 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/consultation.png" class="img-responsive" height="48px" width="48px"> <img src="assets/icons/consultation.png" class="img-responsive"
height="48px" width="48px">
</div> </div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> <h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo Odoo
Consultancy</h6> Consultancy</h6>
</div> </div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3" <div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #f8a5c2 !important; border-radius: 15px !important; height: 80px; width: 80px;"> style="background-color: #f8a5c2 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/training.png" class="img-responsive" height="48px" width="48px"> <img src="assets/icons/training.png" class="img-responsive"
height="48px" width="48px">
</div> </div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> <h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo Odoo
Implementation</h6> Implementation</h6>
</div> </div>
<div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4"> <div class="col-lg-4 d-flex flex-column justify-content-center align-items-center my-4">
<div class="d-flex justify-content-center align-items-center mx-3 my-3" <div class="d-flex justify-content-center align-items-center mx-3 my-3"
style="background-color: #e6be26 !important; border-radius: 15px !important; height: 80px; width: 80px;"> style="background-color: #e6be26 !important; border-radius: 15px !important; height: 80px; width: 80px;">
<img src="assets/icons/license.png" class="img-responsive" height="48px" width="48px"> <img src="assets/icons/license.png" class="img-responsive"
height="48px" width="48px">
</div> </div>
<h6 class="text-center" style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;"> <h6 class="text-center"
style="font-family: Montserrat, 'sans-serif' !important; font-weight: bold;">
Odoo Odoo
Licensing Consultancy</h6> Licensing Consultancy</h6>
</div> </div>
@ -366,12 +445,15 @@ Generates Report for a specific date range.</span>
<!-- OUR INDUSTRIES --> <!-- OUR INDUSTRIES -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> <div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2" <div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/corporate.png" /> <img src="assets/misc/corporate.png"/>
</div> </div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Our <h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Our
Industries Industries
</h2> </h2>
</div> </div>
@ -380,8 +462,9 @@ Generates Report for a specific date range.</span>
<div class="row"> <div class="row">
<div class="col-lg-3"> <div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center" <div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/trading-black.png" class="img-responsive mb-3" height="48px" width="48px"> <img src="assets/icons/trading-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Trading Trading
</h5> </h5>
@ -394,8 +477,9 @@ Generates Report for a specific date range.</span>
<div class="col-lg-3"> <div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center" <div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/pos-black.png" class="img-responsive mb-3" height="48px" width="48px"> <img src="assets/icons/pos-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
POS POS
</h5> </h5>
@ -408,8 +492,9 @@ Generates Report for a specific date range.</span>
<div class="col-lg-3"> <div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center" <div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/education-black.png" class="img-responsive mb-3" height="48px" width="48px"> <img src="assets/icons/education-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Education Education
</h5> </h5>
@ -421,9 +506,10 @@ Generates Report for a specific date range.</span>
<div class="col-lg-3"> <div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center" <div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/manufacturing-black.png" class="img-responsive mb-3" height="48px" <img src="assets/icons/manufacturing-black.png"
width="48px"> class="img-responsive mb-3" height="48px"
width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Manufacturing Manufacturing
</h5> </h5>
@ -435,8 +521,9 @@ Generates Report for a specific date range.</span>
<div class="col-lg-3"> <div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center" <div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/ecom-black.png" class="img-responsive mb-3" height="48px" width="48px"> <img src="assets/icons/ecom-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
E-commerce &amp; Website E-commerce &amp; Website
</h5> </h5>
@ -449,8 +536,9 @@ Generates Report for a specific date range.</span>
<div class="col-lg-3"> <div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center" <div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/service-black.png" class="img-responsive mb-3" height="48px" width="48px"> <img src="assets/icons/service-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Service Management Service Management
</h5> </h5>
@ -462,8 +550,9 @@ Generates Report for a specific date range.</span>
<div class="col-lg-3"> <div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center" <div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/restaurant-black.png" class="img-responsive mb-3" height="48px" width="48px"> <img src="assets/icons/restaurant-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Restaurant Restaurant
</h5> </h5>
@ -475,8 +564,9 @@ Generates Report for a specific date range.</span>
<div class="col-lg-3"> <div class="col-lg-3">
<div class="my-4 d-flex flex-column justify-content-center" <div class="my-4 d-flex flex-column justify-content-center"
style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;"> style="background-color: #f6f8f9 !important; border-radius: 0px; padding: 2rem !important; height: 250px !important;">
<img src="assets/icons/hotel-black.png" class="img-responsive mb-3" height="48px" width="48px"> <img src="assets/icons/hotel-black.png"
class="img-responsive mb-3" height="48px" width="48px">
<h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;"> <h5 style="font-family: Montserrat, sans-serif !important; color: #000 !important; font-weight: bold;">
Hotel Management Hotel Management
</h5> </h5>
@ -492,12 +582,15 @@ Generates Report for a specific date range.</span>
<!-- END OF END OF OUR INDUSTRIES --> <!-- END OF END OF OUR INDUSTRIES -->
<!-- SUPPORT --> <!-- SUPPORT -->
<div class="d-flex align-items-center" style="border-bottom: 2px solid #714B67; padding: 15px 0px;"> <div class="d-flex align-items-center"
style="border-bottom: 2px solid #714B67; padding: 15px 0px;">
<div class="d-flex justify-content-center align-items-center mr-2" <div class="d-flex justify-content-center align-items-center mr-2"
style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;"> style="background-color: #F5F5F5; border-radius: 0px; width: 40px; height: 40px;">
<img src="assets/misc/customer-support.png" /> <img src="assets/misc/customer-support.png"/>
</div> </div>
<h2 class="mt-2" style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">Support <h2 class="mt-2"
style="font-family: 'Montserrat', sans-serif; font-size: 24px; font-weight: bold;">
Support
</h2> </h2>
</div> </div>
<div class="container mt-5"> <div class="container mt-5">
@ -505,12 +598,14 @@ Generates Report for a specific date range.</span>
<div class="col-sm-12 col-md-6"> <div class="col-sm-12 col-md-6">
<div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;"> <div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;">
<div class="mr-4" <div class="mr-4"
style="background-color: #714B67; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;"> style="background-color: #714B67; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;">
<img src="assets/misc/support.png" height="48" width="48" style="width: 42px; height: 42px;" /> <img src="assets/misc/support.png" height="48" width="48"
style="width: 42px; height: 42px;"/>
</div> </div>
<div> <div>
<h4>Need Help?</h4> <h4>Need Help?</h4>
<p style="line-height: 100%;">Got questions or need help? Get in touch.</p> <p style="line-height: 100%;">Got questions or need help?
Get in touch.</p>
<a href="mailto:odoo@cybrosys.com"> <a href="mailto:odoo@cybrosys.com">
<p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;"> <p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;">
odoo@cybrosys.com</p> odoo@cybrosys.com</p>
@ -521,14 +616,16 @@ Generates Report for a specific date range.</span>
<div class="col-sm-12 col-md-6"> <div class="col-sm-12 col-md-6">
<div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;"> <div style="background-color: #F6F8F9; padding: 30px; display: flex; align-items: center;">
<div class="mr-4" <div class="mr-4"
style="background-color: #2AC44D; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;"> style="background-color: #2AC44D; display: inline-block; height: 70px; width: 70px; display: flex; align-items: center; justify-content: center;">
<img src="assets/misc/whatsapp.png" height="52" width="52" style="width: 52px; height: 52px;" /> <img src="assets/misc/whatsapp.png" height="52" width="52"
style="width: 52px; height: 52px;"/>
</div> </div>
<div> <div>
<h4>WhatsApp</h4> <h4>WhatsApp</h4>
<p style="line-height: 100%;">Say hi to us on WhatsApp!</p> <p style="line-height: 100%;">Say hi to us on WhatsApp!</p>
<a href="https://api.whatsapp.com/send?phone=918606827707"> <a href="https://api.whatsapp.com/send?phone=918606827707">
<p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;">+91 86068 <p style="font-weight: 400; font-size: 28px; line-height: 80%; color: #714B67;">
+91 86068
27707</p> 27707</p>
</a> </a>
</div> </div>
@ -538,7 +635,7 @@ Generates Report for a specific date range.</span>
<div class="row"> <div class="row">
<div class="col-sm-12 my-5 d-flex justify-content-center align-items-center"> <div class="col-sm-12 my-5 d-flex justify-content-center align-items-center">
<img src="assets/misc/logo.png" width="144" height="31" <img src="assets/misc/logo.png" width="144" height="31"
style="width:144px; height: 31px; margin-top: 40px;" /> style="width:144px; height: 31px; margin-top: 40px;"/>
</div> </div>
</div> </div>
</div> </div>

14
inventory_report_generator/static/src/css/inventory_report.css

@ -13,7 +13,7 @@ a.dropdown-toggle.report-type {
margin: 10px; margin: 10px;
} }
.search-Result-Selection { .search {
border: 2px solid #ccc; border: 2px solid #ccc;
width: 257px; width: 257px;
margin-right: 10px; margin-right: 10px;
@ -44,15 +44,3 @@ tr.table_pr_head th {
font-size: 18px; font-size: 18px;
text-align: center; text-align: center;
} }
ul.dropdown-menu.show {
height: 40px;
background-color: #eeeeee;
width: 200px;
}
ul.dropdown-menu.show li {
margin-left: 10px;
}
ul.dropdown-menu.show a{
color: #221c1c;
}

251
inventory_report_generator/static/src/xml/inventory_report_view.xml

@ -18,7 +18,8 @@
<t t-name="InventoryFilterView"> <t t-name="InventoryFilterView">
<div style="display: flex; margin-right: 10px; margin-left: 10px;justify-content:space-between"> <div style="display: flex; margin-right: 10px; margin-left: 10px;justify-content:space-between">
<div class="sub_container_left" style="width: 285px; margin-left: 36px;"> <div class="sub_container_left"
style="width: 285px; margin-left: 36px;">
<div class="row report_print"> <div class="row report_print">
<button type="button" class="btn btn-primary" id="pdf" <button type="button" class="btn btn-primary" id="pdf"
style="top: 0px; height: 42px; color: white; background-color: #7c7bad; border-color: #7c7bad; width: 127px; margin-right:4px;"> style="top: 0px; height: 42px; color: white; background-color: #7c7bad; border-color: #7c7bad; width: 127px; margin-right:4px;">
@ -32,104 +33,106 @@
</div> </div>
<div style="margin-bottom: 40px;display: flex; margin-right:10px;">
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle time_range_pr"
type="button" id="date_chose"
data-bs-toggle="dropdown" aria-expanded="false"
style="height:33px;width:150px;align-items:center;display:flex;">
<span class="fa fa-calendar" title="Dates" role="img"
aria-label="Dates"
style="display:block;margin-right:5px;"/>
Date Range
</button>
<div class="dropdown-menu" role="menu"
aria-labelledby="date_chose">
<div class="form-group"
style="margin-left:10px; margin-right:10px;">
<label class="" for="date_from">Start Date :
</label>
<div class="input-group date" id="date_from"
data-target-input="nearest">
<input type="text" name="date_from"
class="form-control datetimepicker-input"
data-target="#date_from"
t-att-name="prefix"/>
<div class="input-group-append"
data-target="#date_from"
data-toggle="datetimepicker">
<span class="input-group-text"
style="justify-content:center;padding-bottom: 10px;padding-top: 5px;">
<span class="fa fa-calendar" role="img"
aria-label="Calendar"/>
</span>
</div>
</div>
<label class="" for="date_to">End Date :</label>
<div class="input-group date" id="date_to"
data-target-input="nearest">
<input type="text" name="date_to"
class="form-control datetimepicker-input"
data-target="#date_to"
t-att-name="prefix"/>
<div class="input-group-append"
data-target="#date_to"
data-toggle="datetimepicker">
<span class="input-group-text"
style="justify-content:center;padding-bottom: 10px;padding-top: 5px;">
<span class="fa fa-calendar" role="img"
aria-label="Calendar"/>
</span>
</div>
</div>
</div>
<div style="margin-bottom: 40px;display: flex; margin-right:10px;">
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle time_range_pr"
type="button" id="date_chose"
data-bs-toggle="dropdown" aria-expanded="false" style="height:33px;width:150px;align-items:center;display:flex;">
<span class="fa fa-calendar" title="Dates" role="img"
aria-label="Dates" style="display:block;margin-right:5px;"/>
Date Range
</button>
<div class="dropdown-menu" role="menu"
aria-labelledby="date_chose">
<div class="form-group" style="margin-left:10px; margin-right:10px;">
<label class="" for="date_from">Start Date :</label>
<div class="input-group date" id="date_from"
data-target-input="nearest">
<input type="text" name="date_from"
class="form-control datetimepicker-input"
data-target="#date_from"
t-att-name="prefix"/>
<div class="input-group-append"
data-target="#date_from"
data-toggle="datetimepicker">
<span class="input-group-text" style="justify-content:center;padding-bottom: 10px;padding-top: 5px;">
<span class="fa fa-calendar" role="img"
aria-label="Calendar" />
</span>
</div> </div>
</div>
<label class="" for="date_to">End Date :</label>
<div class="input-group date" id="date_to"
data-target-input="nearest">
<input type="text" name="date_to"
class="form-control datetimepicker-input"
data-target="#date_to"
t-att-name="prefix"/>
<div class="input-group-append"
data-target="#date_to"
data-toggle="datetimepicker">
<span class="input-group-text" style="justify-content:center;padding-bottom: 10px;padding-top: 5px;">
<span class="fa fa-calendar" role="img"
aria-label="Calendar"/>
</span>
</div>
</div> </div>
</div>
</div>
</div> <div class="search-Result-Selection search" style="display:flex;">
<div class="dropdown"
style="border=2px;width:100%;margin-right:10px;border-radius:5px;">
<div class="search-Result-Selection" style="display:flex;"> <a class="btn btn-secondary dropdown-togglereport-type"
<div class="dropdown" style="border=2px;width:100%;margin-right:10px;border-radius:5px;"> href="#" role="button" id="dropdownMenuLink"
<a class="btn btn-secondary dropdown-togglereport-type" data-bs-toggle="dropdown" aria-expanded="false">
href="#" role="button" id="dropdownMenuLink" <span class="fa fa-book"/>
data-bs-toggle="dropdown" aria-expanded="false"> <span class="low_case">Report Type :</span>
<span class="fa fa-book"/> </a>
<span class="low_case">Report Type :</span>
</a> <select id="selection"
class="dropdown-menu report_type"
<select id="selection" class="dropdown-menu report_type" name="states[]">
aria-labelledby="dropdownMenuLink" <div role="separator" class="dropdown-divider"/>
name="states[]"> <option value="report_by_transfers" selected="">
<div role="separator" class="dropdown-divider"/> Report By Transfers
<option value="report_by_order" selected="">Report </option>
By <option value="report_by_categories">Report By
Order</option> Categories
<option value="report_by_order_detail">Report By </option>
Order <option value="report_by_warehouse">Report By
Detail</option> Warehouse
<option value="report_by_product">Report By </option>
Product</option> <option value="report_by_location">Report By
<option value="report_by_categories">Report By Location
Categories</option> </option>
<option value="report_by_purchase_representative"> </select>
Report <span id="report_res"/>
By Purchase Representative</option> </div>
<option value="report_by_state">Report By
State</option>
</select>
<span id="report_res"/>
</div>
</div> </div>
<div class="row report_print" style="margin-left:4px;"> <div class="row report_print" style="margin-left:4px;">
<button type="button" id="apply_filter" <button type="button" id="apply_filter"
class="btn btn-primary"> class="btn btn-primary">
Apply Apply
</button> </button>
</div> </div>
</div> </div>
</div> </div>
</t> </t>
@ -150,25 +153,32 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
<!-- <t t-if="order['report_type']='report_by_order'">--> <t t-foreach="report_lines"
<t t-foreach="report_lines" t-as="dynamic_inventory_report"> t-as="dynamic_inventory_report">
<tr style="border: 1.5px solid black;" class="pr-line" <tr style="border: 1.5px solid black;"
class="pr-line"
t-att-data-account-id="dynamic_inventory_report['id']" t-att-data-account-id="dynamic_inventory_report['id']"
t-attf-data-target=".a{{dynamic_inventory_report['id']}}"> t-attf-data-target=".a{{dynamic_inventory_report['id']}}">
<td> <td>
<t t-if="dynamic_inventory_report['id']"> <t t-if="dynamic_inventory_report['id']">
<div class="dropdown dropdown-toggle"> <div class="dropdown dropdown-toggle">
<a data-toggle="dropdown" href="#" id="table_toggle_btn" data-bs-toggle="dropdown" aria-expanded="false"> <a data-toggle="dropdown" href="#"
id="table_toggle_btn"
data-bs-toggle="dropdown"
aria-expanded="false">
<span class="caret"/> <span class="caret"/>
<span> <span>
<t t-esc="dynamic_inventory_report['name']"/> <t t-esc="dynamic_inventory_report['name']"/>
</span> </span>
</a> </a>
<ul class="dropdown-menu" role="menu" aria-labelledby="table_toggle_btn"> <ul class="dropdown-menu"
role="menu"
aria-labelledby="table_toggle_btn">
<li> <li>
<a class="view_transfer_order" tabindex="-1" href="#" <a class="view_transfer_order"
tabindex="-1" href="#"
t-att-id="dynamic_inventory_report['id']"> t-att-id="dynamic_inventory_report['id']">
View Transfer Order View Transfer Order
</a> </a>
@ -226,14 +236,16 @@
</thead> </thead>
<tbody> <tbody>
<!-- <t t-if="order['report_type']='report_by_order'">--> <t t-foreach="report_lines"
<t t-foreach="report_lines" t-as="dynamic_inventory_report"> t-as="dynamic_inventory_report">
<tr style="border: 1.5px solid black;" class="pr-line" <tr style="border: 1.5px solid black;"
class="pr-line"
data-toggle="collapse" data-toggle="collapse"
t-att-data-account-id="dynamic_inventory_report['id']" t-att-data-account-id="dynamic_inventory_report['id']"
t-attf-data-target=".a{{dynamic_inventory_report['id']}}"> t-attf-data-target=".a{{dynamic_inventory_report['id']}}">
<td style="border: 0px solid black;"> <td style="border: 0px solid black;">
<i class="fa fa-caret-down" role="img" aria-label="Unfolded" title="Unfolded"/> <i class="fa fa-caret-down" role="img"
aria-label="Unfolded" title="Unfolded"/>
<span> <span>
<t t-esc="dynamic_inventory_report['category']"/> <t t-esc="dynamic_inventory_report['category']"/>
@ -259,27 +271,6 @@
<t t-esc="dynamic_inventory_report['quantity']"/> <t t-esc="dynamic_inventory_report['quantity']"/>
</span> </span>
</td> </td>
<!-- <td style="text-align:center;">-->
<!-- <span>-->
<!-- <t t-esc="dynamic_purchase_report['product']"/>-->
<!-- </span>-->
<!-- </td>-->
<!-- <td style="text-align:center;">-->
<!-- <span>-->
<!-- <t t-esc="dynamic_purchase_report['price_unit']"/>-->
<!-- </span>-->
<!-- </td>-->
<!-- <td style="text-align:center;">-->
<!-- <span>-->
<!-- <t t-esc="dynamic_purchase_report['sum']"/>-->
<!-- </span>-->
<!-- </td>-->
<!-- <td style="text-align:center;">-->
<!-- <span>-->
<!-- <t t-esc="dynamic_purchase_report['amount_total']"/>-->
<!-- </span>-->
<!-- </td>-->
</tr> </tr>
</t> </t>
</tbody> </tbody>
@ -306,13 +297,16 @@
<tbody> <tbody>
<!-- <t t-if="order['report_type']='report_by_order'">--> <!-- <t t-if="order['report_type']='report_by_order'">-->
<t t-foreach="report_lines" t-as="dynamic_inventory_report"> <t t-foreach="report_lines"
<tr style="border: 1.5px solid black;" class="pr-line" t-as="dynamic_inventory_report">
<tr style="border: 1.5px solid black;"
class="pr-line"
data-toggle="collapse" data-toggle="collapse"
t-att-data-account-id="dynamic_inventory_report['id']" t-att-data-account-id="dynamic_inventory_report['id']"
t-attf-data-target=".a{{dynamic_inventory_report['id']}}"> t-attf-data-target=".a{{dynamic_inventory_report['id']}}">
<td style="border: 0px solid black;"> <td style="border: 0px solid black;">
<i class="fa fa-caret-down" role="img" aria-label="Unfolded" title="Unfolded"/> <i class="fa fa-caret-down" role="img"
aria-label="Unfolded" title="Unfolded"/>
<span> <span>
<t t-esc="dynamic_inventory_report['name']"/> <t t-esc="dynamic_inventory_report['name']"/>
</span> </span>
@ -334,7 +328,7 @@
</td> </td>
<td style="text-align:center;"> <td style="text-align:center;">
<span> <span>
<t t-esc="dynamic_inventory_report['route']"/> <t t-esc="dynamic_inventory_report['route']['en_US']"/>
</span> </span>
</td> </td>
</tr> </tr>
@ -359,13 +353,16 @@
</thead> </thead>
<tbody> <tbody>
<!-- <t t-if="order['report_type']='report_by_order'">--> <!-- <t t-if="order['report_type']='report_by_order'">-->
<t t-foreach="report_lines" t-as="dynamic_inventory_report"> <t t-foreach="report_lines"
<tr style="border: 1.5px solid black;" class="pr-line" t-as="dynamic_inventory_report">
<tr style="border: 1.5px solid black;"
class="pr-line"
data-toggle="collapse" data-toggle="collapse"
t-att-data-account-id="dynamic_inventory_report['id']" t-att-data-account-id="dynamic_inventory_report['id']"
t-attf-data-target=".a{{dynamic_inventory_report['id']}}"> t-attf-data-target=".a{{dynamic_inventory_report['id']}}">
<td style="border: 0px solid black;"> <td style="border: 0px solid black;">
<i class="fa fa-caret-down" role="img" aria-label="Unfolded" title="Unfolded"/> <i class="fa fa-caret-down" role="img"
aria-label="Unfolded" title="Unfolded"/>
<span> <span>
<t t-esc="dynamic_inventory_report['complete_name']"/> <t t-esc="dynamic_inventory_report['complete_name']"/>
</span> </span>

Loading…
Cancel
Save