X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=inline;f=bin%2Fmozilla%2Foe.pl;h=addf693c5a586d431b214b981d8d17edab806893;hb=1167841707ec8fe4ac5964830cd292f129e9f98d;hp=02bdf1bce369ab4e6ec7b44a364db05286233c15;hpb=14e2159f732ab3b7b3372daa2e257e65fdc13e18;p=kivitendo-erp.git diff --git a/bin/mozilla/oe.pl b/bin/mozilla/oe.pl index 02bdf1bce..addf693c5 100644 --- a/bin/mozilla/oe.pl +++ b/bin/mozilla/oe.pl @@ -41,6 +41,7 @@ use SL::IS; 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 Data::Dumper; @@ -50,8 +51,7 @@ require "bin/mozilla/reportgenerator.pl"; use strict; -my $print_post; -my %TMPL_VAR; +our %TMPL_VAR; 1; @@ -181,7 +181,8 @@ sub edit { my ($language_id, $printer_id); if ($form->{print_and_save}) { - $form->{action} = "print"; + $form->{action} = "dispatcher"; + $form->{action_print} = "1"; $form->{resubmit} = 1; $language_id = $form->{language_id}; $printer_id = $form->{printer_id}; @@ -222,7 +223,7 @@ sub order_links { $form->all_vc(\%myconfig, $form->{vc}, ($form->{vc} eq 'customer') ? "AR" : "AP"); # retrieve order/quotation - $form->{webdav} = $main::webdav; + $form->{webdav} = $::lx_office_conf{features}->{webdav}; $form->{jsscript} = 1; my $editing = $form->{id}; @@ -238,14 +239,14 @@ sub order_links { $form->{"$form->{vc}_id"} ||= $form->{"all_$form->{vc}"}->[0]->{id} if $form->{"all_$form->{vc}"}; - $form->backup_vars(qw(payment_id language_id taxzone_id salesman_id taxincluded cp_id intnotes)); + $form->backup_vars(qw(payment_id language_id taxzone_id salesman_id taxincluded cp_id intnotes shipto_id)); $form->{shipto} = 1 if $form->{id}; # get customer / vendor IR->get_vendor(\%myconfig, \%$form) if $form->{type} =~ /(purchase_order|request_quotation)/; IS->get_customer(\%myconfig, \%$form) if $form->{type} =~ /sales_(order|quotation)/; - $form->restore_vars(qw(payment_id language_id taxzone_id intnotes cp_id)); + $form->restore_vars(qw(payment_id language_id taxzone_id intnotes cp_id shipto_id)); $form->restore_vars(qw(taxincluded)) if $form->{id}; $form->restore_vars(qw(salesman_id)) if $editing; $form->{forex} = $form->{exchangerate}; @@ -283,6 +284,7 @@ sub prepare_order { $form->{"reqdate_$i"} ||= $form->{"deliverydate_$i"}; $form->{"discount_$i"} = $form->format_amount(\%myconfig, $form->{"discount_$i"} * ($format_discounts ? 100 : 1)); $form->{"sellprice_$i"} = $form->format_amount(\%myconfig, $form->{"sellprice_$i"}); + $form->{"lastcost_$i"} = $form->format_amount(\%myconfig, $form->{"lastcost_$i"}); $form->{"qty_$i"} = $form->format_amount(\%myconfig, $form->{"qty_$i"}); } @@ -296,12 +298,12 @@ sub form_header { my $form = $main::form; my %myconfig = %main::myconfig; my $locale = $main::locale; - my $cgi = $main::cgi; + my $cgi = $::request->{cgi}; check_oe_access(); # Container for template variables. Unfortunately this has to be - # visible in form_footer too, so my at package level and not here. + # visible in form_footer too, so package local level and not my here. %TMPL_VAR = (); $form->{defaultcurrency} = $form->get_default_currency(\%myconfig); @@ -387,14 +389,31 @@ sub form_header { } } - my $onload = ($form->{resubmit} && ($form->{format} eq "html")) ? "window.open('about:blank','Beleg'); document.oe.target = 'Beleg';document.oe.submit()" - : ($form->{resubmit}) ? "document.oe.submit()" - : ($creditwarning) ? "alert('$credittext')" - : ""; + my $onload = ""; + if ($form->{resubmit} && ($form->{format} eq "html")) { + $onload = "window.open('about:blank','Beleg'); document.oe.target = 'Beleg';"; + $onload .= "document.do.submit();"; + } elsif ($form->{resubmit}) { + # emulate click for resubmitting actions + $onload = "document.oe.${_}.click(); " for grep { /^action_/ } keys %$form; + $onload .= "document.oe.submit();"; + } elsif ($creditwarning) { + $onload = "alert('$credittext')"; + } - $onload .= qq|;setupDateFormat('|. $myconfig{dateformat} .qq|', '|. $locale->text("Falsches Datumsformat!") .qq|')|; - $onload .= qq|;setupPoints('|. $myconfig{numberformat} .qq|', '|. $locale->text("wrongformat") .qq|')|; $TMPL_VAR{onload} = $onload; + $TMPL_VAR{dateformat} = $myconfig{dateformat}; + $TMPL_VAR{numberformat} = $myconfig{numberformat}; + + if ($form->{type} eq 'sales_order') { + if (!$form->{periodic_invoices_config}) { + $form->{periodic_invoices_status} = $locale->text('not configured'); + + } else { + my $config = YAML::Load($form->{periodic_invoices_config}); + $form->{periodic_invoices_status} = $config->{active} ? $locale->text('active') : $locale->text('inactive'); + } + } $form->{javascript} .= qq||; $form->{javascript} .= qq||; @@ -407,7 +426,7 @@ sub form_header { title creditlimit creditremaining tradediscount business max_dunning_level dunning_amount shiptoname shiptostreet shiptozipcode shiptocity shiptocountry shiptocontact shiptophone shiptofax - shiptodepartment_1 shiptodepartment_2 shiptoemail + shiptodepartment_1 shiptodepartment_2 shiptoemail shiptocp_gender message email subject cc bcc taxpart taxservice taxaccounts cursor_fokus), @custom_hiddens, map { $_.'_rate', $_.'_description' } split / /, $form->{taxaccounts} ]; # deleted: discount @@ -442,8 +461,8 @@ sub form_footer { my $introws = max 2, $form->numtextrows($form->{intnotes}, 35, 8); $rows = max $rows, $introws; - $TMPL_VAR{notes} = qq||; - $TMPL_VAR{intnotes} = qq||; + $TMPL_VAR{notes} = qq||; + $TMPL_VAR{intnotes} = qq||; if (!$form->{taxincluded}) { @@ -487,7 +506,7 @@ sub form_footer { print $form->parse_html_template("oe/form_footer", { %TMPL_VAR, - webdav => $main::webdav, + webdav => $::lx_office_conf{features}->{webdav}, print_options => print_options(inline => 1), label_edit => $locale->text("Edit the $form->{type}"), label_workflow => $locale->text("Workflow $form->{type}"), @@ -505,15 +524,13 @@ sub form_footer { sub update { $main::lxdebug->enter_sub(); - my ($recursive_call) = shift; + my ($recursive_call) = @_; my $form = $main::form; my %myconfig = %main::myconfig; check_oe_access(); -# $main::lxdebug->message(0, Dumper($form)); - set_headings($form->{"id"} ? "edit" : "add"); map { $form->{$_} = $form->parse_amount(\%myconfig, $form->{$_}) } qw(exchangerate) unless $recursive_call; @@ -540,10 +557,13 @@ sub update { &check_form; } else { + my $mode; if ($form->{type} =~ /^sales/) { IS->retrieve_item(\%myconfig, \%$form); + $mode = 'IS'; } else { IR->retrieve_item(\%myconfig, \%$form); + $mode = 'IR'; } my $rows = scalar @{ $form->{item_list} }; @@ -554,13 +574,15 @@ sub update { # select discount as customer_discount from customer $form->{"discount_$i"} = $form->format_amount(\%myconfig, $form->{"$form->{vc}_discount"} * 100); + $form->{"lastcost_$i"} = $form->parse_amount(\%myconfig, $form->{"lastcost_$i"}); + if ($rows) { $form->{"qty_$i"} = 1 unless ($form->parse_amount(\%myconfig, $form->{"qty_$i"})); if ($rows > 1) { - &select_item; - exit; + select_item(mode => $mode); + ::end_of_request(); } else { @@ -599,6 +621,7 @@ sub update { $form->{creditremaining} -= $amount; $form->{"sellprice_$i"} = $form->format_amount(\%myconfig, $form->{"sellprice_$i"}, $decimalplaces); + $form->{"lastcost_$i"} = $form->format_amount(\%myconfig, $form->{"lastcost_$i"}, $decimalplaces); $form->{"qty_$i"} = $form->format_amount(\%myconfig, $form->{"qty_$i"}, $dec_qty); # get pricegroups for parts @@ -688,7 +711,7 @@ sub search { print $form->parse_html_template('oe/search', { %myconfig, - is_order => $form->{type} =~ /_order/, + is_order => scalar($form->{type} =~ /_order/), }); $main::lxdebug->leave_sub(); @@ -721,7 +744,7 @@ sub orders { my $form = $main::form; my %myconfig = %main::myconfig; my $locale = $main::locale; - my $cgi = $main::cgi; + my $cgi = $::request->{cgi}; check_oe_access(); @@ -744,7 +767,8 @@ sub orders { "salesman", "shipvia", "globalprojectnumber", "transaction_description", "open", - "delivered", "marge_total", "marge_percent", + "delivered", "periodic_invoices", + "marge_total", "marge_percent", "vcnumber", "ustid", "country", ); @@ -755,8 +779,9 @@ sub orders { unshift @columns, "ids"; } - $form->{l_open} = $form->{l_closed} = "Y" if ($form->{open} && $form->{closed}); - $form->{l_delivered} = "Y" if ($form->{delivered} && $form->{notdelivered}); + $form->{l_open} = $form->{l_closed} = "Y" if ($form->{open} && $form->{closed}); + $form->{l_delivered} = "Y" if ($form->{delivered} && $form->{notdelivered}); + $form->{l_periodic_invoices} = "Y" if ($form->{periodic_invoices_active} && $form->{periodic_invoices_inactive}); my $attachment_basename; if ($form->{vc} eq 'vendor') { @@ -783,7 +808,7 @@ sub orders { my @hidden_variables = map { "l_${_}" } @columns; push @hidden_variables, "l_subtotal", $form->{vc}, qw(l_closed l_notdelivered open closed delivered notdelivered ordnumber quonumber transaction_description transdatefrom transdateto type vc employee_id salesman_id - reqdatefrom reqdateto projectnumber project_id); + reqdatefrom reqdateto projectnumber project_id periodic_invoices_active periodic_invoices_inactive); my $href = build_std_url('action=orders', grep { $form->{$_} } @hidden_variables); @@ -811,6 +836,7 @@ sub orders { 'vcnumber' => { 'text' => $form->{vc} eq 'customer' ? $locale->text('Customer Number') : $locale->text('Vendor Number'), }, 'country' => { 'text' => $locale->text('Country'), }, 'ustid' => { 'text' => $locale->text('USt-IdNr.'), }, + 'periodic_invoices' => { 'text' => $locale->text('Per. Inv.'), }, ); foreach my $name (qw(id transdate reqdate quonumber ordnumber name employee salesman shipvia transaction_description)) { @@ -852,6 +878,7 @@ sub orders { push @options, $locale->text('Closed') if $form->{closed}; push @options, $locale->text('Delivered') if $form->{delivered}; push @options, $locale->text('Not delivered') if $form->{notdelivered}; + push @options, $locale->text('Periodic invoices active') if $form->{periodic_invoices_actibe}; $report->set_options('top_info_text' => join("\n", @options), 'raw_top_info_text' => $form->parse_html_template('oe/orders_top'), @@ -861,6 +888,7 @@ sub orders { 'attachment_basename' => $attachment_basename . strftime('_%Y%m%d', localtime time), ); $report->set_options_from_form(); + $locale->set_numberformat_wo_thousands_separator(\%myconfig) if lc($report->{options}->{output_format}) eq 'csv'; # add sort and escape callback, this one we use for the add sub $form->{callback} = $href .= "&sort=$form->{sort}"; @@ -880,9 +908,10 @@ sub orders { foreach my $oe (@{ $form->{OE} }) { map { $oe->{$_} *= $oe->{exchangerate} } @subtotal_columns; - $oe->{tax} = $oe->{amount} - $oe->{netamount}; - $oe->{open} = $oe->{closed} ? $locale->text('No') : $locale->text('Yes'); - $oe->{delivered} = $oe->{delivered} ? $locale->text('Yes') : $locale->text('No'); + $oe->{tax} = $oe->{amount} - $oe->{netamount}; + $oe->{open} = $oe->{closed} ? $locale->text('No') : $locale->text('Yes'); + $oe->{delivered} = $oe->{delivered} ? $locale->text('Yes') : $locale->text('No'); + $oe->{periodic_invoices} = $oe->{periodic_invoices} ? $locale->text('On') : $locale->text('Off'); map { $subtotals{$_} += $oe->{$_}; $totals{$_} += $oe->{$_} } @subtotal_columns; @@ -1006,7 +1035,7 @@ sub save_and_close { $form->{payment_id} = $payment_id; } &update; - exit; + ::end_of_request(); } $form->{id} = 0 if $form->{saveasnew}; @@ -1060,7 +1089,7 @@ sub save_and_close { if(!exists $form->{addition}) { $form->{snumbers} = qq|ordnumber_| . $form->{ordnumber}; $form->{addition} = "SAVED"; - $form->save_history($form->dbconnect(\%myconfig)); + $form->save_history; } # /saving the history @@ -1115,7 +1144,7 @@ sub save { $form->{payment_id} = $payment_id; } &update; - exit; + ::end_of_request(); } $form->{id} = 0 if $form->{saveasnew}; @@ -1168,7 +1197,7 @@ sub save { if(!exists $form->{addition}) { $form->{snumbers} = qq|ordnumber_| . $form->{ordnumber}; $form->{addition} = "SAVED"; - $form->save_history($form->dbconnect(\%myconfig)); + $form->save_history; } # /saving the history @@ -1176,62 +1205,34 @@ sub save { if(!$form->{print_and_save}) { delete @{$form}{ary_diff([keys %{ $form }], [qw(login stylesheet id script type cursor_fokus)])}; edit(); - exit; + ::end_of_request(); } $main::lxdebug->leave_sub(); } sub delete { - $main::lxdebug->enter_sub(); - - my $form = $main::form; - my $locale = $main::locale; + $::lxdebug->enter_sub; check_oe_access(); - $form->header; - - my ($msg, $ordnumber); - if ($form->{type} =~ /_order$/) { - $msg = $locale->text('Are you sure you want to delete Order Number'); - $ordnumber = 'ordnumber'; - } else { - $msg = $locale->text('Are you sure you want to delete Quotation Number'); - $ordnumber = 'quonumber'; - } - - print qq| -
- - - -