# safety
__PACKAGE__->run_before('check_auth');
+__PACKAGE__->run_before('check_auth_save',
+ except => [ qw(edit show_customer_vendor_details_dialog price_popup load_second_rows) ]);
+
__PACKAGE__->run_before('recalc',
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) ]);
my $doc_filename = $form->generate_attachment_filename();
my $doc;
- my @errors = $self->generate_doc(\$doc, { format => $format,
+ my @errors = $self->generate_doc(\$doc, { media => $media,
+ format => $format,
formname => $formname,
language => $self->order->language,
printer_id => $printer_id,
my $pdf_filename = $form->generate_attachment_filename();
my $pdf;
- my @errors = $self->generate_doc(\$pdf, { format => $format,
+ my @errors = $self->generate_doc(\$pdf, { media => $media,
+ format => $format,
formname => $formname,
language => $self->order->language,
});
);
}
+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 check_auth {
my ($self) = @_;
+ my $right_for = { map { $_ => $_.'_edit' . ' | ' . $_.'_view' } @{$self->valid_types} };
+
+ my $right = $right_for->{ $self->type };
+ $right ||= 'DOES_NOT_EXIST';
+
+ $::auth->assert($right);
+}
+
+sub check_auth_save {
+ my ($self) = @_;
+
my $right_for = { map { $_ => $_.'_edit' } @{$self->valid_types} };
my $right = $right_for->{ $self->type };
$has_final_invoice = any {'SL::DB::Invoice' eq ref $_ && "final_invoice" eq $_->type} @$lr;
}
+ my $right_for = { map { $_ => $_.'_edit' } @{$self->valid_types} };
+ my $right = $right_for->{ $self->type };
+ $right ||= 'DOES_NOT_EXIST';
+
+ if ($::auth->assert($right, 1)) {
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 ],
only_if => $deletion_allowed,
],
+ );
+ }
+ }
+
+ for my $bar ($::request->layout->get('actionbar')) {
+ $bar->add(
combobox => [
action => [
t8('more')
], # end of combobox "more"
);
}
+
}
sub generate_doc {