Skip to Content
Меню
Вам необхідно зареєструватися, щоб взаємодіяти зі спільнотою.
Це запитання позначене
1 Відповісти
3168 Переглядів

Is it possible to make a daily cron job for the Inventory->Inventory Report->Inventory at Date action. The idea is to have that report run daily, save it to disk as a CSV and append to it each day. That way I can create a history of the inventory on hand for each day. I can handle the writing and saving the CSV, I just cant seem to figure out what the Inventory at Date action is running and how to be able to call it from a cron job

Аватар
Відмінити
Найкраща відповідь

Yes, it is possible to schedule a daily cron job to run the "Inventory at Date" action in Odoo and save the report as a CSV file.

you can follow these steps:

  1. Identify the Action: Find the Action associated with the "Inventory at Date" report. You can do this by navigating to the menu item manually and inspecting the action associated with it. Make a note of the action's XML ID.

  2. Create a Python Method: Create a Python method that will be called by the cron job. This method should invoke the action identified in the previous step.

from odoo import models, api

class InventoryReport(models.Model):
_name = 'inventory.report'

@api.model
def generate_inventory_report(self):
action = self.env.ref('module_name.action_id')
# Replace 'module_name.action_id' with the actual XML ID of the action
action.run()

Define the Cron Job: Define a cron job that will execute the Python method on a daily basis. You can do this in the data section of your module's manifest file (__manifest__.py)

depends': ['base'], 

'data': [ 'data/cron_data.xml', ],

Create the Cron Data File: Create a data file (cron_data.xml) in the data directory of your module. This file will define the cron job.

odoo>
data>
record id="ir_cron_generate_inventory_report" model="ir.cron">
field name="name">Generate Inventory Report
field name="model_id" ref="model_inventory_report"/>
field name="state">code
field name="code">model.generate_inventory_report()
field name="interval_number">1
field name="interval_type">days
field name="numbercall">-1
field name="doall" eval="False"/>
field name="active" eval="True"/>
/record>
/data>
/odoo>

  1. Note: Replace model_inventory_report with the actual XML ID of the model where you defined the generate_inventory_report method.

  2. Update the XML ID: Replace 'module_name.action_id' in the Python method with the actual XML ID of the action associated with the "Inventory at Date" report.

  3. Restart the Odoo Server: After making these changes, restart the Odoo server to load the new cron job.


Аватар
Відмінити
Автор

Thank you for the answer, it seems like the Inventory at Date button just returns a act_window action and has no run method to it. You can see it here https://github.com/odoo/odoo/blob/15.0/addons/stock/wizard/stock_quantity_history.py

I'm confused as to how the on hand quantities are recalculated based on a simple date context

Related Posts Відповіді Переглядів Дія
1
квіт. 25
3742
0
лют. 24
1719
2
груд. 23
2819
1
лист. 23
1949
1
жовт. 23
7231