<?php

/* Definition des eigenen Pfads zum Mpdf */
DEFINE(_MPDF_PATH, DATEIPFAD . 'includes/libraries/mpdf/');

include_once(DATEIPFAD . 'includes/libraries/mpdf/mpdf.php');

DEFINE("PDF_TEMPLATE_RECHNUNG", 1);
DEFINE("PDF_TEMPLATE_MAHNUNG", 2);
DEFINE("PDF_TEMPLATE_ANGEBOT", 3);
DEFINE("PDF_TEMPLATE_GUTSCHRIFT", 4);
DEFINE("PDF_TEMPLATE_STORNO", 5);
DEFINE("PDF_TEMPLATE_LIEFERSCHEIN", 6);
DEFINE("PDF_TEMPLATE_LIEFERANT", 7);

function createPDFDokument($BestellObject, $ShopeinstellungObject, $TemplateType, $Einstellungen = "") {
    
    global $a_re_rechnung, $a_re_rechnungsdatum, $a_re_rechnungsnummer, $a_re_auftragsnummer, $a_re_kundenummer, $a_re_lieferanschrift;
    global $a_li_lieferschein, $a_li_lieferscheindatum, $a_li_lieferscheinnummer, $a_li_auftragsnummer, $a_li_kundenummer;
    global $a_st_stornierung, $a_st_stornierdatum, $a_st_rechnungsnummer, $a_st_auftragsnummer, $a_st_kundenummer;
    global $a_ma_zahlungserinnerung, $a_ma_mahnung;
    global $a_dok_telefon, $a_dok_telefax, $a_dok_email, $a_dok_url, $lang_handelsregister;
    global $a_an_angebot, $a_an_angebotsdatum, $a_an_angebotsnummer, $a_an_gueltigbisdatum;
    global $a_be_bestellung, $a_be_bestelldatum, $a_be_bestellnummer, $a_be_kundenummer, $a_ustid;
    global $a_dok_artikelnummer, $a_dok_artikel, $a_dok_menge, $a_dok_mwst, $a_dok_preis, $a_dok_gesamt;
    global $a_dok_zahlungsart, $a_dok_faelligam, $a_dok_bezahlt, $lang_leistungsdatum;
    global $c_versandart, $l_zahlung, $a_startguthaben, $lang_kleinunternehmen;
    global $a_dok_kundenbemerkung, $a_dok_shopbetreiberbemerkung, $c_bestelluebersicht_speditionskosten;
    global $a_dok_bankverbindung, $a_dok_blz, $a_dok_kontonummer, $a_dok_steuernummer, $a_dok_ustid, $lang_handelsregister, $a_ueberfaelligSeit;
    
    $Values = $BestellObject;
    $UebergabeEinstellungen = $Einstellungen;

    
    // Sollte geändert und in der Bestelltabelle gepeichert werden

    $KundenObject = GetKundenDetail("",$BestellObject->kunden_id);
    $Values->ustid = $KundenObject->ust;
    // Ende "sollte in die Bestelltabelle gespeichert werden

    
    
    if($TemplateType === PDF_TEMPLATE_RECHNUNG) {
        // Bestellung einlesen für Plugin
        $WaehrungObject = GetWaehrungDetail();
        if($BestellObject->zahlungsschnittstelle_id && ($paymentInterface = getPaymentInterface($Values->zahlungsschnittstelle_id, 'de_DE'))) {
            if($paymentInterface->getPluginCaps('createInvoice')) {
                $paymentInterface->validateAndSetPaymentChoice(LoadPaymentInterfaceBestellParams($Values->id));
                $orderObject = createPaymentInterfaceOrderFromBestellObject($BestellObject, $WaehrungObject, $KundenObject);
                return $paymentInterface->createInvoicePDF(DATEIPFAD . "admin/data/pdf/" . $Values->rechnungsnummer . "_rechnung.pdf", $orderObject, $Values->zahlungsschnittstelle_freiesfeld);
            }
        }
    }

    
    // Fälligkeitsdatum formatieren
    if ($BestellObject->faelligkeitsdatum == 0) {
        $Values->faelligkeitsformat = $a_dok_bezahlt;
    } else {
        $Values->faelligkeitsformat = $Values->faelligkeitsdatum_format;
    }
    
    //var_dump($ShopeinstellungObject);

    if($TemplateType === PDF_TEMPLATE_STORNO) {
        $templateContent = file_get_contents(DATEIPFAD . 'includes/pdf/body_storno.phtml');
    } else {
        $templateContent = file_get_contents(DATEIPFAD . 'includes/pdf/body.phtml');    
    }
    ob_start();
    eval('?>' . $templateContent . '<?');
    $html = ob_get_contents();
    ob_end_clean();

    
    // Includen und Parsen des Headers
    $header = file_get_contents(DATEIPFAD . 'includes/pdf/header.phtml');
    ob_start();
    eval('?>' . $header . '<?');
    $headerErgebnis = ob_get_contents();
    ob_end_clean();

    
    // Includen und Parsen des Footers
    $footer = file_get_contents(DATEIPFAD . 'includes/pdf/footer.phtml');
    ob_start();
    eval('?>' . $footer . '<?');
    $footerErgebnis = ob_get_contents();
    ob_end_clean();
    
    
    $HeaderHoehe = 110;
    $HeaderPositionTop = 9;
    $AbstandLinks = 18;
    $AbstandRechts = 18;
    $HoeheFooter = 16;
    
    //$mpdf = new mPDF();
    $mpdf=new mPDF('c','A4','','',$AbstandLinks,$AbstandRechts,$HeaderHoehe,$HoeheFooter,$HeaderPositionTop,9);
    //$mpdf->SetDisplayMode('fullpage');
    

    $mpdf->SetHTMLHeader($headerErgebnis);
    $mpdf->SetHTMLFooter($footerErgebnis);
    
    $stylesheet = file_get_contents(DATEIPFAD . 'includes/pdf/style.css');
    $mpdf->WriteHTML($stylesheet,1);	// The parameter 1 tells that this is css/style only and no body/html/text
    
    $mpdf->WriteHTML($html);
    
    // Datei erstellen
    if($TemplateType === PDF_TEMPLATE_RECHNUNG) {
        $PDFDateiPfad = DATEIPFAD . "admin/data/pdf/" . $Values->rechnungsnummer . "_rechnung.pdf";
    } elseif($TemplateType === PDF_TEMPLATE_MAHNUNG && $Values->mahnung == 1) {
        $PDFDateiPfad = DATEIPFAD . "admin/data/pdf/" . $Values->rechnungsnummer . "_mahnung" . $Values->mahnung . ".pdf";
    } elseif($TemplateType === PDF_TEMPLATE_MAHNUNG && $Values->mahnung == 2) {
        $PDFDateiPfad = DATEIPFAD . "admin/data/pdf/" . $Values->rechnungsnummer . "_mahnung" . $Values->mahnung . ".pdf";
    } elseif($TemplateType === PDF_TEMPLATE_LIEFERSCHEIN) {
        $PDFDateiPfad = DATEIPFAD . "admin/data/pdf/" . $Values->lieferscheinnummer . "_lieferschein.pdf";
    } elseif($TemplateType === PDF_TEMPLATE_GUTSCHRIFT) {
        $PDFDateiPfad = DATEIPFAD . "admin/data/pdf/" . $Values->gutschriftnummer . "_gutschrift.pdf";
    } elseif($TemplateType === PDF_TEMPLATE_ANGEBOT) {
        $PDFDateiPfad = DATEIPFAD . "admin/data/pdf/" . $Values->rechnungsnummer . "_angebot.pdf";
    } elseif($TemplateType === PDF_TEMPLATE_STORNO) {
        $PDFDateiPfad = DATEIPFAD . "admin/data/pdf/" . $Values->rechnungsnummer . "_stornierung.pdf";
    } elseif($TemplateType === PDF_TEMPLATE_LIEFERANT) {
        $PDFDateiPfad = DATEIPFAD . "admin/data/pdf/" . $Values->bestellnummer . "_bestellung.pdf";
    } 
    
    
    

//    $FileHandel = fopen($PDFDateiPfad, "a");
//    fclose($FileHandel);

    //$mpdf->Output($BestellObject->rechnungsnummer . '_rechnung.pdf', 'D');
    
    $mpdf->Output($PDFDateiPfad, 'F');
}



function createWiderrufPDF($ShopeinstellungObject) {

    global $a_ustid, $a_dok_telefon, $a_dok_telefax, $a_dok_email, $a_dok_url;
    
    $Values = $ShopeinstellungObject;
    
    $templateContent = file_get_contents(DATEIPFAD . 'includes/pdf/widerruf.phtml');
    ob_start();
    eval('?>' . $templateContent . '<?');
    $html = ob_get_contents();
    ob_end_clean();

    //$mpdf = new mPDF();
    $mpdf=new mPDF('c','A4');
    
    $stylesheet = file_get_contents(DATEIPFAD . 'includes/pdf/style.css');
    $mpdf->WriteHTML($stylesheet,1);	// The parameter 1 tells that this is css/style only and no body/html/text

    $mpdf->WriteHTML($html);

    // Datei erstellen
    $PDFDateiPfad = DATEIPFAD . "data/widerrufsformular.pdf";
    
    $mpdf->Output($PDFDateiPfad, 'F');
}

