X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fdo.pl;h=4f55310aa987a249958cb08a9462b9411fa52b91;hb=a96b6e954640c26516962ad7cee25a98b90eb883;hp=ff902172d09a2bac6f49ddd41148ab2b8e6993d0;hpb=65b2387a54494a8cbc1d011602ae3f8d7208ea4d;p=kivitendo-erp.git diff --git a/bin/mozilla/do.pl b/bin/mozilla/do.pl index ff902172d..4f55310aa 100644 --- a/bin/mozilla/do.pl +++ b/bin/mozilla/do.pl @@ -241,13 +241,19 @@ sub setup_do_action_bar { my @req_trans_desc = qw(kivi.SalesPurchase.check_transaction_description) x!!$::instance_conf->get_require_transaction_description_ps; my $is_customer = $::form->{vc} eq 'customer'; + my $undo_date = DateTime->today->subtract(days => $::instance_conf->get_undo_transfer_interval); + my $insertdate = DateTime->from_kivitendo($::form->{insertdate}); + my $undo_transfer = 0; + if (ref $undo_date eq 'DateTime' && ref $insertdate eq 'DateTime') { + # DateTime->compare it returns 1 if $dt1 > $dt2 + $undo_transfer = DateTime->compare($insertdate, $undo_date) == 1 ? 1 : 0; + } for my $bar ($::request->layout->get('actionbar')) { $bar->add( action => [ t8('Update'), submit => [ '#form', { action => "update" } ], id => 'update_button', - checks => [ 'kivi.validate_form' ], accesskey => 'enter', ], @@ -315,6 +321,13 @@ sub setup_do_action_bar { disabled => $::form->{delivered} ? t8('This record has already been delivered.') : undef, only_if => !$is_customer && $::instance_conf->get_transfer_default, ], + action => [ + t8('Undo Transfer'), + submit => [ '#form', { action => "delete_transfers" } ], + checks => [ 'kivi.validate_form' ], + only_if => $::form->{delivered}, + disabled => !$undo_transfer ? t8('Transfer date exceeds the maximum allowed interval.') : undef, + ], ], # end of combobox "Transfer out" @@ -324,6 +337,10 @@ sub setup_do_action_bar { t8('Invoice'), submit => [ '#form', { action => "invoice" } ], disabled => !$::form->{id} ? t8('This record has not been saved yet.') : undef, + confirm => $::form->{delivered} ? undef + : ($::form->{vc} eq 'customer' && $::instance_conf->get_sales_delivery_order_check_stocked) ? t8('This record has not been stocked out. Proceed?') + : ($::form->{vc} eq 'vendor' && $::instance_conf->get_purchase_delivery_order_check_stocked) ? t8('This record has not been stocked in. Proceed?') + : undef, ], combobox => [ @@ -337,6 +354,7 @@ sub setup_do_action_bar { t8('E Mail'), call => [ 'kivi.SalesPurchase.show_email_dialog' ], checks => [ 'kivi.validate_form' ], + disabled => !$::form->{id} ? t8('This record has not been saved yet.') : undef, ], ], # end of combobox "Export" @@ -417,6 +435,7 @@ sub form_header { "business_types" => "ALL_BUSINESS_TYPES", ); $form->{ALL_DEPARTMENTS} = SL::DB::Manager::Department->get_all_sorted; + $form->{ALL_LANGUAGES} = SL::DB::Manager::Language->get_all_sorted; # Projects my @old_project_ids = uniq grep { $_ } map { $_ * 1 } ($form->{"globalproject_id"}, map { $form->{"project_id_$_"} } 1..$form->{"rowcount"}); @@ -455,9 +474,9 @@ sub form_header { if ($form->{resubmit} && ($form->{format} eq "html")) { $dispatch_to_popup = "window.open('about:blank','Beleg'); document.do.target = 'Beleg';"; $dispatch_to_popup .= "document.do.submit();"; - } elsif ($form->{resubmit}) { + } elsif ($form->{resubmit} && $form->{action_print}) { # emulate click for resubmitting actions - $dispatch_to_popup = "document.do.${_}.click(); " for grep { /^action_/ } keys %$form; + $dispatch_to_popup = "kivi.SalesPurchase.show_print_dialog(); kivi.SalesPurchase.print_record();"; } $::request->{layout}->add_javascripts_inline("\$(function(){$dispatch_to_popup});"); @@ -466,11 +485,6 @@ sub form_header { $::request->{layout}->use_javascript(map { "${_}.js" } qw(kivi.File kivi.MassDeliveryOrderPrint kivi.SalesPurchase kivi.Part kivi.CustomerVendor kivi.Validator ckeditor/ckeditor ckeditor/adapters/jquery kivi.io)); - my @custom_hidden; - push @custom_hidden, map { "shiptocvar_" . $_->name } @{ SL::DB::Manager::CustomVariableConfig->get_all(where => [ module => 'ShipTo' ]) }; - - $::form->{HIDDENS} = [ map { +{ name => $_, value => $::form->{$_} } } (@custom_hidden) ]; - setup_do_action_bar(); $form->header(); @@ -501,8 +515,15 @@ sub form_footer { $form->{PRINT_OPTIONS} = setup_sales_purchase_print_options(); $form->{ALL_DELIVERY_TERMS} = SL::DB::Manager::DeliveryTerm->get_all_sorted(); + my $shipto_cvars = SL::DB::Shipto->new->cvars_by_config; + foreach my $var (@{ $shipto_cvars }) { + my $name = "shiptocvar_" . $var->config->name; + $var->value($form->{$name}) if exists $form->{$name}; + } + print $form->parse_html_template('do/form_footer', - {transfer_default => ($::instance_conf->get_transfer_default)}); + {transfer_default => ($::instance_conf->get_transfer_default), + shipto_cvars => $shipto_cvars}); $main::lxdebug->leave_sub(); } @@ -706,7 +727,7 @@ sub orders { push @hidden_variables, $form->{vc}, qw(l_closed l_notdelivered open closed delivered notdelivered donumber ordnumber serialnumber cusordnumber transaction_description transdatefrom transdateto reqdatefrom reqdateto type vc employee_id salesman_id project_id parts_partnumber parts_description - insertdatefrom insertdateto business_id all); + insertdatefrom insertdateto business_id all department_id); my $href = build_std_url('action=orders', grep { $form->{$_} } @hidden_variables); @@ -962,6 +983,37 @@ sub delete { $main::lxdebug->leave_sub(); } +sub delete_transfers { + $main::lxdebug->enter_sub(); + + check_do_access(); + + my $form = $main::form; + my %myconfig = %main::myconfig; + my $locale = $main::locale; + my $ret; + + die "Invalid form type" unless $form->{type} =~ m/^(sales|purchase)_delivery_order$/; + + if ($ret = DO->delete_transfers()) { + # saving the history + if(!exists $form->{addition}) { + $form->{snumbers} = qq|donumber_| . $form->{donumber}; + $form->{addition} = "UNDO TRANSFER"; + $form->save_history; + } + # /saving the history + + flash_later('info', $locale->text("Transfer undone.")); + + $form->{callback} = 'do.pl?action=edit&type=' . $form->{type} . '&id=' . $form->escape($form->{id}); + $form->redirect; + } + + $form->error($locale->text('Cannot undo delivery order transfer!') . $ret); + + $main::lxdebug->leave_sub(); +} sub invoice { $main::lxdebug->enter_sub(); @@ -1035,7 +1087,8 @@ sub invoice { if (my $order = SL::DB::Manager::Order->find_by(ordnumber => $form->{ordnumber}, $vc_id => $form->{"$vc_id"})) { $order->load; $form->{orddate} = $order->transdate_as_date; - $form->{$_} = $order->$_ for qw(payment_id salesman_id taxzone_id quonumber); + $form->{$_} = $order->$_ for qw(payment_id salesman_id taxzone_id quonumber taxincluded); + $form->{taxincluded_changed_by_user} = 1; } } @@ -1571,6 +1624,7 @@ sub transfer_in { SL::DB::DeliveryOrder->new(id => $form->{id})->load->update_attributes(delivered => 1); + flash_later('info', $locale->text("Transfer successful")); $form->{callback} = 'do.pl?action=edit&type=purchase_delivery_order&id=' . $form->escape($form->{id}); $form->redirect; @@ -1689,6 +1743,7 @@ sub transfer_out { SL::DB::DeliveryOrder->new(id => $form->{id})->load->update_attributes(delivered => 1); + flash_later('info', $locale->text("Transfer successful")); $form->{callback} = 'do.pl?action=edit&type=sales_delivery_order&id=' . $form->escape($form->{id}); $form->redirect;