# 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
#======================================================================
use SL::BP;
+use SL::Locale::String qw(t8);
use Data::Dumper;
use List::Util qw(first);
# 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');
}
}
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, },
);
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,
}
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|
-<body>
-
-<form method=post action=bp.pl>
-|;
-
- 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|<input type=hidden name=$key value="$form->{$key}">\n|;
- }
-
- print qq|
-<h2 class=confirm>$form->{title}</h2>
-
-<h4>|
- . $locale->text(
- 'Are you sure you want to remove the marked entries from the queue?')
- . qq|</h4>
-
-<input name=action class=submit type=submit value="|
- . $locale->text('Yes') . qq|">
-</form>
-
-</body>
-</html>
-|;
-
- $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 {
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) },
);
my @options;
- for my $key ($::form->{vc}, qw(account invnumber ordnumber quonumber transdatefrom transdateto)) {
+ 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}->() : '';
$::form->get_lists(printers => "ALL_PRINTERS");
+ setup_bp_list_spool_action_bar();
+
$::form->header;
print $::form->parse_html_template('bp/list_spool', {
- spool => $::lx_office_conf{paths}->{spool},
href => build_std_url('bp.pl', @href_options),
is_invoice => scalar ($::form->{type} =~ /^invoice$/),
is_order => scalar ($::form->{type} =~ /_order$/),
$::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_search_action_bar {
+ my %params = @_;
+
+ for my $bar ($::request->layout->get('actionbar')) {
+ $bar->add(
+ action => [
+ t8('Show'),
+ submit => [ '#form', { action => "list_spool" } ],
+ accesskey => 'enter',
+ ],
+ );
+ }
}
-sub continue { call_sub($main::form->{"nextsub"}); }
-
+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' ] ],
+ ],
+ );
+ }
+}