erp-construccion-backend/dist/modules/contracts/services/subcontractor.service.d.ts

63 lines
2.6 KiB
TypeScript

/**
* SubcontractorService - Servicio de gestión de subcontratistas
*
* Catálogo de subcontratistas con evaluaciones.
*
* @module Contracts
*/
import { Repository } from 'typeorm';
import { Subcontractor, SubcontractorStatus, SubcontractorSpecialty } from '../entities/subcontractor.entity';
import { ServiceContext, PaginatedResult } from '../../../shared/services/base.service';
export interface CreateSubcontractorDto {
businessName: string;
tradeName?: string;
rfc: string;
address?: string;
phone?: string;
email?: string;
contactName?: string;
contactPhone?: string;
primarySpecialty: SubcontractorSpecialty;
secondarySpecialties?: string[];
bankName?: string;
bankAccount?: string;
clabe?: string;
notes?: string;
}
export interface UpdateSubcontractorDto {
tradeName?: string;
address?: string;
phone?: string;
email?: string;
contactName?: string;
contactPhone?: string;
secondarySpecialties?: string[];
bankName?: string;
bankAccount?: string;
clabe?: string;
notes?: string;
}
export interface SubcontractorFilters {
specialty?: SubcontractorSpecialty;
status?: SubcontractorStatus;
search?: string;
minRating?: number;
}
export declare class SubcontractorService {
private readonly subcontractorRepository;
constructor(subcontractorRepository: Repository<Subcontractor>);
private generateCode;
findWithFilters(ctx: ServiceContext, filters?: SubcontractorFilters, page?: number, limit?: number): Promise<PaginatedResult<Subcontractor>>;
findById(ctx: ServiceContext, id: string): Promise<Subcontractor | null>;
findByRfc(ctx: ServiceContext, rfc: string): Promise<Subcontractor | null>;
create(ctx: ServiceContext, dto: CreateSubcontractorDto): Promise<Subcontractor>;
update(ctx: ServiceContext, id: string, dto: UpdateSubcontractorDto): Promise<Subcontractor | null>;
updateRating(ctx: ServiceContext, id: string, rating: number): Promise<Subcontractor | null>;
incrementContracts(ctx: ServiceContext, id: string, completed?: boolean): Promise<Subcontractor | null>;
incrementIncidents(ctx: ServiceContext, id: string): Promise<Subcontractor | null>;
deactivate(ctx: ServiceContext, id: string): Promise<Subcontractor | null>;
blacklist(ctx: ServiceContext, id: string, reason: string): Promise<Subcontractor | null>;
softDelete(ctx: ServiceContext, id: string): Promise<boolean>;
getBySpecialty(ctx: ServiceContext, specialty: SubcontractorSpecialty): Promise<Subcontractor[]>;
}
//# sourceMappingURL=subcontractor.service.d.ts.map