X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fdo.pl;h=c3cb45b964fe4d7d27b5bddf66e7e92e98a780f7;hb=02d3f01099a54ff9599b82bfcf82d3d776d03043;hp=835e32aa0b603cb54643422a116726b7c4de4653;hpb=06eebe9868a3890f47d128eeeded938441df8f21;p=kivitendo-erp.git diff --git a/bin/mozilla/do.pl b/bin/mozilla/do.pl index 835e32aa0..c3cb45b96 100644 --- a/bin/mozilla/do.pl +++ b/bin/mozilla/do.pl @@ -40,7 +40,6 @@ use SL::IR; use SL::IS; use SL::ReportGenerator; use SL::WH; - require "bin/mozilla/arap.pl"; require "bin/mozilla/common.pl"; require "bin/mozilla/invoice_io.pl"; @@ -174,8 +173,8 @@ sub order_links { DO->retrieve('vc' => $form->{vc}, 'ids' => $form->{id}); - $form->backup_vars(qw(payment_id language_id taxzone_id salesman_id taxincluded cp_id intnotes)); - $form->{shipto} = 1 if $form->{id}; + $form->backup_vars(qw(payment_id language_id taxzone_id salesman_id taxincluded cp_id intnotes currency)); + $form->{shipto} = 1 if $form->{id} || $form->{convert_from_oe_ids}; # get customer / vendor if ($form->{vc} eq 'vendor') { @@ -187,6 +186,7 @@ sub order_links { } $form->restore_vars(qw(payment_id language_id taxzone_id intnotes cp_id)); + $form->restore_vars(qw(currency)) if ($form->{id} || $form->{convert_from_oe_ids}); $form->restore_vars(qw(taxincluded)) if $form->{id}; $form->restore_vars(qw(salesman_id)) if $editing; @@ -258,29 +258,37 @@ sub form_header { # use JavaScript Calendar or not $form->{jsscript} = 1; - #write Trigger - my $jsscript = Form->write_trigger(\%myconfig, "2", "transdate", "BL", "trigger1", "reqdate", "BL", "trigger2"); - my @old_project_ids = ($form->{"globalproject_id"}); map({ push(@old_project_ids, $form->{"project_id_$_"}) if ($form->{"project_id_$_"}); } (1..$form->{"rowcount"})); my $vc = $form->{vc} eq "customer" ? "customers" : "vendors"; - $form->get_lists("contacts" => "ALL_CONTACTS", - "shipto" => "ALL_SHIPTO", - "projects" => { + $form->get_lists("projects" => { "key" => "ALL_PROJECTS", "all" => 0, "old_id" => \@old_project_ids }, - "employees" => "ALL_EMPLOYEES", - "salesmen" => "ALL_SALESMEN", $vc => "ALL_VC", "price_factors" => "ALL_PRICE_FACTORS", "departments" => "ALL_DEPARTMENTS", "business_types" => "ALL_BUSINESS_TYPES", ); + $::form->{ALL_EMPLOYEES} = SL::DB::Manager::Employee->get_all(query => [ or => [ id => $::form->{employee_id}, deleted => 0 ] ]); + $::form->{ALL_SALESMEN} = SL::DB::Manager::Employee->get_all(query => [ or => [ id => $::form->{salesman_id}, deleted => 0 ] ]); + $::form->{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 ] ] + ]); + $::form->{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 + ] + ] + ]); + map { $_->{value} = "$_->{description}--$_->{id}" } @{ $form->{ALL_DEPARTMENTS} }; map { $_->{value} = "$_->{name}--$_->{id}" } @{ $form->{ALL_VC} }; @@ -289,23 +297,35 @@ sub form_header { $form->{oldvcname} = $form->{"old$form->{vc}"}; $form->{oldvcname} =~ s/--.*//; - $form->{onload} = ""; if ($form->{resubmit}) { + my $dispatch_to_popup = ''; if ($form->{format} eq "html") { - $form->{onload} = "window.open('about:blank','Beleg'); document.do.target = 'Beleg';"; + $dispatch_to_popup .= "window.open('about:blank','Beleg'); document.do.target = 'Beleg';"; } # emulate click for resubmitting actions - $form->{onload} .= "document.do.${_}.click(); " for grep { /^action_/ } keys %$form; - $form->{onload} .= "document.do.submit();" + $dispatch_to_popup .= "document.do.${_}.click(); " for grep { /^action_/ } keys %$form; + $dispatch_to_popup .= "document.do.submit();"; + $::request->{layout}->add_javascripts_inline("\$(function(){$dispatch_to_popup})"); } + my $follow_up_vc = $form->{ $form->{vc} eq 'customer' ? 'customer' : 'vendor' }; + $follow_up_vc =~ s/--\d*\s*$//; + + $form->{follow_up_trans_info} = $form->{donumber} .'('. $follow_up_vc .')'; + $form->header(); # Fix für Bug 1082 Erwartet wird: 'abteilungsNAME--abteilungsID' - # Und Fix für Bug 1760, die Abteilung kommt 2012 wieder korrekt hoch - # keine ahnung warum: get_departments unverändert, do/form_header.html unverändert und - # diese routine hier auch. Also erstmal wieder raus, falls jmd. eine Idee hat ... jan ;-) - #$form->{department} .= '--' . $form->{department_id}; - + # und Erweiterung für Bug 1760: + # Das war leider nur ein Teil-Fix, da das Verhalten den 'Erneuern'-Knopf + # nicht überlebt. Konsequent jetzt auf L umgestellt + # $ perldoc SL::Template::Plugin::L + # Daher entsprechend nur die Anpassung in form_header + # und in DO.pm gemacht. 4 Testfälle: + # department_id speichern | i.O. + # department_id lesen | i.O. + # department leer überlebt erneuern | i.O. + # department nicht leer überlebt erneuern | i.O. + # $main::lxdebug->message(0, 'ABTEILUNGS ID in form?' . $form->{department_id}); print $form->parse_html_template('do/form_header'); $main::lxdebug->leave_sub(); @@ -434,9 +454,9 @@ sub search { $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 ]); $form->{SHOW_VC_DROP_DOWN} = $myconfig{vclimit} > scalar @{ $form->{ALL_VC} }; $form->{jsscript} = 1; @@ -459,6 +479,7 @@ sub orders { my $locale = $main::locale; my $cgi = $::request->{cgi}; + $form->{department_id} = (split /--/, $form->{department})[-1]; ($form->{ $form->{vc} }, $form->{"$form->{vc}_id"}) = split(/--/, $form->{ $form->{vc} }); report_generator_set_default_sort('transdate', 1); @@ -470,10 +491,10 @@ sub orders { my @columns = qw( ids transdate id donumber - ordnumber - name employee + ordnumber customernumber + name employee salesman shipvia globalprojectnumber - transaction_description + transaction_description department open delivered ); @@ -498,16 +519,19 @@ sub orders { 'id' => { 'text' => $locale->text('ID'), }, 'donumber' => { 'text' => $locale->text('Delivery Order'), }, 'ordnumber' => { 'text' => $locale->text('Order'), }, + 'customernumber' => { 'text' => $locale->text('Customer Number'), }, 'name' => { 'text' => $form->{vc} eq 'customer' ? $locale->text('Customer') : $locale->text('Vendor'), }, 'employee' => { 'text' => $locale->text('Employee'), }, + 'salesman' => { 'text' => $locale->text('Salesman'), }, 'shipvia' => { 'text' => $locale->text('Ship via'), }, 'globalprojectnumber' => { 'text' => $locale->text('Project Number'), }, 'transaction_description' => { 'text' => $locale->text('Transaction description'), }, 'open' => { 'text' => $locale->text('Open'), }, 'delivered' => { 'text' => $locale->text('Delivered'), }, + 'department' => { 'text' => $locale->text('Department'), }, ); - foreach my $name (qw(id transdate donumber ordnumber name employee shipvia transaction_description)) { + foreach my $name (qw(id transdate donumber ordnumber name employee salesman shipvia transaction_description department)) { my $sortdir = $form->{sort} eq $name ? 1 - $form->{sortdir} : $form->{sortdir}; $column_defs{$name}->{link} = $href . "&sort=$name&sortdir=$sortdir"; } @@ -598,8 +622,7 @@ sub orders { }; $row->{donumber}->{link} = $edit_url . "&id=" . E($dord->{id}) . "&callback=${callback}"; - $row->{ordnumber}->{link} = $edit_order_url . "&id=" . E($dord->{oe_id}) . "&callback=${callback}"; - + $row->{ordnumber}->{link} = $edit_order_url . "&id=" . E($dord->{oe_id}) . "&callback=${callback}" if $dord->{oe_id}; $report->add_data($row); $idx++; @@ -775,6 +798,7 @@ sub invoice { require "bin/mozilla/$form->{script}"; my $currency = $form->{currency}; + $form->{shipto} = 1 if $form->{convert_from_do_ids}; invoice_links(); if ($form->{ordnumber}) { @@ -821,6 +845,13 @@ sub invoice { } + # show pricegroup in newly loaded invoice when creating invoice from delivery order + for my $i (1 .. $form->{rowcount}) { + $form->{"sellprice_pg_$i"} = join '--', $form->{"sellprice_$i"}, $form->{"pricegroup_id_$i"}; + } + IS->get_pricegroups_for_parts(\%myconfig, \%$form); + set_pricegroup($_) for 1 .. $form->{rowcount}; + display_form(); $main::lxdebug->leave_sub(); @@ -919,6 +950,14 @@ sub invoice_multi { invoice_links(); prepare_invoice(); + + # show pricegroup in newly loaded invoice when creating invoice from delivery order + for my $i (1 .. $form->{rowcount}) { + $form->{"sellprice_pg_$i"} = join '--', $form->{"sellprice_$i"}, $form->{"pricegroup_id_$i"}; + } + IS->get_pricegroups_for_parts(\%myconfig, \%$form); + set_pricegroup($_) for 1 .. $form->{rowcount}; + display_form(); $main::lxdebug->leave_sub(); @@ -987,14 +1026,16 @@ sub calculate_stock_in_out { my $in_out = $form->{type} =~ /^sales/ ? 'out' : 'in'; my $sinfo = DO->unpack_stock_information('packed' => $form->{"stock_${in_out}_${i}"}); + my $do_qty = AM->sum_with_unit($::form->{"qty_$i"}, $::form->{"unit_$i"}); my $sum = AM->sum_with_unit(map { $_->{qty}, $_->{unit} } @{ $sinfo }); + my $matches = $do_qty == $sum; my $content = $form->format_amount_units('amount' => $sum * 1, 'part_unit' => $form->{"partunit_$i"}, 'amount_unit' => $all_units->{$form->{"partunit_$i"}}->{base_unit}, 'conv_units' => 'convertible_not_smaller', 'max_places' => 2); - $content = qq|${content} |; + $content = qq|${content} |; $main::lxdebug->leave_sub(); @@ -1109,7 +1150,7 @@ sub display_stock_in_form { get_basic_bin_wh_info($stock_info); - $form->header(); + $form->header(no_layout => 1); print $form->parse_html_template('do/stock_in_form', { 'UNITS' => $units_data, 'STOCK_INFO' => $stock_info, 'PART_INFO' => $part_info, }); @@ -1149,8 +1190,13 @@ sub set_stock_in { _stock_in_out_set_qty_display($stock_info); + my $do_qty = AM->sum_with_unit($::form->parse_amount(\%::myconfig, $::form->{do_qty}), $::form->{do_unit}); + my $transfer_qty = AM->sum_with_unit(map { $_->{qty}, $_->{unit} } @{ $stock_info }); + $form->header(); - print $form->parse_html_template('do/set_stock_in_out'); + print $form->parse_html_template('do/set_stock_in_out', { + qty_matches => $do_qty == $transfer_qty, + }); $main::lxdebug->leave_sub(); } @@ -1198,7 +1244,7 @@ sub stock_out_form { } } - $form->header(); + $form->header(no_layout => 1); print $form->parse_html_template('do/stock_out_form', { 'UNITS' => $units_data, 'WHCONTENTS' => $form->{delivered} ? $stock_info : \@contents, 'PART_INFO' => $part_info, }); @@ -1244,8 +1290,13 @@ sub set_stock_out { } else { _stock_in_out_set_qty_display($stock_info); + my $do_qty = AM->sum_with_unit($::form->parse_amount(\%::myconfig, $::form->{do_qty}), $::form->{do_unit}); + my $transfer_qty = AM->sum_with_unit(map { $_->{qty}, $_->{unit} } @{ $stock_info }); + $form->header(); - print $form->parse_html_template('do/set_stock_in_out'); + print $form->parse_html_template('do/set_stock_in_out', { + qty_matches => $do_qty == $transfer_qty, + }); } $main::lxdebug->leave_sub(); @@ -1393,7 +1444,7 @@ sub transfer_out { my $pinfo = $part_info_map{$request->{parts_id}}; my $binfo = $bin_info_map{$request->{bin_id}}; - if ($::lx_office_conf{features}->{show_best_before}) { + if ($::instance_conf->get_show_bestbefore) { push @{ $form->{ERRORS} }, $locale->text("There is not enough available of '#1' at warehouse '#2', bin '#3', #4, #5, for the transfer of #6.", $pinfo->{description}, $binfo->{warehouse_description},