X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fbp.pl;h=9ce49155ab6dbd84545dcabcdaf909bb86b753bf;hb=1e0d413084100ccd892e8c5be95703be5d965de7;hp=56f886fe170ac419247a1af84ab5fd32dda0c322;hpb=4dbb09950c9f5596646537c12d991c99086fe7c1;p=kivitendo-erp.git diff --git a/bin/mozilla/bp.pl b/bin/mozilla/bp.pl index 56f886fe1..9ce49155a 100644 --- a/bin/mozilla/bp.pl +++ b/bin/mozilla/bp.pl @@ -31,151 +31,194 @@ # #====================================================================== - use SL::BP; +use Data::Dumper; +use List::Util qw(first); 1; + +require "bin/mozilla/common.pl"; + +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', + 'request_quotation' => 'request_quotation_edit', + 'check' => 'cash', + 'receipt' => 'cash', + ); + + if ($form->{type} && $access_map{$form->{type}}) { + $main::auth->assert($access_map{$form->{type}}); + + } else { + $main::auth->assert('DOES_NOT_EXIST'); + } +} sub search { - $lxdebug->enter_sub(); + $main::lxdebug->enter_sub(); + my $form = $main::form; + my %myconfig = %main::myconfig; + my $locale = $main::locale; -# $locale->text('Sales Invoices') -# $locale->text('Packing Lists') -# $locale->text('Sales Orders') -# $locale->text('Purchase Orders') -# $locale->text('Quotations') -# $locale->text('RFQs') -# $locale->text('Checks') -# $locale->text('Receipts') + my ($name, $account, $onload); + + assert_bp_access(); + + # $locale->text('Sales Invoices') + # $locale->text('Sales Orders') + # $locale->text('Purchase Orders') + # $locale->text('Quotations') + # $locale->text('RFQs') + # $locale->text('Checks') + # $locale->text('Receipts') # setup customer/vendor selection BP->get_vc(\%myconfig, \%$form); - - if (@{ $form->{"all_$form->{vc}"} }) { - map { $name .= "$_->{name}--$_->{id}\n" } @{ $form->{"all_$form->{vc}"} }; + + if (@{ $form->{"all_$form->{vc}"} || [] }) { + map { $name .= "$_->{name}--$_->{id}\n" } + @{ $form->{"all_$form->{vc}"} }; $name = qq|{vc}>\n$name|; } else { $name = qq|{vc} size=35>|; } - -# $locale->text('Customer') -# $locale->text('Vendor') - - %label = ( invoice => { title => 'Sales Invoices', name => 'Customer', l_invnumber => 'Y' }, - packing_list => { title => 'Packing Lists', name => 'Customer', l_invnumber => 'Y' }, - sales_order => { title => 'Sales Orders', name => 'Customer', l_ordnumber => 'Y' }, - purchase_order => { title => 'Purchase Orders', name => 'Vendor', l_ordnumber => 'Y' }, - sales_quotation => { title => 'Quotations', name => 'Customer', l_quonumber => 'Y' }, - request_quotation => { title => 'RFQs', name => 'Vendor', l_quonumber => 'Y' }, - check => { title => 'Checks', name => 'Vendor' }, - receipt => { title => 'Receipts', name => 'Customer' } - ); + + # $locale->text('Customer') + # $locale->text('Vendor') + + my %label = ( + invoice => + { title => 'Sales Invoices', name => 'Customer', l_invnumber => 'Y' }, + sales_order => + { title => 'Sales Orders', name => 'Customer', l_ordnumber => 'Y' }, + purchase_order => + { title => 'Purchase Orders', name => 'Vendor', l_ordnumber => 'Y' }, + sales_quotation => + { title => 'Quotations', name => 'Customer', l_quonumber => 'Y' }, + request_quotation => + { title => 'RFQs', name => 'Vendor', l_quonumber => 'Y' }, + check => { title => 'Checks', name => 'Vendor' }, + receipt => { title => 'Receipts', name => 'Customer' }); $label{invoice}{invnumber} = qq| - - |.$locale->text('Invoice Number').qq| - - + + | . $locale->text('Invoice Number') . qq| + + |; $label{invoice}{ordnumber} = qq| - - |.$locale->text('Order Number').qq| - - + + | . $locale->text('Order Number') . qq| + + |; $label{sales_quotation}{quonumber} = qq| - - |.$locale->text('Quotation Number').qq| - - + + | . $locale->text('Quotation Number') . qq| + + |; $label{check}{chknumber} = qq| - - |.$locale->text('Reference').qq| - - + + | . $locale->text('Reference') . qq| + + |; - $label{packing_list}{invnumber} = $label{invoice}{invnumber}; - $label{packing_list}{ordnumber} = $label{invoice}{ordnumber}; - $label{sales_order}{ordnumber} = $label{invoice}{ordnumber}; - $label{purchase_order}{ordnumber} = $label{invoice}{ordnumber}; + $label{sales_order}{ordnumber} = $label{invoice}{ordnumber}; + $label{purchase_order}{ordnumber} = $label{invoice}{ordnumber}; $label{request_quotation}{quonumber} = $label{sales_quotation}{quonumber}; - $label{receipt}{rctnumber} = $label{check}{chknumber}; - + $label{receipt}{rctnumber} = $label{check}{chknumber}; + # do one call to text - $form->{title} = $locale->text('Print')." ".$locale->text($label{$form->{type}}{title}); + $form->{title} = + $locale->text('Print') . " " + . $locale->text($label{ $form->{type} }{title}); if ($form->{type} =~ /(check|receipt)/) { if (BP->payment_accounts(\%myconfig, \%$form)) { $account = qq| - |.$locale->text('Account').qq| + | . $locale->text('Account') . qq| |; if ($form->{accounts}) { - $account .= qq| - + $account .= qq| + |; - foreach $ref (@{ $form->{accounts} }) { - $account .= qq| + foreach my $ref (@{ $form->{accounts} }) { + $account .= qq| $ref->{accno}--$ref->{description} |; - } + } - $account .= qq| + $account .= qq| |; } else { - $account .= qq| - + $account .= qq| + |; } - + $account .= qq| - + |; } } - - # use JavaScript Calendar or not - $form->{jsscript} = $jscalendar; - $jsscript = ""; - if ($form->{jsscript}) - { + + # use JavaScript Calendar or not + $form->{jsscript} = 1; + my $jsscript = ""; + my ($button1, $button2); + if ($form->{jsscript}) { + # with JavaScript Calendar $button1 = qq| - - text('button').qq|> + + text('button') . qq|> |; - $button2 = qq| - - text('button').qq|> + $button2 = qq| + + text('button') . qq|> |; + #write Trigger - $jsscript = Form->write_trigger(\%myconfig,"2","transdatefrom","BR","trigger1","transdateto","BL","trigger2"); - } - else - { - # without JavaScript Calendar - $button1 = qq| - |; - $button2 = qq| - |; - } - + $jsscript = + Form->write_trigger(\%myconfig, "2", "transdatefrom", "BR", "trigger1", + "transdateto", "BL", "trigger2"); + } else { + + # without JavaScript Calendar + $button1 = qq| + |; + $button2 = qq| + |; + } + $form->{javascript} .= qq||; $form->header; - + $onload = qq|;setupDateFormat('|. $myconfig{dateformat} .qq|', '|. $locale->text("Falsches Datumsformat!") .qq|')|; + $onload .= qq|;setupPoints('|. $myconfig{numberformat} .qq|', '|. $locale->text("wrongformat") .qq|')|; print qq| - + -{script}> + {vc}> {type}> @@ -187,23 +230,23 @@ sub search { - - Kunde - $name - - $account - $label{$form->{type}}{invnumber} - $label{$form->{type}}{ordnumber} - $label{$form->{type}}{quonumber} - $label{$form->{type}}{chknumber} - $label{$form->{type}}{rctnumber} - - |.$locale->text('From').qq| + + Kunde + $name + + $account + $label{$form->{type}}{invnumber} + $label{$form->{type}}{ordnumber} + $label{$form->{type}}{quonumber} + $label{$form->{type}}{chknumber} + $label{$form->{type}}{rctnumber} + + | . $locale->text('From') . qq| $button1 - |.$locale->text('Bis').qq| + | . $locale->text('Bis') . qq| $button2 - - + + @@ -214,12 +257,9 @@ sub search { -{path}> -{login}> -{password}> - - + @@ -230,18 +270,20 @@ $jsscript |; - $lxdebug->leave_sub(); + $main::lxdebug->leave_sub(); } +sub remove { + $main::lxdebug->enter_sub(); + + my $form = $main::form; + my $locale = $main::locale; + assert_bp_access(); -sub remove { - $lxdebug->enter_sub(); + my $selected = 0; - - $selected = 0; - - for $i (1 .. $form->{rowcount}) { + for my $i (1 .. $form->{rowcount}) { if ($form->{"checked_$i"}) { $selected = 1; last; @@ -249,147 +291,178 @@ sub remove { } $form->error('Nothing selected!') unless $selected; - + $form->{title} = $locale->text('Confirm!'); - + $form->header; print qq| -{script}> + |; map { delete $form->{$_} } qw(action header); - - foreach $key (keys %$form) { + + 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| +| + . $locale->text( + 'Are you sure you want to remove the marked entries from the queue?') + . qq| - + |; - $lxdebug->leave_sub(); + $main::lxdebug->leave_sub(); } - - sub yes { - $lxdebug->enter_sub(); + $main::lxdebug->enter_sub(); + + my $form = $main::form; + my %myconfig = %main::myconfig; + my $locale = $main::locale; + 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, $spool)); + $form->redirect($locale->text('Removed spoolfiles!')) + if (BP->delete_spool(\%myconfig, \%$form)); $form->error($locale->text('Cannot remove files!')); - $lxdebug->leave_sub(); + $main::lxdebug->leave_sub(); } - sub print { - $lxdebug->enter_sub(); + $main::lxdebug->enter_sub(); + + my $form = $main::form; + my %myconfig = %main::myconfig; + my $locale = $main::locale; + 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}); + map { $form->{callback} .= "&checked_$_=1" if $form->{"checked_$_"} } + (1 .. $form->{rowcount}); $form->{callback} .= "&header=1"; } - for $i (1 .. $form->{rowcount}) { + for my $i (1 .. $form->{rowcount}) { if ($form->{"checked_$i"}) { - $form->{OUT} = "| $myconfig{printer}"; $form->info($locale->text('Printing ... ')); - if (BP->print_spool(\%myconfig, \%$form, $spool)) { - 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!')); } - exit; + ::end_of_request(); } } $form->error('Nothing selected!'); - $lxdebug->leave_sub(); + $main::lxdebug->leave_sub(); } - sub list_spool { - $lxdebug->enter_sub(); + $main::lxdebug->enter_sub(); + my $form = $main::form; + my %myconfig = %main::myconfig; + my $locale = $main::locale; - $form->{$form->{vc}} = $form->unescape($form->{$form->{vc}}); - ($form->{$form->{vc}}, $form->{"$form->{vc}_id"}) = split(/--/, $form->{$form->{vc}}); + assert_bp_access(); - BP->get_spoolfiles(\%myconfig, \%$form); + $form->{ $form->{vc} } = $form->unescape($form->{ $form->{vc} }); + ($form->{ $form->{vc} }, $form->{"$form->{vc}_id"}) = + split(/--/, $form->{ $form->{vc} }); - $title = $form->escape($form->{title}); - $href = "$form->{script}?action=list_spool&path=$form->{path}&login=$form->{login}&password=$form->{password}&vc=$form->{vc}&type=$form->{type}&title=$title"; - - $title = $form->escape($form->{title},1); - $callback = "$form->{script}?action=list_spool&path=$form->{path}&login=$form->{login}&password=$form->{password}&vc=$form->{vc}&type=$form->{type}&title=$title"; + BP->get_spoolfiles(\%myconfig, \%$form); - 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'); + my $title = $form->escape($form->{title}); + my $href = "bp.pl?action=list_spool&vc=$form->{vc}&type=$form->{type}&title=$title"; + + $title = $form->escape($form->{title}, 1); + my $callback = + "bp.pl?action=list_spool&vc=$form->{vc}&type=$form->{type}&title=$title"; + my $option; + + 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}); + $callback .= "&account=" . $form->escape($form->{account}, 1); + $href .= "&account=" . $form->escape($form->{account}); $option .= "\n" if ($option); - $option .= $locale->text('Account')." : $form->{account}"; + $option .= $locale->text('Account') . " : $form->{account}"; } if ($form->{invnumber}) { - $callback .= "&invnumber=".$form->escape($form->{invnumber},1); - $href .= "&invnumber=".$form->escape($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}"; + $option .= $locale->text('Invoice Number') . " : $form->{invnumber}"; } if ($form->{ordnumber}) { - $callback .= "&ordnumber=".$form->escape($form->{ordnumber},1); - $href .= "&ordnumber=".$form->escape($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}"; + $option .= $locale->text('Order Number') . " : $form->{ordnumber}"; } if ($form->{quonumber}) { - $callback .= "&quonumber=".$form->escape($form->{quonumber},1); - $href .= "&quonumber=".$form->escape($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}"; + $option .= $locale->text('Quotation Number') . " : $form->{quonumber}"; } - + 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); + $href .= "&transdatefrom=$form->{transdatefrom}"; + $option .= "\n" if ($option); + $option .= + $locale->text('From') . " " + . $locale->date(\%myconfig, $form->{transdatefrom}, 1); } 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); + $href .= "&transdateto=$form->{transdateto}"; + $option .= "\n" if ($option); + $option .= + $locale->text('To') . " " + . $locale->date(\%myconfig, $form->{transdateto}, 1); } - $name = ucfirst $form->{vc}; - - @columns = (transdate); - if ($form->{type} =~ /(invoice|packing_list|check|receipt)/) { - push @columns, "invnumber"; - } + my $name = ucfirst $form->{vc}; + + my @columns = qw(transdate); if ($form->{type} =~ /_order$/) { push @columns, "ordnumber"; } @@ -397,25 +470,43 @@ sub list_spool { push @columns, "quonumber"; } - push @columns, (name, spoolfile); - @column_index = $form->sort_columns(@columns); + push @columns, qw(name spoolfile); + my @column_index = $form->sort_columns(@columns); unshift @column_index, "checked"; - $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').""; - + 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| -{script}> + @@ -428,54 +519,62 @@ sub list_spool { - + |; 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); - - $i = 0; - - foreach $ref (@{ $form->{SPOOL} }) { + + 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"; } - $module = "$ref->{module}.pl"; - + my $module = "$ref->{module}.pl"; + $column_data{transdate} = "$ref->{transdate} "; if ($spoolfile eq $ref->{spoolfile}) { $column_data{checked} = qq||; } else { - $column_data{checked} = qq|{"checked_$i"} $form->{"checked_$i"}>|; + $column_data{checked} = + qq|{"checked_$i"} $form->{"checked_$i"}>|; } - - $column_data{invnumber} = "{id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&type=$form->{type}&callback=$callback>$ref->{invnumber}"; - $column_data{ordnumber} = "{id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&type=$form->{type}&callback=$callback>$ref->{ordnumber}"; - $column_data{quonumber} = "{id}&path=$form->{path}&login=$form->{login}&password=$form->{password}&type=$form->{type}&callback=$callback>$ref->{quonumber}"; - $column_data{name} = "$ref->{name}"; - $column_data{spoolfile} = qq|{spoolfile}>$ref->{spoolfile} + + $column_data{invnumber} = + "{id}&type=$form->{type}&callback=$callback>$ref->{invnumber}"; + $column_data{ordnumber} = + "{id}&type=$form->{type}&callback=$callback>$ref->{ordnumber}"; + $column_data{quonumber} = + "{id}&type=$form->{type}&callback=$callback>$ref->{quonumber}"; + $column_data{name} = "$ref->{name}"; + $column_data{spoolfile} = + qq|{spoolfile}>$ref->{spoolfile} {spoolfile}> |; $spoolfile = $ref->{spoolfile}; - - $j++; $j %= 2; + + $j++; + $j %= 2; print " "; @@ -509,24 +608,31 @@ sub list_spool { - -{path}> -{login}> -{password}> |; - if ($myconfig{printer}) { +# if ($myconfig{printer}) { print qq| - - - +{transdateto}> +{transdatefrom}> +{invnumber}> +{ordnumber}> +{quonumber}> +{customer}> +{vendor}> + + + |; - } - if ($form->{menubar}) { - require "$form->{path}/menu.pl"; - &menubar; - } +$form->get_lists(printers=>"ALL_PRINTERS"); +print qq||; +print map(qq|| . H($_->{printer_description}) . qq||, @{ $form->{ALL_PRINTERS} }); +print qq||; + +# } print qq| @@ -535,21 +641,21 @@ sub list_spool { |; - $lxdebug->leave_sub(); + $main::lxdebug->leave_sub(); } - sub select_all { - $lxdebug->enter_sub(); + $main::lxdebug->enter_sub(); + my $form = $main::form; + + assert_bp_access(); map { $form->{"checked_$_"} = 1 } (1 .. $form->{rowcount}); &list_spool; - - $lxdebug->leave_sub(); -} + $main::lxdebug->leave_sub(); +} -sub continue { &{ $form->{nextsub} } }; - +sub continue { call_sub($main::form->{"nextsub"}); }