//include_once("includes/item_scheduler.inc");
include_once("hincludes/lib/php/Boot.class.php");
+include_once("includes/db_order_lines.inc");
+include_once("includes/picking.inc");
+include_once("config.php");
-$page_security = 'SA_ORDERLINEX_EDIT';
+$page_security = 'SA_ORDERLINEX_SCHEDULE';
add_access_extensions();
$_SESSION['page_title'] = _($help_context = "Item schedule");
//---------------------------------------------------------------------------------------------
+div_start('item_schedule');
start_form();
+
start_table(TABLESTYLE_NOBORDER);
start_row();
+if (!isset($_POST['stock_id'])) {
if (isset($_GET['stock_id']))
{
$_POST['stock_id'] = $_GET['stock_id'];
}
+else {
+ $_POST['stock_id'] = get_global_stock_item();
+ }
+}
+
+if (list_updated('stock_id') || in_ajax()) $Ajax->activate('item_schedule') ;
+//else update_queue_quantities() && update_qoh_for_item();
+
//if (!@$_GET['popup'])
- start_form();
+// start_form();
+
-if (!isset($_POST['stock_id']))
- $_POST['stock_id'] = get_global_stock_item();
$stock_id = $_POST['stock_id'];
stock_costable_items_list_cells(_("Item:"), 'stock_id', $stock_id);
+
end_row();
end_table(1);
+if(isset($stock_id)) echo '<input type="hidden" name="last_stock_id" value="'.$stock_id.'">';
-$scheduler = new ItemScheduler($stock_id, 'DEF');
+if(isset($_POST['Update'])) {
+ $Ajax->activate('item_schedule');
+ // Restore the parameters
+ $params = new ScheduleParameters($_SESSION['schedule_parameters']);
+ $params->setMode('update');
+}
+else {
+ $params = in_ajax() && $stock_id == @$_POST['last_stock_id'] ? new ScheduleParameters($_POST) : null;
+ // save parameters form update
+ $_SESSION['schedule_parameters'] = $_POST;
+}
+$scheduler = new ItemScheduler($stock_id, OrderXtraConfig::$default_location, $params);
+$scheduler->action();
-div_start('item_schedule');
start_table(TABLESTYLE);
$th = $scheduler->tableHeader();
$scheduler->generateTable();
end_table();
-div_end();
-submit_center_first('Update', _("Update"), '', 'default', false);
-submit_center_last('Cancel', _("Cancel"), '', 'cancel', false);
+if($scheduler->needsUpdate()) {
+ submit_center_first('Update', _("Update"), '', 'default', false);
+ submit_center_last('Cancel', _("Cancel"), '', 'cancel', false);
+}
end_form();
+div_end();
end_page();
?>
<style type='text/css'>
background: pink;
}
+
tr.location {
+ font-weight: normal;
+ background: #bbb;
+}
+tr.picked {
font-weight: normal;
background: #8f8;
}
tr.late {
background: #fc8;
}
+tr.early {
+ background: #def;
+ color: blue;
+}
tr.soldout {
background: pink;
}
+tr.expired td:nth-child(7) {
+ background: #444;
+ color: white;
+}
+
tr.tDnD_whileDrag {
background: #ccc;
border: 2px solid black;
color: transparent;
background: transparent;
}
+
+span.picked {
+ color: black;
+ font-weight: bold;
+}
+
+tr.partial span.pickable {
+ background: #cfc;
+}
+span.partial {
+ background: transparent;
+}
</style>
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="js/jquery.tablednd.0.8.min.js"></script>
<script text="text/javascript">
- console.log('hello')
- $(document).ready(function() {
- console.log('ready')
- $('#item_schedule table').tableDnD({
- onDragStart: function (table, row) {
- console.log(table)
- console.log(row)}
- ,onDrop: function (table, row) {
- console.log(table)
- console.log(row)}
- })
+ /** add table DnD as behavior **/
+ function onDragStart (table, row) {
+ console.log(table)
+ console.log(row)
+ }
+ function findRowPosition(table, row) {
+ }
+ function addInput(form, name, value) {
+ $(form).append('<input type="hidden" name="'+name+'" value="'+value+'">')
+ }
+ function addInputs(form, name, values) {
+ for(index = 0; index < values.length; index++) {
+ addInput(form, name+'['+index+']', values[index])
+ }
+ }
+ function onDrop(table, row) {
+ var row_ids = $.map(table.tBodies[0].rows, function(r) { return r.id} )
+ var row_id = row.id
+ var form = $(table).closest('form')[0]
+
+ addInput(form, 'row_id', row.id)
+ addInputs(form, 'row_order', row_ids )
+
+ JsHttpRequest.request(this, form);
+
+ }
+
+ function onPick(element) {
+ /* horible hack but it works */
+ /* in the way it call an Ajax request */
+ var row = $(element).closest('tr')[0];
+ var table = $(element).closest('table')[0];
+ onDrop(table, row);
+
+ }
+
+ var inserts = {
+ '#item_schedule table': function (e) {
+ $(e).tableDnD({onDragStart: onDragStart, onDrop: onDrop})
+ }
}
- )
+Behaviour.register(inserts);
</script>