diff --git a/product_ageing_report/README.md b/product_ageing_report/README.md new file mode 100644 index 000000000..160e80a25 --- /dev/null +++ b/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 + +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. + diff --git a/product_ageing_report/__init__.py b/product_ageing_report/__init__.py new file mode 100644 index 000000000..55385e86b --- /dev/null +++ b/product_ageing_report/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2018-TODAY Cybrosys Technologies (). +# Author: Sayooj A O () +# +# 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 . +# +################################################################################### + +from . import wizard +from . import report diff --git a/product_ageing_report/__manifest__.py b/product_ageing_report/__manifest__.py new file mode 100644 index 000000000..d3126d789 --- /dev/null +++ b/product_ageing_report/__manifest__.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2018-TODAY Cybrosys Technologies (). +# Author: Sayooj A O () +# +# 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 . +# +################################################################################### +{ + '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, +} diff --git a/product_ageing_report/doc/RELEASE_NOTES.md b/product_ageing_report/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..d57137b82 --- /dev/null +++ b/product_ageing_report/doc/RELEASE_NOTES.md @@ -0,0 +1,4 @@ +## Module + +#### 17.12.2018 +#### Version 11.0.1.0.0 diff --git a/product_ageing_report/report/__init__.py b/product_ageing_report/report/__init__.py new file mode 100644 index 000000000..6762ab978 --- /dev/null +++ b/product_ageing_report/report/__init__.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2018-TODAY Cybrosys Technologies (). +# Author: Sayooj A O () +# +# 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 . +# +################################################################################### + +from . import report_ageing_products diff --git a/product_ageing_report/report/report_ageing_products.py b/product_ageing_report/report/report_ageing_products.py new file mode 100644 index 000000000..376d3869c --- /dev/null +++ b/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 (). +# Author: Sayooj A O () +# +# 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 . +# +################################################################################### + +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 diff --git a/product_ageing_report/report/report_ageing_products.xml b/product_ageing_report/report/report_ageing_products.xml new file mode 100644 index 000000000..9f8625c06 --- /dev/null +++ b/product_ageing_report/report/report_ageing_products.xml @@ -0,0 +1,78 @@ + + + + + + \ No newline at end of file diff --git a/product_ageing_report/security/ir.model.access.csv b/product_ageing_report/security/ir.model.access.csv new file mode 100644 index 000000000..ec8e39de4 --- /dev/null +++ b/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 + diff --git a/product_ageing_report/static/description/1.jpg b/product_ageing_report/static/description/1.jpg new file mode 100644 index 000000000..c7cae211e Binary files /dev/null and b/product_ageing_report/static/description/1.jpg differ diff --git a/product_ageing_report/static/description/ageing-menu.png b/product_ageing_report/static/description/ageing-menu.png new file mode 100644 index 000000000..cc072d55c Binary files /dev/null and b/product_ageing_report/static/description/ageing-menu.png differ diff --git a/product_ageing_report/static/description/ageing-sample.png b/product_ageing_report/static/description/ageing-sample.png new file mode 100644 index 000000000..8d33b9fee Binary files /dev/null and b/product_ageing_report/static/description/ageing-sample.png differ diff --git a/product_ageing_report/static/description/ageing-wiz.png b/product_ageing_report/static/description/ageing-wiz.png new file mode 100644 index 000000000..5c497aae6 Binary files /dev/null and b/product_ageing_report/static/description/ageing-wiz.png differ diff --git a/product_ageing_report/static/description/banner.jpg b/product_ageing_report/static/description/banner.jpg new file mode 100644 index 000000000..92effb57b Binary files /dev/null and b/product_ageing_report/static/description/banner.jpg differ diff --git a/product_ageing_report/static/description/cybro_logo.png b/product_ageing_report/static/description/cybro_logo.png new file mode 100644 index 000000000..bb309114c Binary files /dev/null and b/product_ageing_report/static/description/cybro_logo.png differ diff --git a/product_ageing_report/static/description/icon.png b/product_ageing_report/static/description/icon.png new file mode 100644 index 000000000..cd3a2abeb Binary files /dev/null and b/product_ageing_report/static/description/icon.png differ diff --git a/product_ageing_report/static/description/index.html b/product_ageing_report/static/description/index.html new file mode 100644 index 000000000..16fa0d19d --- /dev/null +++ b/product_ageing_report/static/description/index.html @@ -0,0 +1,114 @@ +
+
+

Stock Ageing Analysis

+

..Ageing Analysis for Products..

+

Cybrosys Technologies

+
+
+

Features:

+
+ Ageing analysis for products filtered by location.
+ Ageing analysis for products filtered by product category.
+ Ageing analysis for products filtered by date.
+ Ageing analysis for products with customizable intervals.
+
+
+
+ +
+
+
+

Overview

+

+ This module adds a new feature, 'Stock Ageing Analysis' to Odoo. We can perform the analysis + filtered by location, product category, date, etc. +

+
+
+
+ +
+
+

Menu

+
+
+ +
+
+


+
+
+

+ A new menu, 'Stock Ageing Analysis' is added under Inventory -> Reports for performing + this analysis. Clicking on this menu will open a new wizard. +

+

+
+
+
+ +
+
+

Ageing Analysis Wizard

+
+
+ +
+
+


+
+
+

+ 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. +

+

+ 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. +

+
+
+
+
+
+
+

Sample Report

+
+

+ After filling the required details, click on the 'Print' button. +

+

+
+
+ +
+
+
+
+
+

Need Any Help?

+ +
\ No newline at end of file diff --git a/product_ageing_report/wizard/__init__.py b/product_ageing_report/wizard/__init__.py new file mode 100644 index 000000000..7a71b49b7 --- /dev/null +++ b/product_ageing_report/wizard/__init__.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2018-TODAY Cybrosys Technologies (). +# Author: Sayooj A O () +# +# 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 . +# +################################################################################### + +from . import product_ageing + diff --git a/product_ageing_report/wizard/product_ageing.py b/product_ageing_report/wizard/product_ageing.py new file mode 100644 index 000000000..bf2f05cd1 --- /dev/null +++ b/product_ageing_report/wizard/product_ageing.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2018-TODAY Cybrosys Technologies (). +# Author: Sayooj A O () +# +# 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 . +# +################################################################################### + +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) + + diff --git a/product_ageing_report/wizard/product_ageing.xml b/product_ageing_report/wizard/product_ageing.xml new file mode 100644 index 000000000..7f371f0e9 --- /dev/null +++ b/product_ageing_report/wizard/product_ageing.xml @@ -0,0 +1,46 @@ + + + + + Ageing Analysis Wizard + product.ageing + +
+ + + + + + + + + + + + +
+
+
+
+
+ + + Stock Ageing Analysis + product.ageing + ir.actions.act_window + form + form + + new + + + + +
+
+ + + diff --git a/stock_exipry_reprt/README.md b/stock_exipry_reprt/README.md new file mode 100644 index 000000000..e565ffc38 --- /dev/null +++ b/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 + +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. + diff --git a/stock_exipry_reprt/__init__.py b/stock_exipry_reprt/__init__.py new file mode 100644 index 000000000..7db66946c --- /dev/null +++ b/stock_exipry_reprt/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- +from . import models +from . import report diff --git a/stock_exipry_reprt/__manifest__.py b/stock_exipry_reprt/__manifest__.py new file mode 100644 index 000000000..6291a931b --- /dev/null +++ b/stock_exipry_reprt/__manifest__.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- + +############################################################################## +# +# Cybrosys Technologies Pvt. Ltd. +# Copyright (C) 2018-TODAY Cybrosys Technologies (). +# Author: Sayooj A O () +# +# 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 . +# +################################################################################### +{ + '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', +} diff --git a/stock_exipry_reprt/doc/RELEASE_NOTES.md b/stock_exipry_reprt/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..8b1956f25 --- /dev/null +++ b/stock_exipry_reprt/doc/RELEASE_NOTES.md @@ -0,0 +1,4 @@ +## Module + +#### 17.12.2018 +#### Version 11.0.1.0.0 diff --git a/stock_exipry_reprt/models/__init__.py b/stock_exipry_reprt/models/__init__.py new file mode 100644 index 000000000..a2096dac6 --- /dev/null +++ b/stock_exipry_reprt/models/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- +from . import stock_expiry diff --git a/stock_exipry_reprt/models/stock_expiry.py b/stock_exipry_reprt/models/stock_expiry.py new file mode 100644 index 000000000..6e7810cb2 --- /dev/null +++ b/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) diff --git a/stock_exipry_reprt/report/__init__.py b/stock_exipry_reprt/report/__init__.py new file mode 100644 index 000000000..1d958bf16 --- /dev/null +++ b/stock_exipry_reprt/report/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- +from . import stock_expiry_report diff --git a/stock_exipry_reprt/report/stock_expiry_report.py b/stock_exipry_reprt/report/stock_expiry_report.py new file mode 100644 index 000000000..3c40459c3 --- /dev/null +++ b/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, + } diff --git a/stock_exipry_reprt/report/stock_expiry_report.xml b/stock_exipry_reprt/report/stock_expiry_report.xml new file mode 100644 index 000000000..69eee21e2 --- /dev/null +++ b/stock_exipry_reprt/report/stock_expiry_report.xml @@ -0,0 +1,9 @@ + + + + diff --git a/stock_exipry_reprt/report/stock_report_template.xml b/stock_exipry_reprt/report/stock_report_template.xml new file mode 100644 index 000000000..ed218aa93 --- /dev/null +++ b/stock_exipry_reprt/report/stock_report_template.xml @@ -0,0 +1,38 @@ + + + + \ No newline at end of file diff --git a/stock_exipry_reprt/security/ir.model.access.csv b/stock_exipry_reprt/security/ir.model.access.csv new file mode 100644 index 000000000..06c951e9f --- /dev/null +++ b/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 \ No newline at end of file diff --git a/stock_exipry_reprt/static/description/1.jpg b/stock_exipry_reprt/static/description/1.jpg new file mode 100644 index 000000000..c7cae211e Binary files /dev/null and b/stock_exipry_reprt/static/description/1.jpg differ diff --git a/stock_exipry_reprt/static/description/banner.png b/stock_exipry_reprt/static/description/banner.png new file mode 100644 index 000000000..f5af61262 Binary files /dev/null and b/stock_exipry_reprt/static/description/banner.png differ diff --git a/stock_exipry_reprt/static/description/icon.png b/stock_exipry_reprt/static/description/icon.png new file mode 100644 index 000000000..0327e4a63 Binary files /dev/null and b/stock_exipry_reprt/static/description/icon.png differ diff --git a/stock_exipry_reprt/static/description/index.html b/stock_exipry_reprt/static/description/index.html new file mode 100644 index 000000000..3dc35b4df --- /dev/null +++ b/stock_exipry_reprt/static/description/index.html @@ -0,0 +1,361 @@ + +
+
+ + +

+ Stock Expiry Report +

+ + +

+ 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. +

+ + +
+ Cybrosys Technologies +
+ +
+
+ + + + +
+ +
+

+ Overview +

+

+ 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. +

+
+ + +
+

+ Configuration +

+

+ We have to enable 'Lots and Serial Numbers' and 'Expiration Date' from the settings.No other configurations are required. +

+
+ +
+ +
+ +
+

+ Features +

+

+ + Provides report of the products which will expire within the mentioned date. +

+

+ + Provides Location wise Report. +

+ + Expiry Report based on specific locations also included. +

+
+ +
+ +
+ +
+

+ Screenshots +

+ +

+ + For the report Purpose We have to enable 'Lots and Serial Numbers' and 'Expiration Date' from the settings. +

+
+ +
+ + +

+ + Here the field Generate Report For(days) specifies the number of days the we want to generate the report. +

+
+ +
+ +

+ + Now the report is generated based on the conditions that we provided. +

+
+ +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + +
+ +
+ +
+ +
+ + diff --git a/stock_exipry_reprt/static/description/report.png b/stock_exipry_reprt/static/description/report.png new file mode 100644 index 000000000..4af8d75b5 Binary files /dev/null and b/stock_exipry_reprt/static/description/report.png differ diff --git a/stock_exipry_reprt/static/description/report_days.png b/stock_exipry_reprt/static/description/report_days.png new file mode 100644 index 000000000..e39ed2998 Binary files /dev/null and b/stock_exipry_reprt/static/description/report_days.png differ diff --git a/stock_exipry_reprt/static/description/settings.png b/stock_exipry_reprt/static/description/settings.png new file mode 100644 index 000000000..ae432a6e8 Binary files /dev/null and b/stock_exipry_reprt/static/description/settings.png differ diff --git a/stock_exipry_reprt/views/stock_expiry_views.xml b/stock_exipry_reprt/views/stock_expiry_views.xml new file mode 100644 index 000000000..1e5fa4121 --- /dev/null +++ b/stock_exipry_reprt/views/stock_expiry_views.xml @@ -0,0 +1,35 @@ + + + + + Stock Report + stockz.expiry + +
+ + + + + +
+
+
+
+
+ + + Stock Report + stockz.expiry + form + form + new + + + +
\ No newline at end of file