diff --git a/prisma/migrations/20260216155640_add/migration.sql b/prisma/migrations/20260216155640_add/migration.sql new file mode 100644 index 0000000..1246a99 --- /dev/null +++ b/prisma/migrations/20260216155640_add/migration.sql @@ -0,0 +1,2 @@ +-- AlterTable +ALTER TABLE `goods` ADD COLUMN `price_text` VARCHAR(100) NULL; diff --git a/prisma/migrations/20260216170526_init/migration.sql b/prisma/migrations/20260216170526_init/migration.sql new file mode 100644 index 0000000..0f939cf --- /dev/null +++ b/prisma/migrations/20260216170526_init/migration.sql @@ -0,0 +1,37 @@ +/* + Warnings: + + - You are about to drop the column `price_text` on the `goods` table. All the data in the column will be lost. + - You are about to drop the column `count` on the `sales_invoice_items` table. All the data in the column will be lost. + - Added the required column `quantity` to the `sales_invoice_items` table without a default value. This is not possible if the table is not empty. + - Added the required column `unit_type` to the `sales_invoice_items` table without a default value. This is not possible if the table is not empty. + +*/ +-- DropForeignKey +ALTER TABLE `sales_invoice_items` DROP FOREIGN KEY `sales_invoice_items_good_id_fkey`; + +-- DropForeignKey +ALTER TABLE `sales_invoice_items` DROP FOREIGN KEY `sales_invoice_items_service_id_fkey`; + +-- DropIndex +DROP INDEX `sales_invoice_items_good_id_fkey` ON `sales_invoice_items`; + +-- DropIndex +DROP INDEX `sales_invoice_items_service_id_fkey` ON `sales_invoice_items`; + +-- AlterTable +ALTER TABLE `goods` DROP COLUMN `price_text`; + +-- AlterTable +ALTER TABLE `sales_invoice_items` DROP COLUMN `count`, + ADD COLUMN `payload` JSON NULL, + ADD COLUMN `quantity` DECIMAL(10, 0) NOT NULL, + ADD COLUMN `unit_type` ENUM('COUNT', 'GRAM', 'KILOGRAM', 'LITER', 'METER', 'HOUR') NOT NULL, + MODIFY `good_id` VARCHAR(191) NULL, + MODIFY `service_id` VARCHAR(191) NULL; + +-- AddForeignKey +ALTER TABLE `sales_invoice_items` ADD CONSTRAINT `sales_invoice_items_good_id_fkey` FOREIGN KEY (`good_id`) REFERENCES `goods`(`id`) ON DELETE SET NULL ON UPDATE CASCADE; + +-- AddForeignKey +ALTER TABLE `sales_invoice_items` ADD CONSTRAINT `sales_invoice_items_service_id_fkey` FOREIGN KEY (`service_id`) REFERENCES `services`(`id`) ON DELETE SET NULL ON UPDATE CASCADE; diff --git a/prisma/schema/enum.prisma b/prisma/schema/enum.prisma index d4e1e53..96d2a83 100644 --- a/prisma/schema/enum.prisma +++ b/prisma/schema/enum.prisma @@ -11,3 +11,17 @@ enum PurchaseReceiptStatus { PARTIALLY_PAID PAID } + +enum SalesInvoiceType { + GOOD + SERVICE +} + +enum UnitType { + COUNT + GRAM + KILOGRAM + LITER + METER + HOUR +} diff --git a/prisma/schema/sales.prisma b/prisma/schema/sales.prisma index 57b215f..5b5361f 100644 --- a/prisma/schema/sales.prisma +++ b/prisma/schema/sales.prisma @@ -13,19 +13,21 @@ model SalesInvoice { items SalesInvoiceItem[] sales_invoice_payments SalesInvoicePayment[] - @@index([customer_id]) @@map("sales_invoices") } model SalesInvoiceItem { id String @id @default(uuid()) - count Decimal @db.Decimal(10, 0) + quantity Decimal @db.Decimal(10, 0) + unit_type UnitType unit_price Decimal @default(0.00) @db.Decimal(15, 2) total_amount Decimal @default(0.00) @db.Decimal(15, 2) created_at DateTime @default(now()) @db.Timestamp(0) invoice_id String - good_id String - service_id String + good_id String? + service_id String? + + payload Json? invoice SalesInvoice @relation(fields: [invoice_id], references: [id]) good Good? @relation(fields: [good_id], references: [id]) diff --git a/src/app.module.ts b/src/app.module.ts index 2b48b7e..514748e 100644 --- a/src/app.module.ts +++ b/src/app.module.ts @@ -4,6 +4,7 @@ import { AppService } from './app.service' import { AuthModule } from './modules/auth/auth.module' import { ConfigModule } from './modules/config/config.module' import { CustomersModule } from './modules/customers/customers.module' +import { EnumsModule } from './modules/enums/enums.module' import { GoodCategoriesModule } from './modules/good-categories/good-categories.module' import { GoodsModule } from './modules/goods/goods.module' import { ProfileModule } from './modules/profile/profile.module' @@ -32,6 +33,7 @@ import { PrismaModule } from './prisma/prisma.module' UploadersModule, ConfigModule, ProfileModule, + EnumsModule, ], controllers: [AppController], providers: [AppService], diff --git a/src/common/enums/enums.ts b/src/common/enums/enums.ts index 122728c..815df99 100644 --- a/src/common/enums/enums.ts +++ b/src/common/enums/enums.ts @@ -10,3 +10,9 @@ export enum AccountType { PROVIDER, POS, } + +export enum GoldKarat { + KARAT_18 = 18, + KARAT_21 = 21, + KARAT_24 = 24, +} diff --git a/src/common/filters/validation-exception.filter.ts b/src/common/filters/validation-exception.filter.ts new file mode 100644 index 0000000..f88c857 --- /dev/null +++ b/src/common/filters/validation-exception.filter.ts @@ -0,0 +1,27 @@ +import { + ArgumentsHost, + BadRequestException, + Catch, + ExceptionFilter, +} from '@nestjs/common' +import { Response } from 'express' + +@Catch(BadRequestException) +export class ValidationExceptionFilter implements ExceptionFilter { + constructor() { + console.log('ValidationExceptionFilter initialized') + } + catch(exception: BadRequestException, host: ArgumentsHost) { + const ctx = host.switchToHttp() + const response = ctx.getResponse() + const status = exception.getStatus() + const exceptionResponse = exception.getResponse() + console.log(exception) + + response.status(status).json({ + statusCode: status, + message: 'Validation failed', + errors: (exceptionResponse as any).message || exceptionResponse, + }) + } +} diff --git a/src/common/interceptors/response-mapping.interceptor.ts b/src/common/interceptors/response-mapping.interceptor.ts index 134dbe2..62a6969 100644 --- a/src/common/interceptors/response-mapping.interceptor.ts +++ b/src/common/interceptors/response-mapping.interceptor.ts @@ -23,6 +23,8 @@ import { map } from 'rxjs/operators' @Injectable() export class ResponseMappingInterceptor implements NestInterceptor { intercept(context: ExecutionContext, next: CallHandler): Observable { + console.log('first') + const http = context.switchToHttp() const response = http.getResponse() const request = http.getRequest() @@ -30,6 +32,7 @@ export class ResponseMappingInterceptor implements NestInterceptor { return next.handle().pipe( map(data => { const statusCode: number = (response as Response)?.statusCode ?? 200 + console.log(data) if (data && typeof data === 'object') { if (Array.isArray((data as any).errors) && statusCode >= 400) { diff --git a/src/common/interfaces/sale-invoice-payload.ts b/src/common/interfaces/sale-invoice-payload.ts new file mode 100644 index 0000000..2723306 --- /dev/null +++ b/src/common/interfaces/sale-invoice-payload.ts @@ -0,0 +1,8 @@ +import { GoldKarat } from '../enums/enums' + +export interface SaleInvoicePayload { + weight: number + karat: keyof typeof GoldKarat + wages: number + profit: number +} diff --git a/src/common/response/response-mapper.ts b/src/common/response/response-mapper.ts index 5a32747..7c9a1a6 100644 --- a/src/common/response/response-mapper.ts +++ b/src/common/response/response-mapper.ts @@ -20,6 +20,8 @@ export const ResponseMapper = { }, single(item: T): MapperWrapper { + console.log('asdasdsaasdsa') + return { __mapped: 'single', data: item } }, diff --git a/src/generated/prisma/commonInputTypes.ts b/src/generated/prisma/commonInputTypes.ts index 6dfd860..9728e25 100644 --- a/src/generated/prisma/commonInputTypes.ts +++ b/src/generated/prisma/commonInputTypes.ts @@ -202,6 +202,74 @@ export type IntWithAggregatesFilter<$PrismaModel = never> = { _max?: Prisma.NestedIntFilter<$PrismaModel> } +export type EnumUnitTypeFilter<$PrismaModel = never> = { + equals?: $Enums.UnitType | Prisma.EnumUnitTypeFieldRefInput<$PrismaModel> + in?: $Enums.UnitType[] + notIn?: $Enums.UnitType[] + not?: Prisma.NestedEnumUnitTypeFilter<$PrismaModel> | $Enums.UnitType +} + +export type JsonNullableFilter<$PrismaModel = never> = +| Prisma.PatchUndefined< + Prisma.Either>, Exclude>, 'path'>>, + Required> + > +| Prisma.OptionalFlat>, 'path'>> + +export type JsonNullableFilterBase<$PrismaModel = never> = { + equals?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter + path?: string + mode?: Prisma.QueryMode | Prisma.EnumQueryModeFieldRefInput<$PrismaModel> + string_contains?: string | Prisma.StringFieldRefInput<$PrismaModel> + string_starts_with?: string | Prisma.StringFieldRefInput<$PrismaModel> + string_ends_with?: string | Prisma.StringFieldRefInput<$PrismaModel> + array_starts_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null + array_ends_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null + array_contains?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null + lt?: runtime.InputJsonValue + lte?: runtime.InputJsonValue + gt?: runtime.InputJsonValue + gte?: runtime.InputJsonValue + not?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter +} + +export type EnumUnitTypeWithAggregatesFilter<$PrismaModel = never> = { + equals?: $Enums.UnitType | Prisma.EnumUnitTypeFieldRefInput<$PrismaModel> + in?: $Enums.UnitType[] + notIn?: $Enums.UnitType[] + not?: Prisma.NestedEnumUnitTypeWithAggregatesFilter<$PrismaModel> | $Enums.UnitType + _count?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedEnumUnitTypeFilter<$PrismaModel> + _max?: Prisma.NestedEnumUnitTypeFilter<$PrismaModel> +} + +export type JsonNullableWithAggregatesFilter<$PrismaModel = never> = +| Prisma.PatchUndefined< + Prisma.Either>, Exclude>, 'path'>>, + Required> + > +| Prisma.OptionalFlat>, 'path'>> + +export type JsonNullableWithAggregatesFilterBase<$PrismaModel = never> = { + equals?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter + path?: string + mode?: Prisma.QueryMode | Prisma.EnumQueryModeFieldRefInput<$PrismaModel> + string_contains?: string | Prisma.StringFieldRefInput<$PrismaModel> + string_starts_with?: string | Prisma.StringFieldRefInput<$PrismaModel> + string_ends_with?: string | Prisma.StringFieldRefInput<$PrismaModel> + array_starts_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null + array_ends_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null + array_contains?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null + lt?: runtime.InputJsonValue + lte?: runtime.InputJsonValue + gt?: runtime.InputJsonValue + gte?: runtime.InputJsonValue + not?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter + _count?: Prisma.NestedIntNullableFilter<$PrismaModel> + _min?: Prisma.NestedJsonNullableFilter<$PrismaModel> + _max?: Prisma.NestedJsonNullableFilter<$PrismaModel> +} + export type EnumPaymentMethodTypeFilter<$PrismaModel = never> = { equals?: $Enums.PaymentMethodType | Prisma.EnumPaymentMethodTypeFieldRefInput<$PrismaModel> in?: $Enums.PaymentMethodType[] @@ -424,6 +492,47 @@ export type NestedFloatFilter<$PrismaModel = never> = { not?: Prisma.NestedFloatFilter<$PrismaModel> | number } +export type NestedEnumUnitTypeFilter<$PrismaModel = never> = { + equals?: $Enums.UnitType | Prisma.EnumUnitTypeFieldRefInput<$PrismaModel> + in?: $Enums.UnitType[] + notIn?: $Enums.UnitType[] + not?: Prisma.NestedEnumUnitTypeFilter<$PrismaModel> | $Enums.UnitType +} + +export type NestedEnumUnitTypeWithAggregatesFilter<$PrismaModel = never> = { + equals?: $Enums.UnitType | Prisma.EnumUnitTypeFieldRefInput<$PrismaModel> + in?: $Enums.UnitType[] + notIn?: $Enums.UnitType[] + not?: Prisma.NestedEnumUnitTypeWithAggregatesFilter<$PrismaModel> | $Enums.UnitType + _count?: Prisma.NestedIntFilter<$PrismaModel> + _min?: Prisma.NestedEnumUnitTypeFilter<$PrismaModel> + _max?: Prisma.NestedEnumUnitTypeFilter<$PrismaModel> +} + +export type NestedJsonNullableFilter<$PrismaModel = never> = +| Prisma.PatchUndefined< + Prisma.Either>, Exclude>, 'path'>>, + Required> + > +| Prisma.OptionalFlat>, 'path'>> + +export type NestedJsonNullableFilterBase<$PrismaModel = never> = { + equals?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter + path?: string + mode?: Prisma.QueryMode | Prisma.EnumQueryModeFieldRefInput<$PrismaModel> + string_contains?: string | Prisma.StringFieldRefInput<$PrismaModel> + string_starts_with?: string | Prisma.StringFieldRefInput<$PrismaModel> + string_ends_with?: string | Prisma.StringFieldRefInput<$PrismaModel> + array_starts_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null + array_ends_with?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null + array_contains?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | null + lt?: runtime.InputJsonValue + lte?: runtime.InputJsonValue + gt?: runtime.InputJsonValue + gte?: runtime.InputJsonValue + not?: runtime.InputJsonValue | Prisma.JsonFieldRefInput<$PrismaModel> | Prisma.JsonNullValueFilter +} + export type NestedEnumPaymentMethodTypeFilter<$PrismaModel = never> = { equals?: $Enums.PaymentMethodType | Prisma.EnumPaymentMethodTypeFieldRefInput<$PrismaModel> in?: $Enums.PaymentMethodType[] diff --git a/src/generated/prisma/enums.ts b/src/generated/prisma/enums.ts index e4246fd..2678b73 100644 --- a/src/generated/prisma/enums.ts +++ b/src/generated/prisma/enums.ts @@ -27,3 +27,23 @@ export const PurchaseReceiptStatus = { } as const export type PurchaseReceiptStatus = (typeof PurchaseReceiptStatus)[keyof typeof PurchaseReceiptStatus] + + +export const SalesInvoiceType = { + GOOD: 'GOOD', + SERVICE: 'SERVICE' +} as const + +export type SalesInvoiceType = (typeof SalesInvoiceType)[keyof typeof SalesInvoiceType] + + +export const UnitType = { + COUNT: 'COUNT', + GRAM: 'GRAM', + KILOGRAM: 'KILOGRAM', + LITER: 'LITER', + METER: 'METER', + HOUR: 'HOUR' +} as const + +export type UnitType = (typeof UnitType)[keyof typeof UnitType] diff --git a/src/generated/prisma/internal/class.ts b/src/generated/prisma/internal/class.ts index aa257fb..f211dd4 100644 --- a/src/generated/prisma/internal/class.ts +++ b/src/generated/prisma/internal/class.ts @@ -22,7 +22,7 @@ const config: runtime.GetPrismaClientConfig = { "clientVersion": "7.2.0", "engineVersion": "0c8ef2ce45c83248ab3df073180d5eda9e8be7a3", "activeProvider": "mysql", - "inlineSchema": "model Customer {\n id String @id @default(uuid())\n first_name String @db.VarChar(255)\n last_name String @db.VarChar(255)\n email String? @db.VarChar(255)\n mobile_number String @unique @db.Char(11)\n address String? @db.Text\n is_active Boolean @default(true)\n account_id String\n complex_id String\n\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt @db.Timestamp(0)\n deleted_at DateTime? @db.Timestamp(0)\n\n sales_invoices SalesInvoice[]\n\n @@map(\"customers\")\n}\n\nmodel Device {\n account_id String? @db.VarChar(255)\n app_version String @db.VarChar(20)\n build_number String @db.VarChar(20)\n\n uuid String @id @unique() @db.VarChar(255)\n platform String @db.VarChar(100)\n brand String @db.VarChar(100)\n model String @db.VarChar(100)\n device String @db.VarChar(100)\n os_version String @db.VarChar(20)\n sdk_version String @db.VarChar(20)\n release_number String @db.VarChar(20)\n browser_name String? @db.VarChar(100)\n fcm_token String? @db.VarChar(100)\n\n @@map(\"devices\")\n}\n\nenum PaymentMethodType {\n CASH\n CARD\n BANK\n CHECK\n OTHER\n}\n\nenum PurchaseReceiptStatus {\n UNPAID\n PARTIALLY_PAID\n PAID\n}\n\nmodel Good {\n id String @id @default(uuid())\n name String @db.VarChar(255)\n description String? @db.Text\n sku String @db.VarChar(100)\n local_sku String? @unique() @db.VarChar(100)\n barcode String? @unique() @db.VarChar(100)\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt @db.Timestamp(0)\n deleted_at DateTime? @db.Timestamp(0)\n category_id String?\n base_sale_price Decimal @default(0.00) @db.Decimal(15, 0)\n account_id String\n complex_id String\n\n category GoodCategory? @relation(fields: [category_id], references: [id])\n sales_invoice_items SalesInvoiceItem[]\n\n @@index([category_id])\n @@map(\"goods\")\n}\n\nmodel GoodCategory {\n id String @id @default(uuid())\n name String @db.VarChar(100)\n description String? @db.Text\n image_url String? @db.VarChar(255)\n account_id String\n complex_id String\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt @db.Timestamp(0)\n deleted_at DateTime? @db.Timestamp(0)\n\n goods Good[]\n\n @@map(\"good_categories\")\n}\n\nmodel TriggerLog {\n id Int @id @default(autoincrement())\n message String @db.Text\n createdAt DateTime @default(now()) @db.Timestamp(0)\n name String @db.Text\n\n @@map(\"trigger_logs\")\n}\n\nmodel SalesInvoice {\n id String @id @default(uuid())\n code String @unique @db.VarChar(100)\n total_amount Decimal @db.Decimal(15, 2)\n description String? @db.Text\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt @db.Timestamp(0)\n customer_id String?\n account_id String\n complex_id String\n\n customer Customer? @relation(fields: [customer_id], references: [id])\n items SalesInvoiceItem[]\n sales_invoice_payments SalesInvoicePayment[]\n\n @@index([customer_id])\n @@map(\"sales_invoices\")\n}\n\nmodel SalesInvoiceItem {\n id String @id @default(uuid())\n count Decimal @db.Decimal(10, 0)\n unit_price Decimal @default(0.00) @db.Decimal(15, 2)\n total_amount Decimal @default(0.00) @db.Decimal(15, 2)\n created_at DateTime @default(now()) @db.Timestamp(0)\n invoice_id String\n good_id String\n service_id String\n\n invoice SalesInvoice @relation(fields: [invoice_id], references: [id])\n good Good? @relation(fields: [good_id], references: [id])\n service Service? @relation(fields: [service_id], references: [id])\n\n @@index([invoice_id, good_id])\n @@map(\"sales_invoice_items\")\n}\n\nmodel SalesInvoicePayment {\n id String @id @default(uuid())\n invoice_id String\n amount Decimal @db.Decimal(15, 2)\n payment_method PaymentMethodType\n paid_at DateTime\n created_at DateTime @default(now())\n\n invoice SalesInvoice @relation(fields: [invoice_id], references: [id])\n\n @@index([invoice_id])\n @@map(\"Sales_Invoice_Payments\")\n}\n\ngenerator client {\n provider = \"prisma-client\"\n output = \"../../src/generated/prisma\"\n moduleFormat = \"cjs\"\n previewFeatures = [\"views\"]\n}\n\ndatasource db {\n provider = \"mysql\"\n}\n\nmodel Service {\n id String @id @default(uuid())\n name String @db.VarChar(255)\n description String? @db.Text\n sku String @unique() @db.VarChar(100)\n local_sku String? @unique() @db.VarChar(100)\n barcode String? @unique() @db.VarChar(100)\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt @db.Timestamp(0)\n deleted_at DateTime? @db.Timestamp(0)\n category_id String?\n base_sale_price Decimal @default(0.00) @db.Decimal(15, 0)\n account_id String\n complex_id String\n\n category ServiceCategory? @relation(fields: [category_id], references: [id])\n sales_invoice_items SalesInvoiceItem[]\n\n @@index([category_id])\n @@map(\"services\")\n}\n\nmodel ServiceCategory {\n id String @id @default(uuid())\n name String @db.VarChar(100)\n description String? @db.Text\n image_url String? @db.VarChar(255)\n account_id String\n complex_id String\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt @db.Timestamp(0)\n deleted_at DateTime? @db.Timestamp(0)\n\n services Service[]\n\n @@map(\"service_categories\")\n}\n", + "inlineSchema": "model Customer {\n id String @id @default(uuid())\n first_name String @db.VarChar(255)\n last_name String @db.VarChar(255)\n email String? @db.VarChar(255)\n mobile_number String @unique @db.Char(11)\n address String? @db.Text\n is_active Boolean @default(true)\n account_id String\n complex_id String\n\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt @db.Timestamp(0)\n deleted_at DateTime? @db.Timestamp(0)\n\n sales_invoices SalesInvoice[]\n\n @@map(\"customers\")\n}\n\nmodel Device {\n account_id String? @db.VarChar(255)\n app_version String @db.VarChar(20)\n build_number String @db.VarChar(20)\n\n uuid String @id @unique() @db.VarChar(255)\n platform String @db.VarChar(100)\n brand String @db.VarChar(100)\n model String @db.VarChar(100)\n device String @db.VarChar(100)\n os_version String @db.VarChar(20)\n sdk_version String @db.VarChar(20)\n release_number String @db.VarChar(20)\n browser_name String? @db.VarChar(100)\n fcm_token String? @db.VarChar(100)\n\n @@map(\"devices\")\n}\n\nenum PaymentMethodType {\n CASH\n CARD\n BANK\n CHECK\n OTHER\n}\n\nenum PurchaseReceiptStatus {\n UNPAID\n PARTIALLY_PAID\n PAID\n}\n\nenum SalesInvoiceType {\n GOOD\n SERVICE\n}\n\nenum UnitType {\n COUNT\n GRAM\n KILOGRAM\n LITER\n METER\n HOUR\n}\n\nmodel Good {\n id String @id @default(uuid())\n name String @db.VarChar(255)\n description String? @db.Text\n sku String @db.VarChar(100)\n local_sku String? @unique() @db.VarChar(100)\n barcode String? @unique() @db.VarChar(100)\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt @db.Timestamp(0)\n deleted_at DateTime? @db.Timestamp(0)\n category_id String?\n base_sale_price Decimal @default(0.00) @db.Decimal(15, 0)\n account_id String\n complex_id String\n\n category GoodCategory? @relation(fields: [category_id], references: [id])\n sales_invoice_items SalesInvoiceItem[]\n\n @@index([category_id])\n @@map(\"goods\")\n}\n\nmodel GoodCategory {\n id String @id @default(uuid())\n name String @db.VarChar(100)\n description String? @db.Text\n image_url String? @db.VarChar(255)\n account_id String\n complex_id String\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt @db.Timestamp(0)\n deleted_at DateTime? @db.Timestamp(0)\n\n goods Good[]\n\n @@map(\"good_categories\")\n}\n\nmodel TriggerLog {\n id Int @id @default(autoincrement())\n message String @db.Text\n createdAt DateTime @default(now()) @db.Timestamp(0)\n name String @db.Text\n\n @@map(\"trigger_logs\")\n}\n\nmodel SalesInvoice {\n id String @id @default(uuid())\n code String @unique @db.VarChar(100)\n total_amount Decimal @db.Decimal(15, 2)\n description String? @db.Text\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt @db.Timestamp(0)\n customer_id String?\n account_id String\n complex_id String\n\n customer Customer? @relation(fields: [customer_id], references: [id])\n items SalesInvoiceItem[]\n sales_invoice_payments SalesInvoicePayment[]\n\n @@index([customer_id])\n @@map(\"sales_invoices\")\n}\n\nmodel SalesInvoiceItem {\n id String @id @default(uuid())\n quantity Decimal @db.Decimal(10, 0)\n unit_type UnitType\n unit_price Decimal @default(0.00) @db.Decimal(15, 2)\n total_amount Decimal @default(0.00) @db.Decimal(15, 2)\n created_at DateTime @default(now()) @db.Timestamp(0)\n invoice_id String\n good_id String?\n service_id String?\n\n payload Json?\n\n invoice SalesInvoice @relation(fields: [invoice_id], references: [id])\n good Good? @relation(fields: [good_id], references: [id])\n service Service? @relation(fields: [service_id], references: [id])\n\n @@index([invoice_id, good_id])\n @@map(\"sales_invoice_items\")\n}\n\nmodel SalesInvoicePayment {\n id String @id @default(uuid())\n invoice_id String\n amount Decimal @db.Decimal(15, 2)\n payment_method PaymentMethodType\n paid_at DateTime\n created_at DateTime @default(now())\n\n invoice SalesInvoice @relation(fields: [invoice_id], references: [id])\n\n @@index([invoice_id])\n @@map(\"sales_invoice_payments\")\n}\n\ngenerator client {\n provider = \"prisma-client\"\n output = \"../../src/generated/prisma\"\n moduleFormat = \"cjs\"\n previewFeatures = [\"views\"]\n}\n\ndatasource db {\n provider = \"mysql\"\n}\n\nmodel Service {\n id String @id @default(uuid())\n name String @db.VarChar(255)\n description String? @db.Text\n sku String @unique() @db.VarChar(100)\n local_sku String? @unique() @db.VarChar(100)\n barcode String? @unique() @db.VarChar(100)\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt @db.Timestamp(0)\n deleted_at DateTime? @db.Timestamp(0)\n category_id String?\n base_sale_price Decimal @default(0.00) @db.Decimal(15, 0)\n account_id String\n complex_id String\n\n category ServiceCategory? @relation(fields: [category_id], references: [id])\n sales_invoice_items SalesInvoiceItem[]\n\n @@index([category_id])\n @@map(\"services\")\n}\n\nmodel ServiceCategory {\n id String @id @default(uuid())\n name String @db.VarChar(100)\n description String? @db.Text\n image_url String? @db.VarChar(255)\n account_id String\n complex_id String\n created_at DateTime @default(now()) @db.Timestamp(0)\n updated_at DateTime @updatedAt @db.Timestamp(0)\n deleted_at DateTime? @db.Timestamp(0)\n\n services Service[]\n\n @@map(\"service_categories\")\n}\n", "runtimeDataModel": { "models": {}, "enums": {}, @@ -30,7 +30,7 @@ const config: runtime.GetPrismaClientConfig = { } } -config.runtimeDataModel = JSON.parse("{\"models\":{\"Customer\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"first_name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"last_name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mobile_number\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"address\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"is_active\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"account_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complex_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"sales_invoices\",\"kind\":\"object\",\"type\":\"SalesInvoice\",\"relationName\":\"CustomerToSalesInvoice\"}],\"dbName\":\"customers\"},\"Device\":{\"fields\":[{\"name\":\"account_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"app_version\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"build_number\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"uuid\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"platform\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"brand\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"model\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"device\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"os_version\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sdk_version\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"release_number\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"browser_name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fcm_token\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":\"devices\"},\"Good\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sku\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"local_sku\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"barcode\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"category_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"base_sale_price\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"account_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complex_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"category\",\"kind\":\"object\",\"type\":\"GoodCategory\",\"relationName\":\"GoodToGoodCategory\"},{\"name\":\"sales_invoice_items\",\"kind\":\"object\",\"type\":\"SalesInvoiceItem\",\"relationName\":\"GoodToSalesInvoiceItem\"}],\"dbName\":\"goods\"},\"GoodCategory\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"image_url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"account_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complex_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"goods\",\"kind\":\"object\",\"type\":\"Good\",\"relationName\":\"GoodToGoodCategory\"}],\"dbName\":\"good_categories\"},\"TriggerLog\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"message\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":\"trigger_logs\"},\"SalesInvoice\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"code\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"total_amount\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"customer_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"account_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complex_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"customer\",\"kind\":\"object\",\"type\":\"Customer\",\"relationName\":\"CustomerToSalesInvoice\"},{\"name\":\"items\",\"kind\":\"object\",\"type\":\"SalesInvoiceItem\",\"relationName\":\"SalesInvoiceToSalesInvoiceItem\"},{\"name\":\"sales_invoice_payments\",\"kind\":\"object\",\"type\":\"SalesInvoicePayment\",\"relationName\":\"SalesInvoiceToSalesInvoicePayment\"}],\"dbName\":\"sales_invoices\"},\"SalesInvoiceItem\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"count\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"unit_price\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"total_amount\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"invoice_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"good_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"service_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"invoice\",\"kind\":\"object\",\"type\":\"SalesInvoice\",\"relationName\":\"SalesInvoiceToSalesInvoiceItem\"},{\"name\":\"good\",\"kind\":\"object\",\"type\":\"Good\",\"relationName\":\"GoodToSalesInvoiceItem\"},{\"name\":\"service\",\"kind\":\"object\",\"type\":\"Service\",\"relationName\":\"SalesInvoiceItemToService\"}],\"dbName\":\"sales_invoice_items\"},\"SalesInvoicePayment\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"invoice_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"amount\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"payment_method\",\"kind\":\"enum\",\"type\":\"PaymentMethodType\"},{\"name\":\"paid_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"invoice\",\"kind\":\"object\",\"type\":\"SalesInvoice\",\"relationName\":\"SalesInvoiceToSalesInvoicePayment\"}],\"dbName\":\"Sales_Invoice_Payments\"},\"Service\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sku\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"local_sku\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"barcode\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"category_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"base_sale_price\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"account_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complex_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"category\",\"kind\":\"object\",\"type\":\"ServiceCategory\",\"relationName\":\"ServiceToServiceCategory\"},{\"name\":\"sales_invoice_items\",\"kind\":\"object\",\"type\":\"SalesInvoiceItem\",\"relationName\":\"SalesInvoiceItemToService\"}],\"dbName\":\"services\"},\"ServiceCategory\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"image_url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"account_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complex_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"services\",\"kind\":\"object\",\"type\":\"Service\",\"relationName\":\"ServiceToServiceCategory\"}],\"dbName\":\"service_categories\"}},\"enums\":{},\"types\":{}}") +config.runtimeDataModel = JSON.parse("{\"models\":{\"Customer\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"first_name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"last_name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"mobile_number\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"address\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"is_active\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"account_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complex_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"sales_invoices\",\"kind\":\"object\",\"type\":\"SalesInvoice\",\"relationName\":\"CustomerToSalesInvoice\"}],\"dbName\":\"customers\"},\"Device\":{\"fields\":[{\"name\":\"account_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"app_version\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"build_number\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"uuid\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"platform\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"brand\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"model\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"device\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"os_version\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sdk_version\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"release_number\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"browser_name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fcm_token\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":\"devices\"},\"Good\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sku\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"local_sku\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"barcode\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"category_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"base_sale_price\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"account_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complex_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"category\",\"kind\":\"object\",\"type\":\"GoodCategory\",\"relationName\":\"GoodToGoodCategory\"},{\"name\":\"sales_invoice_items\",\"kind\":\"object\",\"type\":\"SalesInvoiceItem\",\"relationName\":\"GoodToSalesInvoiceItem\"}],\"dbName\":\"goods\"},\"GoodCategory\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"image_url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"account_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complex_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"goods\",\"kind\":\"object\",\"type\":\"Good\",\"relationName\":\"GoodToGoodCategory\"}],\"dbName\":\"good_categories\"},\"TriggerLog\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"message\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"}],\"dbName\":\"trigger_logs\"},\"SalesInvoice\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"code\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"total_amount\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"customer_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"account_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complex_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"customer\",\"kind\":\"object\",\"type\":\"Customer\",\"relationName\":\"CustomerToSalesInvoice\"},{\"name\":\"items\",\"kind\":\"object\",\"type\":\"SalesInvoiceItem\",\"relationName\":\"SalesInvoiceToSalesInvoiceItem\"},{\"name\":\"sales_invoice_payments\",\"kind\":\"object\",\"type\":\"SalesInvoicePayment\",\"relationName\":\"SalesInvoiceToSalesInvoicePayment\"}],\"dbName\":\"sales_invoices\"},\"SalesInvoiceItem\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"quantity\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"unit_type\",\"kind\":\"enum\",\"type\":\"UnitType\"},{\"name\":\"unit_price\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"total_amount\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"invoice_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"good_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"service_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"payload\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"invoice\",\"kind\":\"object\",\"type\":\"SalesInvoice\",\"relationName\":\"SalesInvoiceToSalesInvoiceItem\"},{\"name\":\"good\",\"kind\":\"object\",\"type\":\"Good\",\"relationName\":\"GoodToSalesInvoiceItem\"},{\"name\":\"service\",\"kind\":\"object\",\"type\":\"Service\",\"relationName\":\"SalesInvoiceItemToService\"}],\"dbName\":\"sales_invoice_items\"},\"SalesInvoicePayment\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"invoice_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"amount\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"payment_method\",\"kind\":\"enum\",\"type\":\"PaymentMethodType\"},{\"name\":\"paid_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"invoice\",\"kind\":\"object\",\"type\":\"SalesInvoice\",\"relationName\":\"SalesInvoiceToSalesInvoicePayment\"}],\"dbName\":\"sales_invoice_payments\"},\"Service\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"sku\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"local_sku\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"barcode\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"category_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"base_sale_price\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"account_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complex_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"category\",\"kind\":\"object\",\"type\":\"ServiceCategory\",\"relationName\":\"ServiceToServiceCategory\"},{\"name\":\"sales_invoice_items\",\"kind\":\"object\",\"type\":\"SalesInvoiceItem\",\"relationName\":\"SalesInvoiceItemToService\"}],\"dbName\":\"services\"},\"ServiceCategory\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"image_url\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"account_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complex_id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"created_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updated_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"deleted_at\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"services\",\"kind\":\"object\",\"type\":\"Service\",\"relationName\":\"ServiceToServiceCategory\"}],\"dbName\":\"service_categories\"}},\"enums\":{},\"types\":{}}") async function decodeBase64AsWasm(wasmBase64: string): Promise { const { Buffer } = await import('node:buffer') diff --git a/src/generated/prisma/internal/prismaNamespace.ts b/src/generated/prisma/internal/prismaNamespace.ts index 0d90b04..54c9e1b 100644 --- a/src/generated/prisma/internal/prismaNamespace.ts +++ b/src/generated/prisma/internal/prismaNamespace.ts @@ -1210,13 +1210,15 @@ export type SalesInvoiceScalarFieldEnum = (typeof SalesInvoiceScalarFieldEnum)[k export const SalesInvoiceItemScalarFieldEnum = { id: 'id', - count: 'count', + quantity: 'quantity', + unit_type: 'unit_type', unit_price: 'unit_price', total_amount: 'total_amount', created_at: 'created_at', invoice_id: 'invoice_id', good_id: 'good_id', - service_id: 'service_id' + service_id: 'service_id', + payload: 'payload' } as const export type SalesInvoiceItemScalarFieldEnum = (typeof SalesInvoiceItemScalarFieldEnum)[keyof typeof SalesInvoiceItemScalarFieldEnum] @@ -1276,6 +1278,14 @@ export const SortOrder = { export type SortOrder = (typeof SortOrder)[keyof typeof SortOrder] +export const NullableJsonNullValueInput = { + DbNull: DbNull, + JsonNull: JsonNull +} as const + +export type NullableJsonNullValueInput = (typeof NullableJsonNullValueInput)[keyof typeof NullableJsonNullValueInput] + + export const NullsOrder = { first: 'first', last: 'last' @@ -1364,6 +1374,23 @@ export const SalesInvoiceOrderByRelevanceFieldEnum = { export type SalesInvoiceOrderByRelevanceFieldEnum = (typeof SalesInvoiceOrderByRelevanceFieldEnum)[keyof typeof SalesInvoiceOrderByRelevanceFieldEnum] +export const JsonNullValueFilter = { + DbNull: DbNull, + JsonNull: JsonNull, + AnyNull: AnyNull +} as const + +export type JsonNullValueFilter = (typeof JsonNullValueFilter)[keyof typeof JsonNullValueFilter] + + +export const QueryMode = { + default: 'default', + insensitive: 'insensitive' +} as const + +export type QueryMode = (typeof QueryMode)[keyof typeof QueryMode] + + export const SalesInvoiceItemOrderByRelevanceFieldEnum = { id: 'id', invoice_id: 'invoice_id', @@ -1450,6 +1477,27 @@ export type IntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'In +/** + * Reference to a field of type 'UnitType' + */ +export type EnumUnitTypeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'UnitType'> + + + +/** + * Reference to a field of type 'Json' + */ +export type JsonFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Json'> + + + +/** + * Reference to a field of type 'QueryMode' + */ +export type EnumQueryModeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'QueryMode'> + + + /** * Reference to a field of type 'PaymentMethodType' */ diff --git a/src/generated/prisma/internal/prismaNamespaceBrowser.ts b/src/generated/prisma/internal/prismaNamespaceBrowser.ts index 1cca3b3..163ac65 100644 --- a/src/generated/prisma/internal/prismaNamespaceBrowser.ts +++ b/src/generated/prisma/internal/prismaNamespaceBrowser.ts @@ -177,13 +177,15 @@ export type SalesInvoiceScalarFieldEnum = (typeof SalesInvoiceScalarFieldEnum)[k export const SalesInvoiceItemScalarFieldEnum = { id: 'id', - count: 'count', + quantity: 'quantity', + unit_type: 'unit_type', unit_price: 'unit_price', total_amount: 'total_amount', created_at: 'created_at', invoice_id: 'invoice_id', good_id: 'good_id', - service_id: 'service_id' + service_id: 'service_id', + payload: 'payload' } as const export type SalesInvoiceItemScalarFieldEnum = (typeof SalesInvoiceItemScalarFieldEnum)[keyof typeof SalesInvoiceItemScalarFieldEnum] @@ -243,6 +245,14 @@ export const SortOrder = { export type SortOrder = (typeof SortOrder)[keyof typeof SortOrder] +export const NullableJsonNullValueInput = { + DbNull: 'DbNull', + JsonNull: 'JsonNull' +} as const + +export type NullableJsonNullValueInput = (typeof NullableJsonNullValueInput)[keyof typeof NullableJsonNullValueInput] + + export const NullsOrder = { first: 'first', last: 'last' @@ -331,6 +341,23 @@ export const SalesInvoiceOrderByRelevanceFieldEnum = { export type SalesInvoiceOrderByRelevanceFieldEnum = (typeof SalesInvoiceOrderByRelevanceFieldEnum)[keyof typeof SalesInvoiceOrderByRelevanceFieldEnum] +export const JsonNullValueFilter = { + DbNull: 'DbNull', + JsonNull: 'JsonNull', + AnyNull: 'AnyNull' +} as const + +export type JsonNullValueFilter = (typeof JsonNullValueFilter)[keyof typeof JsonNullValueFilter] + + +export const QueryMode = { + default: 'default', + insensitive: 'insensitive' +} as const + +export type QueryMode = (typeof QueryMode)[keyof typeof QueryMode] + + export const SalesInvoiceItemOrderByRelevanceFieldEnum = { id: 'id', invoice_id: 'invoice_id', diff --git a/src/generated/prisma/models/SalesInvoiceItem.ts b/src/generated/prisma/models/SalesInvoiceItem.ts index 2ec2912..39eac8d 100644 --- a/src/generated/prisma/models/SalesInvoiceItem.ts +++ b/src/generated/prisma/models/SalesInvoiceItem.ts @@ -27,20 +27,21 @@ export type AggregateSalesInvoiceItem = { } export type SalesInvoiceItemAvgAggregateOutputType = { - count: runtime.Decimal | null + quantity: runtime.Decimal | null unit_price: runtime.Decimal | null total_amount: runtime.Decimal | null } export type SalesInvoiceItemSumAggregateOutputType = { - count: runtime.Decimal | null + quantity: runtime.Decimal | null unit_price: runtime.Decimal | null total_amount: runtime.Decimal | null } export type SalesInvoiceItemMinAggregateOutputType = { id: string | null - count: runtime.Decimal | null + quantity: runtime.Decimal | null + unit_type: $Enums.UnitType | null unit_price: runtime.Decimal | null total_amount: runtime.Decimal | null created_at: Date | null @@ -51,7 +52,8 @@ export type SalesInvoiceItemMinAggregateOutputType = { export type SalesInvoiceItemMaxAggregateOutputType = { id: string | null - count: runtime.Decimal | null + quantity: runtime.Decimal | null + unit_type: $Enums.UnitType | null unit_price: runtime.Decimal | null total_amount: runtime.Decimal | null created_at: Date | null @@ -62,32 +64,35 @@ export type SalesInvoiceItemMaxAggregateOutputType = { export type SalesInvoiceItemCountAggregateOutputType = { id: number - count: number + quantity: number + unit_type: number unit_price: number total_amount: number created_at: number invoice_id: number good_id: number service_id: number + payload: number _all: number } export type SalesInvoiceItemAvgAggregateInputType = { - count?: true + quantity?: true unit_price?: true total_amount?: true } export type SalesInvoiceItemSumAggregateInputType = { - count?: true + quantity?: true unit_price?: true total_amount?: true } export type SalesInvoiceItemMinAggregateInputType = { id?: true - count?: true + quantity?: true + unit_type?: true unit_price?: true total_amount?: true created_at?: true @@ -98,7 +103,8 @@ export type SalesInvoiceItemMinAggregateInputType = { export type SalesInvoiceItemMaxAggregateInputType = { id?: true - count?: true + quantity?: true + unit_type?: true unit_price?: true total_amount?: true created_at?: true @@ -109,13 +115,15 @@ export type SalesInvoiceItemMaxAggregateInputType = { export type SalesInvoiceItemCountAggregateInputType = { id?: true - count?: true + quantity?: true + unit_type?: true unit_price?: true total_amount?: true created_at?: true invoice_id?: true good_id?: true service_id?: true + payload?: true _all?: true } @@ -207,13 +215,15 @@ export type SalesInvoiceItemGroupByArgs | string - count?: Prisma.DecimalFilter<"SalesInvoiceItem"> | runtime.Decimal | runtime.DecimalJsLike | number | string + quantity?: Prisma.DecimalFilter<"SalesInvoiceItem"> | runtime.Decimal | runtime.DecimalJsLike | number | string + unit_type?: Prisma.EnumUnitTypeFilter<"SalesInvoiceItem"> | $Enums.UnitType unit_price?: Prisma.DecimalFilter<"SalesInvoiceItem"> | runtime.Decimal | runtime.DecimalJsLike | number | string total_amount?: Prisma.DecimalFilter<"SalesInvoiceItem"> | runtime.Decimal | runtime.DecimalJsLike | number | string created_at?: Prisma.DateTimeFilter<"SalesInvoiceItem"> | Date | string invoice_id?: Prisma.StringFilter<"SalesInvoiceItem"> | string - good_id?: Prisma.StringFilter<"SalesInvoiceItem"> | string - service_id?: Prisma.StringFilter<"SalesInvoiceItem"> | string + good_id?: Prisma.StringNullableFilter<"SalesInvoiceItem"> | string | null + service_id?: Prisma.StringNullableFilter<"SalesInvoiceItem"> | string | null + payload?: Prisma.JsonNullableFilter<"SalesInvoiceItem"> invoice?: Prisma.XOR good?: Prisma.XOR | null service?: Prisma.XOR | null @@ -255,13 +267,15 @@ export type SalesInvoiceItemWhereInput = { export type SalesInvoiceItemOrderByWithRelationInput = { id?: Prisma.SortOrder - count?: Prisma.SortOrder + quantity?: Prisma.SortOrder + unit_type?: Prisma.SortOrder unit_price?: Prisma.SortOrder total_amount?: Prisma.SortOrder created_at?: Prisma.SortOrder invoice_id?: Prisma.SortOrder - good_id?: Prisma.SortOrder - service_id?: Prisma.SortOrder + good_id?: Prisma.SortOrderInput | Prisma.SortOrder + service_id?: Prisma.SortOrderInput | Prisma.SortOrder + payload?: Prisma.SortOrderInput | Prisma.SortOrder invoice?: Prisma.SalesInvoiceOrderByWithRelationInput good?: Prisma.GoodOrderByWithRelationInput service?: Prisma.ServiceOrderByWithRelationInput @@ -273,13 +287,15 @@ export type SalesInvoiceItemWhereUniqueInput = Prisma.AtLeast<{ AND?: Prisma.SalesInvoiceItemWhereInput | Prisma.SalesInvoiceItemWhereInput[] OR?: Prisma.SalesInvoiceItemWhereInput[] NOT?: Prisma.SalesInvoiceItemWhereInput | Prisma.SalesInvoiceItemWhereInput[] - count?: Prisma.DecimalFilter<"SalesInvoiceItem"> | runtime.Decimal | runtime.DecimalJsLike | number | string + quantity?: Prisma.DecimalFilter<"SalesInvoiceItem"> | runtime.Decimal | runtime.DecimalJsLike | number | string + unit_type?: Prisma.EnumUnitTypeFilter<"SalesInvoiceItem"> | $Enums.UnitType unit_price?: Prisma.DecimalFilter<"SalesInvoiceItem"> | runtime.Decimal | runtime.DecimalJsLike | number | string total_amount?: Prisma.DecimalFilter<"SalesInvoiceItem"> | runtime.Decimal | runtime.DecimalJsLike | number | string created_at?: Prisma.DateTimeFilter<"SalesInvoiceItem"> | Date | string invoice_id?: Prisma.StringFilter<"SalesInvoiceItem"> | string - good_id?: Prisma.StringFilter<"SalesInvoiceItem"> | string - service_id?: Prisma.StringFilter<"SalesInvoiceItem"> | string + good_id?: Prisma.StringNullableFilter<"SalesInvoiceItem"> | string | null + service_id?: Prisma.StringNullableFilter<"SalesInvoiceItem"> | string | null + payload?: Prisma.JsonNullableFilter<"SalesInvoiceItem"> invoice?: Prisma.XOR good?: Prisma.XOR | null service?: Prisma.XOR | null @@ -287,13 +303,15 @@ export type SalesInvoiceItemWhereUniqueInput = Prisma.AtLeast<{ export type SalesInvoiceItemOrderByWithAggregationInput = { id?: Prisma.SortOrder - count?: Prisma.SortOrder + quantity?: Prisma.SortOrder + unit_type?: Prisma.SortOrder unit_price?: Prisma.SortOrder total_amount?: Prisma.SortOrder created_at?: Prisma.SortOrder invoice_id?: Prisma.SortOrder - good_id?: Prisma.SortOrder - service_id?: Prisma.SortOrder + good_id?: Prisma.SortOrderInput | Prisma.SortOrder + service_id?: Prisma.SortOrderInput | Prisma.SortOrder + payload?: Prisma.SortOrderInput | Prisma.SortOrder _count?: Prisma.SalesInvoiceItemCountOrderByAggregateInput _avg?: Prisma.SalesInvoiceItemAvgOrderByAggregateInput _max?: Prisma.SalesInvoiceItemMaxOrderByAggregateInput @@ -306,21 +324,25 @@ export type SalesInvoiceItemScalarWhereWithAggregatesInput = { OR?: Prisma.SalesInvoiceItemScalarWhereWithAggregatesInput[] NOT?: Prisma.SalesInvoiceItemScalarWhereWithAggregatesInput | Prisma.SalesInvoiceItemScalarWhereWithAggregatesInput[] id?: Prisma.StringWithAggregatesFilter<"SalesInvoiceItem"> | string - count?: Prisma.DecimalWithAggregatesFilter<"SalesInvoiceItem"> | runtime.Decimal | runtime.DecimalJsLike | number | string + quantity?: Prisma.DecimalWithAggregatesFilter<"SalesInvoiceItem"> | runtime.Decimal | runtime.DecimalJsLike | number | string + unit_type?: Prisma.EnumUnitTypeWithAggregatesFilter<"SalesInvoiceItem"> | $Enums.UnitType unit_price?: Prisma.DecimalWithAggregatesFilter<"SalesInvoiceItem"> | runtime.Decimal | runtime.DecimalJsLike | number | string total_amount?: Prisma.DecimalWithAggregatesFilter<"SalesInvoiceItem"> | runtime.Decimal | runtime.DecimalJsLike | number | string created_at?: Prisma.DateTimeWithAggregatesFilter<"SalesInvoiceItem"> | Date | string invoice_id?: Prisma.StringWithAggregatesFilter<"SalesInvoiceItem"> | string - good_id?: Prisma.StringWithAggregatesFilter<"SalesInvoiceItem"> | string - service_id?: Prisma.StringWithAggregatesFilter<"SalesInvoiceItem"> | string + good_id?: Prisma.StringNullableWithAggregatesFilter<"SalesInvoiceItem"> | string | null + service_id?: Prisma.StringNullableWithAggregatesFilter<"SalesInvoiceItem"> | string | null + payload?: Prisma.JsonNullableWithAggregatesFilter<"SalesInvoiceItem"> } export type SalesInvoiceItemCreateInput = { id?: string - count: runtime.Decimal | runtime.DecimalJsLike | number | string + quantity: runtime.Decimal | runtime.DecimalJsLike | number | string + unit_type: $Enums.UnitType unit_price?: runtime.Decimal | runtime.DecimalJsLike | number | string total_amount?: runtime.Decimal | runtime.DecimalJsLike | number | string created_at?: Date | string + payload?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue invoice: Prisma.SalesInvoiceCreateNestedOneWithoutItemsInput good?: Prisma.GoodCreateNestedOneWithoutSales_invoice_itemsInput service?: Prisma.ServiceCreateNestedOneWithoutSales_invoice_itemsInput @@ -328,21 +350,25 @@ export type SalesInvoiceItemCreateInput = { export type SalesInvoiceItemUncheckedCreateInput = { id?: string - count: runtime.Decimal | runtime.DecimalJsLike | number | string + quantity: runtime.Decimal | runtime.DecimalJsLike | number | string + unit_type: $Enums.UnitType unit_price?: runtime.Decimal | runtime.DecimalJsLike | number | string total_amount?: runtime.Decimal | runtime.DecimalJsLike | number | string created_at?: Date | string invoice_id: string - good_id: string - service_id: string + good_id?: string | null + service_id?: string | null + payload?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue } export type SalesInvoiceItemUpdateInput = { id?: Prisma.StringFieldUpdateOperationsInput | string - count?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + quantity?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + unit_type?: Prisma.EnumUnitTypeFieldUpdateOperationsInput | $Enums.UnitType unit_price?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string total_amount?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string created_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + payload?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue invoice?: Prisma.SalesInvoiceUpdateOneRequiredWithoutItemsNestedInput good?: Prisma.GoodUpdateOneWithoutSales_invoice_itemsNestedInput service?: Prisma.ServiceUpdateOneWithoutSales_invoice_itemsNestedInput @@ -350,43 +376,51 @@ export type SalesInvoiceItemUpdateInput = { export type SalesInvoiceItemUncheckedUpdateInput = { id?: Prisma.StringFieldUpdateOperationsInput | string - count?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + quantity?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + unit_type?: Prisma.EnumUnitTypeFieldUpdateOperationsInput | $Enums.UnitType unit_price?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string total_amount?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string created_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string invoice_id?: Prisma.StringFieldUpdateOperationsInput | string - good_id?: Prisma.StringFieldUpdateOperationsInput | string - service_id?: Prisma.StringFieldUpdateOperationsInput | string + good_id?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + service_id?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + payload?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue } export type SalesInvoiceItemCreateManyInput = { id?: string - count: runtime.Decimal | runtime.DecimalJsLike | number | string + quantity: runtime.Decimal | runtime.DecimalJsLike | number | string + unit_type: $Enums.UnitType unit_price?: runtime.Decimal | runtime.DecimalJsLike | number | string total_amount?: runtime.Decimal | runtime.DecimalJsLike | number | string created_at?: Date | string invoice_id: string - good_id: string - service_id: string + good_id?: string | null + service_id?: string | null + payload?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue } export type SalesInvoiceItemUpdateManyMutationInput = { id?: Prisma.StringFieldUpdateOperationsInput | string - count?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + quantity?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + unit_type?: Prisma.EnumUnitTypeFieldUpdateOperationsInput | $Enums.UnitType unit_price?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string total_amount?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string created_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + payload?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue } export type SalesInvoiceItemUncheckedUpdateManyInput = { id?: Prisma.StringFieldUpdateOperationsInput | string - count?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + quantity?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + unit_type?: Prisma.EnumUnitTypeFieldUpdateOperationsInput | $Enums.UnitType unit_price?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string total_amount?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string created_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string invoice_id?: Prisma.StringFieldUpdateOperationsInput | string - good_id?: Prisma.StringFieldUpdateOperationsInput | string - service_id?: Prisma.StringFieldUpdateOperationsInput | string + good_id?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + service_id?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + payload?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue } export type SalesInvoiceItemListRelationFilter = { @@ -407,24 +441,27 @@ export type SalesInvoiceItemOrderByRelevanceInput = { export type SalesInvoiceItemCountOrderByAggregateInput = { id?: Prisma.SortOrder - count?: Prisma.SortOrder + quantity?: Prisma.SortOrder + unit_type?: Prisma.SortOrder unit_price?: Prisma.SortOrder total_amount?: Prisma.SortOrder created_at?: Prisma.SortOrder invoice_id?: Prisma.SortOrder good_id?: Prisma.SortOrder service_id?: Prisma.SortOrder + payload?: Prisma.SortOrder } export type SalesInvoiceItemAvgOrderByAggregateInput = { - count?: Prisma.SortOrder + quantity?: Prisma.SortOrder unit_price?: Prisma.SortOrder total_amount?: Prisma.SortOrder } export type SalesInvoiceItemMaxOrderByAggregateInput = { id?: Prisma.SortOrder - count?: Prisma.SortOrder + quantity?: Prisma.SortOrder + unit_type?: Prisma.SortOrder unit_price?: Prisma.SortOrder total_amount?: Prisma.SortOrder created_at?: Prisma.SortOrder @@ -435,7 +472,8 @@ export type SalesInvoiceItemMaxOrderByAggregateInput = { export type SalesInvoiceItemMinOrderByAggregateInput = { id?: Prisma.SortOrder - count?: Prisma.SortOrder + quantity?: Prisma.SortOrder + unit_type?: Prisma.SortOrder unit_price?: Prisma.SortOrder total_amount?: Prisma.SortOrder created_at?: Prisma.SortOrder @@ -445,7 +483,7 @@ export type SalesInvoiceItemMinOrderByAggregateInput = { } export type SalesInvoiceItemSumOrderByAggregateInput = { - count?: Prisma.SortOrder + quantity?: Prisma.SortOrder unit_price?: Prisma.SortOrder total_amount?: Prisma.SortOrder } @@ -534,6 +572,10 @@ export type SalesInvoiceItemUncheckedUpdateManyWithoutInvoiceNestedInput = { deleteMany?: Prisma.SalesInvoiceItemScalarWhereInput | Prisma.SalesInvoiceItemScalarWhereInput[] } +export type EnumUnitTypeFieldUpdateOperationsInput = { + set?: $Enums.UnitType +} + export type SalesInvoiceItemCreateNestedManyWithoutServiceInput = { create?: Prisma.XOR | Prisma.SalesInvoiceItemCreateWithoutServiceInput[] | Prisma.SalesInvoiceItemUncheckedCreateWithoutServiceInput[] connectOrCreate?: Prisma.SalesInvoiceItemCreateOrConnectWithoutServiceInput | Prisma.SalesInvoiceItemCreateOrConnectWithoutServiceInput[] @@ -578,22 +620,26 @@ export type SalesInvoiceItemUncheckedUpdateManyWithoutServiceNestedInput = { export type SalesInvoiceItemCreateWithoutGoodInput = { id?: string - count: runtime.Decimal | runtime.DecimalJsLike | number | string + quantity: runtime.Decimal | runtime.DecimalJsLike | number | string + unit_type: $Enums.UnitType unit_price?: runtime.Decimal | runtime.DecimalJsLike | number | string total_amount?: runtime.Decimal | runtime.DecimalJsLike | number | string created_at?: Date | string + payload?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue invoice: Prisma.SalesInvoiceCreateNestedOneWithoutItemsInput service?: Prisma.ServiceCreateNestedOneWithoutSales_invoice_itemsInput } export type SalesInvoiceItemUncheckedCreateWithoutGoodInput = { id?: string - count: runtime.Decimal | runtime.DecimalJsLike | number | string + quantity: runtime.Decimal | runtime.DecimalJsLike | number | string + unit_type: $Enums.UnitType unit_price?: runtime.Decimal | runtime.DecimalJsLike | number | string total_amount?: runtime.Decimal | runtime.DecimalJsLike | number | string created_at?: Date | string invoice_id: string - service_id: string + service_id?: string | null + payload?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue } export type SalesInvoiceItemCreateOrConnectWithoutGoodInput = { @@ -627,33 +673,39 @@ export type SalesInvoiceItemScalarWhereInput = { OR?: Prisma.SalesInvoiceItemScalarWhereInput[] NOT?: Prisma.SalesInvoiceItemScalarWhereInput | Prisma.SalesInvoiceItemScalarWhereInput[] id?: Prisma.StringFilter<"SalesInvoiceItem"> | string - count?: Prisma.DecimalFilter<"SalesInvoiceItem"> | runtime.Decimal | runtime.DecimalJsLike | number | string + quantity?: Prisma.DecimalFilter<"SalesInvoiceItem"> | runtime.Decimal | runtime.DecimalJsLike | number | string + unit_type?: Prisma.EnumUnitTypeFilter<"SalesInvoiceItem"> | $Enums.UnitType unit_price?: Prisma.DecimalFilter<"SalesInvoiceItem"> | runtime.Decimal | runtime.DecimalJsLike | number | string total_amount?: Prisma.DecimalFilter<"SalesInvoiceItem"> | runtime.Decimal | runtime.DecimalJsLike | number | string created_at?: Prisma.DateTimeFilter<"SalesInvoiceItem"> | Date | string invoice_id?: Prisma.StringFilter<"SalesInvoiceItem"> | string - good_id?: Prisma.StringFilter<"SalesInvoiceItem"> | string - service_id?: Prisma.StringFilter<"SalesInvoiceItem"> | string + good_id?: Prisma.StringNullableFilter<"SalesInvoiceItem"> | string | null + service_id?: Prisma.StringNullableFilter<"SalesInvoiceItem"> | string | null + payload?: Prisma.JsonNullableFilter<"SalesInvoiceItem"> } export type SalesInvoiceItemCreateWithoutInvoiceInput = { id?: string - count: runtime.Decimal | runtime.DecimalJsLike | number | string + quantity: runtime.Decimal | runtime.DecimalJsLike | number | string + unit_type: $Enums.UnitType unit_price?: runtime.Decimal | runtime.DecimalJsLike | number | string total_amount?: runtime.Decimal | runtime.DecimalJsLike | number | string created_at?: Date | string + payload?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue good?: Prisma.GoodCreateNestedOneWithoutSales_invoice_itemsInput service?: Prisma.ServiceCreateNestedOneWithoutSales_invoice_itemsInput } export type SalesInvoiceItemUncheckedCreateWithoutInvoiceInput = { id?: string - count: runtime.Decimal | runtime.DecimalJsLike | number | string + quantity: runtime.Decimal | runtime.DecimalJsLike | number | string + unit_type: $Enums.UnitType unit_price?: runtime.Decimal | runtime.DecimalJsLike | number | string total_amount?: runtime.Decimal | runtime.DecimalJsLike | number | string created_at?: Date | string - good_id: string - service_id: string + good_id?: string | null + service_id?: string | null + payload?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue } export type SalesInvoiceItemCreateOrConnectWithoutInvoiceInput = { @@ -684,22 +736,26 @@ export type SalesInvoiceItemUpdateManyWithWhereWithoutInvoiceInput = { export type SalesInvoiceItemCreateWithoutServiceInput = { id?: string - count: runtime.Decimal | runtime.DecimalJsLike | number | string + quantity: runtime.Decimal | runtime.DecimalJsLike | number | string + unit_type: $Enums.UnitType unit_price?: runtime.Decimal | runtime.DecimalJsLike | number | string total_amount?: runtime.Decimal | runtime.DecimalJsLike | number | string created_at?: Date | string + payload?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue invoice: Prisma.SalesInvoiceCreateNestedOneWithoutItemsInput good?: Prisma.GoodCreateNestedOneWithoutSales_invoice_itemsInput } export type SalesInvoiceItemUncheckedCreateWithoutServiceInput = { id?: string - count: runtime.Decimal | runtime.DecimalJsLike | number | string + quantity: runtime.Decimal | runtime.DecimalJsLike | number | string + unit_type: $Enums.UnitType unit_price?: runtime.Decimal | runtime.DecimalJsLike | number | string total_amount?: runtime.Decimal | runtime.DecimalJsLike | number | string created_at?: Date | string invoice_id: string - good_id: string + good_id?: string | null + payload?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue } export type SalesInvoiceItemCreateOrConnectWithoutServiceInput = { @@ -730,135 +786,161 @@ export type SalesInvoiceItemUpdateManyWithWhereWithoutServiceInput = { export type SalesInvoiceItemCreateManyGoodInput = { id?: string - count: runtime.Decimal | runtime.DecimalJsLike | number | string + quantity: runtime.Decimal | runtime.DecimalJsLike | number | string + unit_type: $Enums.UnitType unit_price?: runtime.Decimal | runtime.DecimalJsLike | number | string total_amount?: runtime.Decimal | runtime.DecimalJsLike | number | string created_at?: Date | string invoice_id: string - service_id: string + service_id?: string | null + payload?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue } export type SalesInvoiceItemUpdateWithoutGoodInput = { id?: Prisma.StringFieldUpdateOperationsInput | string - count?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + quantity?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + unit_type?: Prisma.EnumUnitTypeFieldUpdateOperationsInput | $Enums.UnitType unit_price?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string total_amount?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string created_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + payload?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue invoice?: Prisma.SalesInvoiceUpdateOneRequiredWithoutItemsNestedInput service?: Prisma.ServiceUpdateOneWithoutSales_invoice_itemsNestedInput } export type SalesInvoiceItemUncheckedUpdateWithoutGoodInput = { id?: Prisma.StringFieldUpdateOperationsInput | string - count?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + quantity?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + unit_type?: Prisma.EnumUnitTypeFieldUpdateOperationsInput | $Enums.UnitType unit_price?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string total_amount?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string created_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string invoice_id?: Prisma.StringFieldUpdateOperationsInput | string - service_id?: Prisma.StringFieldUpdateOperationsInput | string + service_id?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + payload?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue } export type SalesInvoiceItemUncheckedUpdateManyWithoutGoodInput = { id?: Prisma.StringFieldUpdateOperationsInput | string - count?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + quantity?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + unit_type?: Prisma.EnumUnitTypeFieldUpdateOperationsInput | $Enums.UnitType unit_price?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string total_amount?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string created_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string invoice_id?: Prisma.StringFieldUpdateOperationsInput | string - service_id?: Prisma.StringFieldUpdateOperationsInput | string + service_id?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + payload?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue } export type SalesInvoiceItemCreateManyInvoiceInput = { id?: string - count: runtime.Decimal | runtime.DecimalJsLike | number | string + quantity: runtime.Decimal | runtime.DecimalJsLike | number | string + unit_type: $Enums.UnitType unit_price?: runtime.Decimal | runtime.DecimalJsLike | number | string total_amount?: runtime.Decimal | runtime.DecimalJsLike | number | string created_at?: Date | string - good_id: string - service_id: string + good_id?: string | null + service_id?: string | null + payload?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue } export type SalesInvoiceItemUpdateWithoutInvoiceInput = { id?: Prisma.StringFieldUpdateOperationsInput | string - count?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + quantity?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + unit_type?: Prisma.EnumUnitTypeFieldUpdateOperationsInput | $Enums.UnitType unit_price?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string total_amount?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string created_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + payload?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue good?: Prisma.GoodUpdateOneWithoutSales_invoice_itemsNestedInput service?: Prisma.ServiceUpdateOneWithoutSales_invoice_itemsNestedInput } export type SalesInvoiceItemUncheckedUpdateWithoutInvoiceInput = { id?: Prisma.StringFieldUpdateOperationsInput | string - count?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + quantity?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + unit_type?: Prisma.EnumUnitTypeFieldUpdateOperationsInput | $Enums.UnitType unit_price?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string total_amount?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string created_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - good_id?: Prisma.StringFieldUpdateOperationsInput | string - service_id?: Prisma.StringFieldUpdateOperationsInput | string + good_id?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + service_id?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + payload?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue } export type SalesInvoiceItemUncheckedUpdateManyWithoutInvoiceInput = { id?: Prisma.StringFieldUpdateOperationsInput | string - count?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + quantity?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + unit_type?: Prisma.EnumUnitTypeFieldUpdateOperationsInput | $Enums.UnitType unit_price?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string total_amount?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string created_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string - good_id?: Prisma.StringFieldUpdateOperationsInput | string - service_id?: Prisma.StringFieldUpdateOperationsInput | string + good_id?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + service_id?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + payload?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue } export type SalesInvoiceItemCreateManyServiceInput = { id?: string - count: runtime.Decimal | runtime.DecimalJsLike | number | string + quantity: runtime.Decimal | runtime.DecimalJsLike | number | string + unit_type: $Enums.UnitType unit_price?: runtime.Decimal | runtime.DecimalJsLike | number | string total_amount?: runtime.Decimal | runtime.DecimalJsLike | number | string created_at?: Date | string invoice_id: string - good_id: string + good_id?: string | null + payload?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue } export type SalesInvoiceItemUpdateWithoutServiceInput = { id?: Prisma.StringFieldUpdateOperationsInput | string - count?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + quantity?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + unit_type?: Prisma.EnumUnitTypeFieldUpdateOperationsInput | $Enums.UnitType unit_price?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string total_amount?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string created_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string + payload?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue invoice?: Prisma.SalesInvoiceUpdateOneRequiredWithoutItemsNestedInput good?: Prisma.GoodUpdateOneWithoutSales_invoice_itemsNestedInput } export type SalesInvoiceItemUncheckedUpdateWithoutServiceInput = { id?: Prisma.StringFieldUpdateOperationsInput | string - count?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + quantity?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + unit_type?: Prisma.EnumUnitTypeFieldUpdateOperationsInput | $Enums.UnitType unit_price?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string total_amount?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string created_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string invoice_id?: Prisma.StringFieldUpdateOperationsInput | string - good_id?: Prisma.StringFieldUpdateOperationsInput | string + good_id?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + payload?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue } export type SalesInvoiceItemUncheckedUpdateManyWithoutServiceInput = { id?: Prisma.StringFieldUpdateOperationsInput | string - count?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + quantity?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string + unit_type?: Prisma.EnumUnitTypeFieldUpdateOperationsInput | $Enums.UnitType unit_price?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string total_amount?: Prisma.DecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string created_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string invoice_id?: Prisma.StringFieldUpdateOperationsInput | string - good_id?: Prisma.StringFieldUpdateOperationsInput | string + good_id?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + payload?: Prisma.NullableJsonNullValueInput | runtime.InputJsonValue } export type SalesInvoiceItemSelect = runtime.Types.Extensions.GetSelect<{ id?: boolean - count?: boolean + quantity?: boolean + unit_type?: boolean unit_price?: boolean total_amount?: boolean created_at?: boolean invoice_id?: boolean good_id?: boolean service_id?: boolean + payload?: boolean invoice?: boolean | Prisma.SalesInvoiceDefaultArgs good?: boolean | Prisma.SalesInvoiceItem$goodArgs service?: boolean | Prisma.SalesInvoiceItem$serviceArgs @@ -868,16 +950,18 @@ export type SalesInvoiceItemSelect = runtime.Types.Extensions.GetOmit<"id" | "count" | "unit_price" | "total_amount" | "created_at" | "invoice_id" | "good_id" | "service_id", ExtArgs["result"]["salesInvoiceItem"]> +export type SalesInvoiceItemOmit = runtime.Types.Extensions.GetOmit<"id" | "quantity" | "unit_type" | "unit_price" | "total_amount" | "created_at" | "invoice_id" | "good_id" | "service_id" | "payload", ExtArgs["result"]["salesInvoiceItem"]> export type SalesInvoiceItemInclude = { invoice?: boolean | Prisma.SalesInvoiceDefaultArgs good?: boolean | Prisma.SalesInvoiceItem$goodArgs @@ -893,13 +977,15 @@ export type $SalesInvoiceItemPayload composites: {} } @@ -1273,13 +1359,15 @@ export interface Prisma__SalesInvoiceItemClient - readonly count: Prisma.FieldRef<"SalesInvoiceItem", 'Decimal'> + readonly quantity: Prisma.FieldRef<"SalesInvoiceItem", 'Decimal'> + readonly unit_type: Prisma.FieldRef<"SalesInvoiceItem", 'UnitType'> readonly unit_price: Prisma.FieldRef<"SalesInvoiceItem", 'Decimal'> readonly total_amount: Prisma.FieldRef<"SalesInvoiceItem", 'Decimal'> readonly created_at: Prisma.FieldRef<"SalesInvoiceItem", 'DateTime'> readonly invoice_id: Prisma.FieldRef<"SalesInvoiceItem", 'String'> readonly good_id: Prisma.FieldRef<"SalesInvoiceItem", 'String'> readonly service_id: Prisma.FieldRef<"SalesInvoiceItem", 'String'> + readonly payload: Prisma.FieldRef<"SalesInvoiceItem", 'Json'> } diff --git a/src/main.ts b/src/main.ts index 71b197e..86872f3 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,9 +1,10 @@ -import { ValidationPipe, VersioningType } from '@nestjs/common' +import { VersioningType } from '@nestjs/common' import { NestFactory, Reflector } from '@nestjs/core' import { JwtService } from '@nestjs/jwt' import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger' import { AppModule } from './app.module' import { PrismaExceptionFilter } from './common/filters/prisma-exception.filter' +import { ValidationExceptionFilter } from './common/filters/validation-exception.filter' import { LoggingInterceptor } from './common/interceptors/logging.interceptor' import { ResponseMappingInterceptor } from './common/interceptors/response-mapping.interceptor' import { JwtAuthGuard } from './modules/auth/jwt-auth.guard' @@ -58,10 +59,10 @@ async function bootstrap() { app.useGlobalInterceptors(new LoggingInterceptor(), new ResponseMappingInterceptor()) // Enable request validation and transformation globally - app.useGlobalPipes(new ValidationPipe({ whitelist: true, transform: true })) + // app.useGlobalPipes(new ValidationPipe({ whitelist: true, transform: true })) - // Register global exception filter to map Prisma and validation errors to proper HTTP codes - app.useGlobalFilters(new PrismaExceptionFilter()) + // Register global exception filters: validation errors and Prisma errors + app.useGlobalFilters(new ValidationExceptionFilter(), new PrismaExceptionFilter()) app.useGlobalGuards(new JwtAuthGuard(app.get(JwtService), app.get(Reflector))) diff --git a/src/modules/enums/enums.controller.ts b/src/modules/enums/enums.controller.ts new file mode 100644 index 0000000..83b035a --- /dev/null +++ b/src/modules/enums/enums.controller.ts @@ -0,0 +1,12 @@ +import { Controller, Get } from '@nestjs/common' +import { EnumsService } from './enums.service' + +@Controller('enums') +export class EnumsController { + constructor(private readonly enumsService: EnumsService) {} + + @Get('gold_karat') + async getGoldKarat() { + return this.enumsService.getEnumValues('GoldKarat') + } +} diff --git a/src/modules/enums/enums.module.ts b/src/modules/enums/enums.module.ts new file mode 100644 index 0000000..a77007c --- /dev/null +++ b/src/modules/enums/enums.module.ts @@ -0,0 +1,10 @@ +import { Module } from '@nestjs/common' +import { EnumsController } from './enums.controller' +import { EnumsService } from './enums.service' + +@Module({ + controllers: [EnumsController], + providers: [EnumsService], + exports: [EnumsService], +}) +export class EnumsModule {} diff --git a/src/modules/enums/enums.service.ts b/src/modules/enums/enums.service.ts new file mode 100644 index 0000000..30945cc --- /dev/null +++ b/src/modules/enums/enums.service.ts @@ -0,0 +1,17 @@ +import { Injectable } from '@nestjs/common' +import { GoldKarat } from '../../common/enums/enums' +import { ResponseMapper } from '../../common/response/response-mapper' + +@Injectable() +export class EnumsService { + getAllEnums() { + return { + GoldKarat: Object.values(GoldKarat).filter(value => typeof value === 'string'), + } + } + + getEnumValues(enumName: string) { + const enums = this.getAllEnums() + return ResponseMapper.list(enums[enumName] || []) + } +} diff --git a/src/modules/good-categories/good-categories.controller.ts b/src/modules/good-categories/good-categories.controller.ts index fd42350..5abbaab 100644 --- a/src/modules/good-categories/good-categories.controller.ts +++ b/src/modules/good-categories/good-categories.controller.ts @@ -3,7 +3,7 @@ import { reqTokenPayload } from '../auth/current-user.decorator' import { CreateGoodCategoryDto } from './dto/create-good-category.dto' import { GoodCategoriesService } from './good-categories.service' -@Controller('good-categories') +@Controller('good_categories') export class GoodCategoriesController { constructor(private readonly goodCategoriesService: GoodCategoriesService) {} diff --git a/src/modules/good-categories/good-categories.service.ts b/src/modules/good-categories/good-categories.service.ts index ae24e0e..191e92c 100644 --- a/src/modules/good-categories/good-categories.service.ts +++ b/src/modules/good-categories/good-categories.service.ts @@ -37,6 +37,7 @@ export class GoodCategoriesService { account_id: '', }, }) + return ResponseMapper.create(category) } } diff --git a/src/modules/goods/goods.service.ts b/src/modules/goods/goods.service.ts index cb39898..7a246e9 100644 --- a/src/modules/goods/goods.service.ts +++ b/src/modules/goods/goods.service.ts @@ -52,6 +52,7 @@ export class GoodsService { }, }, } + console.log(dataToCreate) const good = await this.prisma.good.create({ data: dataToCreate, @@ -61,6 +62,8 @@ export class GoodsService { deleted_at: true, }, }) + console.log(good) + return ResponseMapper.create(good) } } diff --git a/src/modules/sales-invoice-items/dto/create-sales-invoice-item.dto.ts b/src/modules/sales-invoice-items/dto/create-sales-invoice-item.dto.ts index 6af9e20..93cf146 100644 --- a/src/modules/sales-invoice-items/dto/create-sales-invoice-item.dto.ts +++ b/src/modules/sales-invoice-items/dto/create-sales-invoice-item.dto.ts @@ -1,11 +1,9 @@ import { ApiProperty, PartialType } from '@nestjs/swagger' -import { IsNumber, IsOptional, IsString } from 'class-validator' +import { IsEnum, IsNumber, IsObject, IsOptional, IsString } from 'class-validator' +import type { SaleInvoicePayload } from '../../../common/interfaces/sale-invoice-payload' +import { UnitType } from '../../../generated/prisma/enums' export class CreateSalesInvoiceItemDto { - @IsNumber() - @ApiProperty() - count: number - @IsNumber() @ApiProperty() unit_price: number @@ -27,6 +25,19 @@ export class CreateSalesInvoiceItemDto { @IsString() @ApiProperty({ required: false }) service_id?: string + + @IsNumber() + @ApiProperty({ required: true, default: 1 }) + quantity: number + + @IsEnum(UnitType) + @ApiProperty({ enum: Object.values(UnitType) }) + unit_type: UnitType + + @IsOptional() + @IsObject() + @ApiProperty({ required: false, default: {} }) + payload?: SaleInvoicePayload } export class UpdateSalesInvoiceItemDto extends PartialType(CreateSalesInvoiceItemDto) {} diff --git a/src/modules/sales-invoice-items/sales-invoice-items.controller.ts b/src/modules/sales-invoice-items/sales-invoice-items.controller.ts index ea27090..9efb0f8 100644 --- a/src/modules/sales-invoice-items/sales-invoice-items.controller.ts +++ b/src/modules/sales-invoice-items/sales-invoice-items.controller.ts @@ -1,7 +1,7 @@ import { Body, Controller, Get, Param, Post } from '@nestjs/common' import { SalesInvoiceItemsService } from './sales-invoice-items.service' -@Controller('sales-invoice-items') +@Controller('sales_invoice_items') export class SalesInvoiceItemsController { constructor(private readonly salesInvoiceItemsService: SalesInvoiceItemsService) {} diff --git a/src/modules/sales-invoices/dto/create-sales-invoice.dto.ts b/src/modules/sales-invoices/dto/create-sales-invoice.dto.ts index 45f98cb..5d76495 100644 --- a/src/modules/sales-invoices/dto/create-sales-invoice.dto.ts +++ b/src/modules/sales-invoices/dto/create-sales-invoice.dto.ts @@ -1,5 +1,6 @@ import { ApiProperty, PartialType } from '@nestjs/swagger' -import { IsNumber, IsOptional, IsString } from 'class-validator' +import { ArrayMinSize, IsNumber, IsOptional, IsString } from 'class-validator' +import { CreateSalesInvoiceItemDto } from '../../sales-invoice-items/dto/create-sales-invoice-item.dto' export class CreateSalesInvoiceDto { @IsString() @@ -7,18 +8,17 @@ export class CreateSalesInvoiceDto { code: string @IsNumber() - @ApiProperty() + @ApiProperty({ required: true, default: 0 }) total_amount: number - @IsOptional() - @IsString() - @ApiProperty({ required: false }) - description?: string - @IsOptional() @IsString() @ApiProperty({ required: false }) customer_id?: string + + @ApiProperty() + @ArrayMinSize(1) + items: CreateSalesInvoiceItemDto[] } export class UpdateSalesInvoiceDto extends PartialType(CreateSalesInvoiceDto) {} diff --git a/src/modules/sales-invoices/sales-invoices.controller.ts b/src/modules/sales-invoices/sales-invoices.controller.ts index d49190c..cb9c8fe 100644 --- a/src/modules/sales-invoices/sales-invoices.controller.ts +++ b/src/modules/sales-invoices/sales-invoices.controller.ts @@ -1,7 +1,7 @@ import { Body, Controller, Get, Param, Post } from '@nestjs/common' import { SalesInvoicesService } from './sales-invoices.service' -@Controller('sales-invoices') +@Controller('sales_invoices') export class SalesInvoicesController { constructor(private readonly salesInvoicesService: SalesInvoicesService) {} diff --git a/src/modules/service-categories/service-categories.controller.ts b/src/modules/service-categories/service-categories.controller.ts index c532392..f1ccb76 100644 --- a/src/modules/service-categories/service-categories.controller.ts +++ b/src/modules/service-categories/service-categories.controller.ts @@ -1,7 +1,7 @@ import { Body, Controller, Get, Param, Post } from '@nestjs/common' import { ServiceCategoriesService } from './service-categories.service' -@Controller('service-categories') +@Controller('service_categories') export class ServiceCategoriesController { constructor(private readonly serviceCategoriesService: ServiceCategoriesService) {}