WebshopApi: File upload Übersetzungen
[kivitendo-erp.git] / bin / mozilla / ct.pl
index bdc8919..ba2a86a 100644 (file)
@@ -25,7 +25,8 @@
 # GNU General Public License for more details.
 # You should have received a copy of the GNU General Public License
 # along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+# MA 02110-1335, USA.
 #======================================================================
 #
 # customer/vendor module
 use POSIX qw(strftime);
 
 use SL::CT;
+use SL::CTI;
 use SL::CVar;
 use SL::Request qw(flatten);
 use SL::DB::Business;
 use SL::DB::Default;
 use SL::DB::DeliveryTerm;
-use SL::Helper::Flash;
 use SL::ReportGenerator;
+use SL::Locale::String qw(t8);
 use SL::MoreCommon qw(uri_encode);
 
 require "bin/mozilla/common.pl";
@@ -65,20 +67,6 @@ use strict;
 
 # end of main
 
-sub add {
-  $main::lxdebug->enter_sub();
-
-  my $url = 'controller.pl?action=CustomerVendor/add&db='. ($::form->{db} eq 'vendor' ? 'vendor' : 'customer');
-
-  if ( $::form->{callback} ) {
-    $url .= '&callback='. uri_encode($::form->{callback});
-  }
-
-  print $::form->redirect_header($url);
-
-  $main::lxdebug->leave_sub();
-}
-
 sub search {
   $main::lxdebug->enter_sub();
 
@@ -89,7 +77,8 @@ sub search {
 
   $form->{IS_CUSTOMER} = $form->{db} eq 'customer';
 
-  $form->get_lists("business_types" => "ALL_BUSINESS_TYPES");
+  $form->get_lists("business_types" => "ALL_BUSINESS_TYPES",
+                   "salesmen"       => "ALL_SALESMEN");
   $form->{SHOW_BUSINESS_TYPES} = scalar @{ $form->{ALL_BUSINESS_TYPES} } > 0;
 
   $form->{CUSTOM_VARIABLES}                  = CVar->get_configs('module' => 'CT');
@@ -100,6 +89,8 @@ sub search {
 
   $form->{title}    = $form->{IS_CUSTOMER} ? $locale->text('Customers') : $locale->text('Vendors');
 
+  setup_ct_search_action_bar();
+
   $form->header();
   print $form->parse_html_template('ct/search');
 
@@ -118,6 +109,8 @@ sub search_contact {
                                                                            'include_value'  => 'Y');
 
   $::form->{title} = $::locale->text('Search contacts');
+
+  setup_ct_search_contact_action_bar();
   $::form->header;
   print $::form->parse_html_template('ct/search_contact');
 
@@ -148,15 +141,17 @@ sub list_names {
     push @options, $locale->text('Orphaned');
   }
 
-  push @options, $locale->text('Name') . " : $form->{name}"                                    if $form->{name};
-  push @options, $locale->text('Contact') . " : $form->{contact}"                              if $form->{contact};
-  push @options, $locale->text('Number') . qq| : $form->{"$form->{db}number"}|                 if $form->{"$form->{db}number"};
-  push @options, $locale->text('E-mail') . " : $form->{email}"                                 if $form->{email};
-  push @options, $locale->text('Contact person (surname)')           . " : $form->{cp_name}"   if $form->{cp_name};
-  push @options, $locale->text('Billing/shipping address (city)')    . " : $form->{addr_city}" if $form->{addr_city};
-  push @options, $locale->text('Billing/shipping address (zipcode)') . " : $form->{zipcode}"   if $form->{addr_zipcode};
-  push @options, $locale->text('Billing/shipping address (street)')  . " : $form->{street}"    if $form->{addr_street};
-  push @options, $locale->text('Billing/shipping address (country)') . " : $form->{country}"   if $form->{addr_country};
+  push @options, $locale->text('Name') . " : $form->{name}"                                       if $form->{name};
+  push @options, $locale->text('Contact') . " : $form->{contact}"                                 if $form->{contact};
+  push @options, $locale->text('Number') . qq| : $form->{"$form->{db}number"}|                    if $form->{"$form->{db}number"};
+  push @options, $locale->text('E-mail') . " : $form->{email}"                                    if $form->{email};
+  push @options, $locale->text('Contact person (surname)')           . " : $form->{cp_name}"      if $form->{cp_name};
+  push @options, $locale->text('Billing/shipping address (city)')    . " : $form->{addr_city}"    if $form->{addr_city};
+  push @options, $locale->text('Billing/shipping address (zipcode)') . " : $form->{addr_zipcode}" if $form->{addr_zipcode};
+  push @options, $locale->text('Billing/shipping address (street)')  . " : $form->{addr_street}"  if $form->{addr_street};
+  push @options, $locale->text('Billing/shipping address (country)') . " : $form->{addr_country}" if $form->{addr_country};
+  push @options, $locale->text('Billing/shipping address (GLN)')     . " : $form->{addr_gln}"     if $form->{addr_gln};
+  push @options, $locale->text('Quick Search')                       . " : $form->{all}"          if $form->{all};
 
   if ($form->{business_id}) {
     my $business = SL::DB::Manager::Business->find_by(id => $form->{business_id});
@@ -165,11 +160,24 @@ sub list_names {
       push @options, $label . " : " . $business->description;
     }
   }
+  if ($form->{salesman_id}) {
+    my $salesman = SL::DB::Manager::Employee->find_by(id => $form->{salesman_id});
+    if ($salesman) {
+      push @options, $locale->text('Salesman') . " : " . $salesman->name;
+    }
+  }
+
+  if ( $form->{insertdatefrom} or $form->{insertdateto} ) {
+    push @options, $locale->text('Insert Date');
+    push @options, $locale->text('From') . " " . $locale->date(\%myconfig, $form->{insertdatefrom}, 1) if $form->{insertdatefrom};
+    push @options, $locale->text('Bis')  . " " . $locale->date(\%myconfig, $form->{insertdateto},   1) if $form->{insertdateto};
+  };
 
   my @columns = (
-    'id',        'name',      "$form->{db}number",   'contact',   'phone',    'discount',
-    'fax',       'email',     'taxnumber',           'street',    'zipcode' , 'city',
-    'business',  'invnumber', 'ordnumber',           'quonumber', 'salesman', 'country'
+    'id',        'name',    "$form->{db}number",   'contact',   'phone',    'discount',
+    'fax',       'email',   'taxnumber',           'street',    'zipcode' , 'city',
+    'business',  'payment', 'invnumber', 'ordnumber',           'quonumber', 'salesman',
+    'country',   'gln',     'insertdate',           'pricegroup'
   );
 
   my @includeable_custom_variables = grep { $_->{includeable} } @{ $cvar_configs };
@@ -196,8 +204,12 @@ sub list_names {
     'zipcode'           => { 'text' => $locale->text('Zipcode'), },
     'city'              => { 'text' => $locale->text('City'), },
     'country'           => { 'text' => $locale->text('Country'), },
+    'gln'               => { 'text' => $locale->text('GLN'), },
     'salesman'          => { 'text' => $locale->text('Salesman'), },
     'discount'          => { 'text' => $locale->text('Discount'), },
+    'payment'           => { 'text' => $locale->text('Payment Terms'), },
+    'insertdate'        => { 'text' => $locale->text('Insert Date'), },
+    'pricegroup'        => { 'text' => $locale->text('Pricegroup'), },
     %column_defs_cvars,
   );
 
@@ -205,7 +217,7 @@ sub list_names {
 
   my @hidden_variables  = ( qw(
       db status obsolete name contact email cp_name addr_street addr_zipcode
-      addr_city addr_country business_id
+      addr_city addr_country addr_gln business_id salesman_id insertdateto insertdatefrom all
     ), "$form->{db}number",
     map({ "cvar_$_->{name}" } @searchable_custom_variables),
     map({'cvar_'. $_->{name} .'_qtyop'} grep({$_->{type} eq 'number'} @searchable_custom_variables)),
@@ -280,9 +292,15 @@ sub list_names {
     my $column                = $ref->{formtype} eq 'invoice' ? 'invnumber' : $ref->{formtype} eq 'order' ? 'ordnumber' : 'quonumber';
     $row->{$column}->{data}   = $ref->{$column};
 
+    if (my $number = SL::CTI->sanitize_number(number => $ref->{phone})) {
+      $row->{phone}->{link}       = SL::CTI->call_link(number => $number);
+      $row->{phone}->{link_class} = 'cti_call_action';
+    }
+
     $report->add_data($row);
   }
 
+  setup_ct_list_names_action_bar();
   $report->generate_with_headers();
 
   $main::lxdebug->leave_sub();
@@ -404,12 +422,61 @@ sub list_contacts {
       $row->{$_}->{link} = 'mailto:' . E($ref->{$_}) if $ref->{$_};
     }
 
+    for (qw(cp_phone1 cp_phone2 cp_mobile1)) {
+      next unless my $number = SL::CTI->sanitize_number(number => $ref->{$_});
+
+      $row->{$_}->{link}       = SL::CTI->call_link(number => $number);
+      $row->{$_}->{link_class} = 'cti_call_action';
+    }
+
     $report->add_data($row);
   }
 
-  $report->generate_with_headers;
+  $report->generate_with_headers();
 
   $::lxdebug->leave_sub;
 }
 
+sub setup_ct_search_action_bar {
+  my %params = @_;
+
+  for my $bar ($::request->layout->get('actionbar')) {
+    $bar->add(
+      action => [
+        t8('Search'),
+        submit    => [ '#form', { action => 'list_names' } ],
+        accesskey => 'enter',
+      ],
+    );
+  }
+}
+
+sub setup_ct_list_names_action_bar {
+  my %params = @_;
+
+  for my $bar ($::request->layout->get('actionbar')) {
+    $bar->add(
+      action => [
+        t8('Add'),
+        submit    => [ '#new_form', { action => 'CustomerVendor/add' } ],
+        accesskey => 'enter',
+      ],
+    );
+  }
+}
+
+sub setup_ct_search_contact_action_bar {
+  my %params = @_;
+
+  for my $bar ($::request->layout->get('actionbar')) {
+    $bar->add(
+      action => [
+        t8('Search'),
+        submit    => [ '#form', { action => 'list_contacts' } ],
+        accesskey => 'enter',
+      ],
+    );
+  }
+}
+
 sub continue { call_sub($main::form->{nextsub}); }