<?php
  /**
   * phpaga
   *
   * Print invoice(s) to PDF
   *
   * Prints one or more invoices to a PDF file.
   *
   * @author Florian Lanthaler <florian@phpaga.net>
   * @version $Id: bill_pdf.php 978 2010-03-21 20:39:05Z florian $
   *
   * Copyright (c) 2002, Florian Lanthaler <florian@phpaga.net>
   *
   * All rights reserved.
   *
   * Redistribution and use in source and binary forms, with or without
   * modification, are permitted provided that the following conditions are
   * met:
   *
   *    * Redistributions of source code must retain the above copyright
   *      notice, this list of conditions and the following disclaimer.
   *
   *    * Redistributions in binary form must reproduce the above copyright
   *      notice, this list of conditions and the following disclaimer in
   *      the documentation and/or other materials provided with the
   *      distribution.
   *
   *    * Neither the name of Florian Lanthaler nor the names of his
   *      contributors may be used to endorse or promote products derived
   *      from this software without specific prior written permission.
   *
   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
   * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
   * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
   * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
   * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   */

include_once("./config.php");
include_once(PHPAGA_LIBPATH."pdf.php");

phpaga_user_pageperm(PHPAGA_PERM_MANAGE_INVOICES);

$opInfo = array();
$append_oplist = false;
$append_timesheet = false;
$letterhead = false;
$download = false;
$errors = array();
$search_params = array();

if (isset ($REQUEST_DATA["oplist"]) && ($REQUEST_DATA["oplist"] == "1"))
    $append_oplist = true;

if (isset ($REQUEST_DATA["timesheet"]) && ($REQUEST_DATA["timesheet"] == "1"))
    $append_timesheet = true;

if (isset ($REQUEST_DATA["letterhead"]) && ($REQUEST_DATA["letterhead"] == "1"))
    $letterhead = true;

if (isset ($REQUEST_DATA["download"]) && ($REQUEST_DATA["download"] == "1"))
    $download = true;

if (!isset($REQUEST_DATA["id"]))
    phpaga_error(PHPAGA_ERR_INVALID_INVOICEID);
else if (!is_array($REQUEST_DATA["id"])  && !is_numeric($REQUEST_DATA["id"]))
    phpaga_error(PHPAGA_ERR_INVALID_INVOICEID);
else {

    if (!is_array($REQUEST_DATA["id"]))
        $bills = array($REQUEST_DATA["id"]);
    else
        $bills = $REQUEST_DATA["id"];

    $pdf = new phpaga_pdf_document("invoices.pdf");

    $i = 0;
    foreach ($bills as $bill_id) {

        $billInfo = phpaga_bills_getinfo($bill_id);

        if (PhPagaError::isError($billInfo))
            $errors[] = $billInfo->getMessage();
        else {

            $billInfo = phpaga_utf8decodeArray($billInfo);

            if (count($bills) == 1)
                $pdf->set_filename(sprintf("invoice_%s-%s.pdf",
                                           date("Y", strtotime($billInfo["bill_date"])),
                                           $billInfo["bill_number"]));


            $cpnInfo_recipient = phpaga_companies_getInfo($billInfo["cpn_id"]);

            if (PhPagaError::isError($cpnInfo_recipient))
                $errors[] = $cpnInfo_recipient->getMessage();
            else {

                if (isset($billInfo["bill_person_recipient"]) && strlen($billInfo["bill_person_recipient"]))
                    $cpnInfo_recipient["bill_person_recipient"] = $billInfo["bill_person_recipient"];

                $cpnInfo_recipient = phpaga_utf8decodeArray($cpnInfo_recipient);

                if ($i > 0)
                    $pdf->next_page();

                $pdf->add_invoice($billInfo, array("recipient" => $cpnInfo_recipient,
                                                   "letterhead" => $letterhead));

                if (($append_oplist || $append_timesheet) && (count($billInfo["operations"]["oprows"]) > 0)) {

                    $search_params = array(array("param" =>_("Invoice"),
                                                 "value" => $billInfo["bill_number"].
                                                 "/".date("Y", strtotime($billInfo["bill_date"]))));

                    if ($append_oplist)
                        $pdf->add_oplist($billInfo["operations"]["oprows"], $search_params);

                    if ($append_timesheet)
                        $pdf->add_oplist($billInfo["operations"]["oprows"],
                                         $search_params,
                                         array("date" => _("Date"),
                                               "duration" => _("Duration"),
                                               "project" => _("Project")),
                                         _("Time sheet"));

                }

                $i++;
            }
        }
    }

    if (count($errors) > 0)
        phpaga_error($errors);
    else
        $pdf->spitout($download);
}

?>