Revision 9da3e39b
Von Sven Schöling vor mehr als 15 Jahren hinzugefügt
bin/mozilla/io.pl | ||
---|---|---|
|
||
require "bin/mozilla/common.pl";
|
||
|
||
use strict;
|
||
|
||
# any custom scripts for this one
|
||
if (-f "bin/mozilla/custom_io.pl") {
|
||
eval { require "bin/mozilla/custom_io.pl"; };
|
||
... | ... | |
# neue Optik im Rechnungsformular #
|
||
########################################
|
||
sub display_row {
|
||
$lxdebug->enter_sub();
|
||
$main::lxdebug->enter_sub();
|
||
|
||
_check_io_auth();
|
||
|
||
my $form = $main::form;
|
||
my %myconfig = %main::myconfig;
|
||
my $locale = $main::locale;
|
||
my $cgi = $main::cgi;
|
||
|
||
my $numrows = shift;
|
||
|
||
my ($readonly, $stock_in_out, $stock_in_out_title);
|
||
... | ... | |
|
||
# translations, unused commented out
|
||
# $runningnumber = $locale->text('No.');
|
||
$deliverydate = $locale->text('Delivery Date');
|
||
$serialnumber = $locale->text('Serial No.');
|
||
$projectnumber = $locale->text('Project');
|
||
# my $deliverydate = $locale->text('Delivery Date');
|
||
my $serialnumber = $locale->text('Serial No.');
|
||
my $projectnumber = $locale->text('Project');
|
||
# $partsgroup = $locale->text('Group');
|
||
$reqdate = $locale->text('Reqdate');
|
||
$deliverydate = $locale->text('Required by');
|
||
my $reqdate = $locale->text('Reqdate');
|
||
my $deliverydate = $locale->text('Required by');
|
||
|
||
# special alignings
|
||
my %align = map { $_ => 'right' } qw(qty ship right sellprice_pg discount linetotal stock_in_out);
|
||
... | ... | |
_update_custom_variables();
|
||
|
||
# rows
|
||
for $i (1 .. $numrows) {
|
||
|
||
my @ROWS;
|
||
for my $i (1 .. $numrows) {
|
||
my %column_data = ();
|
||
|
||
# undo formatting
|
||
... | ... | |
# / unit ending
|
||
|
||
$form->{"sellprice_$i"} =~ /\.(\d+)/;
|
||
$decimalplaces = max 2, length $1;
|
||
my $decimalplaces = max 2, length $1;
|
||
|
||
$price_factor = $price_factors{$form->{"price_factor_id_$i"}} || 1;
|
||
$discount = $form->round_amount($form->{"qty_$i"} * $form->{"sellprice_$i"} * $form->{"discount_$i"} / 100 / $price_factor, 2);
|
||
$linetotal = $form->round_amount($form->{"qty_$i"} * $form->{"sellprice_$i"} * (100 - $form->{"discount_$i"}) / 100 / $price_factor, 2);
|
||
my $price_factor = $price_factors{$form->{"price_factor_id_$i"}} || 1;
|
||
my $discount = $form->round_amount($form->{"qty_$i"} * $form->{"sellprice_$i"} * $form->{"discount_$i"} / 100 / $price_factor, 2);
|
||
my $linetotal = $form->round_amount($form->{"qty_$i"} * $form->{"sellprice_$i"} * (100 - $form->{"discount_$i"}) / 100 / $price_factor, 2);
|
||
my $rows = $form->numtextrows($form->{"description_$i"}, 30, 6);
|
||
|
||
$column_data{runningnumber} = $cgi->textfield(-name => "runningnumber_$i", -size => 5, -value => $i); # HuT
|
||
$column_data{partnumber} = $cgi->textfield(-name => "partnumber_$i", -size => 12, -value => $form->{"partnumber_$i"});
|
||
$column_data{description} = ((($rows = $form->numtextrows($form->{"description_$i"}, 30, 6)) > 1) # if description is too large, use a textbox instead
|
||
$column_data{description} = (($rows > 1) # if description is too large, use a textbox instead
|
||
? $cgi->textarea( -name => "description_$i", -default => $form->{"description_$i"}, -rows => $rows, -columns => 30)
|
||
: $cgi->textfield(-name => "description_$i", -size => 30, -value => $form->{"description_$i"}))
|
||
. $cgi->button(-value => $locale->text('L'), -onClick => "set_longdescription_window('longdescription_$i')");
|
||
... | ... | |
$form->{marge_percent} = ($form->{sellprice_total} - $form->{lastcost_total}) / $form->{sellprice_total} * 100;
|
||
}
|
||
|
||
$lxdebug->leave_sub();
|
||
$main::lxdebug->leave_sub();
|
||
}
|
||
|
||
##################################################
|
||
# build html-code for pricegroups in variable $form->{prices_$j}
|
||
|
||
sub set_pricegroup {
|
||
$lxdebug->enter_sub();
|
||
$main::lxdebug->enter_sub();
|
||
|
||
my $form = $main::form;
|
||
my $locale = $main::locale;
|
||
my $cgi = $main::cgi;
|
||
|
||
_check_io_auth();
|
||
|
||
my $rowcount = shift;
|
||
for $j (1 .. $rowcount) {
|
||
for my $j (1 .. $rowcount) {
|
||
next unless $form->{PRICES}{$j};
|
||
# build drop down list for pricegroups
|
||
my $option_tmpl = qq|<option value="%s--%s" %s>%s</option>|;
|
||
$form->{"prices_$j"} = join '', map { sprintf $option_tmpl, @$_{qw(price pricegroup_id selected pricegroup)} }
|
||
(+{ pricegroup => $locale->text("none (pricegroup)") }, @{ $form->{PRICES}{$j} });
|
||
|
||
foreach $item (@{ $form->{PRICES}{$j} }) {
|
||
foreach my $item (@{ $form->{PRICES}{$j} }) {
|
||
# set new selectedpricegroup_id and prices for "Preis"
|
||
$form->{"pricegroup_old_$j"} = $item->{pricegroup_id} if $item->{selected} && $item->{pricegroup_id};
|
||
$form->{"sellprice_$j"} = $item->{price} if $item->{selected} && $item->{pricegroup_id};
|
||
$form->{"price_new_$j"} = $form->{"sellprice_$j"} if $item->{selected} || !$item->{pricegroup_id};
|
||
}
|
||
}
|
||
$lxdebug->leave_sub();
|
||
$main::lxdebug->leave_sub();
|
||
}
|
||
|
||
sub select_item {
|
||
$lxdebug->enter_sub();
|
||
$main::lxdebug->enter_sub();
|
||
|
||
my $form = $main::form;
|
||
my %myconfig = %main::myconfig;
|
||
my $locale = $main::locale;
|
||
my $cgi = $main::cgi;
|
||
|
||
# diese variable kommt schon in der methode display_row vor, kann man die besser wiederverwenden? @mb fragen. ich check das jetzt erstmal so ein
|
||
my $is_purchase = (first { $_ eq $form->{type} } qw(request_quotation purchase_order purchase_delivery_order)) || ($form->{script} eq 'ir.pl');
|
||
_check_io_auth();
|
||
|
||
@column_index = qw(ndx partnumber description rop onhand unit sellprice);
|
||
|
||
my @column_index = qw(ndx partnumber description rop onhand unit sellprice);
|
||
my %column_data;
|
||
$column_data{ndx} = qq|<th> </th>|;
|
||
$column_data{partnumber} =
|
||
qq|<th class="listheading">| . $locale->text('Number') . qq|</th>|;
|
||
... | ... | |
# list items with radio button on a form
|
||
$form->header;
|
||
|
||
$title = $locale->text('Select from one of the items below');
|
||
$colspan = $#column_index + 1;
|
||
my $title = $locale->text('Select from one of the items below');
|
||
my $colspan = $#column_index + 1;
|
||
|
||
print qq|
|
||
<body>
|
||
... | ... | |
qw(bin listprice inventory_accno income_accno expense_accno unit weight
|
||
assembly taxaccounts partsgroup formel longdescription not_discountable
|
||
part_payment_id partnotes id lastcost price_factor_id price_factor);
|
||
push @new_fields, "lizenzen" if ($lizenzen);
|
||
push @new_fields, "lizenzen" if ($main::lizenzen);
|
||
push @new_fields, grep { m/^ic_cvar_/ } keys %{ $form->{item_list}->[0] };
|
||
|
||
my $i = 0;
|
||
foreach $ref (@{ $form->{item_list} }) {
|
||
$checked = ($i++) ? "" : "checked";
|
||
my $j;
|
||
foreach my $ref (@{ $form->{item_list} }) {
|
||
my $checked = ($i++) ? "" : "checked";
|
||
|
||
if ($lizenzen) {
|
||
if ($main::lizenzen) {
|
||
if ($ref->{inventory_accno} > 0) {
|
||
$ref->{"lizenzen"} = qq|<option></option>|;
|
||
foreach $item (@{ $form->{LIZENZEN}{ $ref->{"id"} } }) {
|
||
foreach my $item (@{ $form->{LIZENZEN}{ $ref->{"id"} } }) {
|
||
$ref->{"lizenzen"} .=
|
||
qq|<option value=\"$item->{"id"}\">$item->{"licensenumber"}</option>|;
|
||
}
|
||
... | ... | |
map { delete $form->{$_} } qw(action item_list header);
|
||
|
||
# save all other form variables
|
||
foreach $key (keys %${form}) {
|
||
foreach my $key (keys %${form}) {
|
||
next if (($key eq 'login') || ($key eq 'password') || ('' ne ref $form->{$key}));
|
||
$form->{$key} =~ s/\"/"/g;
|
||
print qq|<input name="$key" type="hidden" value="$form->{$key}">\n|;
|
||
... | ... | |
</html>
|
||
|;
|
||
|
||
$lxdebug->leave_sub();
|
||
$main::lxdebug->leave_sub();
|
||
}
|
||
|
||
sub item_selected {
|
||
$lxdebug->enter_sub();
|
||
$main::lxdebug->enter_sub();
|
||
|
||
my $form = $main::form;
|
||
my %myconfig = %main::myconfig;
|
||
|
||
_check_io_auth();
|
||
|
||
# replace the last row with the checked row
|
||
$i = $form->{rowcount};
|
||
my $i = $form->{rowcount};
|
||
$i = $form->{assembly_rows} if ($form->{item} eq 'assembly');
|
||
|
||
# index for new item
|
||
$j = $form->{ndx};
|
||
my $j = $form->{ndx};
|
||
|
||
#sk
|
||
#($form->{"sellprice_$i"},$form->{"$pricegroup_old_$i"}) = split /--/, $form->{"sellprice_$i"};
|
||
#$form->{"sellprice_$i"} = $form->{"sellprice_$i"};
|
||
|
||
# if there was a price entered, override it
|
||
$sellprice = $form->parse_amount(\%myconfig, $form->{"sellprice_$i"});
|
||
my $sellprice = $form->parse_amount(\%myconfig, $form->{"sellprice_$i"});
|
||
|
||
my @new_fields =
|
||
qw(id partnumber description sellprice listprice inventory_accno
|
||
... | ... | |
$form->{payment_id} = $form->{"part_payment_id_$i"};
|
||
}
|
||
|
||
if ($lizenzen) {
|
||
if ($main::lizenzen) {
|
||
map { $form->{"${_}_$i"} = $form->{"new_${_}_$j"} } qw(lizenzen);
|
||
}
|
||
|
||
($dec) = ($form->{"sellprice_$i"} =~ /\.(\d+)/);
|
||
my ($dec) = ($form->{"sellprice_$i"} =~ /\.(\d+)/);
|
||
$dec = length $dec;
|
||
$decimalplaces = ($dec > 2) ? $dec : 2;
|
||
my $decimalplaces = ($dec > 2) ? $dec : 2;
|
||
|
||
if ($sellprice) {
|
||
$form->{"sellprice_$i"} = $sellprice;
|
||
... | ... | |
$form->{"discount_$i"} = 0;
|
||
}
|
||
|
||
$amount =
|
||
my $amount =
|
||
$form->{"sellprice_$i"} * (1 - $form->{"discount_$i"} / 100) *
|
||
$form->{"qty_$i"};
|
||
map { $form->{"${_}_base"} += $amount }
|
||
... | ... | |
|
||
&display_form;
|
||
|
||
$lxdebug->leave_sub();
|
||
$main::lxdebug->leave_sub();
|
||
}
|
||
|
||
sub new_item {
|
||
$lxdebug->enter_sub();
|
||
$main::lxdebug->enter_sub();
|
||
|
||
my $form = $main::form;
|
||
my %myconfig = %main::myconfig;
|
||
|
||
_check_io_auth();
|
||
|
||
... | ... | |
# save all form variables except action in a previousform variable
|
||
my $previousform = join '&', map { my $value = $form->{$_}; $value =~ s/&/%26/; "$_=$value" } grep { !/action/ } keys %$form;
|
||
|
||
my @HIDDENS;
|
||
push @HIDDENS, { 'name' => 'previousform', 'value' => $form->escape($previousform, 1) };
|
||
push @HIDDENS, map +{ 'name' => $_, 'value' => $form->{$_} }, qw(rowcount vc);
|
||
push @HIDDENS, map +{ 'name' => $_, 'value' => $form->{"${_}_$form->{rowcount}"} }, qw(partnumber description unit);
|
||
... | ... | |
$form->header();
|
||
print $form->parse_html_template("generic/new_item", { HIDDENS => [ sort { $a->{name} cmp $b->{name} } @HIDDENS ] } );
|
||
|
||
$lxdebug->leave_sub();
|
||
$main::lxdebug->leave_sub();
|
||
}
|
||
|
||
sub check_form {
|
||
$lxdebug->enter_sub();
|
||
$main::lxdebug->enter_sub();
|
||
|
||
my $form = $main::form;
|
||
my %myconfig = %main::myconfig;
|
||
|
||
_check_io_auth();
|
||
|
||
... | ... | |
|
||
map { $a[$j]->{$_} = $form->{"${_}_$i"} } @flds;
|
||
$count++;
|
||
if ($lizenzen) {
|
||
if ($main::lizenzen) {
|
||
if ($form->{"licensenumber_$i"} == -1) {
|
||
&new_license($i);
|
||
exit;
|
||
... | ... | |
|
||
&display_form;
|
||
|
||
$lxdebug->leave_sub();
|
||
$main::lxdebug->leave_sub();
|
||
}
|
||
|
||
sub invoicetotal {
|
||
$lxdebug->enter_sub();
|
||
$main::lxdebug->enter_sub();
|
||
|
||
my $form = $main::form;
|
||
my %myconfig = %main::myconfig;
|
||
|
||
_check_io_auth();
|
||
|
||
... | ... | |
if !$form->{taxincluded};
|
||
|
||
$form->{oldtotalpaid} = 0;
|
||
for $i (1 .. $form->{paidaccounts}) {
|
||
for my $i (1 .. $form->{paidaccounts}) {
|
||
$form->{oldtotalpaid} += $form->{"paid_$i"};
|
||
}
|
||
|
||
$lxdebug->leave_sub();
|
||
$main::lxdebug->leave_sub();
|
||
|
||
# return total
|
||
return ($form->{oldinvtotal} - $form->{oldtotalpaid});
|
||
}
|
||
|
||
sub validate_items {
|
||
$lxdebug->enter_sub();
|
||
$main::lxdebug->enter_sub();
|
||
|
||
my $form = $main::form;
|
||
my $locale = $main::locale;
|
||
|
||
_check_io_auth();
|
||
|
||
... | ... | |
exit;
|
||
}
|
||
|
||
for $i (1 .. $form->{rowcount} - 1) {
|
||
for my $i (1 .. $form->{rowcount} - 1) {
|
||
$form->isblank("partnumber_$i",
|
||
$locale->text('Number missing in Row') . " $i");
|
||
}
|
||
|
||
$lxdebug->leave_sub();
|
||
$main::lxdebug->leave_sub();
|
||
}
|
||
|
||
sub order {
|
||
$lxdebug->enter_sub();
|
||
$main::lxdebug->enter_sub();
|
||
|
||
my $form = $main::form;
|
||
my %myconfig = %main::myconfig;
|
||
my $locale = $main::locale;
|
||
|
||
_check_io_auth();
|
||
|
||
... | ... | |
$form->{old_salesman_id} = $form->{salesman_id};
|
||
|
||
map { delete $form->{$_} } qw(id printed emailed queued);
|
||
my $buysell;
|
||
if ($form->{script} eq 'ir.pl' || $form->{type} eq 'request_quotation') {
|
||
$form->{title} = $locale->text('Add Purchase Order');
|
||
$form->{vc} = 'vendor';
|
||
... | ... | |
my $script = $form->{"script"};
|
||
$script =~ s|.*/||;
|
||
$script =~ s|.pl$||;
|
||
$locale = new Locale($language, $script);
|
||
$locale = new Locale($main::language, $script);
|
||
|
||
map { $form->{"select$_"} = "" } ($form->{vc}, "currency");
|
||
|
||
$currency = $form->{currency};
|
||
my $currency = $form->{currency};
|
||
|
||
&order_links;
|
||
|
||
... | ... | |
$form->{forex} = $form->check_exchangerate(\%myconfig, $form->{currency}, $form->{transdate}, $buysell);
|
||
$form->{exchangerate} = $form->{forex} || '';
|
||
|
||
for $i (1 .. $form->{rowcount}) {
|
||
for my $i (1 .. $form->{rowcount}) {
|
||
map({ $form->{"${_}_${i}"} = $form->parse_amount(\%myconfig, $form->{"${_}_${i}"})
|
||
if ($form->{"${_}_${i}"}) }
|
||
qw(ship qty sellprice listprice basefactor discount));
|
||
... | ... | |
&prepare_order;
|
||
&display_form;
|
||
|
||
$lxdebug->leave_sub();
|
||
$main::lxdebug->leave_sub();
|
||
}
|
||
|
||
sub quotation {
|
||
$lxdebug->enter_sub();
|
||
$main::lxdebug->enter_sub();
|
||
|
||
my $form = $main::form;
|
||
my %myconfig = %main::myconfig;
|
||
my $locale = $main::locale;
|
||
|
||
_check_io_auth();
|
||
|
||
... | ... | |
}
|
||
map { delete $form->{$_} } qw(id printed emailed queued);
|
||
|
||
my $buysell;
|
||
if ($form->{script} eq 'ir.pl' || $form->{type} eq 'purchase_order') {
|
||
$form->{title} = $locale->text('Add Request for Quotation');
|
||
$form->{vc} = 'vendor';
|
||
... | ... | |
|
||
map { $form->{"select$_"} = "" } ($form->{vc}, "currency");
|
||
|
||
$currency = $form->{currency};
|
||
my $currency = $form->{currency};
|
||
|
||
&order_links;
|
||
|
||
... | ... | |
$form->{forex} = $form->check_exchangerate( \%myconfig, $form->{currency}, $form->{transdate}, $buysell);
|
||
$form->{exchangerate} = $form->{forex} || '';
|
||
|
||
for $i (1 .. $form->{rowcount}) {
|
||
for my $i (1 .. $form->{rowcount}) {
|
||
map({ $form->{"${_}_${i}"} = $form->parse_amount(\%myconfig,
|
||
$form->{"${_}_${i}"})
|
||
if ($form->{"${_}_${i}"}) }
|
||
... | ... | |
&prepare_order;
|
||
&display_form;
|
||
|
||
$lxdebug->leave_sub();
|
||
$main::lxdebug->leave_sub();
|
||
}
|
||
|
||
sub request_for_quotation {
|
||
... | ... | |
}
|
||
|
||
sub edit_e_mail {
|
||
$lxdebug->enter_sub();
|
||
$main::lxdebug->enter_sub();
|
||
|
||
my $form = $main::form;
|
||
my %myconfig = %main::myconfig;
|
||
my $locale = $main::locale;
|
||
|
||
_check_io_auth();
|
||
|
||
... | ... | |
$form->{"email"} = $form->{"cp_email"};
|
||
}
|
||
|
||
$title = $locale->text('E-mail') . " " . $form->get_formname_translation();
|
||
my $title = $locale->text('E-mail') . " " . $form->get_formname_translation();
|
||
|
||
$form->{oldmedia} = $form->{media};
|
||
$form->{media} = "email";
|
||
... | ... | |
HIDDEN => [ map +{ name => $_, value => $form->{$_} }, @hidden_keys ],
|
||
SHOW_BCC => $myconfig{role} eq 'admin' });
|
||
|
||
$lxdebug->leave_sub();
|
||
$main::lxdebug->leave_sub();
|
||
}
|
||
|
||
sub send_email {
|
||
$lxdebug->enter_sub();
|
||
$main::lxdebug->enter_sub();
|
||
|
||
my $form = $main::form;
|
||
my %myconfig = %main::myconfig;
|
||
|
||
_check_io_auth();
|
||
|
||
... | ... | |
$form->{callback} = $callback;
|
||
$form->redirect();
|
||
|
||
$lxdebug->leave_sub();
|
||
$main::lxdebug->leave_sub();
|
||
}
|
||
|
||
# generate the printing options displayed at the bottom of oe and is forms.
|
||
... | ... | |
#
|
||
# the inline options is untested, but intended to be used later in metatemplating
|
||
sub print_options {
|
||
$lxdebug->enter_sub();
|
||
$main::lxdebug->enter_sub();
|
||
|
||
my $form = $main::form;
|
||
my %myconfig = %main::myconfig;
|
||
my $locale = $main::locale;
|
||
|
||
_check_io_auth();
|
||
|
||
... | ... | |
|
||
# names 3 parameters and returns a hashref, for use in templates
|
||
sub opthash { +{ value => shift, selected => shift, oname => shift } }
|
||
(@FORMNAME, @FORMNAME, @LANGUAGE_ID, @FORMAT, @SENDMODE, @MEDIA, @PRINTER_ID, @SELECTS) = ();
|
||
my (@FORMNAME, @LANGUAGE_ID, @FORMAT, @SENDMODE, @MEDIA, @PRINTER_ID, @SELECTS) = ();
|
||
|
||
# note: "||"-selection is only correct for values where "0" is _not_ a correct entry
|
||
$form->{sendmode} = "attachment";
|
||
... | ... | |
|
||
push @MEDIA, grep $_,
|
||
opthash("screen", $form->{OP}{screen}, $locale->text('Screen')),
|
||
(scalar @{ $form->{printers} } && $latex_templates) ?
|
||
(scalar @{ $form->{printers} } && $main::latex_templates) ?
|
||
opthash("printer", $form->{OP}{printer}, $locale->text('Printer')) : undef,
|
||
($latex_templates && !$options{no_queue}) ?
|
||
($main::latex_templates && !$options{no_queue}) ?
|
||
opthash("queue", $form->{OP}{queue}, $locale->text('Queue')) : undef
|
||
if ($form->{media} ne 'email');
|
||
|
||
push @FORMAT, grep $_,
|
||
($opendocument_templates && $openofficeorg_writer_bin && $xvfb_bin && (-x $openofficeorg_writer_bin) && (-x $xvfb_bin)
|
||
($main::opendocument_templates && $main::openofficeorg_writer_bin && $main::xvfb_bin
|
||
&& (-x $main::openofficeorg_writer_bin) && (-x $main::xvfb_bin)
|
||
&& !$options{no_opendocument_pdf}) ?
|
||
opthash("opendocument_pdf", $form->{DF}{"opendocument_pdf"}, $locale->text("PDF (OpenDocument/OASIS)")) : undef,
|
||
($latex_templates) ?
|
||
($main::latex_templates) ?
|
||
opthash("pdf", $form->{DF}{pdf}, $locale->text('PDF')) : undef,
|
||
($latex_templates && !$options{no_postscript}) ?
|
||
($main::latex_templates && !$options{no_postscript}) ?
|
||
opthash("postscript", $form->{DF}{postscript}, $locale->text('Postscript')) : undef,
|
||
(!$options{no_html}) ?
|
||
opthash("html", $form->{DF}{html}, "HTML") : undef,
|
||
($opendocument_templates && !$options{no_opendocument}) ?
|
||
($main::opendocument_templates && !$options{no_opendocument}) ?
|
||
opthash("opendocument", $form->{DF}{opendocument}, $locale->text("OpenDocument/OASIS")) : undef;
|
||
|
||
push @LANGUAGE_ID,
|
||
... | ... | |
map { opthash($_->{id}, ($_->{id} eq $form->{printer_id} ? 'selected' : ''), $_->{printer_description}) } +{}, @{ $form->{printers} }
|
||
if ((ref $form->{printers} eq 'ARRAY') && scalar @{ $form->{printers } });
|
||
|
||
@SELECTS = map { sname => lc $_, DATA => \@$_, show => !$options{"hide_" . lc($_)} && scalar @$_ }, qw(FORMNAME LANGUAGE_ID FORMAT SENDMODE MEDIA PRINTER_ID);
|
||
{
|
||
no strict 'refs';
|
||
@SELECTS = map { sname => lc $_, DATA => \@$_, show => !$options{"hide_" . lc($_)} && scalar @$_ }, qw(FORMNAME LANGUAGE_ID FORMAT SENDMODE MEDIA PRINTER_ID);
|
||
}
|
||
|
||
my %dont_display_groupitems = (
|
||
'dunning' => 1,
|
||
);
|
||
|
||
%template_vars = (
|
||
display_copies => scalar @{ $form->{printers} } && $latex_templates && $form->{media} ne 'email',
|
||
my %template_vars = (
|
||
display_copies => scalar @{ $form->{printers} } && $main::latex_templates && $form->{media} ne 'email',
|
||
display_remove_draft => (!$form->{id} && $form->{draft_id}),
|
||
display_groupitems => !$dont_display_groupitems{$form->{type}},
|
||
groupitems_checked => $form->{groupitems} ? "checked" : '',
|
||
... | ... | |
my $print_options = $form->parse_html_template("generic/print_options", { SELECTS => \@SELECTS, %template_vars } );
|
||
|
||
if ($options{inline}) {
|
||
$lxdebug->leave_sub();
|
||
$main::lxdebug->leave_sub();
|
||
return $print_options;
|
||
}
|
||
|
||
print $print_options;
|
||
|
||
$lxdebug->leave_sub();
|
||
$main::lxdebug->leave_sub();
|
||
}
|
||
|
||
sub print {
|
||
$lxdebug->enter_sub();
|
||
$main::lxdebug->enter_sub();
|
||
|
||
my $form = $main::form;
|
||
my $locale = $main::locale;
|
||
|
||
_check_io_auth();
|
||
|
||
if ($form->{print_nextsub}) {
|
||
call_sub($form->{print_nextsub});
|
||
$lxdebug->leave_sub();
|
||
$main::lxdebug->leave_sub();
|
||
return;
|
||
}
|
||
|
||
# if this goes to the printer pass through
|
||
my $old_form;
|
||
if ($form->{media} eq 'printer' || $form->{media} eq 'queue') {
|
||
$form->error($locale->text('Select postscript or PDF!'))
|
||
if ($form->{format} !~ /(postscript|pdf)/);
|
||
... | ... | |
|
||
&print_form($old_form);
|
||
|
||
$lxdebug->leave_sub();
|
||
$main::lxdebug->leave_sub();
|
||
}
|
||
|
||
sub print_form {
|
||
$lxdebug->enter_sub();
|
||
$main::lxdebug->enter_sub();
|
||
|
||
my $form = $main::form;
|
||
my %myconfig = %main::myconfig;
|
||
my $locale = $main::locale;
|
||
|
||
_check_io_auth();
|
||
|
||
my ($old_form) = @_;
|
||
|
||
$inv = "inv";
|
||
$due = "due";
|
||
$numberfld = "invnumber";
|
||
my $inv = "inv";
|
||
my $due = "due";
|
||
my $numberfld = "invnumber";
|
||
my $order;
|
||
|
||
$display_form =
|
||
my $display_form =
|
||
($form->{display_form}) ? $form->{display_form} : "display_form";
|
||
|
||
# $form->{"notes"} will be overridden by the customer's/vendor's "notes" field. So save it here.
|
||
... | ... | |
my ($saved_email, $saved_cc, $saved_bcc) =
|
||
($form->{"email"}, $form->{"cc"}, $form->{"bcc"});
|
||
|
||
$language_saved = $form->{language_id};
|
||
$payment_id_saved = $form->{payment_id};
|
||
$salesman_id_saved = $form->{salesman_id};
|
||
$cp_id_saved = $form->{cp_id};
|
||
my $language_saved = $form->{language_id};
|
||
my $payment_id_saved = $form->{payment_id};
|
||
my $salesman_id_saved = $form->{salesman_id};
|
||
my $cp_id_saved = $form->{cp_id};
|
||
|
||
call_sub("$form->{vc}_details") if ($form->{vc});
|
||
|
||
... | ... | |
$form->get_shipto(\%myconfig);
|
||
}
|
||
|
||
@a = qw(name street zipcode city country contact);
|
||
my @a = qw(name street zipcode city country contact);
|
||
|
||
$shipto = 1;
|
||
my $shipto = 1;
|
||
|
||
# if there is no shipto fill it in from billto
|
||
foreach $item (@a) {
|
||
foreach my $item (@a) {
|
||
if ($form->{"shipto$item"}) {
|
||
$shipto = 0;
|
||
last;
|
||
... | ... | |
$form->{printed} .= " $form->{formname}";
|
||
$form->{printed} =~ s/^ //;
|
||
}
|
||
$printed = $form->{printed};
|
||
my $printed = $form->{printed};
|
||
|
||
if ($form->{media} eq 'email') {
|
||
$form->{subject} = qq|$form->{label} $form->{"${inv}number"}|
|
||
... | ... | |
$form->{emailed} .= " $form->{formname}";
|
||
$form->{emailed} =~ s/^ //;
|
||
}
|
||
$emailed = $form->{emailed};
|
||
my $emailed = $form->{emailed};
|
||
|
||
if ($form->{media} eq 'queue') {
|
||
%queued = map { s|.*/|| } split / /, $form->{queued};
|
||
my %queued = map { s|.*/|| } split / /, $form->{queued};
|
||
|
||
my $filename;
|
||
if ($filename = $queued{ $form->{formname} }) {
|
||
$form->{queued} =~ s/\Q$form->{formname} $filename\E//;
|
||
unlink "$spool/$filename";
|
||
unlink "$main::spool/$filename";
|
||
$filename =~ s/\..*$//g;
|
||
} else {
|
||
$filename = time;
|
||
... | ... | |
}
|
||
|
||
$filename .= ($form->{postscript}) ? '.ps' : '.pdf';
|
||
$form->{OUT} = ">$spool/$filename";
|
||
$form->{OUT} = ">$main::spool/$filename";
|
||
|
||
# add type
|
||
$form->{queued} .= " $form->{formname} $filename";
|
||
|
||
$form->{queued} =~ s/^ //;
|
||
}
|
||
$queued = $form->{queued};
|
||
my $queued = $form->{queued};
|
||
|
||
# saving the history
|
||
if(!exists $form->{addition}) {
|
||
... | ... | |
}
|
||
# /saving the history
|
||
|
||
$form->parse_template(\%myconfig, $userspath);
|
||
$form->parse_template(\%myconfig, $main::userspath);
|
||
|
||
$form->{callback} = "";
|
||
|
||
if ($form->{media} eq 'email') {
|
||
$form->{message} = $locale->text('sent') unless $form->{message};
|
||
}
|
||
$message = $form->{message};
|
||
my $message = $form->{message};
|
||
|
||
# if we got back here restore the previous form
|
||
if ($form->{media} =~ /(printer|email|queue)/) {
|
||
... | ... | |
$form->update_status(\%myconfig)
|
||
if ($form->{media} eq 'queue' && $form->{id});
|
||
|
||
return $lxdebug->leave_sub() if ($old_form eq "return");
|
||
return $main::lxdebug->leave_sub() if ($old_form eq "return");
|
||
|
||
if ($old_form) {
|
||
|
||
... | ... | |
map { $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) }
|
||
qw(exchangerate creditlimit creditremaining);
|
||
|
||
for $i (1 .. $form->{paidaccounts}) {
|
||
for my $i (1 .. $form->{paidaccounts}) {
|
||
map {
|
||
$form->{"${_}_$i"} =
|
||
$form->parse_amount(\%myconfig, $form->{"${_}_$i"})
|
||
... | ... | |
exit;
|
||
}
|
||
|
||
$msg =
|
||
my $msg =
|
||
($form->{media} eq 'printer')
|
||
? $locale->text('sent to printer')
|
||
: $locale->text('emailed to') . " $form->{email}";
|
||
... | ... | |
exit;
|
||
}
|
||
|
||
$lxdebug->leave_sub();
|
||
$main::lxdebug->leave_sub();
|
||
}
|
||
|
||
sub customer_details {
|
||
$lxdebug->enter_sub();
|
||
$main::lxdebug->enter_sub();
|
||
|
||
my $form = $main::form;
|
||
my %myconfig = %main::myconfig;
|
||
|
||
IS->customer_details(\%myconfig, \%$form, @_);
|
||
|
||
$lxdebug->leave_sub();
|
||
$main::lxdebug->leave_sub();
|
||
}
|
||
|
||
sub vendor_details {
|
||
$lxdebug->enter_sub();
|
||
$main::lxdebug->enter_sub();
|
||
|
||
my $form = $main::form;
|
||
my %myconfig = %main::myconfig;
|
||
|
||
IR->vendor_details(\%myconfig, \%$form, @_);
|
||
|
||
$lxdebug->leave_sub();
|
||
$main::lxdebug->leave_sub();
|
||
}
|
||
|
||
sub post_as_new {
|
||
$lxdebug->enter_sub();
|
||
$main::lxdebug->enter_sub();
|
||
|
||
my $form = $main::form;
|
||
|
||
_check_io_auth();
|
||
|
||
... | ... | |
|
||
&post;
|
||
|
||
$lxdebug->leave_sub();
|
||
$main::lxdebug->leave_sub();
|
||
}
|
||
|
||
sub ship_to {
|
||
$lxdebug->enter_sub();
|
||
$main::lxdebug->enter_sub();
|
||
|
||
my $form = $main::form;
|
||
my %myconfig = %main::myconfig;
|
||
my $locale = $main::locale;
|
||
my $cgi = $main::cgi;
|
||
|
||
_check_io_auth();
|
||
|
||
... | ... | |
$form->{print_and_post} = 0;
|
||
}
|
||
|
||
$title = $form->{title};
|
||
my $title = $form->{title};
|
||
$form->{title} = $locale->text('Ship to');
|
||
|
||
map { $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) }
|
||
... | ... | |
# get details for name
|
||
call_sub("$form->{vc}_details", @addr_vars);
|
||
|
||
$number =
|
||
my $number =
|
||
($form->{vc} eq 'customer')
|
||
? $locale->text('Customer Number')
|
||
: $locale->text('Vendor Number');
|
||
... | ... | |
# build up html code for prices_$i
|
||
set_pricegroup($form->{rowcount});
|
||
|
||
$nextsub = ($form->{display_form}) ? $form->{display_form} : "display_form";
|
||
my $nextsub = ($form->{display_form}) ? $form->{display_form} : "display_form";
|
||
|
||
$form->{rowcount}--;
|
||
|
||
... | ... | |
map({ delete $form->{$_} } (@shipto_vars, qw(header)));
|
||
$form->{title} = $title;
|
||
|
||
foreach $key (keys %$form) {
|
||
foreach my $key (keys %$form) {
|
||
next if (($key eq 'login') || ($key eq 'password') || ('' ne ref $form->{$key}));
|
||
$form->{$key} =~ s/\"/"/g;
|
||
print qq|<input type="hidden" name="$key" value="$form->{$key}">\n|;
|
||
... | ... | |
</html>
|
||
|;
|
||
|
||
$lxdebug->leave_sub();
|
||
$main::lxdebug->leave_sub();
|
||
}
|
||
|
||
sub new_license {
|
||
$lxdebug->enter_sub();
|
||
$main::lxdebug->enter_sub();
|
||
|
||
my $form = $main::form;
|
||
|
||
_check_io_auth();
|
||
|
||
... | ... | |
|
||
# delete action
|
||
delete $form->{action};
|
||
$customer = $form->{customer};
|
||
my $customer = $form->{customer};
|
||
map { $form->{"old_$_"} = $form->{"${_}_$row"} } qw(partnumber description);
|
||
|
||
# save all other form variables in a previousform variable
|
||
$form->{row} = $row;
|
||
foreach $key (keys %$form) {
|
||
my $previousform;
|
||
foreach my $key (keys %$form) {
|
||
next if (($key eq 'login') || ($key eq 'password') || ('' ne ref $form->{$key}));
|
||
|
||
# escape ampersands
|
||
... | ... | |
|
||
$form->{script} = "licenses.pl";
|
||
|
||
our $name;
|
||
|
||
map { $form->{$_} = $form->{"old_$_"} } qw(partnumber description);
|
||
map { $form->{$_} = $form->escape($form->{$_}, 1) }
|
||
qw(partnumber description);
|
||
... | ... | |
qq|$form->{script}?action=add&vc=$form->{db}&$form->{db}_id=$form->{id}&$form->{db}=$name&type=$form->{type}&customer=$customer&partnumber=$form->{partnumber}&description=$form->{description}&previousform="$previousform"&initial=1|;
|
||
$form->redirect;
|
||
|
||
$lxdebug->leave_sub();
|
||
$main::lxdebug->leave_sub();
|
||
}
|
||
|
||
sub relink_accounts {
|
||
$lxdebug->enter_sub();
|
||
$main::lxdebug->enter_sub();
|
||
|
||
my $form = $main::form;
|
||
my %myconfig = %main::myconfig;
|
||
|
||
_check_io_auth();
|
||
|
||
... | ... | |
}
|
||
}
|
||
|
||
$lxdebug->leave_sub();
|
||
$main::lxdebug->leave_sub();
|
||
}
|
||
|
||
sub set_duedate {
|
||
$lxdebug->enter_sub();
|
||
$main::lxdebug->enter_sub();
|
||
|
||
my $form = $main::form;
|
||
my %myconfig = %main::myconfig;
|
||
|
||
_check_io_auth();
|
||
|
||
... | ... | |
|
||
print $form->ajax_response_header() . $duedate;
|
||
|
||
$lxdebug->leave_sub();
|
||
$main::lxdebug->leave_sub();
|
||
}
|
||
|
||
sub _update_part_information {
|
||
$lxdebug->enter_sub();
|
||
$main::lxdebug->enter_sub();
|
||
|
||
my $form = $main::form;
|
||
|
||
my %part_information = IC->get_basic_part_info('id' => [ grep { $_ } map { $form->{"id_${_}"} } (1..$form->{rowcount}) ],
|
||
'vendor_id' => $form->{vendor_id});
|
||
... | ... | |
$form->{"partunit_${i}"} = $info->{unit};
|
||
}
|
||
|
||
$lxdebug->leave_sub();
|
||
$main::lxdebug->leave_sub();
|
||
}
|
||
|
||
sub _update_ship {
|
||
$lxdebug->enter_sub();
|
||
$main::lxdebug->enter_sub();
|
||
|
||
my $form = $main::form;
|
||
my %myconfig = %main::myconfig;
|
||
|
||
if (!$form->{ordnumber} || !$form->{id}) {
|
||
map { $form->{"ship_$_"} = 0 } (1..$form->{rowcount});
|
||
$lxdebug->leave_sub();
|
||
$main::lxdebug->leave_sub();
|
||
return;
|
||
}
|
||
|
||
AM->retrieve_all_units();
|
||
my $all_units = AM->retrieve_all_units();
|
||
|
||
my %ship = DO->get_shipped_qty('type' => ($form->{type} eq 'purchase_order') ? 'purchase' : 'sales',
|
||
'oe_id' => $form->{id},);
|
||
... | ... | |
$ship_entry->{qty} = 0;
|
||
}
|
||
|
||
$lxdebug->leave_sub();
|
||
$main::lxdebug->leave_sub();
|
||
}
|
||
|
||
sub _update_custom_variables {
|
||
$lxdebug->enter_sub();
|
||
$main::lxdebug->enter_sub();
|
||
|
||
my $form = $main::form;
|
||
|
||
$form->{CVAR_CONFIGS} ||= { };
|
||
$form->{CVAR_CONFIGS}->{IC} = CVar->get_configs(module => 'IC');
|
||
|
||
$lxdebug->leave_sub();
|
||
$main::lxdebug->leave_sub();
|
||
}
|
||
|
||
sub _render_custom_variables_inputs {
|
||
$lxdebug->enter_sub();
|
||
$main::lxdebug->enter_sub();
|
||
|
||
my $form = $main::form;
|
||
|
||
my %params = @_;
|
||
|
||
if (!$form->{CVAR_CONFIGS}->{IC}) {
|
||
$lxdebug->leave_sub();
|
||
$main::lxdebug->leave_sub();
|
||
return;
|
||
}
|
||
|
||
... | ... | |
};
|
||
}
|
||
|
||
$lxdebug->leave_sub();
|
||
$main::lxdebug->leave_sub();
|
||
}
|
Auch abrufbar als: Unified diff
io strict