X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fbp.pl;h=439709ebcd87f061a2f9c37376fb81b58cc095b3;hb=08e48f66590f580cbe2c8e3df76883d88b4c0fef;hp=87afc32932ba1f8e5da54d0dd8e37b519b78e35f;hpb=e6f4310417ed916979a24a8699c549f38609d34a;p=kivitendo-erp.git diff --git a/bin/mozilla/bp.pl b/bin/mozilla/bp.pl index 87afc3293..439709ebc 100644 --- a/bin/mozilla/bp.pl +++ b/bin/mozilla/bp.pl @@ -24,7 +24,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. #====================================================================== # # Batch printing @@ -32,6 +33,7 @@ #====================================================================== use SL::BP; +use SL::Locale::String qw(t8); use Data::Dumper; use List::Util qw(first); @@ -44,23 +46,22 @@ use strict; # end of main sub assert_bp_access { - my $form = $main::form; - my %access_map = ( 'invoice' => 'invoice_edit', 'sales_order' => 'sales_order_edit', 'sales_quotation' => 'sales_quotation_edit', 'purchase_order' => 'purchase_order_edit', + 'packing_list' => 'sales_delivery_order_edit|purchase_delivery_order_edit', 'request_quotation' => 'request_quotation_edit', 'check' => 'cash', 'receipt' => 'cash', ); - if ($form->{type} && $access_map{$form->{type}}) { - $main::auth->assert($access_map{$form->{type}}); + if ($::form->{type} && $access_map{$::form->{type}}) { + $::auth->assert($access_map{$::form->{type}}); } else { - $main::auth->assert('DOES_NOT_EXIST'); + $::auth->assert('DOES_NOT_EXIST'); } } @@ -69,15 +70,13 @@ sub search { assert_bp_access(); - # setup customer/vendor selection - BP->get_vc(\%::myconfig, $::form); - my %label = ( invoice => { title => $::locale->text('Sales Invoices'), invnumber => 1, ordnumber => 1 }, sales_order => { title => $::locale->text('Sales Orders'), ordnumber => 1, }, purchase_order => { title => $::locale->text('Purchase Orders'), ordnumber => 1, }, sales_quotation => { title => $::locale->text('Quotations'), quonumber => 1, }, request_quotation => { title => $::locale->text('RFQs'), quonumber => 1, }, + packing_list => { title => $::locale->text('Delivery Orders'), donumber => 1, ordnumber => 1 }, check => { title => $::locale->text('Checks'), chknumber => 1, }, receipt => { title => $::locale->text('Receipts'), rctnumber => 1, }, ); @@ -85,6 +84,8 @@ sub search { my $bp_accounts = $::form->{type} =~ /check|receipt/ && BP->payment_accounts(\%::myconfig, $::form); + setup_bp_search_action_bar(); + $::form->header; print $::form->parse_html_template('bp/search', { label => \%label, @@ -97,388 +98,138 @@ sub search { } sub remove { - $main::lxdebug->enter_sub(); - - my $form = $main::form; - my $locale = $main::locale; - - assert_bp_access(); - - my $selected = 0; - - for my $i (1 .. $form->{rowcount}) { - if ($form->{"checked_$i"}) { - $selected = 1; - last; - } - } - - $form->error('Nothing selected!') unless $selected; - - $form->{title} = $locale->text('Confirm!'); - - $form->header; - - print qq| - - -
-|; - - map { delete $form->{$_} } qw(action header); - - foreach my $key (keys %$form) { - next if (($key eq 'login') || ($key eq 'password') || ('' ne ref $form->{$key})); - print qq|\n|; - } - - print qq| -

$form->{title}

- -

| - . $locale->text( - 'Are you sure you want to remove the marked entries from the queue?') - . qq|

- - -
- - - -|; - - $main::lxdebug->leave_sub(); -} - -sub yes { - $main::lxdebug->enter_sub(); - - my $form = $main::form; - my %myconfig = %main::myconfig; - my $locale = $main::locale; - + $::lxdebug->enter_sub; assert_bp_access(); - $form->info($locale->text('Removing marked entries from queue ...')); - $form->{callback} .= "&header=1" if $form->{callback}; + $::form->info($::locale->text('Removing marked entries from queue ...')); + $::form->{callback} .= "&header=1" if $::form->{callback}; - $form->redirect($locale->text('Removed spoolfiles!')) - if (BP->delete_spool(\%myconfig, \%$form)); - $form->error($locale->text('Cannot remove files!')); + $::form->redirect($::locale->text('Removed spoolfiles!')) + if BP->delete_spool(\%::myconfig, $::form); + $::form->error($::locale->text('Cannot remove files!')); - $main::lxdebug->leave_sub(); + $::lxdebug->leave_sub; } sub print { - $main::lxdebug->enter_sub(); - - my $form = $main::form; - my %myconfig = %main::myconfig; - my $locale = $main::locale; - + $::lxdebug->enter_sub; assert_bp_access(); - $form->get_lists(printers => 'ALL_PRINTERS'); + $::form->get_lists(printers => 'ALL_PRINTERS'); # use the command stored in the databse or fall back to $myconfig{printer} my $selected_printer = first { $_ } map ({ $_ ->{printer_command} } - grep { $_->{id} eq $form->{printer} } - @{ $form->{ALL_PRINTERS} }), - $myconfig{printer}; - - if ($form->{callback}) { - map { $form->{callback} .= "&checked_$_=1" if $form->{"checked_$_"} } - (1 .. $form->{rowcount}); - $form->{callback} .= "&header=1"; + grep { $_->{id} eq $::form->{printer} } + @{ $::form->{ALL_PRINTERS} }), + $::myconfig{printer}; + + if ($::form->{callback}) { + map { $::form->{callback} .= "&checked_$_=1" if $::form->{"checked_$_"} } + (1 .. $::form->{rowcount}); + $::form->{callback} .= "&header=1"; } - for my $i (1 .. $form->{rowcount}) { - if ($form->{"checked_$i"}) { - $form->info($locale->text('Printing ... ')); + for my $i (1 .. $::form->{rowcount}) { + if ($::form->{"checked_$i"}) { + $::form->info($::locale->text('Printing ... ')); - if (BP->print_spool(\%myconfig, \%$form, "| $selected_printer")) { - print $locale->text('done'); - $form->redirect($locale->text('Marked entries printed!')); + if (BP->print_spool(\%::myconfig, $::form, "| $selected_printer")) { + print $::locale->text('done'); + $::form->redirect($::locale->text('Marked entries printed!')); } - ::end_of_request(); + $::dispatcher->end_request; } } - $form->error('Nothing selected!'); + $::form->error('Nothing selected!'); - $main::lxdebug->leave_sub(); + $::lxdebug->leave_sub; } sub list_spool { - $main::lxdebug->enter_sub(); - - my $form = $main::form; - my %myconfig = %main::myconfig; - my $locale = $main::locale; - + $::lxdebug->enter_sub; assert_bp_access(); - $form->{ $form->{vc} } = $form->unescape($form->{ $form->{vc} }); - ($form->{ $form->{vc} }, $form->{"$form->{vc}_id"}) = - split(/--/, $form->{ $form->{vc} }); - - BP->get_spoolfiles(\%myconfig, \%$form); + # parse old vc picker + $::form->{ $::form->{vc} } = $::form->unescape($::form->{ $::form->{vc} }); + ($::form->{ $::form->{vc} }, $::form->{"$::form->{vc}_id"}) = split(/--/, $::form->{ $::form->{vc} }); - my $title = $form->escape($form->{title}); - my $href = "bp.pl?action=list_spool&vc=$form->{vc}&type=$form->{type}&title=$title"; + BP->get_spoolfiles(\%::myconfig, $::form); - $title = $form->escape($form->{title}, 1); - my $callback = - "bp.pl?action=list_spool&vc=$form->{vc}&type=$form->{type}&title=$title"; - my $option; + my @href_options = ('vc', 'type', 'title', $::form->{vc}); - if ($form->{ $form->{vc} }) { - $callback .= "&$form->{vc}=" . $form->escape($form->{ $form->{vc} }, 1); - $href .= "&$form->{vc}=" . $form->escape($form->{ $form->{vc} }); - $option = - ($form->{vc} eq 'customer') - ? $locale->text('Customer') - : $locale->text('Vendor'); - $option .= " : $form->{$form->{vc}}"; - } - if ($form->{account}) { - $callback .= "&account=" . $form->escape($form->{account}, 1); - $href .= "&account=" . $form->escape($form->{account}); - $option .= "\n
" if ($option); - $option .= $locale->text('Account') . " : $form->{account}"; - } - if ($form->{invnumber}) { - $callback .= "&invnumber=" . $form->escape($form->{invnumber}, 1); - $href .= "&invnumber=" . $form->escape($form->{invnumber}); - $option .= "\n
" if ($option); - $option .= $locale->text('Invoice Number') . " : $form->{invnumber}"; - } - if ($form->{ordnumber}) { - $callback .= "&ordnumber=" . $form->escape($form->{ordnumber}, 1); - $href .= "&ordnumber=" . $form->escape($form->{ordnumber}); - $option .= "\n
" if ($option); - $option .= $locale->text('Order Number') . " : $form->{ordnumber}"; - } - if ($form->{quonumber}) { - $callback .= "&quonumber=" . $form->escape($form->{quonumber}, 1); - $href .= "&quonumber=" . $form->escape($form->{quonumber}); - $option .= "\n
" if ($option); - $option .= $locale->text('Quotation Number') . " : $form->{quonumber}"; - } + my %option_texts = ( + customer => sub { $::locale->text('Customer') . " : $::form->{customer}" }, + vendor => sub { $::locale->text('Customer') . " : $::form->{vendor}" }, + account => sub { $::locale->text('Account') . " : $::form->{account}" }, + invnumber => sub { $::locale->text('Invoice Number') . " : $::form->{invnumber}" }, + ordnumber => sub { $::locale->text('Order Number') . " : $::form->{ordnumber}" }, + quonumber => sub { $::locale->text('Quotation Number') . " : $::form->{quonumber}" }, + donumber => sub { $::locale->text('Delivery Order Number') . " : $::form->{donumber}" }, + transdatefrom => sub { $::locale->text('From') . " " . $::locale->date(\%::myconfig, $::form->{transdatefrom}, 1) }, + transdateto => sub { $::locale->text('To') . " " . $::locale->date(\%::myconfig, $::form->{transdateto}, 1) }, + ); - if ($form->{transdatefrom}) { - $callback .= "&transdatefrom=$form->{transdatefrom}"; - $href .= "&transdatefrom=$form->{transdatefrom}"; - $option .= "\n
" if ($option); - $option .= - $locale->text('From') . " " - . $locale->date(\%myconfig, $form->{transdatefrom}, 1); + my @options; + for my $key ($::form->{vc}, qw(account invnumber ordnumber quonumber donumber transdatefrom transdateto)) { + next unless $::form->{$key}; + push @href_options, $key; + push @options, $option_texts{$key} ? $option_texts{$key}->() : ''; } - if ($form->{transdateto}) { - $callback .= "&transdateto=$form->{transdateto}"; - $href .= "&transdateto=$form->{transdateto}"; - $option .= "\n
" if ($option); - $option .= - $locale->text('To') . " " - . $locale->date(\%myconfig, $form->{transdateto}, 1); - } - - my $name = ucfirst $form->{vc}; - my @columns = qw(transdate); - if ($form->{type} =~ /_order$/) { - push @columns, "ordnumber"; + my $last_spoolfile; + for my $ref (@{ $::form->{SPOOL} }) { + $ref->{module} = ($ref->{module} eq 'ar') ? "is" : "ir" if $ref->{invoice}; + $ref->{new_file} = $last_spoolfile ne $ref->{spoolfile}; + } continue { + $last_spoolfile = $ref->{spoolfile}; } - if ($form->{type} =~ /_quotation$/) { - push @columns, "quonumber"; - } - - push @columns, qw(name spoolfile); - my @column_index = $form->sort_columns(@columns); - unshift @column_index, "checked"; - - my %column_header; - my %column_data; - - $column_header{checked} = " "; - $column_header{transdate} = - "" - . $locale->text('Date') - . ""; - $column_header{invnumber} = - "" - . $locale->text('Invoice') - . ""; - $column_header{ordnumber} = - "" - . $locale->text('Order') - . ""; - $column_header{quonumber} = - "" - . $locale->text('Quotation') - . ""; - $column_header{name} = - "" - . $locale->text($name) - . ""; - $column_header{spoolfile} = - "" . $locale->text('Spoolfile') . ""; - - $form->header; - - print qq| - - -
- - - - - - - - - - - - - - - -
$form->{title}
$option
- - -|; - - map { print "\n$column_header{$_}" } @column_index; - - print qq| - -|; - - # add sort and escape callback, this one we use for the add sub - $form->{callback} = $callback .= "&sort=$form->{sort}"; - - # escape callback for href - $callback = $form->escape($callback); - - my $i = 0; - my $j = 0; - my $spoolfile; - my $spool = $::lx_office_conf{paths}->{spool}; - - foreach my $ref (@{ $form->{SPOOL} }) { - - $i++; - - $form->{"checked_$i"} = "checked" if $form->{"checked_$i"}; - - if ($ref->{invoice}) { - $ref->{module} = ($ref->{module} eq 'ar') ? "is" : "ir"; - } - my $module = "$ref->{module}.pl"; - - $column_data{transdate} = ""; - if ($spoolfile eq $ref->{spoolfile}) { - $column_data{checked} = qq||; - } else { - $column_data{checked} = - qq||; - } - - $column_data{invnumber} = - ""; - $column_data{ordnumber} = - ""; - $column_data{quonumber} = - ""; - $column_data{name} = ""; - $column_data{spoolfile} = - qq| -{spoolfile}> -|; + $::form->get_lists(printers => "ALL_PRINTERS"); - $spoolfile = $ref->{spoolfile}; + setup_bp_list_spool_action_bar(); - $j++; - $j %= 2; - print " - -"; - - map { print "\n$column_data{$_}" } @column_index; + $::form->header; + print $::form->parse_html_template('bp/list_spool', { + href => build_std_url('bp.pl', @href_options), + is_invoice => scalar ($::form->{type} =~ /^invoice$/), + is_order => scalar ($::form->{type} =~ /_order$/), + is_quotation => scalar ($::form->{type} =~ /_quotation$/), + options => \@options, + }); - print qq| - -|; + $::lxdebug->leave_sub; +} +sub setup_bp_search_action_bar { + my %params = @_; + + for my $bar ($::request->layout->get('actionbar')) { + $bar->add( + action => [ + t8('Show'), + submit => [ '#form', { action => "list_spool" } ], + accesskey => 'enter', + ], + ); } - - print qq| - - -
$ref->{transdate} {"checked_$i"} $form->{"checked_$i"}>{id}&type=$form->{type}&callback=$callback>$ref->{invnumber}{id}&type=$form->{type}&callback=$callback>$ref->{ordnumber}{id}&type=$form->{type}&callback=$callback>$ref->{quonumber}$ref->{name}{spoolfile}>$ref->{spoolfile}
-

- -
- - - - - - - - - -|; - -# if ($myconfig{printer}) { - print qq| -{transdateto}> -{transdatefrom}> -{invnumber}> -{ordnumber}> -{quonumber}> -{customer}> -{vendor}> - - - -|; - -$form->get_lists(printers=>"ALL_PRINTERS"); -print qq||; - -# } - - print qq| -
- - - -|; - - $main::lxdebug->leave_sub(); } -sub select_all { - $main::lxdebug->enter_sub(); - - my $form = $main::form; - - assert_bp_access(); - - map { $form->{"checked_$_"} = 1 } (1 .. $form->{rowcount}); - &list_spool; - - $main::lxdebug->leave_sub(); +sub setup_bp_list_spool_action_bar { + my %params = @_; + + for my $bar ($::request->layout->get('actionbar')) { + $bar->add( + action => [ + t8('Remove'), + submit => [ '#form', { action => "remove" } ], + checks => [ [ 'kivi.check_if_entries_selected', '.check_all' ] ], + confirm => t8('Are you sure you want to remove the marked entries from the queue?'), + ], + action => [ + t8('Print'), + submit => [ '#form', { action => "print" } ], + checks => [ [ 'kivi.check_if_entries_selected', '.check_all' ] ], + ], + ); + } } - -sub continue { call_sub($main::form->{"nextsub"}); } -