X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=bin%2Fmozilla%2Fdo.pl;h=576f8aa29b2e2d46ce61d8b11253ad67fbb9e816;hb=4a852cb1ba0225e6e086786d3950fc7a3c068f38;hp=fc38c52ad7fa78e541a1040edee685ab690e4627;hpb=c4ad2c7c1254adbd69148bc7cb07727b7725b852;p=kivitendo-erp.git diff --git a/bin/mozilla/do.pl b/bin/mozilla/do.pl index fc38c52ad..576f8aa29 100644 --- a/bin/mozilla/do.pl +++ b/bin/mozilla/do.pl @@ -241,6 +241,12 @@ 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') { + $undo_transfer = $insertdate > $undo_date; + } for my $bar ($::request->layout->get('actionbar')) { $bar->add( action => @@ -314,6 +320,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" @@ -969,6 +982,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(); @@ -1042,7 +1086,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; } } @@ -1578,6 +1623,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; @@ -1696,6 +1742,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;