import { DomainEntity, type Percentage, type UniqueID } from "@repo/rdx-ddd"; import { type Maybe, Result } from "@repo/rdx-utils"; import type { InvoiceAmount } from "../../common"; export type IssuedInvoiceTaxProps = { taxableAmount: InvoiceAmount; ivaCode: string; ivaPercentage: Percentage; ivaAmount: InvoiceAmount; recCode: Maybe; recPercentage: Maybe; recAmount: InvoiceAmount; retentionCode: Maybe; retentionPercentage: Maybe; retentionAmount: InvoiceAmount; taxesAmount: InvoiceAmount; }; export class IssuedInvoiceTax extends DomainEntity { public static create( props: IssuedInvoiceTaxProps, id?: UniqueID ): Result { return Result.ok(new IssuedInvoiceTax(props, id)); } public get taxableAmount(): InvoiceAmount { return this.props.taxableAmount; } public get ivaCode(): string { return this.props.ivaCode; } public get ivaPercentage(): Percentage { return this.props.ivaPercentage; } public get ivaAmount(): InvoiceAmount { return this.props.ivaAmount; } public get recCode(): Maybe { return this.props.recCode; } public get recPercentage(): Maybe { return this.props.recPercentage; } public get recAmount(): InvoiceAmount { return this.props.recAmount; } public get retentionCode(): Maybe { return this.props.retentionCode; } public get retentionPercentage(): Maybe { return this.props.retentionPercentage; } public get retentionAmount(): InvoiceAmount { return this.props.retentionAmount; } public get taxesAmount(): InvoiceAmount { return this.props.taxesAmount; } public getProps(): IssuedInvoiceTaxProps { return this.props; } }