Projekt

Allgemein

Profil

Herunterladen (7,84 KB) Statistiken
| Zweig: | Markierung: | Revision:
#=====================================================================
# LX-Office ERP
# Copyright (C) 2004
# Based on SQL-Ledger Version 2.1.9
# Web http://www.lx-office.org
#
#=====================================================================
# SQL-Ledger Accounting
# Copyright (c) 2003
#
# Author: Dieter Simader
# Email: dsimader@sql-ledger.org
# Web: http://www.sql-ledger.org
#
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# 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., 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);

1;

require "bin/mozilla/common.pl";

use strict;

# end of main

sub assert_bp_access {
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}}) {
$::auth->assert($access_map{$::form->{type}});

} else {
$::auth->assert('DOES_NOT_EXIST');
}
}

sub search {
$::lxdebug->enter_sub;

assert_bp_access();

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,
show_accounts => $bp_accounts,
account_sub => sub { ("$_[0]{accno}--$_[0]{description}")x2 },
vc_keys => sub { "$_[0]{name}--$_[0]{id}" },
});

$::lxdebug->leave_sub;
}

sub remove {
$::lxdebug->enter_sub;
assert_bp_access();

$::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!'));

$::lxdebug->leave_sub;
}

sub print {
$::lxdebug->enter_sub;
assert_bp_access();

$::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";
}

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!'));
}
$::dispatcher->end_request;
}
}

$::form->error('Nothing selected!');

$::lxdebug->leave_sub;
}

sub list_spool {
$::lxdebug->enter_sub;
assert_bp_access();

# parse old vc picker
$::form->{ $::form->{vc} } = $::form->unescape($::form->{ $::form->{vc} });
($::form->{ $::form->{vc} }, $::form->{"$::form->{vc}_id"}) = split(/--/, $::form->{ $::form->{vc} });

BP->get_spoolfiles(\%::myconfig, $::form);

my @href_options = ('vc', 'type', 'title', $::form->{vc});

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) },
);

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}->() : '';
}

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};
}

$::form->get_lists(printers => "ALL_PRINTERS");

setup_bp_list_spool_action_bar();

$::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,
});

$::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 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' ] ],
],
);
}
}
(7-7/32)