"XXX Jérome: make sure that simulation is generated by checking future stock on product's stock browser. Please add screenshot. Troubleshooting: make sure trade condition is set properly"
]
]
},
},
{
{
...
@@ -77,6 +78,7 @@
...
@@ -77,6 +78,7 @@
"source": [
"source": [
"# Extract order data from database\n",
"# Extract order data from database\n",
"\n",
"\n",
"XXX Jérome: this step should not be needed anymore. No more hand made SQL, just inventory API.\n",
"In order to create a time series of orders we must create the report of the past orders to be used by the method. So we need to create a new Z SQL Method. You must go to the 'custom' folder in 'portal_skins' (`https://<your_instance_url>/portal_skins/custom/manage`), click in 'Add' and then in 'Z SQL Method'. Use 'SaleOrderModule_zGetStock' as SQL Method ID.\n",
"In order to create a time series of orders we must create the report of the past orders to be used by the method. So we need to create a new Z SQL Method. You must go to the 'custom' folder in 'portal_skins' (`https://<your_instance_url>/portal_skins/custom/manage`), click in 'Add' and then in 'Z SQL Method'. Use 'SaleOrderModule_zGetStock' as SQL Method ID.\n",
"\n",
"\n",
"Then you will type the following query:\n",
"Then you will type the following query:\n",
...
@@ -97,6 +99,7 @@
...
@@ -97,6 +99,7 @@
"source": [
"source": [
"# Exporting the sample data as CSV (extension)\n",
"# Exporting the sample data as CSV (extension)\n",
"\n",
"\n",
"Jérome: XXX can you do that in a python script ?\n",
"To export the sample data as CSV you will navigate to `https://<your_instance_url>/portal_components`, click in the 'Action' box and select 'Add Extension Component'. Use 'extension.erp5.InventoryCsv' as ID and 'InventoryCsv' as reference.\n",
"To export the sample data as CSV you will navigate to `https://<your_instance_url>/portal_components`, click in the 'Action' box and select 'Add Extension Component'. Use 'extension.erp5.InventoryCsv' as ID and 'InventoryCsv' as reference.\n",
"\n",
"\n",
"Now you can copy the code below to your extension.\n",
"Now you can copy the code below to your extension.\n",
" XXX Jérome: we should not use getInventoryList without parameters that has no meaning. We should use the API to get the history of movements of a given resource that goes out of a given node \n",
" quantity_list = ([item['date'], item['total_quantity']] for item in self.portal_simulation.getInventoryList()) \n",
" quantity_list = ([item['date'], item['total_quantity']] for item in self.portal_simulation.getInventoryList()) \n",
" \n",
" \n",
" csv_file = StringIO.StringIO()\n",
" csv_file = StringIO.StringIO()\n",
...
@@ -127,6 +132,7 @@
...
@@ -127,6 +132,7 @@
"source": [
"source": [
"# Exporting the sample data as CSV (external method)\n",
"# Exporting the sample data as CSV (external method)\n",
"\n",
"\n",
"Jérome: please read naming conventions and propose a better name.\n",
"Then you will need to create an external method to call your extension and run the export code. Navigate again to the 'custom folder' inside 'portal_skins', click 'Add' and choose 'External Method'. Now choose 'getInventoryCsv' as ID, 'InventoryCsv' as 'Module Name' and 'inventory_csv' as 'Function Name'. Click 'Save changes'."
"Then you will need to create an external method to call your extension and run the export code. Navigate again to the 'custom folder' inside 'portal_skins', click 'Add' and choose 'External Method'. Now choose 'getInventoryCsv' as ID, 'InventoryCsv' as 'Module Name' and 'inventory_csv' as 'Function Name'. Click 'Save changes'."
]
]
},
},
...
@@ -136,6 +142,7 @@
...
@@ -136,6 +142,7 @@
"source": [
"source": [
"# Preparing Jupyter\n",
"# Preparing Jupyter\n",
"\n",
"\n",
"XXX Jérome: this step should be done using slapos and webrunner. \n",
"Now we need to install Jupyter and all the used eggs to process the data localy. Just install the packages using 'pip' as below:\n",
"Now we need to install Jupyter and all the used eggs to process the data localy. Just install the packages using 'pip' as below:\n",
"\n",
"\n",
"```sh\n",
"```sh\n",
...
@@ -186,6 +193,7 @@
...
@@ -186,6 +193,7 @@
"source": [
"source": [
"# Fetch the data and create a pandas.TimeSeries\n",
"# Fetch the data and create a pandas.TimeSeries\n",
"\n",
"\n",
"XXX Jérome: at some point we need to use ERP5 integrated jupyter for that \n",
"Now you will need to call your external method to export the orders as a CSV file, write into an in-memory file and use it to create a `pandas.DataFrame`. This will allow you to process the data taking advantage of pandas and numpy C extensions to achieve a very good performance. See the code below."
"Now you will need to call your external method to export the orders as a CSV file, write into an in-memory file and use it to create a `pandas.DataFrame`. This will allow you to process the data taking advantage of pandas and numpy C extensions to achieve a very good performance. See the code below."
]
]
},
},
...
@@ -220,6 +228,7 @@
...
@@ -220,6 +228,7 @@
],
],
"source": [
"source": [
"# need ssh tunnel to use this url\n",
"# need ssh tunnel to use this url\n",
"# XXX Jérome: do we need ssh tunnel to use this url ?\n",