import { Module } from '@nestjs/common';
import { AuditModule } from 'src/audit/audit.module';
import { winstonConfig } from '../common/logger/winston.config';
import { PrismaModule } from '../prisma/prisma.module';
import { ContabilidadModule } from '../contabilidad/contabilidad.module';
import { VendedoresCobradoresModule } from '../vendedores-cobradores/vendedores-cobradores.module';
import { LotesModule } from '../lotes/lotes.module';
import { ReversionCajaModule } from '../tesoreria/reversion-caja.module';
import { AlertasEmpresaModule } from '../alertas-empresa/alertas-empresa.module';
import { ReversionRemisionModule } from '../nota-remision/reversion-remision.module';
import { MiddlewareSifenController } from './middleware-sifen.controller';
import { MiddlewareSifenService } from './middleware-sifen.service';

@Module({
  // LotesModule: la cancelación SIFEN (ECAN/EINU) debe devolver los lotes que la
  // venta consumió por FIFO, igual que hace la anulación directa de facturas.
  imports: [
    PrismaModule,
    AuditModule,
    ContabilidadModule,
    VendedoresCobradoresModule,
    LotesModule,
    ReversionCajaModule,
    AlertasEmpresaModule,
    ReversionRemisionModule,
  ],
  controllers: [MiddlewareSifenController],
  providers: [MiddlewareSifenService],
  exports: [MiddlewareSifenService],
})
export class MiddlewareSifenModule {}
