Hotfix: edi/load
gitea/hedera-web/pipeline/head There was a failure building this commit
Details
gitea/hedera-web/pipeline/head There was a failure building this commit
Details
This commit is contained in:
parent
a130163617
commit
81ba131375
|
@ -124,125 +124,7 @@ class Load extends Edi\Method {
|
||||||
|
|
||||||
foreach ($unhs as $unh)
|
foreach ($unhs as $unh)
|
||||||
foreach ($lins = $unh->childs['LIN'] as $lin) {
|
foreach ($lins = $unh->childs['LIN'] as $lin) {
|
||||||
$ediValues = ['mailId' => $mailId];
|
$this->processMessage($db, $unh, $lin, $mailId);
|
||||||
|
|
||||||
// Gets the exchange params
|
|
||||||
|
|
||||||
$this->paramsRes->data_seek(0);
|
|
||||||
|
|
||||||
while ($row = $this->paramsRes->fetch_object()) {
|
|
||||||
switch ($row->type) {
|
|
||||||
case 'INTEGER':
|
|
||||||
$type = Type::INTEGER;
|
|
||||||
break;
|
|
||||||
case 'DOUBLE':
|
|
||||||
$type = Type::DOUBLE;
|
|
||||||
break;
|
|
||||||
case 'DATE':
|
|
||||||
$type = Type::DATE;
|
|
||||||
break;
|
|
||||||
case 'TIME':
|
|
||||||
$type = Type::TIME;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
$type = Type::STRING;
|
|
||||||
}
|
|
||||||
|
|
||||||
$value = $lin->getValue(
|
|
||||||
$row->name, $row->position, $type, $row->subname);
|
|
||||||
|
|
||||||
if (!isset($value) && $row->required)
|
|
||||||
throw new Exception('Missing required parameter: '. $row->code);
|
|
||||||
|
|
||||||
$ediValues[$row->code] = $value;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Gets the exchange features
|
|
||||||
|
|
||||||
$res = $db->query(
|
|
||||||
'SELECT presentation_order, feature
|
|
||||||
FROM item_feature
|
|
||||||
WHERE item_id = #ref
|
|
||||||
AND entry_date <= CURDATE()
|
|
||||||
AND(expiry_date IS NULL OR expiry_date >= CURDATE())
|
|
||||||
GROUP BY presentation_order'
|
|
||||||
,$ediValues
|
|
||||||
);
|
|
||||||
|
|
||||||
if ($res)
|
|
||||||
while ($row = $res->fetch_object()) {
|
|
||||||
$value = $lin->getValue('IMD', 2, Type::INTEGER, $row->feature);
|
|
||||||
$ediValues['s'.$row->presentation_order] = $value;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
throw new Exception('Can\'t get the item features.');
|
|
||||||
|
|
||||||
for ($i = 1; $i <= 6; $i++)
|
|
||||||
if (!isset($ediValues['s'.$i]))
|
|
||||||
$ediValues['s'.$i] = NULL;
|
|
||||||
|
|
||||||
// Adds the exchange to the Database
|
|
||||||
|
|
||||||
$insertValues = [];
|
|
||||||
foreach ($ediValues as $code => $value)
|
|
||||||
if (isset($this->columns[$code]) && !empty($value))
|
|
||||||
$insertValues[$code] = $value;
|
|
||||||
|
|
||||||
$deliveryNumber = nullIf($ediValues, 'deliveryNumber');
|
|
||||||
$fec = nullIf($ediValues, 'fec');
|
|
||||||
$year = isset($fec) ? $fec->format('Y') : null;
|
|
||||||
|
|
||||||
$insertValues['entryYear'] = $year;
|
|
||||||
|
|
||||||
$isNew = false;
|
|
||||||
$update = false;
|
|
||||||
|
|
||||||
try {
|
|
||||||
$db->insert('ekt', $insertValues);
|
|
||||||
$ektFk = $db->lastInsertId();
|
|
||||||
$isNew = true;
|
|
||||||
} catch (Exception $e) {
|
|
||||||
if ($e->getCode() == 1062)
|
|
||||||
$update = true;
|
|
||||||
else
|
|
||||||
throw $e;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($update && isset($year) && isset($deliveryNumber)) {
|
|
||||||
$ektFk = $db->getValue(
|
|
||||||
"SELECT id
|
|
||||||
FROM ekt
|
|
||||||
WHERE deliveryNumber = #
|
|
||||||
AND entryYear = #",
|
|
||||||
[$deliveryNumber, $year]
|
|
||||||
);
|
|
||||||
$canUpdate = $ektFk && $db->getValue(
|
|
||||||
"SELECT COUNT(*) = 0
|
|
||||||
FROM ekt t
|
|
||||||
JOIN `exchange` b ON b.ektFk = t.id
|
|
||||||
JOIN exchangeConfig c
|
|
||||||
WHERE t.id = #
|
|
||||||
AND b.typeFk != c.presaleFk",
|
|
||||||
[$ektFk]
|
|
||||||
);
|
|
||||||
|
|
||||||
if ($canUpdate) {
|
|
||||||
$db->update('ekt',
|
|
||||||
$insertValues,
|
|
||||||
['id' => $ektFk]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$db->call('ekt_refresh', [$ektFk, $mailId]);
|
|
||||||
if ($isNew) $db->call('ekt_load', [$ektFk]);
|
|
||||||
|
|
||||||
$db->insert('exchange', [
|
|
||||||
'mailFk' => $mailId,
|
|
||||||
'typeFk' => $ediValues['bgm'],
|
|
||||||
'ektFk' => $ektFk
|
|
||||||
]);
|
|
||||||
|
|
||||||
$count++;
|
$count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -285,6 +167,132 @@ class Load extends Edi\Method {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function processMessage($db, $unh, $lin, $mailId) {
|
||||||
|
$ediValues = ['mailId' => $mailId];
|
||||||
|
|
||||||
|
// Gets the exchange params
|
||||||
|
|
||||||
|
$this->paramsRes->data_seek(0);
|
||||||
|
|
||||||
|
while ($row = $this->paramsRes->fetch_object()) {
|
||||||
|
switch ($row->type) {
|
||||||
|
case 'INTEGER':
|
||||||
|
$type = Type::INTEGER;
|
||||||
|
break;
|
||||||
|
case 'DOUBLE':
|
||||||
|
$type = Type::DOUBLE;
|
||||||
|
break;
|
||||||
|
case 'DATE':
|
||||||
|
$type = Type::DATE;
|
||||||
|
break;
|
||||||
|
case 'TIME':
|
||||||
|
$type = Type::TIME;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
$type = Type::STRING;
|
||||||
|
}
|
||||||
|
|
||||||
|
$value = $lin->getValue(
|
||||||
|
$row->name, $row->position, $type, $row->subname);
|
||||||
|
|
||||||
|
if (!isset($value) && $row->required)
|
||||||
|
throw new Exception('Missing required parameter: '. $row->code);
|
||||||
|
|
||||||
|
$ediValues[$row->code] = $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Gets the exchange features
|
||||||
|
|
||||||
|
$res = $db->query(
|
||||||
|
'SELECT presentation_order, feature
|
||||||
|
FROM item_feature
|
||||||
|
WHERE item_id = #ref
|
||||||
|
AND entry_date <= CURDATE()
|
||||||
|
AND(expiry_date IS NULL OR expiry_date >= CURDATE())
|
||||||
|
GROUP BY presentation_order'
|
||||||
|
,$ediValues
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($res)
|
||||||
|
while ($row = $res->fetch_object()) {
|
||||||
|
$value = $lin->getValue('IMD', 2, Type::INTEGER, $row->feature);
|
||||||
|
$ediValues['s'.$row->presentation_order] = $value;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
throw new Exception('Can\'t get the item features.');
|
||||||
|
|
||||||
|
for ($i = 1; $i <= 6; $i++)
|
||||||
|
if (!isset($ediValues['s'.$i]))
|
||||||
|
$ediValues['s'.$i] = NULL;
|
||||||
|
|
||||||
|
// Adds the exchange to the Database
|
||||||
|
|
||||||
|
$insertValues = [];
|
||||||
|
foreach ($ediValues as $code => $value)
|
||||||
|
if (isset($this->columns[$code]) && !empty($value))
|
||||||
|
$insertValues[$code] = $value;
|
||||||
|
|
||||||
|
$deliveryNumber = nullIf($ediValues, 'deliveryNumber');
|
||||||
|
$fec = nullIf($ediValues, 'fec');
|
||||||
|
$year = isset($fec) ? $fec->format('Y') : null;
|
||||||
|
|
||||||
|
$insertValues['entryYear'] = $year;
|
||||||
|
|
||||||
|
$isNew = false;
|
||||||
|
$update = false;
|
||||||
|
|
||||||
|
try {
|
||||||
|
$db->insert('ekt', $insertValues);
|
||||||
|
$ektFk = $db->lastInsertId();
|
||||||
|
$isNew = true;
|
||||||
|
} catch (Exception $e) {
|
||||||
|
if ($e->getCode() == 1062)
|
||||||
|
$update = true;
|
||||||
|
else
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($update && isset($year) && isset($deliveryNumber)) {
|
||||||
|
$ektFk = $db->getValue(
|
||||||
|
"SELECT id
|
||||||
|
FROM ekt
|
||||||
|
WHERE deliveryNumber = #
|
||||||
|
AND entryYear = #",
|
||||||
|
[$deliveryNumber, $year]
|
||||||
|
);
|
||||||
|
$canUpdate = $ektFk && $db->getValue(
|
||||||
|
"SELECT COUNT(*) = 0
|
||||||
|
FROM ekt t
|
||||||
|
JOIN `exchange` b ON b.ektFk = t.id
|
||||||
|
JOIN exchangeConfig c
|
||||||
|
WHERE t.id = #
|
||||||
|
AND b.typeFk != c.presaleFk",
|
||||||
|
[$ektFk]
|
||||||
|
);
|
||||||
|
|
||||||
|
if ($canUpdate) {
|
||||||
|
$db->update('ekt',
|
||||||
|
$insertValues,
|
||||||
|
['id' => $ektFk]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$db->call('ekt_refresh', [$ektFk, $mailId]);
|
||||||
|
|
||||||
|
try {
|
||||||
|
if ($isNew) $db->call('ekt_load', [$ektFk]);
|
||||||
|
} catch (Exception $e) {
|
||||||
|
error_log("CALL ekt_load($ektFk): {$e->getMessage()}");
|
||||||
|
}
|
||||||
|
|
||||||
|
$db->insert('exchange', [
|
||||||
|
'mailFk' => $mailId,
|
||||||
|
'typeFk' => $ediValues['bgm'],
|
||||||
|
'ektFk' => $ektFk
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
function imapFindParts(&$part, &$matchTypes, $section, &$result) {
|
function imapFindParts(&$part, &$matchTypes, $section, &$result) {
|
||||||
if (in_array($part->type, $matchTypes)) {
|
if (in_array($part->type, $matchTypes)) {
|
||||||
if (count($section) > 0)
|
if (count($section) > 0)
|
||||||
|
|
Loading…
Reference in New Issue