Open3A HowTo: PDF anpassen

Aus phynx application framework
Wechseln zu: Navigation, Suche

Erstellen Sie zunächst mit dem Vorlageneditor (ab Version 1.6) im Admin-Bereich Ihrer open3A-Installation eine Vorlage und nehmen Sie die gewünschten Einstellungen vor.

Es wird dann im specifics-Verzeichnis Ihrer Installation eine neue Datei angelegt mit dem Namen Vorlage_VorlageID1.class.php.

Um eigene Anpassungen auf diese Datei anzuwenden, erstellen Sie bitte in diesem Verzeichnis eine neue Datei Namens "Vorlage_VorlageID1M.class.php" und fügen Sie mit einem Texteditor (zum Beispiel PSPad) folgenden Inhalt ein:

<?php
class Vorlage_VorlageID1M extends Vorlage_VorlageID1 implements iVorlage {

	function __construct($S = null){
		parent::__construct($S);

		//Fügen Sie hier Ihre manuellen Anpassungen ein
	}

	function getLabel(){
		return parent::getLabel()." mit manuellen Anpassungen";
	}
}
?>

Sie können die Datei auch herunterladen und entpacken.

An der Stelle, die mit "//Fügen Sie hier Ihre manuellen Anpassungen ein" markiert ist, können Sie Ihre eigenen Befehle angeben, die nachfolgend aufgeführt werden.

Um die Vorlage zu verwenden, wählen Sie bitte in den Stammdaten die Vorlage mit dem Anhang "... mit manuellen Anpassungen" aus.


Beschriftungen

Mit diesen Variablen können Sie die Beschriftungen verändern. Um das Lieferdatum auszublenden, setzen Sie $this->labelLieferdatum = null;

  • $this->labelRechnung = "Rechnung";
  • $this->labelLieferschein = "Lieferschein";
  • $this->labelGutschrift = "Gutschrift";
  • $this->labelAngebot = "Angebot";
  • $this->labelKalkulation = "Kalkulation";
  • $this->labelBestellung = "Bestellung";
  • $this->labelMahnung = "Mahnung";


  • $this->labelTelefon = "Telefon";
  • $this->labelFax = "Fax";
  • $this->labelHandy = "Handy";
  • $this->labelEMail = "E-Mail";
  • $this->labelInternet = "Internet";


  • $this->labelDatum = "Datum";
  • $this->labelLieferdatum = "Lieferdatum";
  • $this->labelUstID = "Ust-IdNr";
  • $this->labelStNr = "Steuernummer";
  • $this->labelKundennummer = "Kundennummer";
  • $this->labelKundeUstID = "Kunden-Ust-IdNr";
  • $this->labelKundeStNr = "Kunden-Steuernummer";


  • $this->labelPosition = "Pos";
  • $this->labelMenge = "Menge";
  • $this->labelEinheit = "Einheit";
  • $this->labelBezeichnung = "Bezeichnung";
  • $this->labelEinzelpreis = "Einzelpreis";
  • $this->labelGesamt = "Gesamt";
  • $this->labelMwSt = "MwSt"; //Ab 1.6
  • $this->labelGesamtNettoPosten = "Gesamt Netto"; //Zeigt immer den Nettopreis an, ab 1.6
  • $this->labelEinzelpreisNetto = "Einzelpreis"; //Zeigt immer den Nettopreis an, ab 1.6
  • $this->labelMwStBetrag = "MwSt"; //Ab 1.6


  • $this->labelGesamtNetto = "Gesamt Netto";
  • $this->labelUmsatzsteuer = "Umsatzsteuer";
  • $this->labelRechnungsbetrag = "Rechnungsbetrag";
  • $this->labelGutschriftsbetrag = "Gutschriftsbetrag";
  • $this->labelGesamtBrutto = "Gesamt Brutto";


  • $this->labelGes = "ges.";
  • $this->labelVK = "VK";
  • $this->labelEK1 = "EK1";
  • $this->labelEK2 = "EK2";
  • $this->labelRabatt = "Rabatt";
  • $this->labelLeasingrate = "Leasingrate";


  • $this->labelAmtsgericht = "Amtsgericht";
  • $this->labelHandelsregister = "Handelsregister Nr.";
  • $this->labelSeite = "Seite";
    Setzen Sie labelSeite auf null, um die Seitenzahl auszublenden
  • $this->labelFortsetzung = "Fortsetzung auf Seite";
  • $this->labelUebertrag = "Übertrag";


  • $this->labelKopie = "Kopie";
  • $this->labelVersandkosten = "Versandkosten";
  • $this->labelTeilrechnungen = "Teilrechnungen"; //ab open3A 1.4a

Eigene Felder auf der Rechnung (ab 1.3)

Sie können bis zu drei eigene Felder auf der Rechnung anzeigen. Setzen Sie dazu einfach in der Vorlage den Namen des Feldes.
Wenn die Vorlage als Standardvorlage in den Stammdaten eingestellt ist, können die Inhalte im Beleg bearbeitet werden.

  • $this->labelCustomField1 = "Feld 1";
  • $this->labelCustomField2 = "Feld 2";
  • $this->labelCustomField3 = "Feld 3";

Textausrichtung

Mit diesen Variablen bestimmen Sie die Ausrichtung des Textes in den entsprechenden Spalten. Gültige Werte sind L, R, C

  • $this->alignMenge = "R";
  • $this->alignDetailsAdresse = "R"; (ab 1.6)
  • $this->alignDetails = "R"; (ab 1.6)

Positionen, Breiten und Höhen

Alle Angaben für Positionen und Breiten müssen in Millimetern sein.
Bei Positionen wird vom linken oberen Eck der Seite gerechnet
Setzen Sie die Position auf null, um den entsprechenden Block auszublenden.
Die erste Angabe bei einem array() ist immer der Rechtswert, die zweite Angabe der Hochwert.

  • $this->widthDetails = 60;
    Die Rechnungsinformationen (Rechnungsnummer, Kundennummer, Datum usw.)
  • $this->widthDetailsLabel = 30;
  • $this->widthRechnungsInfo = 60;


  • $this->positionAbsenderZeile = array(20, 50);
    Die Absender-Zeile über der Empfängeradresse
  • $this->positionAbsenderZeileLinie = array(20, 54);
  • $this->positionEmpfaengerAdresse = array(20, 55);
    Die Empfängeradresse
  • $this->positionDetailsAdresse = array(140, 30);
    Die Firmenadresse rechts oben
  • $this->positionDetails = array(130, 40);
    Die Details zur Firma wie Adresse, Telefon usw
  • $this->positionRechnungsInfo = array(130, 59);
  • $this->positionRechnungsInfo2teSeite = array(130, 30);
  • $this->positionPosten2teSeite = array(20, 60); (ab 1.1a, bis 1.4a (20, 50))
  • $this->positionTextbausteinOben = array(20, 95);
  • $this->positionFirmaSchriftzug = array(20, 12);
  • $this->positionKopieLabel = array(90, 59);
  • $this->positionKopieLabel2teSeite = array(90, 30);
  • $this->positionFooter = array(20, 275);
  • $this->positionPreis = "end"; //OR start
    Die Position des Artikelpreises innerhalb der Postenliste


  • $this->heightPositionenBeschreibung = 3;
    Die Höhe der einzelnen Zeilen innerhalb der Postenbeschreibung

Spalten

Angaben für die Spaltenbreite in Millimetern.
Setzen Sie eine Spalte gleich null, um sie auszublenden.
Die Spalten EK1, E2 und VK gibt es nur in der Kalkulation.
Die Gesamtseitenbreite ist 210mm - 40mm (Ränder) = 170mm.

  • $this->widthPosition = null;
  • $this->widthMenge = 19;
  • $this->widthEinheit = 28;
  • $this->widthBezeichnung = 55;
  • $this->widthEinzelpreis = 35;
  • $this->widthGesamt = 33;
  • $this->widthEK1 = 35;
  • $this->widthEK2 = 30;
  • $this->widthVK = 31;
  • $this->widthArtikelnummer = null;
  • $this->widthMwSt = null; //Ab 1.6
  • $this->widthRabatt = null; //Funktioniert nur mit dem Rabatt-Customizer
  • $this->widthRabattpreis = null; //Funktioniert nur mit dem Rabatt-Customizer
  • $this->widthGesamtNettoPosten = null; //Ab 1.6
  • $this->widthMwStBetrag = null; //Ab 1.6
  • $this->widthEinzelpreisNetto = null; //Ab 1.6

Mit der folgenden Variable kann die Reihenfolge der Preis-Spalten angepasst werden (ab 1.6):

$this->orderColsPrice = array(
  "Einzelpreis",
  "EinzelpreisNetto",
  "Rabatt",
  "Rabattpreis",
  "GesamtNettoPosten",
  "MwStBetrag",
  "Gesamt",
  "MwSt"
);

Summe

Einstellungen für den Summenbereich der Rechnung.
Sie können grundsätzlich wählen zwischen einer horizontalen (horizontal) und einer vertikalen (vertical) Darstellung.
In der vertikalen Ansicht verändern Sie die Position und Breite nur mit sumBetragPosition und sumBetragWidth.
Die anderen Position- und Width-Variablen sind dann ungültig.

  • $this->sumHideOn = array("L"); //(ab 1.6) mögliche Werte; G, R, L, A, B
  • $this->sumAlignment = "horizontal";
  • $this->sumShowGesamtNetto = true;
  • $this->sumShowUmsatzsteuer = true;
  • $this->sumShowBetrag = true;
  • $this->sumGesamtNettoPosition = 72;
  • $this->sumUmsatzsteuerPosition = 122;
  • $this->sumBetragPosition = 157;
  • $this->sumGesamtNettoWidth = 50;
  • $this->sumUmsatzsteuerWidth = 35;
  • $this->sumBetragWidth = 33;

Schriften

Sie können die Schriftarten Arial, Helvetica und Times verwenden.
Wie Sie weitere Schriftarten erzeugen, finden Sie auf FPDF.de.
Auf dieser Seite können Sie eine TTF-Schriftart ins FPDF-Format konvertieren: http://fpdf.fruit-lab.de/

Achtung: Es darf kein Leerzeichen zwischen den Anführungszeichen an der zweiten Position stehen.
Dies muss nur hier im wiki so eingetragen werden, da der Text sonst kursiv dargestellt wird.

  • $this->fontAbsenderZeile = array('Arial', ' ', 8);
  • $this->fontDetails = array('Arial', ' ', 8);
  • $this->fontRechnungsInfo = array('Arial', ' ' , 9);
  • $this->fontKopieLabel = array('Arial', 'B', 24);
  • $this->fontPositionen = array('Arial', ' ', 9);
  • $this->fontPositionenHeader = array('Arial', 'BI', 9);
  • $this->fontPositionenBeschreibung = array('Arial', ' ', 7);
  • $this->fontPositionenArtikelname = array('Arial', 'B', 9); //Ab open3A 1.4
  • $this->fontFooter = array('Arial', ' ', 8);
  • $this->fontEmpfaengerAdresse = array('Arial', ' ', 11);
  • $this->fontFirmaSchriftzug = array('Arial', 'B', 28);
  • $this->fontTextbausteine = array('Arial',' ',10);
  • $this->fontSumHeaders = array('Arial', 'B', 9); //Ab open3A 1.4
  • $this->fontSumNetto = array('Arial', ' ', 9); //Ab open3A 1.4
  • $this->fontSumUmsatzsteuer = array('Arial', ' ', 9); //Ab open3A 1.4
  • $this->fontSumBetrag = array('Arial', 'B', 9); //Ab open3A 1.4

Eine neue Schriftart einfügen (ab 1.4)

Bitte erstellen Sie zunächst die Schriftartdateien mit http://fpdf.fruit-lab.de/ aus einer TTF-Schriftart.
Kopieren Sie anschließend die Dateien mit der Endung .php und .z nach libraries/fpdf/font und benennen Sie sie nicht um.

Fügen Sie in Ihrer Vorlage die folgenden Zeilen vor parent::__construct($S); ein:

#Für normalen Schrittyp:
$this->AddFont('Syntax',' ','lte50617.php');

#Für fetten Schrifttyp:
$this->AddFont('Syntax','B','lte50619B.php');

#Für kursiven Schrifttyp:
$this->AddFont('Syntax','I','lte50619I.php');

#Für fetten und kursiven Schrifttyp:
$this->AddFont('Syntax','BI','lte50619BI.php');

Sie können jetzt die Schriftart Syntax verwenden:

$this->fontPositionen = array('Syntax', ' ', 10);

Footer

Formatiert den unteren Bereich des Briefes.
Die Angaben sind in Millimeter

  • $this->footerShowLine = true;
  • $this->footerAmtsgerichtPosition = 110;
  • $this->footerDetailsPosition = 20;
  • $this->footerSeitePosition = 175;

Absender-Zeile

Das Zeichen, das verwendet wird, um die Adressangaben zu trennen

  • $this->absenderZeileTrennzeichen = ",";

Sprache

Folgende Einstellung regelt die Formatierung der Beträge.
Sicher implementiert sind de_DE, de_CH, de_CH_CHF (ab 1.7), en_GB und en_US sowie en_NO (ab 1.6).
Wenn eine Sprache nicht vorhanden ist, wird auf de_DE ausgewichen.

  • $this->language = "de_DE";

Falzmarken

Sollen die Falzmarken bei 105, 148 und 192 (210 ab 1.5) Millimetern angezeigt werden?

  • $this->showFalzmarken = true;

Anrede

Auf true setzen, um in der Empfängeradresse eine Anrede mit anzuzeigen (Herr, Frau, Familie)

  • $this->showAnredeInEmpfaenger = false;

Seitenränder

Ab open3A 1.3

In der Vorlage können folgende Werte gesetzt werden:

  • $this->marginLeft = 20;
  • $this->marginTop = 20;
  • $this->marginRight = 20;
  • $this->marginBottom = 40;

Bis open3A 1.2

Fügen Sie diesen Befehl NACH parent::__construct($S); ein, um die Seitenränder (links, rechts, oben) anzugeben:

  • $this->setMargins(20, 20);

Verschlüsselung

Fügen Sie diesen Befehl NACH parent::__construct($S); ein, um die PDF-Verschlüsselung zu de-/aktivieren:

  • $this->encrypted = false;

Bruttopreise

Sollen in der Postenliste nur Brutto und keine Nettopreise erscheinen, geben Sie true an.

  • $this->showBruttoPreise = false;

Wenn Sie das Brutto-Plugin installiert haben, fügen Sie diese Zeile bitte nach parent::__construct($S); ein.

0,00€-Beträge ausblenden (ab 1.1a)

  • $this->showNullPreise = true;

0%-Mehrwertsteuer einblenden (ab 1.4)

  • $this->show0ProzentMwSt = false;

Zweite Bankverbindung

Erweitern Sie Ihre Vorlage um folgende Funktion und ersetzen Sie Bank, BLZ, Kontonummer mit Ihren Bankdaten.

Mit $this->SetXY(42, 290); setzen Sie die Position von der linken oberen Ecke.

function Footer(){
    parent::Footer();   
    $this->SetXY(42, 290);
    $this->SetFont($this->fontFooter[0], $this->fontFooter[1], $this->fontFooter[2]);
    $this->MultiCell8(180, 4, "Bank, BLZ, Kontonummer"); 
}

Seitenumbruch (ab 1.2)

Fügen Sie diesen Befehl NACH parent::__construct($S); ein, um den Seitenumbruch anzugeben:

$this->SetAutoPageBreak(true, 20);

In diesem Fall würde 20 Millimeter vor dem Ende der Seite umgebrochen.
20 Millimeter entspricht der Standardeinstellung.

Keine Summenberechnung im Angebot

Bitte fügen Sie folgende Zeilen UNTERHALB der function __construct($S = null){} ein

function printGesamt($type){
	if($type == "A") return;
	parent::printGesamt($type);
}

Anzahl der Nachkommastellen im Posten (ab 1.3)

Stellen Sie folgenden Wert auf 2 oder 3, um die Anzahl der Nachkommastellen im Posten zu verändern

  • $this->showDezimalstellen = null;

Beispiel

Es folgt eine Vorlage, in der die Positionenspalte eingeblendet und die Einheit-Spalte ausgeblendet wird.
Außerdem wurden die Bezeichnungen der Belege ins englische übersetzt.

class Vorlage_20082008_170621 extends Vorlage_any implements iVorlage {
   
   function __construct($S = null){
      
      //eigene Anweisungen hier einfügen
      $this->widthPosition = 19;
      $this->widthEinheit = null;
      
      $this->labelRechnung = "Invoice";
      $this->labelGutschrift = "Credit memo";
      $this->labelAngebot = "Quotation";
      $this->labelLieferschein = "Shipping invoice";
      $this->labelKalkulation = "Calculation";
      
      parent::__construct($S);
   }
   
   function getLabel(){
      return "Testvorlage";
   }
   
   function Header(){
      $this->Image("../specifics/FHSL.jpg",165,5,23);
      parent::Header();
   }

}