X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=sidebyside;f=bin%2Fmozilla%2Fct.pl;h=079b24c4afe9cb6f65d06d17c6b3c47884fdf362;hb=d19171d1dec83cdf8b5256223495efde4d0dda8c;hp=2a2d1a1f425dc9d3d4d2316846d3dce4c49fcf68;hpb=4be9b9dc16a69c791e47e53790307458bcf7ad7b;p=kivitendo-erp.git
diff --git a/bin/mozilla/ct.pl b/bin/mozilla/ct.pl
index 2a2d1a1f4..079b24c4a 100644
--- a/bin/mozilla/ct.pl
+++ b/bin/mozilla/ct.pl
@@ -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
@@ -36,115 +37,201 @@
# $locale->text('Vendors')
# $locale->text('Add Customer')
# $locale->text('Add Vendor')
+# $locale->text('Edit Customer')
+# $locale->text('Edit Vendor')
+# $locale->text('Customer saved!')
+# $locale->text('Vendor saved!')
+# $locale->text('Customer deleted!')
+# $locale->text('Cannot delete customer!')
+# $locale->text('Vendor deleted!')
+# $locale->text('Cannot delete vendor!')
-use CGI;
-use CGI::Ajax;
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::ReportGenerator;
+use SL::Locale::String qw(t8);
+use SL::MoreCommon qw(uri_encode);
require "bin/mozilla/common.pl";
require "bin/mozilla/reportgenerator.pl";
+use strict;
1;
# end of main
-sub add {
- $lxdebug->enter_sub();
-
- $form->{title} = "Add";
-
- $form->{callback} =
- "$form->{script}?action=add&db=$form->{db}&login=$form->{login}&password=$form->{password}"
- unless $form->{callback};
-
- CT->populate_drop_down_boxes(\%myconfig, \%$form);
-
- &form_header;
- &form_footer;
+sub search {
+ $main::lxdebug->enter_sub();
- $lxdebug->leave_sub();
-}
+ $main::auth->assert('customer_vendor_edit');
-sub search {
- $lxdebug->enter_sub();
+ my $form = $main::form;
+ my $locale = $main::locale;
$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->{title} = $form->{IS_CUSTOMER} ? $locale->text('Customers') : $locale->text('Vendors');
- $form->{fokus} = 'Form.name';
+ $form->{CUSTOM_VARIABLES} = CVar->get_configs('module' => 'CT');
+ ($form->{CUSTOM_VARIABLES_FILTER_CODE},
+ $form->{CUSTOM_VARIABLES_INCLUSION_CODE}) = CVar->render_search_options('variables' => $form->{CUSTOM_VARIABLES},
+ 'include_prefix' => 'l_',
+ 'include_value' => 'Y');
+
+ $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');
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
+}
+
+sub search_contact {
+ $::lxdebug->enter_sub;
+ $::auth->assert('customer_vendor_edit');
+
+ $::form->{CUSTOM_VARIABLES} = CVar->get_configs('module' => 'Contacts');
+ ($::form->{CUSTOM_VARIABLES_FILTER_CODE},
+ $::form->{CUSTOM_VARIABLES_INCLUSION_CODE}) = CVar->render_search_options('variables' => $::form->{CUSTOM_VARIABLES},
+ 'include_prefix' => 'l.',
+ 'filter_prefix' => 'filter.',
+ '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');
+
+ $::lxdebug->leave_sub;
}
sub list_names {
- $lxdebug->enter_sub();
+ $main::lxdebug->enter_sub();
+
+ $main::auth->assert('customer_vendor_edit');
+
+ my $form = $main::form;
+ my %myconfig = %main::myconfig;
+ my $locale = $main::locale;
$form->{IS_CUSTOMER} = $form->{db} eq 'customer';
+ report_generator_set_default_sort('name', 1);
+
CT->search(\%myconfig, \%$form);
+ my $cvar_configs = CVar->get_configs('module' => 'CT');
+
my @options;
if ($form->{status} eq 'all') {
push @options, $locale->text('All');
-
} elsif ($form->{status} eq 'orphaned') {
push @options, $locale->text('Orphaned');
}
- if ($form->{name}) {
- push @options, $locale->text('Name') . " : $form->{name}";
- }
- if ($form->{contact}) {
- push @options, $locale->text('Contact') . " : $form->{contact}";
- }
- if ($form->{"$form->{db}number"}) {
- push @options, $locale->text('Number') . qq| : $form->{"$form->{db}number"}|;
+ 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});
+ if ($business) {
+ my $label = $form->{IS_CUSTOMER} ? $::locale->text('Customer type') : $::locale->text('Vendor type');
+ push @options, $label . " : " . $business->description;
+ }
}
- if ($form->{email}) {
- push @options, $locale->text('E-mail') . " : $form->{email}";
+ 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", 'address', 'contact', 'phone',
- 'fax', 'email', 'taxnumber', 'sic_code', 'business', 'invnumber',
- 'ordnumber', 'quonumber'
+ '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 };
+ my @searchable_custom_variables = grep { $_->{searchable} } @{ $cvar_configs };
+ my %column_defs_cvars = map { +"cvar_$_->{name}" => { 'text' => $_->{description} } } @includeable_custom_variables;
+
+ push @columns, map { "cvar_$_->{name}" } @includeable_custom_variables;
+
my %column_defs = (
'id' => { 'text' => $locale->text('ID'), },
- "$form->{db}number" => { 'text' => $form->{IS_CUSTOMER} ? $locale->text('Customer Number') : $locale->text('Vendor Number'), },
- 'name' => { 'text' => $locale->text('Name'), },
- 'address' => { 'text' => $locale->text('Address'), },
+ "$form->{db}number" => { 'text' => $locale->text('Number'), },
+ 'name' => { 'text' => $form->{IS_CUSTOMER} ? $::locale->text('Customer Name') : $::locale->text('Vendor Name'), },
'contact' => { 'text' => $locale->text('Contact'), },
'phone' => { 'text' => $locale->text('Phone'), },
'fax' => { 'text' => $locale->text('Fax'), },
'email' => { 'text' => $locale->text('E-mail'), },
'cc' => { 'text' => $locale->text('Cc'), },
'taxnumber' => { 'text' => $locale->text('Tax Number'), },
- 'sic_code' => { 'text' => $locale->text('SIC'), },
'business' => { 'text' => $locale->text('Type of Business'), },
'invnumber' => { 'text' => $locale->text('Invoice'), },
'ordnumber' => { 'text' => $form->{IS_CUSTOMER} ? $locale->text('Sales Order') : $locale->text('Purchase Order'), },
'quonumber' => { 'text' => $form->{IS_CUSTOMER} ? $locale->text('Quotation') : $locale->text('Request for Quotation'), },
+ 'street' => { 'text' => $locale->text('Street'), },
+ '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,
);
map { $column_defs{$_}->{visible} = $form->{"l_$_"} eq 'Y' } @columns;
- my @hidden_variables = (qw(db status obsolete), map { "l_$_" } @columns);
+ my @hidden_variables = ( qw(
+ db status obsolete name contact email cp_name addr_street addr_zipcode
+ 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)),
+ map({ "l_$_" } @columns),
+ );
+
my @hidden_nondefault = grep({ $form->{$_} } @hidden_variables);
- my $callback = build_std_url('action=list_names', grep { $form->{$_} } @hidden_variables);
- $form->{callback} = "$callback&sort=" . E($form->{sort});
+ my $callback = build_std_url('action=list_names', grep { $form->{$_} } @hidden_nondefault);
+ $form->{callback} = "$callback&sort=" . E($form->{sort}) . "&sortdir=" . E($form->{sortdir});
- map { $column_defs{$_}->{link} = "${callback}&sort=${_}" } @columns;
+ foreach (@columns) {
+ my $sortdir = $form->{sort} eq $_ ? 1 - $form->{sortdir} : $form->{sortdir};
+ $column_defs{$_}->{link} = "${callback}&sort=${_}&sortdir=${sortdir}";
+ }
my ($ordertype, $quotationtype, $attachment_basename);
if ($form->{IS_CUSTOMER}) {
@@ -169,13 +256,20 @@ sub list_names {
'attachment_basename' => $attachment_basename . strftime('_%Y%m%d', localtime time),
);
$report->set_options_from_form();
+ $locale->set_numberformat_wo_thousands_separator(\%myconfig) if lc($report->{options}->{output_format}) eq 'csv';
$report->set_columns(%column_defs);
$report->set_column_order(@columns);
- $report->set_export_options('list_names', @hidden_variables);
+ $report->set_export_options('list_names', @hidden_variables, qw(sort sortdir));
- $report->set_sort_indicator($form->{sort}, 1);
+ $report->set_sort_indicator($form->{sort}, $form->{sortdir});
+
+ CVar->add_custom_variables_to_report('module' => 'CT',
+ 'trans_id_field' => 'id',
+ 'configs' => $cvar_configs,
+ 'column_defs' => \%column_defs,
+ 'data' => $form->{CT});
my $previous_id;
@@ -184,510 +278,211 @@ sub list_names {
if ($ref->{id} ne $previous_id) {
$previous_id = $ref->{id};
+ $ref->{discount} = $form->format_amount(\%myconfig, $ref->{discount} * 100.0, 2);
map { $row->{$_}->{data} = $ref->{$_} } @columns;
- $row->{name}->{link} = build_std_url('action=edit', 'id=' . E($ref->{id}), 'callback', @hidden_nondefault);
+ $row->{name}->{link} = build_std_url('script=controller.pl', 'action=CustomerVendor/edit', 'id=' . E($ref->{id}), 'callback', @hidden_nondefault);
$row->{email}->{link} = 'mailto:' . E($ref->{email});
}
my $base_url = build_std_url("script=$ref->{module}.pl", 'action=edit', 'id=' . E($ref->{invid}), 'callback', @hidden_nondefault);
+ if ($::instance_conf->get_feature_experimental) {
+ if ('oe' eq $ref->{module}) {
+ $base_url = build_std_url("script=controller.pl", 'action=Order/edit', 'id=' . E($ref->{invid}), 'callback', @hidden_nondefault);
+ }
+ }
+
$row->{invnumber}->{link} = $base_url;
$row->{ordnumber}->{link} = $base_url . "&type=${ordertype}";
$row->{quonumber}->{link} = $base_url . "&type=${quotationtype}";
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();
- $lxdebug->leave_sub();
+ $main::lxdebug->leave_sub();
}
-sub edit {
- $lxdebug->enter_sub();
-
- # show history button
- $form->{javascript} = qq||;
- #/show hhistory button
-
- # $locale->text('Edit Customer')
- # $locale->text('Edit Vendor')
-
- CT->get_tuple(\%myconfig, \%$form);
- CT->populate_drop_down_boxes(\%myconfig, \%$form);
-
- # format " into "
- map { $form->{$_} =~ s/\"/"/g } keys %$form;
-
- $form->{title} = "Edit";
-
- # format discount
- $form->{discount} *= 100;
-
- &form_header;
- &form_footer;
-
- $lxdebug->leave_sub();
-}
-
-sub form_header {
- $lxdebug->enter_sub();
-
- $form->get_lists("employees" => "ALL_SALESMEN",
- "taxzones" => "ALL_TAXZONES");
- $form->get_pricegroup(\%myconfig, { all => 1 });
+sub list_contacts {
+ $::lxdebug->enter_sub;
+ $::auth->assert('customer_vendor_edit');
- $form->{taxincluded} = ($form->{taxincluded}) ? "checked" : "";
- $form->{is_admin} = $myconfig{role} eq 'admin';
- $form->{is_customer} = $form->{db} eq 'customer';
- $form->{salesman_label} = sub { $_[0]->{name} ne "" ? $_[0]->{name} : $_[0]->{login} };
- $form->{shipto_label} = sub { "$_[0]->{shiptoname} $_[0]->{shiptodepartment_1}" };
- $form->{taxzone_id} = 0 if !$form->{id};
- $form->{jsscript} = 1;
- $form->{fokus} = "ct.greeting";
+ $::form->{sortdir} = 1 unless defined $::form->{sortdir};
- unshift @{ $form->{SHIPTO} }, +{ shipto_id => '0', shiptoname => '' }, +{ shipto_id => '0', shiptoname => 'Alle' };
- unshift @{ $form->{CONTACTS} }, +{ cp_id => '0', cp_name => $locale->text('New contact') };
-
- push @{ $form->{AJAX} }, map {
- new CGI::Ajax( "get_$_" => "$form->{script}?login=$form->{login}&password=$form->{password}&action=get_$_" )
- } qw(shipto contact delivery);
-
- $form->{title} = $form->{title_save}
- || $locale->text("$form->{title} " . ucfirst $form->{db}) . ($form->{title} eq "Edit" ? " $form->{name}" : '');
-
-## LINET: Create a drop-down box with all prior titles and greetings.
- CT->query_titles_and_greetings(\%myconfig, \%$form);
- map { $form->{"MB_$_"} = [ map +{ id => $_, description => $_ }, @{ $form->{$_} } ] } qw(TITLES GREETINGS COMPANY_GREETINGS DEPARTMENT);
-## /LINET
-
- $form->header;
- print $form->parse_html_template('ct/form_header');
-
- $lxdebug->leave_sub();
-}
-
-sub form_footer {
- $lxdebug->enter_sub();
-
- $label = ucfirst $form->{db};
- $quotation =
- ($form->{db} eq 'customer')
- ? $locale->text('Save and Quotation')
- : $locale->text('Save and RFQ');
- $arap =
- ($form->{db} eq 'customer')
- ? $locale->text('Save and AR Transaction')
- : $locale->text('Save and AP Transaction');
-
-##
-##
-##
-##
-
- print qq|
-{id}>
-
-
-
-{login}>
-{password}>
-
-
-{db}>
-
-
-
-
-
-
-
-
-
-
-|;
-
- if ($form->{id} && $form->{status} eq 'orphaned') {
- print qq|\n|;
- }
+ my @contacts = CT->search_contacts(
+ search_term => $::form->{search_term},
+ filter => $::form->{filter},
+ );
- # button for saving history
- if($form->{id} ne "") {
- print qq|
- {id}
- . qq|); name=history id=history value=|
- . $locale->text('history')
- . qq|>|;
- }
- # /button for saving history
+ my $cvar_configs = CVar->get_configs('module' => 'Contacts');
- print qq|
+ my @columns = qw(
+ cp_id vcname vcnumber cp_name cp_givenname cp_street cp_zipcode cp_city cp_phone1 cp_phone2 cp_privatphone
+ cp_mobile1 cp_mobile2 cp_fax cp_email cp_privatemail cp_abteilung cp_position cp_birthday cp_gender
+ );
-
-
-