+ my @cleaned_fields;
+ foreach my $field (grep { $object->can($_) } @fields) {
+ my $value = $object->$field;
+
+ next unless defined($value) && ($value =~ s/$illegal_chars/ /g);
+
+ $object->$field($value);
+ push @cleaned_fields, $field;
+ }
+
+ return @cleaned_fields;
+}
+
+sub save_additions {
+ my ($self, $object) = @_;
+
+ # Can be overridden by derived specialized importer classes to save
+ # additional tables (e.g. record links).
+ # This sub is called after the object is saved successfully in an transaction.
+
+ return;
+}
+
+sub save_additions_always {
+ my ($self, $object) = @_;
+
+ # Can be overridden by derived specialized importer classes to save
+ # additional tables always.
+ # This sub is called before the object is saved. Therefore this
+ # hook will always be executed wether or not the import entry can be saved successfully.
+
+ return;
+}
+
+
+sub _save_history {
+ my ($self, $object) = @_;
+
+ if (any { $self->controller->{type} && $_ eq $self->controller->{type} } qw(parts customers_vendors orders delivery_orders ar_transactions)) {
+ my $snumbers = $self->controller->{type} eq 'parts' ? 'partnumber_' . $object->partnumber
+ : $self->controller->{type} eq 'customers_vendors' ?
+ ($self->table eq 'customer' ? 'customernumber_' . $object->customernumber : 'vendornumber_' . $object->vendornumber)
+ : $self->controller->{type} eq 'orders' ? 'ordnumber_' . $object->ordnumber
+ : $self->controller->{type} eq 'delivery_orders' ? 'donumber_' . $object->donumber
+ : $self->controller->{type} eq 'ar_transactions' ? 'invnumber_' . $object->invnumber
+ : '';
+
+ my $what_done = '';
+ if ($self->controller->{type} eq 'orders') {
+ $what_done = $object->customer_id ? 'sales_order' : 'purchase_order';
+ }
+ if ($self->controller->{type} eq 'delivery_orders') {
+ $what_done = $object->customer_id ? 'sales_delivery_order' : 'purchase_delivery_order';
+ }
+
+ SL::DB::History->new(
+ trans_id => $object->id,
+ snumbers => $snumbers,
+ employee_id => $self->controller->{employee_id},
+ addition => 'SAVED',
+ what_done => $what_done,
+ )->save();
+ }
+}
+
+1;