mirror of
https://github.com/felipegcoutinho/openmonetis.git
synced 2026-05-09 19:01:47 +00:00
57 lines
1.4 KiB
TypeScript
57 lines
1.4 KiB
TypeScript
import { and, eq, ilike, isNull, ne, not, or } from "drizzle-orm";
|
|
import { contas, lancamentos } from "@/db/schema";
|
|
import {
|
|
ACCOUNT_AUTO_INVOICE_NOTE_PREFIX,
|
|
INITIAL_BALANCE_NOTE,
|
|
} from "@/lib/contas/constants";
|
|
|
|
type DashboardAdminFiltersParams = {
|
|
userId: string;
|
|
adminPagadorId: string;
|
|
};
|
|
|
|
type DashboardAdminPeriodFiltersParams = DashboardAdminFiltersParams & {
|
|
period: string;
|
|
};
|
|
|
|
export const buildDashboardAdminFilters = ({
|
|
userId,
|
|
adminPagadorId,
|
|
}: DashboardAdminFiltersParams) =>
|
|
[
|
|
eq(lancamentos.userId, userId),
|
|
eq(lancamentos.pagadorId, adminPagadorId),
|
|
] as const;
|
|
|
|
export const buildDashboardAdminPeriodFilters = ({
|
|
userId,
|
|
period,
|
|
adminPagadorId,
|
|
}: DashboardAdminPeriodFiltersParams) =>
|
|
[
|
|
...buildDashboardAdminFilters({ userId, adminPagadorId }),
|
|
eq(lancamentos.period, period),
|
|
] as const;
|
|
|
|
export const excludeAutoInvoiceEntries = () =>
|
|
or(
|
|
isNull(lancamentos.note),
|
|
not(ilike(lancamentos.note, `${ACCOUNT_AUTO_INVOICE_NOTE_PREFIX}%`)),
|
|
);
|
|
|
|
export const excludeAutoGeneratedEntryNotes = () =>
|
|
or(
|
|
isNull(lancamentos.note),
|
|
and(
|
|
ne(lancamentos.note, INITIAL_BALANCE_NOTE),
|
|
not(ilike(lancamentos.note, `${ACCOUNT_AUTO_INVOICE_NOTE_PREFIX}%`)),
|
|
),
|
|
);
|
|
|
|
export const excludeInitialBalanceWhenConfigured = () =>
|
|
or(
|
|
ne(lancamentos.note, INITIAL_BALANCE_NOTE),
|
|
isNull(contas.excludeInitialBalanceFromIncome),
|
|
eq(contas.excludeInitialBalanceFromIncome, false),
|
|
);
|