Avec quelques corrections pour que la lisibilité soit meilleur sous istea:
/**
* Export format : ISTEA
*
* @param array $objectLines data
* @param resource $exportFile [=null] File resource to export or print if null
* @return void
*/
public function exportISTEA($objectLines, $exportFile = null)
{
global $conf;
$separator = ';';
$end_line = "\n";
// parcours du tableau pour récupération des numéro de compte des tiers pour pouvoir les fournir dans la bonen ligne pour istea
$tiers=[];
foreach($objectLines as $line){
if( $line->subledger_account && substr($line->subledger_account,0,1)=='4'){
$tiers[$line->piece_num] = $line->subledger_label;
}
}
foreach ($objectLines as $line) {
$date_document = dol_print_date($line->doc_date, '%d/%m/%Y');
/*** préparation du champ label opération pour istea ***/
// retrécissement du champs car ISTEA n'affiche pas bcp de caractère.
$search = array('Paiement fournisseur ', 'Virement ', 'Paiement ');
$replace = array('Paiemt fourn ','Virt ','Paiemt ');
$label_operation = str_replace($search, $replace, $line->label_operation);
// encadrement par des ' si le champs contient le séparateur
$label_operation = preg_match('/'.$separator.'/', $label_operation) ? "'".$label_operation."'" : $label_operation;
$tab = array();
// export configurable
$tab[] = $line->piece_num; // colonne 1 : numéro de pièce ISTEA
$tab[] = $date_document; // colonne 2 : date ISTEA
$tab[] = $line->doc_ref; // colonne 3 : référence pièce ISTEA
$tab[] = array_key_exists($line->piece_num, $tiers)?$tiers[$line->piece_num]:''; // colonne 4 : nom tiers ISTEA
$tab[] = length_accountg($line->subledger_account?$line->subledger_account:$line->numero_compte); // colonne 5 : numéro de compte ISTEA
$tab[] = length_accountg($line->subledger_account?$line->subledger_account:$line->numero_compte); // colonne 6 : numéro de compte
$tab[] = length_accountg($line->subledger_account?$line->numero_compte:''); // G // colonne 7 : numéro de compte principal (divers paiement ou 40100000 ou 41100000)
$tab[] = ($line->doc_type == 'bank')?$label_operation:($line->subledger_account?$line->subledger_label:$line->label_compte); // colonne 8 : label de l'opération ISTEA
$tab[] = $label_operation; // colonne 9 : label de l'opération (semble non pris en compte par ISTEA)
$tab[] = price2num($line->debit); // colonne 10 : débit ISTEA
$tab[] = price2num($line->credit); // colonne 11 : crédit ISTEA
$tab[] = $line->code_journal; // colonne 12 : journal ISTEA
$output = mb_convert_encoding('"'.implode('"'.$separator.'"', $tab).'"'.$this->end_line,'ISO-8859-1');
if ($exportFile) {
fwrite($exportFile, $output);
} else {
print $output;
}
}
}
[istea.diff.zip|attachment](upload://ifRrQguZRAfyb0CB4sZ8dgHgTHH.zip) (1,7 Ko)