feat: implement ARCA integration architecture including credential, fiscal profile, and invoice models, services, and onboarding flows
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
import { IInvoiceDocument } from "./Invoices.Adapter.Mongoose";
|
||||
|
||||
export enum INVOICE_TYPE {
|
||||
FACTURA_C = "FACTURA_C",
|
||||
}
|
||||
|
||||
export enum INVOICE_STATUS {
|
||||
PENDING_ARCA = "PENDING_ARCA",
|
||||
APPROVED = "APPROVED",
|
||||
PENDING_VERIFICATION = "PENDING_VERIFICATION",
|
||||
REJECTED = "REJECTED",
|
||||
FAILED = "FAILED",
|
||||
}
|
||||
|
||||
export type CreateInvoiceFromCashMovementParams = {
|
||||
cashMovementId: string;
|
||||
sessionUser: string;
|
||||
};
|
||||
|
||||
export type FindInvoicesParams = {
|
||||
id?: string;
|
||||
cashMovementId?: string;
|
||||
companyId?: string;
|
||||
status?: INVOICE_STATUS;
|
||||
sessionUser?: string;
|
||||
};
|
||||
|
||||
export type CreateInvoiceParams = {
|
||||
cashMovementId: string;
|
||||
companyId: string;
|
||||
clientId?: string;
|
||||
paymentId?: string;
|
||||
clientAccountMovementId?: string;
|
||||
appointmentId?: string;
|
||||
amount: number;
|
||||
type: INVOICE_TYPE;
|
||||
status: INVOICE_STATUS;
|
||||
cae?: string;
|
||||
caeExpiresAt?: Date;
|
||||
pointOfSale?: number;
|
||||
voucherNumber?: number;
|
||||
voucherType?: string;
|
||||
arcaErrorCode?: string;
|
||||
arcaErrorMessage?: string;
|
||||
createdAt: Date;
|
||||
updatedAt: Date;
|
||||
};
|
||||
|
||||
export interface IInvoice {
|
||||
id?: string;
|
||||
cashMovementId: string;
|
||||
companyId: string;
|
||||
clientId?: string;
|
||||
paymentId?: string;
|
||||
clientAccountMovementId?: string;
|
||||
appointmentId?: string;
|
||||
amount: number;
|
||||
type: INVOICE_TYPE;
|
||||
status: INVOICE_STATUS;
|
||||
cae?: string;
|
||||
caeExpiresAt?: Date;
|
||||
pointOfSale?: number;
|
||||
voucherNumber?: number;
|
||||
voucherType?: string;
|
||||
arcaErrorCode?: string;
|
||||
arcaErrorMessage?: string;
|
||||
createdAt: Date;
|
||||
updatedAt: Date;
|
||||
}
|
||||
|
||||
export interface IInvoicesAdapter {
|
||||
create(data: CreateInvoiceParams): Promise<IInvoice>;
|
||||
find(filters: FindInvoicesParams): Promise<IInvoice[]>;
|
||||
findOne(filters: FindInvoicesParams): Promise<IInvoiceDocument | null>;
|
||||
}
|
||||
|
||||
export interface IInvoicesManager {
|
||||
invoices: IInvoicesAdapter;
|
||||
createFromCashMovement(data: CreateInvoiceFromCashMovementParams): Promise<IInvoice>;
|
||||
find(data: FindInvoicesParams): Promise<IInvoice[]>;
|
||||
}
|
||||
Reference in New Issue
Block a user