diff --git a/admin-dev/themes/default/css/admin.css b/admin-dev/themes/default/css/admin.css
index 3a67906b8..4bd3e5dab 100644
--- a/admin-dev/themes/default/css/admin.css
+++ b/admin-dev/themes/default/css/admin.css
@@ -19,7 +19,7 @@ fieldset{background-color:#EBEDF4; border:1px solid #CCCED7; color:#585A69; font
legend{background:#EBEDF4;border:1px solid #CCCED7;font-weight:700;margin:0;padding:.2em .5em;text-align:left}
input[type="text"],input[type="password"],input[type="file"],textarea {border:1px solid #ccc; background-color:#fff;}
select { border:1px solid #ccc; font-size: 12px;}
-select[disabled="disabled"], input[disabled="disabled"],textarea[disabled="disabled"] {border: 1px solid #CCCCCC;color: #AAAAAA}
+select[disabled="disabled"], input[disabled="disabled"],textarea[disabled="disabled"], option[disabled="disabled"] {border: 1px solid #CCCCCC;color: #AAAAAA}
.header_module{background:url('../img/header_module.png');padding-left: 0.5em;padding-top: 0.8em;height:20px;color: #812143;border:solid 1px #CCC;}
.double_select select{width:300px;height:160px;}
.double_select a{text-align:center;display:block;border:1px solid #aaa;text-decoration:none;background-color:#fafafa;color:#123456;margin:2px;padding:2px}
diff --git a/admin-dev/themes/default/template/controllers/supply_orders_change_state/form.tpl b/admin-dev/themes/default/template/controllers/supply_orders_change_state/form.tpl
index 0136bff87..384ce0c7d 100644
--- a/admin-dev/themes/default/template/controllers/supply_orders_change_state/form.tpl
+++ b/admin-dev/themes/default/template/controllers/supply_orders_change_state/form.tpl
@@ -25,15 +25,38 @@
*}
{extends file="helper/form/form.tpl"}
-{block name="other_fieldsets"}
+{block name="other_input"}
+{if isset($supply_order) && $supply_order->id > 0 && isset($supply_order_states)}
+
+
+
+
+
+
+
+
+{/if}
+
+{/block}
+
+{block name="other_fieldset"}
{if isset($supply_order_state) && $supply_order_state->editable == false && isset($supply_order)}
diff --git a/classes/stock/SupplyOrderState.php b/classes/stock/SupplyOrderState.php
index 1a6141b1e..f7196d572 100755
--- a/classes/stock/SupplyOrderState.php
+++ b/classes/stock/SupplyOrderState.php
@@ -142,4 +142,30 @@ class SupplyOrderStateCore extends ObjectModel
return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($query);
}
-}
\ No newline at end of file
+
+ /**
+ * Gets the list of supply order states
+ *
+ * @param array $ids Optional Do not include these ids in the result
+ * @param int $id_lang Optional
+ * @return array
+ */
+ public static function getStates($ids = null, $id_lang = null)
+ {
+ if ($id_lang == null)
+ $id_lang = Context::getContext()->language->id;
+
+ if ($ids && !is_array($ids))
+ $ids = array();
+
+ $query = new DbQuery();
+ $query->select('sl.name, s.id_supply_order_state');
+ $query->from('supply_order_state', 's');
+ $query->leftjoin('supply_order_state_lang', 'sl', 's.id_supply_order_state = sl.id_supply_order_state AND sl.id_lang='.(int)$id_lang);
+ if ($ids)
+ $query->where('s.id_supply_order_state NOT IN('.implode(',', array_map('intval', $ids)).')');
+
+ return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($query);
+ }
+
+}
diff --git a/controllers/admin/AdminSupplyOrdersController.php b/controllers/admin/AdminSupplyOrdersController.php
index ced847ae5..0ef7a7656 100644
--- a/controllers/admin/AdminSupplyOrdersController.php
+++ b/controllers/admin/AdminSupplyOrdersController.php
@@ -527,6 +527,25 @@ class AdminSupplyOrdersControllerCore extends AdminController
// given the current state, loads available states
$states = SupplyOrderState::getSupplyOrderStates($supply_order->id_supply_order_state);
+
+ // gets the state that are not allowed
+ $allowed_states = array();
+ foreach ($states as &$state)
+ {
+ $allowed_states[] = $state['id_supply_order_state'];
+ $state['allowed'] = 1;
+ }
+ $not_allowed_states = SupplyOrderState::getStates($allowed_states);
+
+ // generates the final list of states
+ $index = count($allowed_states);
+ foreach ($not_allowed_states as &$not_allowed_state)
+ {
+ $not_allowed_state['allowed'] = 0;
+ $states[$index] = $not_allowed_state;
+ ++$index;
+ }
+
// loads languages
$this->getlanguages();
@@ -536,28 +555,6 @@ class AdminSupplyOrdersControllerCore extends AdminController
'title' => $this->l('Supply Order Status'),
'image' => '../img/admin/cms.gif'
),
- 'input' => array(
- array(
- 'type' => 'hidden',
- 'name' => 'id_supply_order',
- ),
- array(
- 'type' => 'select',
- 'label' => $this->l('Status of the order:'),
- 'name' => 'id_supply_order_state',
- 'required' => false,
- 'options' => array(
- 'query' => $states,
- 'id' => 'id_supply_order_state',
- 'name' => 'name'
- ),
- 'desc' => $this->l('Choose the new status of your order')
- ),
- ),
- 'submit' => array(
- 'title' => $this->l(' Save '),
- 'class' => 'button'
- )
);
$this->displayInformation($this->l('Be careful when changing status. Some of them cannot be changed afterwards. (Canceled, for instance).'));
@@ -573,10 +570,6 @@ class AdminSupplyOrdersControllerCore extends AdminController
$helper->languages = $this->_languages;
$helper->default_form_language = $this->default_form_language;
$helper->allow_employee_form_lang = $this->allow_employee_form_lang;
- $helper->fields_value = array(
- 'id_supply_order_state' => Tools::getValue('id_supplier', ''),
- 'id_supply_order' => $id_supply_order,
- );
//$this->setHelperDisplay($helper);
$helper->override_folder = 'supply_orders_change_state/';
@@ -585,6 +578,7 @@ class AdminSupplyOrdersControllerCore extends AdminController
$helper->tpl_vars['show_change_state_form'] = true;
$helper->tpl_vars['supply_order_state'] = $supply_order_state;
$helper->tpl_vars['supply_order'] = $supply_order;
+ $helper->tpl_vars['supply_order_states'] = $states;
// generates the form to display
$content = $helper->generateForm($this->fields_form);
diff --git a/install-dev/langs/de/data/supply_order_state.xml b/install-dev/langs/de/data/supply_order_state.xml
index cb1ee8eb7..2a4299a17 100644
--- a/install-dev/langs/de/data/supply_order_state.xml
+++ b/install-dev/langs/de/data/supply_order_state.xml
@@ -1,21 +1,21 @@
- Création in progress
+ 1 - Creation in progress
- Order validated
+ 2 - Order validated
- Pending receipt
+ 3 - Pending receipt
- Order received in part
+ 4 - Order received in part
- Order received completely
+ 5 - Order received completely
- order canceled
+ 6 - Order canceled
diff --git a/install-dev/langs/en/data/supply_order_state.xml b/install-dev/langs/en/data/supply_order_state.xml
index fb261942a..2a4299a17 100644
--- a/install-dev/langs/en/data/supply_order_state.xml
+++ b/install-dev/langs/en/data/supply_order_state.xml
@@ -1,21 +1,21 @@
- creation in progress
+ 1 - Creation in progress
- Order validated
+ 2 - Order validated
- Pending receipt
+ 3 - Pending receipt
- Order received in part
+ 4 - Order received in part
- Order received completely
+ 5 - Order received completely
- order canceled
+ 6 - Order canceled
diff --git a/install-dev/langs/es/data/supply_order_state.xml b/install-dev/langs/es/data/supply_order_state.xml
index cb1ee8eb7..2a4299a17 100644
--- a/install-dev/langs/es/data/supply_order_state.xml
+++ b/install-dev/langs/es/data/supply_order_state.xml
@@ -1,21 +1,21 @@
- Création in progress
+ 1 - Creation in progress
- Order validated
+ 2 - Order validated
- Pending receipt
+ 3 - Pending receipt
- Order received in part
+ 4 - Order received in part
- Order received completely
+ 5 - Order received completely
- order canceled
+ 6 - Order canceled
diff --git a/install-dev/langs/fr/data/supply_order_state.xml b/install-dev/langs/fr/data/supply_order_state.xml
index 8ceea5ea0..9448e6dc1 100644
--- a/install-dev/langs/fr/data/supply_order_state.xml
+++ b/install-dev/langs/fr/data/supply_order_state.xml
@@ -1,21 +1,21 @@
- Création en cours
+ 1 - Création en cours
- Commande validée
+ 2 - Commande validée
- Attente de réception
+ 3 - En attente de réception
- Commande réceptionnée partiellement
+ 4 - Commande réceptionnée partiellement
- Commande réceptionnée totalement
+ 5 - Commande réceptionnée totalement
- Commande annulée
+ 6 - Commande annulée
diff --git a/install-dev/langs/it/data/supply_order_state.xml b/install-dev/langs/it/data/supply_order_state.xml
index cb1ee8eb7..1182f8b2d 100644
--- a/install-dev/langs/it/data/supply_order_state.xml
+++ b/install-dev/langs/it/data/supply_order_state.xml
@@ -1,21 +1,21 @@
- Création in progress
+ 1 - Cretion in progress
- Order validated
+ 2 - Order validated
- Pending receipt
+ 3 - Pending receipt
- Order received in part
+ 4 - Order received in part
- Order received completely
+ 5 - Order received completely
- order canceled
+ 6 - Order canceled