use parent qw(SL::Controller::Base);
use SL::Helper::Flash qw(flash_later);
+use SL::HTML::Util;
use SL::Presenter::Tag qw(select_tag hidden_tag div_tag);
use SL::Locale::String qw(t8);
use SL::SessionFile::Random;
__PACKAGE__->run_before('check_auth');
__PACKAGE__->run_before('recalc',
- only => [ qw(save save_as_new save_and_delivery_order save_and_invoice save_and_ap_transaction
+ only => [ qw(save save_as_new save_and_delivery_order save_and_invoice save_and_invoice_for_advance_payment save_and_final_invoice save_and_ap_transaction
print send_email) ]);
__PACKAGE__->run_before('get_unalterable_data',
- only => [ qw(save save_as_new save_and_delivery_order save_and_invoice save_and_ap_transaction
+ only => [ qw(save save_as_new save_and_delivery_order save_and_invoice save_and_invoice_for_advance_payment save_and_final_invoice save_and_ap_transaction
print send_email) ]);
#
$intnotes .= t8('Cc') . ": " . $::form->{cc} . "\n" if $::form->{cc};
$intnotes .= t8('Bcc') . ": " . $::form->{bcc} . "\n" if $::form->{bcc};
$intnotes .= t8('Subject') . ": " . $::form->{subject} . "\n\n";
- $intnotes .= t8('Message') . ": " . $::form->{message};
+ $intnotes .= t8('Message') . ": " . SL::HTML::Util->strip($::form->{message});
$self->order->update_attributes(intnotes => $intnotes);
);
}
+sub action_save_and_supplier_delivery_order {
+ my ($self) = @_;
+
+ $self->save_and_redirect_to(
+ controller => 'controller.pl',
+ action => 'DeliveryOrder/add_from_order',
+ type => 'supplier_delivery_order',
+ );
+}
+
# save the order and redirect to the frontend subroutine for a new
# invoice
sub action_save_and_invoice {
);
}
+sub action_save_and_invoice_for_advance_payment {
+ my ($self) = @_;
+
+ $self->save_and_redirect_to(
+ controller => 'oe.pl',
+ action => 'oe_invoice_from_order',
+ new_invoice_type => 'invoice_for_advance_payment',
+ );
+}
+
+sub action_save_and_final_invoice {
+ my ($self) = @_;
+
+ $self->save_and_redirect_to(
+ controller => 'oe.pl',
+ action => 'oe_invoice_from_order',
+ new_invoice_type => 'final_invoice',
+ );
+}
+
# workflow from sales order to sales quotation
sub action_sales_quotation {
$_[0]->workflow_sales_or_request_for_quotation();
my @req_trans_cost_art = qw(kivi.Order.check_transport_cost_article_presence) x!!$::instance_conf->get_transport_cost_reminder_article_number_id;
my @req_cusordnumber = qw(kivi.Order.check_cusordnumber_presence) x($self->type eq sales_order_type() && $::instance_conf->get_order_warn_no_cusordnumber);
+ my $has_invoice_for_advance_payment;
+ if ($self->order->id && $self->type eq sales_order_type()) {
+ my $lr = $self->order->linked_records(direction => 'to', to => ['Invoice']);
+ $has_invoice_for_advance_payment = any {'SL::DB::Invoice' eq ref $_ && "invoice_for_advance_payment" eq $_->type} @$lr;
+ }
+
+ my $has_final_invoice;
+ if ($self->order->id && $self->type eq sales_order_type()) {
+ my $lr = $self->order->linked_records(direction => 'to', to => ['Invoice']);
+ $has_final_invoice = any {'SL::DB::Invoice' eq ref $_ && "final_invoice" eq $_->type} @$lr;
+ }
+
for my $bar ($::request->layout->get('actionbar')) {
$bar->add(
combobox => [
],
only_if => (any { $self->type eq $_ } (sales_order_type(), purchase_order_type()))
],
+ action => [
+ t8('Save and Supplier Delivery Order'),
+ call => [ 'kivi.Order.save', 'save_and_supplier_delivery_order', $::instance_conf->get_order_warn_duplicate_parts,
+ $::instance_conf->get_order_warn_no_deliverydate,
+ ],
+ checks => [ 'kivi.Order.check_save_active_periodic_invoices',
+ @req_trans_cost_art, @req_cusordnumber,
+ ],
+ only_if => (any { $self->type eq $_ } (purchase_order_type()))
+ ],
action => [
t8('Save and Invoice'),
call => [ 'kivi.Order.save', 'save_and_invoice', $::instance_conf->get_order_warn_duplicate_parts ],
@req_trans_cost_art, @req_cusordnumber,
],
],
+ action => [
+ ($has_invoice_for_advance_payment ? t8('Save and Further Invoice for Advance Payment') : t8('Save and Invoice for Advance Payment')),
+ call => [ 'kivi.Order.save', 'save_and_invoice_for_advance_payment', $::instance_conf->get_order_warn_duplicate_parts ],
+ checks => [ 'kivi.Order.check_save_active_periodic_invoices',
+ @req_trans_cost_art, @req_cusordnumber,
+ ],
+ disabled => $has_final_invoice ? t8('This order has already a final invoice.')
+ : undef,
+ only_if => (any { $self->type eq $_ } (sales_order_type())),
+ ],
+ action => [
+ t8('Save and Final Invoice'),
+ call => [ 'kivi.Order.save', 'save_and_final_invoice', $::instance_conf->get_order_warn_duplicate_parts ],
+ checks => [ 'kivi.Order.check_save_active_periodic_invoices',
+ @req_trans_cost_art, @req_cusordnumber,
+ ],
+ disabled => $has_final_invoice ? t8('This order has already a final invoice.')
+ : undef,
+ only_if => (any { $self->type eq $_ } (sales_order_type())) && $has_invoice_for_advance_payment,
+ ],
action => [
t8('Save and AP Transaction'),
call => [ 'kivi.Order.save', 'save_and_ap_transaction', $::instance_conf->get_order_warn_duplicate_parts ],