setTable('pago'); } public function create(?array $data = null): Define\Model { $map = (new Implement\Repository\MapperParser(['valor', 'identificador', 'uf', 'pagador'])) ->register('banco', (new Implement\Repository\Mapper()) ->setFunction(function($data) { if ($data['banco'] === null or $data['banco'] === 0) { return null; } return $this->bancoRepository->fetchById($data['banco']); })) ->register('tipo', (new Implement\Repository\Mapper()) ->setProperty('tipoPago') ->setFunction(function($data) { if ($data['tipo'] === null) { return null; } return $this->tipoPagoRepository->fetchById($data['tipo']); })) ->register('fecha', (new Implement\Repository\Mapper\DateTime('fecha')) ->setDefault(null)) ->register('asociado', (new Implement\Repository\Mapper()) ->setFunction(function($data) { if ($data['asociado'] === null) { return null; } return $this->fetchById($data['asociado']); })); return $this->parseData(new Model\Venta\Pago(), $data, $map); } public function save(Define\Model $model): Define\Model { $model->id = $this->saveNew( ['valor', 'banco', 'tipo', 'identificador', 'fecha', 'uf', 'pagador', 'asociado'], [$model->valor, $model?->banco->id, $model?->tipoPago->id, $model?->identificador, $model?->fecha->format('Y-m-d H:i:s'), $model?->uf, $model?->pagador, $model?->asociado->id] ); return $model; } public function edit(Define\Model $model, array $new_data): Define\Model { return $this->update($model, ['valor', 'banco', 'tipo', 'identificador', 'fecha', 'uf', 'pagador', 'asociado'], $new_data); } }