creditoRepository->fetchByVenta($venta_id); } catch (EmptyResult $exception) { throw new Read(__CLASS__, $exception); } } /** * @throws Exception */ public function add(array $data): Model\Venta\Credito { $fecha = new DateTimeImmutable($data['fecha']); $uf = $this->valorService->clean($data['uf']) ?? $this->moneyService->getUF($fecha); $tipoPago = $this->tipoPagoRepository->fetchByDescripcion('carta de resguardo'); $valor = $this->valorService->clean($data['valor']); $pago = $this->pagoService->add([ 'fecha' => $fecha->format('Y-m-d'), 'valor' => $valor * $uf, 'uf' => $uf, 'tipo' => $tipoPago->id ]); $credito = $this->creditoRepository->create([ 'valor' => $valor, 'fecha' => $fecha->format('Y-m-d'), 'pago' => $pago->id ]); return $this->creditoRepository->save($credito); } /** * @throws Exception */ public function edit(Model\Venta\Credito $credito, array $data): Model\Venta\Credito { $uf = $this->moneyService->getUF($credito->pago->fecha); if (array_key_exists('fecha', $data)) { $fecha = new DateTimeImmutable($data['fecha']); $data['fecha'] = $fecha->format('Y-m-d'); $uf = $this->moneyService->getUF($fecha); $data['uf'] = $uf; } if (array_key_exists('valor', $data)) { $data['valor'] = $this->valorService->clean($data['valor']); $valorPago = round($data['valor'] * $uf); } $filteredData = array_intersect_key($data, array_flip([ 'fecha', 'uf', 'valor', 'banco' ])); $filteredDataPago = $filteredData; if (isset($valorPago)) { $filteredDataPago['valor'] = $valorPago; } $credito->pago = $this->pagoService->edit($credito->pago, $filteredDataPago); return $this->creditoRepository->edit($credito, $filteredData); } }