2
0
forked from Wavyzz/dolibarr

FIX Can use odx templates that does not include lines tags

This commit is contained in:
Laurent Destailleur
2018-02-24 12:32:48 +01:00
parent e68612fa09
commit cbfe241c1b
7 changed files with 287 additions and 198 deletions

View File

@@ -392,30 +392,42 @@ class doc_generic_order_odt extends ModelePDFCommandes
// Replace tags of lines // Replace tags of lines
try try
{ {
$listlines = $odfHandler->setSegment('lines'); $foundtagforlines = 1;
foreach ($object->lines as $line) try {
{ $listlines = $odfHandler->setSegment('lines');
$tmparray=$this->get_substitutionarray_lines($line,$outputlangs); }
complete_substitutions_array($tmparray, $outputlangs, $object, $line, "completesubstitutionarray_lines"); catch(OdfException $e)
// Call the ODTSubstitutionLine hook {
$parameters=array('odfHandler'=>&$odfHandler,'file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs,'substitutionarray'=>&$tmparray,'line'=>$line); // We may arrive here if tags for lines not present into template
$reshook=$hookmanager->executeHooks('ODTSubstitutionLine',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks $foundtagforlines = 0;
foreach($tmparray as $key => $val) dol_syslog($e->getMessage(), LOG_INFO);
{ }
try if ($foundtagforlines)
{ {
$listlines->setVars($key, $val, true, 'UTF-8'); foreach ($object->lines as $line)
} {
catch(OdfException $e) $tmparray=$this->get_substitutionarray_lines($line,$outputlangs);
{ complete_substitutions_array($tmparray, $outputlangs, $object, $line, "completesubstitutionarray_lines");
} // Call the ODTSubstitutionLine hook
catch(SegmentException $e) $parameters=array('odfHandler'=>&$odfHandler,'file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs,'substitutionarray'=>&$tmparray,'line'=>$line);
{ $reshook=$hookmanager->executeHooks('ODTSubstitutionLine',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks
} foreach($tmparray as $key => $val)
} {
$listlines->merge(); try
{
$listlines->setVars($key, $val, true, 'UTF-8');
}
catch(OdfException $e)
{
}
catch(SegmentException $e)
{
}
}
$listlines->merge();
}
$odfHandler->mergeSegment($listlines);
} }
$odfHandler->mergeSegment($listlines);
} }
catch(OdfException $e) catch(OdfException $e)
{ {

View File

@@ -290,17 +290,38 @@ class doc_generic_contract_odt extends ModelePDFContract
{ {
$socobject=$object->thirdparty; $socobject=$object->thirdparty;
} }
// Make substitution
$substitutionarray=array( $object->fetch_optionals();
'__FROM_NAME__' => $this->emetteur->name,
'__FROM_EMAIL__' => $this->emetteur->email,
'__TOTAL_TTC__' => $object->total_ttc, // Define substitution array
'__TOTAL_HT__' => $object->total_ht, $substitutionarray = getCommonSubstitutionArray($outputlangs, 0, null, $object);
'__TOTAL_VAT__' => $object->total_vat /* deprecated
); $substitutionarray['__FROM_NAME__'] = $this->emetteur->name;
complete_substitutions_array($substitutionarray, $langs, $object); $substitutionarray['__FROM_EMAIL__'] = $this->emetteur->email;
$substitutionarray['__TOTAL_TTC__'] = $object->total_ttc;
$substitutionarray['__TOTAL_HT__'] = $object->total_ht;
$substitutionarray['__TOTAL_VAT__'] = $object->total_vat;
*/
// Make substitutions into ODT
$array_contract=$this->get_substitutionarray_each_var_object($object, $outputlangs);
$array_user=$this->get_substitutionarray_user($user,$outputlangs);
$array_soc=$this->get_substitutionarray_mysoc($mysoc,$outputlangs);
$array_thirdparty=$this->get_substitutionarray_thirdparty($socobject,$outputlangs);
$array_objet=$this->get_substitutionarray_object($object,$outputlangs);
$array_other=$this->get_substitutionarray_other($outputlangs);
// retrieve contact information for use in contract as contact_xxx tags
$array_thirdparty_contact = array();
if ($usecontact) $array_thirdparty_contact=$this->get_substitutionarray_contact($contactobject,$outputlangs,'contact');
$substitutionarray = array_merge($substitutionarray,$array_contract,$array_user,$array_soc,$array_thirdparty,$array_objet,$array_other,$array_thirdparty_contact);
complete_substitutions_array($substitutionarray, $outputlangs, $object);
$tmparray = $substitutionarray;
// Call the ODTSubstitution hook // Call the ODTSubstitution hook
$parameters=array('file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs,'substitutionarray'=>&$substitutionarray); $parameters=array('file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs,'substitutionarray'=>&$tmparray);
$reshook=$hookmanager->executeHooks('ODTSubstitution',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks $reshook=$hookmanager->executeHooks('ODTSubstitution',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks
// Line of free text // Line of free text
@@ -311,6 +332,7 @@ class doc_generic_contract_odt extends ModelePDFContract
$newfreetext=make_substitutions($conf->global->$paramfreetext,$substitutionarray); $newfreetext=make_substitutions($conf->global->$paramfreetext,$substitutionarray);
} }
// Open and load template // Open and load template
require_once ODTPHP_PATH.'odf.php'; require_once ODTPHP_PATH.'odf.php';
try { try {
@@ -344,24 +366,6 @@ class doc_generic_contract_odt extends ModelePDFContract
{ {
} }
// Make substitutions into odt
$array_contract=$this->get_substitutionarray_each_var_object($object, $outputlangs);
$array_user=$this->get_substitutionarray_user($user,$outputlangs);
$array_soc=$this->get_substitutionarray_mysoc($mysoc,$outputlangs);
$array_thirdparty=$this->get_substitutionarray_thirdparty($socobject,$outputlangs);
$array_objet=$this->get_substitutionarray_object($object,$outputlangs);
$array_other=$this->get_substitutionarray_other($outputlangs);
// retrieve contact information for use in contract as contact_xxx tags
$array_thirdparty_contact = array();
if ($usecontact)
$array_thirdparty_contact=$this->get_substitutionarray_contact($contactobject,$outputlangs,'contact');
$tmparray = array_merge($array_contract,$array_user,$array_soc,$array_thirdparty,$array_objet,$array_other,$array_thirdparty_contact);
complete_substitutions_array($tmparray, $outputlangs, $object);
$object->fetch_optionals();
// Call the ODTSubstitution hook
$parameters=array('file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs,'substitutionarray'=>&$tmparray);
$reshook=$hookmanager->executeHooks('ODTSubstitution',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks
foreach($tmparray as $key=>$value) foreach($tmparray as $key=>$value)
{ {
try { try {
@@ -379,33 +383,46 @@ class doc_generic_contract_odt extends ModelePDFContract
{ {
} }
} }
// Replace tags of lines // Replace tags of lines
try try
{ {
$listlines = $odfHandler->setSegment('lines'); $foundtagforlines = 1;
foreach ($object->lines as $line) try {
{ $listlines = $odfHandler->setSegment('lines');
$tmparray=$this->get_substitutionarray_lines($line,$outputlangs); }
complete_substitutions_array($tmparray, $outputlangs, $object, $line, "completesubstitutionarray_lines"); catch(OdfException $e)
// Call the ODTSubstitutionLine hook {
$parameters=array('odfHandler'=>&$odfHandler,'file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs,'substitutionarray'=>&$tmparray,'line'=>$line); // We may arrive here if tags for lines not present into template
$reshook=$hookmanager->executeHooks('ODTSubstitutionLine',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks $foundtagforlines = 0;
foreach($tmparray as $key => $val) dol_syslog($e->getMessage(), LOG_INFO);
{ }
try if ($foundtagforlines)
{ {
$listlines->setVars($key, $val, true, 'UTF-8'); foreach ($object->lines as $line)
} {
catch(OdfException $e) $tmparray=$this->get_substitutionarray_lines($line,$outputlangs);
{ complete_substitutions_array($tmparray, $outputlangs, $object, $line, "completesubstitutionarray_lines");
} // Call the ODTSubstitutionLine hook
catch(SegmentException $e) $parameters=array('odfHandler'=>&$odfHandler,'file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs,'substitutionarray'=>&$tmparray,'line'=>$line);
{ $reshook=$hookmanager->executeHooks('ODTSubstitutionLine',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks
} foreach($tmparray as $key => $val)
} {
$listlines->merge(); try
{
$listlines->setVars($key, $val, true, 'UTF-8');
}
catch(OdfException $e)
{
}
catch(SegmentException $e)
{
}
}
$listlines->merge();
}
$odfHandler->mergeSegment($listlines);
} }
$odfHandler->mergeSegment($listlines);
} }
catch(OdfException $e) catch(OdfException $e)
{ {

View File

@@ -437,30 +437,42 @@ class doc_generic_shipment_odt extends ModelePdfExpedition
// Replace tags of lines // Replace tags of lines
try try
{ {
$listlines = $odfHandler->setSegment('lines'); $foundtagforlines = 1;
foreach ($object->lines as $line) try {
{ $listlines = $odfHandler->setSegment('lines');
$tmparray=$this->get_substitutionarray_shipment_lines($line,$outputlangs); }
complete_substitutions_array($tmparray, $outputlangs, $object, $line, "completesubstitutionarray_lines"); catch(OdfException $e)
// Call the ODTSubstitutionLine hook {
$parameters=array('odfHandler'=>&$odfHandler,'file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs,'substitutionarray'=>&$tmparray,'line'=>$line); // We may arrive here if tags for lines not present into template
$reshook=$hookmanager->executeHooks('ODTSubstitutionLine',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks $foundtagforlines = 0;
foreach($tmparray as $key => $val) dol_syslog($e->getMessage(), LOG_INFO);
{ }
try if ($foundtagforlines)
{ {
$listlines->setVars($key, $val, true, 'UTF-8'); foreach ($object->lines as $line)
} {
catch(OdfException $e) $tmparray=$this->get_substitutionarray_shipment_lines($line,$outputlangs);
{ complete_substitutions_array($tmparray, $outputlangs, $object, $line, "completesubstitutionarray_lines");
} // Call the ODTSubstitutionLine hook
catch(SegmentException $e) $parameters=array('odfHandler'=>&$odfHandler,'file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs,'substitutionarray'=>&$tmparray,'line'=>$line);
{ $reshook=$hookmanager->executeHooks('ODTSubstitutionLine',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks
} foreach($tmparray as $key => $val)
} {
$listlines->merge(); try
{
$listlines->setVars($key, $val, true, 'UTF-8');
}
catch(OdfException $e)
{
}
catch(SegmentException $e)
{
}
}
$listlines->merge();
}
$odfHandler->mergeSegment($listlines);
} }
$odfHandler->mergeSegment($listlines);
} }
catch(OdfException $e) catch(OdfException $e)
{ {

View File

@@ -401,30 +401,42 @@ class doc_generic_invoice_odt extends ModelePDFFactures
// Replace tags of lines // Replace tags of lines
try try
{ {
$listlines = $odfHandler->setSegment('lines'); $foundtagforlines = 1;
foreach ($object->lines as $line) try {
{ $listlines = $odfHandler->setSegment('lines');
$tmparray=$this->get_substitutionarray_lines($line,$outputlangs); }
complete_substitutions_array($tmparray, $outputlangs, $object, $line, "completesubstitutionarray_lines"); catch(OdfException $e)
// Call the ODTSubstitutionLine hook {
$parameters=array('odfHandler'=>&$odfHandler,'file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs,'substitutionarray'=>&$tmparray,'line'=>$line); // We may arrive here if tags for lines not present into template
$reshook=$hookmanager->executeHooks('ODTSubstitutionLine',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks $foundtagforlines = 0;
foreach($tmparray as $key => $val) dol_syslog($e->getMessage(), LOG_INFO);
{ }
try if ($foundtagforlines)
{ {
$listlines->setVars($key, $val, true, 'UTF-8'); foreach ($object->lines as $line)
} {
catch(OdfException $e) $tmparray=$this->get_substitutionarray_lines($line,$outputlangs);
{ complete_substitutions_array($tmparray, $outputlangs, $object, $line, "completesubstitutionarray_lines");
} // Call the ODTSubstitutionLine hook
catch(SegmentException $e) $parameters=array('odfHandler'=>&$odfHandler,'file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs,'substitutionarray'=>&$tmparray,'line'=>$line);
{ $reshook=$hookmanager->executeHooks('ODTSubstitutionLine',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks
} foreach($tmparray as $key => $val)
} {
$listlines->merge(); try
{
$listlines->setVars($key, $val, true, 'UTF-8');
}
catch(OdfException $e)
{
}
catch(SegmentException $e)
{
}
}
$listlines->merge();
}
$odfHandler->mergeSegment($listlines);
} }
$odfHandler->mergeSegment($listlines);
} }
catch(OdfException $e) catch(OdfException $e)
{ {

View File

@@ -421,30 +421,42 @@ class doc_generic_proposal_odt extends ModelePDFPropales
// Replace tags of lines // Replace tags of lines
try try
{ {
$listlines = $odfHandler->setSegment('lines'); $foundtagforlines = 1;
foreach ($object->lines as $line) try {
{ $listlines = $odfHandler->setSegment('lines');
$tmparray=$this->get_substitutionarray_lines($line,$outputlangs); }
complete_substitutions_array($tmparray, $outputlangs, $object, $line, "completesubstitutionarray_lines"); catch(OdfException $e)
// Call the ODTSubstitutionLine hook {
$parameters=array('odfHandler'=>&$odfHandler,'file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs,'substitutionarray'=>&$tmparray,'line'=>$line); // We may arrive here if tags for lines not present into template
$reshook=$hookmanager->executeHooks('ODTSubstitutionLine',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks $foundtagforlines = 0;
foreach($tmparray as $key => $val) dol_syslog($e->getMessage(), LOG_INFO);
{ }
try if ($foundtagforlines)
{ {
$listlines->setVars($key, $val, true, 'UTF-8'); foreach ($object->lines as $line)
} {
catch(OdfException $e) $tmparray=$this->get_substitutionarray_lines($line,$outputlangs);
{ complete_substitutions_array($tmparray, $outputlangs, $object, $line, "completesubstitutionarray_lines");
} // Call the ODTSubstitutionLine hook
catch(SegmentException $e) $parameters=array('odfHandler'=>&$odfHandler,'file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs,'substitutionarray'=>&$tmparray,'line'=>$line);
{ $reshook=$hookmanager->executeHooks('ODTSubstitutionLine',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks
} foreach($tmparray as $key => $val)
} {
$listlines->merge(); try
{
$listlines->setVars($key, $val, true, 'UTF-8');
}
catch(OdfException $e)
{
}
catch(SegmentException $e)
{
}
}
$listlines->merge();
}
$odfHandler->mergeSegment($listlines);
} }
$odfHandler->mergeSegment($listlines);
} }
catch(OdfException $e) catch(OdfException $e)
{ {

View File

@@ -413,30 +413,42 @@ class doc_generic_supplier_proposal_odt extends ModelePDFSupplierProposal
// Replace tags of lines // Replace tags of lines
try try
{ {
$listlines = $odfHandler->setSegment('lines'); $foundtagforlines = 1;
foreach ($object->lines as $line) try {
{ $listlines = $odfHandler->setSegment('lines');
$tmparray=$this->get_substitutionarray_lines($line,$outputlangs); }
complete_substitutions_array($tmparray, $outputlangs, $object, $line, "completesubstitutionarray_lines"); catch(OdfException $e)
// Call the ODTSubstitutionLine hook {
$parameters=array('odfHandler'=>&$odfHandler,'file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs,'substitutionarray'=>&$tmparray,'line'=>$line); // We may arrive here if tags for lines not present into template
$reshook=$hookmanager->executeHooks('ODTSubstitutionLine',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks $foundtagforlines = 0;
foreach($tmparray as $key => $val) dol_syslog($e->getMessage(), LOG_INFO);
{ }
try if ($foundtagforlines)
{ {
$listlines->setVars($key, $val, true, 'UTF-8'); foreach ($object->lines as $line)
} {
catch(OdfException $e) $tmparray=$this->get_substitutionarray_lines($line,$outputlangs);
{ complete_substitutions_array($tmparray, $outputlangs, $object, $line, "completesubstitutionarray_lines");
} // Call the ODTSubstitutionLine hook
catch(SegmentException $e) $parameters=array('odfHandler'=>&$odfHandler,'file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs,'substitutionarray'=>&$tmparray,'line'=>$line);
{ $reshook=$hookmanager->executeHooks('ODTSubstitutionLine',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks
} foreach($tmparray as $key => $val)
} {
$listlines->merge(); try
{
$listlines->setVars($key, $val, true, 'UTF-8');
}
catch(OdfException $e)
{
}
catch(SegmentException $e)
{
}
}
$listlines->merge();
}
$odfHandler->mergeSegment($listlines);
} }
$odfHandler->mergeSegment($listlines);
} }
catch(OdfException $e) catch(OdfException $e)
{ {

View File

@@ -408,34 +408,46 @@ class doc_generic_usergroup_odt extends ModelePDFUserGroup
// Replace tags of lines // Replace tags of lines
try try
{ {
$listlines = $odfHandler->setSegment('lines'); $foundtagforlines = 1;
foreach ($object->members as $u) try {
$listlines = $odfHandler->setSegment('lines');
}
catch(OdfException $e)
{ {
$tmparray=$this->get_substitutionarray_each_var_object($u,$outputlangs); // We may arrive here if tags for lines not present into template
unset($tmparray['object_pass']); $foundtagforlines = 0;
unset($tmparray['object_pass_indatabase']); dol_syslog($e->getMessage(), LOG_INFO);
complete_substitutions_array($tmparray, $outputlangs, $object, $user, "completesubstitutionarray_users"); }
// Call the ODTSubstitutionLine hook if ($foundtagforlines)
$parameters=array('odfHandler'=>&$odfHandler,'file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs,'substitutionarray'=>&$tmparray,'line'=>$u); {
$reshook=$hookmanager->executeHooks('ODTSubstitutionLine',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks foreach ($object->members as $u)
foreach($tmparray as $key => $val)
{ {
try $tmparray=$this->get_substitutionarray_each_var_object($u,$outputlangs);
unset($tmparray['object_pass']);
unset($tmparray['object_pass_indatabase']);
complete_substitutions_array($tmparray, $outputlangs, $object, $user, "completesubstitutionarray_users");
// Call the ODTSubstitutionLine hook
$parameters=array('odfHandler'=>&$odfHandler,'file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs,'substitutionarray'=>&$tmparray,'line'=>$u);
$reshook=$hookmanager->executeHooks('ODTSubstitutionLine',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks
foreach($tmparray as $key => $val)
{ {
if(!is_array($val)) { try
$listlines->setVars($key, $val, true, 'UTF-8'); {
if(!is_array($val)) {
$listlines->setVars($key, $val, true, 'UTF-8');
}
}
catch(OdfException $e)
{
}
catch(SegmentException $e)
{
} }
} }
catch(OdfException $e) $listlines->merge();
{
}
catch(SegmentException $e)
{
}
} }
$listlines->merge(); $odfHandler->mergeSegment($listlines);
} }
$odfHandler->mergeSegment($listlines);
} }
catch(OdfException $e) catch(OdfException $e)
{ {