2004-10-20 00:24:10 +02:00
< ? php
2007-05-04 21:44:44 +02:00
/* Copyright ( C ) 2003 - 2007 Rodolphe Quiedeville < rodolphe @ quiedeville . org >
2009-01-28 16:44:25 +01:00
* Copyright ( C ) 2004 - 2009 Laurent Destailleur < eldy @ users . sourceforge . net >
2012-12-30 15:11:07 +01:00
* Copyright ( C ) 2005 - 2009 Regis Houssin < regis . houssin @ capnetworks . com >
2015-01-25 01:20:58 +01:00
* Copyright ( C ) 2015 Frederic France < frederic . france @ free . fr >
2003-02-13 16:58:52 +01:00
*
* 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
2013-01-16 15:36:08 +01:00
* the Free Software Foundation ; either version 3 of the License , or
2003-02-13 16:58:52 +01:00
* ( 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
2011-08-01 01:24:38 +02:00
* along with this program . If not , see < http :// www . gnu . org / licenses />.
2003-02-13 16:58:52 +01:00
*/
2005-01-31 13:21:44 +01:00
/**
2011-10-24 14:11:49 +02:00
* \file htdocs / core / boxes / box_factures . php
2009-08-08 18:59:56 +02:00
* \ingroup factures
* \brief Module de generation de l ' affichage de la box factures
2008-12-11 22:40:21 +01:00
*/
2012-08-23 02:04:35 +02:00
include_once DOL_DOCUMENT_ROOT . '/core/boxes/modules_boxes.php' ;
2003-02-13 16:58:52 +01:00
2012-01-26 13:49:15 +01:00
/**
* Class to manage the box to show last invoices
*/
2012-02-20 09:42:57 +01:00
class box_factures extends ModeleBoxes
{
2008-12-11 22:40:21 +01:00
var $boxcode = " lastcustomerbills " ;
var $boximg = " object_bill " ;
2013-01-15 17:06:53 +01:00
var $boxlabel = " BoxLastCustomerBills " ;
2008-12-11 22:40:21 +01:00
var $depends = array ( " facture " );
2005-02-27 18:57:21 +01:00
2006-06-18 03:34:15 +02:00
var $db ;
var $param ;
2008-12-11 22:40:21 +01:00
var $info_box_head = array ();
var $info_box_contents = array ();
2005-02-27 17:45:59 +01:00
2005-02-27 18:57:21 +01:00
2017-06-12 14:09:00 +02:00
/**
* Constructor
*
* @ param DoliDB $db Database handler
* @ param string $param More parameters
*/
function __construct ( $db , $param )
{
global $user ;
$this -> db = $db ;
$this -> hidden =! ( $user -> rights -> facture -> lire );
}
2008-12-11 22:40:21 +01:00
/**
2011-11-23 18:28:14 +01:00
* Load data into info_box_contents array to show array later .
*
* @ param int $max Maximum number of records to load
* @ return void
2008-12-11 22:40:21 +01:00
*/
function loadBox ( $max = 5 )
{
2009-04-27 22:37:50 +02:00
global $conf , $user , $langs , $db ;
2006-05-20 14:16:18 +02:00
2008-12-07 16:55:40 +01:00
$this -> max = $max ;
2008-12-11 22:40:21 +01:00
2015-01-25 01:20:58 +01:00
include_once DOL_DOCUMENT_ROOT . '/compta/facture/class/facture.class.php' ;
include_once DOL_DOCUMENT_ROOT . '/societe/class/societe.class.php' ;
2018-10-10 01:16:53 +02:00
$facturestatic = new Facture ( $db );
2015-01-25 01:20:58 +01:00
$societestatic = new Societe ( $db );
2008-12-11 22:40:21 +01:00
2018-10-10 01:16:53 +02:00
$langs -> load ( " bills " );
2014-10-27 21:48:28 +01:00
$text = $langs -> trans ( " BoxTitleLast " . ( $conf -> global -> MAIN_LASTBOX_ON_OBJECT_DATE ? " " : " Modified " ) . " CustomerBills " , $max );
2008-12-11 22:40:21 +01:00
$this -> info_box_head = array (
2008-05-30 09:06:36 +02:00
'text' => $text ,
2010-08-24 16:42:18 +02:00
'limit' => dol_strlen ( $text )
2008-12-11 22:40:21 +01:00
);
2015-01-25 01:20:58 +01:00
if ( $user -> rights -> facture -> lire ) {
$sql = " SELECT f.rowid as facid " ;
$sql .= " , f.facnumber, f.type, f.total as total_ht " ;
$sql .= " , f.tva as total_tva " ;
$sql .= " , f.total_ttc " ;
$sql .= " , f.datef as df " ;
2009-05-10 06:20:37 +02:00
$sql .= " , f.paye, f.fk_statut, f.datec, f.tms " ;
2018-10-10 01:16:53 +02:00
$sql .= " , s.rowid as socid, s.nom as name, s.code_client, s.email, s.tva_intra, s.code_compta, s.siren as idprof1, s.siret as idprof2, s.ape as idprof3, s.idprof4, s.idprof5, s.idprof6 " ;
2009-04-27 22:37:50 +02:00
$sql .= " , f.date_lim_reglement as datelimite " ;
2009-06-03 21:51:39 +02:00
$sql .= " FROM ( " . MAIN_DB_PREFIX . " societe as s, " . MAIN_DB_PREFIX . " facture as f " ;
2009-04-27 22:37:50 +02:00
if ( ! $user -> rights -> societe -> client -> voir && ! $user -> societe_id ) $sql .= " , " . MAIN_DB_PREFIX . " societe_commerciaux as sc " ;
2009-06-03 21:51:39 +02:00
$sql .= " ) " ;
2008-12-11 22:40:21 +01:00
$sql .= " WHERE f.fk_soc = s.rowid " ;
2012-02-01 11:32:55 +01:00
$sql .= " AND f.entity = " . $conf -> entity ;
2009-04-27 22:37:50 +02:00
if ( ! $user -> rights -> societe -> client -> voir && ! $user -> societe_id ) $sql .= " AND s.rowid = sc.fk_soc AND sc.fk_user = " . $user -> id ;
if ( $user -> societe_id ) $sql .= " AND s.rowid = " . $user -> societe_id ;
2014-10-27 21:48:28 +01:00
if ( $conf -> global -> MAIN_LASTBOX_ON_OBJECT_DATE ) $sql .= " ORDER BY f.datef DESC, f.facnumber DESC " ;
else $sql .= " ORDER BY f.tms DESC, f.facnumber DESC " ;
2008-12-11 22:40:21 +01:00
$sql .= $db -> plimit ( $max , 0 );
$result = $db -> query ( $sql );
if ( $result )
{
$num = $db -> num_rows ( $result );
2012-03-23 18:19:50 +01:00
$now = dol_now ();
2009-01-28 16:44:25 +01:00
2015-05-04 13:10:45 +02:00
$line = 0 ;
2016-05-21 12:30:58 +02:00
$l_due_date = $langs -> trans ( 'Late' ) . ' (' . $langs -> trans ( 'DateDue' ) . ': %s)' ;
2008-12-11 22:40:21 +01:00
2015-05-04 13:10:45 +02:00
while ( $line < $num ) {
2015-01-25 01:20:58 +01:00
$objp = $db -> fetch_object ( $result );
$datelimite = $db -> jdate ( $objp -> datelimite );
$date = $db -> jdate ( $objp -> df );
$datem = $db -> jdate ( $objp -> tms );
2018-10-10 01:16:53 +02:00
2015-01-25 01:20:58 +01:00
$facturestatic -> id = $objp -> facid ;
$facturestatic -> ref = $objp -> facnumber ;
$facturestatic -> type = $objp -> type ;
$facturestatic -> total_ht = $objp -> total_ht ;
$facturestatic -> total_tva = $objp -> total_tva ;
$facturestatic -> total_ttc = $objp -> total_ttc ;
2015-09-05 10:56:13 +02:00
$facturestatic -> statut = $objp -> fk_statut ;
$facturestatic -> date_lim_reglement = $db -> jdate ( $objp -> datelimite );
2015-01-25 01:20:58 +01:00
$societestatic -> id = $objp -> socid ;
$societestatic -> name = $objp -> name ;
$societestatic -> code_client = $objp -> code_client ;
2018-10-10 01:16:53 +02:00
$societestatic -> tva_intra = $objp -> tva_intra ;
$societestatic -> email = $objp -> email ;
$societestatic -> idprof1 = $objp -> idprof1 ;
$societestatic -> idprof2 = $objp -> idprof2 ;
$societestatic -> idprof3 = $objp -> idprof3 ;
$societestatic -> idprof4 = $objp -> idprof4 ;
$societestatic -> idprof5 = $objp -> idprof5 ;
$societestatic -> idprof6 = $objp -> idprof6 ;
2015-09-05 10:56:13 +02:00
2008-12-11 22:40:21 +01:00
$late = '' ;
2015-09-05 10:56:13 +02:00
if ( $facturestatic -> hasDelay ()) {
2016-05-21 12:30:58 +02:00
$late = img_warning ( sprintf ( $l_due_date , dol_print_date ( $datelimite , 'day' )));
2015-09-05 10:56:13 +02:00
}
2008-12-11 22:40:21 +01:00
2015-05-04 13:10:45 +02:00
$this -> info_box_contents [ $line ][] = array (
2017-03-10 11:22:27 +01:00
'td' => '' ,
2015-01-25 01:20:58 +01:00
'text' => $facturestatic -> getNomUrl ( 1 ),
2015-01-21 01:06:04 +01:00
'text2' => $late ,
2015-01-25 01:20:58 +01:00
'asis' => 1 ,
2015-01-21 01:06:04 +01:00
);
2015-05-04 13:10:45 +02:00
$this -> info_box_contents [ $line ][] = array (
2017-03-10 11:22:27 +01:00
'td' => '' ,
2015-01-25 01:20:58 +01:00
'text' => $societestatic -> getNomUrl ( 1 , '' , 40 ),
'asis' => 1 ,
2015-01-21 01:06:04 +01:00
);
2015-05-04 13:10:45 +02:00
$this -> info_box_contents [ $line ][] = array (
2017-03-10 11:22:27 +01:00
'td' => 'class="right"' ,
2015-05-04 13:10:45 +02:00
'text' => price ( $objp -> total_ht , 0 , $langs , 0 , - 1 , - 1 , $conf -> currency ),
2015-01-21 01:06:04 +01:00
);
2015-05-04 13:10:45 +02:00
$this -> info_box_contents [ $line ][] = array (
2017-03-10 11:22:27 +01:00
'td' => 'class="right"' ,
2015-01-21 01:06:04 +01:00
'text' => dol_print_date ( $date , 'day' ),
);
2015-05-04 13:10:45 +02:00
$this -> info_box_contents [ $line ][] = array (
2015-01-21 01:06:04 +01:00
'td' => 'align="right" width="18"' ,
'text' => $facturestatic -> LibStatut ( $objp -> paye , $objp -> fk_statut , 3 ),
);
2015-05-04 13:10:45 +02:00
$line ++ ;
2015-01-21 01:06:04 +01:00
}
if ( $num == 0 )
2015-05-04 13:10:45 +02:00
$this -> info_box_contents [ $line ][ 0 ] = array (
2015-01-21 01:06:04 +01:00
'td' => 'align="center"' ,
'text' => $langs -> trans ( " NoRecordedInvoices " ),
);
$db -> free ( $result );
} else {
$this -> info_box_contents [ 0 ][ 0 ] = array (
2017-03-10 11:22:27 +01:00
'td' => '' ,
2015-01-21 01:06:04 +01:00
'maxlength' => 500 ,
'text' => ( $db -> error () . ' sql=' . $sql ),
);
}
} else {
$this -> info_box_contents [ 0 ][ 0 ] = array (
2017-06-10 00:05:47 +02:00
'td' => 'align="left" class="nohover opacitymedium"' ,
'text' => $langs -> trans ( " ReadPermissionNotAllowed " )
2015-01-21 01:06:04 +01:00
);
}
}
2005-02-27 17:45:59 +01:00
2011-11-23 18:28:14 +01:00
/**
2015-01-25 01:20:58 +01:00
* Method to show box
2011-11-23 18:28:14 +01:00
*
2015-01-25 01:20:58 +01:00
* @ param array $head Array with properties of box title
* @ param array $contents Array with properties of box lines
2016-06-27 13:57:10 +02:00
* @ param int $nooutput No print , only return string
2017-06-12 14:09:00 +02:00
* @ return string
2011-11-23 18:28:14 +01:00
*/
2016-06-27 13:57:10 +02:00
function showBox ( $head = null , $contents = null , $nooutput = 0 )
{
2017-06-12 14:09:00 +02:00
return parent :: showBox ( $this -> info_box_head , $this -> info_box_contents , $nooutput );
2008-12-11 22:40:21 +01:00
}
2005-02-27 17:45:59 +01:00
2003-02-13 18:16:33 +01:00
}