$c->profile($self->profile);
$c->type($job->data_as_hash->{type});
+ $c->{employee_id} = $job->data_as_hash->{employee_id};
my $test = $job->data_as_hash->{test};
}
$self->{background_job} = SL::BackgroundJob::CsvImport->create_job(
- file => $self->csv_file_name,
- profile => $self->profile,
- type => $self->profile->type,
- test => $params{test},
+ file => $self->csv_file_name,
+ profile => $self->profile,
+ type => $self->profile->type,
+ test => $params{test},
+ employee_id => SL::DB::Manager::Employee->current->id,
)->save;
if ($self->task_server->is_running) {
use strict;
-use List::MoreUtils qw(pairwise);
+use List::MoreUtils qw(pairwise any);
use SL::Helper::Csv;
use SL::DB::Currency;
use SL::DB::PaymentTerm;
use SL::DB::Vendor;
use SL::DB::Contact;
+use SL::DB::History;
use parent qw(Rose::Object);
if ( !$object->save(cascade => !!$self->save_with_cascade()) ) {
push @{ $entry->{errors} }, $::locale->text('Error when saving: #1', $entry->{object}->db->error);
} else {
+ $self->_save_history($object);
$self->controller->num_imported($self->controller->num_imported + 1);
}
} continue {
return @cleaned_fields;
}
+sub _save_history {
+ my ($self, $object) = @_;
+
+ if (any { $_ eq $self->controller->{type} } qw(parts customers_vendors)) {
+ 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)
+ : '';
+
+ SL::DB::History->new(
+ trans_id => $object->id,
+ snumbers => $snumbers,
+ employee_id => $self->controller->{employee_id},
+ addition => 'SAVED',
+ )->save();
+ }
+}
+
1;
goto &bool_value if $type eq 'boolean';
goto ×tamp_value if $type eq 'timestamp';
goto &number_value if $type eq 'number';
+
+ if ( $_[1] && ($type eq 'customer' || $type eq 'vendor' || $type eq 'part') ) {
+ $self->number_value($_[1]);
+ }
+
if ( $type eq 'customer' ) {
- if ( defined($_[1]) && $_[1] ) {
- goto &number_value;
- }
- else {
- require SL::DB::Customer;
-
- my $id = int($self->number_value);
- return $id ? SL::DB::Customer->new(id => $id)->load() : 0;
- }
+ require SL::DB::Customer;
+
+ my $id = int($self->number_value);
+ return $id ? SL::DB::Customer->new(id => $id)->load() : 0;
+ } elsif ( $type eq 'vendor' ) {
+ require SL::DB::Vendor;
+
+ my $id = int($self->number_value);
+ return $id ? SL::DB::Vendor->new(id => $id)->load() : 0;
+ } elsif ( $type eq 'part' ) {
+ require SL::DB::Part;
+
+ my $id = int($self->number_value);
+ return $id ? SL::DB::Part->new(id => $id)->load() : 0;
}
- goto &text_value; # text and select
+
+ goto &text_value; # text, textfield, date and select
}
sub is_valid {
: $self->{vendor_id} ? SL::DB::Vendor ->new(id => $self->{vendor_id}) ->load->payment
: croak("Missing field in \$::form: payment_id, customer_id or vendor_id");
- my $duedate = $terms->calc_date(reference_date => $reference_date)->to_kivitendo;
+ my $duedate = $terms ? $terms->calc_date(reference_date => $reference_date)->to_kivitendo : undef;
$main::lxdebug->leave_sub();
"Add linked record":"Verknüpften Beleg hinzufügen",
"Are you sure?":"Sind Sie sicher?",
"Database Connection Test":"Test der Datenbankverbindung",
+"Do you want to set the account number \"#1\" to \"#2\" and the name \"#3\" to \"#4\"?":"Soll die Kontonummer \"#1\" zu \"#2\" und den Name \"#3\" zu \"#4\" geändert werden?",
"Map":"Karte",
"Part picker":"Artikelauswahl",
"The description is missing.":"Die Beschreibung fehlt.",
'Do you really want to delete this warehouse?' => 'Wollen Sie dieses Lager wirklich löschen?',
'Do you want to <b>limit</b> your search?' => 'Wollen Sie Ihre Suche <b>spezialisieren</b>?',
'Do you want to carry this shipping address over to the new purchase order so that the vendor can deliver the goods directly to your customer?' => 'Wollen Sie diese Lieferadresse in den neuen Lieferantenauftrag übernehmen, damit der Händler die Waren direkt an Ihren Kunden liefern kann?',
+ 'Do you want to set the account number "#1" to "#2" and the name "#3" to "#4"?' => 'Soll die Kontonummer "#1" zu "#2" und den Name "#3" zu "#4" geändert werden?',
'Do you want to store the existing onhand values into a new warehouse?' => 'Möchten Sie die vorhandenen Mengendaten in ein Lager übertragen?',
'Document' => 'Dokument',
'Document Project Number' => 'Projektnummer des Belegs',
<label>
[% 'Account Number' | $T8 %]
</label></td>
- <td><input name="accno" size="20" value="[% HTML.escape(accno) %]"></td>
+ <td><input id="accno" name="accno" size="20" value="[% HTML.escape(accno) %]"></td>
</tr>
<tr>
<td>
[% 'Description' | $T8 %]
</label>
</td>
- <td><input name="description" size="40" value="[% HTML.escape(description) %]"></td>
+ <td><input id="description" name="description" size="40" value="[% HTML.escape(description) %]"></td>
</tr>
<tr>
<td>
[% END %]
</fieldset>
<hr size="3" noshade>
+
+<script type="text/javascript">
+function callback_save() {
+ var prev_desc = "[% description | html %]";
+ var prev_accno = "[% accno | html %]";
+ var cur_desc = $("#description").val();
+ var cur_accno = $("#accno").val();
+
+ if ( prev_desc != cur_desc || prev_accno != cur_accno )
+ return confirm(kivi.t8("Do you want to set the account number \"#1\" to \"#2\" and the name \"#3\" to \"#4\"?", [prev_accno, cur_accno, prev_desc, cur_desc]));
+ else
+ return true;
+}
+</script>
[% L.hidden_tag('callback', callback) %]
<br>
-[%- IF show_save %][% L.submit_tag('action', LxERP.t8('Save')) %][% END %]
+[%- IF show_save %][% L.submit_tag('action', LxERP.t8('Save'), onclick = 'if ( typeof(callback_save) === "function" ) return callback_save(); ') %][% END %]
[%- IF show_delete %][% L.submit_tag('action', LxERP.t8('Delete')) %][% END %]
[%- IF show_save_as_new %][% L.submit_tag('action', LxERP.t8('Save as new')) %][% END %]