X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fio.pl;h=9fdb05825081026ec5334cf0fffd81c434a0bc4a;hb=46ca64fbb0bb7979abd074b0af612ac88c8a8fdf;hp=d0e813f573b1520bd8e5fb8e04a782dec60f60ed;hpb=5d9313c22b1ff61a4ed3584908561bb95c0393e3;p=kivitendo-erp.git diff --git a/bin/mozilla/io.pl b/bin/mozilla/io.pl index d0e813f57..9fdb05825 100644 --- a/bin/mozilla/io.pl +++ b/bin/mozilla/io.pl @@ -72,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 # @@ -80,7 +82,6 @@ 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); @@ -99,7 +100,17 @@ sub display_row { } ############## ENDE Neueintrag ################## - push @column_index, qw(unit sellprice); + push @column_index, qw(unit); + + #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); + } + + push @column_index, qw(sellprice); if ($form->{vc} eq 'customer') { push @column_index, qw(discount); @@ -153,9 +164,13 @@ sub display_row { . $locale->text('Project') . qq||; $column_data{sellprice} = - qq|| + qq|| . $locale->text('Price') . qq||; + $column_data{sellprice_drag} = + qq|| + . $locale->text('Pricegroup') + . qq||; $column_data{discount} = qq|| . $locale->text('Discount') @@ -187,6 +202,7 @@ sub display_row { $serialnumber = $locale->text('Serial No.'); $projectnumber = $locale->text('Project'); $partsgroup = $locale->text('Group'); + $reqdate = $locale->text('Reqdate'); $delvar = 'deliverydate'; @@ -199,8 +215,9 @@ sub display_row { # undo formatting map { - $form->{"${_}_$i"} = $form->parse_amount(\%myconfig, $form->{"${_}_$i"}) - } qw(qty ship discount sellprice); + $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; @@ -210,6 +227,7 @@ sub display_row { $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); @@ -237,9 +255,12 @@ sub display_row { qq||; } + (my $qty_dec) = ($form->{"qty_$i"} =~ /\.(\d+)/); + $qty_dec = length $qty_dec; + $column_data{qty} = qq|format_amount(\%myconfig, $form->{"qty_$i"}) + . $form->format_amount(\%myconfig, $form->{"qty_$i"}, $qty_dec) . qq|>|; $column_data{ship} = qq||; $column_data{unit} = qq||; - $column_data{sellprice} = - qq|format_amount(\%myconfig, $form->{"sellprice_$i"}, - $decimalplaces) - . 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||; + $column_data{sellprice} = + qq||; + } else { + + # for last row and report + # set pricegroup dragdrop from report menu + if ($form->{"sellprice_$i"} != 0) { + $prices = + qq|\n|; + + $form->{"pricegroup_old_$i"} = $form->{"pricegroup_id_$i"}; + + $column_data{sellprice_drag} = + qq||; + + } 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"}) @@ -288,6 +343,11 @@ sub display_row { {"orderitems_id_$i"}> {"bo_$i"}> +{"pricegroup_old_$i"}> +{"price_old_$i"}> +format_amount(\%myconfig, $form->{"price_new_$i"}) . qq|> + {"id_$i"}> {"inventory_accno_$i"}> @@ -298,6 +358,9 @@ sub display_row { + + + |; @@ -334,6 +397,15 @@ sub display_row { $projectnumber  +|; + if ($form->{type} eq 'invoice' or $form->{type} =~ /order/) { + my $reqdate_term = ($form->{type} eq 'invoice')?'deliverydate':'reqdate'; # invoice uses a different term for the same thing. + print qq| + ${$reqdate_term}  +|; + } + + print qq| @@ -356,9 +428,55 @@ sub display_row { $lxdebug->leave_sub(); } -sub select_item { +################################################## +# 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|\n|; + + $len += 1; +# map { +# $form->{"${_}_$j"} = +# $form->format_amount(\%myconfig, $form->{"${_}_$j"}) +# } qw(sellprice price_new price_old); + + # set new selectedpricegroup_id and prices for "Preis" + if ($item->{selected} && ($pricegroup_id != 0)) { + $form->{"pricegroup_old_$j"} = $pricegroup_id; + $form->{"price_new_$j"} = $price; + $form->{"sellprice_$j"} = $price; + } + if ($pricegroup_id == 0) { + $form->{"price_new_$j"} = $form->{"sellprice_$j"}; + } + if ($len > 1) { + $form->{"prices_$j"} = $prices; + } + } + } + } + $lxdebug->leave_sub(); +} +sub select_item { + $lxdebug->enter_sub(); @column_index = qw(ndx partnumber description onhand sellprice); $column_data{ndx} = qq| |; @@ -411,9 +529,9 @@ sub select_item { map { $ref->{$_} =~ s/\"/"/g } qw(partnumber description unit); + #sk tradediscount $ref->{sellprice} = $form->round_amount($ref->{sellprice} * (1 - $form->{tradediscount}), 2); - $column_data{ndx} = qq||; $column_data{partnumber} = @@ -503,6 +621,10 @@ 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"}); @@ -562,6 +684,12 @@ sub item_selected { $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(); @@ -643,17 +771,61 @@ sub 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}; $subroutine = "display_row"; if ($form->{item} eq 'part') { + + #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->{price_rows}; + $subroutine = "price_row"; + + &{$subroutine}($numrows); + $numrows = ++$form->{makemodel_rows}; $subroutine = "makemodel_row"; @@ -664,6 +836,11 @@ sub display_form { $subroutine = "assembly_row"; } if ($form->{item} eq 'service') { + $numrows = $form->{price_rows}; + $subroutine = "price_row"; + + &{$subroutine}($numrows); + $numrows = 0; } @@ -677,10 +854,9 @@ sub display_form { sub check_form { $lxdebug->enter_sub(); - my @a = (); my $count = 0; - my @flds = ( + 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) ); @@ -722,6 +898,8 @@ sub check_form { map { $a[$j]->{$_} = $form->{"${_}_$i"} } @flds; + #($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++; @@ -779,6 +957,21 @@ sub check_form { } } + #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(); @@ -799,6 +992,8 @@ sub invoicetotal { $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"}); @@ -839,11 +1034,12 @@ sub validate_items { 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); - if ($form->{script} eq 'ir.pl' || $form->{type} eq 'request_quotation') { $form->{title} = $locale->text('Add Purchase Order'); $form->{vc} = 'vendor'; @@ -892,7 +1088,9 @@ sub order { 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') { @@ -944,7 +1142,10 @@ sub quotation { 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| @@ -1056,15 +1257,14 @@ sub send_email { sub print_options { $lxdebug->enter_sub(); - $form->{sendmode} = "attachment"; $form->{copies} = 3 unless $form->{copies}; $form->{PD}{ $form->{formname} } = "selected"; - $form->{DF}{ $form->{format} } = ""; + $form->{DF}{ $form->{format} } = "selected"; $form->{OP}{ $form->{media} } = "selected"; $form->{SM}{ $form->{sendmode} } = "selected"; - + print(STDERR $form->{format} , " Format\n"); if ($form->{type} eq 'purchase_order') { $type = qq|