X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fio.pl;h=ae8f500bbe192c7c66e239d666c7a52760fdcb42;hb=58b14f96d6a7aab3bad2ffac3f8930793cf15a09;hp=d0e813f573b1520bd8e5fb8e04a782dec60f60ed;hpb=398a270cbff6d72033f0ae217d380b8ad85d19f6;p=kivitendo-erp.git diff --git a/bin/mozilla/io.pl b/bin/mozilla/io.pl index d0e813f57..ae8f500bb 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') @@ -199,8 +214,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 +226,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 +254,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 +342,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"}> @@ -356,9 +415,50 @@ 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; + + # 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; + } + } + } + } + $lxdebug->leave_sub(); +} + +sub select_item { + $lxdebug->enter_sub(); @column_index = qw(ndx partnumber description onhand sellprice); $column_data{ndx} = qq| |; @@ -411,9 +511,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 +603,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 +666,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 +753,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 +818,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 +836,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 +880,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 +939,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 +974,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 +1016,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 +1070,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 +1124,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,7 +1239,6 @@ sub send_email { sub print_options { $lxdebug->enter_sub(); - $form->{sendmode} = "attachment"; $form->{copies} = 3 unless $form->{copies}; @@ -1213,6 +1395,9 @@ sub print_options { sub print { $lxdebug->enter_sub(); + if ($form->{second_run}) { + $form->{print_and_post} = 0; + } # if this goes to the printer pass through if ($form->{media} eq 'printer' || $form->{media} eq 'queue') { @@ -1232,9 +1417,8 @@ sub print_form { $lxdebug->enter_sub(); my ($old_form) = @_; - $inv = "inv"; - $due = "due"; - + $inv = "inv"; + $due = "due"; $numberfld = "invnumber"; $display_form = @@ -1323,10 +1507,18 @@ sub print_form { # $locale->text('Quotation Date missing!') # assign number - if (!$form->{"${inv}number"}) { + if (!$form->{"${inv}number"} && !$form->{preview}) { $form->{"${inv}number"} = $form->update_defaults(\%myconfig, $numberfld); if ($form->{media} ne 'email') { + + # get pricegroups for parts + IS->get_pricegroups_for_parts(\%myconfig, \%$form); + + # build up html code for prices_$i + set_pricegroup($form->{rowcount}); + $form->{rowcount}--; + &{"$display_form"}; exit; } @@ -1513,6 +1705,8 @@ sub print_form { ? $locale->text('sent to printer') : $locale->text('emailed to') . " $form->{email}"; $form->redirect(qq|$form->{label} $form->{"${inv}number"} $msg|); + } else { + &{"$display_form"}; } $lxdebug->leave_sub(); @@ -1520,7 +1714,6 @@ sub print_form { sub customer_details { $lxdebug->enter_sub(); - IS->customer_details(\%myconfig, \%$form); $lxdebug->leave_sub(); } @@ -1546,22 +1739,30 @@ sub post_as_new { sub ship_to { $lxdebug->enter_sub(); + if ($form->{second_run}) { + $form->{print_and_post} = 0; + } $title = $form->{title}; $form->{title} = $locale->text('Ship to'); map { $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) } qw(exchangerate creditlimit creditremaining); - $form_id = $form->{id}; + # get details for name &{"$form->{vc}_details"}; - $form->{id} = $form_id; $number = ($form->{vc} eq 'customer') ? $locale->text('Customer Number') : $locale->text('Vendor Number'); + # get pricegroups for parts + IS->get_pricegroups_for_parts(\%myconfig, \%$form); + + # build up html code for prices_$i + set_pricegroup($form->{rowcount}); + $nextsub = ($form->{display_form}) ? $form->{display_form} : "display_form"; $form->{rowcount}--; @@ -1579,11 +1780,9 @@ sub ship_to { + . $locale->text('Billing Address') . qq| + . $locale->text('Shipping Address') . qq|
| - . $locale->text('Billing Address') - . qq| | - . $locale->text('Shipping Address') - . qq|