new Ep detalle servicio

This commit is contained in:
2026-01-16 13:20:47 -06:00
parent 6589b57393
commit 19dacc38ae
3 changed files with 42 additions and 3 deletions
@@ -1,9 +1,20 @@
import { Controller } from '@nestjs/common';
import { Body, Controller, Get, Post } from '@nestjs/common';
import { DetalleServicioService } from './detalle_servicio.service';
import { FindReciboByRangeDto } from 'src/recibo/dto/create-recibo.dto';
@Controller('detalle-servicio')
export class DetalleServicioController {
constructor(private readonly detalleServicioService: DetalleServicioService) {}
@Get()
findAll(){
return this.detalleServicioService.findAll()
}
@Post('rango')
async findByDateRange(@Body() data: FindReciboByRangeDto) {
return this.detalleServicioService.findByDateRange(data.desde, data.hasta);
}
}
@@ -1,8 +1,11 @@
import { Module } from '@nestjs/common';
import { DetalleServicioService } from './detalle_servicio.service';
import { DetalleServicioController } from './detalle_servicio.controller';
import { TypeOrmModule } from '@nestjs/typeorm';
import { DetalleServicio } from './entities/detalle_servicio.entity';
@Module({
imports:[TypeOrmModule.forFeature([DetalleServicio])],
controllers: [DetalleServicioController],
providers: [DetalleServicioService],
exports:[DetalleServicioService]
@@ -1,13 +1,38 @@
import { Injectable } from '@nestjs/common';
import { DetalleServicio } from './entities/detalle_servicio.entity';
import { EntityManager } from 'typeorm';
import { CreateDetalleServicioDto } from './dto/create-detalle_servicio.dto';
import { EntityManager, Repository } from 'typeorm';
import { InjectRepository } from '@nestjs/typeorm';
@Injectable()
export class DetalleServicioService {
constructor(
@InjectRepository(DetalleServicio)
private readonly detalleServicioRepository: Repository<DetalleServicio>,
) {}
async Create(data, manager: EntityManager) {
const repo = manager.getRepository(DetalleServicio);
const details = repo.create(data);
return await repo.save(details);
}
findAll(){
return this.detalleServicioRepository.find({take:100})
}
async findByDateRange(fechaInicio: string, fechaFin: string) {
return this.detalleServicioRepository
.createQueryBuilder('detalle')
.innerJoin('detalle.servicio', 'servicio')
.select('servicio.id_servicio', 'id_servicio')
.addSelect('servicio.servicio', 'servicio')
.addSelect('COUNT(detalle.monto)', 'total')
.where('detalle.fecha_operacion >= :inicio', { inicio: fechaInicio })
.andWhere('detalle.fecha_operacion < DATE_ADD(:fin, INTERVAL 1 DAY)', {
fin: fechaFin,
})
.groupBy('servicio.id_servicio')
.addGroupBy('servicio.servicio')
.getRawMany();
}
}