Update subscriptions

This commit is contained in:
Juan Pablo Vial
2025-07-03 16:59:41 -04:00
parent cb0731b67d
commit 495581de8f
2 changed files with 14 additions and 23 deletions

View File

@ -318,18 +318,9 @@ class Toku extends Ideal\Service
} }
$results = []; $results = [];
switch ($type) { switch ($type) {
case 'customers':
try {
$results['subscription'] = $this->subscription->updateByCustomer($ids);
$results['invoice'] = $this->invoice->updateByCustomer($ids);
} catch (EmptyResult $exception) {
$this->logger->error($exception);
}
break;
case 'subscriptions': case 'subscriptions':
try { try {
$results['subscription'] = $this->subscription->update($ids); $results['subscription'] = $this->subscription->update($ids);
$results['invoice'] = $this->invoice->updateBySubscription($ids);
} catch (EmptyResult | EmptyResponse $exception) { } catch (EmptyResult | EmptyResponse $exception) {
$this->logger->error($exception); $this->logger->error($exception);
} }

View File

@ -120,10 +120,10 @@ class Subscription extends AbstractEndPoint
*/ */
public function update(array $idsData): array public function update(array $idsData): array
{ {
$toku_ids = array_column($idsData, 'toku_id'); $tokuIds = array_column($idsData, 'toku_id');
$old_pids = array_column($idsData, 'product_id'); $oldPids = array_column($idsData, 'product_id');
$placeholders = array_map(fn($id) => "id{$id}", array_keys($old_pids)); $placeholders = array_map(fn($id) => "id{$id}", array_keys($oldPids));
$placeholdersString = implode(', ', array_map(fn($id) => ":{$id}", $placeholders)); $placeholdersString = implode(', ', array_map(fn($id) => ":{$id}", $placeholders));
$query = $this->ventaService->getRepository()->getConnection()->getQueryBuilder() $query = $this->ventaService->getRepository()->getConnection()->getQueryBuilder()
->select('venta.id, CONCAT_WS("-", unidad.descripcion, CONCAT_WS("-", propietario.rut, propietario.dv)) AS old_pid') ->select('venta.id, CONCAT_WS("-", unidad.descripcion, CONCAT_WS("-", propietario.rut, propietario.dv)) AS old_pid')
@ -132,7 +132,7 @@ class Subscription extends AbstractEndPoint
->joined('JOIN propiedad_unidad pu ON pu.propiedad = venta.propiedad') ->joined('JOIN propiedad_unidad pu ON pu.propiedad = venta.propiedad')
->joined('JOIN unidad ON pu.unidad = unidad.id') ->joined('JOIN unidad ON pu.unidad = unidad.id')
->having("old_pid IN ({$placeholdersString})"); ->having("old_pid IN ({$placeholdersString})");
$values = array_combine($placeholders, $old_pids); $values = array_combine($placeholders, $oldPids);
try { try {
$statement = $this->ventaService->getRepository()->getConnection()->execute($query, $values); $statement = $this->ventaService->getRepository()->getConnection()->execute($query, $values);
$results = $statement->fetchAll(PDO::FETCH_ASSOC); $results = $statement->fetchAll(PDO::FETCH_ASSOC);
@ -143,30 +143,30 @@ class Subscription extends AbstractEndPoint
$accountKeys = $this->getAccountKey(array_column($results, 'id')); $accountKeys = $this->getAccountKey(array_column($results, 'id'));
$new_pids = []; $newPids = [];
$keys = []; $keys = [];
foreach ($results as $result) { foreach ($results as $result) {
$idx = array_search($result['old_pid'], $old_pids); $idx = array_search($result['old_pid'], $oldPids);
$new_pids[$idx] = $result['id']; $newPids[$idx] = $result['id'];
if (array_key_exists($result['id'], $accountKeys)) { if (array_key_exists($result['id'], $accountKeys)) {
$keys[$idx] = $accountKeys[$result['id']]; $keys[$idx] = $accountKeys[$result['id']];
} }
} }
$output = []; $output = [];
foreach ($toku_ids as $idx => $toku_id) { foreach ($tokuIds as $idx => $tokuId) {
if (!isset($new_pids[$idx])) { if (!isset($newPids[$idx])) {
continue; continue;
} }
$data = [ $data = [
'product_id' => $new_pids[$idx], 'product_id' => $newPids[$idx],
]; ];
if (!$this->edit($toku_id, $data, array_key_exists($idx, $keys) ? $keys[$idx] : null)) { if (!$this->edit($tokuId, $data, array_key_exists($idx, $keys) ? $keys[$idx] : null)) {
continue; continue;
} }
$output[] = [ $output[] = [
'toku_id' => $toku_id, 'toku_id' => $tokuId,
'old_pid' => $old_pids[$idx], 'old_pid' => $oldPids[$idx],
'product_id' => $new_pids[$idx], 'product_id' => $newPids[$idx],
'account_key' => array_key_exists($idx, $keys) ? $keys[$idx] : null 'account_key' => array_key_exists($idx, $keys) ? $keys[$idx] : null
]; ];
} }