]> wagnertech.de Git - mfinanz.git/blobdiff - doc/dokumentation.xml
Konflikt zwischen zwei Upgrade-Scripten beheben
[mfinanz.git] / doc / dokumentation.xml
index e170c4aa3738141575e63b8a58075c5b25c5c4e5..759ff0f01683bac91fa5094926439fd2baf9faf0 100644 (file)
@@ -2170,6 +2170,82 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
         <varname>[periodic_invoices]</varname>.</para>
       </sect2>
 
+      <sect2 id="features.periodic-invoices.variables">
+        <title>Spezielle Variablen</title>
+
+        <para>
+          Um die erzeugten Rechnungen individualisieren zu können, werden beim Umwandeln des Auftrags in eine Rechnung einige speziell
+          formatierte Variablen durch für die jeweils aktuelle Abrechnungsperiode gültigen Werte ersetzt. Damit ist es möglich, z.B. den
+          Abrechnungszeitraum explizit auszuweisen. Eine Variable hat dabei die Syntax <literal>&lt;%variablenname%&gt;</literal>.
+        </para>
+
+        <para>
+          Diese Variablen werden in den folgenden Elementen des Auftrags ersetzt:
+        </para>
+
+        <itemizedlist>
+          <listitem><para>Bemerkungen</para></listitem>
+          <listitem><para>Interne Bemerkungen</para></listitem>
+          <listitem><para>Vorgangsbezeichnung</para></listitem>
+          <listitem><para>In den Beschreibungs- und Langtextfeldern aller Positionen</para></listitem>
+        </itemizedlist>
+
+        <para>Die zur Verfügung stehenden Variablen sind die Folgenden:</para>
+
+        <variablelist>
+          <varlistentry>
+            <term><varname>&lt;%current_quarter%&gt;</varname>, <varname>&lt;%previous_quarter%&gt;</varname>, <varname>&lt;%next_quarter%&gt;</varname></term>
+
+            <listitem>
+              <para>
+                Aktuelles, vorheriges und nächstes Quartal als Zahl zwischen <literal>1</literal> und <literal>4</literal>.
+              </para>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term><varname>&lt;%current_month%&gt;</varname>, <varname>&lt;%previous_month%&gt;</varname>, <varname>&lt;%next_month%&gt;</varname></term>
+
+            <listitem>
+              <para>
+                Aktueller, vorheriger und nächster Monat als Zahl zwischen <literal>1</literal> und <literal>12</literal>.
+              </para>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term><varname>&lt;%current_month_long%&gt;</varname>, <varname>&lt;%previous_month_long%&gt;</varname>, <varname>&lt;%next_month_long%&gt;</varname></term>
+
+            <listitem>
+              <para>
+                Aktueller, vorheriger und nächster Monat als Name (<literal>Januar</literal>, <literal>Februar</literal> etc.).
+              </para>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term><varname>&lt;%current_year%&gt;</varname>, <varname>&lt;%previous_year%&gt;</varname>, <varname>&lt;%next_year%&gt;</varname></term>
+
+            <listitem>
+              <para>
+                Aktuelles, vorheriges und nächstes Jahr als vierstellige Jahreszahl (<literal>2013</literal> etc.).
+              </para>
+            </listitem>
+          </varlistentry>
+
+          <varlistentry>
+            <term><varname>&lt;%period_start_date%&gt;</varname>, <varname>&lt;%period_end_date%&gt;</varname></term>
+
+            <listitem>
+              <para>
+                Formatiertes Datum des ersten und letzten Tages im Abrechnungszeitraum (z.B. bei quartalsweiser Abrechnung und im ersten
+                Quartal von 2013 wären dies der <literal>01.01.2013</literal> und <literal>31.03.2013</literal>).
+              </para>
+            </listitem>
+          </varlistentry>
+        </variablelist>
+      </sect2>
+
       <sect2 id="features.periodic-invoices.reports">
         <title>Auflisten</title>
 
@@ -2688,6 +2764,22 @@ ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/</programlisting>
               </listitem>
             </varlistentry>
 
+            <varlistentry>
+              <term><varname>c_vendor_id</varname></term>
+
+              <listitem>
+                <para>Lieferantennummer beim Kunden (nur Kunden)</para>
+              </listitem>
+            </varlistentry>
+
+            <varlistentry>
+              <term><varname>v_customer_id</varname></term>
+
+              <listitem>
+                <para>Kundennummer beim Lieferanten (nur Lieferanten)</para>
+              </listitem>
+            </varlistentry>
+
             <varlistentry>
               <term><varname>cp_email</varname></term>
 
@@ -5476,11 +5568,10 @@ file = /tmp/kivitendo-debug.log</programlisting>
             <term><varname>charset</varname></term>
 
             <listitem>
-              <para>Empfohlen. Gibt den Zeichensatz an, in dem das Script
-              geschrieben wurde, z.B. "<literal>UTF-8</literal>". Aus
-              Kompatibilitätsgründen mit alten Upgrade-Scripten wird bei
-              Abwesenheit des Tags der Zeichensatz
-              "<literal>ISO-8859-15</literal>" angenommen.</para>
+              <para>Empfohlen. Gibt den Zeichensatz an, in dem das Script geschrieben wurde, z.B. "<literal>UTF-8</literal>". Aus
+              Kompatibilitätsgründen mit alten Upgrade-Scripten wird bei Abwesenheit des Tags für SQL-Upgradedateien der Zeichensatz
+              "<literal>ISO-8859-15</literal>" angenommen. Perl-Upgradescripte hingegen müssen immer in UTF-8 encodiert sein und sollten
+              demnach auch ein "<literal>use utf8;</literal>" enthalten.</para>
             </listitem>
           </varlistentry>
 
@@ -5548,6 +5639,48 @@ file = /tmp/kivitendo-debug.log</programlisting>
         </variablelist>
       </sect2>
 
+      <sect2 id="db-upgrade-files.format-perl-files" xreflabel="Format von Perl-Upgradedateien">
+       <title>Format von in Perl geschriebenen Datenbankupgradescripten</title>
+
+       <para>In Perl geschriebene Datenbankscripte werden nicht einfach so ausgeführt sondern müssen sich an gewisse Konventionen
+       halten. Dafür bekommen sie aber auch einige Komfortfunktionen bereitgestellt.</para>
+
+       <para>Ein Upgradescript stellt dabei eine vollständige Objektklasse dar, die vom Elternobjekt
+       "<literal>SL::DBUpgrade2::Base</literal>" erben und eine Funktion namens "<literal>run</literal>" zur Verfügung stellen muss. Das
+       Script wird ausgeführt, indem eine Instanz dieser Klasse erzeugt und darauf die erwähnte "<literal>run</literal>" aufgerufen
+       wird.</para>
+
+       <para>Zu beachten ist, dass sich der Paketname der Datei aus dem Wert für "<literal>@tag</literal>" ableitet. Dabei werden alle
+       Zeichen, die in Paketnamen ungültig wären (gerade Bindestriche), durch Unterstriche ersetzt. Insgesamt sieht der Paketname wie folgt
+       aus: "<literal>SL::DBUpgrade2::tag</literal>".</para>
+
+       <para>Welche Komfortfunktionen zur Verfügung stehen, erfahren Sie in der Perl-Dokumentation zum oben genannten Modul; aufzurufen mit
+       "<command>perldoc SL/DBUpgrade2/Base.pm</command>".</para>
+
+       <para>Ein Mindestgerüst eines gültigen Perl-Upgradescriptes sieht wie folgt aus:</para>
+
+       <programlisting># @tag: beispiel-upgrade-file42
+# @description: Ein schönes Beispielscript
+# @depends: release_3_0_0
+package SL::DBUpgrade2::beispiel_upgrade_file42;
+
+use strict;
+use utf8;
+
+use parent qw(SL::DBUpgrade2::Base);
+
+sub run {
+  my ($self) = @_;
+
+  # hier Aktionen ausführen
+
+  return 1;
+}
+
+1;
+</programlisting>
+      </sect2>
+
       <sect2 id="db-upgrade-files.dbupgrade-tool"
              xreflabel="Hilfsscript dbupgrade2_tool.pl">
         <title>Hilfsscript dbupgrade2_tool.pl</title>
@@ -5866,6 +5999,10 @@ filenames</programlisting>
         <itemizedlist>
           <listitem><para><literal>Test::Deep</literal> (Debian-Paketname: <literal>libtest-deep-perl</literal>; Fedora Core:
           <literal>perl-Test-Deep</literal>; openSUSE: <literal>perl-Test-Deep</literal>)</para></listitem>
+          <listitem><para><literal>Test::Exception</literal> (Debian-Paketname: <literal>libtest-exception-perl</literal>; Fedora Core:
+          <literal>perl-Test-Exception</literal>; openSUSE: <literal>perl-Test-Exception</literal>)</para></listitem>
+          <listitem><para><literal>Test::Output</literal> (Debian-Paketname: <literal>libtest-output-perl</literal>; Fedora Core:
+          <literal>perl-Test-Output</literal>; openSUSE: <literal>perl-Test-Output</literal>)</para></listitem>
           <listitem><para><literal>Test::Harness</literal> 3.0.0 oder höher. Dieses Modul ist ab Perl 5.10.1 Bestandteil der
           Perl-Distribution und kann für frühere Versionen aus dem <ulink url="http://www.cpan.org">CPAN</ulink> bezogen
           werden.</para></listitem>