mirror of
https://github.com/OCA/stock-logistics-reporting.git
synced 2025-02-16 17:13:21 +02:00
1
setup/stock_analysis/odoo/addons/stock_analysis
Symbolic link
1
setup/stock_analysis/odoo/addons/stock_analysis
Symbolic link
@@ -0,0 +1 @@
|
||||
../../../../stock_analysis
|
||||
6
setup/stock_analysis/setup.py
Normal file
6
setup/stock_analysis/setup.py
Normal file
@@ -0,0 +1,6 @@
|
||||
import setuptools
|
||||
|
||||
setuptools.setup(
|
||||
setup_requires=['setuptools-odoo'],
|
||||
odoo_addon=True,
|
||||
)
|
||||
4
stock_analysis/__init__.py
Normal file
4
stock_analysis/__init__.py
Normal file
@@ -0,0 +1,4 @@
|
||||
# © 2016 Lorenzo Battistini - Agile Business Group
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
|
||||
from . import report
|
||||
26
stock_analysis/__manifest__.py
Normal file
26
stock_analysis/__manifest__.py
Normal file
@@ -0,0 +1,26 @@
|
||||
# © 2016 Lorenzo Battistini - Agile Business Group
|
||||
# © 2020 Lorenzo Battistini - TAKOBI
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
{
|
||||
"name": "Stock Analysis",
|
||||
"summary": "Analysis view for stock",
|
||||
"version": "12.0.1.0.0",
|
||||
"development_status": "Beta",
|
||||
"category": "Warehouse",
|
||||
"website": "https://github.com/OCA/stock-logistics-reporting",
|
||||
"author": "Agile Business Group, Odoo Community Association (OCA)",
|
||||
"maintainers": ["eLBati"],
|
||||
"license": "AGPL-3",
|
||||
"application": False,
|
||||
"installable": True,
|
||||
"depends": [
|
||||
"stock",
|
||||
],
|
||||
"data": [
|
||||
'report/stock_analysis_view.xml',
|
||||
'security/ir.model.access.csv',
|
||||
],
|
||||
'images': [
|
||||
'images/demo_analysis.png',
|
||||
],
|
||||
}
|
||||
119
stock_analysis/i18n/it.po
Normal file
119
stock_analysis/i18n/it.po
Normal file
@@ -0,0 +1,119 @@
|
||||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * stock_analysis
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 12.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2020-02-26 09:33+0000\n"
|
||||
"PO-Revision-Date: 2020-02-26 09:33+0000\n"
|
||||
"Last-Translator: <>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: stock_analysis
|
||||
#: model:ir.model.fields,field_description:stock_analysis.field_stock_analysis__categ_id
|
||||
#: model_terms:ir.ui.view,arch_db:stock_analysis.stock_analysis_pivot_search
|
||||
msgid "Category"
|
||||
msgstr "Categoria"
|
||||
|
||||
#. module: stock_analysis
|
||||
#: model:ir.model.fields,field_description:stock_analysis.field_stock_analysis__company_id
|
||||
#: model_terms:ir.ui.view,arch_db:stock_analysis.stock_analysis_pivot_search
|
||||
msgid "Company"
|
||||
msgstr "Azienda"
|
||||
|
||||
#. module: stock_analysis
|
||||
#: model_terms:ir.ui.view,arch_db:stock_analysis.stock_analysis_pivot_search
|
||||
msgid "Consumable products"
|
||||
msgstr "Prodotti consumabili"
|
||||
|
||||
#. module: stock_analysis
|
||||
#: model:ir.model.fields,field_description:stock_analysis.field_stock_analysis__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Nome visualizzato"
|
||||
|
||||
#. module: stock_analysis
|
||||
#: model_terms:ir.ui.view,arch_db:stock_analysis.stock_analysis_pivot_search
|
||||
msgid "Group By"
|
||||
msgstr "Raggruppa per"
|
||||
|
||||
#. module: stock_analysis
|
||||
#: model:ir.model.fields,field_description:stock_analysis.field_stock_analysis__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: stock_analysis
|
||||
#: model:ir.model.fields,field_description:stock_analysis.field_stock_analysis__in_date
|
||||
msgid "Incoming Date"
|
||||
msgstr "Data di Arrivo"
|
||||
|
||||
#. module: stock_analysis
|
||||
#: model_terms:ir.ui.view,arch_db:stock_analysis.stock_analysis_pivot_search
|
||||
msgid "Internal location"
|
||||
msgstr "Ubicazione interna"
|
||||
|
||||
#. module: stock_analysis
|
||||
#: model:ir.model.fields,field_description:stock_analysis.field_stock_analysis____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Ultima modifica il"
|
||||
|
||||
#. module: stock_analysis
|
||||
#: model:ir.model.fields,field_description:stock_analysis.field_stock_analysis__location_id
|
||||
msgid "Location"
|
||||
msgstr "Ubicazione"
|
||||
|
||||
#. module: stock_analysis
|
||||
#: model:ir.model.fields,field_description:stock_analysis.field_stock_analysis__lot_id
|
||||
msgid "Lot"
|
||||
msgstr "Lotto"
|
||||
|
||||
#. module: stock_analysis
|
||||
#: model:ir.model.fields,field_description:stock_analysis.field_stock_analysis__package_id
|
||||
#: model_terms:ir.ui.view,arch_db:stock_analysis.stock_analysis_pivot_search
|
||||
msgid "Package"
|
||||
msgstr "Collo"
|
||||
|
||||
#. module: stock_analysis
|
||||
#: model:ir.model.fields,field_description:stock_analysis.field_stock_analysis__product_id
|
||||
#: model_terms:ir.ui.view,arch_db:stock_analysis.stock_analysis_pivot_search
|
||||
msgid "Product"
|
||||
msgstr "Prodotto"
|
||||
|
||||
#. module: stock_analysis
|
||||
#: model:ir.model.fields,field_description:stock_analysis.field_stock_analysis__quantity
|
||||
msgid "Quantity"
|
||||
msgstr "Quantità"
|
||||
|
||||
#. module: stock_analysis
|
||||
#: model_terms:ir.ui.view,arch_db:stock_analysis.stock_analysis_pivot_search
|
||||
msgid "Serial Number"
|
||||
msgstr "Numero seriale"
|
||||
|
||||
#. module: stock_analysis
|
||||
#: model:ir.actions.act_window,name:stock_analysis.action_stock_analysis_pivot
|
||||
#: model:ir.ui.menu,name:stock_analysis.menu_action_stock_analysis_pivot
|
||||
#: model_terms:ir.ui.view,arch_db:stock_analysis.stock_analysis_pivot
|
||||
#: model_terms:ir.ui.view,arch_db:stock_analysis.stock_analysis_pivot_search
|
||||
msgid "Stock Analysis"
|
||||
msgstr "Analisi magazzino"
|
||||
|
||||
#. module: stock_analysis
|
||||
#: model:ir.model,name:stock_analysis.model_stock_analysis
|
||||
msgid "Stock analysis view"
|
||||
msgstr "Vista analisi magazzino"
|
||||
|
||||
#. module: stock_analysis
|
||||
#: model_terms:ir.ui.view,arch_db:stock_analysis.stock_analysis_pivot_search
|
||||
msgid "Stockable products"
|
||||
msgstr "Prodotti immagazzinabili"
|
||||
|
||||
#. module: stock_analysis
|
||||
#: model_terms:ir.ui.view,arch_db:stock_analysis.stock_analysis_pivot_search
|
||||
msgid "This Year"
|
||||
msgstr "Quest'anno"
|
||||
|
||||
1
stock_analysis/readme/CONTRIBUTORS.rst
Normal file
1
stock_analysis/readme/CONTRIBUTORS.rst
Normal file
@@ -0,0 +1 @@
|
||||
* Lorenzo Battistini (https://takobi.online/)
|
||||
4
stock_analysis/readme/DESCRIPTION.rst
Normal file
4
stock_analysis/readme/DESCRIPTION.rst
Normal file
@@ -0,0 +1,4 @@
|
||||
This module extends the stock reporting to allow better stock per location analysis.
|
||||
By default, it adds a pivot table where lines are products and columns are locations.
|
||||
|
||||
.. figure:: ../static/description/demo_analysis.png
|
||||
4
stock_analysis/report/__init__.py
Normal file
4
stock_analysis/report/__init__.py
Normal file
@@ -0,0 +1,4 @@
|
||||
# © 2016 Lorenzo Battistini - Agile Business Group
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
|
||||
from . import stock_analysis
|
||||
50
stock_analysis/report/stock_analysis.py
Normal file
50
stock_analysis/report/stock_analysis.py
Normal file
@@ -0,0 +1,50 @@
|
||||
# © 2016 Lorenzo Battistini - Agile Business Group
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
|
||||
|
||||
from odoo import tools
|
||||
from odoo import models, fields, api
|
||||
|
||||
|
||||
class StockAnalysis(models.Model):
|
||||
_name = 'stock.analysis'
|
||||
_auto = False
|
||||
_rec_name = 'product_id'
|
||||
_description = 'Stock analysis view'
|
||||
|
||||
product_id = fields.Many2one(
|
||||
'product.product', string='Product', readonly=True)
|
||||
location_id = fields.Many2one(
|
||||
'stock.location', string='Location', readonly=True)
|
||||
quantity = fields.Float(string='Quantity', readonly=True)
|
||||
lot_id = fields.Many2one(
|
||||
'stock.production.lot', string='Lot', readonly=True)
|
||||
package_id = fields.Many2one(
|
||||
'stock.quant.package', string='Package', readonly=True)
|
||||
in_date = fields.Datetime('Incoming Date', readonly=True)
|
||||
categ_id = fields.Many2one(
|
||||
'product.category', string='Category', readonly=True)
|
||||
company_id = fields.Many2one(
|
||||
'res.company', string='Company', readonly=True)
|
||||
|
||||
@api.model_cr
|
||||
def init(self):
|
||||
tools.drop_view_if_exists(self.env.cr, self._table)
|
||||
self.env.cr.execute(
|
||||
"""CREATE or REPLACE VIEW %s as (
|
||||
SELECT
|
||||
quant.id AS id,
|
||||
quant.product_id AS product_id,
|
||||
quant.location_id AS location_id,
|
||||
quant.quantity AS quantity,
|
||||
quant.lot_id AS lot_id,
|
||||
quant.package_id AS package_id,
|
||||
quant.in_date AS in_date,
|
||||
quant.company_id,
|
||||
template.categ_id AS categ_id
|
||||
FROM stock_quant AS quant
|
||||
JOIN product_product prod ON prod.id = quant.product_id
|
||||
JOIN product_template template
|
||||
ON template.id = prod.product_tmpl_id
|
||||
)"""
|
||||
% (self._table)
|
||||
)
|
||||
56
stock_analysis/report/stock_analysis_view.xml
Normal file
56
stock_analysis/report/stock_analysis_view.xml
Normal file
@@ -0,0 +1,56 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
|
||||
<record id="stock_analysis_pivot" model="ir.ui.view">
|
||||
<field name="name">stock.analysis.pivot</field>
|
||||
<field name="model">stock.analysis</field>
|
||||
<field name="arch" type="xml">
|
||||
<pivot string="Stock Analysis" disable_linking="True">
|
||||
<field name="product_id" type="row"/>
|
||||
<field name="location_id" type="col"/>
|
||||
<field name="quantity" type="measure"/>
|
||||
</pivot>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="stock_analysis_pivot_search" model="ir.ui.view">
|
||||
<field name="name">stock.analysis.search</field>
|
||||
<field name="model">stock.analysis</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="Stock Analysis">
|
||||
<field name="product_id"/>
|
||||
<field name="lot_id"/>
|
||||
<field name="package_id"/>
|
||||
<field name="location_id"/>
|
||||
<field name="categ_id"/>
|
||||
<field name="company_id"/>
|
||||
<filter name="internal_location" string="Internal location" domain="[('location_id.usage', '=', 'internal')]"/>
|
||||
<separator/>
|
||||
<filter name="stockable" string="Stockable products" domain="[('product_id.type', '=', 'product')]"/>
|
||||
<filter name="consumable" string="Consumable products" domain="[('product_id.type', '=', 'consu')]"/>
|
||||
<separator/>
|
||||
<filter string="This Year" name="year" domain="[('in_date','<=', time.strftime('%%Y-12-31')),('in_date','>=',time.strftime('%%Y-01-01'))]"/>
|
||||
<group expand="1" string="Group By">
|
||||
<filter string="Category" name="Category" context="{'group_by':'categ_id'}"/>
|
||||
<filter string="Product" name="Product" context="{'group_by':'product_id'}"/>
|
||||
<filter string="Serial Number" name="Lot" context="{'group_by':'lot_id'}"/>
|
||||
<filter string="Package" name="Package" context="{'group_by':'package_id'}"/>
|
||||
<filter string="Company" name="Company" context="{'group_by':'company_id'}"/>
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_stock_analysis_pivot" model="ir.actions.act_window">
|
||||
<field name="name">Stock Analysis</field>
|
||||
<field name="res_model">stock.analysis</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">pivot,graph</field>
|
||||
<field name="search_view_id" ref="stock_analysis_pivot_search"/>
|
||||
<field name="view_id" ref="stock_analysis_pivot"/>
|
||||
<field name="context">{'search_default_internal_location':1}</field>
|
||||
</record>
|
||||
|
||||
<menuitem action="action_stock_analysis_pivot" id="menu_action_stock_analysis_pivot" parent="stock.menu_warehouse_report"/>
|
||||
|
||||
</odoo>
|
||||
2
stock_analysis/security/ir.model.access.csv
Normal file
2
stock_analysis/security/ir.model.access.csv
Normal file
@@ -0,0 +1,2 @@
|
||||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
access_stock_analysis_user,stock_analysis user,model_stock_analysis,stock.group_stock_user,1,0,0,0
|
||||
|
BIN
stock_analysis/static/description/demo_analysis.png
Normal file
BIN
stock_analysis/static/description/demo_analysis.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 71 KiB |
BIN
stock_analysis/static/description/icon.png
Normal file
BIN
stock_analysis/static/description/icon.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.2 KiB |
Reference in New Issue
Block a user