Browse Source

[INIT] Initial Commit

pull/95/merge
Sreejith P 6 years ago
parent
commit
7603f99bfb
  1. 34
      product_ageing_report/README.md
  2. 24
      product_ageing_report/__init__.py
  3. 44
      product_ageing_report/__manifest__.py
  4. 4
      product_ageing_report/doc/RELEASE_NOTES.md
  5. 23
      product_ageing_report/report/__init__.py
  6. 133
      product_ageing_report/report/report_ageing_products.py
  7. 78
      product_ageing_report/report/report_ageing_products.xml
  8. 4
      product_ageing_report/security/ir.model.access.csv
  9. BIN
      product_ageing_report/static/description/1.jpg
  10. BIN
      product_ageing_report/static/description/ageing-menu.png
  11. BIN
      product_ageing_report/static/description/ageing-sample.png
  12. BIN
      product_ageing_report/static/description/ageing-wiz.png
  13. BIN
      product_ageing_report/static/description/banner.jpg
  14. BIN
      product_ageing_report/static/description/cybro_logo.png
  15. BIN
      product_ageing_report/static/description/icon.png
  16. 114
      product_ageing_report/static/description/index.html
  17. 24
      product_ageing_report/wizard/__init__.py
  18. 43
      product_ageing_report/wizard/product_ageing.py
  19. 46
      product_ageing_report/wizard/product_ageing.xml
  20. 35
      stock_exipry_reprt/README.md
  21. 3
      stock_exipry_reprt/__init__.py
  22. 43
      stock_exipry_reprt/__manifest__.py
  23. 4
      stock_exipry_reprt/doc/RELEASE_NOTES.md
  24. 2
      stock_exipry_reprt/models/__init__.py
  25. 17
      stock_exipry_reprt/models/stock_expiry.py
  26. 2
      stock_exipry_reprt/report/__init__.py
  27. 50
      stock_exipry_reprt/report/stock_expiry_report.py
  28. 9
      stock_exipry_reprt/report/stock_expiry_report.xml
  29. 38
      stock_exipry_reprt/report/stock_report_template.xml
  30. 2
      stock_exipry_reprt/security/ir.model.access.csv
  31. BIN
      stock_exipry_reprt/static/description/1.jpg
  32. BIN
      stock_exipry_reprt/static/description/banner.png
  33. BIN
      stock_exipry_reprt/static/description/icon.png
  34. 361
      stock_exipry_reprt/static/description/index.html
  35. BIN
      stock_exipry_reprt/static/description/report.png
  36. BIN
      stock_exipry_reprt/static/description/report_days.png
  37. BIN
      stock_exipry_reprt/static/description/settings.png
  38. 35
      stock_exipry_reprt/views/stock_expiry_views.xml

34
product_ageing_report/README.md

@ -0,0 +1,34 @@
Stock Ageing Analysis
=====================
Product Ageing Analysis With Filterations
Installation
============
- www.odoo.com/documentation/11.0/setup/install.html
- Install our custom addon
License
=======
GNU AFFERO GENERAL PUBLIC LICENSE, Version 3 (AGPLv3)
(http://www.gnu.org/licenses/agpl.html)
Bug Tracker
===========
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported.
Credits
=======
* Cybrosys Techno Solutions <https://www.cybrosys.com>
Author
------
Developer: Sayooj A O - sayooj@cybrosys.in
Maintainer
----------
This module is maintained by Cybrosys Technologies.
For support and more information, please visit https://www.cybrosys.com.

24
product_ageing_report/__init__.py

@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Sayooj A O (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from . import wizard
from . import report

44
product_ageing_report/__manifest__.py

@ -0,0 +1,44 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Sayooj A O (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
{
'name': "Stock Ageing Analysis",
'version': '11.0.1.0.0',
'summary': """Product Ageing Analysis With Filterations""",
'description': """With this module, we can perform stock ageing analysis with optional filters such
as location, category, etc.""",
'author': "Cybrosys Techno Solutions",
'website': "https://www.cybrosys.com",
'company': 'Cybrosys Techno Solutions',
'maintainer': 'Cybrosys Techno Solutions',
'category': 'Stock',
'depends': ['product', 'stock'],
'data': [
'security/ir.model.access.csv',
'wizard/product_ageing.xml',
'report/report_ageing_products.xml',
],
'images': ['static/description/banner.jpg'],
'license': 'AGPL-3',
'installable': True,
'auto_install': False,
'application': False,
}

4
product_ageing_report/doc/RELEASE_NOTES.md

@ -0,0 +1,4 @@
## Module <product_ageing_report>
#### 17.12.2018
#### Version 11.0.1.0.0

23
product_ageing_report/report/__init__.py

@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Sayooj A O (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from . import report_ageing_products

133
product_ageing_report/report/report_ageing_products.py

@ -0,0 +1,133 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Sayooj A O (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from odoo import models, api
from datetime import datetime
class ReportAvgPrices(models.AbstractModel):
_name = 'report.product_ageing_report.report_ageing_analysis'
def get_productss(self, docs):
"""input : starting date, location and category
output: a dictionary with all the products and their stock for that currespnding intervals"""
cr = self._cr
if docs.location_id and docs.product_categ:
cr.execute("select sq.id from stock_quant sq inner join product_product pp on(pp.id=sq.product_id) "
" inner join product_template pt on(pt.id=pp.product_tmpl_id and pt.categ_id in %s) "
"where sq.location_id in %s and sq.quantity > 0 and sq.in_date <=%s", (tuple(docs.product_categ.ids),
tuple(docs.location_id.ids), docs.from_date))
elif docs.location_id:
cr.execute("select sq.id from stock_quant sq where sq.location_id in %s and sq.quantity > 0 and sq.in_date <=%s",
(tuple(docs.location_id.ids), docs.from_date))
elif docs.product_categ:
cr.execute("select sq.id from stock_quant sq inner join product_product pp on(pp.id=sq.product_id) "
" inner join product_template pt on(pt.id=pp.product_tmpl_id and pt.categ_id in %s)"
"where sq.quantity > 0 and sq.in_date <=%s", (tuple(docs.product_categ.ids), docs.from_date))
else:
cr.execute("select id from stock_quant where quantity > 0 and in_date <=%s", (docs.from_date,))
quant_ids = cr.fetchall()
quant_id = []
for i in quant_ids:
quant_id.append(i[0])
rec = self.env['stock.quant'].browse(quant_id)
products = {}
product_list = []
for i in rec:
date1 = datetime.strptime(docs.from_date, '%Y-%m-%d %H:%M:%S').date()
if i.product_id.id not in product_list:
product_list.append(i.product_id.id)
temp = {
'product': i.product_id.name,
'total_qty': i.quantity,
}
quantity = [0, 0, 0, 0, 0]
date2 = datetime.strptime(i.in_date, '%Y-%m-%d %H:%M:%S').date()
no_days = (date1 - date2).days
t1 = 0
t2 = docs.interval
for j in range(0, 5):
if no_days >= 4 * docs.interval:
quantity[4] += i.quantity
break
elif no_days in range(t1, t2):
quantity[j] += i.quantity
break
t1 = t2
t2 += docs.interval
temp['quantity'] = quantity
products[i.product_id.id] = temp
elif i.product_id.id in product_list:
date2 = datetime.strptime(i.in_date, '%Y-%m-%d %H:%M:%S').date()
no_days = (date1 - date2).days
t1 = 0
t2 = docs.interval
for j in range(0, 5):
if no_days >= 4 * docs.interval:
products[i.product_id.id]['quantity'][4] += i.quantity
products[i.product_id.id]['total_qty'] += i.quantity
break
elif no_days in range(t1, t2):
products[i.product_id.id]['quantity'][j] += i.quantity
products[i.product_id.id]['total_qty'] += i.quantity
break
t1 = t2
t2 += docs.interval
return products
@api.model
def get_report_values(self, docids, data=None):
"""we are overwriting this function because we need to show values from other models in the report
we pass the objects in the docargs dictionary"""
self.model = self.env.context.get('active_model')
docs = self.env[self.model].browse(self.env.context.get('active_id'))
products = self.get_productss(docs)
interval = ['0-'+str(docs.interval),
str(docs.interval)+'-'+str(2*docs.interval),
str(2*docs.interval)+'-'+str(3*docs.interval),
str(3*docs.interval)+'-'+str(4*docs.interval),
str(4*docs.interval)+'+']
loc = ""
categ = ""
for i in docs.location_id:
if i.location_id.name and i.name:
loc += i.location_id.name+" / "+i.name+", "
for i in docs.product_categ:
if i.name:
categ += i.name+", "
loc = loc[:-2]
categ = categ[:-2]
docargs = {
'doc_ids': self.ids,
'doc_model': self.model,
'docs': docs,
'loc': loc,
'categ': categ,
'interval': interval,
'products': products,
}
return docargs

78
product_ageing_report/report/report_ageing_products.xml

@ -0,0 +1,78 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="report_ageing_analysis">
<t t-call="web.external_layout">
<t t-foreach="docs" t-as="o">
<div class="page">
<div class="row">
<div class="mt32 mb32">
<h3 style="text-align:center;" >Stock Ageing Analysis</h3>
</div>
<div class="mt32 mb32">
<t t-if="categ">
<b>Product Category:</b> <span t-esc="categ" />
</t>
<br /><br />
<b>Date :</b> <span t-esc="docs.from_date" />
<div>
<t t-if="loc">
<b>Location:</b> <span t-esc="loc" style="float:left;"/>
</t>
<br />
<br />
</div>
<div>
<b>Interval(Days):</b> <span t-esc="docs.interval" />
</div>
</div>
</div>
<div class="row">
<div class="mt32 mb32">
<table style="border:1px solid;width:100%;">
<thead>
<tr style="height:35px;border:1px solid;">
<th style="vertical-align:middle;text-align:center;border:1px solid;">Product</th>
<t t-foreach="interval" t-as="i">
<th style="vertical-align:middle;text-align:center;border:1px solid;">
<t t-esc="i" />
</th>
</t>
<th style="vertical-align:middle;text-align:center;border:1px solid;">Total</th>
</tr>
</thead>
<tbody>
<t t-foreach="products" t-as="p">
<tr style="width:100%;height:30px;border:1px solid">
<td style="vertical-align:middle;text-align:center;border:1px solid;">
<span t-esc="products[p]['product']"/>
</td>
<t t-foreach="products[p]['quantity']" t-as="quantity">
<td style="vertical-align:middle;text-align:center;border:1px solid;">
<span t-esc="quantity"/>
</td>
</t>
<td style="vertical-align:middle;text-align:center;border:1px solid;">
<span t-esc="products[p]['total_qty']"/>
</td>
</tr>
</t>
</tbody>
</table>
</div>
</div>
</div>
</t>
</t>
</template>
<report
id="report_product_ageing"
model="stock.quant"
report_type="qweb-pdf"
string="Ageing Analysis"
name="product_ageing_report.report_ageing_analysis"
file="product_ageing_report.report_ageing_analysis"
menu="False"
/>
</odoo>

4
product_ageing_report/security/ir.model.access.csv

@ -0,0 +1,4 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
ageing_inv_user,access_inv_user,product_ageing_report.model_product_ageing,stock.group_stock_user,1,1,1,1
ageing_mgr,access_ageing_mgr,product_ageing_report.model_product_ageing,stock.group_stock_manager,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 ageing_inv_user access_inv_user product_ageing_report.model_product_ageing stock.group_stock_user 1 1 1 1
3 ageing_mgr access_ageing_mgr product_ageing_report.model_product_ageing stock.group_stock_manager 1 1 1 1

BIN
product_ageing_report/static/description/1.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

BIN
product_ageing_report/static/description/ageing-menu.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

BIN
product_ageing_report/static/description/ageing-sample.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

BIN
product_ageing_report/static/description/ageing-wiz.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

BIN
product_ageing_report/static/description/banner.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 KiB

BIN
product_ageing_report/static/description/cybro_logo.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

BIN
product_ageing_report/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

114
product_ageing_report/static/description/index.html

@ -0,0 +1,114 @@
<section class="oe_container">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan">Stock Ageing Analysis</h2>
<h3 class="oe_slogan">..Ageing Analysis for Products..</h3>
<h4 class="oe_slogan"><a href="https://www.cybrosys.com">Cybrosys Technologies</a> </h4>
</div>
<div class="oe_row oe_spaced" style="padding-left:65px;">
<h4>Features:</h4>
<div>
<span style="color:green;"> &#9745; </span> Ageing analysis for products filtered by location.<br/>
<span style="color:green;"> &#9745; </span> Ageing analysis for products filtered by product category.<br/>
<span style="color:green;"> &#9745; </span> Ageing analysis for products filtered by date.<br/>
<span style="color:green;"> &#9745; </span> Ageing analysis for products with customizable intervals.<br/>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<div class="oe_picture">
<h3 class="oe_slogan">Overview</h3>
<p class="oe_mt32">
This module adds a new feature, 'Stock Ageing Analysis' to Odoo. We can perform the analysis
filtered by location, product category, date, etc.
</p>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<h3 class="oe_slogan">Menu</h3>
<div class="oe_span6" style="text-align: center;">
<div class="oe_demo oe_picture oe_screenshot">
<img style="border:10px solid white;width:87% !important;" src="ageing-menu.png">
</div>
</div>
<br><br><br>
<div>
<div>
<p class="text-justify">
A new menu, 'Stock Ageing Analysis' is added under Inventory -> Reports for performing
this analysis. Clicking on this menu will open a new wizard.
<p>
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row oe_spaced">
<h3 class="oe_slogan">Ageing Analysis Wizard</h3>
<div class="oe_span12" style="text-align: center;">
<div class="oe_demo oe_picture oe_screenshot">
<img style="border:10px solid white;width:100% !important;" src="ageing-wiz.png">
</div>
</div>
<br><br><br>
<div>
<div>
<p class="text-justify">
Here we can set the filters we need to apply. If we need to filter the analysis by location,
we should specify those locations in the 'Location' field. If none selected, products in all
locations will be considered. The category filter also works in the same way. We can select the
categories from the 'Category' field. If none selected, all categories will be considered.
<p>
<p class="text-justify">
The 'Date' field can be used to specify the starting date from which we need to start the checking.
Finally, the 'Interval' field specifies the length of interval in days.
</p>
</div>
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row oe_spaced">
<h3 class="oe_slogan">Sample Report</h3>
<div>
<p class="text-justify">
After filling the required details, click on the 'Print' button.
<p>
</div>
<div style="text-align: center;">
<div class="oe_demo oe_picture">
<img style="border-top:1px solid !important;border-bottom:1px solid !important;border-left:1px solid !important;border-right:1px solid !important;width:100% !important;" src="ageing-sample.png">
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<h2 class="oe_slogan" style="margin-top:20px;" >Need Any Help?</h2>
<div class="oe_slogan" style="margin-top:10px !important;">
<div>
<a class="btn btn-primary btn-lg mt8"
style="color: #FFFFFF !important;border-radius: 0;" href="https://www.cybrosys.com"><i
class="fa fa-envelope"></i> Email </a> <a
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
class="btn btn-primary btn-lg mt8" style="color: #FFFFFF !important;border-radius: 0;"
href="https://www.cybrosys.com/odoo-customization-and-installation/"><i
class="fa fa-check-square"></i> Request Customization </a>
</div>
<br>
<img src="cybro_logo.png" style="width: 190px; margin-bottom: 20px;" 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;"></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;"></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;padding-left: 8px;"></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;"></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;"></i></a></td>
</div>
</div>
</section>

24
product_ageing_report/wizard/__init__.py

@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Sayooj A O (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from . import product_ageing

43
product_ageing_report/wizard/product_ageing.py

@ -0,0 +1,43 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Sayooj A O (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
from odoo import models, fields, api
class AgeingAnalysis(models.Model):
_name = 'product.ageing'
from_date = fields.Datetime(string="Starting Date", required=True)
location_id = fields.Many2many('stock.location', string="Location")
product_categ = fields.Many2many('product.category', string="Category")
interval = fields.Integer(string="Interval(days)", default=30, required=True)
@api.model
def compute_ageing(self, data):
"""Redirects to the report with the values obtained from the wizard
'data['form']': date duration"""
rec = self.browse(data)
data = {}
data['form'] = rec.read(['from_date', 'location_id', 'product_categ', 'interval'])
return self.env.ref('product_ageing_report.report_product_ageing').report_action(self,data=data)

46
product_ageing_report/wizard/product_ageing.xml

@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<data>
<record id="ageing_analysis_view" model="ir.ui.view">
<field name="name">Ageing Analysis Wizard</field>
<field name="model">product.ageing</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<group>
<field name="location_id" widget="many2many_tags" />
<field name="product_categ" widget="many2many_tags" />
</group>
<group>
<field name="from_date" />
<field name="interval" />
</group>
</group>
</sheet>
<footer>
<button string="Print" name="compute_ageing" type="object" class="btn-primary"/>
<button string="Discard" class="btn-default" special="cancel"/>
</footer>
</form>
</field>
</record>
<record id="action_prod_ageing_analysis" model="ir.actions.act_window">
<field name="name">Stock Ageing Analysis</field>
<field name="res_model">product.ageing</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="view_id" ref="ageing_analysis_view"/>
<field name="target">new</field>
</record>
<menuitem name="Stock Ageing Analysis" id="prod_ageing_analysis" action="action_prod_ageing_analysis"
parent="stock.menu_warehouse_report"/>
</data>
</odoo>

35
stock_exipry_reprt/README.md

@ -0,0 +1,35 @@
Stock Expiry Report
===================
Reports Of The Products That Will Expires Within The Entered Date.
Installation
============
- www.odoo.com/documentation/11.0/setup/install.html
- Install our custom addon
License
=======
GNU AFFERO GENERAL PUBLIC LICENSE, Version 3 (AGPLv3)
(http://www.gnu.org/licenses/agpl.html)
Bug Tracker
===========
Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported.
Credits
=======
* Cybrosys Techno Solutions <https://www.cybrosys.com>
Author
------
Developer: Sayooj A O - sayooj@cybrosys.in
Maintainer
----------
This module is maintained by Cybrosys Technologies.
For support and more information, please visit https://www.cybrosys.com.

3
stock_exipry_reprt/__init__.py

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

43
stock_exipry_reprt/__manifest__.py

@ -0,0 +1,43 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Cybrosys Technologies Pvt. Ltd.
# Copyright (C) 2018-TODAY Cybrosys Technologies (<https://www.cybrosys.com>).
# Author: Sayooj A O (<https://www.cybrosys.com>)
#
# This program is free software: you can modify
# it under the terms of the GNU Affero General Public License (AGPL) as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
#
###################################################################################
{
'name': 'Stock Expiry Report',
'version': '11.0.1.0.0',
'summary': 'Stock Expiry Report provides the PDF Reports Of The Products That Will Expires Within The Entered Date',
'description': 'Stock Expiry Report provides the PDF Reports Of The Products That Will Expires Within The Entered Date',
'author': 'Cybrosys Techno solutions',
'maintainer': 'Cybrosys Techno Solutions',
'company': 'Cybrosys Techno Solutions',
'website': 'https://www.cybrosys.com',
'depends': ['stock', 'product_expiry'],
'category': 'Inventory',
'demo': [],
'data': ['views/stock_expiry_views.xml',
'security/ir.model.access.csv',
'report/stock_expiry_report.xml',
'report/stock_report_template.xml'],
'installable': True,
'images': ['static/description/banner.png'],
'qweb': [],
'license': 'AGPL-3',
}

4
stock_exipry_reprt/doc/RELEASE_NOTES.md

@ -0,0 +1,4 @@
## Module <stock_expiry_reprt>
#### 17.12.2018
#### Version 11.0.1.0.0

2
stock_exipry_reprt/models/__init__.py

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

17
stock_exipry_reprt/models/stock_expiry.py

@ -0,0 +1,17 @@
# -*- coding: utf-8 -*-
from odoo import fields,api,models
class StockExpiry(models.TransientModel):
_name = 'stockz.expiry'
report_dayz = fields.Char(string='Generate Report For(days)',required=True)
check = fields.Boolean(string='Location Wise Report', default=False,
help="Enable this For Printing the report of all locations")
int_location = fields.Many2one('stock.location', string='Location')
@api.multi
def print_report(self):
data = {'report_dayz': self.report_dayz, 'check': self.check, 'int_location': self.int_location.id}
return self.env.ref('stock_exipry_reprt.stock_expiry_pdf').report_action(self, data=data)

2
stock_exipry_reprt/report/__init__.py

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

50
stock_exipry_reprt/report/stock_expiry_report.py

@ -0,0 +1,50 @@
# -*- coding: utf-8 -*-
from odoo import models, _
from odoo.exceptions import ValidationError, Warning
class CustomReport(models.TransientModel):
_name = "report.stock_exipry_reprt.stock_expiry_reports"
def get_report_values(self,docids,data=None):
cr = self._cr
query = """SELECT spl.name,spl.life_date,spl.product_id,pt.name as product_name ,sl.complete_name as location_name,sl.id as location_id
from stock_production_lot spl
join product_product as pp
on spl.product_id = pp.id
join product_template pt
on pp.product_tmpl_id = pt.id
join stock_quant sq
on pp.id = sq.product_id
join stock_location sl
on sq.location_id = sl.id
where usage != 'view' and (spl.life_date::DATE-now()::date) > %s"""
cr.execute(query, [data['report_dayz']])
dat = cr.dictfetchall()
count = 0
if data['check']:
if data['int_location']:
for val in dat:
if data['int_location'] == val['location_id']:
count = 1
break
new_list = []
if count == 1:
for item in dat:
if item['location_id'] == data['int_location']:
new_list.append(item)
dat = new_list
else:
count = 1
if not data['int_location']:
count = 1
if count == 0:
raise ValidationError(_("No Products Expired In the Selected Location"))
if not dat:
raise Warning('No Products Are Expired In These Days')
return {
'doc_ids': self.ids,
'doc_model': 'stockz.expiry',
'dat': dat,
'data': data,
}

9
stock_exipry_reprt/report/stock_expiry_report.xml

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
<report id="stock_expiry_pdf"
string="Stock Expiry Report"
model="stockz.expiry"
report_type="qweb-pdf"
file="stock_exipry_reprt.stock_expiry_reports"
name="stock_exipry_reprt.stock_expiry_reports" />
</odoo>

38
stock_exipry_reprt/report/stock_report_template.xml

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="stock_expiry_reports">
<t t-call="web.html_container">
<t t-call="web.external_layout">
<div class="page">
<div class="oe_structure"/>
<h2>Stock Expiry Report</h2>
<div class="oe_structure"/>
</div>
<table class="table table-condensed" name="stock_expiry_table">
<thead>
<tr>
<th>Lot/Serial Number</th>
<th>Product</th>
<t t-if="data['check']">
<th>Location</th>
</t>
<th>Date Of Expiry</th>
</tr>
</thead>
<tbody>
<tr t-foreach="dat" t-as="o">
<tr>
<td><span t-esc="o['name']"/></td>
<td><span t-esc="o['product_name']"/></td>
<t t-if="data['check']">
<td><span t-esc="o['location_name']"/></td>
</t>
<td><span t-esc="o['life_date']"/></td>
</tr>
</tr>
</tbody>
</table>
</t>
</t>
</template>
</odoo>

2
stock_exipry_reprt/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
stock_rprt,stockreport,model_stockz_expiry,base.group_erp_manager,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 stock_rprt stockreport model_stockz_expiry base.group_erp_manager 1 1 1 1

BIN
stock_exipry_reprt/static/description/1.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

BIN
stock_exipry_reprt/static/description/banner.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 646 KiB

BIN
stock_exipry_reprt/static/description/icon.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

361
stock_exipry_reprt/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:cover;padding: 13% 0% 19% 15%;">
<div class="oe_row oe_spaced">
<!-----Title----->
<h2 class="oe_slogan" style="font-size: 35px;color: #fff;font-weight: 900;text-transform: uppercase;text-align: left;margin: 0;margin-bottom: 16px;">
Stock Expiry Report
</h2>
<!-----//Title End----->
<!-----Sub Title----->
<h3 class="oe_slogan" style="font-size: 25px;color: #fff;font-weight: 600;text-align: left;opacity: 1;margin: 0 !important;">
Stock Expiry Report enables the users to print report of the products which are going to expired based on the number of days that we are specified.
</h3>
<!-----//Sub Title End----->
<!-----Powered by Cybrosys----->
<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">Cybrosys Technologies</a>
</h5>
<!-----// End Powered by Cybrosys----->
</div>
</section>
<section class="oe_container" style="padding: 3% 0% 3% 15%;">
<!-----Overview----->
<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;">
Introducing the Stock Expiry Report to Odoo 11 community version. This can be used
for printing pdf reports of the stock of products which will expired within the date that we entered.And these module also provides location wise expiry report.
</h3>
</div>
<!-----//End Overview----->
<!-----Configuration----->
<div class="oe_row oe_spaced">
<h2 class="oe_slogan" style="text-align: left;font-size: 28px;font-weight: 300;margin: 0px !important;">
Configuration
</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;">
We have to enable 'Lots and Serial Numbers' and 'Expiration Date' from the settings.No other configurations are required.
</h3>
</div>
<!-----//End Configuration----->
</section>
<section class="oe_container" style="background-image:url(https://www.cybrosys.com/images/odoo-index-banner.png); background-repeat:no-repeat; background-size:cover;padding: 11% 0% 14% 15%;">
<!-----Features----->
<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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
Provides report of the products which will expire within the mentioned date.
</h3>
<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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
Provides Location wise Report.
</h3><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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
Expiry Report based on specific locations also included.
</h3>
</div>
<!-----//End Features----->
</section>
<!-----------------Screenshot Section------------------------->
<section class="oe_container" style="padding: 3% 0% 0% 15%;">
<!--SC Section 1-->
<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>
<!--FIRST SCREENSHOT-->
<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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
For the report Purpose We have to enable 'Lots and Serial Numbers' and 'Expiration Date' from the settings.
</h3>
<div class="oe_row oe_spaced">
<img src="settings.png" alt="" style="width: 95%;"/>
</div>
<!--END FIRST SCREENSHOT-->
<!--SECOND SCREENSHOT-->
<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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
Here the field Generate Report For(days) specifies the number of days the we want to generate the report.
</h3>
<div class="oe_row oe_spaced">
<img src="report_days.png" alt="" style="width: 95%;"/>
</div>
<!--END SECOND SCREENSHOT-->
<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;">
<i class="fa fa-check" aria-hidden="true" style="color: #cd2d47;font-size: 15px;"></i>
Now the report is generated based on the conditions that we provided.
</h3>
<div class="oe_row oe_spaced">
<img src="report.png" alt="" style="width: 95%;"/>
</div>
</div>
<!--SC Section 1 End-->
</section>
<!-----------------Screenshot Section End------------------------->
<!-----------------Our Service 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 Service
</h2>
<div style="display:flex;padding-top: 20px;justify-content: space-between;">
<div style="flex-basis: 18%;">
<a href="https://www.cybrosys.com/odoo-customization-and-installation/" target="_blank">
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;">
<img src="https://www.cybrosys.com/images/odoo-customization.png" style="width: 100%;border-radius: 100%;"/>
</div>
<h3 class="oe_slogan" style="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;">
Odoo <br/>Customization
</h3>
</a>
</div>
<div style="flex-basis: 18%;">
<a href="https://www.cybrosys.com/odoo-erp-implementation/" target="_blank">
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;">
<img src="https://www.cybrosys.com/images/odoo-erp-implementation.png" style="width: 100%;border-radius: 100%;"/>
</div>
<h3 class="oe_slogan" style="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;">
Odoo <br/>Implementation
</h3>
</a>
</div>
<div style="flex-basis: 18%;">
<a href="https://www.cybrosys.com/odoo-erp-integration/" target="_blank">
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;">
<img src="https://www.cybrosys.com/images/odoo-erp-integration.png" style="width: 100%;border-radius: 100%;"/>
</div>
<h3 class="oe_slogan" style="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;">
Odoo <br/>Integration
</h3>
</a>
</div>
<div style="flex-basis: 18%;">
<a href="https://www.cybrosys.com/odoo-erp-support/" target="_blank">
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;">
<img src="https://www.cybrosys.com/images/odoo-erp-support.png" style="width: 100%;border-radius: 100%;"/>
</div>
<h3 class="oe_slogan" style="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;">
Odoo <br/>Support
</h3>
</a>
</div>
<div style="flex-basis: 18%;">
<a href="https://www.cybrosys.com/hire-odoo-developer/" target="_blank">
<div style="width:75px;height:75px;background:#fff; border-radius:100%;margin: auto;">
<img src="https://www.cybrosys.com/images/hire-odoo-developer.png" style="width: 100%;border-radius: 100%;"/>
</div>
<h3 class="oe_slogan" style="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;">
Hire <br/>Odoo Developer
</h3>
</a>
</div>
</div>
</div>
</section>
<!-----------------END Our Service Section------------------------->
<!-----------------Our Industries------------------------->
<section class="oe_container" style="padding: 3% 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;">
<a href="https://www.cybrosys.com/odoo/industries/best-trading-erp/" target="_blank">
<div style="width:30%; float:left;">
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<img src="https://www.cybrosys.com/images/odoo-index-industry-1.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/>
</div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:600;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;">
Trading
</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>
</a>
</div>
<div style="flex-basis: 32%;padding-top: 20px;">
<a href="https://www.cybrosys.com/odoo/industries/manufacturing-erp-software/" target="_blank">
<div style="width:30%; float:left;">
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<img src="https://www.cybrosys.com/images/odoo-index-industry-2.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/>
</div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:600;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;">
Manufacturing
</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>
</a>
</div>
<div style="flex-basis: 32%;padding-top: 20px;">
<a href="https://www.cybrosys.com/odoo/industries/restaurant-management/" target="_blank">
<div style="width:30%; float:left;">
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<img src="https://www.cybrosys.com/images/odoo-index-industry-3.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/>
</div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:600;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;">
Restaurant
</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>
</a>
</div>
<div style="flex-basis: 32%;padding-top: 20px;">
<a href="https://www.cybrosys.com/odoo/industries/pos/" target="_blank">
<div style="width:30%; float:left;">
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<img src="https://www.cybrosys.com/images/odoo-index-industry-4.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/>
</div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:600;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;">
POS
</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>
</a>
</div>
<div style="flex-basis: 32%;padding-top: 20px;">
<a href="https://www.cybrosys.com/odoo/industries/ecommerce-website/" target="_blank">
<div style="width:30%; float:left;">
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<img src="https://www.cybrosys.com/images/odoo-index-industry-5.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/>
</div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:600;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;">
E-commerce & Website
</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>
</a>
</div>
<div style="flex-basis: 32%;padding-top: 20px;">
<a href="https://www.cybrosys.com/odoo/industries/hotel-management-erp/" target="_blank">
<div style="width:30%; float:left;">
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<img src="https://www.cybrosys.com/images/odoo-index-industry-6.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/>
</div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:600;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;">
Hotel Management
</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>
</a>
</div>
<div style="flex-basis: 32%;padding-top: 20px;">
<a href="https://www.cybrosys.com/odoo/industries/education-erp-software/" target="_blank">
<div style="width:30%; float:left;">
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<img src="https://www.cybrosys.com/images/odoo-index-industry-7.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/>
</div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:600;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;">
Education
</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>
</a>
</div>
<div style="flex-basis: 32%;padding-top: 20px;">
<a href="https://www.cybrosys.com/odoo/industries/service-management/" target="_blank">
<div style="width:30%; float:left;">
<div style="width:75px;height:75px;background:#CE2D48; border-radius:100%;float: left;text-align: left;">
<img src="https://www.cybrosys.com/images/odoo-index-industry-8.png" alt="Odoo Industry" style=" border-radius: 100%;width:100%;"/>
</div>
</div>
<div style="width:70%;float:left;">
<h3 class="oe_slogan" style=" text-align: left;font-size: 14px;font-weight:600;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;">
Service Management
</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>
</a>
</div>
</div>
</div>
</section>
<!-----------------END Industries------------------------->
<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: 14px;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"><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: 14px;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: 14px;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/odoo-customization-and-installation/"><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>
<!-----------------Footer End------------------------->

BIN
stock_exipry_reprt/static/description/report.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

BIN
stock_exipry_reprt/static/description/report_days.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

BIN
stock_exipry_reprt/static/description/settings.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

35
stock_exipry_reprt/views/stock_expiry_views.xml

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="stock_wizard_reportz" model="ir.ui.view">
<field name="name">Stock Report</field>
<field name="model">stockz.expiry</field>
<field name="arch" type="xml">
<form string="Stock Report">
<group col="4" colspan="4">
<field name="report_dayz"/>
<field name="check"/>
<field name="int_location" attrs="{'invisible': [('check', '=', False)]}"/>
</group>
<footer>
<button name="print_report" type="object" string="Print" class="oe_highlight"/>
<button string="Cancel" class="btn btn-default" special="cancel"/>
</footer>
</form>
</field>
</record>
<record id="action_stock_wizardz" model="ir.actions.act_window">
<field name="name">Stock Report</field>
<field name="res_model">stockz.expiry</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
<menuitem id="menu_stock_reprt"
name="Stock Report"
parent="stock.menu_warehouse_report"
action="action_stock_wizardz"
groups="stock.group_production_lot"/>
</odoo>
Loading…
Cancel
Save