X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fio.pl;h=0fe78fd2a0e542287804aa79973daaaf7574283b;hb=342c174c0207e8d5d0ea0bd9b5eb7dc17c87d7b2;hp=c6b6df21de7cd2c7aba20c82aa06401f79f85272;hpb=4dbb09950c9f5596646537c12d991c99086fe7c1;p=kivitendo-erp.git
diff --git a/bin/mozilla/io.pl b/bin/mozilla/io.pl
index c6b6df21d..0fe78fd2a 100644
--- a/bin/mozilla/io.pl
+++ b/bin/mozilla/io.pl
@@ -41,10 +41,9 @@ if (-f "$form->{path}/$form->{login}_io.pl") {
eval { require "$form->{path}/$form->{login}_io.pl"; };
}
-
1;
-# end of main
+# end of main
# this is for our long dates
# $locale->text('January')
@@ -73,6 +72,8 @@ if (-f "$form->{path}/$form->{login}_io.pl") {
# $locale->text('Oct')
# $locale->text('Nov')
# $locale->text('Dec')
+use SL::IS;
+use SL::PE;
use Data::Dumper;
########################################
# Eintrag fuer Version 2.2.0 geaendert #
@@ -81,60 +82,107 @@ use Data::Dumper;
sub display_row {
$lxdebug->enter_sub();
my $numrows = shift;
+ if ($lizenzen && $form->{vc} eq "customer") {
+ if ($form->{type} =~ /sales_order/) {
+ @column_index = (runningnumber, partnumber, description, ship, qty);
+ } elsif ($form->{type} =~ /sales_quotation/) {
+ @column_index = (runningnumber, partnumber, description, qty);
+ } else {
+ @column_index = (runningnumber, partnumber, description, qty);
+ }
+ } else {
+ if ( ($form->{type} =~ /purchase_order/)
+ || ($form->{type} =~ /sales_order/)) {
+ @column_index = (runningnumber, partnumber, description, ship, qty);
+ } else {
+ @column_index = (runningnumber, partnumber, description, qty);
+ }
+ }
+############## ENDE Neueintrag ##################
+ push @column_index, qw(unit);
-if ($lizenzen && $form->{vc} eq "customer") {
- if ($form->{type} =~ /sales_order/) {
- @column_index = (runningnumber, partnumber, description, ship, qty);
- }
- elsif ($form->{type} =~ /sales_quotation/){
- @column_index = (runningnumber, partnumber, description, qty);
- }
- else {
- @column_index = (runningnumber, partnumber, description, qty);
- }
-}
-else {
- if (($form->{type} =~ /purchase_order/) || ($form->{type} =~ /sales_order/)) {
- @column_index = (runningnumber, partnumber, description, ship, qty);
- }
- else {
- @column_index = (runningnumber, partnumber, description, qty);
+ #for pricegroups column
+ if ( $form->{type} =~ (/sales_quotation/)
+ or (($form->{level} =~ /Sales/) and ($form->{type} =~ /invoice/))
+ or (($form->{level} eq undef) and ($form->{type} =~ /invoice/))
+ or ($form->{type} =~ /sales_order/)) {
+ push @column_index, qw(sellprice_drag);
}
-}
-############## ENDE Neueintrag ##################
- push @column_index, qw(unit sellprice);
+ push @column_index, qw(sellprice);
if ($form->{vc} eq 'customer') {
push @column_index, qw(discount);
}
-
+
push @column_index, "linetotal";
my $colspan = $#column_index + 1;
-
$form->{invsubtotal} = 0;
map { $form->{"${_}_base"} = 0 } (split / /, $form->{taxaccounts});
########################################
-# Eintrag fuer Version 2.2.0 geaendert #
-# neue Optik im Rechnungsformular #
+ # Eintrag fuer Version 2.2.0 geaendert #
+ # neue Optik im Rechnungsformular #
########################################
- $column_data{runningnumber} = qq|
|.$locale->text('No.').qq| |;
- $column_data{partnumber} = qq||.$locale->text('Number').qq| |;
- $column_data{description} = qq||.$locale->text('Part Description').qq| |;
- $column_data{ship} = qq||.$locale->text('Ship').qq| |;
- $column_data{qty} = qq||.$locale->text('Qty').qq| |;
- $column_data{unit} = qq||.$locale->text('Unit').qq| |;
- $column_data{license} = qq||.$locale->text('License').qq| |;
- $column_data{serialnr} = qq||.$locale->text('Serial No.').qq| |;
- $column_data{projectnr} = qq||.$locale->text('Project').qq| |;
- $column_data{sellprice} = qq||.$locale->text('Price').qq| |;
- $column_data{discount} = qq||.$locale->text('Discount').qq| |;
- $column_data{linetotal} = qq||.$locale->text('Extended').qq| |;
- $column_data{bin} = qq||.$locale->text('Bin').qq| |;
+ $column_data{runningnumber} =
+ qq||
+ . $locale->text('No.')
+ . qq| |;
+ $column_data{partnumber} =
+ qq||
+ . $locale->text('Number')
+ . qq| |;
+ $column_data{description} =
+ qq||
+ . $locale->text('Part Description')
+ . qq| |;
+ $column_data{ship} =
+ qq||
+ . $locale->text('Ship')
+ . qq| |;
+ $column_data{qty} =
+ qq||
+ . $locale->text('Qty')
+ . qq| |;
+ $column_data{unit} =
+ qq||
+ . $locale->text('Unit')
+ . qq| |;
+ $column_data{license} =
+ qq||
+ . $locale->text('License')
+ . qq| |;
+ $column_data{serialnr} =
+ qq||
+ . $locale->text('Serial No.')
+ . qq| |;
+ $column_data{projectnr} =
+ qq||
+ . $locale->text('Project')
+ . qq| |;
+ $column_data{sellprice} =
+ qq||
+ . $locale->text('Price')
+ . qq| |;
+ $column_data{sellprice_drag} =
+ qq||
+ . $locale->text('Pricegroup')
+ . qq| |;
+ $column_data{discount} =
+ qq||
+ . $locale->text('Discount')
+ . qq| |;
+ $column_data{linetotal} =
+ qq||
+ . $locale->text('Extended')
+ . qq| |;
+ $column_data{bin} =
+ qq||
+ . $locale->text('Bin')
+ . qq| |;
############## ENDE Neueintrag ##################
print qq|
@@ -149,88 +197,153 @@ else {
|;
-
$runningnumber = $locale->text('No.');
- $deliverydate = $locale->text('Delivery Date');
- $serialnumber = $locale->text('Serial No.');
+ $deliverydate = $locale->text('Delivery Date');
+ $serialnumber = $locale->text('Serial No.');
$projectnumber = $locale->text('Project');
- $partsgroup = $locale->text('Group');
+ $partsgroup = $locale->text('Group');
$delvar = 'deliverydate';
-
+
if ($form->{type} =~ /_order$/ || $form->{type} =~ /_quotation$/) {
$deliverydate = $locale->text('Required by');
- $delvar = 'reqdate';
+ $delvar = 'reqdate';
}
-
for $i (1 .. $numrows) {
+
# undo formatting
- map { $form->{"${_}_$i"} = $form->parse_amount(\%myconfig, $form->{"${_}_$i"}) } qw(qty ship discount sellprice);
-
+ map {
+ $form->{"${_}_$i"} =
+ $form->parse_amount(\%myconfig, $form->{"${_}_$i"})
+ } qw(qty ship discount sellprice price_new price_old);
($dec) = ($form->{"sellprice_$i"} =~ /\.(\d+)/);
- $dec = length $dec;
+ $dec = length $dec;
$decimalplaces = ($dec > 2) ? $dec : 2;
-
- $discount = $form->round_amount($form->{"sellprice_$i"} * $form->{"discount_$i"}/100, $decimalplaces);
- $linetotal = $form->round_amount($form->{"sellprice_$i"} - $discount, $decimalplaces);
+
+ $discount =
+ $form->round_amount(
+ $form->{"sellprice_$i"} * $form->{"discount_$i"} / 100,
+ $decimalplaces);
+
+ $linetotal =
+ $form->round_amount($form->{"sellprice_$i"} - $discount, $decimalplaces);
$linetotal = $form->round_amount($linetotal * $form->{"qty_$i"}, 2);
# convert " to "
- map { $form->{"${_}_$i"} =~ s/\"/"/g } qw(partnumber description unit);
+ map { $form->{"${_}_$i"} =~ s/\"/"/g }
+ qw(partnumber description unit);
########################################
-# Eintrag fuer Version 2.2.0 geaendert #
-# neue Optik im Rechnungsformular #
+ # Eintrag fuer Version 2.2.0 geaendert #
+ # neue Optik im Rechnungsformular #
########################################
- $column_data{runningnumber} = qq| |; # HuT
+ $column_data{runningnumber} =
+ qq| |; # HuT
############## ENDE Neueintrag ##################
-
- $column_data{partnumber} = qq| |;
+
+ $column_data{partnumber} =
+ qq| |;
if (($rows = $form->numtextrows($form->{"description_$i"}, 30, 6)) > 1) {
- $column_data{description} = qq| |;
+ $column_data{description} =
+ qq| |;
} else {
- $column_data{description} = qq| |;
+ $column_data{description} =
+ qq| |;
}
- $column_data{qty} = qq| format_amount(\%myconfig, $form->{"qty_$i"}).qq|> |;
- $column_data{ship} = qq| format_amount(\%myconfig, $form->{"ship_$i"}).qq|> |;
- $column_data{unit} = qq| |;
- $column_data{sellprice} = qq| format_amount(\%myconfig, $form->{"sellprice_$i"}, $decimalplaces).qq|> |;
- $column_data{discount} = qq| format_amount(\%myconfig, $form->{"discount_$i"}).qq|> |;
- $column_data{linetotal} = qq||.$form->format_amount(\%myconfig, $linetotal, 2).qq| |;
- $column_data{bin} = qq|$form->{"bin_$i"} |;
+ $column_data{qty} =
+ qq| format_amount(\%myconfig, $form->{"qty_$i"}, 0)
+ . qq|> |;
+ $column_data{ship} =
+ qq| format_amount(\%myconfig, $form->{"ship_$i"})
+ . qq|> |;
+ $column_data{unit} =
+ qq| |;
+
+ # build in dragdrop for pricesgroups
+ if ($form->{"prices_$i"}) {
+ $price_tmp =
+ $form->format_amount(\%myconfig, $form->{"price_new_$i"}, 2);
+
+ $column_data{sellprice_drag} =
+ qq|$form->{"prices_$i"} |;
+ $column_data{sellprice} =
+ qq| |;
+ } else {
+
+ # for last row and report
+ # set pricegroup dragdrop from report menu
+ if ($form->{"sellprice_$i"} != 0) {
+ $prices =
+ qq|{"pricegroup_id_$i"}" selected>$form->{"pricegroup_$i"} \n|;
+
+ $form->{"pricegroup_old_$i"} = $form->{"pricegroup_id_$i"};
+
+ $column_data{sellprice_drag} =
+ qq|$prices |;
+ } else {
+
+ # for last row
+ $column_data{sellprice_drag} =
+ qq| format_amount(\%myconfig, $form->{"prices_$i"},
+ $decimalplaces)
+ . qq|> |;
+ }
+
+ $column_data{sellprice} =
+ qq| format_amount(\%myconfig, $form->{"sellprice_$i"},
+ $decimalplaces)
+ . qq|> |;
+ }
+ $column_data{discount} =
+ qq| format_amount(\%myconfig, $form->{"discount_$i"})
+ . qq|> |;
+ $column_data{linetotal} =
+ qq||
+ . $form->format_amount(\%myconfig, $linetotal, 2)
+ . qq| |;
+ $column_data{bin} = qq|$form->{"bin_$i"} |;
########################################
-# Eintrag fuer Version 2.2.0 geaendert #
-# neue Optik im Rechnungsformular #
-########################################
-# if ($lizenzen && $form->{type} eq "invoice" && $form->{vc} eq "customer") {
-# $column_data{license} = qq|$form->{"lizenzen_$i"}> |;
-# }
-#
-# if ($form->{type} !~ /_quotation/) {
-# $column_data{serialnr} = qq| |;
-# }
-#
-# $column_data{projectnr} = qq| |;
+ # Eintrag fuer Version 2.2.0 geaendert #
+ # neue Optik im Rechnungsformular #
+########################################
+ # if ($lizenzen && $form->{type} eq "invoice" && $form->{vc} eq "customer") {
+ # $column_data{license} = qq|$form->{"lizenzen_$i"}> |;
+ # }
+ #
+ # if ($form->{type} !~ /_quotation/) {
+ # $column_data{serialnr} = qq| |;
+ # }
+ #
+ # $column_data{projectnr} = qq| |;
############## ENDE Neueintrag ##################
-
print qq|
|;
map { print "\n$column_data{$_}" } @column_index;
-
+
print qq|
{"orderitems_id_$i"}>
{"bo_$i"}>
+ {"pricegroup_old_$i"}>
+ {"price_old_$i"}>
+ format_amount(\%myconfig, $form->{"price_new_$i"}) . qq|>
+
{"id_$i"}>
{"inventory_accno_$i"}>
@@ -245,19 +358,20 @@ else {
|;
########################################
-# Eintrag fuer Version 2.2.0 geaendert #
-# neue Optik im Rechnungsformular #
-########################################
+ # Eintrag fuer Version 2.2.0 geaendert #
+ # neue Optik im Rechnungsformular #
+########################################
# print second row
print qq|
|;
- if ($lizenzen && $form->{type} eq "invoice" && $form->{vc} eq "customer") {
+ if ($lizenzen && $form->{type} eq "invoice" && $form->{vc} eq "customer") {
my $selected = $form->{"licensenumber_$i"};
my $lizenzen_quoted;
$form->{"lizenzen_$i"} =~ s/ selected//g;
- $form->{"lizenzen_$i"} =~ s/value="${selected}"\>/value="${selected}" selected\>/;
+ $form->{"lizenzen_$i"} =~
+ s/value="${selected}"\>/value="${selected}" selected\>/;
$lizenzen_quoted = $form->{"lizenzen_$i"};
$lizenzen_quoted =~ s/\"/"/g;
print qq|
@@ -283,9 +397,9 @@ else {
############## ENDE Neueintrag ##################
+ map { $form->{"${_}_base"} += $linetotal }
+ (split / /, $form->{"taxaccounts_$i"});
- map { $form->{"${_}_base"} += $linetotal } (split / /, $form->{"taxaccounts_$i"});
-
$form->{invsubtotal} += $linetotal;
}
@@ -298,26 +412,68 @@ else {
$lxdebug->leave_sub();
}
+##################################################
+# build html-code for pricegroups in variable $form->{prices_$j}
+
+sub set_pricegroup {
+ my $rowcount = shift;
+ $lxdebug->enter_sub();
+ for $j (1 .. $rowcount) {
+
+ my $pricegroup_old = $form->{"pricegroup_old_$i"};
+ if ($form->{PRICES}{$j}) {
+ $len = 0;
+ $prices = '';
+ $price = 0;
+ foreach $item (@{ $form->{PRICES}{$j} }) {
+ $price = $form->round_amount($myconfig, $item->{price}, 5);
+ $price = $form->format_amount($myconfig, $item->{price}, 2);
+ $price = $item->{price};
+ $pricegroup_id = $item->{pricegroup_id};
+ $pricegroup = $item->{pricegroup};
+
+ # build dragdrop for pricegroups
+ $prices .=
+ qq|{selected}>$pricegroup \n|;
+
+ $len += 1;
+
+ # set new selectedpricegroup_id and prices for "Preis"
+ if ($item->{selected}) {
+ $form->{"pricegroup_old_$j"} = $pricegroup_id;
+ $form->{"price_new_$j"} = $price;
+ $form->{"sellprice_$j"} = $price;
+ }
+ if ($len >= 1) {
+ $form->{"prices_$j"} = $prices;
+ }
+ }
+ }
+ }
+
+ #print (STDERR "HIER", Dumper($prices) );
+ $lxdebug->leave_sub();
+}
sub select_item {
$lxdebug->enter_sub();
-
@column_index = qw(ndx partnumber description onhand sellprice);
- $column_data{ndx} = qq| |;
- $column_data{partnumber} = qq||.$locale->text('Number').qq| |;
- $column_data{description} = qq||.$locale->text('Part Description').qq| |;
- $column_data{sellprice} = qq||.$locale->text('Price').qq| |;
- $column_data{onhand} = qq||.$locale->text('Qty').qq| |;
-
-
+ $column_data{ndx} = qq| |;
+ $column_data{partnumber} =
+ qq|| . $locale->text('Number') . qq| |;
+ $column_data{description} =
+ qq|| . $locale->text('Part Description') . qq| |;
+ $column_data{sellprice} =
+ qq|| . $locale->text('Price') . qq| |;
+ $column_data{onhand} =
+ qq|| . $locale->text('Qty') . qq| |;
+
# list items with radio button on a form
$form->header;
- $title = $locale->text('Select from one of the items below');
+ $title = $locale->text('Select from one of the items below');
$colspan = $#column_index + 1;
-
-
print qq|
@@ -332,36 +488,47 @@ sub select_item {
|;
map { print "\n$column_data{$_}" } @column_index;
-
+
print qq| |;
my $i = 0;
foreach $ref (@{ $form->{item_list} }) {
$checked = ($i++) ? "" : "checked";
-
+
if ($lizenzen) {
- if ($ref->{inventory_accno} > 0) {
- $ref->{"lizenzen"} = qq| |;
- foreach $item (@{ $form->{LIZENZEN}{$ref->{"id"}}}) {
- $ref->{"lizenzen"} .= qq|{"id"}\">$item->{"licensenumber"} |;
- }
- $ref->{"lizenzen"} .= qq|Neue Lizenz |;
- $ref->{"lizenzen"} =~ s/\"/"/g;
+ if ($ref->{inventory_accno} > 0) {
+ $ref->{"lizenzen"} = qq| |;
+ foreach $item (@{ $form->{LIZENZEN}{ $ref->{"id"} } }) {
+ $ref->{"lizenzen"} .=
+ qq|{"id"}\">$item->{"licensenumber"} |;
}
+ $ref->{"lizenzen"} .= qq|Neue Lizenz |;
+ $ref->{"lizenzen"} =~ s/\"/"/g;
+ }
}
-
map { $ref->{$_} =~ s/\"/"/g } qw(partnumber description unit);
- $ref->{sellprice} = $form->round_amount($ref->{sellprice} * (1 - $form->{tradediscount}), 2);
-
- $column_data{ndx} = qq| |;
- $column_data{partnumber} = qq| $ref->{partnumber} |;
- $column_data{description} = qq| $ref->{description} |;
- $column_data{sellprice} = qq| {sellprice}>|.$form->format_amount(\%myconfig, $ref->{sellprice}, 2, " ").qq| |;
- $column_data{onhand} = qq| {onhand}>|.$form->format_amount(\%myconfig, $ref->{onhand}, '', " ").qq| |;
-
- $j++; $j %= 2;
+ #sk tradediscount
+ $ref->{sellprice} =
+ $form->round_amount($ref->{sellprice} * (1 - $form->{tradediscount}), 2);
+ $column_data{ndx} =
+ qq| |;
+ $column_data{partnumber} =
+ qq| $ref->{partnumber} |;
+ $column_data{description} =
+ qq| $ref->{description} |;
+ $column_data{sellprice} =
+ qq| {sellprice}>|
+ . $form->format_amount(\%myconfig, $ref->{sellprice}, 2, " ")
+ . qq| |;
+ $column_data{onhand} =
+ qq| {onhand}>|
+ . $form->format_amount(\%myconfig, $ref->{onhand}, '', " ")
+ . qq| |;
+
+ $j++;
+ $j %= 2;
print qq|
|;
@@ -384,14 +551,14 @@ sub select_item {
{id}>
|;
- if ($lizenzen) {
- print qq|
+ if ($lizenzen) {
+ print qq|
|;
- }
+ }
}
-
+
print qq|
@@ -402,7 +569,7 @@ sub select_item {
# delete action variable
map { delete $form->{$_} } qw(action item_list header);
-
+
# save all other form variables
foreach $key (keys %${form}) {
$form->{$key} =~ s/\"/"/g;
@@ -413,7 +580,8 @@ sub select_item {
-
+
@@ -423,8 +591,6 @@ sub select_item {
$lxdebug->leave_sub();
}
-
-
sub item_selected {
$lxdebug->enter_sub();
@@ -435,70 +601,93 @@ sub item_selected {
# index for new item
$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"});
-
- map { $form->{"${_}_$i"} = $form->{"new_${_}_$j"} } qw(id partnumber description sellprice listprice inventory_accno income_accno expense_accno bin unit weight assembly taxaccounts partsgroup);
-
+
+ map { $form->{"${_}_$i"} = $form->{"new_${_}_$j"} }
+ qw(id partnumber description sellprice listprice inventory_accno income_accno expense_accno bin unit weight assembly taxaccounts partsgroup);
+
if ($lizenzen) {
- map { $form->{"${_}_$i"} = $form->{"new_${_}_$j"} } qw(lizenzen);
+ map { $form->{"${_}_$i"} = $form->{"new_${_}_$j"} } qw(lizenzen);
}
($dec) = ($form->{"sellprice_$i"} =~ /\.(\d+)/);
- $dec = length $dec;
+ $dec = length $dec;
$decimalplaces = ($dec > 2) ? $dec : 2;
if ($sellprice) {
$form->{"sellprice_$i"} = $sellprice;
} else {
+
# if there is an exchange rate adjust sellprice
if (($form->{exchangerate} * 1) != 0) {
$form->{"sellprice_$i"} /= $form->{exchangerate};
- $form->{"sellprice_$i"} = $form->round_amount($form->{"sellprice_$i"}, $decimalplaces);
+ $form->{"sellprice_$i"} =
+ $form->round_amount($form->{"sellprice_$i"}, $decimalplaces);
}
}
- map { $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) } qw(sellprice listprice weight);
+ map { $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) }
+ qw(sellprice listprice weight);
$form->{sellprice} += ($form->{"sellprice_$i"} * $form->{"qty_$i"});
- $form->{weight} += ($form->{"weight_$i"} * $form->{"qty_$i"});
+ $form->{weight} += ($form->{"weight_$i"} * $form->{"qty_$i"});
- $amount = $form->{"sellprice_$i"} * (1 - $form->{"discount_$i"} / 100) * $form->{"qty_$i"};
- map { $form->{"${_}_base"} += $amount } (split / /, $form->{"taxaccounts_$i"});
- map { $amount += ($form->{"${_}_base"} * $form->{"${_}_rate"}) } split / /, $form->{"taxaccounts_$i"} if !$form->{taxincluded};
+ $amount =
+ $form->{"sellprice_$i"} * (1 - $form->{"discount_$i"} / 100) *
+ $form->{"qty_$i"};
+ map { $form->{"${_}_base"} += $amount }
+ (split / /, $form->{"taxaccounts_$i"});
+ map { $amount += ($form->{"${_}_base"} * $form->{"${_}_rate"}) } split / /,
+ $form->{"taxaccounts_$i"}
+ if !$form->{taxincluded};
$form->{creditremaining} -= $amount;
$form->{"runningnumber_$i"} = $i;
-
+
# delete all the new_ variables
for $i (1 .. $form->{lastndx}) {
- map { delete $form->{"new_${_}_$i"} } qw(partnumber description sellprice bin listprice inventory_accno income_accno expense_accno unit assembly taxaccounts id);
+ map { delete $form->{"new_${_}_$i"} }
+ qw(partnumber description sellprice bin listprice inventory_accno income_accno expense_accno unit assembly taxaccounts id);
}
-
+
map { delete $form->{$_} } qw(ndx lastndx nextsub);
# format amounts
- map { $form->{"${_}_$i"} = $form->format_amount(\%myconfig, $form->{"${_}_$i"}, $decimalplaces) } qw(sellprice listprice) if $form->{item} ne 'assembly';
+ map {
+ $form->{"${_}_$i"} =
+ $form->format_amount(\%myconfig, $form->{"${_}_$i"}, $decimalplaces)
+ } qw(sellprice listprice) if $form->{item} ne 'assembly';
+
+ # get pricegroups for parts
+ IS->get_pricegroups_for_parts(\%myconfig, \%$form);
+
+ # build up html code for prices_$i
+ set_pricegroup($form->{rowcount});
&display_form;
-
+
$lxdebug->leave_sub();
}
-
sub new_item {
$lxdebug->enter_sub();
# change callback
- $form->{old_callback} = $form->escape($form->{callback},1);
- $form->{callback} = $form->escape("$form->{script}?action=display_form",1);
+ $form->{old_callback} = $form->escape($form->{callback}, 1);
+ $form->{callback} = $form->escape("$form->{script}?action=display_form", 1);
# delete action
delete $form->{action};
# save all other form variables in a previousform variable
foreach $key (keys %$form) {
+
# escape ampersands
$form->{$key} =~ s/&/%26/g;
$previousform .= qq|$key=$form->{$key}&|;
@@ -514,20 +703,21 @@ sub new_item {
print qq|
-|.$locale->text('Item not on file!').qq|
+| . $locale->text('Item not on file!') . qq|
-|.$locale->text('What type of item is this?').qq|
+| . $locale->text('What type of item is this?') . qq|
@@ -552,69 +743,116 @@ sub new_item {
$lxdebug->leave_sub();
}
-
-
sub display_form {
$lxdebug->enter_sub();
# if we have a display_form
if ($form->{display_form}) {
- &{ "$form->{display_form}" };
+ &{"$form->{display_form}"};
exit;
}
-
+ if ( $form->{print_and_post}
+ && $form->{second_run}
+ && ($form->{action} eq "display_form")) {
+ for (keys %$form) { $old_form->{$_} = $form->{$_} }
+ $old_form->{rowcount}++;
+
+ #$form->{rowcount}--;
+ #$form->{rowcount}--;
+
+ $form->{print_and_post} = 0;
+
+ &print_form($old_form);
+ exit;
+ }
+
+ $form->{action} = "";
+ $form->{resubmit} = 0;
+
+ if ($form->{print_and_post} && !$form->{second_run}) {
+ $form->{second_run} = 1;
+ $form->{action} = "display_form";
+ $form->{rowcount}--;
+ my $rowcount = $form->{rowcount};
+
+ # get pricegroups for parts
+ IS->get_pricegroups_for_parts(\%myconfig, \%$form);
+
+ # build up html code for prices_$i
+ set_pricegroup($rowcount);
+
+ $form->{resubmit} = 1;
+
+ }
&form_header;
- $numrows = ++$form->{rowcount};
+ $numrows = ++$form->{rowcount};
$subroutine = "display_row";
if ($form->{item} eq 'part') {
- $numrows = ++$form->{makemodel_rows};
+
+ #set preisgruppenanzahl
+ $numrows = $form->{price_rows};
+ $subroutine = "price_row";
+
+ &{$subroutine}($numrows);
+
+ $numrows = ++$form->{makemodel_rows};
$subroutine = "makemodel_row";
}
if ($form->{item} eq 'assembly') {
- $numrows = ++$form->{makemodel_rows};
+ $numrows = ++$form->{price_rows};
+ $subroutine = "price_row";
+
+ &{$subroutine}($numrows);
+
+ $numrows = ++$form->{makemodel_rows};
$subroutine = "makemodel_row";
-
+
# create makemodel rows
- &{ $subroutine }($numrows);
+ &{$subroutine}($numrows);
- $numrows = ++$form->{assembly_rows};
+ $numrows = ++$form->{assembly_rows};
$subroutine = "assembly_row";
}
if ($form->{item} eq 'service') {
+ $numrows = ++$form->{price_rows};
+ $subroutine = "price_row";
+
+ &{$subroutine}($numrows);
+
$numrows = 0;
}
# create rows
- &{ $subroutine }($numrows) if $numrows;
+ &{$subroutine}($numrows) if $numrows;
&form_footer;
$lxdebug->leave_sub();
}
-
-
sub check_form {
$lxdebug->enter_sub();
-
- my @a = ();
+ my @a = ();
my $count = 0;
- my @flds = (qw(id partnumber description qty ship sellprice unit discount inventory_accno income_accno expense_accno listprice taxaccounts bin assembly weight projectnumber project_id oldprojectnumber runningnumber serialnumber partsgroup));
+ my @flds = (
+ qw(id partnumber description qty ship sellprice unit discount inventory_accno income_accno expense_accno listprice taxaccounts bin assembly weight projectnumber project_id oldprojectnumber runningnumber serialnumber partsgroup)
+ );
# remove any makes or model rows
if ($form->{item} eq 'part') {
- map { $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) } qw(listprice sellprice lastcost weight rop);
-
+ map { $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) }
+ qw(listprice sellprice lastcost weight rop);
+
@flds = (make, model);
for my $i (1 .. ($form->{makemodel_rows})) {
if (($form->{"make_$i"} ne "") || ($form->{"model_$i"} ne "")) {
- push @a, {};
- my $j = $#a;
+ push @a, {};
+ my $j = $#a;
- map { $a[$j]->{$_} = $form->{"${_}_$i"} } @flds;
- $count++;
+ map { $a[$j]->{$_} = $form->{"${_}_$i"} } @flds;
+ $count++;
}
}
@@ -624,42 +862,46 @@ sub check_form {
} elsif ($form->{item} eq 'assembly') {
$form->{sellprice} = 0;
- $form->{weight} = 0;
- map { $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) } qw(listprice rop stock);
+ $form->{weight} = 0;
+ map { $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) }
+ qw(listprice rop stock);
+
+ @flds =
+ qw(id qty unit bom partnumber description sellprice weight runningnumber partsgroup);
- @flds = qw(id qty unit bom partnumber description sellprice weight runningnumber partsgroup);
-
for my $i (1 .. ($form->{assembly_rows} - 1)) {
if ($form->{"qty_$i"}) {
- push @a, {};
- my $j = $#a;
+ push @a, {};
+ my $j = $#a;
$form->{"qty_$i"} = $form->parse_amount(\%myconfig, $form->{"qty_$i"});
- map { $a[$j]->{$_} = $form->{"${_}_$i"} } @flds;
+ map { $a[$j]->{$_} = $form->{"${_}_$i"} } @flds;
- $form->{sellprice} += ($form->{"qty_$i"} * $form->{"sellprice_$i"});
- $form->{weight} += ($form->{"qty_$i"} * $form->{"weight_$i"});
- $count++;
+ #($form->{"sellprice_$i"},$form->{"$pricegroup_old_$i"}) = split /--/, $form->{"sellprice_$i"};
+
+ $form->{sellprice} += ($form->{"qty_$i"} * $form->{"sellprice_$i"});
+ $form->{weight} += ($form->{"qty_$i"} * $form->{"weight_$i"});
+ $count++;
}
}
$form->{sellprice} = $form->round_amount($form->{sellprice}, 2);
-
+
$form->redo_rows(\@flds, \@a, $count, $form->{assembly_rows});
$form->{assembly_rows} = $count;
-
+
$count = 0;
- @flds = qw(make model);
- @a = ();
-
+ @flds = qw(make model);
+ @a = ();
+
for my $i (1 .. ($form->{makemodel_rows})) {
if (($form->{"make_$i"} ne "") || ($form->{"model_$i"} ne "")) {
- push @a, {};
- my $j = $#a;
+ push @a, {};
+ my $j = $#a;
- map { $a[$j]->{$_} = $form->{"${_}_$i"} } @flds;
- $count++;
+ map { $a[$j]->{$_} = $form->{"${_}_$i"} } @flds;
+ $count++;
}
}
@@ -672,188 +914,221 @@ sub check_form {
# remove any empty numbers
if ($form->{rowcount}) {
for my $i (1 .. $form->{rowcount} - 1) {
- if ($form->{"partnumber_$i"}) {
- push @a, {};
- my $j = $#a;
-
- map { $a[$j]->{$_} = $form->{"${_}_$i"} } @flds;
- $count++;
- if ($lizenzen) {
- if ($form->{"licensenumber_$i"} == -1) {
- &new_license($i);
- exit;
- }
- }
- }
+ if ($form->{"partnumber_$i"}) {
+ push @a, {};
+ my $j = $#a;
+
+ map { $a[$j]->{$_} = $form->{"${_}_$i"} } @flds;
+ $count++;
+ if ($lizenzen) {
+ if ($form->{"licensenumber_$i"} == -1) {
+ &new_license($i);
+ exit;
+ }
+ }
+ }
}
-
+
$form->redo_rows(\@flds, \@a, $count, $form->{rowcount});
$form->{rowcount} = $count;
$form->{creditremaining} -= &invoicetotal;
-
+
}
}
+ #sk
+ # if pricegroups
+ if ( $form->{type} =~ (/sales_quotation/)
+ or (($form->{level} =~ /Sales/) and ($form->{type} =~ /invoice/))
+ or (($form->{level} eq undef) and ($form->{type} =~ /invoice/))
+ or ($form->{type} =~ /sales_order/)) {
+
+ # get pricegroups for parts
+ IS->get_pricegroups_for_parts(\%myconfig, \%$form);
+
+ # build up html code for prices_$i
+ set_pricegroup($form->{rowcount});
+
+ }
+
&display_form;
$lxdebug->leave_sub();
}
-
sub invoicetotal {
$lxdebug->enter_sub();
$form->{oldinvtotal} = 0;
+
# add all parts and deduct paid
map { $form->{"${_}_base"} = 0 } split / /, $form->{taxaccounts};
my ($amount, $sellprice, $discount, $qty);
-
+
for my $i (1 .. $form->{rowcount}) {
$sellprice = $form->parse_amount(\%myconfig, $form->{"sellprice_$i"});
- $discount = $form->parse_amount(\%myconfig, $form->{"discount_$i"});
- $qty = $form->parse_amount(\%myconfig, $form->{"qty_$i"});
+ $discount = $form->parse_amount(\%myconfig, $form->{"discount_$i"});
+ $qty = $form->parse_amount(\%myconfig, $form->{"qty_$i"});
+
+ #($form->{"sellprice_$i"}, $form->{"$pricegroup_old_$i"}) = split /--/, $form->{"sellprice_$i"};
$amount = $sellprice * (1 - $discount / 100) * $qty;
- map { $form->{"${_}_base"} += $amount } (split / /, $form->{"taxaccounts_$i"});
+ map { $form->{"${_}_base"} += $amount }
+ (split / /, $form->{"taxaccounts_$i"});
$form->{oldinvtotal} += $amount;
}
- map { $form->{oldinvtotal} += ($form->{"${_}_base"} * $form->{"${_}_rate"}) } split / /, $form->{taxaccounts} if !$form->{taxincluded};
-
+ map { $form->{oldinvtotal} += ($form->{"${_}_base"} * $form->{"${_}_rate"}) }
+ split / /, $form->{taxaccounts}
+ if !$form->{taxincluded};
+
$form->{oldtotalpaid} = 0;
for $i (1 .. $form->{paidaccounts}) {
$form->{oldtotalpaid} += $form->{"paid_$i"};
}
-
+
$lxdebug->leave_sub();
# return total
return ($form->{oldinvtotal} - $form->{oldtotalpaid});
}
-
sub validate_items {
$lxdebug->enter_sub();
-
+
# check if items are valid
if ($form->{rowcount} == 1) {
&update;
exit;
}
-
+
for $i (1 .. $form->{rowcount} - 1) {
- $form->isblank("partnumber_$i", $locale->text('Number missing in Row') . " $i");
+ $form->isblank("partnumber_$i",
+ $locale->text('Number missing in Row') . " $i");
}
$lxdebug->leave_sub();
}
-
sub order {
$lxdebug->enter_sub();
-
+ if ($form->{second_run}) {
+ $form->{print_and_post} = 0;
+ }
$form->{ordnumber} = $form->{invnumber};
-
- map { delete $form->{$_} } qw(id printed emailed queued);
-
+ map { delete $form->{$_} } qw(id printed emailed queued);
if ($form->{script} eq 'ir.pl' || $form->{type} eq 'request_quotation') {
$form->{title} = $locale->text('Add Purchase Order');
- $form->{vc} = 'vendor';
- $form->{type} = 'purchase_order';
- $buysell = 'sell';
+ $form->{vc} = 'vendor';
+ $form->{type} = 'purchase_order';
+ $buysell = 'sell';
}
if ($form->{script} eq 'is.pl' || $form->{type} eq 'sales_quotation') {
$form->{title} = $locale->text('Add Sales Order');
- $form->{vc} = 'customer';
- $form->{type} = 'sales_order';
- $buysell = 'buy';
+ $form->{vc} = 'customer';
+ $form->{type} = 'sales_order';
+ $buysell = 'buy';
}
$form->{script} = 'oe.pl';
$form->{shipto} = 1;
-
+
$form->{rowcount}--;
-
+
($null, $form->{cp_id}) = split /--/, $form->{contact};
$form->{cp_id} *= 1;
-
+
require "$form->{path}/$form->{script}";
map { $form->{"select$_"} = "" } ($form->{vc}, currency);
-
+
$currency = $form->{currency};
&order_links;
- $form->{currency} = $currency;
+ $form->{currency} = $currency;
$form->{exchangerate} = "";
- $form->{forex} = "";
- $form->{exchangerate} = $exchangerate if ($form->{forex} = ($exchangerate = $form->check_exchangerate(\%myconfig, $form->{currency}, $form->{transdate}, $buysell)));
-
+ $form->{forex} = "";
+ $form->{exchangerate} = $exchangerate
+ if (
+ $form->{forex} = (
+ $exchangerate =
+ $form->check_exchangerate(
+ \%myconfig, $form->{currency}, $form->{transdate}, $buysell
+ )));
+
&prepare_order;
&display_form;
$lxdebug->leave_sub();
}
-
sub quotation {
$lxdebug->enter_sub();
-
+ if ($form->{second_run}) {
+ $form->{print_and_post} = 0;
+ }
map { delete $form->{$_} } qw(id printed emailed queued);
-
+
if ($form->{script} eq 'ir.pl' || $form->{type} eq 'purchase_order') {
$form->{title} = $locale->text('Add Request for Quotation');
- $form->{vc} = 'vendor';
- $form->{type} = 'request_quotation';
- $buysell = 'sell';
+ $form->{vc} = 'vendor';
+ $form->{type} = 'request_quotation';
+ $buysell = 'sell';
}
if ($form->{script} eq 'is.pl' || $form->{type} eq 'sales_order') {
$form->{title} = $locale->text('Add Quotation');
- $form->{vc} = 'customer';
- $form->{type} = 'sales_quotation';
- $buysell = 'buy';
+ $form->{vc} = 'customer';
+ $form->{type} = 'sales_quotation';
+ $buysell = 'buy';
}
-
+
($null, $form->{cp_id}) = split /--/, $form->{contact};
$form->{cp_id} *= 1;
-
+
$form->{script} = 'oe.pl';
$form->{shipto} = 1;
-
+
$form->{rowcount}--;
require "$form->{path}/$form->{script}";
map { $form->{"select$_"} = "" } ($form->{vc}, currency);
-
+
$currency = $form->{currency};
-
+
&order_links;
- $form->{currency} = $currency;
+ $form->{currency} = $currency;
$form->{exchangerate} = "";
- $form->{forex} = "";
- $form->{exchangerate} = $exchangerate if ($form->{forex} = ($exchangerate = $form->check_exchangerate(\%myconfig, $form->{currency}, $form->{transdate}, $buysell)));
-
+ $form->{forex} = "";
+ $form->{exchangerate} = $exchangerate
+ if (
+ $form->{forex} = (
+ $exchangerate =
+ $form->check_exchangerate(
+ \%myconfig, $form->{currency}, $form->{transdate}, $buysell
+ )));
+
&prepare_order;
&display_form;
$lxdebug->leave_sub();
}
-
-
sub e_mail {
$lxdebug->enter_sub();
-
+ if ($form->{second_run}) {
+ $form->{print_and_post} = 0;
+ $form->{resubmit} = 0;
+ }
if ($myconfig{role} eq 'admin') {
$bcc = qq|
- |.$locale->text('Bcc').qq|
+ | . $locale->text('Bcc') . qq|
|;
}
@@ -862,13 +1137,13 @@ sub e_mail {
$form->{email} = $form->{shiptoemail} if $form->{shiptoemail};
}
- $name = $form->{$form->{vc}};
+ $name = $form->{ $form->{vc} };
$name =~ s/--.*//g;
- $title = $locale->text('E-mail')." $name";
-
+ $title = $locale->text('E-mail') . " $name";
+
$form->{oldmedia} = $form->{media};
- $form->{media} = "email";
-
+ $form->{media} = "email";
+
$form->header;
print qq|
@@ -885,13 +1160,13 @@ sub e_mail {