Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 02fa01b2

Von Jan Büren vor mehr als 4 Jahren hinzugefügt

  • ID 02fa01b23003eb4429392092cd0282d44a11cea8
  • Vorgänger 6a4ba789
  • Nachfolger 80970e1d

LaTeX-Druckvorlagen f-tex entfernt, doku und installation_check

installation_check -l prüft jetzt auf pdfx und die Version
Entsprechenden Hinweis in der Doku.
f-tex entfernt, die letzten Änderungen wurden von Geoff und Jan
in 2014 gemacht, der ursprüngliche Maintainer scheint seitdem inaktiv zu sein.

Unterschiede anzeigen:

doc/dokumentation.xml
2189 2189
  texlive-collection-latexrecommended texlive-collection-langgerman \
2190 2190
  texlive-collection-langenglish</programlisting></para>
2191 2191

  
2192
      <note>kivitendo erwartet eine aktuelle TeX Live Umgebung, um PDF/A zu erzeugen. Aktuelle Distributionen von 2020 erfüllen diese. Überprüfbar ist dies mit dem Aufruf des installation_check.pl mit Parameter -l: <programlisting>scripts/installations_check.pl -l</programlisting> </note>
2192 2193
      <para>kivitendo bringt drei alternative Vorlagensätze mit:</para>
2193 2194

  
2194 2195
      <itemizedlist>
2195 2196
        <listitem>
2196 2197
          <para>RB</para>
2197 2198
        </listitem>
2198

  
2199 2199
        <listitem>
2200
          <para>f-tex</para>
2200
          <para>marei</para>
2201 2201
        </listitem>
2202

  
2203 2202
        <listitem>
2204 2203
          <para>rev-odt</para>
2205 2204
        </listitem>
2206 2205
      </itemizedlist>
2207 2206

  
2208
      <para>Der ehemalige Druckvorlagensatz "Standard" wurde mit der Version
2209
      3.3 entfernt, da er nicht mehr gepflegt wurde.</para>
2207
      <para>Der ehemalige Druckvorlagensatz "f-tex" wurde mit der Version
2208
      3.6 entfernt, da er nicht mehr gepflegt wird.</para>
2210 2209

  
2211 2210
      <sect2 id="Vorlagenverzeichnis-anlegen"
2212 2211
             xreflabel="Vorlagenverzeichnis anlegen">
......
2230 2229
          <listitem>
2231 2230
            <para><option>Vorlagen auswählen</option>: Wählen Sie hier den
2232 2231
            Vorlagensatz aus, der kopiert werden soll
2233
            (<filename>RB</filename>, <filename>f-tex</filename> oder
2232
            (<filename>RB</filename>, <filename>marei</filename> oder
2234 2233
            <filename>odt-rev</filename>.)</para>
2235 2234
          </listitem>
2236 2235

  
......
2288 2287
        </itemizedlist>
2289 2288
      </sect2>
2290 2289

  
2291
      <sect2 id="f-tex">
2292
        <title>f-tex</title>
2293

  
2294
        <para>Ein Vorlagensatz, der in wenigen Minuten alle Dokumente zur
2295
        Verfügung stellt.</para>
2296

  
2297
        <sect3 id="f-tex-Feature-Übersicht">
2298
          <title>Feature-Übersicht</title>
2299

  
2300
          <itemizedlist>
2301
            <listitem>
2302
              <para>Keine Redundanz. Es wird ein- und dieselbe LaTeX-Vorlage
2303
              für alle briefartigen Dokumente verwendet. Also Angebot,
2304
              Rechnung, Proformarechnung, Lieferschein, aber eben nicht für
2305
              Paketaufkleber etc.</para>
2306
            </listitem>
2307

  
2308
            <listitem>
2309
              <para>Leichte Anpassung an das Firmen-Layout durch Verwendung
2310
              eines Hintergrund-PDFs. Dieses kann leicht mit dem eigenen
2311
              Lieblingsprogramm erstellt werden (Openoffice, Inkscape, Gimp,
2312
              Adobe*)</para>
2313
            </listitem>
2314

  
2315
            <listitem>
2316
              <para>Hintergrund-PDF umschaltbar auf "nur erste Seite"
2317
              (Standard) oder "alle Seiten" (Option
2318
              "<option>bgPdfFirstPageOnly</option>" in Datei
2319
              <filename>letter.lco</filename>)</para>
2320
            </listitem>
2321

  
2322
            <listitem>
2323
              <para>Hintergrund-PDF für Ausdruck auf bereits bedrucktem
2324
              Briefpapier abschaltbar. Es wird dann nur bei per E-Mail
2325
              versendeten Dokumenten eingebunden (Option
2326
              "<option>bgPdfEmailOnly</option>" in Datei
2327
              <filename>letter.lco</filename>).</para>
2328
            </listitem>
2329

  
2330
            <listitem>
2331
              <para>Nutzung der Layout-Funktionen von LaTeX für Seitenumbruch,
2332
              Wiederholung von Kopfzeilen, Zwischensummen etc. (danke an
2333
              Kai-Martin Knaak für die Vorarbeit)</para>
2334
            </listitem>
2335

  
2336
            <listitem>
2337
              <para>Anzeige des Empfängerlandes im Adressfeld nur, wenn es vom
2338
              Land des eigenen Unternehmens abweicht (also die Rechnung das
2339
              Land verlässt).</para>
2340
            </listitem>
2341

  
2342
            <listitem>
2343
              <para>Multisprachfähig leicht um weitere Sprachen zu erweitern,
2344
              alle Übersetzungen in der Datei
2345
              <filename>translatinos.tex</filename>.</para>
2346
            </listitem>
2347

  
2348
            <listitem>
2349
              <para>Auflistung von Bruttopreisen für Endverbraucher.</para>
2350
            </listitem>
2351
          </itemizedlist>
2352
        </sect3>
2353

  
2354
        <sect3 id="f-tex-Installation">
2355
          <title>Die Installation</title>
2356

  
2357
          <itemizedlist>
2358
            <listitem>
2359
              <para>Vorlagenverzeichnis mit Option f-tex anlegen, siehe: <xref
2360
              linkend="Vorlagenverzeichnis-anlegen"/>. Das Vorlagensystem
2361
              funktioniert jetzt schon, hat allerdings noch einen
2362
              Beispiel-Briefkopf.</para>
2363
            </listitem>
2364

  
2365
            <listitem>
2366
              <para>Erstelle eine pdf-Hintergrund Datei und verlinke sie nach
2367
              <filename>./letter_head.pdf</filename>.</para>
2368
            </listitem>
2369

  
2370
            <listitem>
2371
              <para>Editiere den Bereich "<option>settings</option>" in der
2372
              datei <filename>letter.lco</filename>.</para>
2373
            </listitem>
2374
          </itemizedlist>
2375

  
2376
          <para>oder etwas detaillierter:</para>
2377

  
2378
          <para>Es wird eine Datei <filename>sample.lco</filename> erstellt
2379
          und diese nach <filename>letter.lco</filename> verlinkt. Eigentlich
2380
          ist dies die Datei die für die firmenspezifischen Anpassungen
2381
          gedacht ist. Da die Einstiegshürde in LaTeX nicht ganz niedrig ist,
2382
          wird in dieser Datei auf ein Hintergrund-PDF verwiesen. Ich empfehle
2383
          über dieses PDF die persönlichen Layoutanpassungen vorzunehmen und
2384
          <filename>sample.lco</filename> unverändert zu lassen. Die Anpassung
2385
          über eine <filename>*.lco</filename>-Datei, die letztlich auf
2386
          <filename>letter.lco</filename> verlinkt ist ist aber auch
2387
          möglich.</para>
2388

  
2389
          <para>Es wird eine Datei <filename>sample_head.pdf</filename> mit
2390
          ausgeliefert, diese wird nach <filename>letter_head.pdf</filename>
2391
          verlinkt. Damit gibt es schon mal eine funktionsfähige Vorlage.
2392
          Schau Dir nach Abschluss der Installation die Datei
2393
          <filename>sample_head.pdf</filename> an und erstelle ein
2394
          entsprechendes PDF passend zum Briefkopf Deiner Firma, diese dann im
2395
          Template Verzeichniss ablegen und statt
2396
          <filename>sample_head.pdf</filename> nach
2397
          <filename>letter_head.pdf</filename> verlinken.</para>
2398

  
2399
          <para>Letzlich muss <filename>letter_head.pdf</filename> auf das
2400
          passende Hintergrund-PDF verweisen, welches gewünschten Briefkopf
2401
          enthält.</para>
2402

  
2403
          <para>Es wird eine Datei <filename>mydata.tex.example</filename>
2404
          ausgeliefert, die nach <filename>mytdata.tex</filename> verlinkt
2405
          ist. Bei verwendetem Hintergrund-PDF wird nur der Eintrag für das
2406
          Land verwendet. Die Datei muss also nicht angefasst werden. Die
2407
          anderen Werte sind für das Modul 'lp' (Label Print in erp - zur Zeit
2408
          nicht im öffentlichen Zweig).</para>
2409

  
2410
          <para>Alle Anpassungen zum Briefkopf, Fusszeilen, Firmenlogos, etc.
2411
          sollten über die Hintergrund-PDF-Datei oder die
2412
          <filename>*.lco</filename>-Datei erfolgen.</para>
2413
        </sect3>
2414

  
2415
        <sect3 id="f-tex-Funktionsübersicht">
2416
          <title>f-tex Funktionsübersicht</title>
2417

  
2418
          <para>Das Konzept von kivitendo sieht vor, für jedes Dokument
2419
          (Auftragsbestätigung, Lieferschein, Rechnung, etc.) eine
2420
          LaTeX-Vorlage vorzuhalten, dies ist sehr wartungsunfreundlich. Auch
2421
          das Einlesen einer einheitlichen Quelle für den Briefkopf bringt nur
2422
          bedingte Vorteile, da hier leicht die Pflege der Artikel-Tabellen
2423
          aus dem Ruder läuft. Bei dem vorliegenden Ansatz wird für alle
2424
          briefartigen Dokumente mit Artikel-Tabellen eine einheitliche
2425
          LaTeX-Vorlage verwendet, welche über Codeweichen die Besonderheiten
2426
          der jeweiligen Dokumente berücksichtigt:</para>
2427

  
2428
          <itemizedlist>
2429
            <listitem>
2430
              <para>Tabellen mit oder ohne Preis</para>
2431
            </listitem>
2432

  
2433
            <listitem>
2434
              <para>Sprache der Tabellenüberschriften etc.</para>
2435
            </listitem>
2436

  
2437
            <listitem>
2438
              <para>Anpassung der Bezugs-Zeile (z.B. Rechnungsnummer versus
2439
              Angebotsnummer)</para>
2440
            </listitem>
2441

  
2442
            <listitem>
2443
              <para>Darstellung von Brutto oder Netto-Preisen in der
2444
              Auflistung (Endverbraucher versus gewerblicher Kunde)</para>
2445
            </listitem>
2446
          </itemizedlist>
2447

  
2448
          <para>Nachteil:</para>
2449

  
2450
          <para>LaTeX hat ohnehin eine sehr steile Lehrnkurve. Die Datei
2451
          <filename>letter.tex</filename> ist sehr komplex und verstärkt damit
2452
          diesen Effekt noch einmal erheblich. Wer LaTeX-Erfahrung hat, oder
2453
          geübt ist Scriptsparachen nachzuvollziehen kann natürlich auch
2454
          innerhalb der Tabellendarstellung gut persönliche Anpassungen
2455
          vornehmen. Aber man kann sich hier bei Veränderungen sehr schnell
2456
          heftig in den Fuss schiessen.</para>
2457

  
2458
          <para>Wer nicht so tief in die Materie einsteigen will oder leicht
2459
          zu frustrieren ist, sollte sein Hintergrund-PDF auf Basis der
2460
          mitglieferten Datei <filename>sample_head.pdf</filename> erstellen,
2461
          und sich an der Form der dargestellten Tabellen, wie sie
2462
          ausgeliefert werden, erfreuen.</para>
2463

  
2464
          <para>Kleiner Tipp: Nicht zu viel auf einmal wollen, lieber kleine,
2465
          kontinuierliche Schritte gehen.</para>
2466
        </sect3>
2467

  
2468
        <sect3 id="f-tex-Bruttopreise">
2469
          <title>Bruttopreise für Endverbraucher</title>
2470

  
2471
          <para>Der auszuweisende Bruttopreis wird innerhalb der
2472
          LaTeX-Umgebung berechnet. Es gibt zwar ein Feld, um bei Aufträgen
2473
          "alle Preise Brutto" auszuwählen, aber:</para>
2474

  
2475
          <itemizedlist>
2476
            <listitem>
2477
              <para>hierfür müssen die Preise auch in Brutto in der Datenbank
2478
              stehen (ja - das lässt sich über die Preisgruppen und die
2479
              Zuordung einer Default-Preisgruppe handhaben)</para>
2480
            </listitem>
2481

  
2482
            <listitem>
2483
              <para>man darf beim Anlegen des Vorgangs nicht vergessen, dieses
2484
              Häkchen zu setzen. (Das ist in der Praxis, wenn man sowohl
2485
              Endverbraucher als auch Gewerbekunden beliefert, der eigentliche
2486
              Knackpunkt)</para>
2487
            </listitem>
2488
          </itemizedlist>
2489

  
2490
          <para>Es gibt mit f-tex eine weitere Alternative. Die Information ob
2491
          Brutto oder Nettorechnung wird mit den Zahlarten verknüpft.
2492
          Zahlarten bei denen Rechnungen, Angebote, etc, in Brutto ausgegeben
2493
          werden sollen, enden mit "_E" (für Endverbraucher). Falls identische
2494
          Zahlarten für Gewerbekunden und Endverbraucher vorhanden sind, legt
2495
          man diese einfach doppelt an (einmal mit der Namensendung "_E").
2496
          Gewinn:</para>
2497

  
2498
          <itemizedlist>
2499
            <listitem>
2500
              <para>Die Entscheidung, ob Nettopreise ausgewiesen werden, ist
2501
              nicht mehr fix mit einer Preisliste verbunden.</para>
2502
            </listitem>
2503

  
2504
            <listitem>
2505
              <para>Die Default-Zahlart kann im Kundendatensatz hinterlegt
2506
              werden, und man muss nicht mehr daran denken, "alle Preise
2507
              Netto" auszuwählen.</para>
2508
            </listitem>
2509

  
2510
            <listitem>
2511
              <para>Die Entscheidung, ob Netto- oder Bruttopreise ausgewiesen
2512
              werden, kann direkt beim Drucken revidiert werden, ohne dass
2513
              sich der Auftragswert ändert.</para>
2514
            </listitem>
2515
          </itemizedlist>
2516
        </sect3>
2517

  
2518
        <sect3 id="f-tex-lieferadressen">
2519
          <title>Lieferadressen</title>
2520

  
2521
          <para>In Lieferscheinen kommen <varname>shipto*</varname>-Variablen
2522
          im Adressfeld zum Einsatz. Wenn die
2523
          <varname>shipto*</varname>-Variable leer ist, wird die entsprechende
2524
          Adressvariable eingesetzt. Wenn also die Lieferadresse in Straße,
2525
          Hausnummer und Ort abweicht, müssen auch nur diese Felder in der
2526
          Lieferadresse ausgefüllt werden. Für den Firmenname wird der Wert
2527
          der Hauptadresse angezeigt.</para>
2528
        </sect3>
2529
      </sect2>
2530

  
2531
      <sect2 id="Vorlagen-rev-odt">
2290
     <sect2 id="Vorlagen-rev-odt">
2532 2291
        <title>Der Druckvorlagensatz rev-odt</title>
2533 2292

  
2534 2293
        <para>Hierbei handelt es sich um einen Dokumentensatz der mit
doc/html/ch02s06.html
121 121
        sowie ferner auch die Möglichkeit nicht ausschließen, dass es in Unterverzeichnissen auch noch .git Repositories geben kann.
122 122
        Die Empfehlung für Apache 2.4 wäre damit:
123 123
        </p><pre class="programlisting">
124
        &lt;DirectoryMatch "(\.git|config)/"&gt;
124
        &lt;DirectoryMatch "/(\.git|config)/"&gt;
125 125
          Require all denied
126 126
        &lt;/DirectoryMatch&gt;</pre><p>
127 127
       
doc/html/ch02s12.html
14 14
            </p><pre class="programlisting">zypper install texlive-collection-latex texlive-collection-latexextra \
15 15
  texlive-collection-latexrecommended texlive-collection-langgerman \
16 16
  texlive-collection-langenglish</pre><p>
17
         </p><p>kivitendo bringt drei alternative Vorlagensätze mit:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>RB</p></li><li class="listitem"><p>f-tex</p></li><li class="listitem"><p>rev-odt</p></li></ul></div><p>Der ehemalige Druckvorlagensatz "Standard" wurde mit der Version
18
      3.3 entfernt, da er nicht mehr gepflegt wurde.</p><div class="sect2" title="2.12.1. Vorlagenverzeichnis anlegen"><div class="titlepage"><div><div><h3 class="title"><a name="Vorlagenverzeichnis-anlegen"></a>2.12.1. Vorlagenverzeichnis anlegen</h3></div></div></div><p>Es lässt sich ein initialer Vorlagensatz erstellen. Die
17
         </p><div class="note" title="Anmerkung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Anmerkung]" src="system/docbook-xsl/images/note.png"></td><th align="left">Anmerkung</th></tr><tr><td align="left" valign="top">kivitendo erwartet eine aktuelle TeX Live Umgebung, um PDF/A zu erzeugen. Aktuelle Distributionen von 2020 erfüllen diese. Überprüfbar ist dies mit dem Aufruf des installation_check.pl mit Parameter -l: <pre class="programlisting">scripts/installations_check.pl -l</pre></td></tr></table></div><p>kivitendo bringt drei alternative Vorlagensätze mit:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>RB</p></li><li class="listitem"><p>marei</p></li><li class="listitem"><p>rev-odt</p></li></ul></div><p>Der ehemalige Druckvorlagensatz "f-tex" wurde mit der Version
18
      3.6 entfernt, da er nicht mehr gepflegt wird.</p><div class="sect2" title="2.12.1. Vorlagenverzeichnis anlegen"><div class="titlepage"><div><div><h3 class="title"><a name="Vorlagenverzeichnis-anlegen"></a>2.12.1. Vorlagenverzeichnis anlegen</h3></div></div></div><p>Es lässt sich ein initialer Vorlagensatz erstellen. Die
19 19
        LaTeX-System-Abhängigkeiten hierfür kann man prüfen mit:</p><pre class="programlisting">./scripts/installation_check.pl -lv</pre><p>Der Angemeldete Benutzer muss in einer Gruppe sein, die über das
20 20
        Recht "Konfiguration -&gt; Mandantenverwaltung" verfügt. Siehe auch
21 21
        <a class="xref" href="ch02s09.html#Gruppen-anlegen" title="2.9.4. Gruppen anlegen">Abschnitt&nbsp;2.9.4, „Gruppen anlegen“</a>.</p><p>Im Userbereich lässt sich unter: "<span class="guimenu">System</span>
......
24 24
        Druckvorlagen aus Vorlagensatz erstellen" auswählen.</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
25 25
                     <code class="option">Vorlagen auswählen</code>: Wählen Sie hier den
26 26
            Vorlagensatz aus, der kopiert werden soll
27
            (<code class="filename">RB</code>, <code class="filename">f-tex</code> oder
27
            (<code class="filename">RB</code>, <code class="filename">marei</code> oder
28 28
            <code class="filename">odt-rev</code>.)</p></li><li class="listitem"><p>
29 29
                     <code class="option">Neuer Name</code>: Der Verzeichnisname für den
30 30
            neuen Vorlagensatz. Dieser kann im Rahmen der üblichen Bedingungen
......
44 44
            werden, z.B. für Kopf- und Fußzeilen, und Infos wie
45 45
            Bankdaten</p></li><li class="listitem"><p>mehrere vordefinierte Varianten für
46 46
            Logos/Hintergrundbilder</p></li><li class="listitem"><p>Berücksichtigung für Steuerzonen "EU mit USt-ID Nummer" oder
47
            "Außerhalb EU"</p></li></ul></div></div><div class="sect2" title="2.12.3. f-tex"><div class="titlepage"><div><div><h3 class="title"><a name="f-tex"></a>2.12.3. f-tex</h3></div></div></div><p>Ein Vorlagensatz, der in wenigen Minuten alle Dokumente zur
48
        Verfügung stellt.</p><div class="sect3" title="2.12.3.1. Feature-Übersicht"><div class="titlepage"><div><div><h4 class="title"><a name="f-tex-Feature-%C3%9Cbersicht"></a>2.12.3.1. Feature-Übersicht</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Keine Redundanz. Es wird ein- und dieselbe LaTeX-Vorlage
49
              für alle briefartigen Dokumente verwendet. Also Angebot,
50
              Rechnung, Proformarechnung, Lieferschein, aber eben nicht für
51
              Paketaufkleber etc.</p></li><li class="listitem"><p>Leichte Anpassung an das Firmen-Layout durch Verwendung
52
              eines Hintergrund-PDFs. Dieses kann leicht mit dem eigenen
53
              Lieblingsprogramm erstellt werden (Openoffice, Inkscape, Gimp,
54
              Adobe*)</p></li><li class="listitem"><p>Hintergrund-PDF umschaltbar auf "nur erste Seite"
55
              (Standard) oder "alle Seiten" (Option
56
              "<code class="option">bgPdfFirstPageOnly</code>" in Datei
57
              <code class="filename">letter.lco</code>)</p></li><li class="listitem"><p>Hintergrund-PDF für Ausdruck auf bereits bedrucktem
58
              Briefpapier abschaltbar. Es wird dann nur bei per E-Mail
59
              versendeten Dokumenten eingebunden (Option
60
              "<code class="option">bgPdfEmailOnly</code>" in Datei
61
              <code class="filename">letter.lco</code>).</p></li><li class="listitem"><p>Nutzung der Layout-Funktionen von LaTeX für Seitenumbruch,
62
              Wiederholung von Kopfzeilen, Zwischensummen etc. (danke an
63
              Kai-Martin Knaak für die Vorarbeit)</p></li><li class="listitem"><p>Anzeige des Empfängerlandes im Adressfeld nur, wenn es vom
64
              Land des eigenen Unternehmens abweicht (also die Rechnung das
65
              Land verlässt).</p></li><li class="listitem"><p>Multisprachfähig leicht um weitere Sprachen zu erweitern,
66
              alle Übersetzungen in der Datei
67
              <code class="filename">translatinos.tex</code>.</p></li><li class="listitem"><p>Auflistung von Bruttopreisen für Endverbraucher.</p></li></ul></div></div><div class="sect3" title="2.12.3.2. Die Installation"><div class="titlepage"><div><div><h4 class="title"><a name="f-tex-Installation"></a>2.12.3.2. Die Installation</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Vorlagenverzeichnis mit Option f-tex anlegen, siehe: <a class="xref" href="ch02s12.html#Vorlagenverzeichnis-anlegen" title="2.12.1. Vorlagenverzeichnis anlegen">Vorlagenverzeichnis anlegen</a>. Das Vorlagensystem
68
              funktioniert jetzt schon, hat allerdings noch einen
69
              Beispiel-Briefkopf.</p></li><li class="listitem"><p>Erstelle eine pdf-Hintergrund Datei und verlinke sie nach
70
              <code class="filename">./letter_head.pdf</code>.</p></li><li class="listitem"><p>Editiere den Bereich "<code class="option">settings</code>" in der
71
              datei <code class="filename">letter.lco</code>.</p></li></ul></div><p>oder etwas detaillierter:</p><p>Es wird eine Datei <code class="filename">sample.lco</code> erstellt
72
          und diese nach <code class="filename">letter.lco</code> verlinkt. Eigentlich
73
          ist dies die Datei die für die firmenspezifischen Anpassungen
74
          gedacht ist. Da die Einstiegshürde in LaTeX nicht ganz niedrig ist,
75
          wird in dieser Datei auf ein Hintergrund-PDF verwiesen. Ich empfehle
76
          über dieses PDF die persönlichen Layoutanpassungen vorzunehmen und
77
          <code class="filename">sample.lco</code> unverändert zu lassen. Die Anpassung
78
          über eine <code class="filename">*.lco</code>-Datei, die letztlich auf
79
          <code class="filename">letter.lco</code> verlinkt ist ist aber auch
80
          möglich.</p><p>Es wird eine Datei <code class="filename">sample_head.pdf</code> mit
81
          ausgeliefert, diese wird nach <code class="filename">letter_head.pdf</code>
82
          verlinkt. Damit gibt es schon mal eine funktionsfähige Vorlage.
83
          Schau Dir nach Abschluss der Installation die Datei
84
          <code class="filename">sample_head.pdf</code> an und erstelle ein
85
          entsprechendes PDF passend zum Briefkopf Deiner Firma, diese dann im
86
          Template Verzeichniss ablegen und statt
87
          <code class="filename">sample_head.pdf</code> nach
88
          <code class="filename">letter_head.pdf</code> verlinken.</p><p>Letzlich muss <code class="filename">letter_head.pdf</code> auf das
89
          passende Hintergrund-PDF verweisen, welches gewünschten Briefkopf
90
          enthält.</p><p>Es wird eine Datei <code class="filename">mydata.tex.example</code>
91
          ausgeliefert, die nach <code class="filename">mytdata.tex</code> verlinkt
92
          ist. Bei verwendetem Hintergrund-PDF wird nur der Eintrag für das
93
          Land verwendet. Die Datei muss also nicht angefasst werden. Die
94
          anderen Werte sind für das Modul 'lp' (Label Print in erp - zur Zeit
95
          nicht im öffentlichen Zweig).</p><p>Alle Anpassungen zum Briefkopf, Fusszeilen, Firmenlogos, etc.
96
          sollten über die Hintergrund-PDF-Datei oder die
97
          <code class="filename">*.lco</code>-Datei erfolgen.</p></div><div class="sect3" title="2.12.3.3. f-tex Funktionsübersicht"><div class="titlepage"><div><div><h4 class="title"><a name="f-tex-Funktions%C3%BCbersicht"></a>2.12.3.3. f-tex Funktionsübersicht</h4></div></div></div><p>Das Konzept von kivitendo sieht vor, für jedes Dokument
98
          (Auftragsbestätigung, Lieferschein, Rechnung, etc.) eine
99
          LaTeX-Vorlage vorzuhalten, dies ist sehr wartungsunfreundlich. Auch
100
          das Einlesen einer einheitlichen Quelle für den Briefkopf bringt nur
101
          bedingte Vorteile, da hier leicht die Pflege der Artikel-Tabellen
102
          aus dem Ruder läuft. Bei dem vorliegenden Ansatz wird für alle
103
          briefartigen Dokumente mit Artikel-Tabellen eine einheitliche
104
          LaTeX-Vorlage verwendet, welche über Codeweichen die Besonderheiten
105
          der jeweiligen Dokumente berücksichtigt:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Tabellen mit oder ohne Preis</p></li><li class="listitem"><p>Sprache der Tabellenüberschriften etc.</p></li><li class="listitem"><p>Anpassung der Bezugs-Zeile (z.B. Rechnungsnummer versus
106
              Angebotsnummer)</p></li><li class="listitem"><p>Darstellung von Brutto oder Netto-Preisen in der
107
              Auflistung (Endverbraucher versus gewerblicher Kunde)</p></li></ul></div><p>Nachteil:</p><p>LaTeX hat ohnehin eine sehr steile Lehrnkurve. Die Datei
108
          <code class="filename">letter.tex</code> ist sehr komplex und verstärkt damit
109
          diesen Effekt noch einmal erheblich. Wer LaTeX-Erfahrung hat, oder
110
          geübt ist Scriptsparachen nachzuvollziehen kann natürlich auch
111
          innerhalb der Tabellendarstellung gut persönliche Anpassungen
112
          vornehmen. Aber man kann sich hier bei Veränderungen sehr schnell
113
          heftig in den Fuss schiessen.</p><p>Wer nicht so tief in die Materie einsteigen will oder leicht
114
          zu frustrieren ist, sollte sein Hintergrund-PDF auf Basis der
115
          mitglieferten Datei <code class="filename">sample_head.pdf</code> erstellen,
116
          und sich an der Form der dargestellten Tabellen, wie sie
117
          ausgeliefert werden, erfreuen.</p><p>Kleiner Tipp: Nicht zu viel auf einmal wollen, lieber kleine,
118
          kontinuierliche Schritte gehen.</p></div><div class="sect3" title="2.12.3.4. Bruttopreise für Endverbraucher"><div class="titlepage"><div><div><h4 class="title"><a name="f-tex-Bruttopreise"></a>2.12.3.4. Bruttopreise für Endverbraucher</h4></div></div></div><p>Der auszuweisende Bruttopreis wird innerhalb der
119
          LaTeX-Umgebung berechnet. Es gibt zwar ein Feld, um bei Aufträgen
120
          "alle Preise Brutto" auszuwählen, aber:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>hierfür müssen die Preise auch in Brutto in der Datenbank
121
              stehen (ja - das lässt sich über die Preisgruppen und die
122
              Zuordung einer Default-Preisgruppe handhaben)</p></li><li class="listitem"><p>man darf beim Anlegen des Vorgangs nicht vergessen, dieses
123
              Häkchen zu setzen. (Das ist in der Praxis, wenn man sowohl
124
              Endverbraucher als auch Gewerbekunden beliefert, der eigentliche
125
              Knackpunkt)</p></li></ul></div><p>Es gibt mit f-tex eine weitere Alternative. Die Information ob
126
          Brutto oder Nettorechnung wird mit den Zahlarten verknüpft.
127
          Zahlarten bei denen Rechnungen, Angebote, etc, in Brutto ausgegeben
128
          werden sollen, enden mit "_E" (für Endverbraucher). Falls identische
129
          Zahlarten für Gewerbekunden und Endverbraucher vorhanden sind, legt
130
          man diese einfach doppelt an (einmal mit der Namensendung "_E").
131
          Gewinn:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Die Entscheidung, ob Nettopreise ausgewiesen werden, ist
132
              nicht mehr fix mit einer Preisliste verbunden.</p></li><li class="listitem"><p>Die Default-Zahlart kann im Kundendatensatz hinterlegt
133
              werden, und man muss nicht mehr daran denken, "alle Preise
134
              Netto" auszuwählen.</p></li><li class="listitem"><p>Die Entscheidung, ob Netto- oder Bruttopreise ausgewiesen
135
              werden, kann direkt beim Drucken revidiert werden, ohne dass
136
              sich der Auftragswert ändert.</p></li></ul></div></div><div class="sect3" title="2.12.3.5. Lieferadressen"><div class="titlepage"><div><div><h4 class="title"><a name="f-tex-lieferadressen"></a>2.12.3.5. Lieferadressen</h4></div></div></div><p>In Lieferscheinen kommen <code class="varname">shipto*</code>-Variablen
137
          im Adressfeld zum Einsatz. Wenn die
138
          <code class="varname">shipto*</code>-Variable leer ist, wird die entsprechende
139
          Adressvariable eingesetzt. Wenn also die Lieferadresse in Straße,
140
          Hausnummer und Ort abweicht, müssen auch nur diese Felder in der
141
          Lieferadresse ausgefüllt werden. Für den Firmenname wird der Wert
142
          der Hauptadresse angezeigt.</p></div></div><div class="sect2" title="2.12.4. Der Druckvorlagensatz rev-odt"><div class="titlepage"><div><div><h3 class="title"><a name="Vorlagen-rev-odt"></a>2.12.4. Der Druckvorlagensatz rev-odt</h3></div></div></div><p>Hierbei handelt es sich um einen Dokumentensatz der mit
47
            "Außerhalb EU"</p></li></ul></div></div><div class="sect2" title="2.12.3. Der Druckvorlagensatz rev-odt"><div class="titlepage"><div><div><h3 class="title"><a name="Vorlagen-rev-odt"></a>2.12.3. Der Druckvorlagensatz rev-odt</h3></div></div></div><p>Hierbei handelt es sich um einen Dokumentensatz der mit
143 48
        odt-Vorlagen erstellt wurde. Es gibt in dem Verzeichnis eine
144 49
        Readme-Datei, die eventuell aktueller als die Dokumentation hier ist.
145 50
        Die odt-Vorlagen in diesem Verzeichnis "rev-odt" wurden von revamp-it,
......
166 71
        die verrechneten Mahngebühren und Verzugszinsen.</p><p>Zur Zeit gibt es in kivitendo noch keine Möglichkeit,
167 72
        odt-Vorlagen bei Briefen und Pflichtenheften einzusetzen.
168 73
        Entsprechende Vorlagen sind deshalb nicht vorhanden.</p><p>Fehlermeldungen, Anregungen und Wünsche bitte senden an:
169
        empfang@revamp-it.ch</p></div><div class="sect2" title="2.12.5. Allgemeine Hinweise zu LaTeX Vorlagen"><div class="titlepage"><div><div><h3 class="title"><a name="allgemeine-hinweise-zu-latex"></a>2.12.5. Allgemeine Hinweise zu LaTeX Vorlagen</h3></div></div></div><p>In den allermeisten Installationen sollte das Drucken jetzt
74
        empfang@revamp-it.ch</p></div><div class="sect2" title="2.12.4. Allgemeine Hinweise zu LaTeX Vorlagen"><div class="titlepage"><div><div><h3 class="title"><a name="allgemeine-hinweise-zu-latex"></a>2.12.4. Allgemeine Hinweise zu LaTeX Vorlagen</h3></div></div></div><p>In den allermeisten Installationen sollte das Drucken jetzt
170 75
        schon funktionieren. Sollte ein Fehler auftreten, wirft TeX sehr lange
171 76
        Fehlerbeschreibungen, der eigentliche Fehler ist immer die erste
172 77
        Zeile, die mit einem Ausrufezeichen anfängt. Häufig auftretende Fehler
doc/html/ch02s13.html
63 63
      Verzeichnis umbenannt werden.</p><p>Dieses Verzeichnis, wie auch das komplette
64 64
      <code class="literal">users</code>-Verzeichnis, muss vom Webserver beschreibbar
65 65
      sein. Dieses wurde bereits erledigt (siehe <a class="xref" href="ch02s03.html" title="2.3. Manuelle Installation des Programmpaketes">Manuelle Installation des Programmpaketes</a>), kann aber erneut
66
      überprüft werden, wenn die Konvertierung nach PDF fehlschlägt.</p><div class="sect2" title="2.13.1. OpenDocument (odt) Druckvorlagen mit Makros"><div class="titlepage"><div><div><h3 class="title"><a name="d0e2609"></a>2.13.1. OpenDocument (odt) Druckvorlagen mit Makros</h3></div></div></div><p>OpenDocument Vorlagen können Makros enthalten, welche komplexere
66
      überprüft werden, wenn die Konvertierung nach PDF fehlschlägt.</p><div class="sect2" title="2.13.1. OpenDocument (odt) Druckvorlagen mit Makros"><div class="titlepage"><div><div><h3 class="title"><a name="d0e2420"></a>2.13.1. OpenDocument (odt) Druckvorlagen mit Makros</h3></div></div></div><p>OpenDocument Vorlagen können Makros enthalten, welche komplexere
67 67
        Aufgaben erfüllen.</p><p>Der Vorlagensatz "rev-odt" enthält solche Vorlagen mit <span class="bold"><strong>Schweizer Bank-Einzahlungsscheinen (BESR)</strong></span>.
68 68
        Diese Makros haben die Aufgabe, die in den Einzahlungsscheinen
69 69
        benötigte Referenznummer und Kodierzeile zu erzeugen. Hier eine kurze
70 70
        Beschreibung, wie die Makros aufgebaut sind, und was bei ihrer Nutzung
71 71
        zu beachten ist (<span class="bold"><strong>in fett sind nötige einmalige
72
        Anpassungen aufgeführt</strong></span>):</p><div class="sect3" title="2.13.1.1. Bezeichnung der Vorlagen"><div class="titlepage"><div><div><h4 class="title"><a name="d0e2622"></a>2.13.1.1. Bezeichnung der Vorlagen</h4></div></div></div><p>Rechnung: invoice_besr.odt, Auftrag:
73
          sales_order_besr.odt</p></div><div class="sect3" title="2.13.1.2. Vorbereitungen im Adminbereich"><div class="titlepage"><div><div><h4 class="title"><a name="d0e2627"></a>2.13.1.2. Vorbereitungen im Adminbereich</h4></div></div></div><p>Damit beim Erstellen von Rechnungen und Aufträgen neben der
72
        Anpassungen aufgeführt</strong></span>):</p><div class="sect3" title="2.13.1.1. Bezeichnung der Vorlagen"><div class="titlepage"><div><div><h4 class="title"><a name="d0e2433"></a>2.13.1.1. Bezeichnung der Vorlagen</h4></div></div></div><p>Rechnung: invoice_besr.odt, Auftrag:
73
          sales_order_besr.odt</p></div><div class="sect3" title="2.13.1.2. Vorbereitungen im Adminbereich"><div class="titlepage"><div><div><h4 class="title"><a name="d0e2438"></a>2.13.1.2. Vorbereitungen im Adminbereich</h4></div></div></div><p>Damit beim Erstellen von Rechnungen und Aufträgen neben der
74 74
          Standardvorlage ohne Einzahlungsschein weitere Vorlagen (z.B. mit
75 75
          Einzahlungsschein) auswählbar sind, muss für jedes Vorlagen-Suffix
76 76
          ein Drucker eingerichtet werden:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Druckeradministration → Drucker hinzufügen</p></li><li class="listitem"><p>Mandant wählen</p></li><li class="listitem"><p>Druckerbeschreibung → aussagekräftiger Text: wird in der
......
79 79
              Aufträgen oder Rechnungen als odt-Datei keine Bedeutung, darf
80 80
              aber nicht leer sein)</p></li><li class="listitem"><p>Vorlagenkürzel → besr bzw. selbst gewähltes Vorlagensuffix
81 81
              (muss genau der Zeichenfolge entsprechen, die zwischen
82
              "invoice_" bzw. "sales_order_" und ".odt" steht.)</p></li><li class="listitem"><p>speichern</p></li></ul></div></div><div class="sect3" title="2.13.1.3. Benutzereinstellungen"><div class="titlepage"><div><div><h4 class="title"><a name="d0e2651"></a>2.13.1.3. Benutzereinstellungen</h4></div></div></div><p>Wer den Ausdruck mit Einzahlungsschein als Standardeinstellung
82
              "invoice_" bzw. "sales_order_" und ".odt" steht.)</p></li><li class="listitem"><p>speichern</p></li></ul></div></div><div class="sect3" title="2.13.1.3. Benutzereinstellungen"><div class="titlepage"><div><div><h4 class="title"><a name="d0e2462"></a>2.13.1.3. Benutzereinstellungen</h4></div></div></div><p>Wer den Ausdruck mit Einzahlungsschein als Standardeinstellung
83 83
          im Rechnungs- bzw. Auftragsformular angezeigt haben möchte, kann
84 84
          dies persönlich für sich bei den Benutzereinstellungen
85 85
          konfigurieren:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Programm → Benutzereinstellungen → Druckoptionen</p></li><li class="listitem"><p>Standardvorlagenformat → OpenDocument/OASIS</p></li><li class="listitem"><p>Standardausgabekanal → Bildschirm</p></li><li class="listitem"><p>Standarddrucker → gewünschte Druckerbeschreibung auswählen
86
              (z.B. mit Einzahlungsschein Bank xy)</p></li><li class="listitem"><p>Anzahl Kopien → leer</p></li><li class="listitem"><p>speichern</p></li></ul></div></div><div class="sect3" title="2.13.1.4. Aufbau und nötige Anpassungen der Vorlagen"><div class="titlepage"><div><div><h4 class="title"><a name="d0e2675"></a>2.13.1.4. Aufbau und nötige Anpassungen der Vorlagen</h4></div></div></div><p>In der Vorlage sind als Modul "BESR" 4 Makros gespeichert, die
86
              (z.B. mit Einzahlungsschein Bank xy)</p></li><li class="listitem"><p>Anzahl Kopien → leer</p></li><li class="listitem"><p>speichern</p></li></ul></div></div><div class="sect3" title="2.13.1.4. Aufbau und nötige Anpassungen der Vorlagen"><div class="titlepage"><div><div><h4 class="title"><a name="d0e2486"></a>2.13.1.4. Aufbau und nötige Anpassungen der Vorlagen</h4></div></div></div><p>In der Vorlage sind als Modul "BESR" 4 Makros gespeichert, die
87 87
          aus dem von kivitendo erzeugten odt-Dokument die korrekte
88 88
          Referenznummer inklusive Prüfziffer sowie die Kodierzeile in
89 89
          OCRB-Schrift erzeugen und am richtigen Ort ins Dokument
......
112 112
              angepasst werden.</strong></span> Dabei ist darauf zu achten, dass
113 113
              sich die Positionen der Postkonto-Nummern der Bank, sowie der
114 114
              Zeichenfolgen dddfr, DDDREF1, DDDREF2, 609, DDDKODIERZEILE nicht
115
              verschieben.</p></li></ul></div><div class="screenshot"><div class="mediaobject"><img src="images/Einzahlungsschein_Makro.png"></div></div></div><div class="sect3" title="2.13.1.5. Auswahl der Druckvorlage in kivitendo beim Erzeugen einer odt-Rechnung (analog bei Auftrag)"><div class="titlepage"><div><div><h4 class="title"><a name="d0e2739"></a>2.13.1.5. Auswahl der Druckvorlage in kivitendo beim Erzeugen einer
115
              verschieben.</p></li></ul></div><div class="screenshot"><div class="mediaobject"><img src="images/Einzahlungsschein_Makro.png"></div></div></div><div class="sect3" title="2.13.1.5. Auswahl der Druckvorlage in kivitendo beim Erzeugen einer odt-Rechnung (analog bei Auftrag)"><div class="titlepage"><div><div><h4 class="title"><a name="d0e2550"></a>2.13.1.5. Auswahl der Druckvorlage in kivitendo beim Erzeugen einer
116 116
          odt-Rechnung (analog bei Auftrag)</h4></div></div></div><p>Im Fussbereich der Rechnungsmaske muss neben Rechnung,
117 117
          OpenDocument/OASIS und Bildschirm die im Adminbereich erstellte
118 118
          Druckerbeschreibung ausgewählt werden, falls diese nicht bereits bei
119 119
          den Benutzereinstellungen als persönlicher Standard gewählt
120
          wurde.</p></div><div class="sect3" title="2.13.1.6. Makroeinstellungen in LibreOffice anpassen"><div class="titlepage"><div><div><h4 class="title"><a name="d0e2744"></a>2.13.1.6. Makroeinstellungen in LibreOffice anpassen</h4></div></div></div><p>Falls beim Öffnen einer von kivitendo erzeugten odt-Rechnung
120
          wurde.</p></div><div class="sect3" title="2.13.1.6. Makroeinstellungen in LibreOffice anpassen"><div class="titlepage"><div><div><h4 class="title"><a name="d0e2555"></a>2.13.1.6. Makroeinstellungen in LibreOffice anpassen</h4></div></div></div><p>Falls beim Öffnen einer von kivitendo erzeugten odt-Rechnung
121 121
          die Meldung kommt, dass Makros aus Sicherheitsgründen nicht
122 122
          ausgeführt werden, so müssen folgende Einstellungen in LibreOffice
123 123
          angepasst werden:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Extras → Optionen → Sicherheit → Makrosicherheit</p></li><li class="listitem"><p>Sicherheitslevel auf "Mittel" einstellen (Diese
doc/html/ch03s03.html
617 617
                        <code class="varname">invdate</code>
618 618
                     </span></dt><dd><p>Rechnungsdatum</p></dd><dt><span class="term">
619 619
                        <code class="varname">invnumber</code>
620
                     </span></dt><dd><p>Rechnungsnummer</p></dd></dl></div></div></div><div class="sect2" title="3.3.10. Variablen in anderen Vorlagen"><div class="titlepage"><div><div><h3 class="title"><a name="dokumentenvorlagen-und-variablen.andere-vorlagen"></a>3.3.10. Variablen in anderen Vorlagen</h3></div></div></div><div class="sect3" title="3.3.10.1. Einführung"><div class="titlepage"><div><div><h4 class="title"><a name="d0e6022"></a>3.3.10.1. Einführung</h4></div></div></div><p>Die Variablen in anderen Vorlagen sind ähnlich wie in der
620
                     </span></dt><dd><p>Rechnungsnummer</p></dd></dl></div></div></div><div class="sect2" title="3.3.10. Variablen in anderen Vorlagen"><div class="titlepage"><div><div><h3 class="title"><a name="dokumentenvorlagen-und-variablen.andere-vorlagen"></a>3.3.10. Variablen in anderen Vorlagen</h3></div></div></div><div class="sect3" title="3.3.10.1. Einführung"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5833"></a>3.3.10.1. Einführung</h4></div></div></div><p>Die Variablen in anderen Vorlagen sind ähnlich wie in der
621 621
          Rechnung. Allerdings heißen die Variablen, die mit
622 622
          <code class="varname">inv</code> beginnen, jetzt anders. Bei den Angeboten
623 623
          fangen sie mit <code class="varname">quo</code> für "quotation" an:
doc/html/ch03s07.html
1 1
<html><head>
2 2
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
3
   <title>3.7. Artikelklassifizierung</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo 3.5.6: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch03.html" title="Kapitel 3. Features und Funktionen"><link rel="prev" href="ch03s06.html" title="3.6. Schweizer Kontenpläne"><link rel="next" href="ch03s08.html" title="3.8. Dateiverwaltung (Mini-DMS)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">3.7. Artikelklassifizierung</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s06.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 3. Features und Funktionen</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch03s08.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="3.7. Artikelklassifizierung"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="features.part_classification"></a>3.7. Artikelklassifizierung</h2></div></div></div><div class="sect2" title="3.7.1. Übersicht"><div class="titlepage"><div><div><h3 class="title"><a name="d0e6704"></a>3.7.1. Übersicht</h3></div></div></div><p>Die Klassifizierung von Artikeln dient einer weiteren
3
   <title>3.7. Artikelklassifizierung</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo 3.5.6: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch03.html" title="Kapitel 3. Features und Funktionen"><link rel="prev" href="ch03s06.html" title="3.6. Schweizer Kontenpläne"><link rel="next" href="ch03s08.html" title="3.8. Dateiverwaltung (Mini-DMS)"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">3.7. Artikelklassifizierung</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s06.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 3. Features und Funktionen</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch03s08.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="3.7. Artikelklassifizierung"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="features.part_classification"></a>3.7. Artikelklassifizierung</h2></div></div></div><div class="sect2" title="3.7.1. Übersicht"><div class="titlepage"><div><div><h3 class="title"><a name="d0e6515"></a>3.7.1. Übersicht</h3></div></div></div><p>Die Klassifizierung von Artikeln dient einer weiteren
4 4
        Gliederung, um zum Beispiel den Einkauf vom Verkauf zu trennen,
5 5
        gekennzeichnet durch eine Beschreibung (z.B. "Einkauf") und ein Kürzel
6 6
        (z.B. "E"). Für jede Klassifizierung besteht eine Beschreibung und
7 7
        eine Abkürzung die normalerweise aus einem Zeichen besteht, kann aber
8 8
        auf mehrere Zeichen erweitert werden, falls zur Unterscheidung
9
        notwendig. Sinnvoll sind jedoch nur maximal 2 Zeichen.</p></div><div class="sect2" title="3.7.2. Basisklassifizierung"><div class="titlepage"><div><div><h3 class="title"><a name="d0e6709"></a>3.7.2. Basisklassifizierung</h3></div></div></div><p>Als Basisklassifizierungen gibt es</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Einkauf</p></li><li class="listitem"><p>Verkauf</p></li><li class="listitem"><p>Handelsware</p></li><li class="listitem"><p>Produktion</p></li><li class="listitem"><p>- keine - (diese wird bei einer Aktualisierung für alle
9
        notwendig. Sinnvoll sind jedoch nur maximal 2 Zeichen.</p></div><div class="sect2" title="3.7.2. Basisklassifizierung"><div class="titlepage"><div><div><h3 class="title"><a name="d0e6520"></a>3.7.2. Basisklassifizierung</h3></div></div></div><p>Als Basisklassifizierungen gibt es</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Einkauf</p></li><li class="listitem"><p>Verkauf</p></li><li class="listitem"><p>Handelsware</p></li><li class="listitem"><p>Produktion</p></li><li class="listitem"><p>- keine - (diese wird bei einer Aktualisierung für alle
10 10
            existierenden Artikel verwendet und ist gültig für Verkauf und
11 11
            Einkauf)</p></li></ul></div><p>Es können weitere Klassifizierungen angelegt werden. So kann es
12
        z.B. für separat auszuweisende Artikel folgende Klassen geben:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Lieferung (Logistik, Transport) mit Kürzel L</p></li><li class="listitem"><p>Material (Verpackungsmaterial) mit Kürzel M</p></li></ul></div></div><div class="sect2" title="3.7.3. Attribute"><div class="titlepage"><div><div><h3 class="title"><a name="d0e6739"></a>3.7.3. Attribute</h3></div></div></div><p>Bisher haben die Klassifizierungen folgende Attribute, die auch
12
        z.B. für separat auszuweisende Artikel folgende Klassen geben:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Lieferung (Logistik, Transport) mit Kürzel L</p></li><li class="listitem"><p>Material (Verpackungsmaterial) mit Kürzel M</p></li></ul></div></div><div class="sect2" title="3.7.3. Attribute"><div class="titlepage"><div><div><h3 class="title"><a name="d0e6550"></a>3.7.3. Attribute</h3></div></div></div><p>Bisher haben die Klassifizierungen folgende Attribute, die auch
13 13
        alle gleichzeitg gültig sein können</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>gültig für Verkauf - dieser Artikel kann im Verkauf genutzt
14 14
            werden</p></li><li class="listitem"><p>gültig für Einkauf - dieser Artikel kann im Einkauf genutzt
15 15
            werden</p></li><li class="listitem"><p>separat ausweisen - hierzu gibt es zur Dokumentengenerierung
......
19 19
        pro separat auszuweisenden Klassifizierungen die Variable<span class="bold"><strong>&lt; %separate_X_subtotal%&gt;</strong></span>, wobei X das
20 20
        Kürzel der Klassifizierung ist.</p><p>Im obigen Beispiel wäre das für Lieferkosten <span class="bold"><strong>&lt;%separate_L_subtotal%&gt;</strong></span> und für
21 21
        Verpackungsmaterial <span class="bold"><strong>
22
        &lt;%separate_M_subtotal%&gt;</strong></span>.</p></div><div class="sect2" title="3.7.4. Zwei-Zeichen Abkürzung"><div class="titlepage"><div><div><h3 class="title"><a name="d0e6770"></a>3.7.4. Zwei-Zeichen Abkürzung</h3></div></div></div><p>Der Typ des Artikels und die Klassifizierung werden durch zwei
22
        &lt;%separate_M_subtotal%&gt;</strong></span>.</p></div><div class="sect2" title="3.7.4. Zwei-Zeichen Abkürzung"><div class="titlepage"><div><div><h3 class="title"><a name="d0e6581"></a>3.7.4. Zwei-Zeichen Abkürzung</h3></div></div></div><p>Der Typ des Artikels und die Klassifizierung werden durch zwei
23 23
        Buchstaben dargestellt. Der erste Buchstabe ist eine Lokalisierung des
24 24
        Artikel-Typs ('P','A','S'), deutsch 'W', 'E', und 'D' für Ware
25 25
        Erzeugnis oder Dienstleistung und ggf. weiterer Typen.</p><p>Der zweite Buchstabe (und ggf. auch ein dritter, falls nötig)
doc/html/ch03s08.html
1 1
<html><head>
2 2
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
3
   <title>3.8. Dateiverwaltung (Mini-DMS)</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo 3.5.6: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch03.html" title="Kapitel 3. Features und Funktionen"><link rel="prev" href="ch03s07.html" title="3.7. Artikelklassifizierung"><link rel="next" href="ch03s09.html" title="3.9. Webshop-Api"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">3.8. Dateiverwaltung (Mini-DMS)</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s07.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 3. Features und Funktionen</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch03s09.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="3.8. Dateiverwaltung (Mini-DMS)"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="features.file_managment"></a>3.8. Dateiverwaltung (Mini-DMS)</h2></div></div></div><div class="sect2" title="3.8.1. Übersicht"><div class="titlepage"><div><div><h3 class="title"><a name="d0e6782"></a>3.8.1. Übersicht</h3></div></div></div><p>Parallel zum alten WebDAV gibt es ein Datei-Management-System,
3
   <title>3.8. Dateiverwaltung (Mini-DMS)</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo 3.5.6: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch03.html" title="Kapitel 3. Features und Funktionen"><link rel="prev" href="ch03s07.html" title="3.7. Artikelklassifizierung"><link rel="next" href="ch03s09.html" title="3.9. Webshop-Api"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">3.8. Dateiverwaltung (Mini-DMS)</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s07.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 3. Features und Funktionen</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch03s09.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="3.8. Dateiverwaltung (Mini-DMS)"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="features.file_managment"></a>3.8. Dateiverwaltung (Mini-DMS)</h2></div></div></div><div class="sect2" title="3.8.1. Übersicht"><div class="titlepage"><div><div><h3 class="title"><a name="d0e6593"></a>3.8.1. Übersicht</h3></div></div></div><p>Parallel zum alten WebDAV gibt es ein Datei-Management-System,
4 4
        das Dateien verschiedenen Typs verwaltet. Dies können</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>aus ERP-Daten per LaTeX Template erzeugte
5 5
            PDF-Dokumente,</p></li><li class="listitem"><p>zu bestimmten ERP-Daten gehörende Anhangdateien
6 6
            unterschiedlichen Formats,</p></li><li class="listitem"><p>per Scanner eingelesene PDF-Dateien,</p></li><li class="listitem"><p>per E-Mail empfangene Dateianhänge unterschiedlichen
7
            Formats,</p></li><li class="listitem"><p>sowie speziel für Artikel hochgeladene Bilder sein.</p></li></ol></div><div class="screenshot"><div class="mediaobject"><img src="images/DMS-Overview.png"></div></div></div><div class="sect2" title="3.8.2. Struktur"><div class="titlepage"><div><div><h3 class="title"><a name="d0e6809"></a>3.8.2. Struktur</h3></div></div></div><p>Über eine vom Speichermedium unabhängige Zwischenschicht werden
7
            Formats,</p></li><li class="listitem"><p>sowie speziel für Artikel hochgeladene Bilder sein.</p></li></ol></div><div class="screenshot"><div class="mediaobject"><img src="images/DMS-Overview.png"></div></div></div><div class="sect2" title="3.8.2. Struktur"><div class="titlepage"><div><div><h3 class="title"><a name="d0e6620"></a>3.8.2. Struktur</h3></div></div></div><p>Über eine vom Speichermedium unabhängige Zwischenschicht werden
8 8
        die Dateien und ihre Versionen in der Datenbank verwaltet. Darunter
9 9
        können verschiedene Implementierungen (Backends) gleichzeitig
10 10
        existieren:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Dateisystem</p></li><li class="listitem"><p>WebDAV</p></li><li class="listitem"><p>Schnittstelle zu externen
......
23 23
        für "attachment" und "image" nur die Quelle "uploaded". Für "document"
24 24
        gibt es auf jeden Fall die Quelle "created". Die Quellen "scanner" und
25 25
        "email" müssen derzeit in der Datenbank konfiguriert werden (siehe
26
        <a class="xref" href="ch03s08.html#file_management.dbconfig" title="3.8.4.2. Datenbank-Konfigurierung">Datenbank-Konfigurierung</a>).</p></div><div class="sect2" title="3.8.3. Anwendung"><div class="titlepage"><div><div><h3 class="title"><a name="d0e6861"></a>3.8.3. Anwendung</h3></div></div></div><p>Die Daten werden bei den ERP-Objekten als extra Reiter
26
        <a class="xref" href="ch03s08.html#file_management.dbconfig" title="3.8.4.2. Datenbank-Konfigurierung">Datenbank-Konfigurierung</a>).</p></div><div class="sect2" title="3.8.3. Anwendung"><div class="titlepage"><div><div><h3 class="title"><a name="d0e6672"></a>3.8.3. Anwendung</h3></div></div></div><p>Die Daten werden bei den ERP-Objekten als extra Reiter
27 27
        dargestellt. Eine Verkaufsrechnung z.B. hat die Reiter "Dokumente" und
28 28
        "Dateianhänge".</p><div class="screenshot"><div class="mediaobject"><img src="images/DMS-Anhaenge.png"></div></div><p>Bei den Dateianhängen wird immer nur die aktuelle Version einer
29 29
        Datei angezeigt. Wird eine Datei mit gleichem Namen hochgeladen, so
......
39 39
        so sind diese z.B. bei Einkaufsrechnungen sichtbar:</p><div class="screenshot"><div class="mediaobject"><img src="images/DMS-Dokumente-Scanner.png"></div></div><p>Statt des Löschens wird hier die Datei zurück zur Quelle
40 40
        verschoben. Somit kann die Datei anschließend an ein anderes
41 41
        ERP-Objekt angehängt werden.</p><p>Derzeit sind "Titel" und "Beschreibung" noch nicht genutzt. Sie
42
        sind bisher nur bei Bildern relevant.</p></div><div class="sect2" title="3.8.4. Konfigurierung"><div class="titlepage"><div><div><h3 class="title"><a name="d0e6904"></a>3.8.4. Konfigurierung</h3></div></div></div><div class="sect3" title="3.8.4.1. Mandantenkonfiguration"><div class="titlepage"><div><div><h4 class="title"><a name="file_management.clientconfig"></a>3.8.4.1. Mandantenkonfiguration</h4></div></div></div><div class="sect4" title="3.8.4.1.1. Reiter &#34;Features&#34;"><div class="titlepage"><div><div><h5 class="title"><a name="d0e6910"></a>3.8.4.1.1. Reiter "Features"</h5></div></div></div><p>Unter dem Reiter <span class="bold"><strong>Features</strong></span>
42
        sind bisher nur bei Bildern relevant.</p></div><div class="sect2" title="3.8.4. Konfigurierung"><div class="titlepage"><div><div><h3 class="title"><a name="d0e6715"></a>3.8.4. Konfigurierung</h3></div></div></div><div class="sect3" title="3.8.4.1. Mandantenkonfiguration"><div class="titlepage"><div><div><h4 class="title"><a name="file_management.clientconfig"></a>3.8.4.1. Mandantenkonfiguration</h4></div></div></div><div class="sect4" title="3.8.4.1.1. Reiter &#34;Features&#34;"><div class="titlepage"><div><div><h5 class="title"><a name="d0e6721"></a>3.8.4.1.1. Reiter "Features"</h5></div></div></div><p>Unter dem Reiter <span class="bold"><strong>Features</strong></span>
43 43
            im Abschnitt Dateimanagement ist neben dem "alten" WebDAV das
44 44
            Dateimangement generell zu- und abschaltbar, sowie die Zuordnung
45 45
            der Dateitypen zu Backends. Die Löschbarkeit von Dateien, sowie
46 46
            die maximale Uploadgröße sind Backend-unabhängig</p><div class="screenshot"><div class="mediaobject"><img src="images/DMS-ClientConfig.png"></div></div><p>Die einzelnen Backends sind einzeln einschaltbar.
47 47
            Spezifische Backend-Konfigurierungen sind hier noch
48
            ergänzbar.</p></div><div class="sect4" title="3.8.4.1.2. Reiter &#34;Allgemeine Dokumentenanhänge&#34;"><div class="titlepage"><div><div><h5 class="title"><a name="d0e6926"></a>3.8.4.1.2. Reiter "Allgemeine Dokumentenanhänge"</h5></div></div></div><p>Unter dem Reiter <span class="bold"><strong>Allgemeine
48
            ergänzbar.</p></div><div class="sect4" title="3.8.4.1.2. Reiter &#34;Allgemeine Dokumentenanhänge&#34;"><div class="titlepage"><div><div><h5 class="title"><a name="d0e6737"></a>3.8.4.1.2. Reiter "Allgemeine Dokumentenanhänge"</h5></div></div></div><p>Unter dem Reiter <span class="bold"><strong>Allgemeine
49 49
            Dokumentenanhänge</strong></span> kann für alle ERP-Dokumente (
50 50
            Angebote, Aufträge, Lieferscheine, Rechnungen im Verkauf und
51 51
            Einkauf ) allgemeingültige Anhänge hochgeladen werden.</p><div class="screenshot"><div class="mediaobject"><img src="images/DMS-Allgemeine-Dokumentenanhaenge.png"></div></div><p>Diese Anhänge werden beim Generieren von PDF-Dateien an die
doc/html/ch03s09.html
1 1
<html><head>
2 2
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
3
   <title>3.9. Webshop-Api</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo 3.5.6: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch03.html" title="Kapitel 3. Features und Funktionen"><link rel="prev" href="ch03s08.html" title="3.8. Dateiverwaltung (Mini-DMS)"><link rel="next" href="ch03s10.html" title="3.10. ZUGFeRD Rechnungen"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">3.9. Webshop-Api</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s08.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 3. Features und Funktionen</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch03s10.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="3.9. Webshop-Api"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e6960"></a>3.9. Webshop-Api</h2></div></div></div><p>Das Shopmodul bietet die Möglichkeit Onlineshopartikel und
3
   <title>3.9. Webshop-Api</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo 3.5.6: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch03.html" title="Kapitel 3. Features und Funktionen"><link rel="prev" href="ch03s08.html" title="3.8. Dateiverwaltung (Mini-DMS)"><link rel="next" href="ch03s10.html" title="3.10. ZUGFeRD Rechnungen"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">3.9. Webshop-Api</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s08.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 3. Features und Funktionen</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch03s10.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="3.9. Webshop-Api"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="d0e6771"></a>3.9. Webshop-Api</h2></div></div></div><p>Das Shopmodul bietet die Möglichkeit Onlineshopartikel und
4 4
      Onlineshopbestellungen zu verwalten und zu bearbeiten.</p><p>Es ist Multishopfähig, d.h. Artikel können mehreren oder
5 5
      unterschiedlichen Shops zugeordnet werden. Bestellungen können aus
6 6
      mehreren Shops geholt werden.</p><p>Zur Zeit bietet das Modul nur einen Connector zur REST-Api von
7 7
      Shopware. Weitere Connectoren können dazu programmiert und eingerichtet
8
      werden.</p><div class="sect2" title="3.9.1. Rechte für die Webshopapi"><div class="titlepage"><div><div><h3 class="title"><a name="d0e6969"></a>3.9.1. Rechte für die Webshopapi</h3></div></div></div><p>In der Administration können folgende Rechte vergeben
9
        werden</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Webshopartikel anlegen und bearbeiten</p></li><li class="listitem"><p>Shopbestellungen holen und bearbeiten</p></li><li class="listitem"><p>Shop anlegen und bearbeiten</p></li></ul></div></div><div class="sect2" title="3.9.2. Konfiguration"><div class="titlepage"><div><div><h3 class="title"><a name="d0e6984"></a>3.9.2. Konfiguration</h3></div></div></div><p>Unter System-&gt;Webshops können Shops angelegt und konfiguriert
10
        werden</p><div class="mediaobject"><img src="images/Shop_Listing.png"></div></div><div class="sect2" title="3.9.3. Webshopartikel"><div class="titlepage"><div><div><h3 class="title"><a name="d0e6992"></a>3.9.3. Webshopartikel</h3></div></div></div><div class="sect3" title="3.9.3.1. Shopvariablenreiter in Artikelstammdaten"><div class="titlepage"><div><div><h4 class="title"><a name="d0e6995"></a>3.9.3.1. Shopvariablenreiter in Artikelstammdaten</h4></div></div></div><p>Mit dem Recht "Shopartikel anlegen und bearbeiten" und des
8
      werden.</p><div class="sect2" title="3.9.1. Rechte für die Webshopapi"><div class="titlepage"><div><div><h3 class="title"><a name="d0e6780"></a>3.9.1. Rechte für die Webshopapi</h3></div></div></div><p>In der Administration können folgende Rechte vergeben
9
        werden</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Webshopartikel anlegen und bearbeiten</p></li><li class="listitem"><p>Shopbestellungen holen und bearbeiten</p></li><li class="listitem"><p>Shop anlegen und bearbeiten</p></li></ul></div></div><div class="sect2" title="3.9.2. Konfiguration"><div class="titlepage"><div><div><h3 class="title"><a name="d0e6795"></a>3.9.2. Konfiguration</h3></div></div></div><p>Unter System-&gt;Webshops können Shops angelegt und konfiguriert
10
        werden</p><div class="mediaobject"><img src="images/Shop_Listing.png"></div></div><div class="sect2" title="3.9.3. Webshopartikel"><div class="titlepage"><div><div><h3 class="title"><a name="d0e6803"></a>3.9.3. Webshopartikel</h3></div></div></div><div class="sect3" title="3.9.3.1. Shopvariablenreiter in Artikelstammdaten"><div class="titlepage"><div><div><h4 class="title"><a name="d0e6806"></a>3.9.3.1. Shopvariablenreiter in Artikelstammdaten</h4></div></div></div><p>Mit dem Recht "Shopartikel anlegen und bearbeiten" und des
11 11
          Markers <span class="bold"><strong>"Shopartikel" in den Basisdaten
12 12
          </strong></span>zeigt sich der Reiter "Shopvariablen" in den
13 13
          Artikelstammdaten. Hier können jetzt die Artikel mit
......
16 16
          Stelle können auch beliebig viele Bilder dem Shopartikel zugeordnet
17 17
          werden. Artikelbilder gelten für alle Shops.</p><div class="mediaobject"><img src="images/Shop_Artikel.png"></div><p>Die Artikelgruppen werden direkt vom Shopsystem geholt somit
18 18
          ist es möglich einen Artikel auch mehreren Gruppen
19
          zuzuordenen</p></div><div class="sect3" title="3.9.3.2. Shopartikelliste"><div class="titlepage"><div><div><h4 class="title"><a name="d0e7008"></a>3.9.3.2. Shopartikelliste</h4></div></div></div><p>Unter dem Menu Webshop-&gt;Webshop Artikel hat man nochmal
19
          zuzuordenen</p></div><div class="sect3" title="3.9.3.2. Shopartikelliste"><div class="titlepage"><div><div><h4 class="title"><a name="d0e6819"></a>3.9.3.2. Shopartikelliste</h4></div></div></div><p>Unter dem Menu Webshop-&gt;Webshop Artikel hat man nochmal
20 20
          eine Gesamtübersicht. Von hier aus ist es möglich Artikel im Stapel
21 21
          unter verschiedenen Kriterien &lt;alles&gt;&lt;nur Preis&gt;&lt;nur
22 22
          Bestand&gt;&lt;Preis und Bestand&gt; an die jeweiligen Shops
23
          hochzuladen.</p><div class="mediaobject"><img src="images/Shop_Artikel_Listing.png"></div></div></div><div class="sect2" title="3.9.4. Bestellimport"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7016"></a>3.9.4. Bestellimport</h3></div></div></div><p>Unter dem Menupunkt Webshop-&gt;Webshop Import öffnet sich die
23
          hochzuladen.</p><div class="mediaobject"><img src="images/Shop_Artikel_Listing.png"></div></div></div><div class="sect2" title="3.9.4. Bestellimport"><div class="titlepage"><div><div><h3 class="title"><a name="d0e6827"></a>3.9.4. Bestellimport</h3></div></div></div><p>Unter dem Menupunkt Webshop-&gt;Webshop Import öffnet sich die
24 24
        Bestellimportsliste. Hier ist sind Möglichkeiten gegeben Neue
25 25
        Bestellungen vom Shop abzuholen, geholte Bestellungen im Stapel oder
26 26
        einzeln als Auftrag zu transferieren. Die Liste kann nach
......
52 52
            auch der Grund für die Auftragssperre sein.</p></li><li class="listitem"><p>Die Buttons "Auftrag erstellen" und "Kunde mit
53 53
            Rechnungsadresse überschreiben" zeigen sich erst, wenn ein Kunde
54 54
            aus dem Listing ausgewählt ist.</p></li><li class="listitem"><p>Es ist aber möglich die Shopbestellung zu löschen.</p></li><li class="listitem"><p>Ist eine Bestellung schon übernommen, zeigen sich an dieser
55
            Stelle, die dazugehörigen Belegverknüpfungen.</p></li></ul></div></div><div class="sect2" title="3.9.5. Mapping der Daten"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7069"></a>3.9.5. Mapping der Daten</h3></div></div></div><p>Das Mapping der kivitendo Daten mit den Shopdaten geschieht in
55
            Stelle, die dazugehörigen Belegverknüpfungen.</p></li></ul></div></div><div class="sect2" title="3.9.5. Mapping der Daten"><div class="titlepage"><div><div><h3 class="title"><a name="d0e6880"></a>3.9.5. Mapping der Daten</h3></div></div></div><p>Das Mapping der kivitendo Daten mit den Shopdaten geschieht in
56 56
        der Datei SL/ShopConnector/&lt;SHOPCONNECTORNAME&gt;.pm
57 57
        z.B.:SL/ShopConnector/Shopware.pm</p><p>In dieser Datei gibt es einen Bereich wo die Bestellpostionen,
58 58
        die Bestellkopfdaten und die Artikeldaten gemapt werden. In dieser
doc/html/ch03s10.html
35 35
            </p></div><div class="sect2" title="3.10.3. Erstellen von ZUGFeRD Rechnungen in Kivitendo"><div class="titlepage"><div><div><h3 class="title"><a name="features.zugferd.create_zugferd_bills"></a>3.10.3. Erstellen von ZUGFeRD Rechnungen in Kivitendo</h3></div></div></div><p>Für die Erstellung von ZUGFeRD Rechnungen bedarf es in
36 36
			kivitendo zwei Dinge:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>Die Erstellung muss in der Mandantenkonfiguration
37 37
					aktiviert sein</p></li><li class="listitem"><p>Beim mindestens einem Bankkonto muss die Option
38
					„Nutzung von ZUGFeRD“ aktiviert sein</p></li></ol></div><div class="sect3" title="3.10.3.1. Mandantenkonfiguration"><div class="titlepage"><div><div><h4 class="title"><a name="d0e7116"></a>3.10.3.1. Mandantenkonfiguration</h4></div></div></div><p>Die Einstellung für die Erstellung von ZUGFeRD Rechnungen
38
					„Nutzung von ZUGFeRD“ aktiviert sein</p></li></ol></div><div class="sect3" title="3.10.3.1. Mandantenkonfiguration"><div class="titlepage"><div><div><h4 class="title"><a name="d0e6927"></a>3.10.3.1. Mandantenkonfiguration</h4></div></div></div><p>Die Einstellung für die Erstellung von ZUGFeRD Rechnungen
39 39
				erfolgt unter „System“ → „Mandatenkonfiguration“ → „Features“.
40 40
				Im Abschnitt „Einkauf und Verkauf“ finden Sie die Einstellung
41 41
				„Verkaufsrechnungen mit ZUGFeRD-Daten erzeugen“.
42 42
				Hier besteht die Auswahl zwischen:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>ZUGFeRD-Rechnungen erzeugen</p></li><li class="listitem"><p>ZUGFeRD-Rechnungen im Testmodus erzeugen</p></li><li class="listitem"><p>Keine ZUGFeRD Rechnungen erzeugen</p></li></ul></div><p>Rechnungen die als PDF erzeugt werden, werden je nach
43
				Einstellung nun im ZUGFeRD Format ausgegeben.</p></div><div class="sect3" title="3.10.3.2. Konfiguration der Bankkonten"><div class="titlepage"><div><div><h4 class="title"><a name="d0e7133"></a>3.10.3.2. Konfiguration der Bankkonten</h4></div></div></div><p>Unter „System → Bankkonten“ muss bei mindestens einem
43
				Einstellung nun im ZUGFeRD Format ausgegeben.</p></div><div class="sect3" title="3.10.3.2. Konfiguration der Bankkonten"><div class="titlepage"><div><div><h4 class="title"><a name="d0e6944"></a>3.10.3.2. Konfiguration der Bankkonten</h4></div></div></div><p>Unter „System → Bankkonten“ muss bei mindestens einem
44 44
				Bankkonto die Option „Nutzung mit ZUGFeRD“ auf „Ja“ gestellt
45 45
				werden.</p></div></div><div class="sect2" title="3.10.4. Einlesen von ZUGFeRD Rechnungen in Kivitendo"><div class="titlepage"><div><div><h3 class="title"><a name="features.zugferd.read_zugferd_bills"></a>3.10.4. Einlesen von ZUGFeRD Rechnungen in Kivitendo</h3></div></div></div><p>Es lassen sich auch Rechnungen von Kreditoren, die im
46 46
			ZUGFeRD Format erstellt wurden, nach Kivitendo importieren.
doc/html/ch04.html
1 1
<html><head>
2 2
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
3
   <title>Kapitel 4. Entwicklerdokumentation</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo 3.5.6: Installation, Konfiguration, Entwicklung"><link rel="up" href="index.html" title="kivitendo 3.5.6: Installation, Konfiguration, Entwicklung"><link rel="prev" href="ch03s10.html" title="3.10. ZUGFeRD Rechnungen"><link rel="next" href="ch04s02.html" title="4.2. Entwicklung unter FastCGI"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Kapitel 4. Entwicklerdokumentation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s10.html">Zurück</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch04s02.html">Weiter</a></td></tr></table><hr></div><div class="chapter" title="Kapitel 4. Entwicklerdokumentation"><div class="titlepage"><div><div><h2 class="title"><a name="d0e7152"></a>Kapitel 4. Entwicklerdokumentation</h2></div></div></div><div class="sect1" title="4.1. Globale Variablen"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="devel.globals"></a>4.1. Globale Variablen</h2></div></div></div><div class="sect2" title="4.1.1. Wie sehen globale Variablen in Perl aus?"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7158"></a>4.1.1. Wie sehen globale Variablen in Perl aus?</h3></div></div></div><p>Globale Variablen liegen in einem speziellen namespace namens
3
   <title>Kapitel 4. Entwicklerdokumentation</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo 3.5.6: Installation, Konfiguration, Entwicklung"><link rel="up" href="index.html" title="kivitendo 3.5.6: Installation, Konfiguration, Entwicklung"><link rel="prev" href="ch03s10.html" title="3.10. ZUGFeRD Rechnungen"><link rel="next" href="ch04s02.html" title="4.2. Entwicklung unter FastCGI"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Kapitel 4. Entwicklerdokumentation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s10.html">Zurück</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch04s02.html">Weiter</a></td></tr></table><hr></div><div class="chapter" title="Kapitel 4. Entwicklerdokumentation"><div class="titlepage"><div><div><h2 class="title"><a name="d0e6963"></a>Kapitel 4. Entwicklerdokumentation</h2></div></div></div><div class="sect1" title="4.1. Globale Variablen"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="devel.globals"></a>4.1. Globale Variablen</h2></div></div></div><div class="sect2" title="4.1.1. Wie sehen globale Variablen in Perl aus?"><div class="titlepage"><div><div><h3 class="title"><a name="d0e6969"></a>4.1.1. Wie sehen globale Variablen in Perl aus?</h3></div></div></div><p>Globale Variablen liegen in einem speziellen namespace namens
4 4
        "main", der von überall erreichbar ist. Darüber hinaus sind bareword
5 5
        globs global und die meisten speziellen Variablen sind...
6 6
        speziell.</p><p>Daraus ergeben sich folgende Formen:</p><div class="variablelist"><dl><dt><span class="term">
......
25 25
              <code class="varname">$PACKAGE::form</code>.</p></dd><dt><span class="term">
26 26
                     <code class="literal">local $form</code>
27 27
                  </span></dt><dd><p>Alle Änderungen an <code class="varname">$form</code> werden am Ende
28
              des scopes zurückgesetzt</p></dd></dl></div></div><div class="sect2" title="4.1.2. Warum sind globale Variablen ein Problem?"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7259"></a>4.1.2. Warum sind globale Variablen ein Problem?</h3></div></div></div><p>Das erste Problem ist <span class="productname">FCGI</span>™.</p><p>
28
              des scopes zurückgesetzt</p></dd></dl></div></div><div class="sect2" title="4.1.2. Warum sind globale Variablen ein Problem?"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7070"></a>4.1.2. Warum sind globale Variablen ein Problem?</h3></div></div></div><p>Das erste Problem ist <span class="productname">FCGI</span>™.</p><p>
29 29
               <span class="productname">SQL-Ledger</span>™ hat fast alles im globalen
30 30
        namespace abgelegt, und erwartet, dass es da auch wiederzufinden ist.
31 31
        Unter <span class="productname">FCGI</span>™ müssen diese Sachen aber wieder
......
39 39
        dies hat, seit der Einführung, u.a. schon so manche langwierige
40 40
        Bug-Suche verkürzt. Da globale Variablen aber implizit mit Package
41 41
        angegeben werden, werden die nicht geprüft, und somit kann sich
42
        schnell ein Tippfehler einschleichen.</p></div><div class="sect2" title="4.1.3. Kanonische globale Variablen"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7292"></a>4.1.3. Kanonische globale Variablen</h3></div></div></div><p>Um dieses Problem im Griff zu halten gibt es einige wenige
42
        schnell ein Tippfehler einschleichen.</p></div><div class="sect2" title="4.1.3. Kanonische globale Variablen"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7103"></a>4.1.3. Kanonische globale Variablen</h3></div></div></div><p>Um dieses Problem im Griff zu halten gibt es einige wenige
43 43
        globale Variablen, die kanonisch sind, d.h. sie haben bestimmte
44 44
        vorgegebenen Eigenschaften, und alles andere sollte anderweitig
45 45
        umhergereicht werden.</p><p>Diese Variablen sind im Moment die folgenden neun:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
......
62 62
                     <code class="varname">$::request</code>
63 63
                  </p></li></ul></div><p>Damit diese nicht erneut als Müllhalde missbraucht werden, im
64 64
        Folgenden eine kurze Erläuterung der bestimmten vorgegebenen
65
        Eigenschaften (Konventionen):</p><div class="sect3" title="4.1.3.1. $::form"><div class="titlepage"><div><div><h4 class="title"><a name="d0e7356"></a>4.1.3.1. $::form</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Ist ein Objekt der Klasse
65
        Eigenschaften (Konventionen):</p><div class="sect3" title="4.1.3.1. $::form"><div class="titlepage"><div><div><h4 class="title"><a name="d0e7167"></a>4.1.3.1. $::form</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Ist ein Objekt der Klasse
66 66
              "<code class="classname">Form</code>"</p></li><li class="listitem"><p>Wird nach jedem Request gelöscht</p></li><li class="listitem"><p>Muss auch in Tests und Konsolenscripts vorhanden
67 67
              sein.</p></li><li class="listitem"><p>Enthält am Anfang eines Requests die Requestparameter vom
68 68
              User</p></li><li class="listitem"><p>Kann zwar intern über Requestgrenzen ein Datenbankhandle
......
110 110
  push @{ $form-&gt;{TEMPLATE_ARRAYS}{number} },          $form-&gt;{"partnumber_$i"};
111 111
  push @{ $form-&gt;{TEMPLATE_ARRAYS}{description} },     $form-&gt;{"description_$i"};
112 112
  # ...
113
}</pre></div><div class="sect3" title="4.1.3.2. %::myconfig"><div class="titlepage"><div><div><h4 class="title"><a name="d0e7440"></a>4.1.3.2. %::myconfig</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Das einzige Hash unter den globalen Variablen</p></li><li class="listitem"><p>Wird spätestens benötigt wenn auf die Datenbank
113
}</pre></div><div class="sect3" title="4.1.3.2. %::myconfig"><div class="titlepage"><div><div><h4 class="title"><a name="d0e7251"></a>4.1.3.2. %::myconfig</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Das einzige Hash unter den globalen Variablen</p></li><li class="listitem"><p>Wird spätestens benötigt wenn auf die Datenbank
114 114
              zugegriffen wird</p></li><li class="listitem"><p>Wird bei jedem Request neu erstellt.</p></li><li class="listitem"><p>Enthält die Userdaten des aktuellen Logins</p></li><li class="listitem"><p>Sollte nicht ohne Filterung irgendwo gedumpt werden oder
115 115
              extern serialisiert werden, weil da auch der Datenbankzugriff
116 116
              für diesen user drinsteht.</p></li><li class="listitem"><p>Enthält unter anderem Datumsformat dateformat und
......
122 122
          überwiegend die Daten, die sich unter <span class="guimenu">Programm</span>
123 123
          -&gt; <span class="guimenuitem">Einstellungen</span> befinden, bzw. die
124 124
          Informationen über den Benutzer die über die
125
          Administrator-Schnittstelle eingegeben wurden.</p></div><div class="sect3" title="4.1.3.3. $::locale"><div class="titlepage"><div><div><h4 class="title"><a name="d0e7479"></a>4.1.3.3. $::locale</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse "Locale"</p></li><li class="listitem"><p>Wird pro Request erstellt</p></li><li class="listitem"><p>Muss auch für Tests und Scripte immer verfügbar
125
          Administrator-Schnittstelle eingegeben wurden.</p></div><div class="sect3" title="4.1.3.3. $::locale"><div class="titlepage"><div><div><h4 class="title"><a name="d0e7290"></a>4.1.3.3. $::locale</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse "Locale"</p></li><li class="listitem"><p>Wird pro Request erstellt</p></li><li class="listitem"><p>Muss auch für Tests und Scripte immer verfügbar
126 126
              sein.</p></li><li class="listitem"><p>Cached intern über Requestgrenzen hinweg benutzte
127 127
              Locales</p></li></ul></div><p>Lokalisierung für den aktuellen User. Alle Übersetzungen,
128
          Zahlen- und Datumsformatierungen laufen über dieses Objekt.</p></div><div class="sect3" title="4.1.3.4. $::lxdebug"><div class="titlepage"><div><div><h4 class="title"><a name="d0e7497"></a>4.1.3.4. $::lxdebug</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse "LXDebug"</p></li><li class="listitem"><p>Wird global gecached</p></li><li class="listitem"><p>Muss immer verfügbar sein, in nahezu allen
128
          Zahlen- und Datumsformatierungen laufen über dieses Objekt.</p></div><div class="sect3" title="4.1.3.4. $::lxdebug"><div class="titlepage"><div><div><h4 class="title"><a name="d0e7308"></a>4.1.3.4. $::lxdebug</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse "LXDebug"</p></li><li class="listitem"><p>Wird global gecached</p></li><li class="listitem"><p>Muss immer verfügbar sein, in nahezu allen
129 129
              Funktionen</p></li></ul></div><p>
130 130
                  <code class="varname">$::lxdebug</code> stellt Debuggingfunktionen
131 131
          bereit, wie "<code class="function">enter_sub</code>" und
......
135 135
          "<code class="function">message</code>" und "<code class="function">dump</code>" mit
136 136
          denen man flott Informationen ins Log (tmp/kivitendo-debug.log)
137 137
          packen kann.</p><p>Beispielsweise so:</p><pre class="programlisting">$main::lxdebug-&gt;message(0, 'Meine Konfig:' . Dumper (%::myconfig));
138
$main::lxdebug-&gt;message(0, 'Wer bin ich? Kunde oder Lieferant:' . $form-&gt;{vc});</pre></div><div class="sect3" title="4.1.3.5. $::auth"><div class="titlepage"><div><div><h4 class="title"><a name="d0e7534"></a>4.1.3.5. $::auth</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse "SL::Auth"</p></li><li class="listitem"><p>Wird global gecached</p></li><li class="listitem"><p>Hat eine permanente DB Verbindung zur Authdatenbank</p></li><li class="listitem"><p>Wird nach jedem Request resettet.</p></li></ul></div><p>
138
$main::lxdebug-&gt;message(0, 'Wer bin ich? Kunde oder Lieferant:' . $form-&gt;{vc});</pre></div><div class="sect3" title="4.1.3.5. $::auth"><div class="titlepage"><div><div><h4 class="title"><a name="d0e7345"></a>4.1.3.5. $::auth</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse "SL::Auth"</p></li><li class="listitem"><p>Wird global gecached</p></li><li class="listitem"><p>Hat eine permanente DB Verbindung zur Authdatenbank</p></li><li class="listitem"><p>Wird nach jedem Request resettet.</p></li></ul></div><p>
139 139
                  <code class="varname">$::auth</code> stellt Funktionen bereit um die
140 140
          Rechte des aktuellen Users abzufragen. Obwohl diese Informationen
141 141
          vom aktuellen User abhängen wird das Objekt aus
......
144 144
          Dessen Einstellungen können über
145 145
          <code class="literal">$::auth-&gt;client</code> abgefragt werden; Rückgabewert
146 146
          ist ein Hash mit den Werten aus der Tabelle
147
          <code class="literal">auth.clients</code>.</p></div><div class="sect3" title="4.1.3.6. $::lx_office_conf"><div class="titlepage"><div><div><h4 class="title"><a name="d0e7563"></a>4.1.3.6. $::lx_office_conf</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse
147
          <code class="literal">auth.clients</code>.</p></div><div class="sect3" title="4.1.3.6. $::lx_office_conf"><div class="titlepage"><div><div><h4 class="title"><a name="d0e7374"></a>4.1.3.6. $::lx_office_conf</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse
148 148
              "<code class="classname">SL::LxOfficeConf</code>"</p></li><li class="listitem"><p>Global gecached</p></li><li class="listitem"><p>Repräsentation der
149 149
              <code class="filename">config/kivitendo.conf[.default]</code>-Dateien</p></li></ul></div><p>Globale Konfiguration. Configdateien werden zum Start gelesen
150 150
          und danach nicht mehr angefasst. Es ist derzeit nicht geplant, dass
......
154 154
file_name = /tmp/kivitendo-debug.log</pre><p>ist der Key <code class="varname">file</code> im Programm als
155 155
          <code class="varname">$::lx_office_conf-&gt;{debug}{file}</code>
156 156
          erreichbar.</p><div class="warning" title="Warnung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Warnung]" src="system/docbook-xsl/images/warning.png"></td><th align="left">Warnung</th></tr><tr><td align="left" valign="top"><p>Zugriff auf die Konfiguration erfolgt im Moment über
157
            Hashkeys, sind also nicht gegen Tippfehler abgesichert.</p></td></tr></table></div></div><div class="sect3" title="4.1.3.7. $::instance_conf"><div class="titlepage"><div><div><h4 class="title"><a name="d0e7599"></a>4.1.3.7. $::instance_conf</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse
157
            Hashkeys, sind also nicht gegen Tippfehler abgesichert.</p></td></tr></table></div></div><div class="sect3" title="4.1.3.7. $::instance_conf"><div class="titlepage"><div><div><h4 class="title"><a name="d0e7410"></a>4.1.3.7. $::instance_conf</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse
158 158
              "<code class="classname">SL::InstanceConfiguration</code>"</p></li><li class="listitem"><p>wird pro Request neu erstellt</p></li></ul></div><p>Funktioniert wie <code class="varname">$::lx_office_conf</code>,
159 159
          speichert aber Daten die von der Instanz abhängig sind. Eine Instanz
160 160
          ist hier eine Mandantendatenbank. Beispielsweise überprüft
161 161
          </p><pre class="programlisting">$::instance_conf-&gt;get_inventory_system eq 'perpetual'</pre><p>
162
          ob die berüchtigte Bestandsmethode zur Anwendung kommt.</p></div><div class="sect3" title="4.1.3.8. $::dispatcher"><div class="titlepage"><div><div><h4 class="title"><a name="d0e7620"></a>4.1.3.8. $::dispatcher</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse
162
          ob die berüchtigte Bestandsmethode zur Anwendung kommt.</p></div><div class="sect3" title="4.1.3.8. $::dispatcher"><div class="titlepage"><div><div><h4 class="title"><a name="d0e7431"></a>4.1.3.8. $::dispatcher</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse
163 163
              "<code class="varname">SL::Dispatcher</code>"</p></li><li class="listitem"><p>wird pro Serverprozess erstellt.</p></li><li class="listitem"><p>enthält Informationen über die technische Verbindung zum
164 164
              Server</p></li></ul></div><p>Der dritte Punkt ist auch der einzige Grund warum das Objekt
165 165
          global gespeichert wird. Wird vermutlich irgendwann in einem anderen
166
          Objekt untergebracht.</p></div><div class="sect3" title="4.1.3.9. $::request"><div class="titlepage"><div><div><h4 class="title"><a name="d0e7638"></a>4.1.3.9. $::request</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Hashref (evtl später Objekt)</p></li><li class="listitem"><p>Wird pro Request neu initialisiert.</p></li><li class="listitem"><p>Keine Unterstruktur garantiert.</p></li></ul></div><p>
166
          Objekt untergebracht.</p></div><div class="sect3" title="4.1.3.9. $::request"><div class="titlepage"><div><div><h4 class="title"><a name="d0e7449"></a>4.1.3.9. $::request</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Hashref (evtl später Objekt)</p></li><li class="listitem"><p>Wird pro Request neu initialisiert.</p></li><li class="listitem"><p>Keine Unterstruktur garantiert.</p></li></ul></div><p>
167 167
                  <code class="varname">$::request</code> ist ein generischer Platz um
168 168
          Daten "für den aktuellen Request" abzulegen. Sollte nicht für action
169 169
          at a distance benutzt werden, sondern um lokales memoizing zu
......
176 176
              <code class="varname">$::request</code>
177 177
                     </p></li><li class="listitem"><p>Muss ich von anderen Teilen des Programms lesend drauf
178 178
              zugreifen? Dann <code class="varname">$::request</code>, aber Zugriff über
179
              Wrappermethode</p></li></ul></div></div></div><div class="sect2" title="4.1.4. Ehemalige globale Variablen"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7680"></a>4.1.4. Ehemalige globale Variablen</h3></div></div></div><p>Die folgenden Variablen waren einmal im Programm, und wurden
180
        entfernt.</p><div class="sect3" title="4.1.4.1. $::cgi"><div class="titlepage"><div><div><h4 class="title"><a name="d0e7685"></a>4.1.4.1. $::cgi</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>war nötig, weil cookie Methoden nicht als
179
              Wrappermethode</p></li></ul></div></div></div><div class="sect2" title="4.1.4. Ehemalige globale Variablen"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7491"></a>4.1.4. Ehemalige globale Variablen</h3></div></div></div><p>Die folgenden Variablen waren einmal im Programm, und wurden
180
        entfernt.</p><div class="sect3" title="4.1.4.1. $::cgi"><div class="titlepage"><div><div><h4 class="title"><a name="d0e7496"></a>4.1.4.1. $::cgi</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>war nötig, weil cookie Methoden nicht als
181 181
              Klassenfunktionen funktionieren</p></li><li class="listitem"><p>Aufruf als Klasse erzeugt Dummyobjekt was im
182 182
              Klassennamespace gehalten wird und über Requestgrenzen
183 183
              leaked</p></li><li class="listitem"><p>liegt jetzt unter
184 184
              <code class="varname">$::request-&gt;{cgi}</code>
185
                     </p></li></ul></div></div><div class="sect3" title="4.1.4.2. $::all_units"><div class="titlepage"><div><div><h4 class="title"><a name="d0e7701"></a>4.1.4.2. $::all_units</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>war nötig, weil einige Funktionen in Schleifen zum Teil
185
                     </p></li></ul></div></div><div class="sect3" title="4.1.4.2. $::all_units"><div class="titlepage"><div><div><h4 class="title"><a name="d0e7512"></a>4.1.4.2. $::all_units</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>war nötig, weil einige Funktionen in Schleifen zum Teil
186 186
              ein paar hundert mal pro Request eine Liste der Einheiten
187 187
              brauchen, und de als Parameter durch einen Riesenstack von
188 188
              Funktionen geschleift werden müssten.</p></li><li class="listitem"><p>Liegt jetzt unter
189 189
              <code class="varname">$::request-&gt;{cache}{all_units}</code>
190 190
                     </p></li><li class="listitem"><p>Wird nur in
191 191
              <code class="function">AM-&gt;retrieve_all_units()</code> gesetzt oder
192
              gelesen.</p></li></ul></div></div><div class="sect3" title="4.1.4.3. %::called_subs"><div class="titlepage"><div><div><h4 class="title"><a name="d0e7720"></a>4.1.4.3. %::called_subs</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>wurde benutzt um callsub deep recursions
192
              gelesen.</p></li></ul></div></div><div class="sect3" title="4.1.4.3. %::called_subs"><div class="titlepage"><div><div><h4 class="title"><a name="d0e7531"></a>4.1.4.3. %::called_subs</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>wurde benutzt um callsub deep recursions
193 193
              abzufangen.</p></li><li class="listitem"><p>Wurde entfernt, weil callsub nur einen Bruchteil der
194 194
              möglichen Rekursioenen darstellt, und da nie welche
195 195
              auftreten.</p></li><li class="listitem"><p>komplette recursion protection wurde entfernt.</p></li></ul></div></div></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch03s10.html">Zurück</a>&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch04s02.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">3.10. ZUGFeRD Rechnungen&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;4.2. Entwicklung unter FastCGI</td></tr></table></div></body></html>
doc/html/index.html
2 2
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
3 3
   <title>kivitendo 3.5.6: Installation, Konfiguration, Entwicklung</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo 3.5.6: Installation, Konfiguration, Entwicklung"><link rel="next" href="ch01.html" title="Kapitel 1. Aktuelle Hinweise"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">kivitendo 3.5.6: Installation, Konfiguration,
4 4
  Entwicklung</th></tr><tr><td width="20%" align="left">&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch01.html">Weiter</a></td></tr></table><hr></div><div lang="de" class="book" title="kivitendo 3.5.6: Installation, Konfiguration, Entwicklung"><div class="titlepage"><div><div><h1 class="title"><a name="kivitendo-documentation"></a>kivitendo 3.5.6: Installation, Konfiguration,
5
  Entwicklung</h1></div></div><hr></div><div class="toc"><p><b>Inhaltsverzeichnis</b></p><dl><dt><span class="chapter"><a href="ch01.html">1. Aktuelle Hinweise</a></span></dt><dt><span class="chapter"><a href="ch02.html">2. Installation und Grundkonfiguration</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch02.html#Installation-%C3%9Cbersicht">2.1. Übersicht</a></span></dt><dt><span class="sect1"><a href="ch02s02.html">2.2. Benötigte Software und Pakete</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s02.html#Betriebssystem">2.2.1. Betriebssystem</a></span></dt><dt><span class="sect2"><a href="ch02s02.html#Pakete">2.2.2. Benötigte Perl-Pakete installieren</a></span></dt><dt><span class="sect2"><a href="ch02s02.html#d0e649">2.2.3. Andere Pakete installieren</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s03.html">2.3. Manuelle Installation des Programmpaketes</a></span></dt><dt><span class="sect1"><a href="ch02s04.html">2.4. kivitendo-Konfigurationsdatei</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s04.html#config.config-file.introduction">2.4.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch02s04.html#config.config-file.sections-parameters">2.4.2. Abschnitte und Parameter</a></span></dt><dt><span class="sect2"><a href="ch02s04.html#config.config-file.prior-versions">2.4.3. Versionen vor 2.6.3</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s05.html">2.5. Anpassung der PostgreSQL-Konfiguration</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s05.html#Zeichens%C3%A4tze-die-Verwendung-von-UTF-8">2.5.1. Zeichensätze/die Verwendung von Unicode/UTF-8</a></span></dt><dt><span class="sect2"><a href="ch02s05.html#%C3%84nderungen-an-Konfigurationsdateien">2.5.2. Änderungen an Konfigurationsdateien</a></span></dt><dt><span class="sect2"><a href="ch02s05.html#Erweiterung-f%C3%BCr-servergespeicherte-Prozeduren">2.5.3. Erweiterung für servergespeicherte Prozeduren</a></span></dt><dt><span class="sect2"><a href="ch02s05.html#Erweiterung-f%C3%BCr-trigram">2.5.4. Erweiterung für Trigram Prozeduren</a></span></dt><dt><span class="sect2"><a href="ch02s05.html#Datenbankbenutzer-anlegen">2.5.5. Datenbankbenutzer anlegen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s06.html">2.6. Webserver-Konfiguration</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s06.html#d0e1129">2.6.1. Grundkonfiguration mittels CGI</a></span></dt><dt><span class="sect2"><a href="ch02s06.html#Apache-Konfiguration.FCGI">2.6.2. Konfiguration für FastCGI/FCGI</a></span></dt><dt><span class="sect2"><a href="ch02s06.html#d0e1283">2.6.3. Authentifizierung mittels HTTP Basic Authentication</a></span></dt><dt><span class="sect2"><a href="ch02s06.html#d0e1299">2.6.4. Aktivierung von mod_rewrite/directory_match für git basierte Installationen</a></span></dt><dt><span class="sect2"><a href="ch02s06.html#d0e1313">2.6.5. Weitergehende Konfiguration</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s07.html">2.7. Der Task-Server</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s07.html#Konfiguration-des-Task-Servers">2.7.1. Verfügbare und notwendige Konfigurationsoptionen</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#Konfiguration-der-Mandanten-fuer-den-Task-Servers">2.7.2. Konfiguration der Mandanten für den Task-Server</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#Einbinden-in-den-Boot-Prozess">2.7.3. Automatisches Starten des Task-Servers beim Booten</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#Prozesskontrolle">2.7.4. Wie der Task-Server gestartet und beendet wird</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#Tasks konfigurieren">2.7.5. Exemplarische Konfiguration eines Hintergrund-Jobs, der die Jahreszahl in allen Nummernkreisen zum Jahreswechsel erhöht</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s08.html">2.8. Benutzerauthentifizierung und Administratorpasswort</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s08.html#Grundlagen-zur-Benutzerauthentifizierung">2.8.1. Grundlagen zur Benutzerauthentifizierung</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Administratorpasswort">2.8.2. Administratorpasswort</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Authentifizierungsdatenbank">2.8.3. Authentifizierungsdatenbank</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Passwort%C3%BCberpr%C3%BCfung">2.8.4. Passwortüberprüfung</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Name-des-Session-Cookies">2.8.5. Name des Session-Cookies</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Anlegen-der-Authentifizierungsdatenbank">2.8.6. Anlegen der Authentifizierungsdatenbank</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s09.html">2.9. Mandanten-, Benutzer- und Gruppenverwaltung</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s09.html#Zusammenh%C3%A4nge">2.9.1. Zusammenhänge</a></span></dt><dt><span class="sect2"><a href="ch02s09.html#Mandanten-Benutzer-Gruppen">2.9.2. Mandanten, Benutzer und Gruppen</a></span></dt><dt><span class="sect2"><a href="ch02s09.html#Datenbanken-anlegen">2.9.3. Datenbanken anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s09.html#Gruppen-anlegen">2.9.4. Gruppen anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s09.html#Benutzer-anlegen">2.9.5. Benutzer anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s09.html#Mandanten-anlegen">2.9.6. Mandanten anlegen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s10.html">2.10. Drucker- und Systemverwaltung</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s10.html#Druckeradministration">2.10.1. Druckeradministration</a></span></dt><dt><span class="sect2"><a href="ch02s10.html#System">2.10.2. System sperren / entsperren</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s11.html">2.11. E-Mail-Versand aus kivitendo heraus</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s11.html#config.sending-email.sendmail">2.11.1. Versand über lokalen E-Mail-Server</a></span></dt><dt><span class="sect2"><a href="ch02s11.html#config.sending-email.smtp">2.11.2. Versand über einen SMTP-Server</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s12.html">2.12. Drucken mit kivitendo</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s12.html#Vorlagenverzeichnis-anlegen">2.12.1. Vorlagenverzeichnis anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s12.html#Vorlagen-RB">2.12.2. Der Druckvorlagensatz RB</a></span></dt><dt><span class="sect2"><a href="ch02s12.html#f-tex">2.12.3. f-tex</a></span></dt><dt><span class="sect2"><a href="ch02s12.html#Vorlagen-rev-odt">2.12.4. Der Druckvorlagensatz rev-odt</a></span></dt><dt><span class="sect2"><a href="ch02s12.html#allgemeine-hinweise-zu-latex">2.12.5. Allgemeine Hinweise zu LaTeX Vorlagen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s13.html">2.13. OpenDocument-Vorlagen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s13.html#d0e2609">2.13.1. OpenDocument (odt) Druckvorlagen mit Makros</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s14.html">2.14. Nomenklatur</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s14.html#booking.dates">2.14.1. Datum bei Buchungen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s15.html">2.15. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung:
5
  Entwicklung</h1></div></div><hr></div><div class="toc"><p><b>Inhaltsverzeichnis</b></p><dl><dt><span class="chapter"><a href="ch01.html">1. Aktuelle Hinweise</a></span></dt><dt><span class="chapter"><a href="ch02.html">2. Installation und Grundkonfiguration</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch02.html#Installation-%C3%9Cbersicht">2.1. Übersicht</a></span></dt><dt><span class="sect1"><a href="ch02s02.html">2.2. Benötigte Software und Pakete</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s02.html#Betriebssystem">2.2.1. Betriebssystem</a></span></dt><dt><span class="sect2"><a href="ch02s02.html#Pakete">2.2.2. Benötigte Perl-Pakete installieren</a></span></dt><dt><span class="sect2"><a href="ch02s02.html#d0e649">2.2.3. Andere Pakete installieren</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s03.html">2.3. Manuelle Installation des Programmpaketes</a></span></dt><dt><span class="sect1"><a href="ch02s04.html">2.4. kivitendo-Konfigurationsdatei</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s04.html#config.config-file.introduction">2.4.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch02s04.html#config.config-file.sections-parameters">2.4.2. Abschnitte und Parameter</a></span></dt><dt><span class="sect2"><a href="ch02s04.html#config.config-file.prior-versions">2.4.3. Versionen vor 2.6.3</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s05.html">2.5. Anpassung der PostgreSQL-Konfiguration</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s05.html#Zeichens%C3%A4tze-die-Verwendung-von-UTF-8">2.5.1. Zeichensätze/die Verwendung von Unicode/UTF-8</a></span></dt><dt><span class="sect2"><a href="ch02s05.html#%C3%84nderungen-an-Konfigurationsdateien">2.5.2. Änderungen an Konfigurationsdateien</a></span></dt><dt><span class="sect2"><a href="ch02s05.html#Erweiterung-f%C3%BCr-servergespeicherte-Prozeduren">2.5.3. Erweiterung für servergespeicherte Prozeduren</a></span></dt><dt><span class="sect2"><a href="ch02s05.html#Erweiterung-f%C3%BCr-trigram">2.5.4. Erweiterung für Trigram Prozeduren</a></span></dt><dt><span class="sect2"><a href="ch02s05.html#Datenbankbenutzer-anlegen">2.5.5. Datenbankbenutzer anlegen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s06.html">2.6. Webserver-Konfiguration</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s06.html#d0e1129">2.6.1. Grundkonfiguration mittels CGI</a></span></dt><dt><span class="sect2"><a href="ch02s06.html#Apache-Konfiguration.FCGI">2.6.2. Konfiguration für FastCGI/FCGI</a></span></dt><dt><span class="sect2"><a href="ch02s06.html#d0e1283">2.6.3. Authentifizierung mittels HTTP Basic Authentication</a></span></dt><dt><span class="sect2"><a href="ch02s06.html#d0e1299">2.6.4. Aktivierung von mod_rewrite/directory_match für git basierte Installationen</a></span></dt><dt><span class="sect2"><a href="ch02s06.html#d0e1313">2.6.5. Weitergehende Konfiguration</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s07.html">2.7. Der Task-Server</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s07.html#Konfiguration-des-Task-Servers">2.7.1. Verfügbare und notwendige Konfigurationsoptionen</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#Konfiguration-der-Mandanten-fuer-den-Task-Servers">2.7.2. Konfiguration der Mandanten für den Task-Server</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#Einbinden-in-den-Boot-Prozess">2.7.3. Automatisches Starten des Task-Servers beim Booten</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#Prozesskontrolle">2.7.4. Wie der Task-Server gestartet und beendet wird</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#Tasks konfigurieren">2.7.5. Exemplarische Konfiguration eines Hintergrund-Jobs, der die Jahreszahl in allen Nummernkreisen zum Jahreswechsel erhöht</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s08.html">2.8. Benutzerauthentifizierung und Administratorpasswort</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s08.html#Grundlagen-zur-Benutzerauthentifizierung">2.8.1. Grundlagen zur Benutzerauthentifizierung</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Administratorpasswort">2.8.2. Administratorpasswort</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Authentifizierungsdatenbank">2.8.3. Authentifizierungsdatenbank</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Passwort%C3%BCberpr%C3%BCfung">2.8.4. Passwortüberprüfung</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Name-des-Session-Cookies">2.8.5. Name des Session-Cookies</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Anlegen-der-Authentifizierungsdatenbank">2.8.6. Anlegen der Authentifizierungsdatenbank</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s09.html">2.9. Mandanten-, Benutzer- und Gruppenverwaltung</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s09.html#Zusammenh%C3%A4nge">2.9.1. Zusammenhänge</a></span></dt><dt><span class="sect2"><a href="ch02s09.html#Mandanten-Benutzer-Gruppen">2.9.2. Mandanten, Benutzer und Gruppen</a></span></dt><dt><span class="sect2"><a href="ch02s09.html#Datenbanken-anlegen">2.9.3. Datenbanken anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s09.html#Gruppen-anlegen">2.9.4. Gruppen anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s09.html#Benutzer-anlegen">2.9.5. Benutzer anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s09.html#Mandanten-anlegen">2.9.6. Mandanten anlegen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s10.html">2.10. Drucker- und Systemverwaltung</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s10.html#Druckeradministration">2.10.1. Druckeradministration</a></span></dt><dt><span class="sect2"><a href="ch02s10.html#System">2.10.2. System sperren / entsperren</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s11.html">2.11. E-Mail-Versand aus kivitendo heraus</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s11.html#config.sending-email.sendmail">2.11.1. Versand über lokalen E-Mail-Server</a></span></dt><dt><span class="sect2"><a href="ch02s11.html#config.sending-email.smtp">2.11.2. Versand über einen SMTP-Server</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s12.html">2.12. Drucken mit kivitendo</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s12.html#Vorlagenverzeichnis-anlegen">2.12.1. Vorlagenverzeichnis anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s12.html#Vorlagen-RB">2.12.2. Der Druckvorlagensatz RB</a></span></dt><dt><span class="sect2"><a href="ch02s12.html#Vorlagen-rev-odt">2.12.3. Der Druckvorlagensatz rev-odt</a></span></dt><dt><span class="sect2"><a href="ch02s12.html#allgemeine-hinweise-zu-latex">2.12.4. Allgemeine Hinweise zu LaTeX Vorlagen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s13.html">2.13. OpenDocument-Vorlagen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s13.html#d0e2420">2.13.1. OpenDocument (odt) Druckvorlagen mit Makros</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s14.html">2.14. Nomenklatur</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s14.html#booking.dates">2.14.1. Datum bei Buchungen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s15.html">2.15. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung:
6 6
      EUR</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s15.html#config.eur.introduction">2.15.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch02s15.html#config.eur.parameters">2.15.2. Konfigurationsparameter</a></span></dt><dt><span class="sect2"><a href="ch02s15.html#config.eur.setting-parameters">2.15.3. Festlegen der Parameter</a></span></dt><dt><span class="sect2"><a href="ch02s15.html#config.eur.inventory-system-perpetual">2.15.4. Bemerkungen zur Bestandsmethode</a></span></dt><dt><span class="sect2"><a href="ch02s15.html#config.eur.knonw-issues">2.15.5. Bekannte Probleme</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s16.html">2.16. SKR04 19% Umstellung für innergemeinschaftlichen Erwerb</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s16.html#config.skr04-update-3804.introduction">2.16.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch02s16.html#config.skr04-update-3804.create-chart">2.16.2. Konto 3804 manuell anlegen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s17.html">2.17. Verhalten des Bilanzberichts</a></span></dt><dt><span class="sect1"><a href="ch02s18.html">2.18. Erfolgsrechnung</a></span></dt><dt><span class="sect1"><a href="ch02s19.html">2.19. Rundung in Verkaufsbelegen</a></span></dt><dt><span class="sect1"><a href="ch02s20.html">2.20. Einstellungen pro Mandant</a></span></dt><dt><span class="sect1"><a href="ch02s21.html">2.21. kivitendo ERP verwenden</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch03.html">3. Features und Funktionen</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch03.html#features.periodic-invoices">3.1. Wiederkehrende Rechnungen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03.html#features.periodic-invoices.introduction">3.1.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch03.html#features.periodic-invoices.configuration">3.1.2. Konfiguration</a></span></dt><dt><span class="sect2"><a href="ch03.html#features.periodic-invoices.variables">3.1.3. Spezielle Variablen</a></span></dt><dt><span class="sect2"><a href="ch03.html#features.periodic-invoices.reports">3.1.4. Auflisten</a></span></dt><dt><span class="sect2"><a href="ch03.html#features.periodic-invoices.task-server">3.1.5. Erzeugung der eigentlichen Rechnungen</a></span></dt><dt><span class="sect2"><a href="ch03.html#features.periodic-invoices.create-for-current-month">3.1.6. Erste Rechnung für aktuellen Monat erstellen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s02.html">3.2. Bankerweiterung</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s02.html#features.bank.introduction">3.2.1. Einführung</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s03.html">3.3. Dokumentenvorlagen und verfügbare Variablen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s03.html#dokumentenvorlagen-und-variablen.einf%C3%BChrung">3.3.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#dokumentenvorlagen-und-variablen.variablen-ausgeben">3.3.2. Variablen ausgeben</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#dokumentenvorlagen-und-variablen.verwendung-in-druckbefehlen">3.3.3. Verwendung in Druckbefehlen</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#dokumentenvorlagen-und-variablen.tag-style">3.3.4. Anfang und Ende der Tags verändern</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#dokumentenvorlagen-und-variablen.zuordnung-dateinamen">3.3.5. Zuordnung von den Dateinamen zu den Funktionen</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#dokumentenvorlagen-und-variablen.dateinamen-erweitert">3.3.6. Sprache, Drucker und E-Mail</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#dokumentenvorlagen-und-variablen.allgemeine-variablen">3.3.7. Allgemeine Variablen, die in allen Vorlagen vorhanden
7 7
        sind</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#dokumentenvorlagen-und-variablen.invoice">3.3.8. Variablen in Rechnungen</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#dokumentenvorlagen-und-variablen.dunning">3.3.9. Variablen in Mahnungen und Rechnungen über Mahngebühren</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#dokumentenvorlagen-und-variablen.andere-vorlagen">3.3.10. Variablen in anderen Vorlagen</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#dokumentenvorlagen-und-variablen.bloecke">3.3.11. Blöcke, bedingte Anweisungen und Schleifen</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#dokumentenvorlagen-und-variablen.markup">3.3.12. Markup-Code zur Textformatierung innerhalb von
8
        Formularen</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#dokumentenvorlagen-und-variablen.anrede">3.3.13. Hinweise zur Anrede</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s04.html">3.4. Excel-Vorlagen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s04.html#excel-templates.summary">3.4.1. Zusammenfassung</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#excel-templates.usage">3.4.2. Bedienung</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#excel-templates.syntax">3.4.3. Variablensyntax</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#excel-templates.limitations">3.4.4. Einschränkungen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s05.html">3.5. Mandantenkonfiguration Lager</a></span></dt><dt><span class="sect1"><a href="ch03s06.html">3.6. Schweizer Kontenpläne</a></span></dt><dt><span class="sect1"><a href="ch03s07.html">3.7. Artikelklassifizierung</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s07.html#d0e6704">3.7.1. Übersicht</a></span></dt><dt><span class="sect2"><a href="ch03s07.html#d0e6709">3.7.2. Basisklassifizierung</a></span></dt><dt><span class="sect2"><a href="ch03s07.html#d0e6739">3.7.3. Attribute</a></span></dt><dt><span class="sect2"><a href="ch03s07.html#d0e6770">3.7.4. Zwei-Zeichen Abkürzung</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s08.html">3.8. Dateiverwaltung (Mini-DMS)</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s08.html#d0e6782">3.8.1. Übersicht</a></span></dt><dt><span class="sect2"><a href="ch03s08.html#d0e6809">3.8.2. Struktur</a></span></dt><dt><span class="sect2"><a href="ch03s08.html#d0e6861">3.8.3. Anwendung</a></span></dt><dt><span class="sect2"><a href="ch03s08.html#d0e6904">3.8.4. Konfigurierung</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s09.html">3.9. Webshop-Api</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s09.html#d0e6969">3.9.1. Rechte für die Webshopapi</a></span></dt><dt><span class="sect2"><a href="ch03s09.html#d0e6984">3.9.2. Konfiguration</a></span></dt><dt><span class="sect2"><a href="ch03s09.html#d0e6992">3.9.3. Webshopartikel</a></span></dt><dt><span class="sect2"><a href="ch03s09.html#d0e7016">3.9.4. Bestellimport</a></span></dt><dt><span class="sect2"><a href="ch03s09.html#d0e7069">3.9.5. Mapping der Daten</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s10.html">3.10. ZUGFeRD Rechnungen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s10.html#features.zugferd.preamble">3.10.1. Vorbedingung</a></span></dt><dt><span class="sect2"><a href="ch03s10.html#features.zugferd.summary">3.10.2. Übersicht</a></span></dt><dt><span class="sect2"><a href="ch03s10.html#features.zugferd.create_zugferd_bills">3.10.3. Erstellen von ZUGFeRD Rechnungen in Kivitendo</a></span></dt><dt><span class="sect2"><a href="ch03s10.html#features.zugferd.read_zugferd_bills">3.10.4. Einlesen von ZUGFeRD Rechnungen in Kivitendo</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="ch04.html">4. Entwicklerdokumentation</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch04.html#devel.globals">4.1. Globale Variablen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04.html#d0e7158">4.1.1. Wie sehen globale Variablen in Perl aus?</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e7259">4.1.2. Warum sind globale Variablen ein Problem?</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e7292">4.1.3. Kanonische globale Variablen</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e7680">4.1.4. Ehemalige globale Variablen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s02.html">4.2. Entwicklung unter FastCGI</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.general">4.2.1. Allgemeines</a></span></dt><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.exiting">4.2.2. Programmende und Ausnahmen</a></span></dt><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.globals">4.2.3. Globale Variablen</a></span></dt><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.performance">4.2.4. Performance und Statistiken</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s03.html">4.3. Programmatische API-Aufrufe</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s03.html#dev-programmatic-api-calls.introduction">4.3.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch04s03.html#dev-programmatic-api-calls.client_selection">4.3.2. Wahl des Mandanten</a></span></dt><dt><span class="sect2"><a href="ch04s03.html#dev-programmatic-api-calls.http_basic_authentication">4.3.3. HTTP-»Basic«-Authentifizierung</a></span></dt><dt><span class="sect2"><a href="ch04s03.html#dev-programmatic-api-calls.authentication_via_parameters">4.3.4. Authentifizierung mit Parametern</a></span></dt><dt><span class="sect2"><a href="ch04s03.html#dev-programmatic-api-calls.examples">4.3.5. Beispiele</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s04.html">4.4. SQL-Upgradedateien</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s04.html#db-upgrade-files.introduction">4.4.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch04s04.html#db-upgrade-files.format">4.4.2. Format der Kontrollinformationen</a></span></dt><dt><span class="sect2"><a href="ch04s04.html#db-upgrade-files.format-perl-files">4.4.3. Format von in Perl geschriebenen
8
        Formularen</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#dokumentenvorlagen-und-variablen.anrede">3.3.13. Hinweise zur Anrede</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s04.html">3.4. Excel-Vorlagen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s04.html#excel-templates.summary">3.4.1. Zusammenfassung</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#excel-templates.usage">3.4.2. Bedienung</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#excel-templates.syntax">3.4.3. Variablensyntax</a></span></dt><dt><span class="sect2"><a href="ch03s04.html#excel-templates.limitations">3.4.4. Einschränkungen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s05.html">3.5. Mandantenkonfiguration Lager</a></span></dt><dt><span class="sect1"><a href="ch03s06.html">3.6. Schweizer Kontenpläne</a></span></dt><dt><span class="sect1"><a href="ch03s07.html">3.7. Artikelklassifizierung</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s07.html#d0e6515">3.7.1. Übersicht</a></span></dt><dt><span class="sect2"><a href="ch03s07.html#d0e6520">3.7.2. Basisklassifizierung</a></span></dt><dt><span class="sect2"><a href="ch03s07.html#d0e6550">3.7.3. Attribute</a></span></dt><dt><span class="sect2"><a href="ch03s07.html#d0e6581">3.7.4. Zwei-Zeichen Abkürzung</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s08.html">3.8. Dateiverwaltung (Mini-DMS)</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s08.html#d0e6593">3.8.1. Übersicht</a></span></dt><dt><span class="sect2"><a href="ch03s08.html#d0e6620">3.8.2. Struktur</a></span></dt><dt><span class="sect2"><a href="ch03s08.html#d0e6672">3.8.3. Anwendung</a></span></dt><dt><span class="sect2"><a href="ch03s08.html#d0e6715">3.8.4. Konfigurierung</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s09.html">3.9. Webshop-Api</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s09.html#d0e6780">3.9.1. Rechte für die Webshopapi</a></span></dt><dt><span class="sect2"><a href="ch03s09.html#d0e6795">3.9.2. Konfiguration</a></span></dt><dt><span class="sect2"><a href="ch03s09.html#d0e6803">3.9.3. Webshopartikel</a></span></dt><dt><span class="sect2"><a href="ch03s09.html#d0e6827">3.9.4. Bestellimport</a></span></dt><dt><span class="sect2"><a href="ch03s09.html#d0e6880">3.9.5. Mapping der Daten</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s10.html">3.10. ZUGFeRD Rechnungen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s10.html#features.zugferd.preamble">3.10.1. Vorbedingung</a></span></dt><dt><span class="sect2"><a href="ch03s10.html#features.zugferd.summary">3.10.2. Übersicht</a></span></dt><dt><span class="sect2"><a href="ch03s10.html#features.zugferd.create_zugferd_bills">3.10.3. Erstellen von ZUGFeRD Rechnungen in Kivitendo</a></span></dt><dt><span class="sect2"><a href="ch03s10.html#features.zugferd.read_zugferd_bills">3.10.4. Einlesen von ZUGFeRD Rechnungen in Kivitendo</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="ch04.html">4. Entwicklerdokumentation</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch04.html#devel.globals">4.1. Globale Variablen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04.html#d0e6969">4.1.1. Wie sehen globale Variablen in Perl aus?</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e7070">4.1.2. Warum sind globale Variablen ein Problem?</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e7103">4.1.3. Kanonische globale Variablen</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e7491">4.1.4. Ehemalige globale Variablen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s02.html">4.2. Entwicklung unter FastCGI</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.general">4.2.1. Allgemeines</a></span></dt><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.exiting">4.2.2. Programmende und Ausnahmen</a></span></dt><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.globals">4.2.3. Globale Variablen</a></span></dt><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.performance">4.2.4. Performance und Statistiken</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s03.html">4.3. Programmatische API-Aufrufe</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s03.html#dev-programmatic-api-calls.introduction">4.3.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch04s03.html#dev-programmatic-api-calls.client_selection">4.3.2. Wahl des Mandanten</a></span></dt><dt><span class="sect2"><a href="ch04s03.html#dev-programmatic-api-calls.http_basic_authentication">4.3.3. HTTP-»Basic«-Authentifizierung</a></span></dt><dt><span class="sect2"><a href="ch04s03.html#dev-programmatic-api-calls.authentication_via_parameters">4.3.4. Authentifizierung mit Parametern</a></span></dt><dt><span class="sect2"><a href="ch04s03.html#dev-programmatic-api-calls.examples">4.3.5. Beispiele</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s04.html">4.4. SQL-Upgradedateien</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s04.html#db-upgrade-files.introduction">4.4.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch04s04.html#db-upgrade-files.format">4.4.2. Format der Kontrollinformationen</a></span></dt><dt><span class="sect2"><a href="ch04s04.html#db-upgrade-files.format-perl-files">4.4.3. Format von in Perl geschriebenen
9 9
        Datenbankupgradescripten</a></span></dt><dt><span class="sect2"><a href="ch04s04.html#db-upgrade-files.dbupgrade-tool">4.4.4. Hilfsscript dbupgrade2_tool.pl</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s05.html">4.5. Translations and languages</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s05.html#translations-languages.introduction">4.5.1. Introduction</a></span></dt><dt><span class="sect2"><a href="ch04s05.html#translations-languages.character-set">4.5.2. Character set</a></span></dt><dt><span class="sect2"><a href="ch04s05.html#translations-languages.file-structure">4.5.3. File structure</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s06.html">4.6. Die kivitendo-Test-Suite</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s06.html#devel.testsuite.intro">4.6.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch04s06.html#devel.testsuite.prerequisites">4.6.2. Voraussetzungen</a></span></dt><dt><span class="sect2"><a href="ch04s06.html#devel.testsuite.execution">4.6.3. Existierende Tests ausführen</a></span></dt><dt><span class="sect2"><a href="ch04s06.html#devel.testsuite.meaning_of_scripts">4.6.4. Bedeutung der verschiedenen Test-Scripte</a></span></dt><dt><span class="sect2"><a href="ch04s06.html#devel.testsuite.create_new">4.6.5. Neue Test-Scripte erstellen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s07.html">4.7. Stil-Richtlinien</a></span></dt><dt><span class="sect1"><a href="ch04s08.html">4.8. Dokumentation erstellen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s08.html#devel.build-doc.introduction">4.8.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch04s08.html#devel.build-doc.required-software">4.8.2. Benötigte Software</a></span></dt><dt><span class="sect2"><a href="ch04s08.html#devel.build-doc.build">4.8.3. PDFs und HTML-Seiten erstellen</a></span></dt><dt><span class="sect2"><a href="ch04s08.html#devel.build-doc.repository">4.8.4. Einchecken in das Git-Repository</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left">&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch01.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right" valign="top">&nbsp;Kapitel 1. Aktuelle Hinweise</td></tr></table></div></body></html>
scripts/installation_check.pl
146 146
sub check_latex {
147 147
  my ($res) = check_kpsewhich();
148 148
  print_result("Looking for LaTeX kpsewhich", $res);
149

  
150
  # no pdfx -> no zugferd possible
151
  my $ret = kpsewhich('template/print/', 'sty', 'pdfx');
152
  die "Cannot use pdfx. Please install this package first (debian: apt install texlive-latex-extra)"  if $ret;
153
  # check version 2018
154
  my $latex = $::lx_office_conf{applications}->{latex} || 'pdflatex';
155
  my $pdfx = (system ${latex} . ' --interaction=batchmode "\documentclass{minimal} \RequirePackage{pdfx} \csname @ifpackagelater\endcsname{pdfx}{2018/12/22}{}{\show\relax} \begin{document} \end{document}"');
156

  
157
  print_result ("Looking for pdfx version 2018 or higher", !$pdfx);
158
  push @missing_modules, \(name => 'pdfx') if $pdfx;
159

  
149 160
  if ($res) {
150 161
    check_template_dir($_) for SL::InstallationCheck::template_dirs($master_templates);
151 162
  }
163
  print STDERR <<EOL if $pdfx;
164
+------------------------------------------------------------------------------+
165
  Your pdfx version is too old. You cannot use ZuGFeRD or modern (2018+)
166
  templates. Please consider using a more recent LaTeX environment.
167
  Verify with:
168
  pdflatex --interaction=batchmode "\RequirePackage{pdfx}[2018/12/22]"
169
+------------------------------------------------------------------------------+
170
EOL
152 171
}
153 172

  
154 173
sub check_template_dir {
......
160 179

  
161 180
  my @sty = sort { $a cmp $b } uniq (
162 181
    SL::InstallationCheck::classes_from_latex($path, '\usepackage'),
163
    qw(textcomp ulem pdfx embedfile)
182
    qw(textcomp ulem embedfile)
164 183
  );
165 184
  kpsewhich($path, 'sty', $_) for @sty;
166 185
}
templates/print/f-tex/bin_list.html
1
<body bgcolor=ffffff>
2

  
3
<table width=100%>
4
  <tr>
5
    <td width=10>&nbsp;</td>
6
    
7
    <td>
8
      <table width=100%>
9
	<tr>
10
	  <td>
11
	    <h4>
12
	    <%company%>
13
	    <br><%address%>
14
	    </h4>
15
	  </td>
16
	  
17
	  <th><img src=http://localhost/lx-erp/lx-office-erp.png border=0 width=64 height=58></th>
18

  
19
	  <th align=right>
20
	    <h4>
21
	    Tel: <%tel%>
22
	    <br>Fax: <%fax%>
23
	    </h4>
24
	  </td>
25
	</tr>
26
	
27
	<tr>
28
	  <th colspan=3>
29
	    <h4>L A G E R L I S T E</h4>
30
	  </th>
31
	</tr>
32
      </table>
33
    </td>
34
  </tr>
35

  
36
  <tr>
37
    <td>&nbsp;</td>
38

  
39
    <td>
40
      <table width=100% cellspacing=0 cellpadding=0>
41
	<tr bgcolor=000000>
42
	  <th align=left width=50%><font color=ffffff>Absender</th>
43
	  <th align=left width=50%><font color=ffffff>Lieferanschrift</th>
44
	</tr>
45

  
46
	<tr valign=top>
47
	  <td><%name%>
48
	  <br><%street%>
49
	  <br><%zipcode%>
50
	  <br><%city%>
51
	  <br><%country%>
52
	  <br>
53

  
54
	  <%if contact%>
55
	  <br>Kontakt: <%contact%>
56
	  <%end contact%>
57

  
58
	  <%if vendorphone%>
59
	  <br>Tel: <%vendorphone%>
60
	  <%end vendorphone%>
61

  
62
	  <%if vendorfax%>
63
	  <br>Fax: <%vendorfax%>
64
	  <%end vendorfax%>
65

  
66
	  <%if email%>
67
	  <br><%email%>
68
	  <%end email%>
69
	  
70
	  </td>
71
	  
72
	  <td><%shiptoname%>
73
	  <br><%shiptostreet%>
74
	  <br><%shiptozipcode%>
75
	  <br><%shiptocity%>
76
	  <br><%shiptocountry%>
77

  
78
	  <br>
79
	  <%if shiptocontact%>
80
	  <br>Kontakt: <%shiptocontact%>
81
	  <%end shiptocontact%>
82
	  
83
	  <%if shiptophone%>
84
	  <br>Tel: <%shiptophone%>
85
	  <%end shiptophone%>
86

  
87
	  <%if shiptofax%>
88
	  <br>Fax: <%shiptofax%>
89
	  <%end shiptofax%>
90
	  </td>
91
	</tr>
92
      </table>
93
    </td>
94
  </tr>
95

  
96
  <tr height=5></tr>
97

  
98
  <tr>
99
    <td>&nbsp;</td>
100

  
101
    <td>
102
      <table width=100% border=1>
103
	<tr>
104
	  <th width=17% align=left nowrap>BestellNr. #</th>
105
	  <th width=17% align=left nowrap>Datum</th>
106
	  <th width=17% align=left nowrap>Kontakt</th>
107
	  <%if warehouse%>
108
	  <th width=17% align=left nowrap>Lager</th>
109
	  <%end warehouse%>
110
	  <th width=17% align=left>Versandort</th>
111
	  <th width=15% align=left>Lieferung durch</th>
112
	</tr>
113

  
114
	<tr>
115
	  <td><%ordnumber%>&nbsp;</td>
116

  
117
	  <%if shippingdate%>
118
	  <td><%shippingdate%></td>
119
	  <%end shippingdate%>
120

  
121
	  <%if not shippingdate%>
122
	  <td><%orddate%></td>
123
	  <%end shippingdate%>
124

  
125
	  <td><%employee%>&nbsp;</td>
126

  
127
	  <%if warehouse%>
128
	  <td><%warehouse%></td>
129
	  <%end warehouse%>
130

  
131
	  <td><%shippingpoint%>&nbsp;</td>
132
	  <td><%shipvia%>&nbsp;</td>
133
	</tr>
134
      </table>
135
    </td>
136
  </tr>
137

  
138
  <tr>
139
    <td>&nbsp;</td>
140

  
141
    <td>
142
      <table width=100%>
143
	<tr bgcolor=000000>
144
	  <th align=left><font color=ffffff>Pos</th>
145
	  <th align=left><font color=ffffff>ArtNr.</th>
146
	  <th align=left><font color=ffffff>Beschreibung</th>
147
	  <th><font color=ffffff>Seriennummer</th>
148
	  <th>&nbsp;</th>
149
	  <th><font color=ffffff>Menge</th>
150
	  <th><font color=ffffff>Erh</th>
151
	  <th>&nbsp;</th>
152
	  <th><font color=ffffff>Lagerplatz</th>
153
	</tr>
154

  
155
	<%foreach number%>
156
	<tr valign=top>
157
	  <td><%runningnumber%></td>
158
	  <td><%number%></td>
159
	  <td><%description%></td>
160
	  <td><%serialnumber%></td>
161
	  <td><%deliverydate%></td>
162
	  <td align=right><%qty%></td>
163
	  <td align=right><%ship%></td>
164
	  <td><%unit%></td>
165
	  <td><%bin%></td>
166
	</tr>
167
	<%end number%>
168

  
169
      </table>
170
    </td>
171
  </tr>
172

  
173
  <tr>
174
    <td>&nbsp;</td>
175

  
176
    <td><hr noshade></td>
177
  </tr>
178

  
179
</table>
180

  
templates/print/f-tex/default.tex
1
% ----------------------------------------------------------
2
%  letter.tex
3
%  Globale Vorlage fuer Briefartige Documente LX-Office 2.6
4
%
5
%  Changelog: see gitlog
6
   \newcommand{\ftLetterVersion}{1.2-u  (05.12.2012)}
7
%
8
%  Lizenz
9
%  http://www.gnu.de/licenses/gpl-3.0.html
10
%
11
%  Siehe ./README
12
%
13
%  Autor: Wulf Coulmann scripts_at_gpl.coulmann.de
14
%  Aufgebaut auf invoice.tex 0.1 kmk@lilalaser.de
15
%
16
% ----------------------------------------------------------
17

  
18
\documentclass[letter,fontsize=11pt]{scrlttr2}
19

  
20

  
21
\begingroup
22
  \makeatletter
23
  \@latex@warning@no@line{ #### this is default.tex \ftLetterVersion #####}
24
\endgroup
25

  
26

  
27
\usepackage{ifpdf}
28
\usepackage{graphicx}
29
\usepackage{german}
30
\usepackage{textcomp}
31
\usepackage{lastpage}
32
\usepackage{filecontents}
33
\usepackage{etex}
34
\usepackage{ltxtable}
35
\usepackage{tabularx}
36
\usepackage{longtable}
37
\usepackage{booktabs}
38
\usepackage{numprint}
39
\usepackage{xstring}
40
\newcommand{\leer}{}
41
\usepackage{zwischensumme}
42
\ifthenelse{\isundefined{\employeecountry}}{\input{mydata}}{}
43

  
44
%% meta infos
45
\newcommand{\docname}{<%template_meta.formname NOESCAPE%>}
46
\newcommand{\TemplateMetaLanguageDescription}{<%template_meta.language.description NOESCAPE%>}
47
\newcommand{\LangCode}{<%template_meta.language.template_code NOESCAPE%>}
48
\newcommand{\TemplateMetaLanguageOutputNumberformat}{<%template_meta.language.output_numberformat NOESCAPE%>}
49
\newcommand{\TemplateMetaLanguageOutputDateformat}{<%template_meta.language.output_dateformat NOESCAPE%>}
50
\newcommand{\TemplateMetaFormat}{<%template_meta.format NOESCAPE%>}
51
\newcommand{\TemplateMetaExtension}{<%template_meta.extension NOESCAPE%>}
52
\newcommand{\TemplateMetaMedia}{<%template_meta.media NOESCAPE%>}
53
\newcommand{\TemplateMetaPrinterDescription}{<%template_meta.printer.description NOESCAPE%>}
54
\newcommand{\TemplateMetaPrinterTemplateCode}{<%template_meta.printer.template_code NOESCAPE%>}
55

  
56
%%%%%%%%% Report-Variablen umsetzen, damit latex sie in lxbriefkopf.tex sieht.
57
%%%% Die eigenen Daten
58
\newcommand{\employeename}{<%employee_name%>}
59
\newcommand{\employeecompany}{<%employee_company%>}
60
\newcommand{\employeeaddress}{<%employee_address%>}
61
\newcommand{\employeetel}{<%employee_tel%>}
62
\newcommand{\employeefax}{<%employee_fax%>}
63
\newcommand{\employeecoustid}{<%employee_co_ustid%>}
64
\newcommand{\employeetaxnumber}{<%employee_taxnumber%>}
65
\newcommand{\media}{<%media%>}
66

  
67

  
68
%%%% Adressat
69
\newcommand{\name}{<%name%>}
70
\newcommand{\Shipname}{\ifthenelse{\equal{<%shiptoname%>}{\leer}}{<%name%>}{<%shiptoname%>}}
71
\newcommand{\departmentone}{<%department_1%>}
72
\newcommand{\departmenttwo}{<%department_2%>}
73
\newcommand{\cpgreeting}{<%cp_greeting%>}
74
\newcommand{\cptitle}{<%cp_title%>}
75
\newcommand{\cpgivenname}{<%cp_givenname%>}
76
\newcommand{\cpname}{<%cp_name%>}
77
\newcommand{\street}{<%street%>}
78
\newcommand{\Shipstreet}{\ifthenelse{\equal{<%shiptostreet%>}{\leer}}{<%street%>}{<%shiptostreet%>}}
79
\newcommand{\country}{<%country%>}
80
\newcommand{\Shipcountry}{<%shiptocountry%>}
81
\newcommand{\UstId}{<%ustid%>}
82
\newcommand{\zipcode}{<%zipcode%>}
83
\newcommand{\Shipzipcode}{\ifthenelse{\equal{<%shiptozipcode%>}{\leer}}{<%zipcode%>}{<%shiptozipcode%>}}
84
\newcommand{\city}{<%city%>}
85
\newcommand{\Shipcity}{\ifthenelse{\equal{<%shiptocity%>}{\leer}}{<%city%>}{<%shiptocity%>}}
86
\newcommand{\phone}{<%customerphone%>}
87
\newcommand{\fax}{<%customerfax%>}
88

  
89
%%%% Variablen, die sich auf das ganze Dokument beziehen
90
\newcommand{\kundennummer}{<%customernumber%>}
91
\newcommand{\vendornumber}{<%vendornumber%>}
92
\newcommand{\quonumber}{<%quonumber%>}                     % Angebotsnummer
93
\newcommand{\ordnumber}{<%ordnumber%>}                     % Auftragsnummer bei uns
94
\newcommand{\cusordnumber}{<%cusordnumber%>}               % Auftragsnummer beim Kunden
95
\newcommand{\invnumber}{<%invnumber%>}                     % Rechnungsnummer
96
\newcommand{\donumber}{<%donumber%>}                       % Lieferscheinnummer
97
%\newcommand{\docnumber}{Rechnungsnummer: \invnumber}
98
\newcommand{\quodate}{<%quodate%>}                         % Angebotsdatum
99
\newcommand{\orddate}{<%orddate%>}                         % Auftragsdatum
100
\newcommand{\reqdate}{<%reqdate%>}                         % gewuenschtes Lieferdatum
101
\newcommand{\deliverydate}{<%deliverydate%>}                % Lieferdatum
102
\newcommand{\invdate}{<%invdate%>}                         % Rechnungsdatum
103
\newcommand{\transdate}{<%transdate%>}                     % Lieferscheindatum
104
\newcommand{\terms}{<%terms%>}                             % Zahlungsfrist
105
\newcommand{\duedate}{<%duedate%>}                         % Fälligkeitsdatum
106
\newcommand{\invtotal}{<%invtotal NOFORMAT%>}              % Gesamtbetrag
107
\newcommand{\paid}{<%paid NOFORMAT%>}                      % Schon bezahlt
108
\newcommand{\total}{<%total NOFORMAT%>}                    % Restbetrag
109
\newcommand{\subtotal}{<%subtotal NOFORMAT%>}              % Restbetrag
110
\newcommand{\paymentterms}{<%payment_terms%>}              % Zahlungsbedingungen
111
\newcommand{\paymentPrivatEnd}{E}                          % Endung bei Privatkunden
112
\newcommand{\paymenttype}{<%payment_description%>}         % name der Zahlungs-art - fuer Steuerung brutto/netto
113

  
114

  
115
%%%% Lieferadresse
116
\newcommand{\shiptoname}{<%shiptoname%>}
117
\newcommand{\shiptocontact}{<%shiptocontact%>}
118
\newcommand{\shiptodepartmentone}{<%shiptodepartment_1%>}
119
\newcommand{\shiptodepartmenttwo}{<%shiptodepartment_2%>}
120
\newcommand{\shiptostreet}{<%shiptostreet%>}
121
\newcommand{\shiptocity}{<%shiptocity%>}
122
\newcommand{\shiptocountry}{<%shiptocountry%>}
123
\newcommand{\shiptophone}{<%shiptophone%>}
124
\newcommand{\shiptozipcode}{<%shiptozipcode%>}
125
\newcommand{\shiptofax}{<%shiptofax%>}
126

  
127
%%%% Die Waehrungsvariable in Waehrunszeichen umsetzen
128
\newcommand{\currency}{<%currency%>}
129
\ifthenelse{\equal{\currency}{EUR}}{\let\currency\euro}{}
130
\ifthenelse{\equal{\currency}{YEN}}{\let\currency\textyen}{}
131
\ifthenelse{\equal{\currency}{GBP}}{\let\currency\pounds}{}
132
\ifthenelse{\equal{\currency}{USD}}{\let\currency\$}{}
133

  
134
%%%%%%%%%%%%% Ende Reportvariablen-Umsetzung
135

  
136
\newcommand{\NoValue}{0}
137
\newcommand{\Picklist}{0}
138
\newcommand{\PurchaseOrder}{0}
139
\newcommand{\trash}{0}
140
\newcommand{\nonemptyline}[2]{\ifthenelse{\equal{#2}{\leer}}{}{#1#2~\\}}
141
\newcommand{\MyAdress}{\IfStrEq{\docname}{sales_delivery_order}{\Shipname~\\
142
  % lieferadresse wenn Lieferschein
143
    \nonemptyline{\cpgreeting{ }\cpgivenname{ }}{\cpname}
144
    \nonemptyline{}{\departmentone}
145
    \Shipstreet ~\\
146
    \Shipzipcode{ }\Shipcity
147
    \ifthenelse{\equal{\Shipcountry}{\employeecountry}}{}{~\\ \Shipcountry}   % Laenderangabe wird nur gedruckt,
148
    ~                                             % wenn der Empfaenger nicht im eigenen Land sitzt.
149
  }{
150
    \name~\\
151
    \nonemptyline{\cpgreeting{ }\cpgivenname{ }}{\cpname}
152
    \nonemptyline{}{\departmentone}
153
    \street ~\\
154
    \zipcode{ }\city
155
    \ifthenelse{\equal{\country} {\employeecountry}}{}{
156
         \ifthenelse{\equal{\country}{\leer}}{}{ ~\\ \country} } % Laenderangabe wird nur gedruckt,
157
    ~                                           % wenn der Empfaenger nicht im eigenen Land sitzt.
158
  }
159
}
160

  
161

  
162

  
163
\begin{document}
164

  
165
%%% dei folgenden Funktionen lesen den Dokumentennamen aus und _muessen_nach_ \begin{dokument} stehen.
166

  
167
% ==== statische Begriffe in der aktuellen Sprache einlesen
168
\input{translations}
169

  
170

  
171
\ifthenelse{\bgPdfEmailOnly = 1 }{
172
  \ifthenelse{\equal{\media}{email}}{
173
  }{
174
    \firsthead{}
175
    \watermark{}
176
  }
177
}{}
178

  
179

  
180
% ==== dokumenttyp ermitteln
181
\IfStrEq{\docname}{pick_list}{
182
  % Sammelliste
183
  \setkomavar{backaddress}{\DeliveryAddress}
184
  \firsthead{
185
      \hspace{-3mm}
186
     \resizebox{\useplength{firstheadwidth}-50mm}{!}{%
187
           \huge \TitlePicklist
188
    }
189
  }
190
  \renewcommand{\NoValue}{1}
191
  \renewcommand{\Picklist}{1}
192
  \newcommand{\doctype}{}
193
  \newcommand{\MyDocdate}{\transdate}
194
  \newcommand{\DocNoTitle}{\DelorderNumber}
195
  \newcommand{\docnumber}{\donumber}
196
  \renewcommand{\deliverydate}{\transdate}
197
  % 2. Documentnummer
198
    \ifthenelse{\equal{\ordnumber}{\leer}}{
199
    % wenn keine Auftragsnummer -> Angebotsnummer
200
      \newcommand{\SecNoTitle}{\QuotationNumber}
201
      \newcommand{\secnumber}{\quonumber}
202
    }{
203
      \newcommand{\SecNoTitle}{\OrderNumber}
204
      \newcommand{\secnumber}{\ordnumber}
205
    }
206
}{}
207
\IfStrEq{\docname}{sales_delivery_order}{
208
  % Lieferschein
209
  \renewcommand{\NoValue}{1}
210
  \newcommand{\doctype}{\TitleDelorder}
211
  \newcommand{\MyDocdate}{\transdate}
212
  \newcommand{\DocNoTitle}{\DelorderNumber}
213
  \newcommand{\docnumber}{\donumber}
214
  \renewcommand{\deliverydate}{\transdate}
215
  % 2. Documentnummer
216
    \ifthenelse{\equal{\ordnumber}{\leer}}{
217
    % wenn keine Auftragsnummer -> Angebotsnummer
218
      \newcommand{\SecNoTitle}{\QuotationNumber}
219
      \newcommand{\secnumber}{\quonumber}
220
    }{
221
      \newcommand{\SecNoTitle}{\OrderNumber}
222
      \newcommand{\secnumber}{\ordnumber}
223
    }
224
}{}
225
\IfStrEq{\docname}{invoice}{
226
  % Rechnung
227
  \newcommand{\doctype}{\TitleInv}
228
  \newcommand{\MyDocdate}{\invdate}
229
  \newcommand{\DocNoTitle}{\InvNumber}
230
  \newcommand{\docnumber}{\invnumber}
231
  % 2. Documentnummer
232
    \ifthenelse{\equal{\ordnumber}{\leer}}{
233
    % wenn keine Auftragsnummer -> Angebotsnummer
234
      \newcommand{\SecNoTitle}{\QuotationNumber}
235
      \newcommand{\secnumber}{\quonumber}
236
    }{
237
      \newcommand{\SecNoTitle}{\OrderNumber}
238
      \newcommand{\secnumber}{\ordnumber}
239
    }
240
}{}
241
\IfStrEq{\docname}{proforma}{
242
  \newcommand{\doctype}{\TitleProforma}
243
  \newcommand{\MyDocdate}{\invdate}
244
  \newcommand{\DocNoTitle}{\InvNumber}
245
  \newcommand{\docnumber}{\invnumber}
246
  % 2. Documentnummer
247
    \ifthenelse{\equal{\ordnumber}{\leer}}{
248
    % wenn keine Auftragsnummer -> Angebotsnummer
249
      \newcommand{\SecNoTitle}{\QuotationNumber}
250
      \newcommand{\secnumber}{\quonumber}
251
    }{
252
      \newcommand{\SecNoTitle}{\OrderNumber}
253
      \newcommand{\secnumber}{\ordnumber}
254
    }
255
}{}
256
\IfStrEq{\docname}{purchase_order}{
257
  \renewcommand{\PurchaseOrder}{1}
258
  \newcommand{\doctype}{\TitlePurchaseOrder}
259
  \newcommand{\MyDocdate}{\orddate}
260
  \newcommand{\DocNoTitle}{\RequestOrderNumber}
261
  \newcommand{\docnumber}{\ordnumber}
262
  \renewcommand{\deliverydate}{\reqdate}
263
  \renewcommand{\DelDate}{\ReqByTitle}
264
  \renewcommand{\CustomerID}{\VendorID}
265
  \renewcommand{\kundennummer}{\vendornumber}
266
  \newcommand{\SecNoTitle}{}
267
  \newcommand{\secnumber}{}
268
}{}
269
\IfStrEq{\docname}{credit_note}{
270
  \newcommand{\doctype}{\TitleCreditNote}
271
  \newcommand{\MyDocdate}{\invdate}
272
  \newcommand{\DocNoTitle}{\CredNumber}
273
  \newcommand{\docnumber}{\invnumber}
274
  % keine 2. Documentnummer
275
    \newcommand{\SecNoTitle}{}
276
    \newcommand{\secnumber}{}
277
}{}
278
\IfStrEq{\docname}{sales_order}{
279
  % Auftragsbestaetigung
280
  \newcommand{\doctype}{\TitleSalesOrder}
281
  \newcommand{\MyDocdate}{\orddate}
282
  \renewcommand{\deliverydate}{\reqdate}
283
  \newcommand{\DocNoTitle}{\OrderNumber}
284
  \newcommand{\docnumber}{\ordnumber}
285
  % 2. Documentnummer
286
    \ifthenelse{\equal{\ordnumber}{\leer}}{
287
    % wenn keine Angebotsnummer -> leer
288
      \newcommand{\SecNoTitle}{}
289
      \newcommand{\secnumber}{}
290
    }{
291
      \newcommand{\SecNoTitle}{\QuotationNumber}
292
      \newcommand{\secnumber}{\quonumber}
293
    }
294
}{ }
295
\IfStrEq{\docname}{sales_quotation}{
296
  % Angebot
297
  \newcommand{\doctype}{\TitleSalesQuotation}
298
  \newcommand{\MyDocdate}{\quodate}
299
  \renewcommand{\DelDate}{\ValidUntil}
300
  \renewcommand{\deliverydate}{\reqdate}
301
  \newcommand{\DocNoTitle}{\QuotationNumber}
302
  \newcommand{\docnumber}{\quonumber}
303
  % 2. Documentnummer
304
    \newcommand{\SecNoTitle}{}
305
    \newcommand{\secnumber}{}
306
}{ }
307

  
308

  
309

  
310
% ==== \paid auf 0.00 falls leer
311
\IfSubStr{\paid}{\DecimalSign}{}{\renewcommand{\paid}{0{\DecimalSign}00}}
312

  
313

  
314

  
315
\setkomavar{date}{}
316

  
317

  
318
\begin{letter}{{\ifthenelse{\isnamedefined{MyAdressfield}}{\MyAdressfield
319
  }{\MyAdress
320
  }}
321
}
322
\opening{}
323

  
324
%========Datum und Nummern====================================================
325

  
326
\newcommand{\DocId}{
327
  \begin{tabular*}{\textwidth+1em }{@{\extracolsep{\fill}}llllr}
328
    \MakeUppercase{\tiny \DocNoTitle} &
329
    \MakeUppercase{\tiny \CustomerID} &
330
    \MakeUppercase{\tiny \SecNoTitle } &
331
    \MakeUppercase{\tiny \DelDate }   &
332
    \MakeUppercase{\tiny \Date}~\\
333
    \mainfont\docnumber      &
334
    \mainfont\kundennummer   &
335
    \mainfont\secnumber   &
336
    \mainfont\deliverydate  &
337
    \mainfont\MyDocdate~\\
338
\end{tabular*}  ~\\
339
}
340

  
341
\hspace{-0.5em} \DocId
342

  
343

  
344

  
345

  
346
\nexthead{
347
  \ifthenelse{\bgPdfFirstPageOnly = 1 }{
348
    \hspace{-4mm}  \DocId
349
  }{}
350
}
351
\vspace{ 5mm}
352

  
353
{\noindent\textbf\doctype}~\\
354
\IfEndWith{\paymenttype}{\paymentPrivatEnd}{\PriceInclTax }{ }
355

  
356

  
357
%======Die eigentliche-Tabelle========================================
358

  
359
% temporaere Datei mit Tabelle anlegen
360
\begin{filecontents}{<%template_meta.tmpfile NOESCAPE%>.table.tex}
361
\mainfont
362
\resetlaufsumme
363

  
364

  
365

  
366
  \ifthenelse{\NoValue > 0 }
367
  { % Tabelle ohne Preisen
368
    \ifthenelse{\Picklist = 1 }{
369

  
370
    \begin{longtable}{@{}rlX@{ }rlrrrl@{}}
371
     }{
372
    \begin{longtable}{@{}rlX@{ }rlrr@{}}
373

  
374
     }
375
      % Kopfzeile der Tabelle
376

  
377
        {\Pos} &
378
        {\Number} &
379
        {\ItemNo} &
380
        {\Count} &
381
        {\Unit} \hspace{2mm}
382
        \ifthenelse{\Picklist = 1 }{& {\Take} & {\Storage} }{}
383
        ~\\
384
        \midrule
385
      \endfirsthead
386

  
387
      % Tabellenkopf nach dem Umbruch
388
        {\Pos} &
389
        {\Number} &
390
        {\ItemNo} &
391
        {\Count} &
392
        {\Unit} \hspace{2mm}
393
        \ifthenelse{\Picklist = 1 }{& {\Take} & {\Storage} }{}
394
        ~\\
395

  
396
        \midrule
397
      \endhead
398

  
399
      <%foreach number%>
400
        <%runningnumber%>                        % Laufende Positionsnummer
401
        &
402
        <%number%>                               % Artikelnummer
403
        &
404
        <%description%>                           % Kurzbeschreibung des Artikels
405
        \ifthenelse{\equal{<%longdescription%>}{\leer}}{}{ \newline <%longdescription%>}
406
        % Ein zeilenweises Auslieferdatum, wenn es gesetzt bei der Position hinterlegt ist.
407
        \ifthenelse{\equal{<%deliverydate_oe%>}{\leer}}{}{
408
                \newline \DelDate:~<%deliverydate_oe%>}
409
        &
410
        <%qty NOFORMAT%>                 % Menge
411
        &
412
        <%unit%>               % Einheit
413
        %\ifthenelse{\Picklist = 1 }{& {x} & {x} }{}
414
        %\ifthenelse{\Picklist = 1 }{& {x} & {x} \hhline{~~~~~--} }{~\\}
415
        \ifthenelse{\Picklist = 1 }{& {\underline{;~~~~~~~~~}} & {\underline{;~~~~~~~~~}}~\\ }{~\\}
416
        %~\\ %
417
      <%end number%>
418
    \end{longtable}     % Ende der zentralen Tabelle
419
  }{ % Tabelle mit Preisen
420
    \begin{longtable}{@{}rlX@{ }rlrrr@{}}
421
      % Kopfzeile der Tabelle
422

  
423
        {\Pos} &
424
        {\Number} &
425
        {\ItemNo} &
426
        {\Count} &
427
        {\Unit} &
428
        {\Fee} &
429
        {\Dis} &
430
        {\Total} \hspace{2mm} ~\\
431
        \midrule
432
      \endfirsthead
433

  
434
      % Tabellenkopf nach dem Umbruch
435
        {\Pos} &
436
        {\Number} &
437
        {\ItemNo} &
438
        {\Count} &
439
        {\Unit} &
440
        {\Fee} &
441
        {\Dis} &
442
        {\Total} \hspace{2mm} ~\\
443
        \midrule
444
        \multicolumn{7}{r}{ \rule{0mm}{5mm} \TabCarry{:} \MarkZwsumPos}
445
      \endhead
446

  
447

  
448
      % Fuss der Teiltabellen
449
        \multicolumn{7}{r}{ \rule{0mm}{5mm} \TabSubTotal{:} \MarkZwsumPos } ~\\
450
      \endfoot
451

  
452
      % Das Ende der Tabelle
453
        \midrule
454
        \multicolumn{7}{r}{ \rule{0mm}{5mm} \TabSubTotal{:} \MarkZwsumPos} ~\\
455
      \endlastfoot
456

  
457
      <%foreach number%>
458
        <%runningnumber%>                        % Laufende Positionsnummer
459
        &
460
        <%number%>                               % Artikelnummer
461
        &
462
        <%description%>                           % Kurzbeschreibung des Artikels
463
        \ifthenelse{\equal{<%longdescription%>}{\leer}}{}{ \newline <%longdescription%>}
464
        % Ein zeilenweises Auslieferdatum, wenn es gesetzt ist.
465
        \ifthenelse{\equal{<%reqdate%>}{\leer}}{}{
466
                \newline \DelDate:~<%reqdate%>}
467
        &
468
        <%qty NOFORMAT%>         % Menge
469
        &
... Dieser Diff wurde abgeschnitten, weil er die maximale Anzahl anzuzeigender Zeilen überschreitet.

Auch abrufbar als: Unified diff