-      my $cvars;
-      if (! $form->{"orderitems_id_$i"}) {
-        # get values for CVars from master data for new items
-        $cvars = CVar->get_custom_variables(dbh      => $dbh,
-                                            module   => 'IC',
-                                            trans_id => $form->{"id_$i"},
-                                           );
-      } else {
-        # get values for CVars from custom_variables for existing items
-        $cvars = CVar->get_custom_variables(dbh        => $dbh,
-                                            module     => 'IC',
-                                            sub_module => 'orderitems',
-                                            trans_id   => $form->{"orderitems_id_$i"},
-                                           );
-      }
-      # map only non-editable CVars to form (editable ones are already there)
-      map { $form->{"ic_cvar_$_->{name}_$i"} = $_->{value} unless $_->{flag_editable} } @{ $cvars };
+      CVar->get_non_editable_ic_cvars(form               => $form,
+                                      dbh                => $dbh,
+                                      row                => $i,
+                                      sub_module         => 'orderitems',
+                                      may_converted_from => ['orderitems', 'invoice']);