77 lines
1.7 KiB
PHP
77 lines
1.7 KiB
PHP
<?php
|
|
|
|
namespace App\Jobs;
|
|
|
|
use App\Models\XmlTraceability;
|
|
|
|
class XmlTracaReader extends XmlJobs
|
|
{
|
|
/**
|
|
* Le disque a utiliser
|
|
*
|
|
* @var string
|
|
*/
|
|
protected $disk = 'tracabilite';
|
|
|
|
/**
|
|
* Les colonnes a prendre dans le flux.
|
|
*
|
|
* @var array
|
|
*/
|
|
protected $takeColumns = [
|
|
'NO_LOT' => 'lot_code',
|
|
'NO_OPA' => 'opa_code',
|
|
'NO_ELEV' => 'inuav_code',
|
|
'LOTABA' => 'abatage_code',
|
|
'DATABA' => 'abatage_date',
|
|
'CODE_TRACA_PROD_ELAB' => 'produit_elab'
|
|
];
|
|
|
|
/**
|
|
* Les données sont encapsulés dans le xml
|
|
*
|
|
* @var boolean
|
|
*/
|
|
protected $encapsulate = true;
|
|
|
|
/**
|
|
* Les champs qui peuvents être null
|
|
*
|
|
* @var array
|
|
*/
|
|
protected $nullableFields = [
|
|
'opa_code', 'inuav_code',
|
|
'abatage_code', 'abatage_date'
|
|
];
|
|
|
|
/**
|
|
* La clé unique pour la table
|
|
*
|
|
* @var array
|
|
*/
|
|
protected $uniqueKeyField = ['lot_code'];
|
|
|
|
/**
|
|
* Execute the job.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function handle()
|
|
{
|
|
$this->parseData(
|
|
'ENRLOT',
|
|
XmlTraceability::class,
|
|
// phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundInExtendedClassBeforeLastUsed
|
|
function (\SimpleXMLElement $xmlContent, array &$line) {
|
|
$abatage_date = \explode('.', $line['abatage_date']);
|
|
// * Inverser année et jours a cause du flux
|
|
$line['abatage_date'] = \sprintf(
|
|
'20%s/%s/%s',
|
|
$abatage_date[2],
|
|
$abatage_date[1],
|
|
$abatage_date[0]
|
|
);
|
|
}
|
|
);
|
|
}
|
|
}
|