quickbooks-api
Version:
A modular TypeScript SDK for seamless integration with Intuit QuickBooks APIs. Provides robust authentication handling and future-ready foundation for accounting, payments, and commerce operations.
54 lines (47 loc) • 1.3 kB
text/typescript
// Imports
import { type Invoice, type Query, InvoiceFilters } from '../../../types/types';
import { BaseQueryBuilder } from '../common/base-query-builder';
/**
* The Invoice Query Builder
*/
export class InvoiceQueryBuilder extends BaseQueryBuilder<Invoice> {
/**
* Constructor
* @param endpoint - The Endpoint
* @param baseQuery - The Base Query
*/
constructor(endpoint: string, baseQuery: Query) {
super(endpoint, baseQuery);
}
/**
* Where Due Date
* @param date - The due date
* @returns The Query Builder
*/
public whereDueDate(date: Date): this {
this.whereClauses.push(`${InvoiceFilters.DueDate} = '${date.toISOString()}'`);
return this;
}
/**
* Where Customer ID
* @param customerId - The customer ID
* @returns The Query Builder
*/
public whereCustomerId(customerId: string): this {
this.whereClauses.push(`${InvoiceFilters.CustomerRef} = '${customerId}'`);
return this;
}
/**
* Where Status
* @param status - The status
* @returns The Query Builder
*/
public whereStatus(status: 'paid' | 'unpaid'): this {
// Setup the Operator
const operator = status === 'paid' ? '=' : '>';
// Add the Where Clause
this.whereClauses.push(`${InvoiceFilters.Balance} ${operator} '0'`);
// Return the Query Builder
return this;
}
}