import type { Tax } from "@erp/core/api"; import { ValueObject } from "@repo/rdx-ddd"; import { type Maybe, Result } from "@repo/rdx-utils"; export type CustomerTaxesProps = { iva: Maybe; // si existe rec: Maybe; // si existe retention: Maybe; // si existe }; export interface ICustomerItemTaxes { iva: Maybe; // si existe rec: Maybe; // si existe retention: Maybe; // si existe toKey(): string; // Clave para representar un trĂ­o. } export class CustomerTaxes extends ValueObject implements ICustomerItemTaxes { static create(props: CustomerTaxesProps) { return Result.ok(new CustomerTaxes(props)); } toKey(): string { const ivaCode = this.props.iva.match( (iva) => iva.code, () => "#" ); const recCode = this.props.rec.match( (rec) => rec.code, () => "#" ); const retentionCode = this.props.retention.match( (retention) => retention.code, () => "#" ); return `${ivaCode};${recCode};${retentionCode}`; } get iva(): Maybe { return this.props.iva; } get rec(): Maybe { return this.props.rec; } get retention(): Maybe { return this.props.retention; } getProps() { return this.props; } toPrimitive() { return this.getProps(); } }