Merge branch 'master' of github.com:kivitendo/kivitendo-erp
authorSven Schöling <s.schoeling@linet-services.de>
Fri, 18 Oct 2013 08:46:16 +0000 (10:46 +0200)
committerSven Schöling <s.schoeling@linet-services.de>
Fri, 18 Oct 2013 08:46:16 +0000 (10:46 +0200)
SL/BackgroundJob/CsvImport.pm
SL/Controller/CsvImport.pm
SL/Controller/CsvImport/Base.pm
SL/DB/CustomVariable.pm
SL/Form.pm
js/locale/de.js
locale/de/all
templates/webpages/am/edit_accounts.html
templates/webpages/am/form_footer.html

index ae71123..7df8b9b 100644 (file)
@@ -61,6 +61,7 @@ sub do_import {
 
   $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};
 
index c509e21..c3b9d99 100644 (file)
@@ -272,10 +272,11 @@ sub test_and_import_deferred {
   }
 
   $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) {
index db6dc4d..b3b9368 100644 (file)
@@ -2,7 +2,7 @@ package SL::Controller::CsvImport::Base;
 
 use strict;
 
-use List::MoreUtils qw(pairwise);
+use List::MoreUtils qw(pairwise any);
 
 use SL::Helper::Csv;
 use SL::DB::Currency;
@@ -11,6 +11,7 @@ use SL::DB::Language;
 use SL::DB::PaymentTerm;
 use SL::DB::Vendor;
 use SL::DB::Contact;
+use SL::DB::History;
 
 use parent qw(Rose::Object);
 
@@ -415,6 +416,7 @@ sub save_objects {
     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 {
@@ -457,4 +459,22 @@ sub clean_fields {
   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;
index 60955e4..144acef 100644 (file)
@@ -18,18 +18,29 @@ sub value {
   goto &bool_value      if $type eq 'boolean';
   goto &timestamp_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 {
index e28c353..04ac43c 100644 (file)
@@ -1944,7 +1944,7 @@ sub get_duedate {
               : $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();
 
index c5a0d26..969a162 100644 (file)
@@ -2,6 +2,7 @@ namespace("kivi").setupLocale({
 "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.",
index 73db8ac..ea2c596 100755 (executable)
@@ -716,6 +716,7 @@ $self->{texts} = {
   'Do you really want to delete this warehouse?' => 'Wollen Sie dieses Lager wirklich l&ouml;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 &uuml;bernehmen, damit der H&auml;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&ouml;chten Sie die vorhandenen Mengendaten in ein Lager &uuml;bertragen?',
   'Document'                    => 'Dokument',
   'Document Project Number'     => 'Projektnummer des Belegs',
index d3e4fe7..297b2b8 100644 (file)
@@ -41,7 +41,7 @@ $(function() {
         <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>
@@ -49,7 +49,7 @@ $(function() {
           [% '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>
@@ -275,3 +275,17 @@ $(function() {
 [% 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>
index c5c9e34..18a561f 100644 (file)
@@ -5,7 +5,7 @@
 [% 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 %]