UNPKG

billoget-sdk

Version:

Official Node.js SDK for Billoget Public API - Complete budget, customer, and product management with approval workflows and UBS support

398 lines 9.26 kB
export interface ApiResponse<T> { data: T; pagination?: { page: number; limit: number; total: number; }; } export interface PaginationInfo { page: number; limit: number; total: number; hasMore: boolean; } export interface ApiError { message: string; error?: string; statusCode?: number; } export declare enum BudgetState { GENERATED = 0, APPROVED = 1, REJECTED = 2 } export interface BudgetItem { id: number; productId?: number; packageId?: number; quantity: number; unitPrice: number; subtotal: number; budgetId: number; product?: Product; package?: any; } export interface Budget { id: number; currency: string; issueDate: Date; expirationDate: Date; customerId: number; sellerId: number; businessId?: number; minimumPaymentToConfirm: number; state: BudgetState; subtotal: number; total: number; iva: number; preferenceId?: string; paymentUrl?: string; paymentData?: any; publicToken?: string; comments?: string; ubs_id?: string; ubs_version?: string; sign_track_id?: string; business_budget_id?: number; isArchived?: boolean; customer?: Customer; seller?: any; business?: any; items?: BudgetItem[]; createdAt?: Date; updatedAt?: Date; } export interface CreateBudgetItemDto { productId?: number; packageId?: number; quantity: number; unitPrice: number; } export interface CreateBudgetDto { currency: string; issueDate: Date; expirationDate: Date; customerId: number; sellerId: number; businessId?: number; minimumPaymentToConfirm: number; subtotal: number; total: number; iva: number; comments?: string; items: CreateBudgetItemDto[]; } export interface CreateBudgetRequest extends CreateBudgetDto { } export declare enum ApprovalStatus { PENDING = "pending", APPROVED = "approved", REJECTED = "rejected", CANCELLED = "cancelled" } export declare enum ApprovalAction { SUBMITTED = "submitted", APPROVED = "approved", REJECTED = "rejected", CANCELLED = "cancelled", RESUBMITTED = "resubmitted" } export interface BudgetApproval { id: number; budgetId: number; requestedBy: number; approvedBy?: number; status: ApprovalStatus; action: ApprovalAction; comments?: string; requestNotes?: string; reviewedAt?: Date; approvedAt?: Date; rejectedAt?: Date; createdAt: Date; updatedAt: Date; budget?: Budget; requestedByUser?: any; approvedByUser?: any; } export interface ApprovalConfig { id: number; businessId: number; requiresBudgetApproval: boolean; ownerCanApprove: boolean; adminCanApprove: boolean; approvalThreshold?: number; isActive: boolean; createdAt: Date; updatedAt: Date; } export interface BudgetApprover { id: number; businessId: number; userId: number; isActive: boolean; assignedBy: number; notes?: string; createdAt: Date; updatedAt: Date; user?: any; assignedByUser?: any; } export interface CreateApprovalConfigDto { requiresBudgetApproval: boolean; ownerCanApprove: boolean; adminCanApprove: boolean; approvalThreshold?: number; isActive?: boolean; } export interface SubmitApprovalDto { budgetId: number; requestNotes?: string; } export interface ProcessApprovalDto { action: "approve" | "reject"; comments?: string; } export interface AssignApproverDto { userId: number; notes?: string; } export interface PublicBudget { id: number; currency: string; issueDate: Date; expirationDate: Date; minimumPaymentToConfirm: number; state: BudgetState; subtotal: number; total: number; iva: number; paymentUrl?: string; publicToken: string; comments?: string; ubs_id?: string; ubs_version?: string; sign_track_id?: string; business_budget_id?: number; isArchived?: boolean; customer?: Pick<Customer, "firstName" | "lastName" | "email" | "phoneNumber">; seller?: { id: number; displayName: string; email: string; business?: { id: number; name: string; logo?: string; category?: string; description?: string; address?: string; alternativeAddress?: string; phone?: string; email?: string; website?: string; }; }; business?: { id: number; name: string; logo?: string; category?: string; description?: string; address?: string; alternativeAddress?: string; phone?: string; email?: string; website?: string; }; items?: Array<{ id: number; quantity: number; unitPrice: number; subtotal: number; product?: { id: number; productCode: string; description: string; category: string; price: number; type: ProductType; netContent?: number; netContentUnit?: string; sku?: string; barcode?: string; imageUrl?: string; isActive: boolean; }; package?: { name: string; description?: string; totalPrice?: number; }; }>; } export interface Customer { id: number; firstName: string; lastName: string; email?: string; phoneNumber?: string; dni?: number; cuit?: string; businessId: number; createdAt?: Date; updatedAt?: Date; } export interface CreateCustomerDto { firstName: string; lastName: string; email?: string; phoneNumber?: string; dni?: number; cuit?: string; businessId?: number; } export interface UpdateCustomerDto { firstName?: string; lastName?: string; email?: string; phoneNumber?: string; dni?: number; cuit?: string; } export declare enum ProductType { PRODUCT = "product", SERVICE = "service" } export interface Product { id: number; productCode: string; description: string; category: string; price: number; stock: number; netContent?: number; netContentUnit?: string; isActive: boolean; sku?: string; barcode?: string; imageUrl?: string; type: ProductType; businessId?: number; variants?: ProductVariant[]; createdAt: Date; updatedAt: Date; } export interface ProductVariant { id: number; name: string; description?: string; price: number; stock: number; sku?: string; barcode?: string; imageUrl?: string; attributes?: Record<string, any>; isActive: boolean; sortOrder: number; productId: number; product?: Product; createdAt: Date; updatedAt: Date; } export interface CreateProductDto { productCode: string; description: string; category: string; price: number; stock?: number; netContent?: number; netContentUnit?: string; isActive?: boolean; sku?: string; barcode?: string; imageUrl?: string; type?: ProductType; businessId?: number; } export interface CreateProductVariantDto { name: string; description?: string; price: number; stock?: number; sku?: string; barcode?: string; imageUrl?: string; attributes?: Record<string, any>; isActive?: boolean; sortOrder?: number; productId: number; } export interface CreateProductWithVariantsDto extends CreateProductDto { variants?: Omit<CreateProductVariantDto, "productId">[]; } export interface UpdateProductDto { productCode?: string; description?: string; category?: string; price?: number; stock?: number; netContent?: number; netContentUnit?: string; isActive?: boolean; sku?: string; barcode?: string; imageUrl?: string; type?: ProductType; } export interface UpdateProductVariantDto { name?: string; description?: string; price?: number; stock?: number; sku?: string; barcode?: string; imageUrl?: string; attributes?: Record<string, any>; isActive?: boolean; sortOrder?: number; productId?: number; } export interface PaginationQuery { page?: number; limit?: number; } export interface PaginatedResponse<T> { data: T[]; meta: { totalItems: number; itemCount: number; itemsPerPage: number; totalPages: number; currentPage: number; }; } export interface CustomerQuery extends PaginationQuery { search?: string; } export interface ProductQuery extends PaginationQuery { category?: string; search?: string; type?: ProductType; isActive?: boolean; } export interface BudgetQuery extends PaginationQuery { status?: BudgetState; customerId?: number; search?: string; startDate?: string; endDate?: string; } export interface ApprovalQuery extends PaginationQuery { status?: ApprovalStatus; budgetId?: number; userId?: number; } export * from "./query"; //# sourceMappingURL=index.d.ts.map