Revision d85a77b7
Von Bernd Bleßmann vor mehr als 1 Jahr hinzugefügt
- ID d85a77b776643cd92493609e0b39da82bc89a2ae
- Vorgänger 23933116
SL/Controller/ClientConfig.pm | ||
---|---|---|
use SL::Locale::String qw(t8);
|
||
use SL::PriceSource::ALL;
|
||
use SL::Template;
|
||
use SL::Controller::DeliveryOrder;
|
||
use SL::Controller::Order;
|
||
use SL::Controller::Reclamation;
|
||
use SL::Controller::TopQuickSearch;
|
||
use SL::DB::Helper::AccountingPeriod qw(get_balance_startdate_method_options);
|
||
use SL::VATIDNr;
|
||
... | ... | |
'scalar --get_set_init' => [ qw(defaults all_warehouses all_weightunits all_languages all_currencies all_templates all_price_sources h_unit_name available_quick_search_modules
|
||
all_project_statuses all_project_types zugferd_settings
|
||
posting_options payment_options accounting_options inventory_options profit_options balance_startdate_method_options
|
||
displayable_name_specs_by_module) ],
|
||
displayable_name_specs_by_module available_documents_with_no_positions) ],
|
||
);
|
||
|
||
sub action_edit {
|
||
... | ... | |
};
|
||
}
|
||
|
||
sub init_available_documents_with_no_positions {
|
||
return [] if !$::instance_conf->get_feature_experimental_order;
|
||
|
||
my @docs = ( @{SL::Controller::Order ->new->valid_types},
|
||
@{SL::Controller::DeliveryOrder->new->valid_types},
|
||
@{SL::Controller::Reclamation ->new->valid_types} );
|
||
|
||
# normal delivery orders are not yet handeld by new controller code
|
||
@docs = grep { $_ ne 'sales_delivery_order' && $_ ne 'purchase_delivery_order' } @docs;
|
||
|
||
# $::form->get_formname_translation does not distinguish between sales and purchase
|
||
@docs = grep { $_ ne 'sales_reclamation' && $_ ne 'purchase_reclamation' } @docs;
|
||
|
||
my @available_docs = map { {name => $_, description => $::form->get_formname_translation($_)} } @docs;
|
||
|
||
push @available_docs, {name => 'sales_reclamation', description => t8('Sales Reclamation')};
|
||
push @available_docs, {name => 'purchase_reclamation', description => t8('Purchase Reclamation')};
|
||
|
||
return \@available_docs;
|
||
}
|
||
|
||
#
|
||
# filters
|
||
#
|
SL/Controller/DeliveryOrder.pm | ||
---|---|---|
my $errors = [];
|
||
my $db = $self->order->db;
|
||
|
||
if (scalar @{$self->order->items} == 0) {
|
||
if (scalar @{$self->order->items} == 0 && !grep { $self->type eq $_ } @{$::instance_conf->get_allowed_documents_with_no_positions() || []}) {
|
||
return [t8('The action you\'ve chosen has not been executed because the document does not contain any item yet.')];
|
||
}
|
||
|
SL/Controller/Order.pm | ||
---|---|---|
my $errors = [];
|
||
my $db = $self->order->db;
|
||
|
||
if (scalar @{$self->order->items} == 0) {
|
||
if (scalar @{$self->order->items} == 0 && !grep { $self->type eq $_ } @{$::instance_conf->get_allowed_documents_with_no_positions() || []}) {
|
||
return [t8('The action you\'ve chosen has not been executed because the document does not contain any item yet.')];
|
||
}
|
||
|
SL/Controller/Reclamation.pm | ||
---|---|---|
my $errors = [];
|
||
my $db = $self->reclamation->db;
|
||
|
||
if (scalar @{$self->reclamation->items} == 0) {
|
||
if (scalar @{$self->reclamation->items} == 0 && !grep { $self->type eq $_ } @{$::instance_conf->get_allowed_documents_with_no_positions() || []}) {
|
||
return [t8('The action you\'ve chosen has not been executed because the document does not contain any item yet.')];
|
||
}
|
||
|
SL/DB/MetaSetup/Default.pm | ||
---|---|---|
allow_new_purchase_invoice => { type => 'boolean', default => 'true', not_null => 1 },
|
||
allow_sales_invoice_from_sales_order => { type => 'boolean', default => 'true', not_null => 1 },
|
||
allow_sales_invoice_from_sales_quotation => { type => 'boolean', default => 'true', not_null => 1 },
|
||
allowed_documents_with_no_positions => { type => 'array' },
|
||
always_record_links_from_order => { type => 'boolean', default => 'false' },
|
||
ap_add_doc => { type => 'boolean', default => 'false', not_null => 1 },
|
||
ap_changeable => { type => 'integer', default => 2, not_null => 1 },
|
doc/changelog | ||
---|---|---|
- Bei der Bearbeitung von VK-Angebote und VK-Aufträgen können die Emails aus
|
||
den angelegten Ordner im Email-Server automatisch importiert werden (s.a.
|
||
kivitendo.conf)
|
||
- Belege ("neue" Controller, sprich Angebot/Auftrag/Beistelllieferschein/RMA/
|
||
Reklamation) können nicht mehr ohne Positionen gespeichert werden. Ausnahmen
|
||
lassen sich in der Mandantenkonfiguration einstellen.
|
||
|
||
2023-04-05 - Release 3.8.0
|
||
|
locale/de/all | ||
---|---|---|
'Documentation about variables in a new window/tab' => 'Dokumentation zu Variablen in neuem Fenster/Tab',
|
||
'Documents' => 'Dokumente',
|
||
'Documents in the WebDAV repository' => 'Dokumente im WebDAV-Repository',
|
||
'Documents which are allowed to be saved with no positions' => 'Belege, die ohne Positionen gespeichert werden dürfen',
|
||
'Don\'t include a printout of the record with the email' => 'Keinen Belegausdruck mit E-Mail schicken',
|
||
'Don\'t include a printout of the record with the email, only selected files' => 'Keinen Belegausdruck mit E-Mail schicken, sondern nur ausgewählte Dateien',
|
||
'Done' => 'Fertig',
|
locale/en/all | ||
---|---|---|
'Documentation about variables in a new window/tab' => '',
|
||
'Documents' => '',
|
||
'Documents in the WebDAV repository' => '',
|
||
'Documents which are allowed to be saved with no positions' => '',
|
||
'Don\'t include a printout of the record with the email' => '',
|
||
'Don\'t include a printout of the record with the email, only selected files' => '',
|
||
'Done' => '',
|
templates/design40_webpages/client_config/_features.html | ||
---|---|---|
<td>[% L.yes_no_tag("defaults.lock_oe_subversions", SELF.defaults.lock_oe_subversions) %]</td>
|
||
<td class="long-desc">[% LxERP.t8("If enabled RFQs, Quotations and Orders can only be send once via email. By creating another subversion the current record gets a minor subversion and can be send again via email.") %]</td>
|
||
</tr>
|
||
<tr>
|
||
<th>[% 'Documents which are allowed to be saved with no positions' | $T8 %]</th>
|
||
<td colspan="2">
|
||
<div>
|
||
[% L.select_tag("defaults.allowed_documents_with_no_positions[]",
|
||
SELF.available_documents_with_no_positions,
|
||
default=SELF.defaults.allowed_documents_with_no_positions,
|
||
multiple=1,
|
||
with_empty=1,
|
||
value_key="name",
|
||
title_key="description",
|
||
id="defaults_allowed_documents_with_no_positions",
|
||
size=SELF.available_documents_with_no_positions.size+1) %]
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<th class="caption" colspan="3">[% LxERP.t8('Transport and service costs reminder') %]</th>
|
||
</tr>
|
templates/webpages/client_config/_features.html | ||
---|---|---|
<td>[% L.yes_no_tag("defaults.lock_oe_subversions", SELF.defaults.lock_oe_subversions) %]</td>
|
||
<td>[% LxERP.t8("If enabled RFQs, Quotations and Orders can only be send once via email. By creating another subversion the current record gets a minor subversion and can be send again via email.") %]</td>
|
||
</tr>
|
||
<tr>
|
||
<td align="right">[% 'Documents which are allowed to be saved with no positions' | $T8 %]</td>
|
||
<td colspan=2>
|
||
<div class="clearfix">
|
||
[% L.select_tag("defaults.allowed_documents_with_no_positions[]",
|
||
SELF.available_documents_with_no_positions,
|
||
default=SELF.defaults.allowed_documents_with_no_positions,
|
||
multiple=1,
|
||
with_empty=1,
|
||
value_key="name",
|
||
title_key="description",
|
||
id="defaults_allowed_documents_with_no_positions",
|
||
size=SELF.available_documents_with_no_positions.size+1) %]
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
|
||
<tr><td class="listheading" colspan="4">[% LxERP.t8("E-mail") %]</td></tr>
|
||
|
||
<tr>
|
Auch abrufbar als: Unified diff
"Beleg ohne Positionen speichern erlauben" in Mandantenkonfig einstellbar