New function to fill ODT substitution array with extrafield of object

This commit is contained in:
jfefe 2013-03-07 03:24:22 +01:00
parent 65ed01a251
commit 289e2e7888
2 changed files with 47 additions and 39 deletions

View File

@ -161,18 +161,18 @@ abstract class CommonDocGenerator
'company_idprof4'=>$object->idprof4, 'company_idprof4'=>$object->idprof4,
'company_idprof5'=>$object->idprof5, 'company_idprof5'=>$object->idprof5,
'company_idprof6'=>$object->idprof6, 'company_idprof6'=>$object->idprof6,
'company_note'=>$object->note 'company_note'=>$object->note
); );
// Retrieve extrafields // Retrieve extrafields
if(is_array($object->array_options) && count($object->array_options)) 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'; require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
$extrafields = new ExtraFields($this->db); $extrafields = new ExtraFields($this->db);
$extralabels = $extrafields->fetch_name_optionals_label('company',true); $extralabels = $extrafields->fetch_name_optionals_label('company',true);
$object->fetch_optionals($object->id,$extralabels); $object->fetch_optionals($object->id,$extralabels);
foreach($extrafields->attribute_label as $key=>$label) foreach($extrafields->attribute_label as $key=>$label)
{ {
if($extrafields->attribute_type[$key] == 'price') 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); $object->array_options['options_'.$key] = price($object->array_options['options_'.$key]).' '.$outputlangs->getCurrencySymbol($conf->currency);
} }
else if($extrafields->attribute_type[$key] == 'select') else if($extrafields->attribute_type[$key] == 'select')
{ {
$object->array_options['options_'.$key] = $extrafields->attribute_param[$key]['options'][$object->array_options['options_'.$key]]; $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])); $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); $extralabels = $extrafields->fetch_name_optionals_label('propal',true);
$object->fetch_optionals($object->id,$extralabels); $object->fetch_optionals($object->id,$extralabels);
foreach($extrafields->attribute_label as $key=>$label) $array_propal = $this->fill_substitutionarray_with_extrafields($object,$array_propal,$extrafields,$array_key,$outputlangs);
{
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]));
}
} }
return $array_propal; 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 * Rect pdf

View File

@ -149,18 +149,7 @@ class doc_generic_invoice_odt extends ModelePDFFactures
$extralabels = $extrafields->fetch_name_optionals_label('facture',true); $extralabels = $extrafields->fetch_name_optionals_label('facture',true);
$object->fetch_optionals($object->id,$extralabels); $object->fetch_optionals($object->id,$extralabels);
foreach($extrafields->attribute_label as $key=>$label) $resarray = $this->fill_substitutionarray_with_extrafields($object,$resarray,$extrafields,$array_key='object',$outputlangs);
{
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]));
}
} }
return $resarray; return $resarray;
} }