Revision 2e19b5c0
Von Tamino Steinert vor etwa 1 Jahr hinzugefügt
| SL/Controller/Part.pm | ||
|---|---|---|
|     $select_tag_options{empty_title} = t8("Select Variant Property First");
 | ||
|   }
 | ||
|  | ||
|   foreach my $variant (@{$self->part->variants}) {
 | ||
|     my $select_tag_name = "add_variant_property_value_" . $variant->id;
 | ||
|     my $new_select_tag = select_tag(
 | ||
|       $select_tag_name, \@options,
 | ||
|       %select_tag_options
 | ||
|     );
 | ||
|     $self->js->replaceWith("#$select_tag_name", $new_select_tag);
 | ||
|   }
 | ||
|   my $new_select_tag = select_tag(
 | ||
|     "variants[].add_variant_property_value", \@options,
 | ||
|     %select_tag_options
 | ||
|   );
 | ||
|   $self->js->replaceWith('[name^="variants[].add_variant_property_value"]', $new_select_tag);
 | ||
|  | ||
|   my $new_select_tag_multible = select_tag(
 | ||
|     "add_variant_property_value_for_selected_variants", \@options,
 | ||
|     %select_tag_options
 | ||
|   );
 | ||
|   $self->js->replaceWith("#add_variant_property_value_for_selected_variants", $new_select_tag_multible);
 | ||
|  | ||
|   $self->js->render();
 | ||
| }
 | ||
| ... | ... | |
|  | ||
|   my $variant_property_id = $::form->{add_variant_property};
 | ||
|   die t8("Please select a variant property") unless ($variant_property_id);
 | ||
|   my %variant_id_to_values = map {$_->{id} => $_} @{$::form->{variants}};
 | ||
|   foreach my $variant (@{$self->part->variants}) {
 | ||
|     die t8("Please select a new variant property value for all variants")
 | ||
|       unless $::form->{"add_variant_property_value_" . $variant->id};
 | ||
|       unless $variant_id_to_values{$variant->id}->{"add_variant_property_value"};
 | ||
|   }
 | ||
|  | ||
|   SL::DB->client->with_transaction(sub {
 | ||
| ... | ... | |
|     foreach my $variant (@{$self->part->variants}) {
 | ||
|       SL::DB::VariantPropertyValuePart->new(
 | ||
|         part_id                   => $variant->id,
 | ||
|         variant_property_value_id => $::form->{"add_variant_property_value_" . $variant->id},
 | ||
|         variant_property_value_id => $variant_id_to_values{$variant->id}->{"add_variant_property_value"},
 | ||
|       )->save;
 | ||
|     }
 | ||
|     1;
 | ||
| js/kivi.Part.js | ||
|---|---|---|
|     $(new_rows).appendTo($('#parent_variant_table'));
 | ||
|   };
 | ||
|  | ||
|   ns.get_selected_variants = function() {
 | ||
|     let selected_rows = [];
 | ||
|     $('[name^="variant_multi_id_"]').each( function() {
 | ||
|       if (this.checked) {
 | ||
|         selected_rows.push($(this).parents("tr").first());
 | ||
|       }
 | ||
|     });
 | ||
|     return selected_rows;
 | ||
|   }
 | ||
|  | ||
|   ns.variant_rows_toggle_selected = function() {
 | ||
|     $('[name^="variant_multi_id_"]').each( function() {
 | ||
|       this.checked = !this.checked;
 | ||
|     });
 | ||
|   }
 | ||
|  | ||
|   ns.set_selected_variants_to_value = function(value_name) {
 | ||
|     let value = $('[name="' + value_name + '_for_selected_variants"]').val();
 | ||
|     let selected_rows = ns.get_selected_variants();
 | ||
|     selected_rows.forEach(function(row) {
 | ||
|       $(row).find(
 | ||
|         '[name="variants[].' + value_name  + '"]'
 | ||
|       ).val(
 | ||
|         value
 | ||
|       );
 | ||
|     });
 | ||
|   };
 | ||
|  | ||
|   ns.assortment_recalc = function() {
 | ||
|     var data = $('#assortment :input').serializeArray();
 | ||
|     data.push(
 | ||
| ... | ... | |
|  | ||
|     $('#part_warehouse_id').change(kivi.Part.reload_bin_selection);
 | ||
|  | ||
|     $('#variant_select_all').click( function() {
 | ||
|       var checked = this.checked;
 | ||
|       $('[name^="variant_multi_id_"]').each(function() {
 | ||
|         this.checked =  checked;
 | ||
|       });
 | ||
|     });
 | ||
|  | ||
|     ns.init();
 | ||
|   });
 | ||
| });
 | ||
| templates/design40_webpages/part/_parent_variant.html | ||
|---|---|---|
|         [% LxERP.t8("Variants") %]
 | ||
|       </caption>
 | ||
|       <thead>
 | ||
|         <th></th>
 | ||
|       <tr>
 | ||
|         <th>
 | ||
|           [% L.checkbox_tag("varaint_select_all_multi_id",
 | ||
|               checked=0, id='variant_select_all'
 | ||
|               alt=LxERP.t8('Select/Deselect all'), title=LxERP.t8('Select/Deselect all'),
 | ||
|             ) %]
 | ||
|         </th>
 | ||
|         <th id="variant_partnumber_header_id">
 | ||
|           <a href='#' onClick='javascript:kivi.Part.reorder_variants("partnumber")'>
 | ||
|             [% 'Partnumber' | $T8 %]
 | ||
| ... | ... | |
|           )%]
 | ||
|           [% L.button_tag('kivi.Part.add_variant_property();', LxERP.t8("Insert new")) %]
 | ||
|         </th>
 | ||
|       </tr>
 | ||
|       <tr>
 | ||
|         <th class="center">
 | ||
|           [%- L.button_tag('kivi.Part.variant_rows_toggle_selected();', "🔄",
 | ||
|                            title=LxERP.t8("Toggle selection"),
 | ||
|                            alt=LxERP.t8("Toggle selection"),
 | ||
|                            ) %]
 | ||
|         </th>
 | ||
|         <th></th>
 | ||
|         <th>
 | ||
|           [% L.input_tag("description_for_selected_variants", SELF.part.description,
 | ||
|                           class="wi-medium",
 | ||
|                           ) %]
 | ||
|           [%- L.button_tag(
 | ||
|                 'kivi.Part.set_selected_variants_to_value("description")',
 | ||
|                 "↓",
 | ||
|                 alt=LxERP.t8('Apply to selected rows'),
 | ||
|                 title=LxERP.t8('Apply to selected rows'),
 | ||
|           ) %]
 | ||
|         </th>
 | ||
|         <th colspan="[% SELF.part.variant_properties.size + 1 %]"></th>
 | ||
|         <th>
 | ||
|           [% L.select_tag("add_variant_property_value_for_selected_variants", []
 | ||
|                 title_key='displayable_name', value_key='id',
 | ||
|                 with_empty=1, empty_title=LxERP.t8("Select Variant Property First"),
 | ||
|               ) %]
 | ||
|           [%- L.button_tag(
 | ||
|                 'kivi.Part.set_selected_variants_to_value("add_variant_property_value")',
 | ||
|                 "↓",
 | ||
|                 alt=LxERP.t8('Apply to selected rows'),
 | ||
|                 title=LxERP.t8('Apply to selected rows'),
 | ||
|           ) %]
 | ||
|         </th>
 | ||
|       </tr>
 | ||
|       </thead>
 | ||
|       <tbody class="listrow">
 | ||
|         [% FOREACH variant = SELF.part.variants %]
 | ||
|           <tr class="variant_row_entry">
 | ||
|             [% L.hidden_tag("variants[+].id", variant.id, id='variant_' _ variant.id) %]
 | ||
|             [% L.hidden_tag("variants[].position", loop.count) %]
 | ||
|             <td>
 | ||
|               [% L.hidden_tag("variants[+].id", variant.id) %]
 | ||
|               [% L.hidden_tag("variants[].position", loop.count) %]
 | ||
|               [% L.checkbox_tag('variant_multi_id_' _ loop.count, value=variant.id, checked=0) %]
 | ||
|             </td>
 | ||
|             <td>[% variant.presenter.part %]</td>
 | ||
|             <td>[% variant.description | html %]</td>
 | ||
|             <td>
 | ||
|               [% L.input_tag("variants[].description", variant.description, class="wi-medium") %]
 | ||
|             </td>
 | ||
|             <td>[% variant.variant_values | html %]</td>
 | ||
|             [% FOREACH variant_property = SELF.part.variant_properties %]
 | ||
|             <td> [% variant.variant_value(variant_property) %] </td>
 | ||
|             [% END %]
 | ||
|             <td>
 | ||
|               [% L.select_tag("add_variant_property_value_" _ variant.id, []
 | ||
|               [% L.select_tag("variants[].add_variant_property_value", []
 | ||
|                 title_key='displayable_name', value_key='id',
 | ||
|                 with_empty=1, empty_title=LxERP.t8("Select Variant Property First"),
 | ||
|               ) %]
 | ||
Auch abrufbar als: Unified diff
Varianten: Schnellbearbeitung von Varianten