$logger = new logger('cron', 'elements-sourcing');
//$logger->write('SIMULATION');
//Include Required Classes (and create object when necessary)
use_class('products_minierp');
use_class('element');
use_class('elements_stock');
use_class('elements_preorder');
use_class('elements_order');
$class_es = new elements_stock();
$class_pm = new products_minierp();
//Grab all required Settings
//Send email notification if missing quantity is > 0.2 * target stock
$tolerance_email_notification = 0.2;
$bgst = $class_pm->retrieveBestGoodSettings();
//REMOVE ANY OPEN EXISTING SUGGESTIONS BEFORE MAKING NEW ONES
elements_preorder::clearAllExistingOpenedSuggestion();
$logger->write('Existing Opened Suggestion is cleared!');
elements_preorder::clearPreordersTemp();
$logger->write('Existing Preorders temporary data is cleared!');
//Grab all existing elements, let's grab the data per element as an object
$r = tep_db_query("SELECT e.elements_id FROM element e " . "WHERE e.is_finalized='1' ORDER BY elements_id");
$elements = array();
while ($row = tep_db_fetch_array($r)) {
    $elements[] = $row['elements_id'];
}
$total_elements = count($elements);
$logger->write("Found {$total_elements} element(s) to process");
//COLLECTIVE QUERY
//Grab all data that can be retrieved collectively for the whole elements
$elements_stock = $class_es->retrieveAll(WAREHOUSE_ID_ELEMENTS);
$elements_open_po = elements_order::openOrdersQuantityAllElements();