use SL::Locale::String qw(t8);
use SL::PriceSource::ALL;
use SL::Template;
+use SL::DB::Order::TypeData;
+use SL::DB::DeliveryOrder::TypeData;
+use SL::DB::Reclamation::TypeData;
use SL::Controller::TopQuickSearch;
use SL::DB::Helper::AccountingPeriod qw(get_balance_startdate_method_options);
-use SL::Helper::ShippedQty;
use SL::VATIDNr;
use SL::ZUGFeRD;
__PACKAGE__->run_before('check_auth');
use Rose::Object::MakeMethods::Generic (
- '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 available_shipped_qty_item_identity_fields
+ '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) ],
+ posting_options payment_options accounting_options inventory_options profit_options balance_startdate_method_options yearend_options
+ displayable_name_specs_by_module available_documents_with_no_positions) ],
);
sub action_edit {
undef $defaults->{$_} if !$defaults->{$_};
}
- $defaults->{$_} = $::form->parse_amount(\%::myconfig, $defaults->{$_}) for qw(customer_hourly_rate);
-
$self->defaults->assign_attributes(%{ $defaults });
my %errors_idx;
$existing_currency->name($new_name);
}
}
-
if ($::form->{new_currency} && $new_currency_names{ $::form->{new_currency} }) {
$errors_idx{1} = t8('Currency names must be unique.');
}
my @errors = map { $errors_idx{$_} } sort keys %errors_idx;
+ # check valid mail adresses
+ foreach (qw(email_sender_sales_quotation email_sender_request_quotation email_sender_sales_order
+ email_sender_purchase_order email_sender_sales_delivery_order email_sender_purchase_delivery_order
+ email_sender_invoice email_sender_purchase_invoice email_sender_letter email_sender_dunning
+ global_bcc)) {
+ next unless $defaults->{$_};
+ next if $defaults->{$_} =~ /^[a-z0-9.]+\@[a-z0-9.-]+$/i;
+ push @errors, t8('The email entry for #1 looks invalid', $_);
+ }
# Check templates
$::form->{new_templates} =~ s:/::g;
$::form->{new_master_templates} =~ s:/::g;
return SL::DB::Helper::AccountingPeriod::get_balance_startdate_method_options;
}
+sub init_yearend_options {
+ [ { title => t8("default"), value => "default" },
+ { title => t8("simple"), value => "simple" }, ]
+}
+
sub init_all_price_sources {
my @classes = SL::PriceSource::ALL->all_price_sources;
[ SL::Controller::TopQuickSearch->new->available_modules ];
}
-sub init_available_shipped_qty_item_identity_fields {
- [ SL::Helper::ShippedQty->new->available_item_identity_fields ];
-}
-
sub init_displayable_name_specs_by_module {
+{
'SL::DB::Customer' => {
};
}
+sub init_available_documents_with_no_positions {
+ my @docs = ( @{SL::DB::Order::TypeData::valid_types()},
+ @{SL::DB::DeliveryOrder::TypeData::valid_types()},
+ @{SL::DB::Reclamation::TypeData::valid_types()} );
+
+ my @available_docs = map { {name => $_, description => $::form->get_formname_translation($_)} } @docs;
+
+ return \@available_docs;
+}
+
#
# filters
#
sub edit_form {
my ($self) = @_;
- $::request->layout->use_javascript("${_}.js") for qw(jquery.selectboxes jquery.multiselect2side kivi.File ckeditor/ckeditor ckeditor/adapters/jquery);
+ $::request->layout->use_javascript("${_}.js") for qw(jquery.selectboxes jquery.multiselect2side kivi.File);
$self->setup_edit_form_action_bar;
$self->render('client_config/form', title => t8('Client Configuration'),