X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/kivitendo-erp.git/blobdiff_plain/f44e05062d58d2351e27fab42a393d508be35643..e7127ad02437a6311dc646db8027c44ba19bd62c:/bin/mozilla/io.pl diff --git a/bin/mozilla/io.pl b/bin/mozilla/io.pl index d696dd200..314368d2c 100644 --- a/bin/mozilla/io.pl +++ b/bin/mozilla/io.pl @@ -91,6 +91,11 @@ sub display_row { $lxdebug->enter_sub(); my $numrows = shift; + my $is_sales = + (substr($form->{type}, 0, 6) eq "sales_") + || (($form->{type} eq "invoice") && ($form->{script} eq "is.pl")) + || ($form->{type} eq 'credit_note'); + if ($lizenzen && $form->{vc} eq "customer") { if ($form->{type} =~ /sales_order/) { @column_index = (runningnumber, partnumber, description, ship, qty); @@ -241,6 +246,9 @@ sub display_row { $delvar = 'reqdate'; } + $form->{marge_total} = 0; + $form->{sellprice_total} = 0; + $form->{lastcost_total} = 0; my %projectnumber_labels = (); my @projectnumber_values = (""); foreach my $item (@{ $form->{"ALL_PROJECTS"} }) { @@ -300,6 +308,34 @@ sub display_row { $linetotal = $form->round_amount($form->{"sellprice_$i"} - $discount, $decimalplaces); $linetotal = $form->round_amount($linetotal * $form->{"qty_$i"}, 2); + my $real_sellprice = $form->{"sellprice_$i"} - $discount; + + # marge calculations + my ($marge_font_start, $marge_font_end); + + $form->{"lastcost_$i"} *= 1; + + if ($real_sellprice && ($form->{"qty_$i"} * 1)) { + $form->{"marge_percent_$i"} = ($real_sellprice - $form->{"lastcost_$i"}) * 100 / $real_sellprice; + $myconfig{"marge_percent_warn"} = 15 unless (defined($myconfig{"marge_percent_warn"})); + + if ($form->{"id_$i"} && + ($form->{"marge_percent_$i"} < (1 * $myconfig{"marge_percent_warn"}))) { + $marge_font_start = ""; + $marge_font_end = ""; + } + + } else { + $form->{"marge_percent_$i"} = 0; + } + + my $marge_adjust_credit_note = $form->{type} eq 'credit_note' ? -1 : 1; + $form->{"marge_absolut_$i"} = ($real_sellprice - $form->{"lastcost_$i"}) * $form->{"qty_$i"} * $marge_adjust_credit_note; + $form->{"marge_total"} += $form->{"marge_absolut_$i"}; + $form->{"lastcost_total"} += $form->{"lastcost_$i"} * $form->{"qty_$i"}; + $form->{"sellprice_total"} += $real_sellprice * $form->{"qty_$i"}; + + map { $form->{"${_}_$i"} = $form->format_amount(\%myconfig, $form->{"${_}_$i"}, 2) } qw(marge_absolut marge_percent); # convert " to " map { $form->{"${_}_$i"} =~ s/\"/"/g } @@ -439,7 +475,7 @@ sub display_row { "id_$i", "inventory_accno_$i", "bin_$i", "partsgroup_$i", "partnotes_$i", "income_accno_$i", "expense_accno_$i", "listprice_$i", "assembly_$i", "taxaccounts_$i", "ordnumber_$i", "transdate_$i", "cusordnumber_$i", - "longdescription_$i", "basefactor_$i")); + "longdescription_$i", "basefactor_$i", "marge_absolut_$i", "marge_percent_$i", "lastcost_$i")); ######################################## # Eintrag fuer Version 2.2.0 geaendert # @@ -492,9 +528,18 @@ sub display_row { my $subtotalchecked = ($form->{"subtotal_$i"}) ? "checked" : ""; print qq| |.$locale->text('Subtotal').qq|  +|; + + if ($form->{"id_$i"} && $is_sales) { + print qq| + ${marge_font_start}| . $locale->text('Ertrag') . qq| $form->{"marge_absolut_$i"}  $form->{"marge_percent_$i"} % ${marge_font_end} +  | . $locale->text('LP') . qq| | . $form->format_amount(\%myconfig, $form->{"listprice_$i"}, 2) . qq| +  | . $locale->text('EK') . qq| | . $form->format_amount(\%myconfig, $form->{"lastcost_$i"}, 2); + } + + print qq| - |; ############## ENDE Neueintrag ################## @@ -511,6 +556,10 @@ sub display_row { |; + if (0 != ($form->{sellprice_total} * 1)) { + $form->{marge_percent} = ($form->{sellprice_total} - $form->{lastcost_total}) / $form->{sellprice_total} * 100; + } + $lxdebug->leave_sub(); } @@ -647,7 +696,7 @@ sub select_item { my @new_fields = qw(bin listprice inventory_accno income_accno expense_accno unit weight assembly taxaccounts partsgroup formel longdescription not_discountable - part_payment_id partnotes id); + part_payment_id partnotes id lastcost); push(@new_fields, "lizenzen") if ($lizenzen); print join "\n", map { $cgi->hidden("-name" => "new_${_}_$i", "-value" => $ref->{$_}) } @new_fields; @@ -706,7 +755,7 @@ sub item_selected { map { $form->{"${_}_$i"} = $form->{"new_${_}_$j"} } qw(id partnumber description sellprice listprice inventory_accno income_accno expense_accno bin unit weight assembly taxaccounts - partsgroup formel longdescription not_discountable partnotes); + partsgroup formel longdescription not_discountable partnotes lastcost); if ($form->{"part_payment_id_$i"} ne "") { $form->{payment_id} = $form->{"part_payment_id_$i"}; } @@ -946,7 +995,7 @@ sub check_form { 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 payment_id not_discountable shop ve gv buchungsgruppen_id language_values sellprice_pg pricegroup_old price_old price_new unit_old ordnumber transdate longdescription basefactor) + 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 payment_id not_discountable shop ve gv buchungsgruppen_id language_values sellprice_pg pricegroup_old price_old price_new unit_old ordnumber transdate longdescription basefactor marge_absolut marge_percent lastcost ) ); @@ -1018,6 +1067,9 @@ sub check_form { $form->redo_rows(\@flds, \@a, $count, $form->{makemodel_rows}); $form->{makemodel_rows} = $count; + } elsif ($form->{item} eq 'service') { + map { $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) } qw(listprice sellprice lastcost); + } else { # this section applies to invoices and orders @@ -1129,6 +1181,9 @@ sub order { } $form->{ordnumber} = $form->{invnumber}; + $form->{old_employee_id} = $form->{employee_id}; + $form->{old_salesman_id} = $form->{salesman_id}; + 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'); @@ -1379,14 +1434,16 @@ sub print_options { if ($form->{media} ne 'email'); push @FORMAT, grep $_, - ($opendocument_templates && $openofficeorg_writer_bin && $xvfb_bin && (-x $openofficeorg_writer_bin) && (-x $xvfb_bin)) ? + ($opendocument_templates && $openofficeorg_writer_bin && $xvfb_bin && (-x $openofficeorg_writer_bin) && (-x $xvfb_bin) + && !$options->{no_opendocument_pdf}) ? opthash("opendocument_pdf", $form->{DF}{"opendocument_pdf"}, $locale->text("PDF (OpenDocument/OASIS)")) : undef, - ($latex_templates) ? ( - opthash("pdf", $form->{DF}{pdf}, $locale->text('PDF')), - opthash("postscript", $form->{DF}{postscript}, $locale->text('Postscript')) - ) : undef, - opthash("html", $form->{DF}{html}, "HTML"), - ($opendocument_templates) ? + ($latex_templates) ? + opthash("pdf", $form->{DF}{pdf}, $locale->text('PDF')) : undef, + ($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}) ? opthash("opendocument", $form->{DF}{opendocument}, $locale->text("OpenDocument/OASIS")) : undef; push @LANGUAGE_ID, @@ -1423,6 +1480,12 @@ sub print_options { sub print { $lxdebug->enter_sub(); + if ($form->{print_nextsub}) { + call_sub($form->{print_nextsub}); + $lxdebug->leave_sub(); + return; + } + # if this goes to the printer pass through if ($form->{media} eq 'printer' || $form->{media} eq 'queue') { $form->error($locale->text('Select postscript or PDF!')) @@ -1685,7 +1748,14 @@ sub print_form { delete $form->{printer_command}; $form->{language} = $form->get_template_language(\%myconfig); - $form->{printer_code} = $form->get_printer_code(\%myconfig); + + my $printer_code; + if ($form->{media} ne 'email') { + $printer_code = $form->get_printer_code(\%myconfig); + if ($printer_code ne "") { + $printer_code = "_" . $printer_code; + } + } if ($form->{language} ne "") { map({ $form->{"unit"}->[$_] = @@ -1731,11 +1801,7 @@ sub print_form { grep({ /^qty_\d+$/ } keys(%{$form}))); - if ($form->{printer_code} ne "") { - $form->{printer_code} = "_" . $form->{printer_code}; - } - - $form->{IN} = "$form->{formname}$form->{language}$form->{printer_code}.html"; + $form->{IN} = "$form->{formname}$form->{language}${printer_code}.html"; if ($form->{format} eq 'postscript') { $form->{postscript} = 1; $form->{IN} =~ s/html$/tex/;