2012-02-19 21:08:17 +01:00
< ? php
2012-09-02 22:12:56 +02:00
/* Copyright ( C ) 2006 - 2011 Laurent Destailleur < eldy @ users . sourceforge . net >
* Copyright ( C ) 2006 Rodolphe Quiedeville < rodolphe @ quiedeville . org >
* Copyright ( C ) 2007 Patrick Raguin < patrick . raguin @ gmail . com >
2018-10-27 14:43:12 +02:00
* Copyright ( C ) 2010 - 2012 Regis Houssin < regis . houssin @ inodbox . com >
2012-09-02 22:12:56 +02:00
* Copyright ( C ) 2010 Juanjo Menent < jmenent @ 2 byte . es >
* Copyright ( C ) 2012 Christophe Battarel < christophe . battarel @ altairis . fr >
2012-02-19 21:08:17 +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
2012-02-19 21:08:17 +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
2019-09-23 21:55:30 +02:00
* along with this program . If not , see < https :// www . gnu . org / licenses />.
* or see https :// www . gnu . org /
2012-02-19 21:08:17 +01:00
*/
/**
* \file htdocs / core / lib / doc . lib . php
* \brief Set of functions used for ODT generation
* \ingroup core
*/
/**
* Return line description translated in outputlangs and encoded into UTF8
*
2019-03-11 01:01:15 +01:00
* @ param Object $line Object of line
2012-02-19 21:08:17 +01:00
* @ param Translate $outputlangs Object langs for output
* @ param int $hideref Hide reference
* @ param int $hidedesc Hide description
* @ param int $issupplierline Is it a line for a supplier object ?
* @ return string String with line
*/
2019-01-27 15:20:16 +01:00
function doc_getlinedesc ( $line , $outputlangs , $hideref = 0 , $hidedesc = 0 , $issupplierline = 0 )
2012-02-19 21:08:17 +01:00
{
global $db , $conf , $langs ;
2020-04-10 10:59:32 +02:00
$idprod = $line -> fk_product ;
$label = ( ! empty ( $line -> label ) ? $line -> label : ( ! empty ( $line -> libelle ) ? $line -> libelle : '' ));
$desc = ( ! empty ( $line -> desc ) ? $line -> desc : ( ! empty ( $line -> description ) ? $line -> description : '' ));
$ref_supplier = ( ! empty ( $line -> ref_supplier ) ? $line -> ref_supplier : ( ! empty ( $line -> ref_fourn ) ? $line -> ref_fourn : '' )); // TODO Not yet saved for supplier invoices, only supplier orders
$note = ( ! empty ( $line -> note ) ? $line -> note : '' );
2012-02-19 21:08:17 +01:00
2021-02-23 22:03:23 +01:00
if ( $issupplierline ) {
$prodser = new ProductFournisseur ( $db );
} else {
$prodser = new Product ( $db );
}
2012-02-19 21:08:17 +01:00
2021-02-23 22:03:23 +01:00
if ( $idprod ) {
2012-02-19 21:08:17 +01:00
$prodser -> fetch ( $idprod );
// If a predefined product and multilang and on other lang, we renamed label with label translated
2022-09-24 14:43:29 +02:00
if ( getDolGlobalInt ( 'MAIN_MULTILANGS' ) && ( $outputlangs -> defaultlang != $langs -> defaultlang )) {
2021-02-23 22:03:23 +01:00
if ( ! empty ( $prodser -> multilangs [ $outputlangs -> defaultlang ][ " label " ]) && $label == $prodser -> label ) {
$label = $prodser -> multilangs [ $outputlangs -> defaultlang ][ " label " ];
}
if ( ! empty ( $prodser -> multilangs [ $outputlangs -> defaultlang ][ " description " ]) && $desc == $prodser -> description ) {
$desc = $prodser -> multilangs [ $outputlangs -> defaultlang ][ " description " ];
}
if ( ! empty ( $prodser -> multilangs [ $outputlangs -> defaultlang ][ " note " ]) && $note == $prodser -> note ) {
$note = $prodser -> multilangs [ $outputlangs -> defaultlang ][ " note " ];
}
2012-02-19 21:08:17 +01:00
}
}
// Description short of product line
2020-04-10 10:59:32 +02:00
$libelleproduitservice = $label ;
2012-02-19 21:08:17 +01:00
// Description long of product line
2021-02-23 22:03:23 +01:00
if ( $desc && ( $desc != $label )) {
if ( $desc == '(CREDIT_NOTE)' && $line -> fk_remise_except ) {
2020-04-10 10:59:32 +02:00
$discount = new DiscountAbsolute ( $db );
2012-02-19 21:08:17 +01:00
$discount -> fetch ( $line -> fk_remise_except );
2022-06-14 14:53:14 +02:00
$sourceref = ! empty ( $discount -> discount_type ) ? $discount -> ref_invoice_supplier_source : $discount -> ref_facture_source ;
2020-04-10 10:59:32 +02:00
$libelleproduitservice = $outputlangs -> transnoentitiesnoconv ( " DiscountFromCreditNote " , $sourceref );
2021-02-23 22:03:23 +01:00
} elseif ( $desc == '(DEPOSIT)' && $line -> fk_remise_except ) {
2020-04-10 10:59:32 +02:00
$discount = new DiscountAbsolute ( $db );
2020-03-23 15:54:02 +01:00
$discount -> fetch ( $line -> fk_remise_except );
2022-06-14 14:53:14 +02:00
$sourceref = ! empty ( $discount -> discount_type ) ? $discount -> ref_invoice_supplier_source : $discount -> ref_facture_source ;
2020-04-10 10:59:32 +02:00
$libelleproduitservice = $outputlangs -> transnoentitiesnoconv ( " DiscountFromDeposit " , $sourceref );
2020-03-23 15:54:02 +01:00
// Add date of deposit
2021-02-23 22:03:23 +01:00
if ( ! empty ( $conf -> global -> INVOICE_ADD_DEPOSIT_DATE )) {
$libelleproduitservice .= ' (' . dol_print_date ( $discount -> datec , 'day' , '' , $outputlangs ) . ')' ;
}
} elseif ( $desc == '(EXCESS RECEIVED)' && $line -> fk_remise_except ) {
2020-04-10 10:59:32 +02:00
$discount = new DiscountAbsolute ( $db );
2016-11-25 11:04:42 +01:00
$discount -> fetch ( $line -> fk_remise_except );
2020-04-10 10:59:32 +02:00
$libelleproduitservice = $outputlangs -> transnoentitiesnoconv ( " DiscountFromExcessReceived " , $discount -> ref_facture_source );
2021-02-23 22:03:23 +01:00
} elseif ( $desc == '(EXCESS PAID)' && $line -> fk_remise_except ) {
2020-04-10 10:59:32 +02:00
$discount = new DiscountAbsolute ( $db );
2018-02-19 15:52:07 +01:00
$discount -> fetch ( $line -> fk_remise_except );
2020-04-10 10:59:32 +02:00
$libelleproduitservice = $outputlangs -> transnoentitiesnoconv ( " DiscountFromExcessPaid " , $discount -> ref_invoice_supplier_source );
2020-05-21 15:05:19 +02:00
} else {
2021-02-23 22:03:23 +01:00
if ( $idprod ) {
if ( empty ( $hidedesc )) {
$libelleproduitservice = dol_concatdesc ( $libelleproduitservice , $desc );
}
2020-05-21 15:05:19 +02:00
} else {
2020-04-10 10:59:32 +02:00
$libelleproduitservice = dol_concatdesc ( $libelleproduitservice , $desc );
2012-02-19 21:08:17 +01:00
}
}
}
// If line linked to a product
2021-02-23 22:03:23 +01:00
if ( $idprod ) {
2012-02-19 21:08:17 +01:00
// On ajoute la ref
2021-02-23 22:03:23 +01:00
if ( $prodser -> ref ) {
2012-02-19 21:08:17 +01:00
$prefix_prodserv = " " ;
$ref_prodserv = " " ;
2021-02-23 22:03:23 +01:00
if ( ! empty ( $conf -> global -> PRODUCT_ADD_TYPE_IN_DOCUMENTS )) { // In standard mode, we do not show this
if ( $prodser -> isService ()) {
2012-02-19 21:08:17 +01:00
$prefix_prodserv = $outputlangs -> transnoentitiesnoconv ( " Service " ) . " " ;
2020-05-21 15:05:19 +02:00
} else {
2012-02-19 21:08:17 +01:00
$prefix_prodserv = $outputlangs -> transnoentitiesnoconv ( " Product " ) . " " ;
}
}
2021-02-23 22:03:23 +01:00
if ( empty ( $hideref )) {
if ( $issupplierline ) {
$ref_prodserv = $prodser -> ref . ' (' . $outputlangs -> trans ( " SupplierRef " ) . ' ' . $ref_supplier . ')' ; // Show local ref and supplier ref
} else {
$ref_prodserv = $prodser -> ref ; // Show local ref only
}
2012-02-19 21:08:17 +01:00
}
2022-05-31 14:30:47 +02:00
$libelleproduitservice = $prefix_prodserv . $ref_prodserv . ( $libelleproduitservice ? " - " : " " ) . $libelleproduitservice ;
2012-02-19 21:08:17 +01:00
}
}
2021-02-23 22:03:23 +01:00
if ( ! empty ( $line -> date_start ) || ! empty ( $line -> date_end )) {
2020-04-10 10:59:32 +02:00
$format = 'day' ;
2012-02-19 21:08:17 +01:00
// Show duration if exists
2021-02-23 22:03:23 +01:00
if ( $line -> date_start && $line -> date_end ) {
2020-04-10 10:59:32 +02:00
$period = '(' . $outputlangs -> transnoentitiesnoconv ( 'DateFromTo' , dol_print_date ( $line -> date_start , $format , false , $outputlangs ), dol_print_date ( $line -> date_end , $format , false , $outputlangs )) . ')' ;
2012-02-19 21:08:17 +01:00
}
2021-02-23 22:03:23 +01:00
if ( $line -> date_start && ! $line -> date_end ) {
2020-04-10 10:59:32 +02:00
$period = '(' . $outputlangs -> transnoentitiesnoconv ( 'DateFrom' , dol_print_date ( $line -> date_start , $format , false , $outputlangs )) . ')' ;
2012-02-19 21:08:17 +01:00
}
2021-02-23 22:03:23 +01:00
if ( ! $line -> date_start && $line -> date_end ) {
2020-04-10 10:59:32 +02:00
$period = '(' . $outputlangs -> transnoentitiesnoconv ( 'DateUntil' , dol_print_date ( $line -> date_end , $format , false , $outputlangs )) . ')' ;
2012-02-19 21:08:17 +01:00
}
//print '>'.$outputlangs->charset_output.','.$period;
2020-04-10 10:59:32 +02:00
$libelleproduitservice = dol_concatdesc ( $libelleproduitservice , $period );
2012-02-19 21:08:17 +01:00
//print $libelleproduitservice;
}
return $libelleproduitservice ;
}