Merge branch 'b-3.6.1' of ../kivitendo-erp_20220811
[kivitendo-erp.git] / SL / Presenter / Order.pm
index 19d8483..35005a7 100644 (file)
@@ -2,39 +2,39 @@ package SL::Presenter::Order;
 
 use strict;
 
-use parent qw(Exporter);
+use SL::Presenter::EscapedText qw(escape is_escaped);
 
 use Exporter qw(import);
-our @EXPORT = qw(sales_quotation sales_order request_quotation purchase_order);
+our @EXPORT_OK = qw(sales_quotation sales_order request_quotation purchase_order);
 
 use Carp;
 
 sub sales_quotation {
-  my ($self, $order, %params) = @_;
+  my ($order, %params) = @_;
 
-  return _oe_record($self, $order, 'sales_quotation', %params);
+  return _oe_record($order, 'sales_quotation', %params);
 }
 
 sub sales_order {
-  my ($self, $order, %params) = @_;
+  my ($order, %params) = @_;
 
-  return _oe_record($self, $order, 'sales_order', %params);
+  return _oe_record($order, 'sales_order', %params);
 }
 
 sub request_quotation {
-  my ($self, $order, %params) = @_;
+  my ($order, %params) = @_;
 
-  return _oe_record($self, $order, 'request_quotation', %params);
+  return _oe_record($order, 'request_quotation', %params);
 }
 
 sub purchase_order {
-  my ($self, $order, %params) = @_;
+  my ($order, %params) = @_;
 
-  return _oe_record($self, $order, 'purchase_order', %params);
+  return _oe_record($order, 'purchase_order', %params);
 }
 
 sub _oe_record {
-  my ($self, $order, $type, %params) = @_;
+  my ($order, $type, %params) = @_;
 
   $params{display} ||= 'inline';
 
@@ -42,12 +42,19 @@ sub _oe_record {
 
   my $number_method = $order->quotation ? 'quonumber' : 'ordnumber';
 
-  my $text = join '', (
-    $params{no_link} ? '' : '<a href="oe.pl?action=edit&amp;type=' . $type . '&amp;id=' . $self->escape($order->id) . '">',
-    $self->escape($order->$number_method),
-    $params{no_link} ? '' : '</a>',
-  );
-  return $self->escaped_text($text);
+  my $link_start = '';
+  my $link_end   = '';
+  unless ($params{no_link}) {
+    my $action  = $::instance_conf->get_feature_experimental_order
+                ? 'controller.pl?action=Order/edit'
+                : 'oe.pl?action=edit';
+    $link_start = '<a href="' . $action . '&amp;type=' . $type . '&amp;id=' . escape($order->id) . '">';
+    $link_end   = '</a>';
+  }
+
+  my $text = join '', ($link_start, escape($order->$number_method), $link_end);
+
+  is_escaped($text);
 }
 
 1;
@@ -68,19 +75,19 @@ quotations, sales orders, requests for quotations and purchase orders
 
   # Sales quotations:
   my $object = SL::DB::Manager::Order->get_first(where => [ SL::DB::Manager::Order->type_filter('sales_quotation') ]);
-  my $html   = SL::Presenter->get->sales_quotation($object, display => 'inline');
+  my $html   = SL::Presenter::Order::sales_quotation($object, display => 'inline');
 
   # Sales orders:
   my $object = SL::DB::Manager::Order->get_first(where => [ SL::DB::Manager::Order->type_filter('sales_order') ]);
-  my $html   = SL::Presenter->get->sales_order($object, display => 'inline');
+  my $html   = SL::Presenter::Order::sales_order($object, display => 'inline');
 
   # Requests for quotations:
   my $object = SL::DB::Manager::Order->get_first(where => [ SL::DB::Manager::Order->type_filter('request_quotation') ]);
-  my $html   = SL::Presenter->get->request_quotation($object, display => 'inline');
+  my $html   = SL::Presenter::Order::request_quotation($object, display => 'inline');
 
   # Purchase orders:
   my $object = SL::DB::Manager::Order->get_first(where => [ SL::DB::Manager::Order->type_filter('purchase_order') ]);
-  my $html   = SL::Presenter->get->purchase_order($object, display => 'inline');
+  my $html   = SL::Presenter::Order::purchase_order($object, display => 'inline');
 
 =head1 FUNCTIONS