Auftrags-Controller: PriceSources: Preis und Rabatt-Feld readonly, wenn nicht frei
authorBernd Bleßmann <bernd@kivitendo-premium.de>
Mon, 26 Oct 2015 13:08:04 +0000 (14:08 +0100)
committerG. Richardson <information@kivitendo-premium.de>
Mon, 16 Nov 2015 15:15:58 +0000 (16:15 +0100)
templates/webpages/order/tabs/_row.html
templates/webpages/order/tabs/basic_data.html

index 637769b..d8ec4df 100644 (file)
                       class="recalc") %]
     </td>
     <td>
-      [%- SET EDIT_PRICES = 1 %]
-      [%- IF EDIT_PRICES %]
-        [%- L.button_tag("price_chooser_item_row(this)", ITEM.active_price_source.source_description, name = "price_chooser_button") %]
-      [%- END %]
+      [%- L.button_tag("price_chooser_item_row(this)", ITEM.active_price_source.source_description, name = "price_chooser_button") %]
     </td>
     <td>
       [%- L.hidden_tag("order.orderitems[].active_price_source", ITEM.active_price_source.source) %]
-      [%- IF EDIT_PRICES %]
+      [%- SET EDIT_PRICE = (AUTH.assert('edit_prices', 1) && ITEM.active_price_source.source == '') %]
+      <div name="editable_price" [%- IF !EDIT_PRICE %]style="display:none"[%- END %]>
         [%- L.input_tag("order.orderitems[].sellprice_as_number",
                         ITEM.sellprice_as_number,
                         size = 10,
                         style='text-align:right',
+                        disabled=(EDIT_PRICE? '' : 1),
                         class="recalc") %]
-      [%- ELSE %]
-        [%- ITEM.sellprice_as_number %]
-        [%- L.hidden_tag("order.orderitems[].sellprice_as_number", ITEM.sellprice_as_number) %]
-      [%- END %]
+      </div>
+      <div name="not_editable_price" [%- IF EDIT_PRICE %]style="display:none"[%- END %]>
+        [%- L.div_tag(ITEM.sellprice_as_number, name="sellprice_text", style='text-align:right') %]
+        [%- L.hidden_tag("order.orderitems[].sellprice_as_number",
+                         ITEM.sellprice_as_number,
+                         disabled=(EDIT_PRICE? 1 : '')) %]
+      </div>
     </td>
     <td>
       [%- L.hidden_tag("order.orderitems[].active_discount_source", ITEM.active_discount_source.source) %]
-      [%- L.input_tag("order.orderitems[].discount_as_percent",
-                      ITEM.discount_as_percent,
-                      size = 5,
-                      style='text-align:right',
-                      class="recalc") %]
+      [%- SET EDIT_DISCOUNT = (AUTH.assert('edit_prices', 1) && ITEM.active_discount_source.source == '') %]
+      <div name="editable_discount" [%- IF !EDIT_DISCOUNT %]style="display:none"[%- END %]>
+        [%- L.input_tag("order.orderitems[].discount_as_percent",
+                        ITEM.discount_as_percent,
+                        size = 5,
+                        style='text-align:right',
+                        disabled=(EDIT_DISCOUNT? '' : 1),
+                        class="recalc") %]
+      </div>
+      <div name="not_editable_discount" [%- IF EDIT_DISCOUNT %]style="display:none"[%- END %]>
+        [%- L.div_tag(ITEM.discount_as_percent, name="discount_text", style='text-align:right') %]
+        [%- L.hidden_tag("order.orderitems[].discount_as_percent",
+                         ITEM.discount_as_percent,
+                         disabled=(EDIT_DISCOUNT? 1 : '')) %]
+      </div>
     </td>
     <td align="right">
       [%- L.div_tag(LxERP.format_amount(ITEM.linetotal, 2, 0), name="linetotal") %]
index 613c8b3..c67ed37 100644 (file)
@@ -283,26 +283,69 @@ function price_chooser_item_row(clicked) {
 function update_price_source(item_id, source, descr, price_str) {
   var row = $('#item_' + item_id).parents("tbody").first();
   var source_elt = $(row).find('[name="order.orderitems[].active_price_source"]');
-  var price_elt  = $(row).find('[name="order.orderitems[].sellprice_as_number"]');
   var button_elt = $(row).find('[name="price_chooser_button"]');
 
   button_elt.val(descr);
   source_elt.val(source);
-  if (price_str) price_elt.val(price_str);
 
-  recalc_amounts_and_taxes();
+  var editable_div_elt = $(row).find('[name="editable_price"]');
+  var not_editable_div_elt = $(row).find('[name="not_editable_price"]');
+  if ([%- AUTH.assert('edit_prices', 1) %] == 1 && source == '') {
+    // editable
+    $(editable_div_elt).show();
+    $(not_editable_div_elt).hide();
+    $(editable_div_elt).find(':input').prop("disabled", false);
+    $(not_editable_div_elt).find(':input').prop("disabled", true);
+  } else {
+    // not editable
+    $(editable_div_elt).hide();
+    $(not_editable_div_elt).show();
+    $(editable_div_elt).find(':input').prop("disabled", true);
+    $(not_editable_div_elt).find(':input').prop("disabled", false);
+  }
+
+  if (price_str) {
+    var price_elt = $(row).find('[name="order.orderitems[].sellprice_as_number"]');
+    var html_elt  = $(row).find('[name="sellprice_text"]');
+    price_elt.val(price_str);
+    html_elt.html(price_str);
+    recalc_amounts_and_taxes();
+  }
+
   kivi.io.close_dialog();
 }
 
 function update_discount_source(item_id, source, discount_str) {
   var row = $('#item_' + item_id).parents("tbody").first();
-  var source_elt   = $(row).find('[name="order.orderitems[].active_discount_source"]');
-  var discount_elt = $(row).find('[name="order.orderitems[].discount_as_percent"]');
+  var source_elt = $(row).find('[name="order.orderitems[].active_discount_source"]');
 
   source_elt.val(source);
-  if (discount_str) discount_elt.val(discount_str);
 
-  recalc_amounts_and_taxes();
+  var editable_div_elt = $(row).find('[name="editable_discount"]');
+  var not_editable_div_elt = $(row).find('[name="not_editable_discount"]');
+  if ([%- AUTH.assert('edit_prices', 1) %] == 1 && source == '') {
+    // editable
+    $(editable_div_elt).show();
+    $(not_editable_div_elt).hide();
+    $(editable_div_elt).find(':input').prop("disabled", false);
+    $(not_editable_div_elt).find(':input').prop("disabled", true);
+  } else {
+    // not editable
+    $(editable_div_elt).hide();
+    $(not_editable_div_elt).show();
+    $(editable_div_elt).find(':input').prop("disabled", true);
+    $(not_editable_div_elt).find(':input').prop("disabled", false);
+  }
+
+  if (discount_str) {
+    var discount_elt = $(row).find('[name="order.orderitems[].discount_as_percent"]');
+    var html_elt     = $(row).find('[name="discount_text"]');
+    discount_elt.val(discount_str);
+    html_elt.html(discount_str);
+    recalc_amounts_and_taxes();
+  }
+
+  kivi.io.close_dialog();
 }
 
 function recalc_amounts_and_taxes() {