From 289e2e788878e7033b31554de11bb398f8926056 Mon Sep 17 00:00:00 2001 From: jfefe Date: Thu, 7 Mar 2013 03:24:22 +0100 Subject: [PATCH] New function to fill ODT substitution array with extrafield of object --- .../core/class/commondocgenerator.class.php | 73 ++++++++++++------- .../doc/doc_generic_invoice_odt.modules.php | 13 +--- 2 files changed, 47 insertions(+), 39 deletions(-) diff --git a/htdocs/core/class/commondocgenerator.class.php b/htdocs/core/class/commondocgenerator.class.php index 105936a0429..7c69c888a7a 100755 --- a/htdocs/core/class/commondocgenerator.class.php +++ b/htdocs/core/class/commondocgenerator.class.php @@ -161,18 +161,18 @@ abstract class CommonDocGenerator 'company_idprof4'=>$object->idprof4, 'company_idprof5'=>$object->idprof5, 'company_idprof6'=>$object->idprof6, - 'company_note'=>$object->note + 'company_note'=>$object->note ); // Retrieve extrafields if(is_array($object->array_options) && count($object->array_options)) { - if(!class_exists('Extrafields')) + if(!class_exists('Extrafields')) require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php'; $extrafields = new ExtraFields($this->db); $extralabels = $extrafields->fetch_name_optionals_label('company',true); $object->fetch_optionals($object->id,$extralabels); - + foreach($extrafields->attribute_label as $key=>$label) { if($extrafields->attribute_type[$key] == 'price') @@ -180,7 +180,7 @@ abstract class CommonDocGenerator $object->array_options['options_'.$key] = price($object->array_options['options_'.$key]).' '.$outputlangs->getCurrencySymbol($conf->currency); } else if($extrafields->attribute_type[$key] == 'select') - { + { $object->array_options['options_'.$key] = $extrafields->attribute_param[$key]['options'][$object->array_options['options_'.$key]]; } $array_thirdparty=array_merge($array_thirdparty,array('company_options_'.$key => $object->array_options['options_'.$key])); @@ -241,29 +241,7 @@ abstract class CommonDocGenerator $extralabels = $extrafields->fetch_name_optionals_label('propal',true); $object->fetch_optionals($object->id,$extralabels); - foreach($extrafields->attribute_label as $key=>$label) - { - if($extrafields->attribute_type[$key] == 'price') - { - $object->array_options['options_'.$key] = price($object->array_options['options_'.$key]); - $object->array_options['options_'.$key.'_currency'] = $object->array_options['options_'.$key].' '.$outputlangs->getCurrencySymbol($conf->currency); - // Add value to store price with currency - $array_propal=array_merge($array_propal,array($array_key.'_options_'.$key.'_currency' => $object->array_options['options_'.$key.'_currency'])); - } - else if($extrafields->attribute_type[$key] == 'select') - { - $object->array_options['options_'.$key] = $extrafields->attribute_param[$key]['options'][$object->array_options['options_'.$key]]; - } - else if($extrafields->attribute_type[$key] == 'date') - { - $object->array_options['options_'.$key] = (strlen($object->array_options['options_'.$key])>0?dol_print_date($object->array_options['options_'.$key],'day'):''); - } - else if($extrafields->attribute_type[$key] == 'datetime') - { - $object->array_options['options_'.$key] = ($object->array_options['options_'.$key]!="0000-00-00 00:00:00"?dol_print_date($object->array_options['options_'.$key],'dayhour'):''); - } - $array_propal=array_merge($array_propal,array($array_key.'_options_'.$key => $object->array_options['options_'.$key])); - } + $array_propal = $this->fill_substitutionarray_with_extrafields($object,$array_propal,$extrafields,$array_key,$outputlangs); } return $array_propal; } @@ -297,6 +275,47 @@ abstract class CommonDocGenerator ); } + /** + * Fill array with couple extrafield key => extrafield value + * + * @param Object $object Object with extrafields (must have $object->array_options filled) + * @param array $array_to_fill Substitution array + * @param Extrafields $extrafields Extrafields object + * @param array_key $array_key Name of the key for return array + * @param Translate $outputlangs Lang object to use for output + * @return array Substitution array + */ + function fill_substitutionarray_with_extrafields($object,$array_to_fill,$extrafields,$array_key,$outputlangs) + { + global $conf; + foreach($extrafields->attribute_label as $key=>$label) + { + if($extrafields->attribute_type[$key] == 'price') + { + $object->array_options['options_'.$key] = price($object->array_options['options_'.$key]); + $object->array_options['options_'.$key.'_currency'] = $object->array_options['options_'.$key].' '.$outputlangs->getCurrencySymbol($conf->currency); + //Add value to store price with currency + $array_to_fill=array_merge($array_to_fill,array($array_key.'_options_'.$key.'_currency' => $object->array_options['options_'.$key.'_currency'])); + } + else if($extrafields->attribute_type[$key] == 'select') + { + $object->array_options['options_'.$key] = $extrafields->attribute_param[$key]['options'][$object->array_options['options_'.$key]]; + } + else if($extrafields->attribute_type[$key] == 'date') + { + $object->array_options['options_'.$key] = (strlen($object->array_options['options_'.$key])>0?dol_print_date($object->array_options['options_'.$key],'day'):''); + } + else if($extrafields->attribute_type[$key] == 'datetime') + { + $object->array_options['options_'.$key] = ($object->array_options['options_'.$key]!="0000-00-00 00:00:00"?dol_print_date($object->array_options['options_'.$key],'dayhour'):''); + } + $array_to_fill=array_merge($array_to_fill,array($array_key.'_options_'.$key => $object->array_options['options_'.$key])); + } + + return $array_to_fill; + + } + /** * Rect pdf diff --git a/htdocs/core/modules/facture/doc/doc_generic_invoice_odt.modules.php b/htdocs/core/modules/facture/doc/doc_generic_invoice_odt.modules.php index 02c53d76a1a..adf5c2ec2a6 100644 --- a/htdocs/core/modules/facture/doc/doc_generic_invoice_odt.modules.php +++ b/htdocs/core/modules/facture/doc/doc_generic_invoice_odt.modules.php @@ -149,18 +149,7 @@ class doc_generic_invoice_odt extends ModelePDFFactures $extralabels = $extrafields->fetch_name_optionals_label('facture',true); $object->fetch_optionals($object->id,$extralabels); - foreach($extrafields->attribute_label as $key=>$label) - { - if($extrafields->attribute_type[$key] == 'price') - { - $object->array_options['options_'.$key] = price($object->array_options['options_'.$key]).' '.$outputlangs->getCurrencySymbol($conf->currency); - } - else if($extrafields->attribute_type[$key] == 'select') - { - $object->array_options['options_'.$key] = $extrafields->attribute_param[$key]['options'][$object->array_options['options_'.$key]]; - } - $resarray=array_merge($resarray,array('object_options_'.$key => $object->array_options['options_'.$key])); - } + $resarray = $this->fill_substitutionarray_with_extrafields($object,$resarray,$extrafields,$array_key='object',$outputlangs); } return $resarray; }