Uecko_ERP/apps/server/archive/contexts/customer-billing/domain/entities/tax-collection.ts
2025-05-09 12:45:32 +02:00

34 lines
795 B
TypeScript

import { Slug } from "@/core/common/domain";
import { Collection } from "@repo/rdx-utils";
import { Tax } from "./tax";
export class TaxCollection extends Collection<Tax> {
constructor(items: Tax[] = []) {
super(items);
}
/**
Agrega un impuesto a la colección garantizando que el slug sea único. */
add(tax: Tax): void {
if (this.exists(tax.slug)) {
throw new Error(`(El impuesto con slug "${tax.slug.toString()}" ya existe.`);
}
this.add(tax);
}
/**
Verifica si un slug ya existe en la colección. */
exists(slug: Slug): boolean {
return this.some((tax) => tax.slug.equals(slug));
}
/**
Encuentra un impuesto por su slug. */
findBySlug(slug: Slug): Tax | undefined {
return this.find((tax) => tax.slug.equals(slug));
}
}