moneyService->getUF($fecha); $tipoPago = $this->tipoPagoRepository->fetchByDescripcion('carta de resguardo'); $pago = $this->addPago(['fecha' => $fecha->format('Y-m-d'), 'valor' => $data['valor'] * $uf, 'uf' => $uf, 'tipo' => $tipoPago->id]); $credito = $this->creditoRepository->create([ 'valor' => $data['valor'], 'fecha' => $fecha->format('Y-m-d'), 'pago' => $pago->id ]); return $this->creditoRepository->save($credito); } 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'] = round(((float) $data['valor']) * $uf); } $filteredData = array_intersect_key($data, array_fill_keys([ 'fecha', 'uf', 'valor', 'banco' ], 0)); $credito->pago = $this->pagoRepository->edit($credito->pago, $filteredData); return $this->creditoRepository->edit($credito, $filteredData); } protected function addPago(array $data): Model\Venta\Pago { $pago = $this->pagoRepository->create($data); $pago = $this->pagoRepository->save($pago); $tipoEstado = $this->tipoEstadoPagoRepository->fetchByDescripcion('no pagado'); $data = [ 'pago' => $pago->id, 'fecha' => $pago->fecha->format('Y-m-d'), 'estado' => $tipoEstado->id ]; $estado = $this->estadoPagoRepository->create($data); $this->estadoPagoRepository->save($estado); return $pago; } }