/**
  *  Show payments table
  *
  *  @param	PDF			$pdf     		Object PDF
  *  @param  Object		$object     	Object invoice
  *	@param	int			$posy			Position y in PDF
  *	@param	Translate	$outputlangs	Object langs for output
  *	@return int							<0 if KO, >0 if OK
  */
 function _tableau_versements(&$pdf, $object, $posy, $outputlangs)
 {
     $tab3_posx = 120;
     $tab3_top = $posy + 8;
     $tab3_width = 80;
     $tab3_height = 4;
     if ($this->page_largeur < 210) {
         $tab3_posx -= 20;
     }
     $default_font_size = pdf_getPDFFontSize($outputlangs);
     $pdf->SetFont('', '', $default_font_size - 3);
     $pdf->SetXY($tab3_posx, $tab3_top - 4);
     $pdf->MultiCell(60, 3, $outputlangs->transnoentities("PaymentsAlreadyDone"), 0, 'L', 0);
     $pdf->line($tab3_posx, $tab3_top, $tab3_posx + $tab3_width, $tab3_top);
     $pdf->SetFont('', '', $default_font_size - 4);
     $pdf->SetXY($tab3_posx, $tab3_top);
     $pdf->MultiCell(20, 3, $outputlangs->transnoentities("Payment"), 0, 'L', 0);
     $pdf->SetXY($tab3_posx + 21, $tab3_top);
     $pdf->MultiCell(20, 3, $outputlangs->transnoentities("Amount"), 0, 'L', 0);
     $pdf->SetXY($tab3_posx + 40, $tab3_top);
     $pdf->MultiCell(20, 3, $outputlangs->transnoentities("Type"), 0, 'L', 0);
     $pdf->SetXY($tab3_posx + 58, $tab3_top);
     $pdf->MultiCell(20, 3, $outputlangs->transnoentities("Num"), 0, 'L', 0);
     $pdf->line($tab3_posx, $tab3_top - 1 + $tab3_height, $tab3_posx + $tab3_width, $tab3_top - 1 + $tab3_height);
     $y = 0;
     $pdf->SetFont('', '', $default_font_size - 4);
     // Loop on each payment
     $sql = "SELECT p.datep as date, p.fk_paiement as type, p.num_paiement as num, pf.amount as amount,";
     $sql .= " cp.code";
     $sql .= " FROM " . MAIN_DB_PREFIX . "paiementfourn_facturefourn as pf, " . MAIN_DB_PREFIX . "paiementfourn as p";
     $sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "c_paiement as cp ON p.fk_paiement = cp.id";
     $sql .= " WHERE pf.fk_paiementfourn = p.rowid and pf.fk_facturefourn = " . $object->id;
     $sql .= " ORDER BY p.datep";
     $resql = $this->db->query($sql);
     if ($resql) {
         $num = $this->db->num_rows($resql);
         $i = 0;
         while ($i < $num) {
             $y += 3;
             $row = $this->db->fetch_object($resql);
             $pdf->SetXY($tab3_posx, $tab3_top + $y);
             $pdf->MultiCell(20, 3, dol_print_date($this->db->jdate($row->date), 'day', false, $outputlangs, true), 0, 'L', 0);
             $pdf->SetXY($tab3_posx + 21, $tab3_top + $y);
             $pdf->MultiCell(20, 3, price($row->amount), 0, 'L', 0);
             $pdf->SetXY($tab3_posx + 40, $tab3_top + $y);
             $oper = $outputlangs->transnoentitiesnoconv("PaymentTypeShort" . $row->code);
             $pdf->MultiCell(20, 3, $oper, 0, 'L', 0);
             $pdf->SetXY($tab3_posx + 58, $tab3_top + $y);
             $pdf->MultiCell(30, 3, $row->num, 0, 'L', 0);
             $pdf->line($tab3_posx, $tab3_top + $y + 3, $tab3_posx + $tab3_width, $tab3_top + $y + 3);
             $i++;
         }
     } else {
         $this->error = $this->db->lasterror();
         dol_syslog($this->db, $this->error, LOG_ERR);
         return -1;
     }
 }
 /**
  *  Show payments table
  *
  *  @param	PDF			$pdf           Object PDF
  *  @param  Object		$object         Object invoice
  *  @param  int			$posy           Position y in PDF
  *  @param  Translate	$outputlangs    Object langs for output
  *  @return int             			<0 if KO, >0 if OK
  */
 function _tableau_versements(&$pdf, $object, $posy, $outputlangs)
 {
     global $conf;
     $sign = 1;
     if ($object->type == 2 && !empty($conf->global->INVOICE_POSITIVE_CREDIT_NOTE)) {
         $sign = -1;
     }
     $tab3_posx = 120;
     $tab3_top = $posy + 8;
     $tab3_width = 80;
     $tab3_height = 4;
     if ($this->page_largeur < 210) {
         $tab3_posx -= 20;
     }
     $default_font_size = pdf_getPDFFontSize($outputlangs);
     $title = $outputlangs->transnoentities("PaymentsAlreadyDone");
     if ($object->type == 2) {
         $title = $outputlangs->transnoentities("PaymentsBackAlreadyDone");
     }
     $pdf->SetFont('', '', $default_font_size - 3);
     $pdf->SetXY($tab3_posx, $tab3_top - 4);
     $pdf->MultiCell(60, 3, $title, 0, 'L', 0);
     $pdf->line($tab3_posx, $tab3_top, $tab3_posx + $tab3_width, $tab3_top);
     $pdf->SetFont('', '', $default_font_size - 4);
     $pdf->SetXY($tab3_posx, $tab3_top);
     $pdf->MultiCell(20, 3, $outputlangs->transnoentities("Payment"), 0, 'L', 0);
     $pdf->SetXY($tab3_posx + 21, $tab3_top);
     $pdf->MultiCell(20, 3, $outputlangs->transnoentities("Amount"), 0, 'L', 0);
     $pdf->SetXY($tab3_posx + 40, $tab3_top);
     $pdf->MultiCell(20, 3, $outputlangs->transnoentities("Type"), 0, 'L', 0);
     $pdf->SetXY($tab3_posx + 58, $tab3_top);
     $pdf->MultiCell(20, 3, $outputlangs->transnoentities("Num"), 0, 'L', 0);
     $pdf->line($tab3_posx, $tab3_top - 1 + $tab3_height, $tab3_posx + $tab3_width, $tab3_top - 1 + $tab3_height);
     $y = 0;
     $pdf->SetFont('', '', $default_font_size - 4);
     // Loop on each deposits and credit notes included
     $sql = "SELECT re.rowid, re.amount_ht, re.amount_tva, re.amount_ttc,";
     $sql .= " re.description, re.fk_facture_source,";
     $sql .= " f.type, f.datef";
     $sql .= " FROM " . MAIN_DB_PREFIX . "societe_remise_except as re, " . MAIN_DB_PREFIX . "facture as f";
     $sql .= " WHERE re.fk_facture_source = f.rowid AND re.fk_facture = " . $object->id;
     $resql = $this->db->query($sql);
     if ($resql) {
         $num = $this->db->num_rows($resql);
         $i = 0;
         $invoice = new Facture($this->db);
         while ($i < $num) {
             $y += 3;
             $obj = $this->db->fetch_object($resql);
             if ($obj->type == 2) {
                 $text = $outputlangs->trans("CreditNote");
             } elseif ($obj->type == 3) {
                 $text = $outputlangs->trans("Deposit");
             } else {
                 $text = $outputlangs->trans("UnknownType");
             }
             $invoice->fetch($obj->fk_facture_source);
             $pdf->SetXY($tab3_posx, $tab3_top + $y);
             $pdf->MultiCell(20, 3, dol_print_date($obj->datef, 'day', false, $outputlangs, true), 0, 'L', 0);
             $pdf->SetXY($tab3_posx + 21, $tab3_top + $y);
             $pdf->MultiCell(20, 3, price($obj->amount_ttc, 0, $outputlangs), 0, 'L', 0);
             $pdf->SetXY($tab3_posx + 40, $tab3_top + $y);
             $pdf->MultiCell(20, 3, $text, 0, 'L', 0);
             $pdf->SetXY($tab3_posx + 58, $tab3_top + $y);
             $pdf->MultiCell(20, 3, $invoice->ref, 0, 'L', 0);
             $pdf->line($tab3_posx, $tab3_top + $y + 3, $tab3_posx + $tab3_width, $tab3_top + $y + 3);
             $i++;
         }
     } else {
         $this->error = $this->db->lasterror();
         return -1;
     }
     // Loop on each payment
     $sql = "SELECT p.datep as date, p.fk_paiement as type, p.num_paiement as num, pf.amount as amount,";
     $sql .= " cp.code";
     $sql .= " FROM " . MAIN_DB_PREFIX . "paiement_facture as pf, " . MAIN_DB_PREFIX . "paiement as p";
     $sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "c_paiement as cp ON p.fk_paiement = cp.id";
     $sql .= " WHERE pf.fk_paiement = p.rowid AND pf.fk_facture = " . $object->id;
     $sql .= " ORDER BY p.datep";
     $resql = $this->db->query($sql);
     if ($resql) {
         $num = $this->db->num_rows($resql);
         $i = 0;
         while ($i < $num) {
             $y += 3;
             $row = $this->db->fetch_object($resql);
             $pdf->SetXY($tab3_posx, $tab3_top + $y);
             $pdf->MultiCell(20, 3, dol_print_date($this->db->jdate($row->date), 'day', false, $outputlangs, true), 0, 'L', 0);
             $pdf->SetXY($tab3_posx + 21, $tab3_top + $y);
             $pdf->MultiCell(20, 3, price($sign * $row->amount, 0, $outputlangs), 0, 'L', 0);
             $pdf->SetXY($tab3_posx + 40, $tab3_top + $y);
             $oper = $outputlangs->transnoentitiesnoconv("PaymentTypeShort" . $row->code);
             $pdf->MultiCell(20, 3, $oper, 0, 'L', 0);
             $pdf->SetXY($tab3_posx + 58, $tab3_top + $y);
             $pdf->MultiCell(30, 3, $row->num, 0, 'L', 0);
             $pdf->line($tab3_posx, $tab3_top + $y + 3, $tab3_posx + $tab3_width, $tab3_top + $y + 3);
             $i++;
         }
     } else {
         $this->error = $this->db->lasterror();
         return -1;
     }
 }
Пример #3
0
 /**
  *   Affiche la grille des lignes de factures
  *
  *   @param     PDF			$pdf     		Object PDF
  *   @param		int			$tab_top		Tab top
  *   @param		int			$tab_height		Tab height
  *   @param		int			$nexY			next y
  *   @param		Translate	$outputlangs	Output langs
  *   @return	void
  */
 function _tableau(&$pdf, $tab_top, $tab_height, $nexY, $outputlangs)
 {
     global $conf;
     $default_font_size = pdf_getPDFFontSize($outputlangs);
     // Amount in (at tab_top - 1)
     $pdf->SetTextColor(0, 0, 0);
     $pdf->SetFont('', '', $default_font_size - 2);
     $titre = $outputlangs->transnoentities("AmountInCurrency", $outputlangs->transnoentitiesnoconv("Currency" . $conf->currency));
     $pdf->SetXY($this->page_largeur - $this->marge_droite - ($pdf->GetStringWidth($titre) + 4), $tab_top - 4);
     $pdf->MultiCell($pdf->GetStringWidth($titre) + 3, 2, $titre);
     $pdf->SetDrawColor(128, 128, 128);
     // Rect prend une longueur en 3eme param
     $pdf->Rect($this->marge_gauche, $tab_top, $this->page_largeur - $this->marge_gauche - $this->marge_droite, $tab_height);
     // line prend une position y en 3eme param
     $pdf->line($this->marge_gauche, $tab_top + 5, $this->page_largeur - $this->marge_droite, $tab_top + 5);
     $pdf->SetFont('', '', 8);
     // Accountancy piece
     $pdf->SetXY($this->posxpiece - 1, $tab_top + 1);
     $pdf->MultiCell($this->posxdesc - $this->posxpiece - 1, 1, '', '', 'R');
     // Comments
     $pdf->line($this->posxdesc - 1, $tab_top, $this->posxdesc - 1, $tab_top + $tab_height);
     $pdf->SetXY($this->posxdesc - 1, $tab_top + 1);
     $pdf->MultiCell($this->posxdate - $this->posxdesc - 1, 1, $outputlangs->transnoentities("Description"), '', 'L');
     // Date
     $pdf->line($this->posxdate - 1, $tab_top, $this->posxdate - 1, $tab_top + $tab_height);
     $pdf->SetXY($this->posxdate - 1, $tab_top + 1);
     $pdf->MultiCell($this->posxtype - $this->posxdate - 1, 2, $outputlangs->transnoentities("Date"), '', 'C');
     // Type
     $pdf->line($this->posxtype - 1, $tab_top, $this->posxtype - 1, $tab_top + $tab_height);
     $pdf->SetXY($this->posxtype - 1, $tab_top + 1);
     $pdf->MultiCell($this->posxprojet - $this->posxtype - 1, 2, $outputlangs->transnoentities("Type"), '', 'C');
     // Project
     $pdf->line($this->posxprojet - 1, $tab_top, $this->posxprojet - 1, $tab_top + $tab_height);
     $pdf->SetXY($this->posxprojet - 1, $tab_top + 1);
     $pdf->MultiCell($this->posxtva - $this->posxprojet - 1, 2, $outputlangs->transnoentities("Project"), '', 'C');
     // VAT
     if (empty($conf->global->MAIN_GENERATE_DOCUMENTS_WITHOUT_VAT)) {
         $pdf->line($this->posxtva - 1, $tab_top, $this->posxtva - 1, $tab_top + $tab_height);
         $pdf->SetXY($this->posxtva - 1, $tab_top + 1);
         $pdf->MultiCell($this->posxup - $this->posxtva - 1, 2, $outputlangs->transnoentities("VAT"), '', 'C');
     }
     // Unit price
     $pdf->line($this->posxup - 1, $tab_top, $this->posxup - 1, $tab_top + $tab_height);
     $pdf->SetXY($this->posxup - 1, $tab_top + 1);
     $pdf->MultiCell($this->posxqty - $this->posxup - 1, 2, $outputlangs->transnoentities("PriceU"), '', 'C');
     // Quantity
     $pdf->line($this->posxqty - 1, $tab_top, $this->posxqty - 1, $tab_top + $tab_height);
     $pdf->SetXY($this->posxqty - 1, $tab_top + 1);
     $pdf->MultiCell($this->postotalttc - $this->posxqty, 2, $outputlangs->transnoentities("Qty"), '', 'R');
     // Total with all taxes
     $pdf->line($this->postotalttc, $tab_top, $this->postotalttc, $tab_top + $tab_height);
     $pdf->SetXY($this->postotalttc - 1, $tab_top + 1);
     $pdf->MultiCell($this->page_largeur - $this->marge_droite - $this->postotalttc, 2, $outputlangs->transnoentities("TotalTTC"), '', 'R');
     $pdf->SetTextColor(0, 0, 0);
 }
Пример #4
0
/**
 *  Show bank informations for PDF generation
 *
 *  @param	PDF			$pdf            		Object PDF
 *  @param  Translate	$outputlangs     		Object lang
 *  @param  int			$curx            		X
 *  @param  int			$cury            		Y
 *  @param  Account		$account         		Bank account object
 *  @param  int			$onlynumber      		Output only number (bank+desk+key+number according to country, but without name of bank and domiciliation)
 *  @param	int			$default_font_size		Default font size
 *  @return	float                               The Y PDF position
 */
function pdf_bank(&$pdf, $outputlangs, $curx, $cury, $account, $onlynumber = 0, $default_font_size = 10)
{
    global $mysoc, $conf;
    $diffsizetitle = empty($conf->global->PDF_DIFFSIZE_TITLE) ? 3 : $conf->global->PDF_DIFFSIZE_TITLE;
    $diffsizecontent = empty($conf->global->PDF_DIFFSIZE_CONTENT) ? 4 : $conf->global->PDF_DIFFSIZE_CONTENT;
    $pdf->SetXY($curx, $cury);
    if (empty($onlynumber)) {
        $pdf->SetFont('', 'B', $default_font_size - $diffsizetitle);
        $pdf->MultiCell(100, 3, $outputlangs->transnoentities('PaymentByTransferOnThisBankAccount') . ':', 0, 'L', 0);
        $cury += 4;
    }
    $outputlangs->load("banks");
    // Use correct name of bank id according to country
    $bickey = "BICNumber";
    if ($account->getCountryCode() == 'IN') {
        $bickey = "SWIFT";
    }
    // Get format of bank account according to its country
    $usedetailedbban = $account->useDetailedBBAN();
    //$onlynumber=0; $usedetailedbban=1; // For tests
    if ($usedetailedbban) {
        $savcurx = $curx;
        if (empty($onlynumber)) {
            $pdf->SetFont('', '', $default_font_size - $diffsizecontent);
            $pdf->SetXY($curx, $cury);
            $pdf->MultiCell(100, 3, $outputlangs->transnoentities("Bank") . ': ' . $outputlangs->convToOutputCharset($account->bank), 0, 'L', 0);
            $cury += 3;
        }
        if (empty($conf->global->PDF_BANK_HIDE_NUMBER_SHOW_ONLY_BICIBAN)) {
            // Note:
            // bank = code_banque (FR), sort code (GB, IR. Example: 12-34-56)
            // desk = code guichet (FR), used only when $usedetailedbban = 1
            // number = account number
            // key = check control key used only when $usedetailedbban = 1
            if (empty($onlynumber)) {
                $pdf->line($curx + 1, $cury + 1, $curx + 1, $cury + 6);
            }
            if ($usedetailedbban == 1) {
                $fieldstoshow = array('bank', 'desk', 'number', 'key');
                if ($conf->global->BANK_SHOW_ORDER_OPTION == 1) {
                    $fieldstoshow = array('bank', 'desk', 'key', 'number');
                }
            } else {
                if ($usedetailedbban == 2) {
                    $fieldstoshow = array('bank', 'number');
                } else {
                    dol_print_error('', 'Value returned by function useDetailedBBAN not managed');
                }
            }
            foreach ($fieldstoshow as $val) {
                if ($val == 'bank') {
                    // Bank code
                    $tmplength = 18;
                    $pdf->SetXY($curx, $cury + 4);
                    $pdf->SetFont('', '', $default_font_size - 3);
                    $pdf->MultiCell($tmplength, 3, $outputlangs->convToOutputCharset($account->code_banque), 0, 'C', 0);
                    $pdf->SetXY($curx, $cury + 1);
                    $curx += $tmplength;
                    $pdf->SetFont('', 'B', $default_font_size - 4);
                    $pdf->MultiCell($tmplength, 3, $outputlangs->transnoentities("BankCode"), 0, 'C', 0);
                    if (empty($onlynumber)) {
                        $pdf->line($curx, $cury + 1, $curx, $cury + 7);
                    }
                }
                if ($val == 'desk') {
                    // Desk
                    $tmplength = 18;
                    $pdf->SetXY($curx, $cury + 4);
                    $pdf->SetFont('', '', $default_font_size - 3);
                    $pdf->MultiCell($tmplength, 3, $outputlangs->convToOutputCharset($account->code_guichet), 0, 'C', 0);
                    $pdf->SetXY($curx, $cury + 1);
                    $curx += $tmplength;
                    $pdf->SetFont('', 'B', $default_font_size - 4);
                    $pdf->MultiCell($tmplength, 3, $outputlangs->transnoentities("DeskCode"), 0, 'C', 0);
                    if (empty($onlynumber)) {
                        $pdf->line($curx, $cury + 1, $curx, $cury + 7);
                    }
                }
                if ($val == 'number') {
                    // Number
                    $tmplength = 24;
                    $pdf->SetXY($curx, $cury + 4);
                    $pdf->SetFont('', '', $default_font_size - 3);
                    $pdf->MultiCell($tmplength, 3, $outputlangs->convToOutputCharset($account->number), 0, 'C', 0);
                    $pdf->SetXY($curx, $cury + 1);
                    $curx += $tmplength;
                    $pdf->SetFont('', 'B', $default_font_size - 4);
                    $pdf->MultiCell($tmplength, 3, $outputlangs->transnoentities("BankAccountNumber"), 0, 'C', 0);
                    if (empty($onlynumber)) {
                        $pdf->line($curx, $cury + 1, $curx, $cury + 7);
                    }
                }
                if ($val == 'key') {
                    // Key
                    $tmplength = 13;
                    $pdf->SetXY($curx, $cury + 4);
                    $pdf->SetFont('', '', $default_font_size - 3);
                    $pdf->MultiCell($tmplength, 3, $outputlangs->convToOutputCharset($account->cle_rib), 0, 'C', 0);
                    $pdf->SetXY($curx, $cury + 1);
                    $curx += $tmplength;
                    $pdf->SetFont('', 'B', $default_font_size - 4);
                    $pdf->MultiCell($tmplength, 3, $outputlangs->transnoentities("BankAccountNumberKey"), 0, 'C', 0);
                    if (empty($onlynumber)) {
                        $pdf->line($curx, $cury + 1, $curx, $cury + 7);
                    }
                }
            }
            $curx = $savcurx;
            $cury += 8;
        }
    } else {
        $pdf->SetFont('', 'B', $default_font_size - $diffsizecontent);
        $pdf->SetXY($curx, $cury);
        $pdf->MultiCell(100, 3, $outputlangs->transnoentities("Bank") . ': ' . $outputlangs->convToOutputCharset($account->bank), 0, 'L', 0);
        $cury += 3;
        $pdf->SetFont('', 'B', $default_font_size - $diffsizecontent);
        $pdf->SetXY($curx, $cury);
        $pdf->MultiCell(100, 3, $outputlangs->transnoentities("BankAccountNumber") . ': ' . $outputlangs->convToOutputCharset($account->number), 0, 'L', 0);
        $cury += 3;
        if ($diffsizecontent <= 2) {
            $cury += 1;
        }
    }
    $pdf->SetFont('', '', $default_font_size - $diffsizecontent);
    if (empty($onlynumber) && !empty($account->domiciliation)) {
        $pdf->SetXY($curx, $cury);
        $val = $outputlangs->transnoentities("Residence") . ': ' . $outputlangs->convToOutputCharset($account->domiciliation);
        $pdf->MultiCell(100, 3, $val, 0, 'L', 0);
        //$nboflines=dol_nboflines_bis($val,120);
        //$cury+=($nboflines*3)+2;
        $tmpy = $pdf->getStringHeight(100, $val);
        $cury += $tmpy;
    }
    if (!empty($account->proprio)) {
        $pdf->SetXY($curx, $cury);
        $val = $outputlangs->transnoentities("BankAccountOwner") . ': ' . $outputlangs->convToOutputCharset($account->proprio);
        $pdf->MultiCell(100, 3, $val, 0, 'L', 0);
        $tmpy = $pdf->getStringHeight(100, $val);
        $cury += $tmpy;
    } else {
        if (!$usedetailedbban) {
            $cury += 1;
        }
    }
    // Use correct name of bank id according to country
    $ibankey = "IBANNumber";
    if ($account->getCountryCode() == 'IN') {
        $ibankey = "IFSC";
    }
    if (!empty($account->iban)) {
        //Remove whitespaces to ensure we are dealing with the format we expect
        $ibanDisplay_temp = str_replace(' ', '', $outputlangs->convToOutputCharset($account->iban));
        $ibanDisplay = "";
        $nbIbanDisplay_temp = dol_strlen($ibanDisplay_temp);
        for ($i = 0; $i < $nbIbanDisplay_temp; $i++) {
            $ibanDisplay .= $ibanDisplay_temp[$i];
            if ($i % 4 == 3 && $i > 0) {
                $ibanDisplay .= " ";
            }
        }
        $pdf->SetFont('', 'B', $default_font_size - 3);
        $pdf->SetXY($curx, $cury);
        $pdf->MultiCell(100, 3, $outputlangs->transnoentities($ibankey) . ': ' . $ibanDisplay, 0, 'L', 0);
        $cury += 3;
    }
    if (!empty($account->bic)) {
        $pdf->SetFont('', 'B', $default_font_size - 3);
        $pdf->SetXY($curx, $cury);
        $pdf->MultiCell(100, 3, $outputlangs->transnoentities($bickey) . ': ' . $outputlangs->convToOutputCharset($account->bic), 0, 'L', 0);
    }
    return $pdf->getY();
}
Пример #5
0
 /**
  *   Show table for lines
  *
  *   @param		PDF			$pdf     		Object PDF
  *   @param		string		$tab_top		Top position of table
  *   @param		string		$tab_height		Height of table (rectangle)
  *   @param		int			$nexY			Y
  *   @param		Translate	$outputlangs	Langs object
  *   @param		int			$hidetop		Hide top bar of array
  *   @param		int			$hidebottom		Hide bottom bar of array
  *   @return	void
  */
 function _tableau(&$pdf, $tab_top, $tab_height, $nexY, $outputlangs, $hidetop = 0, $hidebottom = 0)
 {
     global $conf, $mysoc;
     $default_font_size = pdf_getPDFFontSize($outputlangs);
     $pdf->SetDrawColor(128, 128, 128);
     // Rect prend une longueur en 3eme param
     $pdf->Rect($this->marge_gauche, $tab_top, $this->page_largeur - $this->marge_gauche - $this->marge_droite, $tab_height);
     // line prend une position y en 3eme param
     $pdf->line($this->marge_gauche, $tab_top + 6, $this->page_largeur - $this->marge_droite, $tab_top + 6);
     $pdf->SetTextColor(0, 0, 0);
     $pdf->SetFont('', '', $default_font_size);
     $pdf->SetXY($this->posxref, $tab_top + 1);
     $pdf->MultiCell($this->posxlabel - $this->posxref, 3, $outputlangs->transnoentities("Tasks"), '', 'L');
     $pdf->SetXY($this->posxlabel, $tab_top + 1);
     $pdf->MultiCell($this->posxworkload - $this->posxlabel, 3, $outputlangs->transnoentities("Description"), 0, 'L');
     $pdf->SetXY($this->posxworkload, $tab_top + 1);
     $pdf->MultiCell($this->posxprogress - $this->posxworkload, 3, $outputlangs->transnoentities("PlannedWorkloadShort"), 0, 'R');
     $pdf->SetXY($this->posxprogress, $tab_top + 1);
     $pdf->MultiCell($this->posxdatestart - $this->posxprogress, 3, '%', 0, 'R');
     $pdf->SetXY($this->posxdatestart, $tab_top + 1);
     $pdf->MultiCell($this->posxdateend - $this->posxdatestart, 3, '', 0, 'C');
     $pdf->SetXY($this->posxdateend, $tab_top + 1);
     $pdf->MultiCell($this->page_largeur - $this->marge_droite - $this->posxdatestart, 3, '', 0, 'C');
 }
Пример #6
0
 $pdf->setAutoPageBreak(TRUE, 45);
 $pdf->AddPage('P', 'A4');
 $pdf->SetFont('helvetica', 'B', 13);
 $pdf->SetY(56);
 $pdf->Cell(125, 8, $supp->getName(), 0, 0, 'L');
 $pdf->SetFont('helvetica', 'B', 14);
 $pdf->Cell(100, 8, "DC NO: {$dcno}", 0, 1, 'L');
 $pdf->SetFont('helvetica', '', 13);
 $pdf->Cell(125, 8, $supp->getAddressl1(), 0, 0, 'L');
 $pdf->Cell(100, 8, "Date: {$dcdate}", 0, 1, 'L');
 $pdf->Cell(125, 8, $supp->getAddressl2(), 0, 0, 'L');
 $pdf->Cell(100, 8, "Your Ref: {$cref}", 0, 1, 'L');
 $pdf->Cell(125, 8, "Phone No: " . $supp->getPhoneNo(), 0, 0, 'L');
 $pdf->Cell(100, 8, "Date: {$crefdate}", 0, 1, 'L');
 $pdf->ln();
 $pdf->line(0, 87, 220, 87);
 //line before mode of dispatch
 $pdf->setY(86);
 $pdf->MultiCell(125, 16, "Please receive the following materials and acknowledge the receipt", 0, 'L', 0, 0, '', '', true, 0, false, true, 16, 'M', true);
 $pdf->Cell(100, 8, "Mode Of Dispatch: {$dmode}", 0, 1, 'L');
 $pdf->Cell(125, 8, "", 0, 0, 'L');
 $pdf->Cell(100, 8, "Status: {$dctype}", 0, 1, 'L');
 $pdf->SetFont('helvetica', '', 10);
 $pdf->Cell(150, 8, '', 0, 1, 'L');
 $pdf->line(0, 101, 220, 101);
 //line after mode of dispatch
 $pdf->line(135, 55, 135, 101);
 //vertical line b/w address and dc no
 $pdf->line(135, 72, 220, 72);
 //horizontal line b/w dc no and cust ref
 $pdf->SetFont('helvetica', 'B', 11);
Пример #7
0
 /**
  *   Show table for lines
  *
  *   @param		PDF			$pdf     		Object PDF
  *   @param		string		$tab_top		Top position of table
  *   @param		string		$tab_height		Height of table (rectangle)
  *   @param		int			$nexY			Y
  *   @param		Translate	$outputlangs	Langs object
  *   @param		int			$hidetop		Hide top bar of array
  *   @param		int			$hidebottom		Hide bottom bar of array
  *   @return	void
  */
 function _tableau(&$pdf, $tab_top, $tab_height, $nexY, $outputlangs, $hidetop = 0, $hidebottom = 0)
 {
     global $langs;
     $default_font_size = pdf_getPDFFontSize($outputlangs);
     $langs->load("main");
     $langs->load("bills");
     if (empty($hidetop)) {
         $pdf->SetFont('', 'B', $default_font_size - 2);
         $pdf->SetXY(10, $tab_top);
         $pdf->MultiCell(10, 5, "LS", 0, 'C', 1);
         $pdf->line(20, $tab_top, 20, $tab_top + $tab_height);
         $pdf->SetXY(20, $tab_top);
         $pdf->MultiCell(10, 5, "LR", 0, 'C', 1);
         $pdf->line(30, $tab_top, 30, $tab_top + $tab_height);
         $pdf->SetXY(30, $tab_top);
         $pdf->MultiCell(20, 5, $outputlangs->transnoentities("Ref"), 0, 'C', 1);
         $pdf->SetXY(50, $tab_top);
         $pdf->MultiCell(90, 5, $outputlangs->transnoentities("Description"), 0, 'L', 1);
         $pdf->SetXY(140, $tab_top);
         $pdf->MultiCell(30, 5, $outputlangs->transnoentities("QtyOrdered"), 0, 'C', 1);
         $pdf->SetXY(170, $tab_top);
         $pdf->MultiCell(30, 5, $outputlangs->transnoentities("QtyToShip"), 0, 'C', 1);
     }
     $pdf->Rect(10, $tab_top, 190, $tab_height);
 }
Пример #8
0
     }
 }
 $pdf = new PDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
 //$pdf->AliasNbPages();
 $pdf->setAutoPageBreak(TRUE, 45);
 $pdf->AddPage('P', 'A4');
 $pdf->SetFont('helvetica', 'B', 13);
 $pdf->SetY(56);
 $pdf->SetFont('helvetica', 'B', 11);
 $pdf->setY(100);
 $pdf->Cell(20, 8, "SL NO", 0, 0, 'L');
 $pdf->Cell(80, 8, "Description", 0, 0, 'L');
 $pdf->Cell(20, 8, "Qty", 0, 0, 'C');
 $pdf->Cell(30, 8, "Unit Price " . $currency, 0, 0, 'C');
 $pdf->Cell(30, 8, "Discount", 0, 0, 'C');
 $pdf->line(0, 110, 220, 110);
 //line after slno, desc and remarks
 $pdf->ln(6);
 $j = 0;
 while ($j < count($description)) {
     if ($description[$j] != '') {
         $pdf->ln(8);
         $pdf->Cell(10, 8, $j + 1, 0, 0, 'C');
         $pdf->MultiCell(95, 8, $description[$j], 0, 'L', 0, 0, '', '', true, 0, false, true, 8, 'M', true);
         $pdf->Cell(15, 8, $itemqty[$j], 0, 0, 'C');
         $pdf->Cell(30, 8, $price[$j], 0, 0, 'R');
         $pdf->MultiCell(30, 8, $discount[$j], 0, '', 0, 0, '', '', true, 0, false, true, 8, 'M', true);
         if ($pdf->getY() > $pdf->getPageHeight() - 56.5) {
             $pdf->rollbackTransaction(true);
             $pdf->AddPage();
             $pdf->setY(100);
 /**
  *  Show top header of page.
  *
  *  @param	PDF			$pdf     		Object PDF
  *  @param  int			$page	     	Object to show
  *  @param  int	    	$showaddress    0=no, 1=yes
  *  @param  Translate	$outputlangs	Object lang for output
  *  @return	void
  */
 function _pagehead(&$pdf, $page, $showaddress, $outputlangs)
 {
     global $langs;
     // Do not add the BACKGROUND as this is a report
     //pdf_pagehead($pdf,$outputlangs,$this->page_hauteur);
     $default_font_size = pdf_getPDFFontSize($outputlangs);
     $title = $outputlangs->transnoentities("ListOfCustomerPayments");
     $title .= ' - ' . dol_print_date(dol_mktime(0, 0, 0, $this->month, 1, $this->year), "%B %Y", false, $outputlangs, true);
     $pdf->SetFont('', 'B', $default_font_size + 1);
     $pdf->SetXY($this->marge_gauche, 10);
     $pdf->MultiCell($this->page_largeur - $this->marge_droite - $this->marge_gauche, 2, $title, 0, 'C');
     $pdf->SetFont('', '', $default_font_size);
     $pdf->SetXY($this->posxdate, 16);
     $pdf->MultiCell(80, 2, $outputlangs->transnoentities("DateBuild") . " : " . dol_print_date(time(), "day", false, $outputlangs, true), 0, 'L');
     $pdf->SetXY($this->posxdate, 22);
     $pdf->MultiCell(80, 2, $outputlangs->transnoentities("Page") . " : " . $page, 0, 'L');
     // Title line
     $pdf->SetXY($this->posxdate, $this->tab_top + 2);
     $pdf->MultiCell($this->posxpaymenttype - $this->posxdate, 2, 'Date');
     $pdf->line($this->posxpaymenttype - 1, $this->tab_top, $this->posxpaymenttype - 1, $this->tab_top + $this->tab_height + 10);
     $pdf->SetXY($this->posxpaymenttype, $this->tab_top + 2);
     $pdf->MultiCell($this->posxinvoice - $this->posxpaymenttype, 2, $outputlangs->transnoentities("PaymentMode"), 0, 'L');
     $pdf->line($this->posxinvoice - 1, $this->tab_top, $this->posxinvoice - 1, $this->tab_top + $this->tab_height + 10);
     $pdf->SetXY($this->posxinvoice, $this->tab_top + 2);
     $pdf->MultiCell($this->posxinvoiceamount - $this->posxinvoice, 2, $outputlangs->transnoentities("Invoice"), 0, 'L');
     $pdf->line($this->posxinvoiceamount - 1, $this->tab_top, $this->posxinvoiceamount - 1, $this->tab_top + $this->tab_height + 10);
     $pdf->SetXY($this->posxinvoiceamount, $this->tab_top + 2);
     $pdf->MultiCell($this->posxpaymentamount - $this->posxinvoiceamount - 1, 2, $outputlangs->transnoentities("AmountInvoice"), 0, 'R');
     $pdf->line($this->posxpaymentamount - 1, $this->tab_top, $this->posxpaymentamount - 1, $this->tab_top + $this->tab_height + 10);
     $pdf->SetXY($this->posxpaymentamount, $this->tab_top + 2);
     $pdf->MultiCell($this->page_largeur - $this->marge_droite - $this->posxpaymentamount - 1, 2, $outputlangs->transnoentities("AmountPayment"), 0, 'R');
     $pdf->line($this->marge_gauche, $this->tab_top + 10, $this->page_largeur - $this->marge_droite, $this->tab_top + 10);
     $pdf->Rect($this->marge_gauche, $this->tab_top, $this->page_largeur - $this->marge_gauche - $this->marge_droite, $this->tab_height + 10);
 }
 /**
  *   	Show footer of page. Need this->emetteur object
  *
  *   	@param	PDF			$pdf     			PDF
  * 		@param	Object		$object				Object to show
  *      @param	Translate	$outputlangs		Object lang for output
  *      @param	int			$hidefreetext		1=Hide free text
  *      @return	void
  */
 function _pagefoot(&$pdf, $object, $outputlangs, $hidefreetext = 0)
 {
     global $conf;
     $default_font_size = pdf_getPDFFontSize($outputlangs);
     //return pdf_pagefoot($pdf,$outputlangs,'BANK_CHEQUERECEIPT_FREE_TEXT',$this->emetteur,$this->marge_basse,$this->marge_gauche,$this->page_hauteur,$object);
     $paramfreetext = 'BANK_CHEQUERECEIPT_FREE_TEXT';
     $marge_basse = $this->marge_basse;
     $marge_gauche = $this->marge_gauche;
     $page_hauteur = $this->page_hauteur;
     // Line of free text
     $line = !empty($conf->global->{$paramfreetext}) ? $outputlangs->convToOutputCharset($conf->global->{$paramfreetext}) : "";
     $pdf->SetFont('', '', $default_font_size - 3);
     $pdf->SetDrawColor(224, 224, 224);
     // On positionne le debut du bas de page selon nbre de lignes de ce bas de page
     $nbofline = dol_nboflines_bis($line, 0, $outputlangs->charset_output);
     //print 'e'.$line.'t'.dol_nboflines($line);exit;
     $posy = $marge_basse + $nbofline * 3;
     if ($line) {
         $pdf->SetXY($marge_gauche, -$posy);
         $pdf->MultiCell(20000, 3, $line, 0, 'L', 0);
         // Use a large value 20000, to not have automatic wrap. This make user understand, he need to add CR on its text.
         $posy -= $nbofline * 3;
         // 6 of ligne + 3 of MultiCell
     }
     $pdf->SetY(-$posy);
     $pdf->line($marge_gauche, $page_hauteur - $posy, 200, $page_hauteur - $posy);
     $posy--;
     /*if ($line1)
     		{
     			$pdf->SetXY($marge_gauche,-$posy);
     			$pdf->MultiCell(200, 2, $line1, 0, 'C', 0);
     		}
     
     		if ($line2)
     		{
     			$posy-=3;
     			$pdf->SetXY($marge_gauche,-$posy);
     			$pdf->MultiCell(200, 2, $line2, 0, 'C', 0);
     		}*/
     // Show page nb only on iso languages (so default Helvetica font)
     if (pdf_getPDFFont($outputlangs) == 'Helvetica') {
         $pdf->SetXY(-20, -$posy);
         $pdf->MultiCell(11, 2, $pdf->PageNo() . '/' . $pdf->getAliasNbPages(), 0, 'R', 0);
     }
 }
 /**
  * Rect pdf
  *
  * @param	PDF		$pdf			Object PDF
  * @param	float	$x				Abscissa of first point
  * @param	float	$y		        Ordinate of first point
  * @param	float	$l				??
  * @param	float	$h				??
  * @param	int		$hidetop		1=Hide top bar of array and title, 0=Hide nothing, -1=Hide only title
  * @param	int		$hidebottom		Hide bottom
  * @return	void
  */
 function printRect($pdf, $x, $y, $l, $h, $hidetop = 0, $hidebottom = 0)
 {
     if (empty($hidetop) || $hidetop == -1) {
         $pdf->line($x, $y, $x + $l, $y);
     }
     $pdf->line($x + $l, $y, $x + $l, $y + $h);
     if (empty($hidebottom)) {
         $pdf->line($x + $l, $y + $h, $x, $y + $h);
     }
     $pdf->line($x, $y + $h, $x, $y);
 }
Пример #12
0
 $str = substr($str, $prev);
 // [X]
 $y1 = $pdf->GetY();
 $x1 = $pdf->GetX() + $pdf->lMargin;
 $y2 = $y1 + 4;
 $x2 = $pdf->lMargin - 2;
 while ($indent != "") {
     // $y1=$y1+$vspacing;
     $x1 = $pdf->GetX();
     // $y2=$y1+6;
     $x2 = $x1 + 1;
     $ind = substr($indent, 0, 1);
     $indent = substr($indent, 1);
     switch ($ind) {
         case "I":
             $pdf->line($x1, $y1 + $vspacing, $x1, $y2 + $vspacing);
             $pdf->SetXY($x2, $y1 + 1 + $vspacing);
             break;
         case "T":
             // T
             $pdf->line($x1, $y1 + $vspacing, $x1, $y2 + $vspacing);
             // "|"
             $pdf->line($x1, $y2 - 1 + $vspacing, $x2, $y2 - 1 + $vspacing);
             // "-"
             $pdf->SetXY($x2, $y2 + $vspacing);
             break;
         case "L":
             // L
             $pdf->line($x1, $y1 + $vspacing, $x1, $y2 - 1 + $vspacing);
             // |
             $pdf->line($x1, $y2 - 1 + $vspacing, $x2, $y2 - 1 + $vspacing);
Пример #13
0
}
$pdf = new PDF("P", "mm", "a5");
$pdf->AddPage();
$pdf->SetFont('Arial', '', 10);
//Table with 20 rows and 4 columns
$pdf->SetWidths(array(24, 90, 16, 40));
srand(microtime() * 1000000);
$subtotal = 0;
for ($i = 0; $i < count($_SESSION["basket"]); $i++) {
    $quantity = $_SESSION["basket"][$i]["quantity"];
    $price = $_SESSION["basket"][$i]["Item"]->Price;
    $pdf->Row(array($quantity . "x", $_SESSION["basket"][$i]["Item"]->Name . ": " . $_SESSION["basket"][$i]["Item"]->Description, $price * $quantity));
    $subtotal += $price * $quantity;
}
$pdf->SetFont('Arial', 'B', 12);
$pdf->MultiCell(130, 10, " Subtotal    " . iconv("UTF-8", "ISO-8859-1", "£") . $subtotal, 0, "R");
$pdf->SetFont('Arial', '', 10);
$pdf->line(10, $pdf->GetY(), 140, $pdf->GetY());
$pdf->MultiCell(130, 5, "Note: Please make sure my food is not spicy!", 0, "L");
$pdf->Ln();
$pdf->MultiCell(60, 5, "Customer Info:", 0, "L");
$pdf->MultiCell(60, 5, "Saber Hamidi", 0, "L");
$pdf->MultiCell(60, 5, "100 Ourwebsite Road", 0, "L");
$pdf->MultiCell(60, 5, "Southampton", 0, "L");
$pdf->MultiCell(60, 5, "SO15 3FF", 0, "L");
$pdf->Ln();
$pdf->MultiCell(60, 5, "Tell: 07788998764", 0, "L");
$pdf->Ln();
$pdf->MultiCell(80, 5, "Paying upon Delivery - (The order is NOT PAID!)", 0, "L");
$filename = "Orders/test.pdf";
$pdf->Output();
Пример #14
0
/**
 *  Show footer of page for PDF generation
 *
 *	@param	PDF			$pdf     		The PDF factory
 *  @param  Translate	$outputlangs	Object lang for output
 * 	@param	string		$paramfreetext	Constant name of free text
 * 	@param	Societe		$fromcompany	Object company
 * 	@param	int			$marge_basse	Margin bottom we use for the autobreak
 * 	@param	int			$marge_gauche	Margin left (no more used)
 * 	@param	int			$page_hauteur	Page height (no more used)
 * 	@param	Object		$object			Object shown in PDF
 * 	@param	int			$showdetails	Show company details into footer. This param seems to not be used by standard version. (1=Show address, 2=Show managers, 3=Both)
 *  @param	int			$hidefreetext	1=Hide free text, 0=Show free text
 * 	@return	int							Return height of bottom margin including footer text
 */
function pdf_pagefoot(&$pdf, $outputlangs, $paramfreetext, $fromcompany, $marge_basse, $marge_gauche, $page_hauteur, $object, $showdetails = 0, $hidefreetext = 0)
{
    global $conf, $user;
    $outputlangs->load("dict");
    $line = '';
    $dims = $pdf->getPageDimensions();
    // Line of free text
    if (empty($hidefreetext) && !empty($conf->global->{$paramfreetext})) {
        // Make substitution
        $substitutionarray = array('__FROM_NAME__' => $fromcompany->name, '__FROM_EMAIL__' => $fromcompany->email, '__TOTAL_TTC__' => $object->total_ttc, '__TOTAL_HT__' => $object->total_ht, '__TOTAL_VAT__' => $object->total_vat);
        complete_substitutions_array($substitutionarray, $outputlangs, $object);
        $newfreetext = make_substitutions($conf->global->{$paramfreetext}, $substitutionarray);
        $line .= $outputlangs->convToOutputCharset($newfreetext);
    }
    // First line of company infos
    $line1 = "";
    $line2 = "";
    $line3 = "";
    $line4 = "";
    if ($showdetails) {
        // Company name
        if ($fromcompany->name) {
            $line1 .= ($line1 ? " - " : "") . $outputlangs->transnoentities("RegisteredOffice") . ": " . $fromcompany->name;
        }
        // Address
        if ($fromcompany->address) {
            $line1 .= ($line1 ? " - " : "") . $fromcompany->address;
        }
        // Zip code
        if ($fromcompany->zip) {
            $line1 .= ($line1 ? " - " : "") . $fromcompany->zip;
        }
        // Town
        if ($fromcompany->town) {
            $line1 .= ($line1 ? " " : "") . $fromcompany->town;
        }
        // Phone
        if ($fromcompany->phone) {
            $line1 .= ($line1 ? " - " : "") . $outputlangs->transnoentities("Phone") . ": " . $fromcompany->phone;
        }
        // Fax
        if ($fromcompany->fax) {
            $line1 .= ($line1 ? " - " : "") . $outputlangs->transnoentities("Fax") . ": " . $fromcompany->fax;
        }
        // URL
        if ($fromcompany->url) {
            $line2 .= ($line2 ? " - " : "") . $fromcompany->url;
        }
        // Email
        if ($fromcompany->email) {
            $line2 .= ($line2 ? " - " : "") . $fromcompany->email;
        }
    }
    if ($showdetails || $fromcompany->country_code == 'DE') {
        // Managers
        if ($fromcompany->managers) {
            $line2 .= ($line2 ? " - " : "") . $fromcompany->managers;
        }
    }
    // Line 3 of company infos
    // Juridical status
    if ($fromcompany->forme_juridique_code) {
        $line3 .= ($line3 ? " - " : "") . $outputlangs->convToOutputCharset(getFormeJuridiqueLabel($fromcompany->forme_juridique_code));
    }
    // Capital
    if ($fromcompany->capital) {
        $tmpamounttoshow = price2num($fromcompany->capital);
        // This field is a free string
        if (is_numeric($tmpamounttoshow) && $tmpamounttoshow > 0) {
            $line3 .= ($line3 ? " - " : "") . $outputlangs->transnoentities("CapitalOf", price($tmpamounttoshow, 0, $outputlangs, 0, 0, 0, $conf->currency));
        } else {
            $line3 .= ($line3 ? " - " : "") . $outputlangs->transnoentities("CapitalOf", $tmpamounttoshow, $outputlangs);
        }
    }
    // Prof Id 1
    if ($fromcompany->idprof1 && ($fromcompany->country_code != 'FR' || !$fromcompany->idprof2)) {
        $field = $outputlangs->transcountrynoentities("ProfId1", $fromcompany->country_code);
        if (preg_match('/\\((.*)\\)/i', $field, $reg)) {
            $field = $reg[1];
        }
        $line3 .= ($line3 ? " - " : "") . $field . ": " . $outputlangs->convToOutputCharset($fromcompany->idprof1);
    }
    // Prof Id 2
    if ($fromcompany->idprof2) {
        $field = $outputlangs->transcountrynoentities("ProfId2", $fromcompany->country_code);
        if (preg_match('/\\((.*)\\)/i', $field, $reg)) {
            $field = $reg[1];
        }
        $line3 .= ($line3 ? " - " : "") . $field . ": " . $outputlangs->convToOutputCharset($fromcompany->idprof2);
    }
    // Line 4 of company infos
    // Prof Id 3
    if ($fromcompany->idprof3) {
        $field = $outputlangs->transcountrynoentities("ProfId3", $fromcompany->country_code);
        if (preg_match('/\\((.*)\\)/i', $field, $reg)) {
            $field = $reg[1];
        }
        $line4 .= ($line4 ? " - " : "") . $field . ": " . $outputlangs->convToOutputCharset($fromcompany->idprof3);
    }
    // Prof Id 4
    if ($fromcompany->idprof4) {
        $field = $outputlangs->transcountrynoentities("ProfId4", $fromcompany->country_code);
        if (preg_match('/\\((.*)\\)/i', $field, $reg)) {
            $field = $reg[1];
        }
        $line4 .= ($line4 ? " - " : "") . $field . ": " . $outputlangs->convToOutputCharset($fromcompany->idprof4);
    }
    // IntraCommunautary VAT
    if ($fromcompany->tva_intra != '') {
        $line4 .= ($line4 ? " - " : "") . $outputlangs->transnoentities("VATIntraShort") . ": " . $outputlangs->convToOutputCharset($fromcompany->tva_intra);
    }
    $pdf->SetFont('', '', 7);
    $pdf->SetDrawColor(224, 224, 224);
    // The start of the bottom of this page footer is positioned according to # of lines
    $freetextheight = 0;
    if ($line) {
        $width = 20000;
        $align = 'L';
        // By default, ask a manual break: We use a large value 20000, to not have automatic wrap. This make user understand, he need to add CR on its text.
        if (!empty($conf->global->MAIN_USE_AUTOWRAP_ON_FREETEXT)) {
            $width = 200;
            $align = 'C';
        }
        $freetextheight = $pdf->getStringHeight($width, $line);
    }
    $marginwithfooter = $marge_basse + $freetextheight + (!empty($line1) ? 3 : 0) + (!empty($line2) ? 3 : 0) + (!empty($line3) ? 3 : 0) + (!empty($line4) ? 3 : 0);
    $posy = $marginwithfooter + 0;
    if ($line) {
        $pdf->SetXY($dims['lm'], -$posy);
        $pdf->MultiCell(0, 3, $line, 0, $align, 0);
        $posy -= $freetextheight;
    }
    $pdf->SetY(-$posy);
    $pdf->line($dims['lm'], $dims['hk'] - $posy, $dims['wk'] - $dims['rm'], $dims['hk'] - $posy);
    $posy--;
    if (!empty($line1)) {
        $pdf->SetFont('', 'B', 7);
        $pdf->SetXY($dims['lm'], -$posy);
        $pdf->MultiCell($dims['wk'] - $dims['rm'], 2, $line1, 0, 'C', 0);
        $posy -= 3;
        $pdf->SetFont('', '', 7);
    }
    if (!empty($line2)) {
        $pdf->SetFont('', 'B', 7);
        $pdf->SetXY($dims['lm'], -$posy);
        $pdf->MultiCell($dims['wk'] - $dims['rm'], 2, $line2, 0, 'C', 0);
        $posy -= 3;
        $pdf->SetFont('', '', 7);
    }
    if (!empty($line3)) {
        $pdf->SetXY($dims['lm'], -$posy);
        $pdf->MultiCell($dims['wk'] - $dims['rm'], 2, $line3, 0, 'C', 0);
    }
    if (!empty($line4)) {
        $posy -= 3;
        $pdf->SetXY($dims['lm'], -$posy);
        $pdf->MultiCell($dims['wk'] - $dims['rm'], 2, $line4, 0, 'C', 0);
    }
    // Show page nb only on iso languages (so default Helvetica font)
    if (strtolower(pdf_getPDFFont($outputlangs)) == 'helvetica') {
        $pdf->SetXY(-20, -$posy);
        //print 'xxx'.$pdf->PageNo().'-'.$pdf->getAliasNbPages().'-'.$pdf->getAliasNumPage();exit;
        if (empty($conf->global->MAIN_USE_FPDF)) {
            $pdf->MultiCell(13, 2, $pdf->PageNo() . '/' . $pdf->getAliasNbPages(), 0, 'R', 0);
        } else {
            $pdf->MultiCell(13, 2, $pdf->PageNo() . '/{nb}', 0, 'R', 0);
        }
    }
    return $marginwithfooter;
}
 /**
  *   Show table for lines
  *
  *   @param		PDF			$pdf     		Object PDF
  *   @param		string		$tab_top		Top position of table
  *   @param		string		$tab_height		Height of table (rectangle)
  *   @param		int			$nexY			Y
  *   @param		Translate	$outputlangs	Langs object
  *   @param		int			$hidetop		Hide top bar of array
  *   @param		int			$hidebottom		Hide bottom bar of array
  *   @return	void
  */
 function _tableau(&$pdf, $tab_top, $tab_height, $nexY, $outputlangs, $hidetop = 0, $hidebottom = 0)
 {
     global $conf, $mysoc;
     $default_font_size = pdf_getPDFFontSize($outputlangs);
     $pdf->SetDrawColor(128, 128, 128);
     // Rect prend une longueur en 3eme param
     $pdf->Rect($this->marge_gauche, $tab_top, $this->page_largeur - $this->marge_gauche - $this->marge_droite, $tab_height);
     // line prend une position y en 3eme param
     $pdf->line($this->marge_gauche, $tab_top + 6, $this->page_largeur - $this->marge_droite, $tab_top + 6);
     $pdf->SetTextColor(0, 0, 0);
     $pdf->SetFont('', '', $default_font_size);
     $pdf->SetXY($this->posxref - 1, $tab_top + 2);
     $pdf->MultiCell(80, 2, $outputlangs->transnoentities("Tasks"), '', 'L');
 }