setTable('movimientos_detalles'); } public function create(?array $data = null): Model\Contabilidad\Movimiento\Detalle { $map = (new Implement\Repository\MapperParser(['detalle'])) ->register('movimiento_id', (new Implement\Repository\Mapper()) ->setProperty('movimiento') ->setFunction(function(array $data) { return $this->movimientoRepository->fetchById($data['movimiento_id']); })) ->register('centro_costo_id', (new Implement\Repository\Mapper()) ->setProperty('centroCosto') ->setFunction(function(array $data) { return $this->centroCostoRepository->fetchById($data['centro_costo_id']); })); return $this->parseData(new Model\Contabilidad\Movimiento\Detalle(), $data, $map); } public function save(Define\Model $model): Model\Contabilidad\Movimiento\Detalle { $this->saveNew( ['movimiento_id', 'centro_costo_id', 'detalle'], [$model->movimiento->id, $model->centroCosto->id, $model->detalles] ); return $model; } public function edit(Define\Model $model, array $new_data): Model\Contabilidad\Movimiento\Detalle { return $this->update($model, ['movimiento_id', 'centro_costo_id', 'detalle'], $new_data); } public function fetchByMovimiento(int $movimiento_id): Model\Contabilidad\Movimiento\Detalle { $query = $this->connection->getQueryBuilder() ->select() ->from($this->getTable()) ->where('movimiento_id = ?'); return $this->fetchOne($query, [$movimiento_id]); } protected function getKey(): string { return 'movimiento_id'; } }