diff --git a/api/common/Controller/Categorias.php b/api/common/Controller/Categorias.php index 48c2227..d19dc65 100644 --- a/api/common/Controller/Categorias.php +++ b/api/common/Controller/Categorias.php @@ -13,35 +13,35 @@ class Categorias { public function __invoke(Request $request, Response $response, Factory $factory, Service $service): Response { $categorias = $factory->find(Categoria::class)->many(); - array_walk($categorias, function(&$item) use ($service) { - $arr = $item->toArray(); - if ($item->cuentas()) { - $arr['cuentas'] = array_map(function($item) { - return $item->toArray(); - }, $item->cuentas()); - } - $maps = ['activo', 'pasivo', 'ganancia', 'perdida']; - foreach ($maps as $m) { - $p = $m . 's'; - $t = ucfirst($m); - $cuentas = $item->getCuentasOf($t); - if ($cuentas === false or $cuentas === null) { - $arr[$p] = 0; - continue; + if ($categorias !== null) { + array_walk($categorias, function(&$item) use ($service) { + $arr = $item->toArray(); + if ($item->cuentas()) { + $arr['cuentas'] = array_map(function($item) { + return $item->toArray(); + }, $item->cuentas()); } - $arr[$p] = array_reduce($cuentas, function($sum, $item) use($service) { - return $sum + $item->saldo($service, true); - }); - } - $item = $arr; - }); - if ($categorias) { - usort($categorias, function($a, $b) { - return strcmp($a['nombre'], $b['nombre']); - }); + $maps = ['activo', 'pasivo', 'ganancia', 'perdida']; + foreach ($maps as $m) { + $p = $m . 's'; + $t = ucfirst($m); + $cuentas = $item->getCuentasOf($t); + if ($cuentas === false or $cuentas === null) { + $arr[$p] = 0; + continue; + } + $arr[$p] = array_reduce($cuentas, function($sum, $item) use($service) { + return $sum + $item->saldo($service, true); + }); + } + $item = $arr; + }); + usort($categorias, function($a, $b) { + return strcmp($a['nombre'], $b['nombre']); + }); } $output = [ - 'categorias' => $categorias + 'categorias' => $categorias ]; return $this->withJson($response, $output); } diff --git a/api/common/Controller/TiposCategorias.php b/api/common/Controller/TiposCategorias.php index fa3b113..1d34274 100644 --- a/api/common/Controller/TiposCategorias.php +++ b/api/common/Controller/TiposCategorias.php @@ -13,31 +13,34 @@ class TiposCategorias { public function __invoke(Request $request, Response $response, Factory $factory, Service $service): Response { $tipos = $factory->find(TipoCategoria::class)->many(); - array_walk($tipos, function(&$item) use ($service) { - $arr = $item->toArray(); - $arr['categorias'] = array_map(function($item) { - return $item->toArray(); - }, $item->categorias()); - $arr['saldo'] = abs($item->saldo($service)); - $maps = ['activo', 'pasivo', 'ganancia', 'perdida']; - foreach ($maps as $m) { - $p = $m . 's'; - $t = ucfirst($m); - $cuentas = $item->getCuentasOf($t); - if ($cuentas === false or $cuentas === null) { - $arr[$p] = 0; - continue; + if ($tipos !== null) { + array_walk($tipos, function(&$item) use ($service) { + $arr = $item->toArray(); + $arr['categorias'] = $item->categorias(); + if ($arr['categorias'] !== null) { + $arr['categorias'] = array_map(function($item) { + return $item->toArray(); + }, $item->categorias()); } - $arr[$p] = array_reduce($cuentas, function($sum, $item) use($service) { - return $sum + $item->saldo($service, true); - }); - } - $item = $arr; - }); - if ($tipos) { - usort($tipos, function($a, $b) { - return strcmp($a['descripcion'], $b['descripcion']); - }); + $arr['saldo'] = abs($item->saldo($service)); + $maps = ['activo', 'pasivo', 'ganancia', 'perdida']; + foreach ($maps as $m) { + $p = $m . 's'; + $t = ucfirst($m); + $cuentas = $item->getCuentasOf($t); + if ($cuentas === false or $cuentas === null) { + $arr[$p] = 0; + continue; + } + $arr[$p] = array_reduce($cuentas, function($sum, $item) use($service) { + return $sum + $item->saldo($service, true); + }); + } + $item = $arr; + }); + usort($tipos, function($a, $b) { + return strcmp($a['descripcion'], $b['descripcion']); + }); } $output = [ 'tipos' => $tipos diff --git a/api/src/TipoCategoria.php b/api/src/TipoCategoria.php index c21b187..1f5d342 100644 --- a/api/src/TipoCategoria.php +++ b/api/src/TipoCategoria.php @@ -10,16 +10,16 @@ use Contabilidad\Common\Service\TiposCambios as Service; * @property int $activo */ class TipoCategoria extends Model { - public static $_table = 'tipos_categoria'; - protected static $fields = ['descripcion', 'activo']; + public static $_table = 'tipos_categoria'; + protected static $fields = ['descripcion', 'activo']; - protected $categorias; - public function categorias() { - if ($this->categorias === null) { - $this->categorias = $this->parentOf(Categoria::class, [Model::CHILD_KEY => 'tipo_id']); + protected $categorias; + public function categorias() { + if ($this->categorias === null) { + $this->categorias = $this->parentOf(Categoria::class, [Model::CHILD_KEY => 'tipo_id']); + } + return $this->categorias; } - return $this->categorias; - } public function getCuentasOf($tipo) { return $this->factory->find(Cuenta::class) @@ -37,7 +37,7 @@ class TipoCategoria extends Model { protected $saldo; public function saldo(Service $service = null) { if ($this->saldo === null) { - $this->saldo = array_reduce($this->categorias(), function($sum, $item) use ($service) { + $this->saldo = array_reduce($this->categorias() ?? [], function($sum, $item) use ($service) { return $sum + $item->saldo($service); }); }