Author: |
Therp BV,Odoo Community Association (OCA) |
License: |
AGPL-3 |
Branch: |
9.0-stock_reorder_forecast |
Repository: |
hbrunn/stock-logistics-warehouse |
Dependencies: |
base,
decimal_precision,
product,
purchase,
sale,
and
stock |
Languages: |
Python (1018, 67.2%),
XML (392, 25.9%),
and
reStructuredText (106, 7.0%) |
Other repositories: |
NL66278/stock-logistics-warehouse,
daramousk/stock-logistics-warehouse,
and
gfcapalbo/stock-logistics-warehouse |
<a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.svg">
</a>
<a name="stock-reorder-forecast"></a>
<h2>Stock Reorder Forecast</h2>
<p>Allows to predict date when stock levels will reach minimum by
analizying sales volume in a period and therefore to trigger RFQ's ahead
of time</p>
<p>Extends stock to calculate period turnover and ultimate date of order
(the date where we reach minimum stock)
This module allows to create RFQ's by checking the product form and
examining the ultimate purchase value.</p>
<p>The ultimate purchase value is the date we forecast this product will not be
available. It is obtained by calculating the average sales rate of this
product and predicting at this rate how long will it take for the
stock to reach 0 at this speed.</p>
<p>The period upon wich we calculate this average rate be personalized, default is:</p>
<p>TURNOVER_PERIOD = Amount of time to calculate average (default 365)
TURNOVER_AVERAGE = Average sale rate in that period.
Ultimate Purchase = Day in the future where stock should finish at current
rate.</p>
<dl class="docutils">
<dt>All values are (period, average) are kept on (in order of importance):</dt>
<dd><ul class="first last simple">
<li>Supplier Info</li>
<li>Partner</li>
<li>Category</li>
</ul>
</dd>
</dl>
<p>if the values are not set on supplier info it will default to values on
partner, if not set on supplier will default to category, if not set anywhere
will default to Hardcoded values (ir.config.parameters period=365 days).</p>
<p>THe user can also trigger orders from the supplier form. There is a wizard
that would allow to order:</p>
<blockquote>
<ul class="simple">
<li>All the products provided by this partner (in required amounts
considering turnover_average, current stock and maximum_stock)</li>
<li>All the products provided by this partner as primary supplier</li>
</ul>
<p>This wizard also provides an overview of existing RFQ lines</p>
</blockquote>
<p>The turnover average and the ultimate purchase derived by it are calculated in
bulk by a daily cron job.</p>
<a name="configuration"></a>
<h3>Configuration</h3>
<p>To configure this module, you need to:
set turnover_period stock_period_max , stock_period_min on:</p>
<blockquote>
<ul class="simple">
<li>Product</li>
<li>Supplier Infos</li>
<li>Partners</li>
<li>Categories</li>
<li>Default value</li>
</ul>
</blockquote>
<p>These values will be taken in this order of priority (highest to lowest)
if the values in product, Supplier Info, Partners, Categories are all not
set it will revert to Default Value, defined in installation data is a
company parameter.</p>
<p>Also set the frequency of turnover and purchase date calculation by setting
in Automatic Actions the execution of cron job "Purchase Proposal Refresh"
(by default set at once a day).</p>
<a name="usage"></a>
<h3>Usage</h3>
<p>Set on product and/or partner(supplier) and/or product category the values
of turnover period.</p>
<p>Make sure the cron job "Purchase Proposal Refresh" is activated, launch it
manually the first time in order to have all "ultimate dates" for products
calculated. Set the cron job time/date at a convenient time and frequency, this
job will refresh all stats used for forcasting ultimate purchase date. If you
have a high volume of sales and do frequent resupplies it is advisable to
launch it multiple times a day.</p>
<p>View products to see all products with an ultimate order date, for that
interface you can generate a RFQ to desired date.</p>
<p>You can also view from the partner/supplier form all products ordered by this
partner.</p>
<ol class="arabic simple">
<li>Go to ...</li>
</ol>
<a class="reference external image-reference" href="https://runbot.odoo-community.org/runbot/{repo_id}/{branch}"><img alt="Try me on Runbot" src="https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas" /></a>
<a name="known-issues-roadmap"></a>
<h3>Known issues / Roadmap</h3>
<ul>
<li><p class="first">Does not support Multicompany, calculation of stats will allways work on
cross-company products purchases and pickings. It will only calculate outgoing
moves , not internal moves. So the stats will be representative of all
companies global stats (all sales from all companies/turnover period of
product).</p>
<p>Implementing a full multicompany support will require additional support
datastrutures.</p>
<p>from a functional stand point, the global stats may be still usefull in some
multicompany configurations, not all.</p>
</li>
<li><p class="first">Another useful feature would be to trigger RFQ's automatically. Currently
the users receive stats and can press a button to make a RFQ based on their
decisions. we could make options to make an automatic RFQ when ultimate
purchase gets up to X days from now.</p>
</li>
</ul>
<a name="bug-tracker"></a>
<h3>Bug Tracker</h3>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/{project_repo}/issues">GitHub Issues</a>. In case of trouble, please
check there if your issue has already been reported. If you spotted it first,
help us smashing it by providing a detailed and welcomed feedback.</p>
<a name="images"></a>
<h4>Images</h4>
<ul class="simple">
<li>Odoo Community Association: <a class="reference external" href="https://github.com/OCA/maintainer-tools/blob/master/template/module/static/description/icon.svg">Icon</a>.</li>
</ul>
<a name="contributors"></a>
<h4>Contributors</h4>
<ul class="simple">
<li>Giovanni Francesco Capalbo <<a class="reference external" href="mailto:giovanni@therp.nl">giovanni@therp.nl</a>></li>
<li>Holger Brunn <<a class="reference external" href="mailto:hbrunn@therp.nl">hbrunn@therp.nl</a>></li>
<li>Hans Van Dijk <<a class="reference external" href="mailto:hvd400@gmail.com">hvd400@gmail.com</a>></li>
<li>Ronald Portier <<a class="reference external" href="mailto:rportier@therp.nl">rportier@therp.nl</a>></li>
</ul>
<a name="funders"></a>
<h4>Funders</h4>
<p>The development of this module has been financially supported by:</p>
<ul class="simple">
<li>Therp B.V.</li>
</ul>
<a name="maintainer"></a>
<h4>Maintainer</h4>
<a class="reference external image-reference" href="https://odoo-community.org"><img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" /></a>
<p>This module is maintained by the OCA.</p>
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.</p>
<p>To contribute to this module, please visit <a class="reference external" href="https://odoo-community.org">https://odoo-community.org</a>.</p>
<a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.svg">
</a>