X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=sidebyside;f=bin%2Fmozilla%2Foe.pl;h=8f42a067b7d48b73a3420dc453bdfe86e068f5d3;hb=8bde65163db8c36ffa5e83bed7ee68ab859c106d;hp=aa6df6d615f3a909f62a764e982ed4969463ddac;hpb=53e76581596fc6d2caffd950feff42117d1abf96;p=kivitendo-erp.git diff --git a/bin/mozilla/oe.pl b/bin/mozilla/oe.pl index aa6df6d61..8f42a067b 100644 --- a/bin/mozilla/oe.pl +++ b/bin/mozilla/oe.pl @@ -31,6 +31,8 @@ # Quotation module #====================================================================== + +use Carp; use POSIX qw(strftime); use SL::DO; @@ -42,9 +44,11 @@ use SL::MoreCommon qw(ary_diff); use SL::PE; use SL::ReportGenerator; use List::MoreUtils qw(any none); -use List::Util qw(max reduce sum); +use List::Util qw(min max reduce sum); use Data::Dumper; +use SL::DB::Customer; + require "bin/mozilla/io.pl"; require "bin/mozilla/arap.pl"; require "bin/mozilla/reportgenerator.pl"; @@ -153,6 +157,8 @@ sub edit { check_oe_access(); + $form->{taxincluded_changed_by_user} = 1; + # show history button $form->{javascript} = qq||; #/show hhistory button @@ -223,8 +229,7 @@ sub order_links { $form->all_vc(\%myconfig, $form->{vc}, ($form->{vc} eq 'customer') ? "AR" : "AP"); # retrieve order/quotation - $form->{webdav} = $::lx_office_conf{features}->{webdav}; - $form->{jsscript} = 1; + $form->{webdav} = $::instance_conf->get_webdav; my $editing = $form->{id}; @@ -312,9 +317,6 @@ sub form_header { $form->{employee_id} = $form->{old_employee_id} if $form->{old_employee_id}; $form->{salesman_id} = $form->{old_salesman_id} if $form->{old_salesman_id}; - # use JavaScript Calendar or not - $form->{jsscript} = 1; - # openclosed checkboxes my @tmp; push @tmp, sprintf qq||, @@ -327,13 +329,9 @@ sub form_header { my @old_project_ids = ($form->{"globalproject_id"}, grep { $_ } map { $form->{"project_id_$_"} } 1..$form->{"rowcount"}); my $vc = $form->{vc} eq "customer" ? "customers" : "vendors"; - $form->get_lists("contacts" => "ALL_CONTACTS", - "shipto" => "ALL_SHIPTO", - "projects" => { "key" => "ALL_PROJECTS", + $form->get_lists("projects" => { "key" => "ALL_PROJECTS", "all" => 0, "old_id" => \@old_project_ids }, - "employees" => "ALL_EMPLOYEES", - "salesmen" => "ALL_SALESMEN", "taxzones" => "ALL_TAXZONES", "payments" => "ALL_PAYMENTS", "currencies" => "ALL_CURRENCIES", @@ -343,9 +341,22 @@ sub form_header { "price_factors" => "ALL_PRICE_FACTORS"); # label subs + my $employee_list_query_gen = sub { $::form->{$_[0]} ? [ or => [ id => $::form->{$_[0]}, deleted => 0 ] ] : [ deleted => 0 ] }; + $TMPL_VAR{ALL_EMPLOYEES} = SL::DB::Manager::Employee->get_all(query => $employee_list_query_gen->('employee_id')); + $TMPL_VAR{ALL_SALESMEN} = SL::DB::Manager::Employee->get_all(query => $employee_list_query_gen->('salesman_id')); + $TMPL_VAR{ALL_SHIPTO} = SL::DB::Manager::Shipto->get_all(query => [ + or => [ trans_id => $::form->{"$::form->{vc}_id"} * 1, and => [ shipto_id => $::form->{shipto_id} * 1, trans_id => undef ] ] + ]); + $TMPL_VAR{ALL_CONTACTS} = SL::DB::Manager::Contact->get_all(query => [ + or => [ + cp_cv_id => $::form->{"$::form->{vc}_id"} * 1, + and => [ + cp_cv_id => undef, + cp_id => $::form->{cp_id} * 1 + ] + ] + ]); $TMPL_VAR{sales_employee_labels} = sub { $_[0]->{name} || $_[0]->{login} }; - $TMPL_VAR{shipto_labels} = sub { join "; ", grep { $_ } map { $_[0]->{"shipto${_}" } } qw(name department_1 street city) }; - $TMPL_VAR{contact_labels} = sub { join(', ', $_[0]->{"cp_name"}, $_[0]->{"cp_givenname"}) . ($_[0]->{cp_abteilung} ? " ($_[0]->{cp_abteilung})" : "") }; $TMPL_VAR{department_labels} = sub { "$_[0]->{description}--$_[0]->{id}" }; # vendor/customer @@ -392,19 +403,18 @@ sub form_header { } } - my $onload = ""; + my $dispatch_to_popup = ''; if ($form->{resubmit} && ($form->{format} eq "html")) { - $onload = "window.open('about:blank','Beleg'); document.oe.target = 'Beleg';"; - $onload .= "document.do.submit();"; + $dispatch_to_popup = "window.open('about:blank','Beleg'); document.oe.target = 'Beleg';"; + $dispatch_to_popup .= "document.do.submit();"; } elsif ($form->{resubmit}) { # emulate click for resubmitting actions - $onload = "document.oe.${_}.click(); " for grep { /^action_/ } keys %$form; - $onload .= "document.oe.submit();"; + $dispatch_to_popup = "document.oe.${_}.click(); " for grep { /^action_/ } keys %$form; } elsif ($creditwarning) { - $onload = "alert('$credittext')"; + $::request->{layout}->add_javascripts_inline("alert('$credittext');"); } - $TMPL_VAR{onload} = $onload; + $::request->{layout}->add_javascripts_inline("\$(function(){$dispatch_to_popup})"); $TMPL_VAR{dateformat} = $myconfig{dateformat}; $TMPL_VAR{numberformat} = $myconfig{numberformat}; @@ -467,6 +477,11 @@ sub form_footer { $TMPL_VAR{notes} = qq||; $TMPL_VAR{intnotes} = qq||; + if( $form->{customer_id} && !$form->{taxincluded_changed_by_user} ) { + my $customer = SL::DB::Customer->new(id => $form->{customer_id})->load(); + $form->{taxincluded} = defined($customer->taxincluded_checked) ? $customer->taxincluded_checked : $myconfig{taxincluded_checked}; + } + if (!$form->{taxincluded}) { foreach my $item (split / /, $form->{taxaccounts}) { @@ -509,7 +524,7 @@ sub form_footer { print $form->parse_html_template("oe/form_footer", { %TMPL_VAR, - webdav => $::lx_office_conf{features}->{webdav}, + webdav => $::instance_conf->get_webdav, print_options => print_options(inline => 1), label_edit => $locale->text("Edit the $form->{type}"), label_workflow => $locale->text("Workflow $form->{type}"), @@ -582,7 +597,11 @@ sub update { $form->{"lastcost_$i"} = $form->parse_amount(\%myconfig, $form->{"lastcost_$i"}); if ($rows) { - $form->{"qty_$i"} = 1 unless ($form->parse_amount(\%myconfig, $form->{"qty_$i"})); + + $form->{"qty_$i"} = $form->parse_amount(\%myconfig, $form->{"qty_$i"}); + if( !$form->{"qty_$i"} ) { + $form->{"qty_$i"} = 1; + } if ($rows > 1) { @@ -701,16 +720,12 @@ sub search { # setup vendor / customer data $form->all_vc(\%myconfig, $form->{vc}, ($form->{vc} eq 'customer') ? "AR" : "AP"); $form->get_lists("projects" => { "key" => "ALL_PROJECTS", "all" => 1 }, - "employees" => "ALL_EMPLOYEES", - "salesmen" => "ALL_SALESMEN", "departments" => "ALL_DEPARTMENTS", "$form->{vc}s" => "ALL_VC"); + $form->{ALL_EMPLOYEES} = SL::DB::Manager::Employee->get_all(query => [ deleted => 0 ]); # constants and subs for template - $form->{jsscript} = 1; - $form->{employee_labels} = sub { $_[0]->{"name"} || $_[0]->{"login"} }; $form->{vc_keys} = sub { "$_[0]->{name}--$_[0]->{id}" }; - $form->{salesman_labels} = $form->{employee_labels}; $form->header(); @@ -766,6 +781,7 @@ sub orders { my @columns = ( "transdate", "reqdate", "id", $ordnumber, + "customernumber", "name", "netamount", "tax", "amount", "curr", "employee", @@ -825,6 +841,7 @@ sub orders { 'ordnumber' => { 'text' => $locale->text('Order'), }, 'quonumber' => { 'text' => $form->{type} eq "request_quotation" ? $locale->text('RFQ') : $locale->text('Quotation'), }, 'name' => { 'text' => $form->{vc} eq 'customer' ? $locale->text('Customer') : $locale->text('Vendor'), }, + 'customernumber' => { 'text' => $locale->text('Customer Number'), }, 'netamount' => { 'text' => $locale->text('Amount'), }, 'tax' => { 'text' => $locale->text('Tax'), }, 'amount' => { 'text' => $locale->text('Total'), }, @@ -906,7 +923,7 @@ sub orders { my %totals = map { $_ => 0 } @subtotal_columns; my %subtotals = map { $_ => 0 } @subtotal_columns; - my $idx = 0; + my $idx = 1; my $edit_url = build_std_url('action=edit', 'type', 'vc'); @@ -948,8 +965,8 @@ sub orders { my $row_set = [ $row ]; if (($form->{l_subtotal} eq 'Y') - && (($idx == (scalar @{ $form->{OE} } - 1)) - || ($oe->{ $form->{sort} } ne $form->{OE}->[$idx + 1]->{ $form->{sort} }))) { + && (($idx == (scalar @{ $form->{OE} })) + || ($oe->{ $form->{sort} } ne $form->{OE}->[$idx]->{ $form->{sort} }))) { push @{ $row_set }, create_subtotal_row(\%subtotals, \@columns, \%column_alignment, \@subtotal_columns, 'listsubtotal'); } @@ -1191,6 +1208,7 @@ sub save { } + # value of $ordnumber is ordnumber or quonumber $form->{$ordnumber} = $form->update_defaults(\%myconfig, $numberfld) unless $form->{$ordnumber}; @@ -1200,7 +1218,12 @@ sub save { # saving the history if(!exists $form->{addition}) { - $form->{snumbers} = qq|ordnumber_| . $form->{ordnumber}; + if ( $form->{formname} eq 'sales_quotation' or $form->{formname} eq 'request_quotation' ) { + $form->{snumbers} = qq|quonumber_| . $form->{quonumber}; + } elsif ( $form->{formname} eq 'sales_order' or $form->{formname} eq 'purchase_order') { + $form->{snumbers} = qq|ordnumber_| . $form->{ordnumber}; + }; + $form->{what_done} = $form->{formname}; $form->{addition} = "SAVED"; $form->save_history; } @@ -1208,7 +1231,7 @@ sub save { $form->{simple_save} = 1; if(!$form->{print_and_save}) { - delete @{$form}{ary_diff([keys %{ $form }], [qw(login stylesheet id script type cursor_fokus)])}; + delete @{$form}{ary_diff([keys %{ $form }], [qw(login id script type cursor_fokus)])}; edit(); ::end_of_request(); } @@ -1216,31 +1239,6 @@ sub save { } sub delete { - $::lxdebug->enter_sub; - - check_oe_access(); - - $::form->header; - - # delete action variable - delete $::form->{$_} for qw(action header); - - my @hiddens; - for my $key (keys %$::form) { - next if $key eq 'login' || $key eq 'password' || '' ne ref $::form->{$key}; - push @hiddens, { key => $key, value => $::form->{$key} }; - } - - print $::form->parse_html_template('oe/delete', { - hiddens => \@hiddens, - is_order => scalar($::form->{type} =~ /_order$/), - }); - - - $::lxdebug->leave_sub; -} - -sub delete_order_quotation { $main::lxdebug->enter_sub(); my $form = $main::form; @@ -1318,6 +1316,8 @@ sub invoice { ::end_of_request(); } + _oe_remove_delivered_or_billed_rows(id => $form->{id}, type => 'billed'); + $form->{cp_id} *= 1; for my $i (1 .. $form->{rowcount}) { @@ -1442,8 +1442,6 @@ sub backorder_exchangerate { $form->header; print qq| -
- - - -