]> wagnertech.de Git - kivitendo-erp.git/commitdiff
Verkaufsaufträge: konfigurierbares Intervall für Lieferdatum-Berechnung
authorJan Büren <jan@kivitendo.de>
Thu, 17 Jan 2019 16:12:08 +0000 (17:12 +0100)
committerJan Büren <jan@kivitendo.de>
Thu, 17 Jan 2019 16:12:08 +0000 (17:12 +0100)
SL/Controller/Order.pm
SL/DB/MetaSetup/Default.pm
SL/OE.pm
bin/mozilla/oe.pl
locale/de/all
sql/Pg-upgrade2/defaults_delivery_date_interval.pl [new file with mode: 0644]
templates/webpages/client_config/_posting_configuration.html

index 10c7dd484b73d6dd8bd572d30db3e9c9ccf275ea..dec2ece112d0184883c188ba3a3130c4060b60a1 100644 (file)
@@ -58,9 +58,11 @@ sub action_add {
   my ($self) = @_;
 
   $self->order->transdate(DateTime->now_local());
   my ($self) = @_;
 
   $self->order->transdate(DateTime->now_local());
-  my $extra_days = $self->type eq sales_quotation_type() ? $::instance_conf->get_reqdate_interval : 1;
+  my $extra_days = $self->{type} eq 'sales_quotation' ? $::instance_conf->get_reqdate_interval       :
+                   $self->{type} eq 'sales_order'     ? $::instance_conf->get_delivery_date_interval : 1;
   $self->order->reqdate(DateTime->today_local->next_workday(extra_days => $extra_days)) if !$self->order->reqdate;
 
   $self->order->reqdate(DateTime->today_local->next_workday(extra_days => $extra_days)) if !$self->order->reqdate;
 
+
   $self->pre_render();
   $self->render(
     'order/form',
   $self->pre_render();
   $self->render(
     'order/form',
@@ -210,7 +212,8 @@ sub action_save_as_new {
 
   # Set new reqdate unless changed
   if ($order->reqdate == $saved_order->reqdate) {
 
   # Set new reqdate unless changed
   if ($order->reqdate == $saved_order->reqdate) {
-    my $extra_days = $self->type eq sales_quotation_type() ? $::instance_conf->get_reqdate_interval : 1;
+    my $extra_days = $self->{type} eq 'sales_quotation' ? $::instance_conf->get_reqdate_interval       :
+                     $self->{type} eq 'sales_order'     ? $::instance_conf->get_delivery_date_interval : 1;
     $new_attrs{reqdate} = DateTime->today_local->next_workday(extra_days => $extra_days);
   } else {
     $new_attrs{reqdate} = $order->reqdate;
     $new_attrs{reqdate} = DateTime->today_local->next_workday(extra_days => $extra_days);
   } else {
     $new_attrs{reqdate} = $order->reqdate;
index 95aeee2b050f72bfdb4f9c4ab37286ce71d0b3a2..0b282d5f5a07cdc8b36851c1a24ec24c480c882a 100644 (file)
@@ -46,6 +46,7 @@ __PACKAGE__->meta->columns(
   datev_check_on_purchase_invoice           => { type => 'boolean', default => 'true' },
   datev_check_on_sales_invoice              => { type => 'boolean', default => 'true' },
   datev_export_format                       => { type => 'enum', check_in => [ 'cp1252', 'cp1252-translit', 'utf-8' ], db_type => 'datev_export_format_enum', default => 'cp1252-translit' },
   datev_check_on_purchase_invoice           => { type => 'boolean', default => 'true' },
   datev_check_on_sales_invoice              => { type => 'boolean', default => 'true' },
   datev_export_format                       => { type => 'enum', check_in => [ 'cp1252', 'cp1252-translit', 'utf-8' ], db_type => 'datev_export_format_enum', default => 'cp1252-translit' },
+  delivery_date_interval                    => { type => 'integer', default => '0' },
   disabled_price_sources                    => { type => 'array' },
   doc_delete_printfiles                     => { type => 'boolean', default => 'false' },
   doc_files                                 => { type => 'boolean', default => 'false' },
   disabled_price_sources                    => { type => 'array' },
   doc_delete_printfiles                     => { type => 'boolean', default => 'false' },
   doc_files                                 => { type => 'boolean', default => 'false' },
index 3954a93083fe4950d192da5e6229841c4d1580c4..ef6f597929e1959c5797eeba09d9180a19adf9a1 100644 (file)
--- a/SL/OE.pm
+++ b/SL/OE.pm
@@ -958,7 +958,8 @@ sub _retrieve {
   $form->{useasnew} = 1 if $is_collective_order == 1;
 
   if (!$form->{id}) {
   $form->{useasnew} = 1 if $is_collective_order == 1;
 
   if (!$form->{id}) {
-    my $extra_days     = $form->{type} eq 'sales_quotation' ? $::instance_conf->get_reqdate_interval : 1;
+    my $extra_days = $form->{type} eq 'sales_quotation' ? $::instance_conf->get_reqdate_interval       :
+                     $form->{type} eq 'sales_order'     ? $::instance_conf->get_delivery_date_interval : 1;
     $form->{reqdate}   = DateTime->today_local->next_workday(extra_days => $extra_days)->to_kivitendo;
     $form->{transdate} = DateTime->today_local->to_kivitendo;
   }
     $form->{reqdate}   = DateTime->today_local->next_workday(extra_days => $extra_days)->to_kivitendo;
     $form->{transdate} = DateTime->today_local->to_kivitendo;
   }
index 9bad69ae98d6ffef81df2dfed72ecb4492247c81..884a5b5bc4d0ec0a15eadaf69ffbb15884201358 100644 (file)
@@ -1779,7 +1779,8 @@ sub save_as_new {
   if ( $form->{reqdate} && $form->{id} ) {
     my $saved_order = OE->retrieve_simple(id => $form->{id});
     if ( $saved_order && $saved_order->{reqdate} eq $form->{reqdate} && $saved_order->{transdate} eq $form->{transdate} ) {
   if ( $form->{reqdate} && $form->{id} ) {
     my $saved_order = OE->retrieve_simple(id => $form->{id});
     if ( $saved_order && $saved_order->{reqdate} eq $form->{reqdate} && $saved_order->{transdate} eq $form->{transdate} ) {
-      my $extra_days     = $form->{type} eq 'sales_quotation' ? $::instance_conf->get_reqdate_interval : 1;
+      my $extra_days = $form->{type} eq 'sales_quotation' ? $::instance_conf->get_reqdate_interval       :
+                       $form->{type} eq 'sales_order'     ? $::instance_conf->get_delivery_date_interval : 1;
       $form->{reqdate}   = DateTime->today_local->next_workday(extra_days => $extra_days)->to_kivitendo;
       $form->{transdate} = DateTime->today_local->to_kivitendo;
     }
       $form->{reqdate}   = DateTime->today_local->next_workday(extra_days => $extra_days)->to_kivitendo;
       $form->{transdate} = DateTime->today_local->to_kivitendo;
     }
index d283f7cbf7ebbda4341766d7cd2f0f06b5015103..0c5e091b886737c3c5f6773c197d5646f029db5b 100755 (executable)
@@ -2672,6 +2672,7 @@ $self->{texts} = {
   'Sales Invoice'               => 'Rechnung',
   'Sales Invoices'              => 'Kundenrechnungen',
   'Sales Order'                 => 'Kundenauftrag',
   'Sales Invoice'               => 'Rechnung',
   'Sales Invoices'              => 'Kundenrechnungen',
   'Sales Order'                 => 'Kundenauftrag',
+  'Sales Order delivery date interval' => 'Lieferdatumintervall',
   'Sales Orders'                => 'Aufträge',
   'Sales Orders Advance'        => 'Auftragsvorlauf',
   'Sales Orders deleteable'     => 'Kundenaufträge löschbar',
   'Sales Orders'                => 'Aufträge',
   'Sales Orders Advance'        => 'Auftragsvorlauf',
   'Sales Orders deleteable'     => 'Kundenaufträge löschbar',
@@ -3753,6 +3754,7 @@ $self->{texts} = {
   'Users with access'           => 'Benutzer mit Zugriff',
   'Users with access to this client' => 'Benutzer mit Zugriff auf diesen Mandanten',
   'Users, Clients and User Groups' => 'Benutzer, Mandanten und Benutzergruppen',
   'Users with access'           => 'Benutzer mit Zugriff',
   'Users with access to this client' => 'Benutzer mit Zugriff auf diesen Mandanten',
   'Users, Clients and User Groups' => 'Benutzer, Mandanten und Benutzergruppen',
+  'Usually the delivery date of an order is the next working day. If a value is set here this value will be added to the delivery date of the sales order. The resulting date will be adjusted to the next working day if it ends up on a weekend.' => 'Standardmäßig ist das vorausgewählte Lieferdatum der nächste Arbeitstag. Falls hier ein Wert gesetzt ist, wird dieser zum eigentlichen Lieferdatum hinzuaddiert. Fällt das daraus resultierende Datum auf ein Wochenende, so wird der nächste Werktag genommen.',
   'Usually the sales quotation is valid until the next working day. If a value is set here then the quotation will be valid for at least that many days. The resulting date will be adjusted to the next working day if it ends up on a weekend.' => 'Standardmäßig ist ein Verkaufsangebot bis zum nächsten Werktag gültig. Ist hier ein Wert angegeben, so ist ein Angebot mindestens so viele Tage gültig. Sollte das dabei herauskommende Datum auf ein Wochenende fallen, so wird statt dessen der nachfolgende Arbeitstag genommen.',
   'VAT ID'                      => 'USt-IdNr.',
   'VN'                          => 'Kred.-Nr.',
   'Usually the sales quotation is valid until the next working day. If a value is set here then the quotation will be valid for at least that many days. The resulting date will be adjusted to the next working day if it ends up on a weekend.' => 'Standardmäßig ist ein Verkaufsangebot bis zum nächsten Werktag gültig. Ist hier ein Wert angegeben, so ist ein Angebot mindestens so viele Tage gültig. Sollte das dabei herauskommende Datum auf ein Wochenende fallen, so wird statt dessen der nachfolgende Arbeitstag genommen.',
   'VAT ID'                      => 'USt-IdNr.',
   'VN'                          => 'Kred.-Nr.',
diff --git a/sql/Pg-upgrade2/defaults_delivery_date_interval.pl b/sql/Pg-upgrade2/defaults_delivery_date_interval.pl
new file mode 100644 (file)
index 0000000..db8e0ae
--- /dev/null
@@ -0,0 +1,19 @@
+# @tag: defaults_delivery_date_interval
+# @description: Einstellen des Liefertermins für Aufträge per Intervall (z.B.: +28 Tage)
+# @depends: release_3_5_3
+package SL::DBUpgrade2::defaults_delivery_date_interval;
+
+use utf8;
+
+use parent qw(SL::DBUpgrade2::Base);
+use strict;
+
+sub run {
+  my ($self) = @_;
+
+  # this query will fail if column already exist (new database)
+  $self->db_query(qq|ALTER TABLE defaults ADD COLUMN delivery_date_interval integer DEFAULT 0|);
+  return 1;
+}
+
+1;
index 4f2d31dfc6dda56261b1571c4a6d02cef73b9512..824c9393c843137e3ff2079a6e2a81a17198474f 100644 (file)
    <td>[% L.input_tag('defaults.reqdate_interval', LxERP.format_amount(SELF.defaults.reqdate_interval, 0), style=style) %]</td>
    <td>[% LxERP.t8('Usually the sales quotation is valid until the next working day. If a value is set here then the quotation will be valid for at least that many days. The resulting date will be adjusted to the next working day if it ends up on a weekend.') %]</td>
   </tr>
    <td>[% L.input_tag('defaults.reqdate_interval', LxERP.format_amount(SELF.defaults.reqdate_interval, 0), style=style) %]</td>
    <td>[% LxERP.t8('Usually the sales quotation is valid until the next working day. If a value is set here then the quotation will be valid for at least that many days. The resulting date will be adjusted to the next working day if it ends up on a weekend.') %]</td>
   </tr>
+  <tr>
+   <td align="right">[% LxERP.t8('Sales Order delivery date interval') %]</td>
+   <td>[% L.input_tag('defaults.delivery_date_interval', LxERP.format_amount(SELF.defaults.delivery_date_interval, 0), style=style) %]</td>
+   <td>[% LxERP.t8('Usually the delivery date of an order is the next working day. If a value is set here this value will be added to the delivery date of the sales order. The resulting date will be adjusted to the next working day if it ends up on a weekend.') %]</td>
+  </tr>
  </table>
 </div>
  </table>
 </div>