<?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 650 2005-10-02 20:09:24Z worf $
   *
   * 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;
$errors = array();
$search_params = array();

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

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

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

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

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

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

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

        $result = phpaga_bills_getinfo($bill_id, $billInfo);

        if ($result != PHPAGA_ERR_NONE)
            $errors[] = $result;
        else
        {

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

            if ($result != PHPAGA_ERR_NONE)
                $errors[] = $result;
            else
            {

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

                if ($result != PHPAGA_ERR_NONE)
                    $errors[] = $result;
                else
                {

                    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();
}

?>