Exemple #1
0
 function b_header(Cezpdf &$pdf, $partner_typ, $partner_id, $orientation = 'portrait', $font_file, $f_size, $logo_file = '')
 {
     $diff = array(196 => 'Adieresis', 228 => 'adieresis', 214 => 'Odieresis', 246 => 'odieresis', 220 => 'Udieresis', 252 => 'udieresis', 223 => 'germandbls');
     $pdf->selectFont('Helvetica', array('encoding' => 'WinAnsiEncoding', 'differences' => $diff));
     $all = $pdf->openObject();
     $pdf->saveState();
     $pdf->setStrokeColor(0, 0, 0, 1);
     if ($orientation == 'portrait') {
         $pdf->ezSetMargins(135, 70, 50, 50);
         if (!isset($_REQUEST['no_logo'])) {
             if ($logo_file == '') {
                 $logo_file = BERLUS_PATH . "/print_css/{$partner_typ}/{$partner_id}" . "_logo.png";
             }
             if (file_exists("{$logo_file}")) {
                 $pdf->addPngFromFile("{$logo_file}", 200, 730, 200, 80);
                 $pdf->line(43, 725, 545, 725);
                 $pdf->line(42, 50, 550, 50);
             }
         } else {
             $logo_file = BERLUS_PATH . "/print_css/{$partner_typ}/{$partner_id}" . "_logo.png";
         }
         $pdf->setLineStyle(0.5);
         $this->footer_info($partner_typ, $partner_id);
         $pdf->addText(43, 718, $f_size, "{$this->header_zeile}");
         $pdf->ezStartPageNumbers(545, 715, $f_size, '', 'Seite {PAGENUM} von {TOTALPAGENUM}', 1);
         $pdf->setLineStyle(0.5);
         if (!isset($_REQUEST['no_logo'])) {
             $pdf->addText($pdf->ez['pageWidth'] / 2, 42, $f_size, "{$this->zeile1}", 0, 'center');
             $pdf->addText($pdf->ez['pageWidth'] / 2, 35, $f_size, "{$this->zeile2}", 0, 'center');
         }
     } else {
         $pdf->ezSetMargins(120, 40, 30, 30);
         $logo_file = BERLUS_PATH . "/print_css/{$partner_typ}/{$partner_id}" . "_logo.png";
         if (file_exists("{$logo_file}")) {
             $pdf->addPngFromFile("{$logo_file}", 320, 505, 200, 80);
         } else {
             $pdf->addText(370, 505, $f_size, "Vorschau / Druckansicht ");
         }
         $pdf->setLineStyle(0.5);
         $this->footer_info($partner_typ, $partner_id);
         $pdf->line(43, 500, 785, 500);
         $pdf->addText(43, 493, $f_size, "{$this->header_zeile}");
         $pdf->ezStartPageNumbers(783, 493, $f_size, '', 'Seite {PAGENUM} von {TOTALPAGENUM}', 1);
         $pdf->setLineStyle(0.5);
         $pdf->line(42, 30, 785, 30);
         $pdf->addText($pdf->ez['pageWidth'] / 2, 23, $f_size, "{$this->zeile1}", 0, 'center');
         $pdf->addText($pdf->ez['pageWidth'] / 2, 16, $f_size, "{$this->zeile2}", 0, 'center');
     }
     $pdf->restoreState();
     $pdf->closeObject();
     $pdf->addObject($all, 'all');
 }
 function pdf_header($partner_id)
 {
     $pdf = new Cezpdf('a4', 'portrait');
     $pdf->ezSetCmMargins(4.5, 1, 1, 1);
     $berlus_schrift = 'pdfclass/fonts/Times-Roman.afm';
     $text_schrift = 'pdfclass/fonts/Arial.afm';
     $pdf->addJpegFromFile('includes/logos/logo_hv_sw.jpg', 220, 750, 175, 100);
     // $pdf->addJpgFromFile('pdfclass/logo_262_150_sw1.jpg', 300, 500, 250, 150);
     $pdf->setLineStyle(0.5);
     $pdf->selectFont($berlus_schrift);
     $pdf->addText(42, 743, 6, "BERLUS HAUSVERWALTUNG - Fontanestr. 1 - 14193 Berlin");
     $pdf->line(42, 750, 550, 750);
     $pdf->selectFont($berlus_schrift);
     $pdf->ezSetCmMargins(1, 1, 1, 1);
     $pdf->setLineStyle(0.5);
     $pdf->line(42, 50, 550, 50);
     $pdf->addText(170, 42, 6, "BERLUS HAUSVERWALTUNG |  Fontanestr. 1 | 14193 Berlin | Inhaber Wolfgang Wehrheim");
     $pdf->addText(150, 35, 6, "Bankverbindung: Dresdner Bank Berlin | BLZ: 100  800  00 | Konto-Nr.: 05 804 000 00 | Steuernummer: 24/582/61188");
     return $pdf;
 }
 function termine_anzeigen_pdf($benutzer_id, $plan_id, $ab, $bis)
 {
     $termine_arr = $this->terminkalender_arr($benutzer_id, $plan_id, $ab, $bis);
     $anz = count($termine_arr);
     if ($anz) {
         ob_clean();
         // ausgabepuffer leeren
         $ab_a = date_mysql2german($ab);
         $bis_a = date_mysql2german($bis);
         $z = new zeiterfassung();
         $this->get_wplan_info($plan_id);
         //include_once ('pdfclass/class.ezpdf.php');
         include_once 'classes/class_bpdf.php';
         $pdf = new Cezpdf('a4', 'portrait');
         $bpdf = new b_pdf();
         $pdf->setLineStyle(1);
         if ($benutzer_id != '') {
             $this->bp_partner_id = $z->get_partner_id_benutzer($benutzer_id);
             $bpdf->b_header($pdf, 'Partner', $this->bp_partner_id, 'portrait', 'Helvetica.afm', 6);
         } else {
             $bpdf->b_header($pdf, 'Partner', $_SESSION[partner_id], 'portrait', 'Helvetica.afm', 6);
         }
         $pdf->ezText("{$benutzer_name}", 10);
         $pdf->ezText("{$this->plan_bez}", 10);
         $pdf->ezText("Terminansicht von {$ab_a} bis {$bis_a}", 10);
         $pdf->ezSetDy(-15);
         // abstand
         for ($a = 0; $a < $anz; $a++) {
             $pdf->ezSetDy(-5);
             // abstand
             $pdf->line(50, $pdf->y, 550, $pdf->y);
             $benutzer_id = $termine_arr[$a]['BENUTZER_ID'];
             $benutzer_name = $z->get_benutzer_name($benutzer_id);
             $termin = $termine_arr[$a]['TERMIN'];
             $datum = $termine_arr[$a]['DATUM'];
             $zeit = $termine_arr[$a]['ZEIT'];
             $dauer = $termine_arr[$a]['DAUER'];
             $geraete_id = $termine_arr[$a]['GERAETE_ID'];
             $abgesagt = $termine_arr[$a]['ABGESAGT'];
             $abgesagt_r = $termine_arr[$a]['ABGESAGT_RECHTZEITIG'];
             $abgesagt_von = $termine_arr[$a]['ABGESAGT_VON'];
             if ($abgesagt == 0) {
                 $status = 'aktuell';
             }
             if ($abgesagt == 1) {
                 $status = 'abgesagt';
             }
             $this->geraete_infos($plan_id, $geraete_id);
             $pdf->ezText("Mitarbeiter:  {$benutzer_name}", 8);
             $pdf->ezText("Datum:  {$datum}", 8);
             $pdf->ezText("Uhrzeit: {$zeit} Uhr", 8);
             $pdf->ezText("Status:  {$status} {$abgesagt_von}", 8);
             $pdf->ezSetDy(20);
             // abstand
             $pdf->rectangle(250, $pdf->y, 10, 10);
             $pdf->addText(263, $pdf->y + 2, 8, 'Abgesagt am ______________ von ___________________________________');
             $pdf->ezSetDy(-15);
             // abstand
             $pdf->addText(263, $pdf->y + 2, 8, 'Absagegrund:_____________________________________________________');
             $pdf->ezSetDy(-20);
             // abstand
             $pdf->rectangle(250, $pdf->y, 10, 10);
             $pdf->addText(263, $pdf->y + 2, 8, 'Erledigt');
             $pdf->ezSetDy(-15);
             // abstand
             $pdf->addText(260, $pdf->y + 2, 8, 'Bemerkungen / Hinweise');
             $pdf->rectangle(250, $pdf->y - 107, 300, 107);
             $pdf->ezSetDy(20);
             // abstand
             $pdf->ezText("Kostenträger: {$this->kostentraeger_typ} {$this->kostentraeger_bez}", 8);
             if ($this->kostentraeger_typ == 'Einheit') {
                 $e = new einheit();
                 $e->get_einheit_info($this->kostentraeger_id);
                 $mv_id = $e->get_mietvertrag_id($this->kostentraeger_id);
                 $mv = new mietvertraege();
                 $mv->get_mietvertrag_infos_aktuell($mv_id);
                 $e = new einheit();
                 $e->get_einheit_info($this->kostentraeger_id);
                 $mv_id = $e->get_mietvertrag_id($this->kostentraeger_id);
                 $mv = new mietvertraege();
                 $mv->get_mietvertrag_infos_aktuell($mv_id);
                 $pdf->ezText("Anschrift: {$e->haus_strasse} {$e->haus_nummer} Lage: {$e->einheit_lage}", 8);
                 $pdf->ezText("Mieter: {$mv->personen_name_string}", 8);
             }
             $pdf->ezText("Gerät: {$this->bezeichnung}", 8);
             $pdf->ezText("Hersteller: {$this->hersteller}", 8);
             $pdf->ezText("Im Einsatz: {$this->im_einsatz}", 8);
             if ($this->wartungsdatum) {
                 $this->wartungsdatum_a = date_mysql2german($this->wartungsdatum);
             } else {
                 $this->wartungsdatum_a = 'k. A.';
             }
             $this->n_wartung_a = date_mysql2german($this->n_wartung);
             $pdf->ezText("Wartung fällig: {$this->n_wartung_a}", 8);
             $pdf->ezText("Letzte Wartung: {$this->wartungsdatum_a}  {$this->gewartet_von}", 8);
             if ($this->gewartet_von) {
                 $pdf->ezText("Bemerkungen von {$this->gewartet_von}:", 7);
                 $pdf->ezSetCmMargins(0, 0, 1.78, 12.5);
                 $pdf->ezText("<b>{$this->bemerkung}</b>", 7);
                 $pdf->ezSetMargins(135, 70, 50, 50);
             }
             $pdf->ezSetDy(-40);
             // abstand
             $pdf->ezSetDy(-10);
             // abstand
             $pdf->ezSetDy(-5);
             // abstand
             // $pdf->line(50,$pdf->y,550,$pdf->y);
         }
         ob_clean;
         $pdf->ezStream();
     } else {
         echo "Keine Termine von {$ab} bis {$bis}";
     }
 }
 function get_printable_file($_FORM = array())
 {
     global $TPL;
     $db = new db_alloc();
     $TPL["companyName"] = config::get_config_item("companyName");
     $TPL["companyNos1"] = config::get_config_item("companyACN");
     $TPL["companyNos2"] = config::get_config_item("companyABN");
     $TPL["img"] = config::get_config_item("companyImage");
     $TPL["companyContactAddress"] = config::get_config_item("companyContactAddress");
     $TPL["companyContactAddress2"] = config::get_config_item("companyContactAddress2");
     $TPL["companyContactAddress3"] = config::get_config_item("companyContactAddress3");
     $email = config::get_config_item("companyContactEmail");
     $email and $TPL["companyContactEmail"] = "Email: " . $email;
     $web = config::get_config_item("companyContactHomePage");
     $web and $TPL["companyContactHomePage"] = "Web: " . $web;
     $phone = config::get_config_item("companyContactPhone");
     $fax = config::get_config_item("companyContactFax");
     $phone and $TPL["phone"] = "Ph: " . $phone;
     $fax and $TPL["fax"] = "Fax: " . $fax;
     $taskPriorities = config::get_config_item("taskPriorities");
     $projectPriorities = config::get_config_item("projectPriorities");
     // Add requested fields to pdf
     $_FORM["showEdit"] = false;
     $fields["taskID"] = "ID";
     $fields["taskName"] = "Task";
     $_FORM["showProject"] and $fields["projectName"] = "Project";
     $_FORM["showPriority"] || $_FORM["showPriorityFactor"] and $fields["priorityFactor"] = "Pri";
     $_FORM["showPriority"] and $fields["taskPriority"] = "Task Pri";
     $_FORM["showPriority"] and $fields["projectPriority"] = "Proj Pri";
     $_FORM["showCreator"] and $fields["creator_name"] = "Creator";
     $_FORM["showManager"] and $fields["manager_name"] = "Manager";
     $_FORM["showAssigned"] and $fields["assignee_name"] = "Assigned To";
     $_FORM["showDate1"] and $fields["dateTargetStart"] = "Targ Start";
     $_FORM["showDate2"] and $fields["dateTargetCompletion"] = "Targ Compl";
     $_FORM["showDate3"] and $fields["dateActualStart"] = "Start";
     $_FORM["showDate4"] and $fields["dateActualCompletion"] = "Compl";
     $_FORM["showDate5"] and $fields["dateCreated"] = "Created";
     $_FORM["showTimes"] and $fields["timeBestLabel"] = "Best";
     $_FORM["showTimes"] and $fields["timeExpectedLabel"] = "Likely";
     $_FORM["showTimes"] and $fields["timeWorstLabel"] = "Worst";
     $_FORM["showTimes"] and $fields["timeActualLabel"] = "Actual";
     $_FORM["showTimes"] and $fields["timeLimitLabel"] = "Limit";
     $_FORM["showPercent"] and $fields["percentComplete"] = "%";
     $_FORM["showStatus"] and $fields["taskStatusLabel"] = "Status";
     $rows = task::get_list($_FORM);
     $taskListRows = array();
     foreach ((array) $rows as $row) {
         $row["taskPriority"] = $taskPriorities[$row["priority"]]["label"];
         $row["projectPriority"] = $projectPriorities[$row["projectPriority"]]["label"];
         $row["taskDateStatus"] = strip_tags($row["taskDateStatus"]);
         $row["percentComplete"] = strip_tags($row["percentComplete"]);
         $taskListRows[] = $row;
     }
     if ($_FORM["format"] != "html" && $_FORM["format"] != "html_plus") {
         // Build PDF document
         $font1 = ALLOC_MOD_DIR . "util/fonts/Helvetica.afm";
         $font2 = ALLOC_MOD_DIR . "util/fonts/Helvetica-Oblique.afm";
         $pdf_table_options = array("showLines" => 0, "shaded" => 0, "showHeadings" => 0, "xPos" => "left", "xOrientation" => "right", "fontSize" => 10, "rowGap" => 0, "fontSize" => 10);
         $pdf_table_options3 = array("showLines" => 2, "shaded" => 0, "width" => 750, "xPos" => "center", "fontSize" => 10, "lineCol" => array(0.8, 0.8, 0.8), "splitRows" => 1, "protectRows" => 0);
         $pdf = new Cezpdf(null, 'landscape');
         $pdf->ezSetMargins(40, 40, 40, 40);
         $pdf->selectFont($font1);
         $pdf->ezStartPageNumbers(436, 30, 10, 'center', 'Page {PAGENUM} of {TOTALPAGENUM}');
         $pdf->ezSetY(560);
         $TPL["companyContactAddress"] and $contact_info[] = array($TPL["companyContactAddress"]);
         $TPL["companyContactAddress2"] and $contact_info[] = array($TPL["companyContactAddress2"]);
         $TPL["companyContactAddress3"] and $contact_info[] = array($TPL["companyContactAddress3"]);
         $TPL["companyContactEmail"] and $contact_info[] = array($TPL["companyContactEmail"]);
         $TPL["companyContactHomePage"] and $contact_info[] = array($TPL["companyContactHomePage"]);
         $TPL["phone"] and $contact_info[] = array($TPL["phone"]);
         $TPL["fax"] and $contact_info[] = array($TPL["fax"]);
         $pdf->selectFont($font2);
         $y = $pdf->ezTable($contact_info, false, "", $pdf_table_options);
         $pdf->selectFont($font1);
         $line_y = $y - 10;
         $pdf->setLineStyle(1, "round");
         $pdf->line(40, $line_y, 801, $line_y);
         $pdf->ezSetY(570);
         $image_jpg = ALLOC_LOGO;
         if (file_exists($image_jpg)) {
             $pdf->ezImage($image_jpg, 0, sprintf("%d", config::get_config_item("logoScaleX")), 'none');
             $y = 700;
         } else {
             $y = $pdf->ezText($TPL["companyName"], 27, array("justification" => "right"));
         }
         $nos_y = $line_y + 22;
         $TPL["companyNos2"] and $nos_y = $line_y + 34;
         $pdf->ezSetY($nos_y);
         $TPL["companyNos1"] and $y = $pdf->ezText($TPL["companyNos1"], 10, array("justification" => "right"));
         $TPL["companyNos2"] and $y = $pdf->ezText($TPL["companyNos2"], 10, array("justification" => "right"));
         $pdf->ezSetY($line_y - 10);
         $y = $pdf->ezText("Task List", 20, array("justification" => "center"));
         $pdf->ezSetY($y - 20);
         $y = $pdf->ezTable($taskListRows, $fields, "", $pdf_table_options3);
         $pdf->ezSetY($y - 20);
         $pdf->ezStream();
         // Else HTML format
     } else {
         echo task::get_list_html($taskListRows, $_FORM);
     }
 }
 function get_printable_timeSheet_file($timeSheetID, $timeSheetPrintMode, $printDesc, $format)
 {
     global $TPL;
     $TPL["timeSheetID"] = $timeSheetID;
     $TPL["timeSheetPrintMode"] = $timeSheetPrintMode;
     $TPL["printDesc"] = $printDesc;
     $TPL["format"] = $format;
     $db = new db_alloc();
     if ($timeSheetID) {
         $timeSheet = new timeSheet();
         $timeSheet->set_id($timeSheetID);
         $timeSheet->select();
         $timeSheet->set_tpl_values();
         $person = $timeSheet->get_foreign_object("person");
         $TPL["timeSheet_personName"] = $person->get_name();
         $timeSheet->set_tpl_values("timeSheet_");
         // Display the project name.
         $project = new project();
         $project->set_id($timeSheet->get_value("projectID"));
         $project->select();
         $TPL["timeSheet_projectName"] = $project->get_value("projectName", DST_HTML_DISPLAY);
         // Get client name
         $client = $project->get_foreign_object("client");
         $client->set_tpl_values();
         $TPL["clientName"] = $client->get_value("clientName", DST_HTML_DISPLAY);
         $TPL["companyName"] = config::get_config_item("companyName");
         $TPL["companyNos1"] = config::get_config_item("companyACN");
         $TPL["companyNos2"] = config::get_config_item("companyABN");
         unset($br);
         $phone = config::get_config_item("companyContactPhone");
         $fax = config::get_config_item("companyContactFax");
         $phone and $TPL["phone"] = "Ph: " . $phone;
         $fax and $TPL["fax"] = "Fax: " . $fax;
         $timeSheet->load_pay_info();
         $db->query(prepare("SELECT max(dateTimeSheetItem) AS maxDate\n                                ,min(dateTimeSheetItem) AS minDate\n                                ,count(timeSheetItemID) as count\n                            FROM timeSheetItem \n                           WHERE timeSheetID=%d ", $timeSheetID));
         $db->next_record();
         $timeSheet->set_id($timeSheetID);
         $timeSheet->select() || alloc_error("Unable to select time sheet, trying to use id: " . $timeSheetID);
         $TPL["period"] = format_date(DATE_FORMAT, $db->f("minDate")) . " to " . format_date(DATE_FORMAT, $db->f("maxDate"));
         $TPL["img"] = config::get_config_item("companyImage");
         $TPL["companyContactAddress"] = config::get_config_item("companyContactAddress");
         $TPL["companyContactAddress2"] = config::get_config_item("companyContactAddress2");
         $TPL["companyContactAddress3"] = config::get_config_item("companyContactAddress3");
         $email = config::get_config_item("companyContactEmail");
         $email and $TPL["companyContactEmail"] = "Email: " . $email;
         $web = config::get_config_item("companyContactHomePage");
         $web and $TPL["companyContactHomePage"] = "Web: " . $web;
         $TPL["footer"] = config::get_config_item("timeSheetPrintFooter");
         $TPL["taxName"] = config::get_config_item("taxName");
         $default_header = "Time Sheet";
         $default_id_label = "Time Sheet ID";
         $default_contractor_label = "Contractor";
         $default_total_label = "TOTAL AMOUNT PAYABLE";
         if ($timeSheetPrintMode == "money") {
             $default_header = "Tax Invoice";
             $default_id_label = "Invoice Number";
         }
         if ($timeSheetPrintMode == "estimate") {
             $default_header = "Estimate";
             $default_id_label = "Estimate Number";
             $default_contractor_label = "Issued By";
             $default_total_label = "TOTAL AMOUNT ESTIMATED";
         }
         if ($format != "html") {
             // Build PDF document
             $font1 = ALLOC_MOD_DIR . "util/fonts/Helvetica.afm";
             $font2 = ALLOC_MOD_DIR . "util/fonts/Helvetica-Oblique.afm";
             $pdf_table_options = array("showLines" => 0, "shaded" => 0, "showHeadings" => 0, "xPos" => "left", "xOrientation" => "right", "fontSize" => 10, "rowGap" => 0, "fontSize" => 10);
             $cols = array("one" => "", "two" => "", "three" => "", "four" => "");
             $cols3 = array("one" => "", "two" => "");
             $cols_settings["one"] = array("justification" => "right");
             $cols_settings["three"] = array("justification" => "right");
             $pdf_table_options2 = array("showLines" => 0, "shaded" => 0, "showHeadings" => 0, "width" => 400, "fontSize" => 10, "xPos" => "center", "xOrientation" => "center", "cols" => $cols_settings);
             $cols_settings2["gst"] = array("justification" => "right");
             $cols_settings2["money"] = array("justification" => "right");
             $pdf_table_options3 = array("showLines" => 2, "shaded" => 0, "width" => 400, "xPos" => "center", "fontSize" => 10, "cols" => $cols_settings2, "lineCol" => array(0.8, 0.8, 0.8), "splitRows" => 1, "protectRows" => 0);
             $cols_settings["two"] = array("justification" => "right", "width" => 80);
             $pdf_table_options4 = array("showLines" => 2, "shaded" => 0, "width" => 400, "showHeadings" => 0, "fontSize" => 10, "xPos" => "center", "cols" => $cols_settings, "lineCol" => array(0.8, 0.8, 0.8));
             $pdf = new Cezpdf();
             $pdf->ezSetMargins(90, 90, 90, 90);
             $pdf->selectFont($font1);
             $pdf->ezStartPageNumbers(436, 80, 10, 'right', 'Page {PAGENUM} of {TOTALPAGENUM}');
             $pdf->ezStartPageNumbers(200, 80, 10, 'left', '<b>' . $default_id_label . ': </b>' . $TPL["timeSheetID"]);
             $pdf->ezSetY(775);
             $TPL["companyName"] and $contact_info[] = array($TPL["companyName"]);
             $TPL["companyContactAddress"] and $contact_info[] = array($TPL["companyContactAddress"]);
             $TPL["companyContactAddress2"] and $contact_info[] = array($TPL["companyContactAddress2"]);
             $TPL["companyContactAddress3"] and $contact_info[] = array($TPL["companyContactAddress3"]);
             $TPL["companyContactEmail"] and $contact_info[] = array($TPL["companyContactEmail"]);
             $TPL["companyContactHomePage"] and $contact_info[] = array($TPL["companyContactHomePage"]);
             $TPL["phone"] and $contact_info[] = array($TPL["phone"]);
             $TPL["fax"] and $contact_info[] = array($TPL["fax"]);
             $pdf->selectFont($font2);
             $y = $pdf->ezTable($contact_info, false, "", $pdf_table_options);
             $pdf->selectFont($font1);
             $line_y = $y - 10;
             $pdf->setLineStyle(1, "round");
             $pdf->line(90, $line_y, 510, $line_y);
             $pdf->ezSetY(782);
             $image_jpg = ALLOC_LOGO;
             if (file_exists($image_jpg)) {
                 $pdf->ezImage($image_jpg, 0, sprintf("%d", config::get_config_item("logoScaleX")), 'none');
                 $y = 700;
             } else {
                 $y = $pdf->ezText($TPL["companyName"], 27, array("justification" => "right"));
             }
             $nos_y = $line_y + 22;
             $TPL["companyNos2"] and $nos_y = $line_y + 34;
             $pdf->ezSetY($nos_y);
             $TPL["companyNos1"] and $y = $pdf->ezText($TPL["companyNos1"], 10, array("justification" => "right"));
             $TPL["companyNos2"] and $y = $pdf->ezText($TPL["companyNos2"], 10, array("justification" => "right"));
             $pdf->ezSetY($line_y - 20);
             $y = $pdf->ezText($default_header, 20, array("justification" => "center"));
             $pdf->ezSetY($y - 20);
             $ts_info[] = array("one" => "<b>" . $default_id_label . ":</b>", "two" => $TPL["timeSheetID"], "three" => "<b>Date Issued:</b>", "four" => date("d/m/Y"));
             $ts_info[] = array("one" => "<b>Client:</b>", "two" => $TPL["clientName"], "three" => "<b>Project:</b>", "four" => $TPL["timeSheet_projectName"]);
             $ts_info[] = array("one" => "<b>" . $default_contractor_label . ":</b>", "two" => $TPL["timeSheet_personName"], "three" => "<b>Billing Period:</b>", "four" => $TPL["period"]);
             if ($timeSheetPrintMode == "estimate") {
                 // This line needs to be glued to the above line
                 $temp = array_pop($ts_info);
                 $temp["three"] = "";
                 // Nuke Billing Period for the Estimate version of the pdf.
                 $temp["four"] = "";
                 // Nuke Billing Period for the Estimate version of the pdf.
                 $ts_info[] = $temp;
             }
             $y = $pdf->ezTable($ts_info, $cols, "", $pdf_table_options2);
             $pdf->ezSetY($y - 20);
             if ($timeSheetPrintMode == "money" || $timeSheetPrintMode == "estimate") {
                 list($rows, $info) = $this->get_timeSheetItem_list_money($TPL["timeSheetID"]);
                 $cols2 = array("desc" => "Description", "units" => "Units", "money" => "Charges", "gst" => $TPL["taxName"]);
                 $taxPercent = config::get_config_item("taxPercent");
                 if ($taxPercent === '') {
                     unset($cols2["gst"]);
                 }
                 $rows[] = array("desc" => "<b>TOTAL</b>", "units" => $info["total_units"], "money" => $info["total"], "gst" => $info["total_gst"]);
                 $y = $pdf->ezTable($rows, $cols2, "", $pdf_table_options3);
                 $pdf->ezSetY($y - 20);
                 if ($taxPercent !== '') {
                     $totals[] = array("one" => "TOTAL " . $TPL["taxName"], "two" => $info["total_gst"]);
                 }
                 $totals[] = array("one" => "TOTAL CHARGES", "two" => $info["total"]);
                 $totals[] = array("one" => "<b>" . $default_total_label . "</b>", "two" => "<b>" . $info["total_inc_gst"] . "</b>");
                 $y = $pdf->ezTable($totals, $cols3, "", $pdf_table_options4);
             } else {
                 if ($timeSheetPrintMode == "units") {
                     list($rows, $info) = $this->get_timeSheetItem_list_units($TPL["timeSheetID"]);
                     $cols2 = array("desc" => "Description", "units" => "Units");
                     $rows[] = array("desc" => "<b>TOTAL</b>", "units" => "<b>" . $info["total"] . "</b>");
                     $y = $pdf->ezTable($rows, $cols2, "", $pdf_table_options3);
                 } else {
                     if ($timeSheetPrintMode == "items") {
                         list($rows, $info) = $this->get_timeSheetItem_list_items($TPL["timeSheetID"]);
                         $cols2 = array("date" => "Date", "units" => "Units", "multiplier_string" => "Multiplier", "desc" => "Description");
                         $rows[] = array("date" => "<b>TOTAL</b>", "units" => "<b>" . $info["total"] . "</b>");
                         $y = $pdf->ezTable($rows, $cols2, "", $pdf_table_options3);
                     }
                 }
             }
             $pdf->ezSetY($y - 20);
             $pdf->ezText(str_replace(array("<br>", "<br/>", "<br />"), "\n", $TPL["footer"]), 10);
             $pdf->ezStream(array("Content-Disposition" => "timeSheet_" . $timeSheetID . ".pdf"));
             // Else HTML format
         } else {
             if (file_exists(ALLOC_LOGO)) {
                 $TPL["companyName"] = '<img alt="Company logo" src="' . $TPL["url_alloc_logo"] . '" />';
             }
             $TPL["this_tsp"] = $this;
             $TPL["main_alloc_title"] = "Time Sheet - " . APPLICATION_NAME;
             include_template(dirname(__FILE__) . "/../templates/timeSheetPrintM.tpl");
         }
     }
 }
Exemple #6
0
 function pdf_einzel_tab(Cezpdf &$pdf, $bk_arr, $label, $kontroll_tab_druck)
 {
     $empf = $bk_arr['EMPF'];
     $empf_kos_typ = $bk_arr['KOS_TYP'];
     $empf_kos_id = $bk_arr['KOS_ID'];
     $mieternummer = $bk_arr['EINHEIT_NAME'];
     $zeitraum = $bk_arr['ZEITRAUM'];
     $zeitraum_arr = explode('.', $zeitraum);
     $anzahl_monate = $zeitraum_arr[3] - $zeitraum_arr[1] + 1;
     $pdf->ergebnis_tab["{$mieternummer} - {$empf}"]['KOS_TYP'] = $empf_kos_typ;
     $pdf->ergebnis_tab["{$mieternummer} - {$empf}"]['KOS_ID'] = $empf_kos_id;
     $pdf->ergebnis_tab["{$mieternummer} - {$empf}"]['ZEITRAUM'] = $zeitraum;
     $pdf->ergebnis_tab["{$mieternummer} - {$empf}"]['ANZ_MONATE'] = $anzahl_monate;
     $einheit_typ = $bk_arr['EINHEIT_TYP'];
     $einheit_qm = $bk_arr['EINHEIT_QM'];
     $QM_G_OBJEKT = nummer_punkt2komma($bk_arr['QM_G_OBJEKT']);
     $QM_G = nummer_punkt2komma($bk_arr['QM_G']);
     $QM_G_GEWERBE = nummer_punkt2komma($bk_arr['QM_G_GEWERBE']);
     $this->bk_profil_infos($_SESSION['profil_id']);
     $anzahl_zeilen = count($bk_arr) - 10;
     // WICHTIG 10 felder abschneiden
     $cols = array('KOSTENART' => "Betriebskostenart", 'G_BETRAG' => "Gesamtkosten umlagefähige Betriebskosten", 'G_HNDL' => "Gesamtkosten haushaltsnahe Dienst- und Handwerkerleistungen", 'G_KEY' => "Wohnfläche / Verteiler- Schlüssel in Mieteinheiten (ME)", 'QM_ME' => "Ihre ME", 'BET_HNDL' => "Anteil für Ihre Wohnung haushaltsnahe Dienst- und Handwerkerleistungen", 'BET_G' => "Beteiligung");
     $g_beteiligung = 0.0;
     $g_beteiligung_hnd = 0.0;
     for ($b = 0; $b < $anzahl_zeilen; $b++) {
         $tab[$b]['KOSTENART'] = $bk_arr[$b]['KOSTENART'];
         $tab[$b]['G_KOS_BEZ'] = $bk_arr[$b]['G_KOS_BEZ'];
         $tab[$b]['G_BETRAG'] = $bk_arr[$b]['G_BETRAG'];
         $tab[$b]['ANTEIL'] = $bk_arr[$b]['ANTEIL'] . '%';
         $tab[$b]['UMLAGE'] = $bk_arr[$b]['UMLAGE'];
         $tab[$b]['ME'] = $bk_arr[$b]['ME'];
         $tab[$b]['G_KEY'] = nummer_punkt2komma($bk_arr[$b]['G_KEY']) . ' ' . $bk_arr[$b]['ME'];
         $tab[$b]['QM'] = $bk_arr[$b]['QM'];
         $tab[$b]['QM_ME'] = nummer_punkt2komma($bk_arr[$b]['QM']) . ' ' . $bk_arr[$b]['ME'];
         $tab[$b]['BET_G'] = $bk_arr[$b]['BET_G'];
         $tab[$b]['G_HNDL'] = $bk_arr[$b]['G_HNDL'];
         $tab[$b]['BET_HNDL'] = $bk_arr[$b]['BET_HNDL'];
         $tab[$b]['GENKEY_ID'] = $bk_arr[$b]['GENKEY_ID'];
         $g_beteiligung += nummer_komma2punkt($bk_arr[$b]['BET_G']);
         $g_beteiligung_hndl += nummer_komma2punkt($bk_arr[$b]['BET_HNDL']);
     }
     /* Pr�fen ob Kaltwasserkosten worden sind */
     $check_kw = $this->check_kw_abrechnung($empf_kos_typ, $empf_kos_id, $this->bk_jahr);
     if ($check_kw == true) {
         $kw_summe = $this->summe_kw_abrechnung($empf_kos_typ, $empf_kos_id, $this->bk_jahr);
         $kw_summe_a = nummer_punkt2komma($kw_summe);
         // $pdf->ezText("<b>Heiz- und Betriebskostenabrechnung Einheit: $mv->einheit_kurzname</b>",10);
         $tab[$b + 1]['KOSTENART'] = 'Be- und Entwässerung lt. Kaltwasserabr.';
         if ($kw_summe < 0) {
             $kw_erg_a = 'Nachzahlung';
         } else {
             $kw_erg_a = 'Guthaben';
         }
         $tab[$b + 1]['G_KEY'] = 'n. Verbrauch';
         $tab[$b + 1]['BET_G'] = $kw_summe_a;
         $g_beteiligung += $kw_summe;
         // die($g_beteiligung);
     } else {
         // $pdf->ezText("<b>Betriebskostenabrechnung $this->bk_jahr Einheit: $mv->einheit_kurzname</b>",10);
     }
     $b++;
     $tab[$b + 1]['KOSTENART'] = '<b>Gesamtkosten</b>';
     $tab[$b + 1]['BET_G'] = '<b>' . nummer_punkt2komma($g_beteiligung) . '</b>';
     $tab[$b + 1]['BET_HNDL'] = '<b>' . nummer_punkt2komma($g_beteiligung_hndl) . '</b>';
     $summe_nebenkosten_jahr = 0.0;
     if ($empf_kos_typ == 'MIETVERTRAG') {
         $mz = new miete();
         $summe_nebenkosten_jahr = $mz->summe_nebenkosten_im_jahr($empf_kos_typ, $empf_kos_id, $this->bk_jahr);
         $summe_hk_jahr = $mz->summe_nebenkosten_im_jahr($empf_kos_typ, $empf_kos_id, $this->bk_jahr);
     } else {
         $summe_nebenkosten_jahr = 0.0;
         $summe_hk_jahr = '0.00';
     }
     $tab[$b + 2]['KOSTENART'] = '<b>Ihr Vorschuss/Jahr</b>';
     $tab[$b + 2]['BET_G'] = '<b>' . nummer_punkt2komma($summe_nebenkosten_jahr) . '</b>';
     $ergebnis = $g_beteiligung + $summe_nebenkosten_jahr;
     // $ergebnis = $summe_nebenkosten_jahr- substr($g_beteiligung,1);
     if ($ergebnis < 0) {
         $txt = 'Nachzahlung';
         $ergebnis_a = substr($ergebnis, 1);
     }
     if ($ergebnis > 0) {
         $txt = 'Guthaben';
         $ergebnis_a = $ergebnis;
     }
     if ($ergebnis == null) {
         $txt = 'Ergebnis';
         $ergebnis_a = $ergebnis;
     }
     $tab[$b + 3]['KOSTENART'] = "<b>{$txt}</b>";
     $tab[$b + 3]['BET_G'] = '<b>' . nummer_punkt2komma($ergebnis_a) . '</b>';
     $pdf->ezNewPage();
     $pdf->ezStopPageNumbers();
     // seitennummerirung beenden
     /*
      * $this->wirt_ges_qm = $wirt->g_qm;
      * $this->wirt_g_qm_gewerbe = $wirt->g_qm_gewerbe;
      * $this->wirt_g_qm_wohnen = $this->wirt_ges_qm - $this->wirt_g_qm_gewerbe;
      */
     // $cols1 = array('KOSTENART'=>"Betriebskostenart","KOSTEN_GESAMT"=>"Kosten gesamt $QM_G_OBJEKT m²",'KOSTEN_GEWERBE'=>"Gewerbeanteil $QM_G_GEWERBE m²",'KOSTEN_WOHNRAUM'=>"Wohnanteil $QM_G m²");
     // $cols1 = array('KOSTENART'=>"Betriebskostenart","KOSTEN_GESAMT"=>"Kosten gesamt $this->wirt_ges_qm_a m²",'KOSTEN_GEWERBE'=>"Gewerbeanteil $this->wirt_g_qm_gewerbe_a m²",'KOSTEN_WOHNRAUM'=>"Wohnanteil $this->wirt_g_qm_wohnen_a m²");
     $cols1 = array('KOSTENART' => "Betriebskostenart", "KOSTEN_GESAMT" => "Kosten gesamt", 'KOSTEN_GEWERBE' => "Gewerbeanteil {$this->wirt_g_qm_gewerbe_a}  m²", 'KOSTEN_WOHNRAUM' => "Wohnanteil {$this->wirt_g_qm_wohnen_a}  m²");
     // $i=$pdf->ezStartPageNumbers(545,728,6,'','Seite {PAGENUM} von {TOTALPAGENUM}',1);
     $p = new partners();
     $p->get_partner_info($_SESSION[partner_id]);
     $pdf->addText(480, 697, 8, "{$p->partner_ort}, {$this->bk_berechnungs_datum_d}");
     // $zeitraum = "01.09.2011 - 31.12.2011";
     $pdf->ezText('<b>Betriebskostenabrechnung für den Zeitraum:   ' . $zeitraum . '</b>', 8);
     $pdf->ezSetDy(-15);
     $pdf->ezText("<b>{$this->bk_bezeichnung}</b>", 8);
     $pdf->ezText("Wirtschaftseinheit: {$this->bk_kos_bez} ", 8);
     $pdf->ezText('Mieternummer:   ' . $mieternummer . " - {$einheit_typ}", 8);
     $pdf->ezText('Mieter:                ' . $empf, 8);
     $pdf->ezSetDy(-20);
     /* Ergebnis in die �bersichtstabelle */
     $pdf->ergebnis_tab["{$mieternummer} - {$empf}"]['ERGEBNIS'] = $ergebnis;
     $pdf->ergebnis_tab["{$mieternummer} - {$empf}"]['SUMME_NK'] = $summe_nebenkosten_jahr;
     $pdf->ezTable($kontroll_tab_druck, $cols1, "Aufteilung Gewerbe- / Wohnfläche", array('showHeadings' => 1, 'shaded' => 1, 'titleFontSize' => 7, 'fontSize' => 7, 'xPos' => 55, 'xOrientation' => 'right', 'width' => 500, 'cols' => array('KOSTENART' => array('justification' => 'left'), 'KOSTEN_GESAMT' => array('justification' => 'right'), 'KOSTEN_GEWERBE' => array('justification' => 'right'), 'KOSTEN_WOHNRAUM' => array('justification' => 'right'))));
     $pdf->ezSetDy(-20);
     $pdf->ezTable($tab, $cols, "{$label}", array('showHeadings' => 1, 'shaded' => 1, 'titleFontSize' => 8, 'fontSize' => 7, 'xPos' => 55, 'xOrientation' => 'right', 'width' => 500, 'cols' => array('KOSTENART' => array('justification' => 'left'), 'G_BETRAG' => array('justification' => 'right', 'width' => 60), 'G_HNDL' => array('justification' => 'right', 'width' => 60), 'ANTEIL' => array('justification' => 'right', 'width' => 40), 'UMLAGE' => array('justification' => 'right', 'width' => 45), 'G_KOS_BEZ' => array('justification' => 'right', 'width' => 45), 'G_KEY' => array('justification' => 'right', 'width' => 55), 'QM_ME' => array('justification' => 'right', 'width' => 50), 'BET_G' => array('justification' => 'right', 'width' => 45), 'BET_HNDL' => array('justification' => 'right', 'width' => 65))));
     // $pdf->ezStopPageNumbers(1,1,$i); // ENDE BERECHNUNGSSEITEN
     if ($empf_kos_typ == 'MIETVERTRAG') {
         $mz = new miete();
         $mk = new mietkonto();
         $monat = date("m");
         $jahr = date("Y");
         $ber_datum_arr = explode('-', $this->bk_berechnungs_datum);
         $ver_datum_arr = explode('-', $this->bk_verrechnungs_datum);
         $monat_b = $ber_datum_arr[1];
         $jahr_b = $ber_datum_arr[0];
         $monat_v = $ver_datum_arr[1];
         $jahr_v = $ver_datum_arr[0];
         $mk->kaltmiete_monatlich_ink_vz($empf_kos_id, $monat_b, $jahr_b);
         $mk->ausgangs_kaltmiete_a = nummer_punkt2komma($mk->ausgangs_kaltmiete);
         // $mk->heizkosten_monatlich($empf_kos_id,$monat,$jahr);
         // $mk->betriebskosten_monatlich($empf_kos_id,$monat,$jahr);
         // $mk->nebenkosten_monatlich($empf_kos_id,$monat,$jahr);
         $anp_tab[0]['KOSTENKAT'] = 'Miete kalt';
         $anp_tab[0]['AKTUELL'] = "{$mk->ausgangs_kaltmiete_a} €";
         $anp_tab[0]['ANPASSUNG'] = '--';
         $mk1 = new mietkonto();
         $mk1->kaltmiete_monatlich_ink_vz($empf_kos_id, $monat_v, $jahr_v);
         $mk1->ausgangs_kaltmiete_a = nummer_punkt2komma($mk1->ausgangs_kaltmiete);
         $anp_tab[0]['NEU'] = "{$mk1->ausgangs_kaltmiete_a} €";
         $this->get_anpassung_details($_SESSION['profil_id'], 'Nebenkosten Vorauszahlung');
         $anp_datum = date_mysql2german($this->bk_an_anpassung_ab);
         $mv = new mietvertraege();
         $mv->get_mietvertrag_infos_aktuell($empf_kos_id);
         /*
          * if($empf_kos_id == '580'){
          * echo '<pre>';
          * print_r($mv);
          * die();
          * }
          */
         $pdf->addText(480, 697, 8, "{$p->partner_ort}, {$this->bk_berechnungs_datum_d}");
         /* Wenn MV aktuell anpassen, wenn ausgezogen nicht */
         // if($mv->mietvertrag_aktuell && $summe_nebenkosten_jahr){
         if ($empf_kos_typ != 'Leerstand') {
             // ##########NEU ENERGIEVERBRAUCH GEGEN VORSCHÜSSE###################
             /* prüfen ob HK Vorschüsse vorhanden */
             $mz2 = new miete();
             $met = new mietentwicklung();
             // $summe_nebenkosten_jahr = $mz->summe_nebenkosten_im_jahr($empf_kos_typ,$empf_kos_id,$this->bk_jahr);
             $summe_hk_vorschuss = $mz2->summe_heizkosten_im_jahr($empf_kos_typ, $empf_kos_id, $this->bk_jahr);
             $energiekosten_jahr = $met->get_energieverbrauch(strtoupper($empf_kos_typ), $empf_kos_id, $this->bk_jahr);
             if ($energiekosten_jahr > 0) {
                 $pdf->ezNewPage();
                 $pdf->addText(480, 697, 8, "{$p->partner_ort}, {$this->bk_berechnungs_datum_d}");
                 $pdf->ezText('<b>Energiekostenabrechnung für den Zeitraum:   ' . $zeitraum . '</b>', 8);
                 $pdf->ezSetDy(-15);
                 $pdf->ezText("<b>{$this->bk_bezeichnung}</b>", 8);
                 $pdf->ezText("Wirtschaftseinheit: {$this->bk_kos_bez} ", 8);
                 $pdf->ezText('Mieternummer:   ' . $mieternummer . " - {$einheit_typ}", 8);
                 $pdf->ezText('Mieter:                ' . $empf, 8);
                 $pdf->ezSetDy(-20);
                 $pdf->ezText("{$mv->mv_anrede}", 9);
                 $pdf->ezText("die Abrechnung der Energiekosten für den o.g. Zeitraum stellt sich wie folgt da:", 9);
                 $hk_verbrauch_tab[0]['KOSTENKAT'] = "Ihre Vorauszahlung im Jahr {$this->bk_jahr}";
                 $hk_verbrauch_tab[0]['BETRAG'] = nummer_punkt2komma_t($summe_hk_vorschuss);
                 /* Heizkostenverbrauch abfragen */
                 // $energiekosten_jahr = $met->get_energieverbrauch(strtoupper($empf_kos_typ), $empf_kos_id, $this->bk_jahr);
                 $hk_verbrauch_tab[1]['KOSTENKAT'] = "Angefallene Kosten lt. Abrechnung in {$this->bk_jahr}";
                 $hk_verbrauch_tab[1]['BETRAG'] = nummer_punkt2komma_t($energiekosten_jahr);
                 /* Ergebnis ermittlen */
                 $ergebnis_energie = $summe_hk_vorschuss - $energiekosten_jahr;
                 if ($ergebnis_energie < 0) {
                     $energie_text = "Ihre Nachzahlung";
                 }
                 if ($ergebnis_energie > 0) {
                     $energie_text = "Ihr Guthaben";
                 }
                 if ($ergebnis_energie == 0) {
                     $energie_text = "Saldo";
                 }
                 $hk_verbrauch_tab[2]['KOSTENKAT'] = "<b>{$energie_text} {$this->bk_jahr}</b>";
                 $hk_verbrauch_tab[2]['BETRAG'] = "<b>" . nummer_punkt2komma_t($ergebnis_energie) . "</b>";
                 $pdf->ezSetDy(-20);
                 $cols = array('KOSTENKAT' => "Bezeichnung", "BETRAG" => "Betrag");
                 $pdf->ezTable($hk_verbrauch_tab, $cols, "", array('showHeadings' => 0, 'shaded' => 1, 'titleFontSize' => 7, 'fontSize' => 8, 'xPos' => 55, 'xOrientation' => 'right', 'width' => 500, 'cols' => array('BETRAG' => array('justification' => 'right', 'width' => 80), 'KOSTENKAT' => array('justification' => 'left'))));
                 $pdf->ezSetDy(-20);
                 $pdf->ezText("Die Energieabrechnung des Abrechnungsunternehmens legen wir dieser Abrechnung bei.", 9);
                 $pdf->ezSetDy(-10);
                 $pdf->ezText("Mit freundlichen Grüßen", 9);
                 $pdf->ezSetDy(-30);
                 $pdf->ezText("Ihre Hausverwaltung", 9);
                 $hk_verbrauch_tab[3]['KOSTENKAT'] = "{$mieternummer} - {$empf} - {$zeitraum}";
                 $pdf->energie_abr[]["{$mieternummer} - {$empf} - {$zeitraum}"] = $hk_verbrauch_tab;
             }
             // #ende wenn energieabrecnung drin
         }
         // #ende wenn nicht leerstand
         // ########################################################################
         if ($mv->mietvertrag_aktuell) {
             /* ANPASSUNGSBLATT */
             $pdf->ezNewPage();
             $pdf->addText(480, 697, 8, "{$p->partner_ort}, {$this->bk_berechnungs_datum_d}");
             $pap = $mv->postanschrift[0]['anschrift'];
             if (!empty($pap)) {
                 $pdf->ezText("{$pap}", 10);
                 $pap = '';
             } else {
                 $pdf->ezText("{$mv->personen_name_string_u}\n{$mv->haus_strasse} {$mv->haus_nr}\n\n{$mv->haus_plz} {$mv->haus_stadt}", 10);
             }
             $pdf->ezSetDy(-60);
             $check_hk = $this->check_hk_abrechnung($empf_kos_typ, $empf_kos_id, $this->bk_jahr);
             // $check_bk = $this->check_bk_abrechnung($empf_kos_typ,$empf_kos_id,$this->bk_jahr);
             $bk_summe = $ergebnis;
             /* Summe aus der Abrechnung */
             $hk_summe = $this->summe_hk_abrechnung($empf_kos_typ, $empf_kos_id, $this->bk_jahr);
             // $bk_summe = $this->summe_bk_abrechnung($empf_kos_typ,$empf_kos_id,$this->bk_jahr);
             /* NEU */
             /* Anpassung Nachzahlung Heizkosten */
             /* Wenn Nachzahlung, dann mindestens 50/12+1EUR=5.00 EUR */
             if ($hk_summe < 0) {
                 // echo $hk_summe;
                 $hk_monatlich_letzte_vj = $mz->letzte_hk_vorauszahlung($empf_kos_typ, $empf_kos_id, $this->bk_jahr, 'Heizkosten Vorauszahlung');
                 $hk_monatlich_letzte = $mz->letzte_hk_vorauszahlung($empf_kos_typ, $empf_kos_id, $jahr, 'Heizkosten Vorauszahlung');
                 $hk_jahr_aktuell = $hk_monatlich_letzte * 12;
                 $hk_diff = $hk_jahr_aktuell - ($hk_summe * -1 + $anzahl_monate * $hk_monatlich_letzte_vj);
                 $hk_anp_betrag_neu = ($hk_summe - 25) / 12;
                 $hk_anp_betrag_neu = intval($hk_anp_betrag_neu - 1);
                 $hk_anp_betrag_neu = substr($hk_anp_betrag_neu, 1);
                 // echo "$hk_summe $hk_vorschuss_neu $hk_anp_betrag_neu";
                 if ($hk_diff >= 0) {
                     $hk_anp_betrag_neu = '0.00';
                 } else {
                     $hk_anp_betrag_neu = $hk_diff / 12 * -1;
                 }
                 /*
                  * if($mv->mietvertrag_id=='1573'){
                  * echo "<br><b>HKSUMME: $hk_summe HKV: $hk_vorschuss_neu ANP:$hk_anp_betrag_neu HKJAHR: $hk_jahr_aktuell|$hk_monatlich_letzte $hk_monatlich_letzte_vj $hk_diff</b>";
                  * echo "$hk_diff = $hk_jahr_aktuell - (($hk_summe*-1) + ($anzahl_monate*$hk_monatlich_letzte_vj));";
                  * die();
                  * }
                  */
             } else {
                 /* Guthaben bei HK */
                 $hk_anp_betrag_neu = ($hk_summe - 50) / 12;
                 $hk_anp_betrag_neu = intval($hk_anp_betrag_neu);
                 if ($hk_anp_betrag_neu < 0) {
                     $hk_anp_betrag_neu = 0.0;
                 }
                 /* Unter 5 Euro nicht anpassen */
                 if ($hk_anp_betrag_neu > 0.0 && $hk_anp_betrag_neu < 5.0) {
                     $hk_anp_betrag_neu = 0.0;
                 }
                 if ($hk_anp_betrag_neu > 5) {
                     $hk_anp_betrag_neu = -$hk_anp_betrag_neu - 1;
                 }
                 if ($hk_summe == 0 or $summe_hk_jahr == 0) {
                     $hk_anp_betrag_neu = '0.00';
                 }
             }
             // END HK ANPASSUNG
             /* NEU BK */
             /* Anpassung Nachzahlung BK */
             /* Summe aus der Abrechnung */
             // $bk_summe = $this->summe_bk_abrechnung($empf_kos_typ,$empf_kos_id,$this->bk_jahr);
             // echo $bk_summe
             if ($bk_summe < 0) {
                 // echo $hk_summe;
                 $bk_anp_betrag_neu = ($bk_summe - 24) / 12;
                 $bk_anp_betrag_neu = intval($bk_anp_betrag_neu - 1);
                 $bk_anp_betrag_neu = substr($bk_anp_betrag_neu, 1);
                 // echo "$bk_anp_betrag_neu";
                 // die();
             } else {
                 /* Guthaben bei BK */
                 if ($bk_summe > 24) {
                     $bk_anp_betrag_neu = ($bk_summe - 24) / 12;
                 } else {
                     $bk_anp_betrag_neu = $bk_summe / 12;
                 }
                 $bk_anp_betrag_neu = intval($bk_anp_betrag_neu);
                 if ($bk_anp_betrag_neu < 0) {
                     $bk_anp_betrag_neu = 0.0;
                 }
                 /* Unter 5 Euro nicht anpassen */
                 if ($bk_anp_betrag_neu > 0.0 && $bk_anp_betrag_neu < 5.0) {
                     $bk_anp_betrag_neu = 0.0;
                 }
                 if ($bk_anp_betrag_neu > 5) {
                     // echo "SANEL $bk_anp_betrag_neu";
                     $bk_anp_betrag_neu = $bk_anp_betrag_neu - 1;
                     // die("SANEL $bk_anp_betrag_neu");
                 }
             }
             // ENDE BK ANPASSUNGSERMITTLUNG
             if ($bk_summe == 0 or $summe_nebenkosten_jahr == 0) {
                 $bk_anp_betrag_neu = '0.00';
             }
             if ($mv->mietvertrag_id == '1813') {
                 // ob_clean();
                 // echo "$bk_summe $ergebnis ANP: $bk_anp_betrag_neu ";
                 // die('SANEL');
             }
             $pdf->ergebnis_tab["{$mieternummer} - {$empf}"]['HK_SUMME'] = nummer_punkt2komma($hk_summe);
             /* Summe aller Vorauszahlungen im Jahr der Abrechnung */
             $summe_hk_jahr = $mz->summe_heizkosten_im_jahr($empf_kos_typ, $empf_kos_id, $this->bk_jahr);
             $this->get_anpassung_details($_SESSION['profil_id'], 'Heizkosten Vorauszahlung');
             $hk_monatlich_bisher_schnitt = $summe_hk_jahr / $anzahl_monate;
             $hk_monatlich_letzte = $mz->letzte_hk_vorauszahlung($empf_kos_typ, $empf_kos_id, $jahr, 'Heizkosten Vorauszahlung');
             // $hk_monatlich_letzte = $mz->letzte_hk_vorauszahlung($empf_kos_typ, $empf_kos_id, $this->bk_jahr, 'Heizkosten Vorauszahlung');
             // $x = $hk_monatlich_letzte + $hk_anp_betrag_neu;
             // die("$x = $hk_monatlich_letzte + $hk_anp_betrag_neu");
             // if($empf_kos_id==1){
             // die("Schnitt: $hk_monatlich_bisher_schnitt Letzte:$hk_monatlich_letzte HK-Abrechnung: $hk_summe Voraus:$summe_hk_jahr");
             // }
             /* bis hier alles ok */
             $hk_monatlich_genau = (-$summe_hk_jahr + $hk_summe) / $anzahl_monate;
             if ($hk_monatlich_genau < 0) {
                 $hk_monatlich_genau = substr($hk_monatlich_genau, 1);
             }
             echo "{$hk_monatlich_genau} = (-{$summe_hk_jahr} + {$hk_summe})/{$anzahl_monate};";
             $vorauszahlung_n_jahr = $hk_monatlich_letzte * $anzahl_monate;
             $festgesetzt_n_jahr = $vorauszahlung_n_jahr - $hk_summe;
             $hk_vorschuss_neu = $festgesetzt_n_jahr / $anzahl_monate;
             // $hk_monatlich_letzte = 84.99;
             $x = $hk_monatlich_letzte + $hk_anp_betrag_neu;
             // intval($hk_anp_betrag_neu-1)
             // $hk_anp_betrag_neu = $x- $hk_monatlich_letzte;
             echo "HK {$hk_summe} {$hk_monatlich_letzte} {$hk_anp_betrag_neu}  {$x}  {$hk_vorschuss_neu}<br>";
             echo "HK ANP: {$hk_anp_betrag_neu}<br><hr>";
             // die();
             // if($hk_anp_betrag_neu<0){
             // $hk_anp_betrag_neu_pos = substr($hk_anp_betrag_neu,1);//positiv
             // }
             // echo "$hk_vorschuss_neu $hk_vorschuss_neu_pos";
             // die();
             // $hk_vorschuss_neu = $hk_monatlich_letzte + $hk_anp_betrag_neu;
             $hk_vorschuss_neu = $x;
             // echo "$hk_vorschuss_neu = $hk_monatlich_letzte + $hk_anp_betrag_neu_pos";
             // die();
             // $hk_anp_betrag = $hk_monatlich_genau - $hk_monatlich_bisher;
             // $hk_anp_betrag = $hk_monatlich_bisher_schnitt - $hk_monatlich_genau;
             // $hk_vorschuss_neu = $hk_monatlich_bisher + $hk_anp_betrag;
             // $hk_vorschuss_neu = $hk_monatlich_letzte + $hk_anp_betrag;
             $hk_monatlich_bisher_schnitt_a = nummer_punkt2komma($hk_monatlich_bisher_schnitt);
             $hk_monatlich_bisher_a = nummer_punkt2komma($hk_monatlich_letzte);
             // if($mv->mietvertrag_id=='1365'){
             // die('SANEL');
             // }
             $this->get_genkey_infos($this->bk_an_keyid);
             if ($this->bk_an_keyid == '1') {
                 $hk_vorschuss_neu = $hk_vorschuss_neu + $this->bk_an_fest_betrag * $einheit_qm;
             }
             if ($this->bk_an_keyid == '2') {
                 $hk_vorschuss_neu = $hk_vorschuss_neu + $this->bk_an_fest_betrag;
             }
             // $hk_anp_betrag = $hk_vorschuss_neu - $hk_monatlich_bisher;
             /* Anpassung auf Vollzahlen */
             // $hk_vorschuss_neu = intval(substr($hk_vorschuss_neu,0,-2));
             // $hk_anp_betrag = $hk_vorschuss_neu - $hk_monatlich_letzte;
             // die("$hk_anp_betrag = $hk_anp_betrag_neu **** $hk_vorschuss_neu - $hk_monatlich_letzte");
             // if($hk_anp_betrag_neu!=0){
             // if(($hk_anp_betrag < 5.00) && ($hk_anp_betrag < -5.00)){
             // die("if(($hk_anp_betrag_neu > 0 && $hk_anp_betrag < 5.00) && ($hk_anp_betrag_neu < 0 && $hk_anp_betrag < -5.00)){");
             // $hk_anp_betrag = 0.00;
             // $hk_vorschuss_neu =$hk_monatlich_letzte;
             // die('OK');
             // die("$hk_anp_betrag < 5.00) && ($hk_anp_betrag < -5.00)");
             // }
             // }
             $hk_anp_betrag_a = nummer_punkt2komma($hk_anp_betrag_neu);
             $hk_vorschuss_neu_a = nummer_punkt2komma($hk_vorschuss_neu);
             if ($check_hk == true) {
                 $anp_tab[2]['KOSTENKAT'] = 'Heizkosten Vorauszahlung';
                 $anp_tab[2]['AKTUELL'] = "{$hk_monatlich_bisher_a} €";
                 $anp_tab[2]['ANPASSUNG'] = "{$hk_anp_betrag_a} €";
                 $anp_tab[2]['NEU'] = "{$hk_vorschuss_neu_a} €";
                 $pdf->ergebnis_tab["{$mieternummer} - {$empf}"]['HK_VORSCHUSS_ALT'] = $hk_monatlich_bisher_a;
                 $pdf->ergebnis_tab["{$mieternummer} - {$empf}"]['HK_VORSCHUSS_NEU'] = $hk_vorschuss_neu_a;
                 if ($hk_summe > $hk_monatlich_bisher_schnitt * $anzahl_monate) {
                     die("{$mieternummer} {$empf} -  Summe Hk Abrechnung > eingezahlte Summe für HK im Jahr");
                 }
             }
             if ($check_hk == true) {
                 $pdf->ezText("<b>Anpassung der monatlichen Heiz- und Betriebskostenvorauszahlungen ab {$this->bk_verrechnungs_datum_d}</b>", 10);
             } else {
                 $pdf->ezText("<b>Anpassung der monatlichen Betriebskostenvorauszahlungen ab {$this->bk_verrechnungs_datum_d}</b>", 10);
             }
             // $pdf->ezText("Objekt: $mv->haus_strasse $mv->haus_nr, $mv->haus_plz $mv->haus_stadt",12);
             $pdf->ezText("<b>{$this->bk_bezeichnung}</b>", 10);
             $pdf->ezText("Wirtschaftseinheit: {$this->bk_kos_bez}      Einheit: {$mv->einheit_kurzname}", 10);
             // $pdf->ezText("Einheit: $mv->einheit_kurzname",12);
             $pdf->ezSetDy(-10);
             /* Faltlinie */
             $pdf->setLineStyle(0.2);
             $pdf->line(5, 542, 20, 542);
             $pdf->ezText("{$anrede}", 10);
             $pdf->ezText("{$mv->mv_anrede}", 10);
             // $text_nachzahlung = "aufgrund der Nachzahlungsbetr�ge aus der letzten Betriebskostenabrechnung und der uns bisher bekannten Erhöhungen der Kosten für die Müllentsorgung durch die BSR, die Be- und Entwässerungskosten durch die Berliner Wasserbetriebe und die Erhöhung der Kosten für die Hausreinigung ändern wir die monatlichen Betriebskostenvorauszahlungen auf der Grundlage des § 560 BGB wie nachfolgend aufgeführt ab dem $this->bk_verrechnungs_datum_d.";
             $text_nachzahlung = "aufgrund der vorliegenden Nebenkostenabrechnung und zu erwartender Kostensteigerungen, erfolgt hiermit eine Änderung der monatlichen Betriebskostenvorauszahlungen auf der Grundlage des § 560 BGB, wie nachfolgend aufgeführt ab dem {$this->bk_verrechnungs_datum_d}.";
             $text_guthaben_berlin = "aufgrund der uns bisher bekannten Erhöhungen der Kosten für die Müllentsorgung durch die BSR, die Be- und Entwässerungskosten durch die Berliner Wasserbetriebe und die Erhöhung der Kosten für die Hausreinigung, erfolgt hiermit eine Änderung der monatlichen Betriebskostenvorauszahlungen auf der Grundlage des § 560 BGB wie nachfolgend aufgeführt ab dem {$this->bk_verrechnungs_datum_d}.";
             $text_guthaben = "aufgrund der vorliegenden Nebenkostenabrechnung und zu erwartender Kostensteigerungen, erfolgt hiermit eine Änderung der monatlichen Betriebskostenvorauszahlungen auf der Grundlage des § 560 BGB, wie nachfolgend aufgeführt ab dem {$this->bk_verrechnungs_datum_d}.";
             if ($txt == 'Nachzahlung') {
                 $pdf->ezText("{$text_nachzahlung}", 10, array('justification' => 'full'));
             }
             $alttext = 'aufgrund der Nachzahlungsbeträge aus der letzten Betriebskostenabrechnung ändern wir die monatlichen Betriebskostenvorauszahlungen auf der Grundlage des § 560 Abs. 4 und 5 BGB wie nachfolgend aufgeführt ab dem $this->bk_verrechnungs_datum_d.';
             if ($txt == 'Guthaben') {
                 $pdf->ezText("{$text_guthaben}", 10, array('justification' => 'full'));
             }
             $pdf->ezSetDy(-15);
             /* BK NK ANPASSUNG */
             $this->get_anpassung_details($_SESSION['profil_id'], 'Nebenkosten Vorauszahlung');
             // $vorschuesse_aktuell =$summe_nebenkosten_jahr;
             $men = new mietentwicklung();
             // $vorschuesse_aktuell = $men->nebenkosten_monatlich($empf_kos_id,date("m"),date("Y"));
             // $vorschuesse_aktuell = $mz->letzte_hk_vorauszahlung($empf_kos_typ, $empf_kos_id, $this->bk_jahr, 'Nebenkosten Vorauszahlung');
             $jahr_vorschuss = date("Y");
             // OKOKOK2015$vorschuesse_aktuell = $mz->letzte_hk_vorauszahlung($empf_kos_typ, $empf_kos_id, $jahr_vorschuss, 'Nebenkosten Vorauszahlung');
             // $vorschuesse_aktuell = $mz->letzte_vorauszahlung_summe($empf_kos_typ, $empf_kos_id, $jahr_vorschuss, 'Nebenkosten Vorauszahlung');
             $vorschuesse_aktuell = $mz->letzte_hk_vorauszahlung($empf_kos_typ, $empf_kos_id, $jahr_vorschuss, 'Nebenkosten Vorauszahlung');
             /*
              * if($empf_kos_id=='1585'){
              * ob_clean();
              * die($vorschuesse_aktuell);
              * }
              */
             $vorschuesse_neu = $g_beteiligung / $anzahl_monate;
             $vorschuesse_aktuell_a = nummer_punkt2komma($vorschuesse_aktuell);
             if ($vorschuesse_neu < 0) {
                 $vorschuesse_neu = substr($vorschuesse_neu, 1);
             }
             $this->get_genkey_infos($this->bk_an_keyid);
             if ($this->bk_an_keyid == '1') {
                 $vorschuesse_neu = $vorschuesse_neu + $this->bk_an_fest_betrag * $einheit_qm;
             }
             if ($this->bk_an_keyid == '2') {
                 $vorschuesse_neu = $vorschuesse_neu + $this->bk_an_fest_betrag;
             }
             $vorschuesse_neu_a = nummer_punkt2komma($vorschuesse_neu);
             $anp_betrag = $vorschuesse_neu - $vorschuesse_aktuell;
             $anp_betrag_a = nummer_punkt2komma($anp_betrag);
             if ($ergebnis > 0) {
                 $xbk = intval($vorschuesse_aktuell - $bk_anp_betrag_neu);
                 // intval($hk_anp_betrag_neu-1)
             } else {
                 $xbk = intval($vorschuesse_aktuell + $bk_anp_betrag_neu);
                 // intval($hk_anp_betrag_neu-1)
             }
             $bk_anp_betrag_neu = $xbk - $vorschuesse_aktuell;
             echo "BK: {$vorschuesse_aktuell} {$bk_anp_betrag_neu}  {$xbk}<br>";
             echo "BK_ANP {$bk_anp_betrag_neu}<br>";
             // $anp_betrag_a = nummer_punkt2komma($bk_anp_betrag_neu);
             // $vorschuesse_neu = $xbk;
             // $vorschuesse_neu_a =nummer_punkt2komma($vorschuesse_neu);
             // die();
             /* Wenn keine VZ Anteilig gezahlt, BK Anpassen - Nettomieter!!!!!!!!! */
             $mkk = new mietkonto();
             if ($mkk->check_vz_anteilig($empf_kos_id, $monat, $jahr) == true) {
                 // $vorschuesse_aktuell_a =nummer_punkt2komma(0);
                 // $anp_betrag_a = nummer_punkt2komma(0);
                 $anp_betrag_a = nummer_punkt2komma(intval($anp_betrag));
                 $vorschuesse_neu = $vorschuesse_aktuell + intval($anp_betrag);
                 $vorschuesse_neu_a = nummer_punkt2komma($vorschuesse_neu);
             } else {
                 /* Wenn VZ Anteilig gezahlt, keine BK Anpassen - Bruttomieter!!!!!!!!! */
                 $anp_betrag = 0;
                 $vorschuesse_aktuell = 0;
                 $vorschuesse_neu = 0;
                 $anp_betrag_a = nummer_punkt2komma(0);
                 $vorschuesse_neu_a = nummer_punkt2komma($vorschuesse_aktuell);
             }
             $anp_tab[1]['KOSTENKAT'] = 'Betriebskosten Vorauszahlung';
             $anp_tab[1]['AKTUELL'] = "{$vorschuesse_aktuell_a} €";
             $anp_tab[1]['ANPASSUNG'] = "{$anp_betrag_a} €";
             $anp_tab[1]['NEU'] = "{$vorschuesse_neu_a} €";
             $pdf->ergebnis_tab["{$mieternummer} - {$empf}"]['VORSCHUSS_ALT'] = "{$vorschuesse_aktuell_a}";
             if ($vorschuesse_neu > $vorschuesse_aktuell) {
                 $pdf->ergebnis_tab["{$mieternummer} - {$empf}"]['VORSCHUSS_NEU'] = "<b>{$vorschuesse_neu_a}</b>";
             } else {
                 $pdf->ergebnis_tab["{$mieternummer} - {$empf}"]['VORSCHUSS_NEU'] = "{$vorschuesse_neu_a}";
             }
             $anp_tab[3]['KOSTENKAT'] = '';
             $anp_tab[3]['AKTUELL'] = "";
             $anp_tab[3]['ANPASSUNG'] = "";
             $anp_tab[3]['NEU'] = "";
             $anp_tab[4]['KOSTENKAT'] = '';
             $a_km = nummer_punkt2komma($mk->ausgangs_kaltmiete + $vorschuesse_aktuell + $hk_monatlich_letzte);
             // $n_km= nummer_punkt2komma($mk->ausgangs_kaltmiete + $vorschuesse_neu + $hk_vorschuss_neu);
             // if($bk_summe && $check_hk==true){
             $n_km = nummer_punkt2komma($mk->ausgangs_kaltmiete + $vorschuesse_neu + $hk_vorschuss_neu);
             // }
             // if($check_hk==true && !$bk_summe){
             // $n_km= nummer_punkt2komma($mk->ausgangs_kaltmiete + $hk_vorschuss_neu);
             // }
             // if($check_hk==false && $bk_summe){
             // $n_km= nummer_punkt2komma($mk->ausgangs_kaltmiete + $vorschuesse_neu);
             // }
             $anp_tab[4]['AKTUELL'] = "{$a_km} €";
             $anp_tab[4]['ANPASSUNG'] = "<b>Neue Miete</b>";
             $anp_tab[4]['NEU'] = "<b>{$n_km} €</b>";
             $pdf->ergebnis_tab["{$mieternummer} - {$empf}"]['A_MIETE'] = $a_km;
             $pdf->ergebnis_tab["{$mieternummer} - {$empf}"]['N_MIETE'] = $n_km;
             $cols = array('KOSTENKAT' => "", "AKTUELL" => "Derzeitige Miete", 'ANPASSUNG' => "Anpassungsbetrag", 'NEU' => "Neue Miete ab {$this->bk_verrechnungs_datum_d}");
             $pdf->ezTable($anp_tab, $cols, "", array('showHeadings' => 1, 'shaded' => 1, 'titleFontSize' => 7, 'fontSize' => 7, 'xPos' => 55, 'xOrientation' => 'right', 'width' => 500, 'cols' => array('AKTUELL' => array('justification' => 'right', 'width' => 100), 'ANPASSUNG' => array('justification' => 'right', 'width' => 100), 'NEU' => array('justification' => 'right', 'width' => 100))));
             $pdf->ezSetDy(-15);
             $pdf->ezText("Die Anpassung des Heiz- und Betriebskostenvorschusses hat eine vertragsverändernde Wirkung, bedarf aber nicht Ihrer Zustimmung. Sollte Sie bei Ihrer Bank einen Dauerauftrag eingerichtet haben, bitten wir diesen ändern zu lassen. Bei uns vorliegenden Einzugsermächtigung erfolgt automatisch ab {$this->bk_verrechnungs_datum_d} der Lastschrifteinzug der geänderten Miete. \n\n", 10, array('justification' => 'full'));
             $pdf->ezSetDy(-15);
             // $pdf->ezText("$this->footer_zahlungshinweis",10);
             // $pdf->ezText("$this->footer_zahlungshinweis", 10, array('justification'=>'full'));
         }
         /* ENDE ANPASSUNGSBLATT */
         /* Anschreiben nur für Mietverträge */
         if ($empf_kos_typ == 'MIETVERTRAG') {
             $mv = new mietvertraege();
             $mv->get_mietvertrag_infos_aktuell($empf_kos_id);
             /* Wenn Mietvertrag aktuell anpassen, sonst nicht (d.h. Mieter wohnt noch in der Einheit) */
             // $this->get_anpassung_infos($_SESSION['profil_id']);
             $this->get_anpassung_details($this->profil_id, 'Nebenkosten Vorauszahlung');
             $anp_datum = date_mysql2german($this->bk_an_anpassung_ab);
             $p = new partners();
             $p->get_partner_info($_SESSION[partner_id]);
             $pdf->ezNewPage();
             $pdf->addText(480, 697, 8, "{$p->partner_ort}, {$this->bk_berechnungs_datum_d}");
             /*
              * echo '<pre>';
              * print_r($mv);
              * die();
              *
              * /*Wennn ausgezogen
              */
             $pap = $mv->postanschrift[0]['anschrift'];
             if (!empty($pap)) {
                 $pdf->ezText("{$pap}", 10);
                 $pap = '';
             } else {
                 $pdf->ezText("{$mv->personen_name_string_u}\n{$mv->haus_strasse} {$mv->haus_nr}\n\n{$mv->haus_plz} {$mv->haus_stadt}", 10);
             }
             /*
              * if($mv->mietvertrag_aktuell=='0'){
              * $anschrift_xx = $mv->postanschrift[0]['anschrift'];
              * $pdf->ezText("$anschrift_xx",10);
              * }else{
              * $pdf->ezText("$mv->personen_name_string_u\n$mv->haus_strasse $mv->haus_nr\n\n$mv->haus_plz $mv->haus_stadt",10);
              * }
              */
             $pdf->ezSetDy(-60);
             /* Pr�fen ob heizkostenabgerechnet worden sind */
             $check_hk = $this->check_hk_abrechnung($empf_kos_typ, $empf_kos_id, $this->bk_jahr);
             if ($check_hk == true) {
                 $hk_summe = $this->summe_hk_abrechnung($empf_kos_typ, $empf_kos_id, $this->bk_jahr);
                 $hk_summe_a = nummer_punkt2komma($hk_summe);
                 $pdf->ezText("<b>Heiz- und Betriebskostenabrechnung Einheit: {$mv->einheit_kurzname}</b>", 10);
                 $tab_ans[1]['KOSTENART'] = 'Heizkosten/Warmwasser';
                 if ($hk_summe < 0) {
                     $hk_erg_a = 'Nachzahlung';
                 } else {
                     $hk_erg_a = 'Guthaben';
                 }
                 $tab_ans[1]['ERGEBNIS'] = $hk_erg_a;
                 $tab_ans[1]['SUMME'] = $hk_summe_a . ' €';
             } else {
                 $pdf->ezText("<b>Betriebskostenabrechnung {$this->bk_jahr} Einheit: {$mv->einheit_kurzname}</b>", 10);
             }
             $pdf->ezText("<b>{$this->bk_bezeichnung}</b>", 10);
             $pdf->ezText("Wirtschaftseinheit: {$this->bk_kos_bez}", 10);
             // $pdf->ezText("Einheit: $mv->einheit_kurzname",12);
             $pdf->ezSetDy(-12);
             /* Faltlinie */
             $pdf->setLineStyle(0.2);
             $pdf->line(5, 542, 20, 542);
             $pdf->ezText("{$anrede}", 12);
             $pdf->ezText("{$mv->mv_anrede}", 10);
             $pdf->ezText("namens und im Auftrag der Eigentümer erhalten Sie nachfolgend die Betriebs- und Heizkostenabrechnung für das Kalenderjahr {$this->bk_jahr} mit entsprechenden Erläuterungen zu den einzelnen Abrechnungspositionen und eventuellen Veränderungen zu vorangegangenen Abrechnungen.\n\n\t\tDaraus ergibt sich für Sie folgendes Ergebnis:", 10, array('justification' => 'full'));
             $tab_ans[0]['KOSTENART'] = 'Betriebskosten';
             if ($ergebnis < 0) {
                 $bk_ergebnis = 'Nachzahlung';
             }
             if ($ergebnis > 0) {
                 $bk_ergebnis = 'Guthaben';
             }
             if ($ergebnis == 0) {
                 $bk_ergebnis = 'Ergebnis';
             }
             /* Wenn kein Bruttomieter */
             $mkk = new mietkonto();
             if ($mkk->check_vz_anteilig($empf_kos_id, $monat, $jahr) == true) {
                 // die('Sanel');
                 $tab_ans[0]['ERGEBNIS'] = $bk_ergebnis;
                 $ergebnis_a_a = nummer_punkt2komma($ergebnis);
                 $tab_ans[0]['SUMME'] = $ergebnis_a_a . ' €';
             } else {
                 // die($empf_kos_id);
                 $bk_ergebnis = 0.0;
                 $ergebnis_a_a = nummer_punkt2komma(0.0);
                 $tab_ans[0]['SUMME'] = $ergebnis_a_a . ' €';
                 $ergebnis = 0.0;
             }
             // if($summe_nebenkosten_jahr>0){
             // $tab_ans[0]['ERGEBNIS'] = $bk_ergebnis;
             // $ergebnis_a_a = nummer_punkt2komma($ergebnis);
             // $tab_ans[0]['SUMME'] = $ergebnis_a_a.' €';
             // }else{
             // $bk_ergebnis = 0.00;
             // $ergebnis_a_a = nummer_punkt2komma(0.00);
             // $tab_ans[0][SUMME] = $ergebnis_a_a.' €';
             // $ergebnis = 0.00;
             // }
             $tab_ans[2][KOSTENART] = '';
             $tab_ans[2][ERGEBNIS] = '';
             $tab_ans[2][SUMME] = '';
             $end_erg = $hk_summe + $ergebnis;
             if ($end_erg < 0) {
                 $end_erg_ergebnis = 'Nachzahlung';
             }
             if ($end_erg > 0) {
                 $end_erg_ergebnis = 'Guthaben';
             }
             if ($end_erg == 0) {
                 $end_erg_ergebnis = 'Ergebnis';
             }
             $tab_ans[3][KOSTENART] = '<b>Gesamtergebnis</b>';
             $tab_ans[3][ERGEBNIS] = "<b>{$end_erg_ergebnis}</b>";
             $tab_ans[3][SUMME] = '<b>' . nummer_punkt2komma($end_erg) . ' €' . '</b>';
             $pdf->ezSetDy(-8);
             $cols = array('KOSTENART' => "Betriebskostenart", 'ERGEBNIS' => "Ergebnis", 'SUMME' => "Summe");
             $pdf->ezTable($tab_ans, $cols, "", array('showHeadings' => 1, 'shaded' => 1, 'titleFontSize' => 7, 'fontSize' => 7, 'xPos' => 55, 'xOrientation' => 'right', 'width' => 500, 'cols' => array('KOSTENART' => array('justification' => 'left', 'width' => 345), 'ERGEBNIS' => array('justification' => 'left', 'width' => 55), 'SUMME' => array('justification' => 'right', 'width' => 100))));
         }
         $pdf->ezSetDy(-10);
         $pdf->ezText("Die Abrechnungsunterlagen können nach vorheriger Terminabsprache bei uns im Büro eingesehen werden. Eventuelle Einwände gegen die Abrechnung sind bitte innerhalb eines Jahres nach Zugang der Abrechnung schriftlich bei uns anzuzeigen.", 10, array('justification' => 'full'));
         $pdf->ezSetDy(-10);
         $v_monat_arr = explode('-', $this->bk_verrechnungs_datum);
         $v_monat_name = monat2name($v_monat_arr['1']);
         $v_jahr = $v_monat_arr['0'];
         $pdf->ezText("Bei Vorlage einer Einzugsermächtigung wird das Guthaben aus der Abrechnung mit der Miete für den Monat {$v_monat_name} {$v_jahr} verrechnet. Nachzahlungsbeträge werden mit der Zahlung der Miete für den Monat {$v_monat_name} {$v_jahr} mit eingezogen, bitte sorgen Sie für eine ausreichende Kontodeckung bzw. informieren uns unbedingt, falls der Nachzahlungsbetrag nicht per Lastschrift eingezogen werden soll.", 10, array('justification' => 'full'));
         $pdf->ezSetDy(-10);
         if (isset($_SESSION[geldkonto_id])) {
             $g = new geldkonto_info();
             $g->geld_konto_details($_SESSION[geldkonto_id]);
         } else {
             die("GELDKONTO AUSWÄHLEN");
         }
         // $pdf->ezText("auf das Konto $g->kontonummer bei der $g->kredit_institut, BLZ $g->blz.\n\n",12);
         $pdf->ezText("Sollte uns keine Einzugsermächtigung vorliegen, bitten wir das Guthaben mit der nächsten Mietzahlung zu\nverrechnen bzw. den Nachzahlungsbetrag unter Angabe Ihrer Mieternummer <b>{$mieternummer}</b> auf das Konto mit der\n<b>IBAN</b> <b>{$g->IBAN1}</b> bei der <b>{$g->kredit_institut}</b> zu überweisen.", 10, array('justification' => 'left'));
         $pdf->ezSetDy(-10);
         $pdf->ezText("Bei verzogenen Mietern ist es uns nicht möglich die Nachzahlungsbeträge per Lastschrift einzuziehen, wir bitten hier um Überweisung auf das o.g. Geldkonto.", 10, array('justification' => 'full'));
         $pdf->ezText("Für die Erstattung eines Guthabens bitten wir Sie uns Ihre aktuelle Kontonummer schriftlich mitzuteilen.", 10);
         // print_r($g);
         // die();
         $pdf->ezSetDy(-15);
         // $pdf->ezText("$this->footer_zahlungshinweis",10);
         /* Anschreiben ENDE */
     } else {
         // $pdf->ezText("KEINE ANPASSUNG",10);
     }
     //
 }
Exemple #7
0
 define('PRICING_COLUMN_SIZES', '67');
 $vilains = array("&#224;", "&#225;", "&#226;", "&#227;", "&#228;", "&#229;", "&#230;", "&#231;", "&#232;", "&#233;", "&#234;", "&#235;", "&#236;", "&#237;", "&#238;", "&#239;", "&#240;", "&#241;", "&#242;", "&#243;", "&#244;", "&#245;", "&#246;", "&#247;", "&#248;", "&#249;", "&#250;", "&#251;", "&#252;", "&#253;", "&#254;", "&#255;", "&#223;", "&#39;", "&nbsp;", "&agrave;", "&aacute;", "&atilde;", "&auml;", "&Arond;", "&egrave;", "&aelig;", "&ecirc;", "&euml;", "&igrave;", "&iacute;", "&Iacute;", "&icirc;", "&iuml;", "&ograve;", "&oacute;", "&ocirc;", "&otilde;", "&ouml;", "&oslash;", "&ugrave;", "&uacute;", "&ucirc;", "&uuml;", "&ntilde;", "&ccedil;", "&yacute;", "&lt;", "&gt;", "&amp;");
 $cools = array('à', 'á', 'â', 'ã', 'ä', 'å', 'æ', 'ç', 'è', 'é', 'ê', 'ë', 'ì', 'í', 'î', 'ï', 'ð', 'ñ', 'ò', 'ó', 'ô', 'õ', 'ö', '÷', 'ø', 'ù', 'ú', 'û', 'ü', 'ý', 'þ', 'ÿ', 'ß', '\'', ' ', 'à', 'á', 'ã', 'ä', 'å', 'è', 'æ', 'ê', 'ë', 'ì', 'í', 'î', 'Î', 'ï', 'ò', 'ó', 'ô', 'õ', 'ö', 'ø', 'ù', 'ú', 'û', 'ü', 'ñ', 'ç', 'ý', '<', '>', '&');
 $currencies = new currencies();
 //$pdf->setPreferences(array("HideToolbar" => 'false', "HideWindowUI" => 'false'));
 $pdf->selectFont(BATCH_PDF_DIR . 'Helvetica.afm');
 $pdf->setFontFamily(BATCH_PDF_DIR . 'Helvetica.afm');
 // company name and details pulled from the my store address and phone number
 // in admin configuration mystore
 $y = $pdf->ezText(STORE_NAME_ADDRESS, COMPANY_HEADER_FONT_SIZE);
 $y -= 10;
 // logo image  set to right of the above .. change first number to move sideways
 //$pdf->addJpegFromFile(BATCH_PRINT_INC . 'templates/' . 'invoicelogo.jpg',365,730,85,85);
 // extra info boxs to be used by staff
 $pdf->setStrokeColor(0, 0, 0);
 $pdf->setLineStyle(0.5);
 $pdf->Rectangle(300, 745, 250, 70);
 $pdf->addText(310, 785, GENERAL_FONT_SIZE, TEXT_PACKED_BY);
 $pdf->addText(310, 760, GENERAL_FONT_SIZE, TEXT_VERIFIED_BY);
 // line between header order number and order date
 $pdf->setLineStyle(0.5);
 $pdf->line(LEFT_MARGIN, $y, LINE_LENGTH, $y);
 $pdf->ezSetY($y);
 $dup_y = $y;
 // order number
 $y = $pdf->ezText("<b>" . TEXT_ORDER_NUMBER . " </b>" . $orders['orders_prefix'] . $orders['orders_id'] . "\n\n", SUB_HEADING_FONT_SIZE);
 // order date
 if ($_POST['show_order_date']) {
     $pdf->ezSetY($dup_y);
     $pdf->ezText("<b>" . TEXT_ORDER_DATE . " </b>" . date(TEXT_ORDER_FORMAT, strtotime($order->info['date_purchased'])) . "\n\n", SUB_HEADING_FONT_SIZE, array('justification' => 'right'));
 }
Exemple #8
0
function init_pdf($pagesize, $orientation, $title)
{
    global $layout;
    $diff = array(177 => 'aogonek', 161 => 'Aogonek', 230 => 'cacute', 198 => 'Cacute', 234 => 'eogonek', 202 => 'Eogonek', 241 => 'nacute', 209 => 'Nacute', 179 => 'lslash', 163 => 'Lslash', 182 => 'sacute', 166 => 'Sacute', 188 => 'zacute', 172 => 'Zacute', 191 => 'zdot', 175 => 'Zdot', 185 => 'scaron', 169 => 'Scaron', 232 => 'ccaron', 200 => 'Ccaron', 236 => 'edot', 204 => 'Edot', 231 => 'iogonek', 199 => 'Iogonek', 249 => 'uogonek', 217 => 'Uogonek', 254 => 'umacron', 222 => 'Umacron', 190 => 'zcaron', 174 => 'Zcaron');
    $pdf = new Cezpdf($pagesize, $orientation);
    //landscape/portrait
    $pdf->isUnicode = true;
    $pdf->addInfo('Producer', 'LMS Developers');
    $pdf->addInfo('Title', $title);
    $pdf->addInfo('Creator', 'LMS ' . $layout['lmsv']);
    $pdf->setPreferences('FitWindow', '1');
    $pdf->ezSetMargins(PDF_MARGIN_TOP, PDF_MARGIN_BOTTOM, PDF_MARGIN_LEFT, PDF_MARGIN_RIGHT);
    $pdf->setLineStyle(0.5);
    $pdf->setFontFamily('arial', array('b' => 'arialbd'));
    $pdf->selectFont('arial', array('encoding' => 'WinAnsiEncoding', 'differences' => $diff), 1, true);
    return $pdf;
}
function CREATEPDF($p)
{
    $sGeo = explode("|", $p);
    $tokens = explode(",", $sGeo[0]);
    $sMin = explode(" ", $tokens[0]);
    $sMax = explode(" ", $tokens[2]);
    $sMinX = $sMin[0];
    $sMinY = $sMin[1];
    $oPDF = new Cezpdf('a4', 'portrait') or die("Kan PDFLib niet gebruiken");
    $oPDF->ezSetMargins(20, 20, 20, 20);
    $oPDF->openHere('Fit');
    $ext1 = $sMax[1] - $sMin[0];
    $ext2 = $sMax[2] - $sMin[1];
    $oPDF->setLineStyle(2);
    $oPDF->rectangle(20, 20, 595.28 - 40, 841.89 - 40);
    for ($iRecord = 1; $iRecord < count($sGeo) - 1; $iRecord++) {
        $oPDF->setLineStyle(0.1);
        $oPDF->setColor(1, 0, 0);
        $oPDF->setStrokeColor(0.5, 0.5, 0.5);
        $tokens = explode(",", $sGeo[$iRecord]);
        $point = array();
        $waarde = 0;
        //$waardex = (297.64);
        //$waardey = (420.945);
        //$waardex = 0;
        //$waardey = 0;
        for ($gRecord = 0; $gRecord < count($tokens); $gRecord++) {
            $sPunt = explode(" ", $tokens[$gRecord]);
            if ($gRecord == 0) {
                $sX = $sPunt[0] - $sMinX;
                $sY = $sPunt[1] - $sMinY;
                $point[$waarde] = $sX * 1000 / 0.3528 / 350000;
                $point[$waarde + 1] = $sY * 1000 / 0.3528 / 350000;
            } elseif ($gRecord == count($tokens) - 1) {
                $sX = $sPunt[1] - $sMinX;
                $sY = $sPunt[2] - $sMinY;
                $point[$waarde] = $sX * 1000 / 0.3528 / 350000;
                $point[$waarde + 1] = $sY * 1000 / 0.3528 / 350000;
            } else {
                $sX = $sPunt[1] - $sMinX;
                $sY = $sPunt[2] - $sMinY;
                $point[$waarde] = $sX * 1000 / 0.3528 / 350000;
                $point[$waarde + 1] = $sY * 1000 / 0.3528 / 350000;
            }
            $waarde = $waarde + 2;
        }
        $oPDF->polygon($point, $waarde / 2, 1);
        $oPDF->polygon($point, $waarde / 2);
        unset($point);
    }
    $oPDF->ezStream();
}
 /**
  * Crea un pdf con el estado de cuenta de el cliente especificado
  * @param Array $args,  $args['id_cliente'=>12[,'tipo_venta'=> 'credito | contado | saldo'] ], por default obtiene todas las compras del cliente
  */
 public static function imprimirEstadoCuentaCliente($args)
 {
     //verificamos que se haya especificado el id del cliente
     if (!isset($args['id_cliente'])) {
         Logger::log("Error al obtener el estado de cuenta, no se ha especificado un cliente.");
         die('{"success": false, "reason": "Error al obtener el estado de cuenta, no se ha especificado un cliente."}');
     }
     //verificamos que el cliente exista
     if (!($cliente = ClienteDAO::getByPK($args['id_cliente']))) {
         Logger::log("Error al obtener el estado de cuenta, no se tiene registro del cliente {$args['id_cliente']}.");
         die('{"success": false, "reason": "Error al obtener el estado de cuenta, no se tiene registro del cliente ' . $args['id_cliente'] . '"}');
     }
     //obtenemos los datos del emisor
     $estado_cuenta = estadoCuentaCliente($args);
     //buscar los datos del emisor
     if (!($emisor = PosConfigDAO::getByPK('emisor'))) {
         Logger::log("no encuentro los datos del emisor");
         die("no encuentro los datos del emisor");
     }
     $emisor = json_decode($emisor->getValue())->emisor;
     $sucursal = SucursalDAO::getByPK($_SESSION['sucursal']);
     if (!$sucursal) {
         die("Sucursal invalida");
     }
     include_once 'librerias/ezpdf/class.pdf.php';
     include_once 'librerias/ezpdf/class.ezpdf.php';
     $pdf = new Cezpdf();
     $pdf->selectFont('../server/librerias/ezpdf/fonts/Helvetica.afm');
     //margenes de un centimetro para toda la pagina
     $pdf->ezSetMargins(1, 1, 1, 1);
     /*
      * LOGO
      */
     if (!($logo = PosConfigDAO::getByPK('url_logo'))) {
         Logger::log("Verifique la configuracion del pos_config, no se encontro el camṕo 'url_logo'");
         die("Verifique la configuracion del POS, no se encontro el url del logo");
     }
     //addJpegFromFile(imgFileName,x,y,w,[h])
     //detectamos el tipo de imagen del logo
     if (substr($logo->getValue(), -3) == "jpg" || substr($logo->getValue(), -3) == "JPG" || substr($logo->getValue(), -4) == "jpeg" || substr($logo->getValue(), -4) == "JPEG") {
         $pdf->addJpegFromFile($logo->getValue(), puntos_cm(2), puntos_cm(25.5), puntos_cm(3.5));
     } elseif (substr($logo->getValue(), -3) == "png" || substr($logo->getValue(), -3) == "PNG") {
         $pdf->addPngFromFile($logo->getValue(), puntos_cm(2), puntos_cm(25.5), puntos_cm(3.5));
     } else {
         Logger::log("Verifique la configuracion del pos_config, la extension de la imagen del logo no es compatible");
         die("La extension de la imagen usada para el logo del negocio no es valida.");
     }
     /*     * ************************
      * ENCABEZADO
      * ************************* */
     $e = "<b>" . self::readableText($emisor->nombre) . "</b>\n";
     $e .= formatAddress($emisor);
     $e .= "RFC: " . $emisor->rfc . "\n\n";
     //datos de la sucursal
     $e .= "<b>Lugar de expedicion</b>\n";
     $e .= self::readableText($sucursal->getDescripcion()) . "\n";
     $e .= formatAddress($sucursal);
     $datos = array(array("emisor" => $e));
     $pdf->ezSetY(puntos_cm(28.6));
     $opciones_tabla = array();
     $opciones_tabla['showLines'] = 0;
     $opciones_tabla['showHeadings'] = 0;
     $opciones_tabla['shaded'] = 0;
     $opciones_tabla['fontSize'] = 8;
     $opciones_tabla['xOrientation'] = 'right';
     $opciones_tabla['xPos'] = puntos_cm(7.3);
     $opciones_tabla['width'] = puntos_cm(11);
     $opciones_tabla['textCol'] = array(0, 0, 0);
     $opciones_tabla['titleFontSize'] = 12;
     $opciones_tabla['rowGap'] = 3;
     $opciones_tabla['colGap'] = 3;
     $pdf->ezTable($datos, "", "", $opciones_tabla);
     $cajero = UsuarioDAO::getByPK($_SESSION['userid'])->getNombre();
     $datos = array(array("col" => "<b>Cajero</b>"), array("col" => self::readableText($cajero)), array("col" => "<b>Cliente</b>"), array("col" => self::readableText($cliente->getRazonSocial())), array("col" => "<b>Limite de  Credito</b>"), array("col" => FormatMoney($estado_cuenta->limite_credito, DONT_USE_HTML)), array("col" => "<b>Saldo</b>"), array("col" => FormatMoney($estado_cuenta->saldo, DONT_USE_HTML)));
     $pdf->ezSetY(puntos_cm(28.8));
     $opciones_tabla['xPos'] = puntos_cm(12.2);
     $opciones_tabla['width'] = puntos_cm(6);
     $opciones_tabla['showLines'] = 0;
     $opciones_tabla['shaded'] = 2;
     $opciones_tabla['shadeCol'] = array(1, 1, 1);
     //$opciones_tabla['shadeCol2'] = array(0.054901961, 0.756862745, 0.196078431);
     $opciones_tabla['shadeCol2'] = array(0.8984375, 0.95703125, 0.99609375);
     $pdf->ezTable($datos, "", "", $opciones_tabla);
     //roundRect($pdf, puntos_cm(12.2), puntos_cm(28.8), puntos_cm(6), puntos_cm(4.25));
     /**
      * ESTADO DE CUENTA
      */
     $elementos = array(array('id_venta' => 'Venta', 'fecha' => 'Fecha', 'sucursal' => 'Sucursal', 'cajero' => 'Cajero', 'tipo_venta' => 'Tipo', 'tipo_pago' => 'Pago', 'total' => 'Total', 'pagado' => 'Pagado', 'saldo' => 'Saldo'));
     foreach ($estado_cuenta->array_ventas as $venta) {
         $array_venta = array();
         $array_venta['id_venta'] = $venta['id_venta'];
         $array_venta['fecha'] = $venta['fecha'];
         $array_venta['sucursal'] = self::readableText($venta['sucursal']);
         $array_venta['cajero'] = self::readableText($venta['cajero']);
         $array_venta['cancelada'] = self::readableText($venta['cancelada']);
         $array_venta['tipo_venta'] = self::readableText($venta['tipo_venta']);
         $array_venta['tipo_pago'] = self::readableText($venta['tipo_pago']);
         $array_venta['total'] = FormatMoney($venta['total'], DONT_USE_HTML);
         $array_venta['pagado'] = FormatMoney($venta['pagado'], DONT_USE_HTML);
         $array_venta['saldo'] = FormatMoney($venta['saldo'], DONT_USE_HTML);
         array_push($elementos, $array_venta);
     }
     $pdf->ezText("", 8, array('justification' => 'center'));
     $pdf->ezSetY(puntos_cm(24));
     $opciones_tabla['xPos'] = puntos_cm(2);
     $opciones_tabla['width'] = puntos_cm(16.2);
     $pdf->ezTable($elementos, "", "Estado de Cuenta", $opciones_tabla);
     //roundRect($pdf, puntos_cm(2), puntos_cm(24.3), puntos_cm(16.2), puntos_cm(3.2));
     /*     * ************************
      * notas de abajo
      * ************************* */
     $pdf->setLineStyle(1);
     $pdf->setStrokeColor(0.3359375, 0.578125, 0.89453125);
     $pdf->line(puntos_cm(2), puntos_cm(1.3), puntos_cm(18.2), puntos_cm(1.3));
     $pdf->addText(puntos_cm(2), puntos_cm(1.0), 7, "Fecha de impresion: " . date("d/m/y") . " " . date("H:i:s"));
     //addJpegFromFile(imgFileName,x,y,w,[h])
     //$pdf->addJpegFromFile("../www/media/logo_simbolo.jpg", puntos_cm(15.9), puntos_cm(.25), 25);
     $pdf->addText(puntos_cm(16.7), puntos_cm(0.6), 8, "caffeina.mx");
     $pdf->ezStream();
 }
 function saldenliste_mv_pdf($monat, $jahr)
 {
     ob_clean();
     // ausgabepuffer leeren
     /* PDF AUSGABE */
     //include_once ('pdfclass/class.ezpdf.php');
     $pdf = new Cezpdf('a4', 'portrait');
     $pdf->selectFont('Helvetica.afm');
     $pdf->ezSetCmMargins(4.5, 0, 0, 0);
     /* Kopfzeile */
     $pdf->addJpegFromFile('includes/logos/logo_hv_sw.jpg', 220, 750, 175, 100);
     $pdf->setLineStyle(0.5);
     $pdf->addText(86, 743, 6, "BERLUS HAUSVERWALTUNG * Fontanestr. 1 * 14193 Berlin * Inhaber Wolfgang Wehrheim * Telefon: 89784477 * Fax: 89784479 * Email: info@berlus.de");
     $pdf->line(42, 750, 550, 750);
     /* Footer */
     $pdf->line(42, 50, 550, 50);
     $pdf->addText(170, 42, 6, "BERLUS HAUSVERWALTUNG *  Fontanestr. 1 * 14193 Berlin * Inhaber Wolfgang Wehrheim");
     $pdf->addText(150, 35, 6, "Bankverbindung: Dresdner Bank Berlin * BLZ: 100  800  00 * Konto-Nr.: 05 804 000 00 * Steuernummer: 24/582/61188");
     $pdf->addInfo('Title', "Saldenliste {$objekt_name} {$monatname} {$jahr}");
     $pdf->addInfo('Author', $_SESSION[username]);
     $pdf->ezStartPageNumbers(550, 755, 7, '', "Seite {PAGENUM} von {TOTALPAGENUM}");
     // echo "Monatsbericht Mieter - Monatsbericht Kostenkonten<br>";
     // echo "<h3>Aktuelle Mieterstatistik mit ausgezogene Mieter<br></h3>";
     $s = new statistik();
     $jahr = $_REQUEST[jahr];
     if (empty($jahr)) {
         $jahr = date("Y");
     } else {
         if (strlen($jahr) < 4) {
             $jahr = date("Y");
         }
     }
     // $jahr_monat = date("Y-m");
     // $jahr = date("Y");
     $monat = $_REQUEST[monat];
     if (empty($monat)) {
         $monat = date("m");
     } else {
         if (strlen($monat) < 2) {
             $monat = '0' . $monat;
         }
     }
     // $monat = '04';
     $jahr_monat = $jahr . '-' . $monat;
     // $jahr_vormonat = mktime(0, 0, 0, date("m")-1, date("d"), date("Y"));
     // $jahr_vormonat = date("Y-m",$jahr_vormonat);
     $bg = new berlussimo_global();
     $link = "?daten=mietvertrag_raus&mietvertrag_raus=saldenliste";
     $bg->objekt_auswahl_liste($link);
     $bg->monate_jahres_links($jahr, $link);
     if (isset($_SESSION['objekt_id'])) {
         $objekt_id = $_SESSION['objekt_id'];
         $einheit_info = new einheit();
         $o = new objekt();
         $objekt_name = $o->get_objekt_name($objekt_id);
         $monatname = monat2name($monat);
         $pdf->addText(70, 755, 10, "Saldenliste {$objekt_name} {$monatname} {$jahr}");
         $pdf->ezSetDy(25);
         $pdf->ezSetCmMargins(3, 3, 3, 3);
         $text_options = array(left => 0, justification => 'left');
         $pdf->ezText("<b>Einheit</b>", 8, $text_options);
         $pdf->ezSetDy(9);
         $text_options = array(left => 100, justification => 'left');
         $pdf->ezText("<b>Mieter</b>", 8, $text_options);
         $pdf->ezSetDy(9);
         $text_options = array(left => 270, justification => 'left');
         $pdf->ezText("<b>Einzug</b>", 8, $text_options);
         $pdf->ezSetDy(9);
         $text_options = array(left => 320, justification => 'left');
         $pdf->ezText("<b>Auszug</b>", 8, $text_options);
         $pdf->ezSetDy(9);
         $text_options = array(right => 0, justification => 'right');
         $pdf->ezText("<b>SALDO EUR</b>", 8, $text_options);
         /* Aktuell bzw. gewünschten Monat berechnen */
         $ob = new objekt();
         $einheiten_array = $ob->einheiten_objekt_arr($objekt_id);
         // $einheiten_array = $s->vermietete_monat_jahr($jahr_monat,$objekt_id, '');
         /*
          * echo "<pre>";
          * print_r($einheiten_array);
          * echo "<h1> EINHEITEN: $anzahl_aktuell</h1>";
          * $mv_array = $einheit_info->get_mietvertrag_ids('7');
          * print_r($mv_array);
          */
         $summe_sv = 0;
         $summe_mieten = 0;
         $summe_umlagen = 0;
         $summe_akt_gsoll = 0;
         $summe_g_zahlungen = 0;
         $summe_saldo_neu = 0;
         $anzahl_aktuell = count($einheiten_array);
         $miete = new miete();
         $zeilen_pro_seite = 60;
         $aktuelle_zeile = 0;
         for ($i = 0; $i < $anzahl_aktuell; $i++) {
             $mv_array = $einheit_info->get_mietvertraege_bis("" . $einheiten_array[$i]['EINHEIT_ID'] . "", $jahr, $monat);
             $mv_anzahl = count($mv_array);
             if (is_array($mv_array)) {
                 for ($b = 0; $b < $mv_anzahl; $b++) {
                     $mv_id = $mv_array[$b]['MIETVERTRAG_ID'];
                     $mk = new mietkonto();
                     $mieter_ids = $mk->get_personen_ids_mietvertrag($mv_id);
                     for ($a = 0; $a < count($mieter_ids); $a++) {
                         $mieter_daten_arr[] = $mk->get_person_infos($mieter_ids[$a][PERSON_MIETVERTRAG_PERSON_ID]);
                     }
                     // $miete->mietkonto_berechnung_monatsgenau($mv_id, $jahr, $monat);
                     $end_saldoo = $miete->saldo_berechnen_monatsgenau($mv_id, $monat, $jahr);
                     $zeile = $zeile + 1;
                     $einheit_kurzname = $einheiten_array[$i]['EINHEIT_KURZNAME'];
                     $vn = RTRIM(LTRIM($mieter_daten_arr['0']['0']['PERSON_VORNAME']));
                     $nn = RTRIM(LTRIM($mieter_daten_arr['0']['0']['PERSON_NACHNAME']));
                     $akt_gesamt_soll = $miete->saldo_vormonat_stand + $miete->sollmiete_warm;
                     $this->get_mietvertrag_infos_aktuell($mv_id);
                     $l_tag_akt_monat = letzter_tag_im_monat($monat, $jahr);
                     $l_datum = "{$jahr}-{$monat}-{$l_tag_akt_monat}";
                     if ($this->mietvertrag_bis == '0000-00-00' or $this->mietvertrag_bis > $l_datum) {
                         $mv_bis = 'aktuell';
                     } else {
                         $mv_bis = date_mysql2german($this->mietvertrag_bis);
                     }
                     $mv_von = date_mysql2german($this->mietvertrag_von);
                     $end_saldoo = nummer_punkt2komma($end_saldoo);
                     if ($mv_bis == 'aktuell') {
                         // echo "$zeile. $einheit_kurzname $nn $vn SALDO NEU: $end_saldoo <br>";
                         $pdf->ezSetCmMargins(3, 3, 3, 3);
                         $text_options = array(left => 0, justification => 'left');
                         $pdf->ezText("{$einheit_kurzname}", 8, $text_options);
                         $pdf->ezSetDy(9);
                         $text_options = array(left => 100, justification => 'left');
                         $pdf->ezText("{$nn} {$vn}", 8, $text_options);
                         $pdf->ezSetDy(9);
                         $text_options = array(left => 270, justification => 'left');
                         $pdf->ezText("{$mv_von}", 8, $text_options);
                         $pdf->ezSetDy(9);
                         $text_options = array(left => 320, justification => 'left');
                         $pdf->ezText("", 8, $text_options);
                         $pdf->ezSetDy(9);
                         $text_options = array(right => 0, justification => 'right');
                         $pdf->ezText("{$end_saldoo}", 8, $text_options);
                         $aktuelle_zeile++;
                     } else {
                         // echo "<b>$zeile. $einheit_kurzname $nn $vn SALDO NEU: $end_saldoo € BEENDET AM :$mv_bis €</b><br>";
                         $pdf->ezSetCmMargins(3, 3, 3, 3);
                         $text_options = array(left => 0, justification => 'left');
                         $pdf->ezText("{$einheit_kurzname}", 8, $text_options);
                         $pdf->ezSetDy(9);
                         $text_options = array(left => 100, justification => 'left');
                         $pdf->ezText("{$nn} {$vn}", 8, $text_options);
                         $pdf->ezSetDy(9);
                         $text_options = array(left => 270, justification => 'left');
                         $pdf->ezText("{$mv_von}", 8, $text_options);
                         $pdf->ezSetDy(9);
                         $text_options = array(left => 320, justification => 'left');
                         $pdf->ezText("{$mv_bis}", 8, $text_options);
                         $pdf->ezSetDy(9);
                         $text_options = array(right => 0, justification => 'right');
                         $pdf->ezText("{$end_saldoo}", 8, $text_options);
                         $aktuelle_zeile++;
                     }
                     if ($zeilen_pro_seite == $aktuelle_zeile) {
                         $pdf->ezNewPage();
                         /* Kopfzeile */
                         $pdf->addJpegFromFile('includes/logos/logo_hv_sw.jpg', 220, 750, 175, 100);
                         $pdf->setLineStyle(0.5);
                         $pdf->addText(86, 743, 6, "BERLUS HAUSVERWALTUNG * Fontanestr. 1 * 14193 Berlin * Inhaber Wolfgang Wehrheim * Telefon: 89784477 * Fax: 89784479 * Email: info@berlus.de");
                         $pdf->line(42, 750, 550, 750);
                         /* Footer */
                         $pdf->line(42, 50, 550, 50);
                         $pdf->addText(170, 42, 6, "BERLUS HAUSVERWALTUNG *  Fontanestr. 1 * 14193 Berlin * Inhaber Wolfgang Wehrheim");
                         $pdf->addText(150, 35, 6, "Bankverbindung: Dresdner Bank Berlin * BLZ: 100  800  00 * Konto-Nr.: 05 804 000 00 * Steuernummer: 24/582/61188");
                         $pdf->addInfo('Title', "Saldenliste {$objekt_name} {$monatname} {$jahr}");
                         $pdf->addText(70, 755, 10, "Saldenliste  {$objekt_name} {$monatname} {$jahr}");
                         $pdf->ezStartPageNumbers(550, 755, 7, '', "Seite {PAGENUM} von {TOTALPAGENUM}");
                         /* Überschriftzeile */
                         $pdf->ezSetDy(-18);
                         $pdf->ezSetCmMargins(3, 3, 3, 3);
                         $text_options = array(left => 0, justification => 'left');
                         $pdf->ezText("<b>Einheit</b>", 8, $text_options);
                         $pdf->ezSetDy(9);
                         $text_options = array(left => 100, justification => 'left');
                         $pdf->ezText("<b>Mieter</b>", 8, $text_options);
                         $pdf->ezSetDy(9);
                         $text_options = array(left => 270, justification => 'left');
                         $pdf->ezText("<b>Einzug</b>", 8, $text_options);
                         $pdf->ezSetDy(9);
                         $text_options = array(left => 320, justification => 'left');
                         $pdf->ezText("<b>Auszug</b>", 8, $text_options);
                         $pdf->ezSetDy(9);
                         $text_options = array(right => 0, justification => 'right');
                         $pdf->ezText("<b>SALDO EUR</b>", 8, $text_options);
                         $aktuelle_zeile = 0;
                     }
                     unset($mieter_daten_arr);
                     unset($nn);
                     unset($vn);
                 }
                 // end if is_array mv_ids
             }
         }
         // hinweis_ausgeben("Saldenliste mit Vormieter für $objekt_name wurde erstellt<br>");
         ob_clean();
         // ausgabepuffer leeren
         $pdf->ezStopPageNumbers();
         $pdf->ezStream();
         /* Falls kein Objekt ausgewählt */
     } else {
         echo "Objekt auswählen";
     }
 }
Exemple #12
0
 /**
  * Creates a PDF document and sends this pricelist to the client
  *
  * Unfortunately, ezpdf does not return anything after printing the
  * document, so there's no way to tell whether it has succeeded.
  * Thus, you should not rely on the return value, except when it is
  * false -- in that case, loading of some data failed.
  * @return  boolean           False on failure, true on supposed success
  */
 function send_as_pdf()
 {
     global $objInit, $_ARRAYLANG;
     if (!$this->load()) {
         return \Message::error($_ARRAYLANG['TXT_SHOP_PRICELIST_ERROR_LOADING']);
     }
     $objPdf = new \Cezpdf('A4');
     $objPdf->setEncryption('', '', array('print'));
     $objPdf->selectFont(\Cx\Core\Core\Controller\Cx::instanciate()->getCodeBaseLibraryPath() . '/ezpdf/fonts/' . $this->font);
     $objPdf->ezSetMargins(0, 0, 0, 0);
     // Reset margins
     $objPdf->setLineStyle(0.5);
     $marginTop = 30;
     $biggerCountTop = $biggerCountBottom = 0;
     $arrHeaderLeft = $arrHeaderRight = $arrFooterLeft = $arrFooterRight = array();
     if ($this->header) {
         // header should be shown
         $arrHeaderLeft = explode("\n", $this->header_left);
         $arrHeaderRight = explode("\n", $this->header_right);
         $countLeft = count($arrHeaderLeft);
         $countRight = count($arrHeaderRight);
         $biggerCountTop = $countLeft > $countRight ? $countLeft : $countRight;
         $marginTop = $biggerCountTop * 14 + 36;
     }
     // Bottom margin
     $marginBottom = 20;
     $arrFooterRight = array();
     if ($this->footer) {
         // footer should be shown
         // Old, obsolete:
         $this->footer_left = str_replace('<--DATE-->', date(ASCMS_DATE_FORMAT_DATE, time()), $this->footer_left);
         $this->footer_right = str_replace('<--DATE-->', date(ASCMS_DATE_FORMAT_DATE, time()), $this->footer_right);
         // New:
         $this->footer_left = str_replace('[DATE]', date(ASCMS_DATE_FORMAT_DATE, time()), $this->footer_left);
         $this->footer_right = str_replace('[DATE]', date(ASCMS_DATE_FORMAT_DATE, time()), $this->footer_right);
         $arrFooterLeft = explode("\n", $this->footer_left);
         $arrFooterRight = explode("\n", $this->footer_right);
         $countLeft = count($arrFooterLeft);
         $countRight = count($arrFooterRight);
         $biggerCountBottom = $countLeft > $countRight ? $countLeft : $countRight;
         $marginBottom = $biggerCountBottom * 20 + 20;
     }
     // Borders
     if ($this->border) {
         $linesForAllPages = $objPdf->openObject();
         $objPdf->saveState();
         $objPdf->setStrokeColor(0, 0, 0, 1);
         $objPdf->rectangle(10, 10, 575.28, 821.89);
         $objPdf->restoreState();
         $objPdf->closeObject();
         $objPdf->addObject($linesForAllPages, 'all');
     }
     // Header
     $headerArray = array();
     $startpointY = 0;
     if ($this->header) {
         $objPdf->ezSetY(830);
         $headerForAllPages = $objPdf->openObject();
         $objPdf->saveState();
         for ($i = 0; $i < $biggerCountTop; ++$i) {
             $headerArray[$i] = array('left' => isset($arrHeaderLeft[$i]) ? $arrHeaderLeft[$i] : '', 'right' => isset($arrHeaderRight[$i]) ? $arrHeaderRight[$i] : '');
         }
         $tempY = $objPdf->ezTable($headerArray, '', '', array('showHeadings' => 0, 'fontSize' => $this->font_size_header, 'shaded' => 0, 'width' => 540, 'showLines' => 0, 'xPos' => 'center', 'xOrientation' => 'center', 'cols' => array('right' => array('justification' => 'right'))));
         $tempY -= 5;
         if ($this->border) {
             $objPdf->setStrokeColor(0, 0, 0);
             $objPdf->line(10, $tempY, 585.28, $tempY);
         }
         $startpointY = $tempY - 5;
         $objPdf->restoreState();
         $objPdf->closeObject();
         $objPdf->addObject($headerForAllPages, 'all');
     }
     // Footer
     $pageNumbersX = $pageNumbersY = $pageNumbersFont = 0;
     if ($this->footer) {
         $footerForAllPages = $objPdf->openObject();
         $objPdf->saveState();
         $tempY = $marginBottom - 5;
         if ($this->border) {
             $objPdf->setStrokeColor(0, 0, 0);
             $objPdf->line(10, $tempY, 585.28, $tempY);
         }
         // length of the longest word
         $longestWord = 0;
         foreach ($arrFooterRight as $line) {
             if ($longestWord < strlen($line)) {
                 $longestWord = strlen($line);
             }
         }
         for ($i = $biggerCountBottom - 1; $i >= 0; --$i) {
             if (empty($arrFooterLeft[$i])) {
                 $arrFooterLeft[$i] = '';
             }
             if (empty($arrFooterRight[$i])) {
                 $arrFooterRight[$i] = '';
             }
             if ($arrFooterLeft[$i] == '<--PAGENUMBER-->' || $arrFooterLeft[$i] == '[PAGENUMBER]') {
                 $pageNumbersX = 65;
                 $pageNumbersY = $tempY - 18 - $i * $this->font_size_footer;
                 $pageNumbersFont = $this->font_size_list;
             } else {
                 $objPdf->addText(25, $tempY - 18 - $i * $this->font_size_footer, $this->font_size_footer, $arrFooterLeft[$i]);
             }
             if ($arrFooterRight[$i] == '<--PAGENUMBER-->' || $arrFooterRight[$i] == '[PAGENUMBER]') {
                 $pageNumbersX = 595.28 - 25;
                 $pageNumbersY = $tempY - 18 - $i * $this->font_size_footer;
                 $pageNumbersFont = $this->font_size_list;
             } else {
                 // Properly align right
                 $width = $objPdf->getTextWidth($this->font_size_footer, $arrFooterRight[$i]);
                 $objPdf->addText(595.28 - $width - 25, $tempY - 18 - $i * $this->font_size_footer, $this->font_size_footer, $arrFooterRight[$i]);
             }
         }
         $objPdf->restoreState();
         $objPdf->closeObject();
         $objPdf->addObject($footerForAllPages, 'all');
     }
     // Page numbers
     if (isset($pageNumbersX)) {
         $objPdf->ezStartPageNumbers($pageNumbersX, $pageNumbersY, $pageNumbersFont, '', $_ARRAYLANG['TXT_SHOP_PRICELIST_FORMAT_PAGENUMBER'], 1);
     }
     // Margins
     $objPdf->ezSetMargins($marginTop, $marginBottom, 30, 30);
     // Product table
     if (isset($startpointY)) {
         $objPdf->ezSetY($startpointY);
     }
     $objInit->backendLangId = $this->lang_id;
     $_ARRAYLANG = $objInit->loadLanguageData('Shop');
     Currency::setActiveCurrencyId($this->currency_id);
     $currency_symbol = Currency::getActiveCurrencySymbol();
     $category_ids = $this->category_ids();
     if ($category_ids == '*') {
         $category_ids = null;
     }
     $count = 1000;
     // Be sensible!
     // Pattern is "%" because all-empty parameters will result in an
     // empty array!
     $arrProduct = Products::getByShopParams($count, 0, null, $category_ids, null, '%', null, null, '`category_id` ASC, `name` ASC');
     $arrCategoryName = ShopCategories::getNameArray();
     $arrOutput = array();
     foreach ($arrProduct as $product_id => $objProduct) {
         $categoryIds = explode(',', $objProduct->category_id());
         $arrCategoryNames = array();
         foreach ($categoryIds as $categoryId) {
             $arrCategoryNames[] = $arrCategoryName[$categoryId];
         }
         //$objProduct = new Product();
         $arrOutput[$product_id] = array('product_name' => self::decode($objProduct->name()), 'category_name' => self::decode(implode(', ', $arrCategoryNames)), 'product_code' => self::decode($objProduct->code()), 'product_id' => self::decode($objProduct->id()), 'price' => ($objProduct->discount_active() ? "S " . Currency::formatPrice($objProduct->discountprice()) : Currency::formatPrice($objProduct->price())) . ' ' . $currency_symbol);
     }
     $objPdf->ezTable($arrOutput, array('product_name' => '<b>' . self::decode($_ARRAYLANG['TXT_SHOP_PRODUCT_NAME']) . '</b>', 'category_name' => '<b>' . self::decode($_ARRAYLANG['TXT_SHOP_CATEGORY_NAME']) . '</b>', 'product_code' => '<b>' . self::decode($_ARRAYLANG['TXT_SHOP_PRODUCT_CODE']) . '</b>', 'product_id' => '<b>' . self::decode($_ARRAYLANG['TXT_ID']) . '</b>', 'price' => '<b>' . self::decode($_ARRAYLANG['TXT_SHOP_PRICE']) . '</b>'), '', array('showHeadings' => 1, 'fontSize' => $this->font_size_list, 'width' => 530, 'innerLineThickness' => 0.5, 'outerLineThickness' => 0.5, 'shaded' => 2, 'shadeCol' => array(hexdec(substr($this->row_color_1, 0, 2)) / 255, hexdec(substr($this->row_color_1, 2, 2)) / 255, hexdec(substr($this->row_color_1, 4, 2)) / 255), 'shadeCol2' => array(hexdec(substr($this->row_color_2, 0, 2)) / 255, hexdec(substr($this->row_color_2, 2, 2)) / 255, hexdec(substr($this->row_color_2, 4, 2)) / 255), 'cols' => array('product_name' => array('width' => 255), 'category_name' => array('width' => 130), 'product_code' => array('width' => 50), 'product_id' => array('width' => 40, 'justification' => 'right'), 'price' => array('width' => 55, 'justification' => 'right'))));
     $objPdf->ezStream();
     // Never reached
     return true;
 }
         $pdf->ezText('', 280, array('justification' => 'center'));
         $pdf->ezText($swimmername, 40, array('justification' => 'center'));
         //			$pdf->ezText($clubname, 16, array('justification' => 'center'));
         $pdf->ezText('', 20, array('justification' => 'center'));
         $pdf->ezText(_('har deltaget i'), 20, array('justification' => 'center'));
         $pdf->ezText('', 20, array('justification' => 'center'));
         $pdf->ezText($aryCompo['name'] . ' - ' . $date, 30, array('justification' => 'center'));
         $pdf->ezText('', 20, array('justification' => 'center'));
         $pdf->ezText(_('med følgende resultat:'), 20, array('justification' => 'center'));
         $pdf->ezText('', 20, array('justification' => 'center'));
         foreach ($results as $r) {
             $pdf->ezText($r['Resultat'], 20, array('justification' => 'center'));
         }
         $pdf->ezSetMargins(0, 0, 28.3, 75);
         $pdf->ezSetY(80);
         $pdf->setLineStyle(1);
         $pdf->line(300, 80, 530, 80);
         $pdf->ezText(_('Stævneleder') . ' ' . $aryCompo['leader'], 15, array('justification' => 'right'));
         $pdf->closeObject();
         $pdf->addObject($text);
     }
     $swimmername = $swimmer['sname'];
     $clubname = $swimmer['cname'];
     $results = array();
     $count = 0;
     $currentswimmer = $swimmer['sid'];
 }
 if ($swimmer['distance'] == 25) {
     if ($result = $db->getSwimmerBestTime($id, $currentswimmer, 25)) {
         if ($result['result'] > 0) {
             $min = floor($result['result'] / 60);
 function kosten_einnahmen_pdf($geldkontos_arr, $monat, $jahr)
 {
     $anzahl_konten = count($geldkontos_arr);
     $datum_jahresanfang = "01.01.{$jahr}";
     if ($anzahl_konten) {
         ob_clean();
         // ausgabepuffer leeren
         /* PDF AUSGABE */
         //include_once ('pdfclass/class.ezpdf.php');
         $pdf = new Cezpdf('a4', 'portrait');
         $pdf->selectFont('Helvetica.afm');
         $pdf->ezSetCmMargins(4.5, 0, 0, 0);
         /* Kopfzeile */
         $pdf->addJpegFromFile('includes/logos/logo_hv_sw.jpg', 220, 750, 175, 100);
         $pdf->setLineStyle(0.5);
         $pdf->addText(86, 743, 6, "BERLUS HAUSVERWALTUNG * Fontanestr. 1 * 14193 Berlin * Inhaber Wolfgang Wehrheim * Telefon: 89784477 * Fax: 89784479 * Email: info@berlus.de");
         $pdf->line(42, 750, 550, 750);
         /* Footer */
         $pdf->line(42, 50, 550, 50);
         $pdf->addText(170, 42, 6, "BERLUS HAUSVERWALTUNG *  Fontanestr. 1 * 14193 Berlin * Inhaber Wolfgang Wehrheim");
         $pdf->addText(150, 35, 6, "Bankverbindung: Dresdner Bank Berlin * BLZ: 100  800  00 * Konto-Nr.: 05 804 000 00 * Steuernummer: 24/582/61188");
         $pdf->addInfo('Title', "Monatsbericht {$objekt_name} {$monatname} {$jahr}");
         $pdf->addInfo('Author', $_SESSION['username']);
         $pdf->ezStartPageNumbers(100, 760, 8, '', 'Seite {PAGENUM} von {TOTALPAGENUM}', 1);
         $g_kosten_jahr = 0.0;
         /* Schleife für jedes Geldkonto bzw. Zeilenausgabe */
         for ($a = 0; $a < $anzahl_konten; $a++) {
             $geldkonto_id = $geldkontos_arr[$a]['GELDKONTO_ID'];
             $objekt_name = $geldkontos_arr[$a]['OBJEKT_NAME'];
             $this->kontostand_tagesgenau_bis($geldkonto_id, $datum_jahresanfang);
             $kontostand_jahresanfang = $this->summe_konto_buchungen;
             $this->summe_kontobuchungen_jahr_monat($geldkonto_id, '80001', $jahr, $monat);
             $summe_mieteinnahmen_monat = $this->summe_konto_buchungen;
             $this->summe_miete_jahr($geldkonto_id, '80001', $jahr, $monat);
             $summe_mieteinnahmen_jahr = $this->summe_konto_buchungen;
             $this->summe_kosten_jahr_monat($geldkonto_id, '80001', $jahr, $monat);
             $summe_kosten_monat = $this->summe_konto_buchungen;
             $this->summe_kosten_jahr($geldkonto_id, '80001', $jahr, $monat);
             $summe_kosten_jahr = $this->summe_konto_buchungen;
             /*
              * if($monat < 12){
              * $monat_neu = $monat + 1;
              * $jahr_neu = $jahr;
              * }
              * if($monat == 12){
              * $monat_neu = 1;
              * $jahr_neu = $jahr +1;
              * }
              */
             $monat = sprintf('%02d', $monat);
             $letzter_tag_m = letzter_tag_im_monat($monat, $jahr);
             $datum_bis = "{$letzter_tag_m}.{$monat}.{$jahr}";
             $this->kontostand_tagesgenau_bis($geldkonto_id, $datum_bis);
             $kontostand_heute = $this->summe_konto_buchungen;
             $monatname = monat2name($monat);
             /* Gesamtsummen bilden */
             $g_kontostand_ja = $g_kontostand_ja + $kontostand_jahresanfang;
             $g_me_monat = $g_me_monat + $summe_mieteinnahmen_monat;
             $g_me_jahr = $g_me_jahr + $summe_mieteinnahmen_jahr;
             $g_kosten_monat = $g_kosten_monat + $summe_kosten_monat;
             $g_kosten_jahr += $summe_kosten_jahr;
             $g_kontostand_akt = $g_kontostand_akt + $kontostand_heute;
             $kontostand_jahresanfang = nummer_punkt2komma($kontostand_jahresanfang);
             $summe_mieteinnahmen_monat = nummer_punkt2komma($summe_mieteinnahmen_monat);
             $summe_mieteinnahmen_jahr = nummer_punkt2komma($summe_mieteinnahmen_jahr);
             $summe_kosten_monat = nummer_punkt2komma($summe_kosten_monat);
             $summe_kosten_jahr = nummer_punkt2komma($summe_kosten_jahr);
             $kontostand_heute = nummer_punkt2komma($kontostand_heute);
             // echo "<b>$kontostand_jahresanfang| $summe_mieteinnahmen_monat|$summe_mieteinnahmen_jahr|$summe_kosten_monat|$summe_kosten_jahr|$kontostand_heute</b><br>";
             $table_arr[$a]['OBJEKT_NAME'] = $objekt_name;
             $table_arr[$a]['KONTOSTAND1_1'] = $kontostand_jahresanfang;
             $table_arr[$a]['ME_MONAT'] = $summe_mieteinnahmen_monat;
             $table_arr[$a]['ME_JAHR'] = $summe_mieteinnahmen_jahr;
             $table_arr[$a]['KOSTEN_MONAT'] = $summe_kosten_monat;
             $table_arr[$a]['KOSTEN_JAHR'] = $summe_kosten_jahr;
             $table_arr[$a]['KONTOSTAND_AKTUELL'] = "<b>{$kontostand_heute}</b>";
         }
         // end for
         /* Summenzeile hinzufügen */
         $table_arr[$a]['OBJEKT_NAME'] = "<b>Summe incl. FON</b>";
         $table_arr[$a]['KONTOSTAND1_1'] = '<b>' . nummer_punkt2komma($g_kontostand_ja) . '</b>';
         $table_arr[$a]['ME_MONAT'] = '<b>' . nummer_punkt2komma($g_me_monat) . '</b>';
         $table_arr[$a]['ME_JAHR'] = '<b>' . nummer_punkt2komma($g_me_jahr) . '</b>';
         $table_arr[$a]['KOSTEN_MONAT'] = '<b>' . nummer_punkt2komma($g_kosten_monat) . '</b>';
         $table_arr[$a]['KOSTEN_JAHR'] = '<b>' . nummer_punkt2komma($g_kosten_jahr) . '</b>';
         $table_arr[$a]['KONTOSTAND_AKTUELL'] = '<b>' . nummer_punkt2komma($g_kontostand_akt) . '</b>';
         $pdf->ezTable($table_arr, array('OBJEKT_NAME' => 'Objekt', 'KONTOSTAND1_1' => "Kontostand {$datum_jahresanfang}", 'ME_MONAT' => "Mieten Einnahmen {$monatname}", 'ME_JAHR' => "Mieten Einnahmen {$jahr}", 'KOSTEN_MONAT' => "Kosten {$monatname}", 'KOSTEN_JAHR' => "Kosten {$jahr}", 'KONTOSTAND_AKTUELL' => "Kontostand"), '<b>Kosten & Einnahmen / Objekt (Tabellarische übersicht)</b>', array('shaded' => 0, 'width' => '500', 'justification' => 'right', 'cols' => array('KONTOSTAND1_1' => array('justification' => 'right'), 'ME_MONAT' => array('justification' => 'right'), 'ME_MONAT' => array('justification' => 'right'), 'ME_JAHR' => array('justification' => 'right'), 'KOSTEN_MONAT' => array('justification' => 'right'), 'KOSTEN_JAHR' => array('justification' => 'right'), 'KONTOSTAND_AKTUELL' => array('justification' => 'right'))));
         ob_clean();
         // ausgabepuffer leeren
         header("Content-type: application/pdf");
         // wird von MSIE ignoriert
         $pdf->ezStream();
     } else {
         echo "Keine Daten Error 65922";
     }
 }
function creaPDF($colname_factura, $tmpName)
{
    global $database_f4, $f4, $interface, $setsProlec, $url_dir;
    $FWK_PDFFONTS = 'pdf/fonts/';
    $FWK_PDFDEFAULTFONT = '/face5/' . $url_dir . '/f4/extensiones/pdf/fonts/Helvetica.afm';
    $FWK_PDFCOURIERFONT = 'pdf/fonts/Courier.afm';
    // Obtener factura y sus anexos
    $TIPOSCOMPROBANTEMXP = array(1 => "Factura", 3 => "Nota de Cr.", 2 => "NOTA DE DEBITO");
    mysql_select_db($database_f4, $f4);
    $query_factura = sprintf("SELECT  facturas.idfactura,  facturas.idempresa,  facturas.idsello,\n\tfacturas.serie, facturas.folio, archivo,\n\tdate_format( facturas.timestampemision, '%%d/%%m/%%Y %%T') as timestampemision,\n\tfacturas.noaprob, facturas.rfccliente, facturas.estatus, facturas.sello, facturas.cadena, facturas.factura,\n\tfacturas.idif, facturas.tipocfd, empresa.bu\n\tFROM facturas inner join empresa on (facturas.idempresa=empresa.idempresa)\n\tWHERE facturas.idfactura = %s", $colname_factura);
    $factura = mysql_query($query_factura, $f4);
    $row_factura = mysql_fetch_assoc($factura);
    $totalRows_factura = mysql_num_rows($factura);
    print_r($row_factura);
    mysql_select_db($database_f4, $f4);
    $query_partida = sprintf("SELECT * FROM face_partidas WHERE face_factura_idface_factura = %s ORDER BY numero ASC", $row_factura['idif']);
    $partidas = mysql_query($query_partida, $f4);
    $partidasArray = array();
    while ($partRow = mysql_fetch_assoc($partidas)) {
        array_push($partidasArray, $partRow);
    }
    $dom = new DOMDocument();
    $dom->loadXML(base64_decode($row_factura['factura']));
    $NS = "http://www.sat.gob.mx/cfd/2";
    $NSP = "";
    $xp = new DOMXPath($dom);
    $nsElems = $dom->getElementsByTagNameNS($NS, 'Comprobante');
    if ($nsElems->item(0) != null) {
        $xp->registerNamespace("C", "http://www.sat.gob.mx/cfd/2");
        $NSP = "C:";
    }
    $comprobanteNode = null;
    $elements = $xp->query("/" . $NSP . "Comprobante");
    foreach ($elements as $comprobanteNode) {
    }
    $emisorNode = null;
    $elements = $xp->query("/" . $NSP . "Comprobante/" . $NSP . "Emisor");
    foreach ($elements as $emisorNode) {
    }
    $emisordomicilioNode = null;
    $elements = $xp->query("/" . $NSP . "Comprobante/" . $NSP . "Emisor/" . $NSP . "DomicilioFiscal");
    foreach ($elements as $emisordomicilioNode) {
    }
    $expedidoNode = null;
    $elements = $xp->query("/" . $NSP . "Comprobante/" . $NSP . "Emisor/" . $NSP . "ExpedidoEn");
    foreach ($elements as $expedidoNode) {
    }
    $receptorNode = null;
    $elements = $xp->query("/" . $NSP . "Comprobante/" . $NSP . "Receptor");
    foreach ($elements as $receptorNode) {
    }
    $receptordomicilioNode = null;
    $elements = $xp->query("/" . $NSP . "Comprobante/" . $NSP . "Receptor/" . $NSP . "Domicilio");
    foreach ($elements as $receptordomicilioNode) {
    }
    $conceptoNode = null;
    $conceptos = $xp->query("/" . $NSP . "Comprobante/" . $NSP . "Conceptos/" . $NSP . "Concepto");
    $impuestosNode = null;
    $elements = $xp->query("/" . $NSP . "Comprobante/" . $NSP . "Impuestos");
    foreach ($elements as $impuestosNode) {
    }
    $trasladoNode = null;
    $traslados = $xp->query("/" . $NSP . "Comprobante/" . $NSP . "Impuestos/" . $NSP . "Traslados/" . $NSP . "Traslado");
    $retencionNode = null;
    $retenciones = $xp->query("/" . $NSP . "Comprobante/" . $NSP . "Impuestos/" . $NSP . "Retenciones/" . $NSP . "Retencion");
    mysql_select_db($database_f4, $f4);
    $query_empresa = sprintf("SELECT * FROM empresa WHERE idempresa = %s", $row_factura['idempresa']);
    $empresa = mysql_query($query_empresa, $f4);
    $row_empresa = mysql_fetch_assoc($empresa);
    mysql_select_db($database_f4, $f4);
    $query_sello = sprintf("SELECT * FROM sellos WHERE idsello = %s", $row_factura['idsello']);
    $sello = mysql_query($query_sello, $f4);
    $row_sello = mysql_fetch_assoc($sello);
    mysql_select_db($database_f4, $f4);
    $query_sucursal = "SELECT * FROM sucursales WHERE sucursal = '" . $row_sello['sucursal'] . "'";
    $sucursal = mysql_query($query_sucursal, $f4);
    $row_sucursal = mysql_fetch_assoc($sucursal);
    $totalRows_sucursal = mysql_num_rows($sucursal);
    //descuentos
    $desc1 = 0.0;
    $desc2 = 0.0;
    //==================================================================================================================
    // Crea el documento pdf
    $pdf = new Cezpdf('LETTER', 'portrait');
    //'LETTER' (612.00,792.00)
    $pdf->ezSetMargins(100, 30, 30, 30);
    //$pdf->selectFont($FWK_PDFDEFAULTFONT);
    $pdf->setLineStyle(0.7, '', '', '', 0);
    $pdf->openHere('Fit');
    if ($row_factura['tipocfd'] == 3) {
        $pdf->setStrokeColor(255, 0, 0);
    }
    if ($row_factura['tipocfd'] == 2) {
        $pdf->setStrokeColor(0, 255, 0);
    }
    // Inicia numeracin de páginas.
    $pdf->ezStartPageNumbers(400, 50, 10, 'left', '{PAGENUM} of {TOTALPAGENUM}', 1);
    $pagina = 1;
    $primeraPagina = $pdf->currentPage;
    // i. Agrega el logo de la empresa
    $logofile = "logos/prueba_logo.jpg";
    //TENDRA QUE VENIR DE UN PARAMETRO EN LA BD.
    $pdf->addJpegFromFile($logofile, 30, 655, 200);
    // i. Agrega la leyenda "cancelada"
    if ($row_factura['estatus'] == 0) {
        $pdf->setColor(0.9, 0.9, 0.9);
        $pdf->addText(180, 200, 65, "<b>CANCELADA</b>", -45);
        $pdf->setColor(0, 0, 0);
    }
    // ------------------------------------------ENCABEZADO ------------------------------------------
    //ENCABEZADO DE LA FACTURA
    $tipoDocto = $TIPOSCOMPROBANTEMXP[$row_factura['tipocfd']];
    $emisor = utf8_decode($emisorNode->getAttribute('rfc')) . "\n";
    $emisor .= utf8_decode($emisordomicilioNode->getAttribute('calle') . " " . $emisordomicilioNode->getAttribute('noExterior') . " " . $emisordomicilioNode->getAttribute('noInterior')) . "\n";
    $emisor .= utf8_decode($emisordomicilioNode->getAttribute('colonia'));
    if ($emisordomicilioNode->getAttribute('localidad') != "") {
        $emisor .= "\n" . utf8_decode($emisordomicilioNode->getAttribute('localidad'));
    }
    if ($emisordomicilioNode->getAttribute('municipio') != "") {
        $emisor .= "\n" . utf8_decode($emisordomicilioNode->getAttribute('municipio'));
    }
    if ($emisordomicilioNode->getAttribute('estado') != "") {
        $emisor .= ", " . utf8_decode($emisordomicilioNode->getAttribute('estado'));
    }
    if ($emisordomicilioNode->getAttribute('codigoPostal') != "") {
        $emisor .= "\nCP " . utf8_decode($emisordomicilioNode->getAttribute('codigoPostal'));
    }
    $emisor .= " " . utf8_decode($emisordomicilioNode->getAttribute('pais'));
    $sucursal = "";
    if ($row_sucursal['sucursal'] != "Principal_") {
        $sucursal = "Sucursal " . utf8_decode($row_sucursal['sucursal']) . "\n";
        $sucursal .= utf8_decode($expedidoNode->getAttribute('calle') . " " . $expedidoNode->getAttribute('noExterior') . " " . $expedidoNode->getAttribute('noInterior')) . "\n";
        $sucursal .= utf8_decode($expedidoNode->getAttribute('colonia')) . "\n";
        $sucursal .= utf8_decode($expedidoNode->getAttribute('municipio')) . ", " . utf8_decode($expedidoNode->getAttribute('estado')) . "\n";
        $sucursal .= "CP " . utf8_decode($expedidoNode->getAttribute('codigoPostal')) . " " . utf8_decode($expedidoNode->getAttribute('pais'));
    }
    ////////// i. Nombre del emisor
    $tableData = array(array("dato" => "<b>Obintel S.A. de C.V.</b>"));
    $colOptions = array("dato" => array('justification' => 'left', 'width' => 200));
    $options = array('showLines' => 0, 'showHeadings' => 0, 'shaded' => 0, 'shadeCol' => array(1, 1, 1), 'fontSize' => 9, 'textCol' => array(0, 0, 0), 'rowGap' => 0, 'colGap' => 0, 'xPos' => 240, 'xOrientation' => 'right', 'width' => 200, 'cols' => $colOptions, 'innerLineThickness' => 0.3, 'outerLineThickness' => 0.3);
    // Dibuja la tabla nombre del emisor
    $pdf->ezSetY(714);
    $pdf->ezTable($tableData, $colNames, "", $options);
    ////////// i. Datos del emisor y de la sucursal
    $tableData = array(array("emisor" => $emisor, "espacio" => "", "sucursal" => $sucursal));
    $colOptions = array("emisor" => array('justification' => 'left', 'width' => 205), "espacio" => array('justification' => 'left', 'width' => 10), "sucursal" => array('justification' => 'left', 'width' => 120));
    $options = array('showLines' => 0, 'showHeadings' => 0, 'shaded' => 0, 'shadeCol' => array(1, 1, 1), 'fontSize' => 7, 'textCol' => array(0, 0, 0), 'rowGap' => 0, 'colGap' => 0, 'xPos' => 240, 'xOrientation' => 'right', 'width' => 335, 'cols' => $colOptions, 'innerLineThickness' => 0.3, 'outerLineThickness' => 0.3);
    // Dibuja la tabla
    $pdf->ezSetDy(-6);
    $pdf->ezTable($tableData, "", "", $options);
    ////////// i. Datos del documento
    $foliodocto = rellena("0", 6, $comprobanteNode->getAttribute('folio'));
    $seriedocto = $comprobanteNode->getAttribute('serie');
    if (!empty($seriedocto)) {
        $foliodocto = $seriedocto . "-" . rellena("0", 6, $comprobanteNode->getAttribute('folio'));
    }
    $fechastr = $comprobanteNode->getAttribute('fecha');
    $fechatok = explode("T", $fechastr);
    $toksf = explode("-", $fechatok[0]);
    $fechastr = $toksf[2] . "-" . $toksf[1] . "-" . $toksf[0] . " " . $fechatok[1];
    $ncert = $comprobanteNode->getAttribute('noCertificado');
    $aprob = $comprobanteNode->getAttribute('anoAprobacion') . "-" . $comprobanteNode->getAttribute('noAprobacion');
    $tableData = array(array("dato" => "<b>" . $tipoDocto . "</b>"), array("dato" => "<b>" . $foliodocto . "</b>"), array("dato" => "Fecha"), array("dato" => $fechastr), array("dato" => "Certificado"), array("dato" => $ncert), array("dato" => "Año y No. Aprobación"), array("dato" => $aprob));
    $colOptions = array("dato" => array('justification' => 'left', 'width' => 120));
    $options = array('showLines' => 1, 'showHeadings' => 0, 'shaded' => 2, 'shadeCol' => array(1, 1, 1), 'shadeCol2' => array(0.9, 0.9, 0.9), 'fontSize' => 7, 'textCol' => array(1, 1, 1), 'rowGap' => 2, 'colGap' => 5, 'xPos' => 455, 'xOrientation' => 'right', 'width' => 120, 'cols' => $colOptions, 'innerLineThickness' => 0.3, 'outerLineThickness' => 0.3);
    // Dibuja la tabla datos del documento
    //$pdf->ezSetDy(-12);
    $pdf->ezTable($tableData, "", "", $options);
    ////////// i. Datos del cliente
    $tableData = array(array("dato" => "<b>Cliente</b>"), array("dato" => utf8_decode($receptorNode->getAttribute('nombre'))), array("dato" => utf8_decode($receptorNode->getAttribute('rfc'))), array("dato" => utf8_decode($receptordomicilioNode->getAttribute('calle')) . " " . utf8_decode($receptordomicilioNode->getAttribute('noExterior')) . " " . utf8_decode($receptordomicilioNode->getAttribute('noInterior')) . " " . utf8_decode($receptordomicilioNode->getAttribute('colonia'))), array("dato" => utf8_decode($receptordomicilioNode->getAttribute('municipio')) . ", " . utf8_decode($receptordomicilioNode->getAttribute('estado'))), array("dato" => utf8_decode($receptordomicilioNode->getAttribute('estado'))), array("dato" => utf8_decode($receptordomicilioNode->getAttribute('codigoPostal'))));
    $colOptions = array("dato" => array('justification' => 'left', 'width' => 410));
    $options = array('showLines' => 1, 'showHeadings' => 0, 'shaded' => 1, 'shadeCol' => array(0.9, 0.9, 0.9), 'fontSize' => 7, 'textCol' => array(0, 0, 0), 'rowGap' => 2, 'colGap' => 5, 'xPos' => 35, 'xOrientation' => 'right', 'width' => 410, 'cols' => $colOptions, 'innerLineThickness' => 0.3, 'outerLineThickness' => 0.3);
    // Dibuja la tabla datos del cliente
    $pdf->ezSetDy(84);
    $pdf->ezTable($tableData, "", "", $options);
    $actualY = $pdf->y;
    $pdf->setColor(0, 0, 0);
    $pdf->filledRectangle(30, $actualY - 30, 540, 18);
    $pdf->ezSetY($actualY - 15);
    $pdf->setColor(1, 1, 1);
    $pdf->ezText("<b>Cant</b>", 7, array('left' => 18, 'justification' => 'left'));
    $pdf->ezSetY($actualY - 15);
    $pdf->ezText("<b>Descripción</b>", 7, array('left' => 55, 'justification' => 'left'));
    $pdf->ezSetY($actualY - 15);
    $pdf->ezText("<b>Unitario</b>", 7, array('left' => 448, 'justification' => 'left'));
    $pdf->ezSetY($actualY - 15);
    $pdf->ezText("<b>Importe</b>", 7, array('left' => 513, 'justification' => 'left'));
    ////////// i. Partidas
    $tableData = array();
    $renglones = 0;
    $rowData = array("cantidad" => "", "descripcion" => "", "unitario" => "", "importe" => "");
    $partidaCnt = 0;
    foreach ($conceptos as $conceptoNode) {
        $partidaCnt++;
        $renglones += 2;
        $currentObj = array();
        $currentObj["cantidad"] = number_format(abs(doubleval($conceptoNode->getAttribute('cantidad'))), 0);
        $currentObj["descripcion"] = utf8_decode($conceptoNode->getAttribute('descripcion'));
        $currentObj["unitario"] = number_format($conceptoNode->getAttribute('valorUnitario'), 2);
        $currentObj["importe"] = number_format(doubleval($conceptoNode->getAttribute('importe')), 2);
        array_push($tableData, $currentObj);
    }
    $currentObj = array();
    $currentObj["cantidad"] = "";
    $currentObj["descripcion"] = "";
    $currentObj["unitario"] = "";
    $currentObj["importe"] = "";
    if ($renglones < 10) {
        for ($renglones; $renglones < 10; $renglones++) {
            array_push($tableData, $currentObj);
        }
    }
    $colNames = array("cantidad" => "<b>Cant</b>", "descripcion" => "<b>Descripción</b>", "unitario" => "<b>Unitario</b>", "importe" => "<b>Precio</b>");
    $colOptions = array("cantidad" => array('justification' => 'center', 'width' => 50), "descripcion" => array('justification' => 'left', 'width' => 370), "unitario" => array('justification' => 'right', 'width' => 60), "importe" => array('justification' => 'right', 'width' => 60));
    $options = array('showLines' => 1, 'showHeadings' => 1, 'shaded' => 1, 'shadeCol' => array(0.9, 0.9, 0.9), 'fontSize' => 7, 'textCol' => array(0, 0, 0), 'rowGap' => 4, 'colGap' => 5, 'xPos' => 35, 'xOrientation' => 'right', 'width' => 410, 'cols' => $colOptions, 'innerLineThickness' => 0.3, 'outerLineThickness' => 0.3);
    // Dibuja la tabla partidas
    $pdf->ezSetDy(11);
    $pdf->ezTable($tableData, $colNames, "", $options);
    ////////// i. Cantidad con letra
    $cadena = covertirNumLetras(number_format($comprobanteNode->getAttribute('total'), 2, ".", ''));
    $tableData = array(array("dato" => "<b>Total con letra</b>\n" . trim($cadena)));
    $colNames = array("dato" => "<b>Cant</b>");
    $colOptions = array("dato" => array('justification' => 'left', 'width' => 420));
    $options = array('showLines' => 1, 'showHeadings' => 0, 'shaded' => 0, 'shadeCol' => array(0.9, 0.9, 0.9), 'fontSize' => 7, 'textCol' => array(0, 0, 0), 'rowGap' => 10, 'colGap' => 10, 'xPos' => 40, 'xOrientation' => 'right', 'width' => 120, 'cols' => $colOptions, 'innerLineThickness' => 0.3, 'outerLineThickness' => 0.3);
    // Dibuja la tabla cantidad con letra
    $pdf->ezSetDy(0);
    $pdf->ezTable($tableData, $colNames, "", $options);
    ////////// i. Totales
    $f_importe = "\$" . number_format($comprobanteNode->getAttribute('subTotal'), 2);
    $f_iva_T = $impuestosNode->getAttribute('totalImpuestosTrasladados');
    $f_total = "\$" . number_format($comprobanteNode->getAttribute('total'), 2);
    $tableData = array();
    $rowData = array("leyenda" => "", "cantidad" => "");
    $subtotal = array("dato" => "Subtotal", "valor" => $f_importe);
    array_push($tableData, $subtotal);
    foreach ($traslados as $trasladoNode) {
        $tasaImpuesto = array();
        $tasaImpuesto_t = number_format($trasladoNode->getAttribute('tasa'), 0);
        $tasaImpuesto["dato"] = $trasladoNode->getAttribute('impuesto') . " " . $tasaImpuesto_t . "%";
        $tasaImpuesto["valor"] = "\$" . number_format($trasladoNode->getAttribute('importe'), 2);
        array_push($tableData, $tasaImpuesto);
    }
    foreach ($retenciones as $retencionNode) {
        $tasaImpuesto = array();
        $tasaImpuesto_t = number_format($retencionNode->getAttribute('tasa'), 0);
        $tasaImpuesto["dato"] = "Ret. " . $retencionNode->getAttribute('impuesto') . " " . $tasaImpuesto_t . "%";
        $tasaImpuesto["valor"] = "\$" . number_format($retencionNode->getAttribute('importe'), 2);
        array_push($tableData, $tasaImpuesto);
    }
    $total = array("dato" => "<b>Total</b>", "valor" => "<b>" . $f_total . "</b>");
    array_push($tableData, $total);
    $colNames = array("dato" => "<b>Cant</b>", "valor" => "Precio");
    $colOptions = array("dato" => array('justification' => 'right', 'width' => 60), "valor" => array('justification' => 'right', 'width' => 60));
    $options = array('showLines' => 1, 'showHeadings' => 0, 'shaded' => 1, 'shadeCol' => array(0.9, 0.9, 0.9), 'fontSize' => 7, 'textCol' => array(0, 0, 0), 'rowGap' => 3, 'colGap' => 5, 'xPos' => 455, 'xOrientation' => 'right', 'width' => 120, 'cols' => $colOptions, 'innerLineThickness' => 0.3, 'outerLineThickness' => 0.3);
    // Dibuja la tabla totales
    $pdf->ezSetDy(36);
    $pdf->ezTable($tableData, $colNames, "", $options);
    ////////// i. Sello
    $tableData = array(array("dato" => "<b>Sello Digital</b>\n" . $row_factura['sello']));
    $colNames = array("dato" => "<b>Cant</b>");
    $colOptions = array("dato" => array('justification' => 'left', 'width' => 400));
    $options = array('showLines' => 1, 'showHeadings' => 0, 'shaded' => 0, 'shadeCol' => array(0.8, 0.8, 0.8), 'fontSize' => 7, 'textCol' => array(0, 0, 0), 'rowGap' => 10, 'colGap' => 10, 'xPos' => 40, 'xOrientation' => 'right', 'width' => 120, 'cols' => $colOptions, 'innerLineThickness' => 0.3, 'outerLineThickness' => 0.3);
    // Dibuja la tabla sello
    $pdf->ezSetDy(-5);
    $pdf->ezTable($tableData, $colNames, "", $options);
    ////////// i. Cadena original
    $tableData = array(array("dato" => "<b>Cadena Original</b>\n" . utf8_decode(utf8_decode($row_factura['cadena']))));
    $colNames = array("dato" => "<b>Cant</b>");
    $colOptions = array("dato" => array('justification' => 'left', 'width' => 400));
    $options = array('showLines' => 1, 'showHeadings' => 0, 'shaded' => 0, 'shadeCol' => array(0.8, 0.8, 0.8), 'fontSize' => 7, 'textCol' => array(0, 0, 0), 'rowGap' => 10, 'colGap' => 10, 'xPos' => 40, 'xOrientation' => 'right', 'width' => 120, 'cols' => $colOptions, 'innerLineThickness' => 0.3, 'outerLineThickness' => 0.3);
    // Dibuja la tabla cadena original
    $pdf->ezSetDy(-5);
    $pdf->ezTable($tableData, $colNames, "", $options);
    // Leyendas
    $pdf->ezSetDy(-12);
    $leyendas = 'EFECTOS FISCALES AL PAGO. PAGO EN UNA SOLA EXHIBICION. ESTE DOCUMENTO ES UNA IMPRESION DE UN COMPROBANTE FISCAL DIGITAL';
    $pdf->setColor(0.5, 0.5, 0.5);
    $pdf->ezText($leyendas, 5, array('left' => 0, 'justification' => 'left'));
    $pdf->setColor(0, 0, 0);
    //REGRESA PARA PONER ENCABEZADO EN PAGINAS 2 ->
    if ($pdf->ezPageCount > 1) {
        $datos = array();
        $datos['logo'] = $logofile;
        $datos['totalPaginas'] = $pdf->ezPageCount;
        $datos['tipoDocto'] = $tipoDocto;
        $datos['foliodocto'] = $foliodocto;
        $datos['fechastr'] = $fechastr;
        for ($pn = 2; $pn <= $pdf->ezPageCount; $pn++) {
            $datos['paginaActual'] = $pn;
            //a partir de la segunda pagina.
            $pdf->reopenObject($pdf->ezPages[$pn]);
            headerDoc($pdf, $datos);
        }
    }
    //ESCRIBE REPORTE AL ARCHIVO.
    //================================================================================
    $pdfcode = $pdf->output();
    //save the file
    if ($tmpName) {
        $nombrePDF = tempnam("tmp/", 'face5') . ".pdf";
        $nombreToks = explode("/", $nombrePDF);
        if (count($nombreToks) < 2) {
            $nombreToks = explode("\\", $nombrePDF);
        }
        $lastTok = count($nombreToks) - 1;
        $nombrePDF = $nombreToks[$lastTok];
        $archivoPDF = "tmp/" . $nombrePDF;
        $archivos = array($nombrePDF, $archivoPDF);
    } else {
        $nombrePDF = $tipoDocto . "_" . $row_factura['serie'] . $row_factura['folio'] . ".pdf";
        $archivoPDF = "tmp/" . $nombrePDF;
        $archivos = array($nombrePDF, $archivoPDF);
    }
    $fp = fopen($archivoPDF, 'w');
    fwrite($fp, $pdfcode);
    fclose($fp);
    return $archivos;
}
Exemple #16
0
function citeRecords($result, $rowsFound, $query, $queryURL, $showQuery, $showLinks, $rowOffset, $showRows, $previousOffset, $nextOffset, $wrapResults, $citeStyle, $citeOrder, $citeType, $orderBy, $headerMsg, $userID, $viewType)
{
    global $officialDatabaseName;
    // these variables are defined in 'ini.inc.php'
    global $databaseBaseURL;
    global $contentTypeCharset;
    global $pdfPageSize;
    global $client;
    // The array '$transtab_refbase_pdf' contains search & replace patterns for conversion from refbase markup to PDf markup & entities
    global $transtab_refbase_pdf;
    // defined in 'transtab_refbase_pdf.inc.php'
    // Initialize array variables:
    $yearsArray = array();
    $typeTitlesArray = array();
    // Define inline text markup to be used by the 'citeRecord()' function:
    $markupPatternsArray = array("bold-prefix" => "<b>", "bold-suffix" => "</b>", "italic-prefix" => "<i>", "italic-suffix" => "</i>", "underline-prefix" => "<u>", "underline-suffix" => "</u>", "endash" => "¦", "emdash" => "©", "ampersand" => "&", "double-quote" => '"', "double-quote-left" => "ª", "double-quote-right" => "¬", "single-quote" => "'", "single-quote-left" => "®", "single-quote-right" => "¶", "less-than" => "<", "greater-than" => ">", "newline" => "\n");
    // Defines search & replace 'actions' that will be applied upon PDF output to all those refbase fields that are listed
    // in the corresponding 'fields' element:
    $pdfSearchReplaceActionsArray = array(array('fields' => array("title", "publication", "abbrev_journal", "address", "keywords", "abstract", "orig_title", "series_title", "abbrev_series_title", "notes"), 'actions' => $transtab_refbase_pdf));
    // For CLI queries, we'll allow paging thru the result set, i.e. we honour the values of the CLI options '-S|--start' ('$rowOffset')
    // and '-R|--rows' ('$showRows') ('$rowOffset' and '$showRows' are re-assigned in function 'seekInMySQLResultsToOffset()' in 'include.inc.php')
    if (preg_match("/^cli/i", $client)) {
        // if the query originated from a command line client such as the "refbase" CLI client ("cli-refbase-1.0")
        $showMaxRows = $showRows;
    } else {
        $showMaxRows = $rowsFound;
    }
    // otherwise show all rows
    // Setup the basic PDF document structure (PDF functions defined in 'class.ezpdf.php'):
    $pdf = new Cezpdf($pdfPageSize, 'portrait');
    // initialize PDF object
    if (!empty($headerMsg)) {
        // adjust upper page margin if a custom header message was given
        $pageMarginTop = "70";
    } else {
        $pageMarginTop = "50";
    }
    $pdf->ezSetMargins($pageMarginTop, 70, 50, 50);
    // set document margins (top, bottom, left, right)
    // Set fonts:
    $headingFont = 'includes/classes/org/pdf-php/fonts/Helvetica.afm';
    $textBodyFont = 'includes/classes/org/pdf-php/fonts/Times-Roman.afm';
    // Re-map character numbers from the 0->255 range to a named character, i.e. replace an (unused) character for any other PostScript char;
    // see the PDF reference for a list of supported PostScript/PDF character names: <http://www.adobe.com/devnet/pdf/pdf_reference.html>;
    // for the decimal code numbers of the ISO-8859-1 character set, see e.g.: <http://www.ramsch.org/martin/uni/fmi-hp/iso8859-1.html>
    $diff = array(166 => 'endash', 169 => 'emdash', 170 => 'quotedblleft', 172 => 'quotedblright', 174 => 'quoteleft', 182 => 'quoteright');
    // Select a font:
    $pdf->selectFont($textBodyFont, array('encoding' => 'WinAnsiEncoding', 'differences' => $diff));
    $pdf->openHere('Fit');
    // Put a footer (and optionally a header) on all the pages:
    $all = $pdf->openObject();
    // start an independent object; all further writes to a page will actually go into this object, until a 'closeObject()' call is made
    $pdf->saveState();
    $pdf->setStrokeColor(0, 0, 0, 1);
    // set line color
    $pdf->setLineStyle(0.5);
    // set line width
    // - print header line and header message at the specified x/y position:
    if (!empty($headerMsg)) {
        // Remove any colon (":") from end of header message:
        $headerMsg = trimTextPattern($headerMsg, ":", false, true);
        // function 'trimTextPattern()' is defined in 'include.inc.php'
        // Decode any HTML entities:
        // (these may occur in the header message e.g. if the user's preferred display language is not English but German or French, etc)
        $headerMsg = decodeHTML($contentTypeCharset, $headerMsg);
        // function 'decodeHTML()' is defined in 'include.inc.php', and '$contentTypeCharset' is defined in 'ini.inc.php'
        // Convert refbase markup in the header message into appropriate PDF markup & entities:
        $headerMsg = searchReplaceText($transtab_refbase_pdf, $headerMsg, true);
        // function 'searchReplaceText()' is defined in 'include.inc.php'
        if ($pdfPageSize == 'a4') {
            $pdf->line(20, 800, 575, 800);
            $pdf->addText(50, 805, 10, $headerMsg);
        } elseif ($pdfPageSize == 'letter') {
            $pdf->line(20, 750, 592, 750);
            $pdf->addText(50, 755, 10, $headerMsg);
        }
    }
    // - print footer line and footer text at the specified x/y position:
    if ($pdfPageSize == 'a4') {
        $pdf->line(20, 40, 575, 40);
        $pdf->addText(50, 28, 10, $officialDatabaseName . ' ¦ ' . $databaseBaseURL);
        // w.r.t. the endash, see notes at '$markupPatternsArray' and '$diff' above
    } elseif ($pdfPageSize == 'letter') {
        $pdf->line(20, 40, 592, 40);
        $pdf->addText(50, 28, 10, $officialDatabaseName . ' ¦ ' . $databaseBaseURL);
    }
    $pdf->restoreState();
    $pdf->closeObject();
    // close the currently open object; further writes will now go to the current page
    $pdf->addObject($all, 'all');
    // note that object can be told to appear on just odd or even pages by changing 'all' to 'odd' or 'even'
    // Start printing page numbers:
    if ($pdfPageSize == 'a4') {
        $pdf->ezStartPageNumbers(550, 28, 10, '', '', 1);
    } elseif ($pdfPageSize == 'letter') {
        $pdf->ezStartPageNumbers(567, 28, 10, '', '', 1);
    }
    // LOOP OVER EACH RECORD:
    // Fetch one page of results (or less if on the last page)
    // (i.e., upto the limit specified in $showMaxRows) fetch a row into the $row array and ...
    for ($rowCounter = 0; $rowCounter < $showMaxRows && ($row = @mysql_fetch_array($result)); $rowCounter++) {
        foreach ($row as $rowFieldName => $rowFieldValue) {
            // Apply search & replace 'actions' to all fields that are listed in the 'fields' element of the arrays contained in '$pdfSearchReplaceActionsArray':
            foreach ($pdfSearchReplaceActionsArray as $fieldActionsArray) {
                if (in_array($rowFieldName, $fieldActionsArray['fields'])) {
                    $row[$rowFieldName] = searchReplaceText($fieldActionsArray['actions'], $row[$rowFieldName], true);
                }
            }
        }
        // function 'searchReplaceText()' is defined in 'include.inc.php'
        // Order attributes according to the chosen output style & record type:
        $record = citeRecord($row, $citeStyle, $citeType, $markupPatternsArray, false);
        // function 'citeRecord()' is defined in the citation style file given in '$citeStyleFile' (which, in turn, must reside in the 'cite' directory of the refbase root directory), see function 'generateCitations()'
        // Print out the current record:
        if (!empty($record)) {
            // Print any section heading(s):
            if (preg_match("/year|type/i", $citeOrder)) {
                $headingPrefix = "";
                $headingSuffix = "";
                $sectionMarkupPrefix = "<b>";
                $sectionMarkupSuffix = "</b>\n";
                $subSectionMarkupPrefix = "";
                $subSectionMarkupSuffix = "\n";
                if ($citeOrder == "type-year") {
                    $sectionMarkupSuffix .= "\n";
                }
                list($yearsArray, $typeTitlesArray, $sectionHeading) = generateSectionHeading($yearsArray, $typeTitlesArray, $row, $citeOrder, $headingPrefix, $headingSuffix, $sectionMarkupPrefix, $sectionMarkupSuffix, $subSectionMarkupPrefix, $subSectionMarkupSuffix);
                // function 'generateSectionHeading()' is defined in 'cite.inc.php'
                if (!empty($sectionHeading)) {
                    $pdf->selectFont($headingFont, array('encoding' => 'WinAnsiEncoding', 'differences' => $diff));
                    // use Helvetica
                    $pdf->ezText($sectionHeading, '14', array('justification' => 'left'));
                    // create heading using a font size of 14pt
                }
            }
            // If character encoding is not UTF-8 already, convert record text to UTF-8:
            //				if ($contentTypeCharset != "UTF-8")
            //					$record = convertToCharacterEncoding("UTF-8", "IGNORE", $record); // function 'convertToCharacterEncoding()' is defined in 'include.inc.php'
            // NOTE: Export of cited references to PDF does currently only work with a latin1 database but not with UTF-8 (since I don't know how to write Unicode characters to PDF).
            //       As a workaround, we could convert UTF-8 characters to latin1 if possible (and omit any other higher ASCII chars)
            // TODO: While this workaround indeed fixes display issues with higher ASCII chars that have equivalents in the latin1 charset, this will currently swallow higher ASCII
            //       hyphens/dashes such as endashes (which display correctly without this workaround).
            //				if ($contentTypeCharset == "UTF-8")
            //					$record = convertToCharacterEncoding("ISO-8859-1", "TRANSLIT", $record, "UTF-8"); // function 'convertToCharacterEncoding()' is defined in 'include.inc.php'
            // Set paragraph text options:
            $textOptions = array('justification' => 'full');
            // possible array options:
            // 'left'=> number, gap to leave from the left margin
            // 'right'=> number, gap to leave from the right margin
            // 'aleft'=> number, absolute left position (overrides 'left')
            // 'aright'=> number, absolute right position (overrides 'right')
            // 'justification' => 'left','right','center','centre','full'
            //
            // only set one of the next two items (leading overrides spacing)
            // 'leading' => number, defines the total height taken by the line, independent of the font height.
            // 'spacing' => a real number, though usually set to one of 1, 1.5, 2 (line spacing as used in word processing)
            // Write PDF paragraph:
            $pdf->selectFont($textBodyFont, array('encoding' => 'WinAnsiEncoding'));
            // use Times-Roman
            $pdf->ezText($record . "\n", '12', $textOptions);
            // create text block with record text using "Times Roman" and a font size of 12pt
        }
    }
    return $pdf->ezStream();
}
Exemple #17
0
 function generate_invoice_file($verbose = false, $getfile = false)
 {
     // Build PDF document
     $font1 = ALLOC_MOD_DIR . "util/fonts/Helvetica.afm";
     $font2 = ALLOC_MOD_DIR . "util/fonts/Helvetica-Oblique.afm";
     $db = new db_alloc();
     // Get client name
     $client = $this->get_foreign_object("client");
     $clientName = $client->get_value("clientName");
     // Get cyber info
     $companyName = config::get_config_item("companyName");
     $companyNos1 = config::get_config_item("companyACN");
     $companyNos2 = config::get_config_item("companyABN");
     $phone = config::get_config_item("companyContactPhone");
     $fax = config::get_config_item("companyContactFax");
     $phone and $phone = "Ph: " . $phone;
     $fax and $fax = "Fax: " . $fax;
     $img = config::get_config_item("companyImage");
     $companyContactAddress = config::get_config_item("companyContactAddress");
     $companyContactAddress2 = config::get_config_item("companyContactAddress2");
     $companyContactAddress3 = config::get_config_item("companyContactAddress3");
     $email = config::get_config_item("companyContactEmail");
     $email and $companyContactEmail = "Email: " . $email;
     $web = config::get_config_item("companyContactHomePage");
     $web and $companyContactHomePage = "Web: " . $web;
     $footer = config::get_config_item("timeSheetPrintFooter");
     $taxName = config::get_config_item("taxName");
     if ($this->get_value("invoiceDateFrom") && $this->get_value("invoiceDateTo") && $this->get_value("invoiceDateFrom") != $this->get_value("invoiceDateTo")) {
         $period = format_date(DATE_FORMAT, $this->get_value("invoiceDateFrom")) . " to " . format_date(DATE_FORMAT, $this->get_value("invoiceDateTo"));
     } else {
         $period = format_date(DATE_FORMAT, $this->get_value("invoiceDateTo"));
     }
     $default_header = "Tax Invoice";
     $default_id_label = "Invoice Number";
     $pdf_table_options = array("showLines" => 0, "shaded" => 0, "showHeadings" => 0, "xPos" => "left", "xOrientation" => "right", "fontSize" => 10, "rowGap" => 0, "fontSize" => 10);
     $cols = array("one" => "", "two" => "", "three" => "", "four" => "");
     $cols3 = array("one" => "", "two" => "");
     $cols_settings["one"] = array("justification" => "right");
     $cols_settings["three"] = array("justification" => "right");
     $pdf_table_options2 = array("showLines" => 0, "shaded" => 0, "showHeadings" => 0, "width" => 400, "fontSize" => 10, "xPos" => "center", "xOrientation" => "center", "cols" => $cols_settings);
     $cols_settings2["gst"] = array("justification" => "right");
     $cols_settings2["money"] = array("justification" => "right");
     $cols_settings2["unit"] = array("justification" => "right");
     $pdf_table_options3 = array("showLines" => 2, "shaded" => 0, "width" => 400, "xPos" => "center", "fontSize" => 10, "cols" => $cols_settings2, "lineCol" => array(0.8, 0.8, 0.8), "splitRows" => 1, "protectRows" => 0);
     $cols_settings["two"] = array("justification" => "right", "width" => 80);
     $pdf_table_options4 = array("showLines" => 2, "shaded" => 0, "width" => 400, "showHeadings" => 0, "fontSize" => 10, "xPos" => "center", "cols" => $cols_settings, "lineCol" => array(0.8, 0.8, 0.8));
     $pdf = new Cezpdf();
     $pdf->ezSetMargins(90, 90, 90, 90);
     $pdf->selectFont($font1);
     $pdf->ezStartPageNumbers(436, 80, 10, 'right', 'Page {PAGENUM} of {TOTALPAGENUM}');
     $pdf->ezStartPageNumbers(200, 80, 10, 'left', '<b>' . $default_id_label . ': </b>' . $this->get_value("invoiceNum"));
     $pdf->ezSetY(775);
     $companyName and $contact_info[] = array($companyName);
     $companyContactAddress and $contact_info[] = array($companyContactAddress);
     $companyContactAddress2 and $contact_info[] = array($companyContactAddress2);
     $companyContactAddress3 and $contact_info[] = array($companyContactAddress3);
     $companyContactEmail and $contact_info[] = array($companyContactEmail);
     $companyContactHomePage and $contact_info[] = array($companyContactHomePage);
     $phone and $contact_info[] = array($phone);
     $fax and $contact_info[] = array($fax);
     $pdf->selectFont($font2);
     $y = $pdf->ezTable($contact_info, false, "", $pdf_table_options);
     $pdf->selectFont($font1);
     $line_y = $y - 10;
     $pdf->setLineStyle(1, "round");
     $pdf->line(90, $line_y, 510, $line_y);
     $pdf->ezSetY(782);
     $image_jpg = ALLOC_LOGO;
     if (file_exists($image_jpg)) {
         $pdf->ezImage($image_jpg, 0, sprintf("%d", config::get_config_item("logoScaleX")), 'none');
         $y = 700;
     } else {
         $y = $pdf->ezText($companyName, 27, array("justification" => "right"));
     }
     $nos_y = $line_y + 22;
     $companyNos2 and $nos_y = $line_y + 34;
     $pdf->ezSetY($nos_y);
     $companyNos1 and $y = $pdf->ezText($companyNos1, 10, array("justification" => "right"));
     $companyNos2 and $y = $pdf->ezText($companyNos2, 10, array("justification" => "right"));
     $pdf->ezSetY($line_y - 20);
     $y = $pdf->ezText($default_header, 20, array("justification" => "center"));
     $pdf->ezSetY($y - 20);
     $ts_info[] = array("one" => "<b>" . $default_id_label . ":</b>", "two" => $this->get_value("invoiceNum"), "three" => "<b>Date Issued:</b>", "four" => date("d/m/Y"));
     $ts_info[] = array("one" => "<b>Client:</b>", "two" => $clientName, "three" => "<b>Billing Period:</b>", "four" => $period);
     $y = $pdf->ezTable($ts_info, $cols, "", $pdf_table_options2);
     $pdf->ezSetY($y - 20);
     list($rows, $info) = $this->get_invoiceItem_list_for_file($verbose);
     $cols2 = array("desc" => "Description", "quantity" => "Qty", "unit" => "Unit Price", "money" => "Charges", "gst" => $taxName);
     $taxPercent = config::get_config_item("taxPercent");
     if ($taxPercent === '') {
         unset($cols2["gst"]);
     }
     $rows[] = array("desc" => "<b>TOTAL</b>", "money" => $info["total"], "gst" => $info["total_gst"]);
     $y = $pdf->ezTable($rows, $cols2, "", $pdf_table_options3);
     $pdf->ezSetY($y - 20);
     if ($taxPercent !== '') {
         $totals[] = array("one" => "TOTAL " . $taxName, "two" => $info["total_gst"]);
     }
     $totals[] = array("one" => "TOTAL CHARGES", "two" => $info["total"]);
     $totals[] = array("one" => "<b>TOTAL AMOUNT PAYABLE</b>", "two" => "<b>" . $info["total_inc_gst"] . "</b>");
     $y = $pdf->ezTable($totals, $cols3, "", $pdf_table_options4);
     $pdf->ezSetY($y - 20);
     $pdf->ezText(str_replace(array("<br>", "<br/>", "<br />"), "\n", $footer), 10);
     // Add footer
     #$all = $pdf->openObject();
     #$pdf->saveState();
     #$pdf->addText(415,80,12,"<b>".$default_id_label.":</b>".$this->get_value("invoiceNum"));
     #$pdf->restoreState();
     #$pdf->closeObject();
     #$pdf->addObject($all,'all');
     if ($getfile) {
         return $pdf->ezOutput();
     } else {
         $pdf->ezStream(array("Content-Disposition" => "invoice_" . $this->get_id() . ".pdf"));
     }
 }
 function hv_pdf_kopf()
 {
     //include_once ('pdfclass/class.ezpdf.php');
     $pdf = new Cezpdf('a4', 'portrait');
     $pdf->ezSetCmMargins(4.5, 1, 1, 1);
     $berlus_schrift = 'pdfclass/fonts/Times-Roman.afm';
     $text_schrift = 'pdfclass/fonts/Arial.afm';
     $pdf->addJpegFromFile('includes/logos/logo_hv_sw.jpg', 220, 750, 175, 100);
     // $pdf->addJpgFromFile('pdfclass/logo_262_150_sw1.jpg', 300, 500, 250, 150);
     $pdf->setLineStyle(0.5);
     $pdf->selectFont($berlus_schrift);
     $pdf->addText(86, 743, 6, "BERLUS HAUSVERWALTUNG * Fontanestr. 1 * 14193 Berlin * Inhaber Wolfgang Wehrheim * Telefon: 89784477 * Fax: 89784479 * Email: info@berlus.de");
     $pdf->line(42, 750, 550, 750);
 }
function creaPDF($ids, $tmpName, $path, $PATHQR, $tmp = "")
{
    require dirname(dirname(dirname(__FILE__))) . '/f4/configuracion/utils.php';
    require dirname(dirname(dirname(__FILE__))) . '/f4/configuracion/importeco.php';
    require dirname(dirname(dirname(__FILE__))) . "/gui/QRCode/qr_imgV2.php";
    $data = "";
    $facturaController = new FacturaController($path);
    $selloController = new SelloController($path);
    $empresaController = new EmpresaController($path);
    $sucursalController = new SucursalController($path);
    $FWK_PDFFONTS = 'pdf/fonts/';
    $FWK_PDFDEFAULTFONT = 'pdf/fonts/Helvetica.afm';
    $FWK_PDFCOURIERFONT = 'pdf/fonts/Courier.afm';
    // Obtener factura y sus anexos
    $TIPOSCOMPROBANTEMXP = array(1 => "Factura", 3 => "Nota de Cr.", 2 => "NOTA DE DEBITO");
    $idconsulta = "";
    $idconsulta = explode(",", trim($ids));
    foreach ($idconsulta as $valor) {
        if (is_null($valor) || $valor == "") {
            array_pop($idconsulta);
        }
    }
    $contadorTotalPaginas = count($idconsulta);
    $contadorPagina = 1;
    // Crea el documento pdf
    $pdf = new Cezpdf('LETTER', 'portrait');
    foreach ($idconsulta as $idfactura) {
        $data['idfactura'] = $idfactura;
        $factura = $facturaController->execute('facturaParaPdf', $data);
        $row_factura = $factura['respuesta'];
        $info_xtra = json_decode($row_factura["info_xtra"]);
        $data['idfacefactura'] = $factura['respuesta']['idface_factura'];
        $data['idempresa'] = $factura['respuesta']['idempresa'];
        $data['idsello'] = $factura['respuesta']['idsello'];
        $version = $factura['respuesta']['version'];
        $addenda = $facturaController->execute('datosAddenda', $data);
        $row_addenda = $addenda['respuesta'];
        $empresa = $empresaController->execute('allId', $data);
        $row_empresa = $empresa['respuesta'];
        $sello = $selloController->execute('obtenerPorIdsello', $data);
        $row_sello = $sello['respuesta'];
        $data['sucursal'] = $sello['respuesta']['sucursal'];
        $sucursal = $sucursalController->execute('nombreSucIdempresa', $data);
        $row_sucursal = $sucursal['respuesta'];
        $xmlArray = xml2array(base64_decode($row_factura['factura']));
        $attr = "_attr";
        if ($version === "3.2") {
            $NSP = "cfdi:";
        } else {
            $NSP = "";
        }
        $comprobante = $NSP . "Comprobante";
        $emisor = $NSP . "Emisor";
        $emisorDomFiscal = $NSP . "DomicilioFiscal";
        $emisorExpedidoEn = $NSP . "ExpedidoEn";
        $receptor = $NSP . "Receptor";
        $domicilio = $NSP . "Domicilio";
        $concepto = $NSP . "Conceptos";
        $conceptoTag = $NSP . "Concepto";
        $impuestos = $NSP . "Impuestos";
        $traslado = $NSP . "Traslados";
        $trasladoTag = $NSP . "Traslado";
        $retencion = $NSP . "Retenciones";
        $retencionTag = $NSP . "Retencion";
        //INICIALIZACIONES
        $comprobanteNode = null;
        $emisorNode = null;
        $emisordomicilioNode = null;
        $expedidoNode = null;
        $receptorNode = null;
        $receptordomicilioNode = null;
        $conceptoNode = null;
        $impuestosNode = null;
        $trasladoNode = null;
        $retencionNode = null;
        // -------------------------------------------------chs --------------------------------------------------------------
        $comprobanteNode = $xmlArray[$comprobante . $attr];
        $emisorNode = $xmlArray[$comprobante][$emisor . $attr];
        $emisordomicilioNode = $xmlArray[$comprobante][$emisor][$emisorDomFiscal . $attr];
        $expedidoNode = isset($xmlArray[$comprobante][$emisor][$emisorExpedidoEn . $attr]) ? $xmlArray[$comprobante][$emisor][$emisorExpedidoEn . $attr] : "";
        $receptorNode = $xmlArray[$comprobante][$receptor . $attr];
        $receptordomicilioNode = $xmlArray[$comprobante][$receptor][$domicilio . $attr];
        $conceptos = $xmlArray[$comprobante][$concepto];
        $impuestosNode = $xmlArray[$comprobante][$impuestos . $attr];
        $traslados = $xmlArray[$comprobante][$impuestos][$traslado];
        $retenciones = isset($xmlArray[$comprobante][$impuestos][$retencion][$retencionTag . $attr]) ? $xmlArray[$comprobante][$impuestos][$retencion][$retencionTag . $attr] : "";
        $regimenFiscal = $xmlArray[$comprobante][$emisor]["cfdi:RegimenFiscal_attr"]["Regimen"];
        // ---------------------------------------------------------------------------------------------------------------
        //descuentos
        $desc1 = 0.0;
        $desc2 = 0.0;
        //==================================================================================================================
        $pdf->ezSetMargins(100, 30, 30, 30);
        $pdf->selectFont($FWK_PDFDEFAULTFONT);
        $pdf->setLineStyle(0.7, '', '', '', 0);
        $pdf->openHere('Fit');
        if ($row_factura['tipocfd'] == 3) {
            $pdf->setStrokeColor(255, 0, 0);
        }
        if ($row_factura['tipocfd'] == 2) {
            $pdf->setStrokeColor(0, 255, 0);
        }
        // Inicia numeracin de paginas.
        $pagina = 1;
        $pdf->ezStartPageNumbers(500, 15, 10, '', '{PAGENUM} de {TOTALPAGENUM}', 1);
        $primeraPagina = $pdf->currentPage;
        // i. Agrega el logo de la empresa
        $pathToLogo = $path == "../" ? "../f4/extensiones/" : "";
        $logofile = "logos/f.jpg";
        //TENDRA QUE VENIR DE UN PARAMETRO EN LA BD.
        /*if(isset($row_empresa['rfc']) && !empty($row_empresa['rfc']))
        		$logofile="logos/".$row_empresa['rfc'].".jpg";*/
        if (isset($sucursal["respuesta"]["sucursal"]) && !empty($sucursal["respuesta"]["sucursal"])) {
            $logofile = "logos/" . strtolower($sucursal["respuesta"]["sucursal"]) . ".jpg";
        }
        error_log($logofile);
        if ($comprobanteNode['serie'] == "X") {
            $logofile = "logos/wingu-xpress.jpg";
        }
        $pdf->addJpegFromFile($pathToLogo . $logofile, 30, 705, 140);
        // i. Agrega la leyenda "cancelada"
        if ($row_factura['estatus'] == 0) {
            $pdf->setColor(0.9, 0.9, 0.9);
            $pdf->addText(180, 200, 65, "<b>CANCELADA</b>", -45);
            $pdf->setColor(0, 0, 0);
        }
        // ------------------------------------------ENCABEZADO ------------------------------------------
        //ENCABEZADO DE LA FACTURA
        $tipoDocto = $row_factura['tipodocumento'];
        $tipoDocto1 = $row_factura['tipodocumento'] == "FACTURA" ? "FACTURA" : "";
        $tipoDocto2 = $row_factura['tipodocumento'] == "NOTA CARGO" ? "FACTURA" : "";
        $tipoDocto3 = $row_factura['tipodocumento'] == "NOTA CREDITO" ? "NOTA DE CREDITO" : "";
        $emisor = utf8_decode($emisorNode['nombre'] . "\n" . $emisorNode['rfc']) . "\n";
        $noInterior = isset($emisordomicilioNode['noInterior']) ? $emisordomicilioNode['noInterior'] : "";
        $noExterior = isset($emisordomicilioNode['noExterior']) ? $emisordomicilioNode['noExterior'] : "";
        $emisor .= utf8_decode($emisordomicilioNode['calle'] . " {$noExterior}");
        $emisor .= utf8_decode($emisordomicilioNode['colonia']);
        if (isset($emisordomicilioNode['localidad'])) {
            $emisor .= "\n" . utf8_decode($emisordomicilioNode['localidad']);
        }
        if ($emisordomicilioNode['municipio'] != "" && isset($emisordomicilioNode['municipio'])) {
            $emisor .= "\n" . utf8_decode($emisordomicilioNode['municipio']);
        }
        if ($emisordomicilioNode['estado'] != "" && isset($emisordomicilioNode['estado'])) {
            $emisor .= ", " . utf8_decode($emisordomicilioNode['estado']);
        }
        if ($emisordomicilioNode['codigoPostal'] != "" && isset($emisordomicilioNode['codigoPostal'])) {
            $emisor .= "\nCP " . utf8_decode($emisordomicilioNode['codigoPostal']);
        }
        $emisor .= " " . utf8_decode($emisordomicilioNode['pais']);
        $telefono = isset($row_empresa['telefono']) ? $row_empresa['telefono'] : "";
        $emisor .= "\nTel: " . $telefono . "\n";
        $mail = isset($row_empresa['mail']) ? $row_empresa['mail'] : "";
        $emisor .= "\n" . $mail;
        $emisor1 = utf8_decode($emisorNode['nombre']);
        $sucursal = "";
        if ($expedidoNode != "") {
            if (utf8_decode($row_sucursal['sucursal']) == "Q") {
                $tipoSucursal = utf8_decode('Querétaro');
            } else {
                if (utf8_decode($row_sucursal['sucursal']) == "F") {
                    $tipoSucursal = utf8_decode('5/6');
                } else {
                    if (utf8_decode($row_sucursal['sucursal']) == "S") {
                        $tipoSucursal = utf8_decode('Santa Fe');
                    }
                }
            }
            $sucursal = "Sucursal " . $tipoSucursal . "\n";
            if (utf8_decode($row_sucursal['sucursal']) != "S") {
                $noInteriorExpedido = isset($expedidoNode['noInterior']) ? $expedidoNode['noInterior'] : "";
                $sucursal .= utf8_decode($expedidoNode['calle'] . " " . $expedidoNode['noExterior'] . " ") . "\n";
                $sucursal .= utf8_decode($expedidoNode['colonia']) . "\n";
                $sucursal .= utf8_decode($expedidoNode['municipio']) . ", " . utf8_decode($expedidoNode['estado']) . "\n";
                $sucursal .= "CP " . utf8_decode($expedidoNode['codigoPostal']) . " " . utf8_decode($expedidoNode['pais']);
            }
        }
        ////////// i. Nombre del emisor
        $colNames = array();
        $tableData = array(array("dato" => $emisor1));
        $colOptions = array("dato" => array('justification' => 'left', 'width' => 200));
        $options = array('showLines' => 0, 'showHeadings' => 0, 'shaded' => 0, 'shadeCol' => array(1, 1, 1), 'fontSize' => 9, 'textCol' => array(0, 0, 0), 'rowGap' => 0, 'colGap' => 0, 'xPos' => 200, 'xOrientation' => 'right', 'width' => 200, 'cols' => $colOptions, 'innerLineThickness' => 0.3, 'outerLineThickness' => 0.3);
        // Dibuja la tabla nombre del emisor
        $pdf->ezSetY(765);
        $pdf->ezTable($tableData, $colNames, "", $options);
        ////////// i. Datos del emisor y de la sucursal
        $tableData = array(array("emisor" => $emisor, "espacio" => "", "sucursal" => $sucursal));
        $colOptions = array("emisor" => array('justification' => 'left', 'width' => 150), "espacio" => array('justification' => 'left', 'width' => 3), "sucursal" => array('justification' => 'left', 'width' => 100));
        $options = array('showLines' => 0, 'showHeadings' => 0, 'shaded' => 0, 'shadeCol' => array(1, 1, 1), 'fontSize' => 7, 'textCol' => array(0, 0, 0), 'rowGap' => 0, 'colGap' => 0, 'xPos' => 190, 'xOrientation' => 'right', 'width' => 335, 'cols' => $colOptions, 'innerLineThickness' => 0.3, 'outerLineThickness' => 0.3);
        // Dibuja la tabla
        $pdf->ezTable($tableData, "", "", $options);
        ////////// i. Datos del documento
        $foliodocto = rellena("0", 6, $comprobanteNode['folio']);
        $seriedocto = $comprobanteNode['serie'];
        if (!empty($seriedocto)) {
            $foliodocto = $seriedocto . "-" . rellena("0", 6, $comprobanteNode['folio']);
        }
        $fechastr = $comprobanteNode['fecha'];
        $fechatok = explode("T", $fechastr);
        $toksf = explode("-", $fechatok[0]);
        $fechastr = $toksf[2] . "-" . $toksf[1] . "-" . $toksf[0] . " " . $fechatok[1];
        $fechastrcfdi = $row_factura['FechaTimbrado'];
        $ncert = $comprobanteNode['noCertificado'];
        $aprob = $row_factura['noCertificadoSAT'];
        //chs
        $tableData = array(array("dato" => "<b>" . $tipoDocto1 . $tipoDocto2 . $tipoDocto3 . "</b>"), array("dato" => "<b>" . $foliodocto . "</b>"), array("dato" => "FECHA DE EMISION"), array("dato" => $fechastr), array("dato" => "LUGAR DE EXPEDICION"), array("dato" => utf8_decode($info_xtra->LugarExpedicion)), array("dato" => "FECHA DE CERTIFICACION"), array("dato" => $fechastrcfdi), array("dato" => "No. de Serie del Certificado del Emisor"), array("dato" => $ncert), array("dato" => "No. de Serie del Certificado del SAT"), array("dato" => $aprob), array("dato" => "Folio Fiscal"), array("dato" => $row_factura['uuid']));
        $colOptions = array("dato" => array('justification' => 'left', 'width' => 120));
        /*JASR*/
        $options = array('showLines' => 1, 'showHeadings' => 0, 'shaded' => 2, 'shadeCol' => array(1, 1, 1), 'shadeCol2' => array(0.9, 0.9, 0.9), 'fontSize' => 7, 'textCol' => array(1, 1, 1), 'rowGap' => 2, 'colGap' => 5, 'xPos' => 455, 'xOrientation' => 'right', 'width' => 120, 'cols' => $colOptions, 'innerLineThickness' => 0.3, 'outerLineThickness' => 0.3);
        // Dibuja la tabla datos del documento
        $pdf->ezSetDy(70);
        $pdf->ezTable($tableData, "", "", $options);
        ////////// i. Datos del cliente
        $noInterior = isset($receptordomicilioNode['noInterior']) ? utf8_decode($receptordomicilioNode['noInterior']) : "";
        $municipio = isset($receptordomicilioNode['municipio']) ? $receptordomicilioNode['municipio'] : "";
        $localidadCliente = isset($receptordomicilioNode['localidad']) ? utf8_decode($receptordomicilioNode['localidad']) : "";
        $tableData1 = array(array("cliente" => "<b>Cliente</b>"), array("cliente" => utf8_decode($receptorNode['nombre'])), array("cliente" => "RFC: " . utf8_decode($receptorNode['rfc'])), array("cliente" => utf8_decode($receptordomicilioNode['calle']) . " " . utf8_decode($receptordomicilioNode['noExterior']) . " {$noInterior} "), array("cliente" => utf8_decode($receptordomicilioNode['colonia']) . " " . $localidadCliente), array("cliente" => utf8_decode($municipio) . ", " . utf8_decode($receptordomicilioNode['estado']) . "  " . utf8_decode($receptordomicilioNode['codigoPostal']) . " \n" . utf8_decode($receptordomicilioNode['pais'])), array("cliente" => utf8_decode("Atención: " . $info_xtra->Receptor->contacto . "         Cliente: " . $info_xtra->Receptor->noCliente)), array("cliente" => utf8_decode("Tel: " . $info_xtra->Receptor->telefono)));
        $formaDePago = isset($comprobanteNode['formaDePago']) ? $comprobanteNode['formaDePago'] : "PAGO EN UNA SOLA EXHIBICION";
        $metodoPago = isset($comprobanteNode['metodoDePago']) ? $comprobanteNode['metodoDePago'] : "No Identificado";
        $numeroCuentaPago = isset($comprobanteNode['NumCtaPago']) ? $comprobanteNode['NumCtaPago'] : "No Identificado";
        $tableData2 = array(array("expedido" => "Expedido en: " . utf8_decode($info_xtra->LugarExpedicion)), array("expedido" => "Forma de Pago: " . utf8_decode($formaDePago)), array("expedido" => "Metodo de Pago: " . utf8_decode($metodoPago)), array("expedido" => "No. de Cuenta: " . utf8_decode($numeroCuentaPago)), array("expedido" => "Condiciones de Pago: " . utf8_decode($comprobanteNode['condicionesDePago'])), array("expedido" => "Regimen Fiscal: " . utf8_decode(preg_replace("/Ii/", "II", ucwords(strtolower($regimenFiscal))))), array("expedido" => "Tipo de Cambio: " . $comprobanteNode['TipoCambio'] . "  Moneda: " . $comprobanteNode['Moneda']), array("expedido" => "Elaboro: " . utf8_decode($info_xtra->Vendedor)), array("expedido" => utf8_decode("Póliza: " . $info_xtra->NumeroPoliza . "          SAP No: " . $info_xtra->NumeroPedido)));
        $tableData = array();
        $aux = count($tableData1) >= count($tableData2) ? $tableData1 : $tableData2;
        $cont = 0;
        foreach ($aux as $arr) {
            array_push($tableData, array("cliente" => $tableData1[$cont]["cliente"], "expedido" => $tableData2[$cont]["expedido"]));
            $cont++;
        }
        $colNames = array("cliente" => "", "expedido" => "");
        $colOptions = array("cliente" => array('justification' => 'left', 'width' => 205), "expedido" => array('justification' => 'left', 'width' => 205));
        $options = array('showLines' => 1, 'showHeadings' => 0, 'shaded' => 1, 'shadeCol' => array(0.9, 0.9, 0.9), 'fontSize' => 7, 'textCol' => array(0, 0, 0), 'rowGap' => 2, 'colGap' => 5, 'xPos' => 35, 'xOrientation' => 'right', 'width' => 410, 'cols' => $colOptions, 'innerLineThickness' => 0.3, 'outerLineThickness' => 0.3);
        $pdf->ezSetDy(125);
        $pdf->ezTable($tableData, $colNames, "", $options);
        //encabezado
        //error_log(print_r($info_xtra,true));
        $tableData = array(array("dato" => utf8_decode($info_xtra->Consumo->NotaEncabezado)));
        $colOptions = array("dato" => array('justification' => 'left', 'width' => 540));
        $options = array('showLines' => 1, 'showHeadings' => 0, 'shaded' => 0, 'shadeCol' => array(0.9, 0.9, 0.9), 'fontSize' => 7, 'textCol' => array(0, 0, 0), 'rowGap' => 5, 'colGap' => 5, 'xPos' => 35, 'xOrientation' => 'right', 'width' => 120, 'cols' => $colOptions, 'innerLineThickness' => 0.3, 'outerLineThickness' => 0.3);
        $pdf->ezSetDy(-10);
        $pdf->ezTable($tableData, "", "", $options);
        $actualY = $pdf->y;
        $pdf->setColor(0, 0, 0);
        $pdf->filledRectangle(30, $actualY - 30, 540, 18);
        $pdf->ezSetY($actualY - 15);
        $pdf->setColor(1, 1, 1);
        $pdf->ezText("<b>Codigo</b>", 7, array('left' => 25, 'justification' => 'left'));
        $pdf->ezSetY($actualY - 15);
        $pdf->ezText("<b>Descripcion</b>", 7, array('left' => 180, 'justification' => 'left'));
        $pdf->ezSetY($actualY - 15);
        $pdf->ezText("<b>Cant</b>", 7, array('left' => 361, 'justification' => 'left'));
        $pdf->ezSetY($actualY - 15);
        $pdf->ezText("<b>Unidad</b>", 7, array('left' => 398, 'justification' => 'left'));
        $pdf->ezSetY($actualY - 15);
        $pdf->ezText("<b>Unitario</b>", 7, array('left' => 445, 'justification' => 'left'));
        $pdf->ezSetY($actualY - 15);
        $pdf->ezText("<b>Importe</b>", 7, array('left' => 497, 'justification' => 'left'));
        ////////// i. Partidas
        $tableData = array();
        $renglones = 0;
        $rowData = array("codigo" => "", "cantidad" => "", "unidad" => "", "descripcion" => "", "unitario" => "", "importe" => "");
        $partidaCnt = 0;
        $cantidadArrayConceptos = count($conceptos);
        foreach ($conceptos as $key => $conceptoNode) {
            if (stristr($key, $attr) && $cantidadArrayConceptos == 2) {
                $partidaCnt++;
                $renglones += 2;
                $currentObj = array();
                $descripcion = $conceptoNode['descripcion'];
                $totalPalabras = strlen($descripcion);
                $totalCaracteres = 4800;
                if ($totalPalabras >= $totalCaracteres) {
                    $pagDesc = ceil($totalPalabras / $totalCaracteres);
                    $aux = 1;
                    $array = array();
                    for ($i = 1; $i <= $pagDesc; $i++) {
                        if ($i == $pagDesc) {
                            $array[] = $totalPalabras;
                        } else {
                            $val = $aux += $totalCaracteres;
                            $array[] = $val;
                        }
                    }
                    $desc = array();
                    $o = 0;
                    foreach ($array as $valor) {
                        $desc[] = substr($descripcion, $o, $valor);
                        $o += $valor - $o;
                    }
                    $cont = 1;
                    foreach ($desc as $descripcionexp) {
                        $currentObj["codigo"] = $info_xtra->Consumo->partidas[$partidaCnt - 1]->codigo;
                        $currentObj["cantidad"] = number_format(abs(doubleval($conceptoNode['cantidad'])), 2);
                        //$currentObj["unidad"]= (isset($conceptoNode['unidad'])) ? $conceptoNode['unidad'] :  "No Aplica";
                        $currentObj["unidad"] = $conceptoNode['unidad'];
                        //)) ? $conceptoNode['unidad'] :  "No Aplica";
                        $currentObj["descripcion"] = str_replace("__", "\n", utf8_decode($descripcionexp) . "\n" . utf8_decode($info_xtra->Consumo->partidas[$partidaCnt - 1]->nota));
                        if ($info_xtra->TipoImpresion == "KI2") {
                            $contPartidas = count($info_xtra->Consumo->partidas);
                            for ($i = 1; $i < $contPartidas; $i++) {
                                $currentObj["descripcion"] .= $info_xtra->Consumo->partidas[$i]->codigo . " " . $info_xtra->Consumo->partidas[$i]->cantidad . " " . $info_xtra->Consumo->partidas[$i]->unidad . " " . $info_xtra->Consumo->partidas[$i]->descripcion . " \$" . $info_xtra->Consumo->partidas[$i]->valorUnitario . " \n";
                            }
                        }
                        $currentObj["unitario"] = number_format($conceptoNode['valorUnitario'], 2);
                        $currentObj["importe"] = number_format(doubleval($conceptoNode['importe']), 2);
                        $for = $cont++;
                        log_action("for:::" . $for);
                        if ($for > 1) {
                            $currentObj["codigo"] = "";
                            $currentObj["cantidad"] = "";
                            $currentObj["unidad"] = "";
                            $currentObj["unitario"] = "";
                            $currentObj["importe"] = "";
                        }
                        array_push($tableData, $currentObj);
                    }
                } else {
                    $currentObj["codigo"] = $info_xtra->Consumo->partidas[$partidaCnt - 1]->codigo;
                    $currentObj["cantidad"] = number_format(abs(doubleval($conceptoNode['cantidad'])), 2);
                    //$currentObj["unidad"]= (isset($conceptoNode['unidad'])) ? $conceptoNode['unidad'] :  "No Aplica";
                    $currentObj["unidad"] = $conceptoNode['unidad'];
                    //)) ? $conceptoNode['unidad'] :  "No Aplica";
                    $currentObj["descripcion"] = str_replace("__", "\n", utf8_decode($descripcion) . "\n" . utf8_decode($info_xtra->Consumo->partidas[$partidaCnt - 1]->nota));
                    if ($info_xtra->TipoImpresion == "KI2") {
                        $contPartidas = count($info_xtra->Consumo->partidas);
                        for ($i = 1; $i < $contPartidas; $i++) {
                            $currentObj["descripcion"] .= utf8_decode($info_xtra->Consumo->partidas[$i]->codigo . " " . $info_xtra->Consumo->partidas[$i]->cantidad . " " . $info_xtra->Consumo->partidas[$i]->unidad . " " . $info_xtra->Consumo->partidas[$i]->descripcion . " " . $info_xtra->Consumo->partidas[$i]->valorUnitario) . " \n";
                        }
                    }
                    $currentObj["unitario"] = number_format($conceptoNode['valorUnitario'], 2);
                    $currentObj["importe"] = number_format(doubleval($conceptoNode['importe']), 2);
                    array_push($tableData, $currentObj);
                }
            } else {
                foreach ($conceptoNode as $key1 => $conceptoNode1) {
                    log_action(print_r($key1, TRUE));
                    if (stristr($key1, $attr)) {
                        $partidaCnt++;
                        $renglones += 2;
                        $currentObj = array();
                        $currentObj["codigo"] = $info_xtra->Consumo->partidas[$partidaCnt - 1]->codigo;
                        $currentObj["cantidad"] = number_format(abs(doubleval($conceptoNode1['cantidad'])), 2);
                        //$currentObj["unidad"]= (isset($conceptoNode['unidad'])) ? $conceptoNode['unidad'] :  "No Aplica";
                        $currentObj["unidad"] = $conceptoNode1['unidad'];
                        //)) ? $conceptoNode['unidad'] :  "No Aplica";
                        $currentObj["descripcion"] = str_replace("__", "\n", utf8_decode($conceptoNode1['descripcion'] . "\n" . $info_xtra->Consumo->partidas[$partidaCnt - 1]->nota));
                        if ($info_xtra->TipoImpresion == "KI2") {
                            $contPartidas = count($info_xtra->Consumo->partidas);
                            for ($i = 1; $i < $contPartidas; $i++) {
                                $currentObj["descripcion"] .= $info_xtra->Consumo->partidas[$i]->codigo . " " . $info_xtra->Consumo->partidas[$i]->cantidad . " " . $info_xtra->Consumo->partidas[$i]->unidad . " " . $info_xtra->Consumo->partidas[$i]->descripcion . " \$" . $info_xtra->Consumo->partidas[$i]->valorUnitario . " \n";
                            }
                        }
                        $currentObj["unitario"] = number_format($conceptoNode1['valorUnitario'], 2);
                        $currentObj["importe"] = number_format(doubleval($conceptoNode1['importe']), 2);
                        array_push($tableData, $currentObj);
                    }
                }
                //fin foreach 2  chs 20130705
            }
        }
        $currentObj = array();
        $currentObj["codigo"] = "";
        $currentObj["cantidad"] = "";
        $currentObj["unidad"] = "";
        $currentObj["descripcion"] = str_replace("__", "\n", utf8_decode($row_factura["fnotas"]));
        $currentObj["unitario"] = "";
        $currentObj["importe"] = "";
        array_push($tableData, $currentObj);
        if (isset($row_addenda['cl_fld1'])) {
            $currentObj = array();
            $currentObj["cantidad"] = "";
            $currentObj["descripcion"] = $row_addenda['cl_fld1'];
            if (!empty($row_addenda['cl_fld2'])) {
                $currentObj["descripcion"] .= "\n" . $row_addenda['cl_fld2'];
            }
            if (!empty($row_addenda['cl_fld3'])) {
                $currentObj["descripcion"] .= "\n" . $row_addenda['cl_fld3'];
            }
            if (!empty($row_addenda['cl_fld4'])) {
                $currentObj["descripcion"] .= "\n" . $row_addenda['cl_fld4'];
            }
            if (!empty($row_addenda['cl_fld5'])) {
                $currentObj["descripcion"] .= "\n" . $row_addenda['cl_fld5'];
            }
            if (!empty($row_addenda['cl_fld6'])) {
                $currentObj["descripcion"] .= "\n" . $row_addenda['cl_fld6'];
            }
            if (!empty($row_addenda['cl_fld7'])) {
                $currentObj["descripcion"] .= "\n" . $row_addenda['cl_fld7'];
            }
            if (!empty($row_addenda['cl_fld8'])) {
                $currentObj["descripcion"] .= "\n" . $row_addenda['cl_fld8'];
            }
            if (!empty($row_addenda['cl_fld9'])) {
                $currentObj["descripcion"] .= "\n" . $row_addenda['cl_fld9'];
            }
            if (!empty($row_addenda['cl_fld10'])) {
                $currentObj["descripcion"] .= "\n" . $row_addenda['cl_fld10'];
            }
            if (!empty($row_addenda['cl_fld11'])) {
                $currentObj["descripcion"] .= "\n" . $row_addenda['cl_fld11'];
            }
            if (!empty($row_addenda['cl_fld12'])) {
                $currentObj["descripcion"] .= "\n" . $row_addenda['cl_fld12'];
            }
            $currentObj["unitario"] = "";
            $currentObj["importe"] = "";
            array_push($tableData, $currentObj);
        }
        $currentObj = array();
        $currentObj["codigo"] = "";
        $currentObj["cantidad"] = "";
        $currentObj["unidad"] = "";
        $currentObj["descripcion"] = "";
        $currentObj["unitario"] = "";
        $currentObj["importe"] = "";
        if ($info_xtra->TipoImpresion == "KI2") {
            for ($renglones; $renglones < 10 - count($info_xtra->Consumo->partidas) * 0.95; $renglones++) {
                array_push($tableData, $currentObj);
            }
        } else {
            if ($renglones < 10) {
                for ($renglones; $renglones < 10; $renglones++) {
                    array_push($tableData, $currentObj);
                }
            }
        }
        $colNames = array("codigo" => "", "descripcion" => "", "cantidad" => "", "unidad" => "", "unitario" => "", "importe" => "");
        $colOptions = array("codigo" => array('justification' => 'center', 'width' => 70), "descripcion" => array('justification' => 'left', 'width' => 280), "cantidad" => array('justification' => 'center', 'width' => 40), "unidad" => array('justification' => 'left', 'width' => 40), "unitario" => array('justification' => 'right', 'width' => 55), "importe" => array('justification' => 'right', 'width' => 55));
        $options = array('showLines' => 1, 'showHeadings' => 1, 'shaded' => 1, 'shadeCol' => array(0.9, 0.9, 0.9), 'fontSize' => 7, 'textCol' => array(0, 0, 0), 'rowGap' => 4, 'colGap' => 5, 'xPos' => 35, 'xOrientation' => 'right', 'width' => 410, 'cols' => $colOptions, 'innerLineThickness' => 0.3, 'outerLineThickness' => 0.3);
        // Dibuja la tabla partidas
        $pdf->ezSetDy(11);
        $pdf->ezTable($tableData, $colNames, "", $options);
        ////////// i. Cantidad con letra
        $cadena = covertirNumLetras(number_format($comprobanteNode['total'], 2, ".", ''));
        if ($comprobanteNode['Moneda'] == "USD") {
            $cadena = str_replace("M.N.", "USD", $cadena);
            $cadena = str_replace("PESOS", "DOLARES", $cadena);
            $cadena = str_replace("PESO", "DOLAR", $cadena);
        }
        $tableData = array(array("dato" => "<b>Nota:</b>\n" . utf8_decode($info_xtra->Consumo->notaAlPie)), array("dato" => "<b>Total con letra</b>\n" . trim($cadena)));
        $colNames = array("dato" => "<b>Cant</b>");
        $colOptions = array("dato" => array('justification' => 'left', 'width' => 390));
        $options = array('showLines' => 1, 'showHeadings' => 0, 'shaded' => 1, 'shadeCol' => array(0.9, 0.9, 0.9), 'fontSize' => 7, 'textCol' => array(0, 0, 0), 'rowGap' => 2.5, 'colGap' => 5, 'xPos' => 35, 'xOrientation' => 'right', 'width' => 120, 'cols' => $colOptions, 'innerLineThickness' => 0.3, 'outerLineThickness' => 0.3);
        // Dibuja la tabla cantidad con letra
        $pdf->ezSetDy(0);
        $pdf->ezTable($tableData, "", "", $options);
        ////////// i. Totales
        $f_importe = "\$" . number_format($comprobanteNode['subTotal'], 2);
        //$f_iva_T=$conceptoNode['totalImpuestosTrasladados'];
        $f_total = "\$" . number_format($comprobanteNode['total'], 2);
        $tableData = array();
        $rowData = array("leyenda" => "", "cantidad" => "");
        $subtotal = array("dato" => "Subtotal", "valor" => $f_importe);
        array_push($tableData, $subtotal);
        foreach ($traslados as $key => $trasladoNode) {
            if ($key === $trasladoTag . $attr) {
                $tasaImpuesto = array();
                $tasaImpuesto_t = number_format($trasladoNode['tasa'], 0);
                $tasaImpuesto["dato"] = $trasladoNode['impuesto'] . " " . $tasaImpuesto_t . "%";
                $tasaImpuesto["valor"] = "\$" . number_format($trasladoNode['importe'], 2);
                //array_push($tableData,$tasaImpuesto);
            }
        }
        if (!empty($retenciones)) {
            foreach ($retenciones as $key => $retencionNode) {
                if ($key === $retencionTag . $attr) {
                    $tasaImpuesto = array();
                    $tasaImpuesto_t = number_format($retencionNode['tasa'], 2);
                    $tasaImpuesto["dato"] = "Ret. " . $retencionNode['impuesto'];
                    $tasaImpuesto["valor"] = "\$" . number_format($retencionNode['importe'], 2);
                    //array_push($tableData,$tasaImpuesto);
                }
            }
        }
        //fin if empty
        $iva = array("dato" => "<b>IVA</b>", "valor" => "<b>\$ " . number_format($info_xtra->TotalImpuestosTrasladados, 2) . "</b>");
        array_push($tableData, $iva);
        $total = array("dato" => "<b>Total</b>", "valor" => "<b>" . $f_total . "</b>");
        array_push($tableData, $total);
        $colNames = array("dato" => "<b>Cant</b>", "valor" => "Importe");
        $colOptions = array("dato" => array('justification' => 'right', 'width' => 55), "valor" => array('justification' => 'right', 'width' => 95));
        $options = array('showLines' => 1, 'showHeadings' => 0, 'shaded' => 2, 'shadeCol' => array(1, 1, 1), 'shadeCol2' => array(91, 21, 0), 'fontSize' => 7, 'textCol' => array(0, 0, 0), 'rowGap' => 3, 'colGap' => 5, 'xPos' => 425, 'xOrientation' => 'right', 'width' => 120, 'cols' => $colOptions, 'innerLineThickness' => 0.3, 'outerLineThickness' => 0.3);
        // Dibuja la tabla totales
        $pdf->ezSetDy(42.5);
        $pdf->ezTable($tableData, $colNames, "", $options);
        $rfce = $row_empresa['rfc'];
        $rfcr = $receptorNode['rfc'];
        $total = $comprobanteNode['total'];
        $uuidsat = $row_factura['uuid'];
        $cadenaQRCode = sprintf("?re=%s&rr=%s&tt=%s&id=%s", $rfce, $rfcr, $total, $uuidsat);
        /*QR Code: Para usar qr_imgV2():  qr_imgV2(d,e,s,v,t);
          d= datos        Cadena o datos a ser codificados.
          e= ECC level    Puede ser L,M,Q,H  (default M)
          s= module size  Para imagen JPEG:8; para PNG:4
          v= version      1-40   8 recomendado.
          t= image type   "J":imagen jpeg, "P" o culaquier otra cosa: imagen PNG */
        $img_filename = qr_imgV2($cadenaQRCode, "M", 8, 8, "J", $PATHQR);
        //v:7-13 8 parece adecuado.
        //$pdf->addJpegFromFile($img_filename,495,$pdf->y,90); //100
        //$pdf->addJpegFromFile($img_filename,32,170,130); //100
        $pdf->addJpegFromFile($img_filename, 32, $pdf->y - 140, 130);
        //100
        unlink($img_filename);
        ////////// i. Sello
        if ($version === "3.2") {
            $tableData = array(array("dato" => "<b>Sello Digital del Emisor</b>\n" . $row_factura['sello']), array("dato" => "<b>Sello Digital del SAT</b>\n" . $row_factura['selloSAT']));
        } else {
            $tableData = array(array("dato" => "<b>Sello Digital</b>\n" . $row_factura['sello']));
        }
        $colNames = array("dato" => "<b>Cant</b>");
        $colOptions = array("dato" => array('justification' => 'left', 'width' => 400));
        $options = array('showLines' => 1, 'showHeadings' => 0, 'shaded' => 0, 'shadeCol' => array(0.8, 0.8, 0.8), 'fontSize' => 7, 'textCol' => array(0, 0, 0), 'rowGap' => 5, 'colGap' => 5, 'xPos' => 175, 'xOrientation' => 'right', 'width' => 120, 'cols' => $colOptions, 'innerLineThickness' => 0.3, 'outerLineThickness' => 0.3);
        // Dibuja la tabla sello
        $pdf->ezSetDy(-10);
        $pdf->ezTable($tableData, $colNames, "", $options);
        /*$pdf->setColor(91,21,0);
        		$pdf->filledRectangle(30,167,134,151);
        		$pdf->setColor(1,1,1);	
        		$pdf->filledRectangle(31,167.5,132.3,149.5);*/
        ////////// i. Cadena original
        $columnaCadena = "";
        if ($version === "3.2") {
            $columnaCadena = sprintf("||1.0|%s|%s|%s|%s||", $row_factura['uuid'], $row_factura['FechaTimbrado'], $row_factura['selloCFD'], $row_factura['noCertificadoSAT']);
        } else {
            $columnaCadena = sprintf("%s", $row_factura['cadena']);
        }
        $tableData = array(array("dato" => "<b>Cadena original del complemento de certificacion digital del SAT</b>\n" . $columnaCadena), array("dato" => "<b>Folio Fiscal</b>\n" . $row_factura['uuid']));
        $colNames = array("dato" => "<b>Cant</b>");
        $colOptions = array("dato" => array('justification' => 'left', 'width' => 400));
        $options = array('showLines' => 1, 'showHeadings' => 0, 'shaded' => 0, 'shadeCol' => array(0.8, 0.8, 0.8), 'fontSize' => 7, 'textCol' => array(0, 0, 0), 'rowGap' => 5, 'colGap' => 5, 'xPos' => 175, 'xOrientation' => 'right', 'width' => 120, 'cols' => $colOptions, 'innerLineThickness' => 0.3, 'outerLineThickness' => 0.3);
        // Dibuja la tabla cadena original
        $pdf->ezSetDy(-5);
        $pdf->ezTable($tableData, $colNames, "", $options);
        // Leyendas
        $pdf->ezSetDy(-12);
        $leyendas = "ESTE DOCUMENTO ES UNA REPRESENTACION IMPRESA DE UN CFDI.\n";
        $pdf->setColor(0.5, 0.5, 0.5);
        $pdf->ezText($leyendas, 5, array('left' => 50, 'justification' => 'center'));
        $pdf->setColor(0, 0, 0);
        $pdf->ezStream(array("filename" => $row_factura['folio'] . "_" . str_replace(" ", "-", $receptorNode['nombre'])));
        //Necesario para que funcione ezStartPageNumbers
        //REGRESA PARA PONER ENCABEZADO EN PAGINAS 2 ->
        if ($contadorPagina != $contadorTotalPaginas) {
            $pdf->ezNewPage();
            $pdf->ezSetDy(-12);
        }
        $contadorPagina++;
    }
    //fin del foreach para la creacion del objeto pdf
    //ESCRIBE REPORTE AL ARCHIVO.
    //================================================================================
    $pdfcode = $pdf->output();
    error_log($tmpName);
    if ($tmpName === 2 || !$tmpName) {
        $tmpName = !$tmpName ? $tmpName : true;
    } else {
        exit($pdfcode);
    }
    //save the file
    if ($tmpName) {
        $nombrePDF = tempnam($tmp . "tmp/", 'face5') . ".pdf";
        $nombreToks = explode("/", $nombrePDF);
        if (count($nombreToks) < 2) {
            $nombreToks = explode("\\", $nombrePDF);
        }
        $lastTok = count($nombreToks) - 1;
        $nombrePDF = $nombreToks[$lastTok];
        $archivoPDF = $tmp . "tmp/" . $nombrePDF;
        $archivos = array($nombrePDF, $archivoPDF);
        error_log(print_R($archivos, true));
    } else {
        $nombrePDF = $tipoDocto . "_" . $row_factura['serie'] . $row_factura['folio'] . ".pdf";
        //$archivoPDF ="tmp/".$nombrePDF;//chs 20130705
        $archivoPDF = $tmp . "tmp/" . $nombrePDF;
        $archivos = array($nombrePDF, $archivoPDF);
        error_log(2);
        ob_flush();
        ob_clean();
    }
    global $SITE_ROOT;
    error_log($archivoPDF);
    @file_put_contents($SITE_ROOT . "gui/" . $archivoPDF, $pdfcode);
    /*$fp = fopen($archivoPDF,'w+');
    		fwrite($fp,$pdfcode);
    		fclose($fp);*/
    return $archivos;
}
 function berechnung_anzeigen($leerstand_arr, $vermietete_arr, $monat, $jahr)
 {
     echo '<pre>';
     // print_r($vermietete_arr);
     $anzahl_vermietete = count($vermietete_arr);
     $mv = new mietvertrag();
     $m = new mietkonto();
     $haeuser = array();
     $gsollmiete_vermietet = 0;
     for ($a = 0; $a < $anzahl_vermietete; $a++) {
         $einheit_id = $vermietete_arr[$a]['EINHEIT_ID'];
         $haus_str = $vermietete_arr[$a]['HAUS_STRASSE'];
         $haus_nr = $vermietete_arr[$a]['HAUS_NUMMER'];
         $haus_str_nr = $haus_str . ' ' . $haus_nr;
         if (!in_array($haus_str_nr, $haeuser)) {
             $haeuser[] = $haus_str_nr;
         }
         $mv->get_mietvertrag_infos_aktuell($einheit_id);
         $summe_f_monatlich = $m->summe_forderung_monatlich($mv->mietvertrag_id, $monat, $jahr);
         $gsollmiete_vermietet = $gsollmiete_vermietet + $summe_f_monatlich;
     }
     $anzahl_leer = count($leerstand_arr);
     $gsollmiete_leer = 0;
     for ($b = 0; $b < $anzahl_leer; $b++) {
         $einheit_id = $leerstand_arr[$b]['EINHEIT_ID'];
         $haus_str = $leerstand_arr[$b]['HAUS_STRASSE'];
         $haus_nr = $leerstand_arr[$b]['HAUS_NUMMER'];
         $haus_str_nr = $haus_str . ' ' . $haus_nr;
         if (!in_array($haus_str_nr, $haeuser)) {
             $haeuser[] = $haus_str_nr;
         }
         $sollmiete_leer = $this->get_sollmiete_leerstand($einheit_id);
         $gsollmiete_leer = $gsollmiete_leer + $sollmiete_leer;
     }
     // print_r($haeuser);
     $g_summe = $gsollmiete_vermietet + $gsollmiete_leer;
     $g_summe_a = nummer_punkt2komma($g_summe);
     $gsollmiete_vermietet_a = nummer_punkt2komma($gsollmiete_vermietet);
     $gsollmiete_leer_a = nummer_punkt2komma($gsollmiete_leer);
     $v_geb = $g_summe / 100 * 5;
     $brutto_vgeb = $v_geb * 1.19;
     $mwst_eur = $v_geb / 100 * 19;
     $mwst_eur = nummer_punkt2komma($mwst_eur);
     $brutto_vgeb_a = nummer_punkt2komma($brutto_vgeb);
     $v_geb_a = nummer_punkt2komma($v_geb);
     if (!isset($_REQUEST['pdf'])) {
         echo "{$gsollmiete_vermietet_a} €   GESAMT SOLL VERMIETET<br>";
         echo "{$gsollmiete_leer_a} €   GESAMT SOLL LEER<br>";
         echo " {$g_summe_a} €   GESAMT SOLL<br>";
         echo " {$v_geb_a} €   NETTO VERWALTERGEBÜHR 5%<br>";
         echo " <b>{$brutto_vgeb_a} €   INKL. 19% MWST VERWALTERGEBÜHR 5%</b><hr>";
     } else {
         /* PDF AUSGABE */
         ob_clean();
         // ausgabepuffer leeren
         header("Content-type: application/pdf");
         // wird von MSIE ignoriert
         //include_once ('pdfclass/class.ezpdf.php');
         $pdf = new Cezpdf('a4', 'portrait');
         $pdf->ezSetCmMargins(4.5, 1, 1, 1);
         $berlus_schrift = 'pdfclass/fonts/Times-Roman.afm';
         $text_schrift = 'pdfclass/fonts/Arial.afm';
         $pdf->addJpegFromFile('includes/logos/logo_hv_sw.jpg', 220, 750, 175, 100);
         // $pdf->addJpgFromFile('pdfclass/logo_262_150_sw1.jpg', 300, 500, 250, 150);
         $pdf->setLineStyle(0.5);
         $pdf->selectFont($berlus_schrift);
         $pdf->addText(42, 743, 6, "BERLUS HAUSVERWALTUNG - Fontanestr. 1 - 14193 Berlin");
         $pdf->line(42, 750, 550, 750);
         $monatsname = monat2name($monat);
         $pdf->addText(42, 720, 12, "Berechnungsbogen für die Verwaltergebühr {$monatsname} {$jahr}");
         $pdf->addText(42, 650, 10, "Gesamtsoll aus vermieteten Einheiten");
         $pdf->addText(300, 650, 10, "{$gsollmiete_vermietet_a} €");
         $pdf->addText(42, 635, 10, "Gesamtsoll aus leerstehenden Einheiten");
         $pdf->addText(300, 635, 10, "{$gsollmiete_leer_a} €");
         $pdf->setLineStyle(0.5);
         $pdf->line(42, 630, 350, 630);
         $pdf->addText(42, 620, 10, "<b>Gesamtsoll");
         $pdf->addText(300, 620, 10, "{$g_summe_a} €</b>");
         $pdf->addText(42, 595, 10, "5% Verwaltergebühr");
         $pdf->addText(300, 595, 10, "{$v_geb_a} €");
         $pdf->addText(42, 585, 10, "+ 19% MWSt");
         $pdf->addText(300, 585, 10, "{$mwst_eur} €");
         $pdf->setLineStyle(0.5);
         $pdf->line(42, 580, 350, 580);
         $pdf->addText(42, 570, 10, "<b>Verwaltergebühr brutto");
         $pdf->addText(300, 570, 10, "{$brutto_vgeb_a} €</b>");
         /* Häuser */
         $pdf->addText(42, 480, 10, "In diese Berechnung wurden folgende Häuser einbezogen:");
         $text_xpos = 460;
         for ($c = 0; $c < count($haeuser); $c++) {
             $haus = $haeuser[$c];
             $pdf->addText(42, $text_xpos, 10, "<b>{$haus}</b>");
             $text_xpos = $text_xpos - 10;
             if ($text_xpos == 100) {
                 $pdf->ezNewPage();
                 $text_xpos = 650;
                 $pdf->ezSetCmMargins(4.5, 1, 1, 1);
                 $berlus_schrift = 'pdfclass/fonts/Times-Roman.afm';
                 $text_schrift = 'pdfclass/fonts/Arial.afm';
                 $pdf->addJpegFromFile('includes/logos/logo_hv_sw.jpg', 220, 750, 175, 100);
                 // $pdf->addJpgFromFile('pdfclass/logo_262_150_sw.jpg', 450, 780, 100, 42);
                 $pdf->setLineStyle(0.5);
                 $pdf->selectFont($berlus_schrift);
                 $pdf->addText(42, 743, 6, "BERLUS HAUSVERWALTUNG - Fontanestr. 1 - 14193 Berlin");
                 $pdf->line(42, 750, 550, 750);
                 $pdf->addText(42, 720, 12, "Berechnungsbogen für die Verwaltergebühr {$monat}/{$jahr}");
             }
         }
         $pdf->ezStream();
     }
 }