* Copyright (C) 2004 Eric Seigne * Copyright (C) 2004-2007 Laurent Destailleur * Copyright (C) 2005-2011 Regis Houssin * Copyright (C) 2011 Juanjo Menent * Copyright (C) 2014 Frederic France * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * */ /** * \file htdocs/compta/facture/apercu.php * \ingroup facture * \brief Preview Tab of invoice */ require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/invoice.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; if (! empty($conf->projet->enabled)) require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; $langs->load("bills"); // Security check $socid=0; $id = GETPOST('facid','int'); $ref = GETPOST("ref"); if ($user->societe_id) $socid=$user->societe_id; $result = restrictedArea($user, 'facture', $id); /* * View */ $now=dol_now(); llxHeader('',$langs->trans("Bill"),'Facture'); $form = new Form($db); /* *************************************************************************** */ /* */ /* Mode fiche */ /* */ /* *************************************************************************** */ if ($id > 0 || ! empty($ref)) { $object = New Facture($db); if ($object->fetch($id,$ref) > 0) { $soc = new Societe($db); $soc->fetch($object->socid); $head = facture_prepare_head($object); dol_fiche_head($head, 'preview', $langs->trans("InvoiceCustomer"), 0, 'bill'); $totalpaye = $object->getSommePaiement(); /* * Invoice */ print ''; // Ref print ''; print ''; print ''; // Ref customer print ''; print ''; print ''; // Thirdparty print ''; print ''; print ''; // Type print ''; print ''; print ''; // Relative and absolute discounts $addabsolutediscount=' '.$langs->trans("AddGlobalDiscount").''; $addcreditnote=' '.$langs->trans("AddCreditNote").''; print ''; print ''; print ''; // Dates print ''; print ''; // Right part with $rowspan lines $rowspan=5; if (! empty($conf->projet->enabled)) $rowspan++; print '"; // Total HT print ''; print ''; print ''; // Total VAT print ''; print ''; print ''; // Total TTC print ''; print ''; print ''; // Statut print ''; print ''; print ''; // Projet if (! empty($conf->projet->enabled)) { $langs->load("projects"); print ''; print ''; } print '
'.$langs->trans('Ref').''.$object->ref.'
'.$langs->trans('RefCustomer').''.$object->ref_client.'
'.$langs->trans("Company").''.$soc->getNomUrl(1,'compta').'
'.$langs->trans('Type').''; print $object->getLibType(); if ($object->type == Facture::TYPE_REPLACEMENT) { $facreplaced=new Facture($db); $facreplaced->fetch($object->fk_facture_source); print ' ('.$langs->transnoentities("ReplaceInvoice",$facreplaced->getNomUrl(1)).')'; } if ($object->type == Facture::TYPE_CREDIT_NOTE) { $facusing=new Facture($db); $facusing->fetch($object->fk_facture_source); print ' ('.$langs->transnoentities("CorrectInvoice",$facusing->getNomUrl(1)).')'; } $facidavoir=$object->getListIdAvoirFromInvoice(); if (count($facidavoir) > 0) { print ' ('.$langs->transnoentities("InvoiceHasAvoir"); $i=0; foreach($facidavoir as $id) { if ($i==0) print ' '; else print ','; $facavoir=new Facture($db); $facavoir->fetch($id); print $facavoir->getNomUrl(1); } print ')'; } if ($objectidnext > 0) { $facthatreplace=new Facture($db); $facthatreplace->fetch($objectidnext); print ' ('.$langs->transnoentities("ReplacedByInvoice",$facthatreplace->getNomUrl(1)).')'; } print '
'.$langs->trans('Discounts').''; if ($soc->remise_percent) print $langs->trans("CompanyHasRelativeDiscount",$soc->remise_percent); else print $langs->trans("CompanyHasNoRelativeDiscount"); if ($absolute_discount > 0) { print '. '; if ($object->statut > Facture::STATUS_DRAFT || $object->type == Facture::TYPE_CREDIT_NOTE || $object->type == Facture::TYPE_DEPOSIT) { if ($object->statut == Facture::STATUS_DRAFT) { print $langs->trans("CompanyHasAbsoluteDiscount",price($absolute_discount),$langs->transnoentities("Currency".$conf->currency)); print '. '; } else { if ($object->statut < Facture::STATUS_VALIDATED || $object->type == Facture::TYPE_CREDIT_NOTE || $object->type == Facture::TYPE_DEPOSIT) { $text=$langs->trans("CompanyHasAbsoluteDiscount",price($absolute_discount),$langs->transnoentities("Currency".$conf->currency)); print '
'.$text.'.
'; } else { $text=$langs->trans("CompanyHasAbsoluteDiscount",price($absolute_discount),$langs->transnoentities("Currency".$conf->currency)); $text2=$langs->trans("AbsoluteDiscountUse"); print $form->textwithpicto($text,$text2); } } } else { // Remise dispo de type remise fixe (not credit note) $filter='fk_facture_source IS NULL'; print '
'; $form->form_remise_dispo($_SERVER["PHP_SELF"].'?facid='.$object->id, 0, 'remise_id',$soc->id, $absolute_discount, $filter, $resteapayer, ' - '.$addabsolutediscount); } } else { if ($absolute_creditnote > 0) // If not linked will be added later { if ($object->statut == Facture::STATUS_DRAFT && $object->type != Facture::TYPE_CREDIT_NOTE && $object->type != Facture::TYPE_DEPOSIT) print ' - '.$addabsolutediscount.'
'; else print '.'; } else print '. '; } if ($absolute_creditnote > 0) { // If validated, we show link "add credit note to payment" if ($object->statut != Facture::STATUS_VALIDATED || $object->type == Facture::TYPE_CREDIT_NOTE || $object->type == Facture::TYPE_DEPOSIT) { if ($object->statut == Facture::STATUS_DRAFT && $object->type != Facture::TYPE_DEPOSIT) { $text=$langs->trans("CompanyHasCreditNote",price($absolute_creditnote),$langs->transnoentities("Currency".$conf->currency)); print $form->textwithpicto($text,$langs->trans("CreditNoteDepositUse")); } else { print $langs->trans("CompanyHasCreditNote",price($absolute_creditnote),$langs->transnoentities("Currency".$conf->currency)).'.'; } } else { // Remise dispo de type avoir $filter='fk_facture_source IS NOT NULL'; if (! $absolute_discount) print '
'; $form->form_remise_dispo($_SERVER["PHP_SELF"].'?facid='.$object->id, 0, 'remise_id_for_payment', $soc->id, $absolute_creditnote, $filter, $resteapayer); } } if (! $absolute_discount && ! $absolute_creditnote) { print $langs->trans("CompanyHasNoAbsoluteDiscount"); if ($object->statut == Facture::STATUS_DRAFT && $object->type != Facture::TYPE_CREDIT_NOTE && $object->type != Facture::TYPE_DEPOSIT) print ' - '.$addabsolutediscount.'
'; else print '. '; } /*if ($object->statut == 0 && $object->type != 2 && $object->type != 3) { if (! $absolute_discount && ! $absolute_creditnote) print '
'; //print '   -   '; print $addabsolutediscount; //print '   -   '.$addcreditnote; // We disbale link to credit note }*/ print '
'.$langs->trans("Date").''.dol_print_date($object->date,"daytext").''; /* * Documents */ $objectref = dol_sanitizeFileName($object->ref); $dir_output = $conf->facture->dir_output . "/"; $filepath = $dir_output . $objectref . "/"; $file = $filepath . $objectref . ".pdf"; $filedetail = $filepath . $objectref . "-detail.pdf"; $relativepath = $objectref.'/'.$objectref.'.pdf'; $relativepathdetail = $objectref.'/'.$objectref.'-detail.pdf'; // Define path to preview pdf file (preview precompiled "file.ext" are "file.ext_preview.png") $fileimage = $file.'_preview.png'; // If PDF has 1 page $fileimagebis = $file.'_preview-0.pdf.png'; // If PDF has more than one page $relativepathimage = $relativepath.'_preview.png'; $var=true; // Si fichier PDF existe if (file_exists($file)) { $encfile = urlencode($file); print ''; print ''; print ""; print ''; print ''; print ''; print ''; // Si fichier detail PDF existe if (file_exists($filedetail)) // facture detaillee supplementaire { print ""; print ''; print ''; print ''; print ''; } print "
'.$langs->trans("Documents").'
".$langs->trans("Bill")." PDF'.$object->ref.'.pdf'.dol_print_size(dol_filesize($file)). ''.dol_print_date(dol_filemtime($file),'dayhour').'
Facture detaillee'.$object->ref.'-detail.pdf'.dol_print_size(dol_filesize($filedetail)).''.dol_print_date(dol_filemtime($filedetail),'dayhour').'
\n"; // Conversion du PDF en image png si fichier png non existant if (! file_exists($fileimage) && ! file_exists($fileimagebis)) { if (class_exists("Imagick")) { $ret = dol_convert_file($file,'png',$fileimage); if ($ret < 0) $error++; } else { $langs->load("errors"); print ''.$langs->trans("ErrorNoImagickReadimage").''; } } } print "
'.$langs->trans("AmountHT").'' . price($object->total_ht, '', $langs, 0, - 1, - 1, $conf->currency) . '
'.$langs->trans('AmountVAT').'' . price($object->total_tva, '', $langs, 0, - 1, - 1, $conf->currency) . '
'.$langs->trans('AmountTTC').'' . price($object->total_ttc, '', $langs, 0, - 1, - 1, $conf->currency) . '
'.$langs->trans('Status').''.($object->getLibStatut(4,$totalpaye)).'
'.$langs->trans("Project").''; if ($object->fk_project > 0) { $project = New Project($db); $project->fetch($object->fk_project); print ''.$project->title.''; } else { print ' '; } print '
'; dol_fiche_end(); } else { // Facture non trouvee print $langs->trans("ErrorBillNotFound",$id); } } print ''; print ''; print '
'; print '
'; // Si fichier png PDF d'1 page trouve if (file_exists($fileimage)) { print ''; } // Si fichier png PDF de plus d'1 page trouve elseif (file_exists($fileimagebis)) { $multiple = preg_replace('/\.png/','',$relativepath) . "-"; for ($i = 0; $i < 20; $i++) { $preview = $multiple.$i.'.png'; if (file_exists($dir_output.$preview)) { print '

'; } } } print '

'; print '
'; llxFooter(); $db->close();