diff --git a/assets/email-template/redesign/invoice-midtrans.html b/assets/email-template/redesign/invoice-midtrans.html index 98c250d..2354e12 100644 --- a/assets/email-template/redesign/invoice-midtrans.html +++ b/assets/email-template/redesign/invoice-midtrans.html @@ -1602,7 +1602,7 @@ mso-line-height-rule: exactly; mso-text-raise: 2px; " - >Pay HereClick Here to Pay diff --git a/src/database/migrations/1725962197762-add-payment-date-bank-column-at-transaction.ts b/src/database/migrations/1725962197762-add-payment-date-bank-column-at-transaction.ts new file mode 100644 index 0000000..f8f7789 --- /dev/null +++ b/src/database/migrations/1725962197762-add-payment-date-bank-column-at-transaction.ts @@ -0,0 +1,19 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class AddPaymentDateBankColumnAtTransaction1725962197762 + implements MigrationInterface +{ + name = 'AddPaymentDateBankColumnAtTransaction1725962197762'; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "transactions" ADD "payment_date_bank" date`, + ); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "transactions" DROP COLUMN "payment_date_bank"`, + ); + } +} diff --git a/src/database/migrations/1726033041774-add-pos-name-column.ts b/src/database/migrations/1726033041774-add-pos-name-column.ts new file mode 100644 index 0000000..a557191 --- /dev/null +++ b/src/database/migrations/1726033041774-add-pos-name-column.ts @@ -0,0 +1,21 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class AddPosNameColumn1726033041774 implements MigrationInterface { + name = 'AddPosNameColumn1726033041774'; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TABLE "transactions" ADD "creator_counter_name" character varying`, + ); + await queryRunner.query( + `ALTER TABLE "logs_pos" ADD "pos_name" character varying`, + ); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query(`ALTER TABLE "logs_pos" DROP COLUMN "pos_name"`); + await queryRunner.query( + `ALTER TABLE "transactions" DROP COLUMN "creator_counter_name"`, + ); + } +} diff --git a/src/database/migrations/1726041175749-add-flag-role-queue.ts b/src/database/migrations/1726041175749-add-flag-role-queue.ts new file mode 100644 index 0000000..7a22ad0 --- /dev/null +++ b/src/database/migrations/1726041175749-add-flag-role-queue.ts @@ -0,0 +1,43 @@ +import { MigrationInterface, QueryRunner } from 'typeorm'; + +export class AddFlagRoleQueue1726041175749 implements MigrationInterface { + name = 'AddFlagRoleQueue1726041175749'; + + public async up(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `ALTER TYPE "public"."users_role_enum" RENAME TO "users_role_enum_old"`, + ); + await queryRunner.query( + `CREATE TYPE "public"."users_role_enum" AS ENUM('superadmin', 'staff', 'tenant', 'queue_admin')`, + ); + await queryRunner.query( + `ALTER TABLE "users" ALTER COLUMN "role" DROP DEFAULT`, + ); + await queryRunner.query( + `ALTER TABLE "users" ALTER COLUMN "role" TYPE "public"."users_role_enum" USING "role"::"text"::"public"."users_role_enum"`, + ); + await queryRunner.query( + `ALTER TABLE "users" ALTER COLUMN "role" SET DEFAULT 'staff'`, + ); + await queryRunner.query(`DROP TYPE "public"."users_role_enum_old"`); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.query( + `CREATE TYPE "public"."users_role_enum_old" AS ENUM('superadmin', 'staff', 'tenant')`, + ); + await queryRunner.query( + `ALTER TABLE "users" ALTER COLUMN "role" DROP DEFAULT`, + ); + await queryRunner.query( + `ALTER TABLE "users" ALTER COLUMN "role" TYPE "public"."users_role_enum_old" USING "role"::"text"::"public"."users_role_enum_old"`, + ); + await queryRunner.query( + `ALTER TABLE "users" ALTER COLUMN "role" SET DEFAULT 'staff'`, + ); + await queryRunner.query(`DROP TYPE "public"."users_role_enum"`); + await queryRunner.query( + `ALTER TYPE "public"."users_role_enum_old" RENAME TO "users_role_enum"`, + ); + } +} diff --git a/src/modules/configuration/log/data/models/pos-log.model.ts b/src/modules/configuration/log/data/models/pos-log.model.ts index fd8631f..2d09858 100644 --- a/src/modules/configuration/log/data/models/pos-log.model.ts +++ b/src/modules/configuration/log/data/models/pos-log.model.ts @@ -14,6 +14,9 @@ export class PosLogModel @Column('bigint', { name: 'pos_number', nullable: true }) pos_number: number; + @Column('varchar', { name: 'pos_name', nullable: true }) + pos_name: string; + @Column('decimal', { name: 'total_balance', nullable: true }) total_balance: number; diff --git a/src/modules/configuration/log/domain/entities/pos-log.entity.ts b/src/modules/configuration/log/domain/entities/pos-log.entity.ts index f29f780..360e071 100644 --- a/src/modules/configuration/log/domain/entities/pos-log.entity.ts +++ b/src/modules/configuration/log/domain/entities/pos-log.entity.ts @@ -3,6 +3,7 @@ import { BaseCoreEntity } from 'src/core/modules/domain/entities/base-core.entit export interface PosLogEntity extends BaseCoreEntity { type: PosLogType; pos_number: number; + pos_name: string; total_balance: number; created_at: number; creator_name: string; diff --git a/src/modules/configuration/log/domain/handlers/pos-log.handler.ts b/src/modules/configuration/log/domain/handlers/pos-log.handler.ts index 192247f..db7c944 100644 --- a/src/modules/configuration/log/domain/handlers/pos-log.handler.ts +++ b/src/modules/configuration/log/domain/handlers/pos-log.handler.ts @@ -26,6 +26,7 @@ export class RecordPosLogHandler implements IEventHandler { type: PosLogType[data.type], total_balance: data.withdrawal_cash ?? data.opening_cash_balance, pos_number: data.pos_number, + pos_name: data.pos_name, creator_id: data.pos_admin?.id, creator_name: data.pos_admin?.name ?? data.pos_admin?.username, drawn_by_id: data.withdraw_user?.id, diff --git a/src/modules/item-related/item/infrastructure/dto/item.dto.ts b/src/modules/item-related/item/infrastructure/dto/item.dto.ts index dfdd8dd..8ca6b9b 100644 --- a/src/modules/item-related/item/infrastructure/dto/item.dto.ts +++ b/src/modules/item-related/item/infrastructure/dto/item.dto.ts @@ -134,7 +134,15 @@ export class ItemDto extends BaseStatusDto implements ItemEntity { }, ], }) - @IsArray() + @IsArray({ + message: (body) => { + const value = body.value; + if (!value || value?.length === 0) { + return 'Product bundling tidak boleh kosong.'; + } + return 'Product bundling tidak sesuai.'; + }, + }) @ValidateIf((body) => body.item_type.toLowerCase() == ItemType.BUNDLING) bundling_items: ItemEntity[]; } diff --git a/src/modules/reports/shared/configs/tenant-report/configs/income-per-item-master.ts b/src/modules/reports/shared/configs/tenant-report/configs/income-per-item-master.ts new file mode 100644 index 0000000..c37b543 --- /dev/null +++ b/src/modules/reports/shared/configs/tenant-report/configs/income-per-item-master.ts @@ -0,0 +1,23 @@ +import { REPORT_GROUP } from '../../../constant'; +import { ReportConfigEntity } from '../../../entities/report-config.entity'; +import IncomeReportPerItemMaster from '../../transaction-report/configs/income-per-item-master'; + +export default { + ...IncomeReportPerItemMaster, + group_name: REPORT_GROUP.tenant_report, + unique_name: `${REPORT_GROUP.tenant_report}__income_per_item_master`, + label: 'Pendapatan', + whereCondition(filterModel) { + const queryFilter = []; + const breakdown = filterModel.tr_item__breakdown_bundling; + if (breakdown) { + console.log({ breakdown }); + const value = breakdown.filter.map((item) => { + return item === 'Yes' ? true : false; + }); + + queryFilter.push(`tr_item.breakdown_bundling in (${value.join()})`); + } + return queryFilter; + }, +}; diff --git a/src/modules/reports/shared/configs/tenant-report/configs/sample.report.ts b/src/modules/reports/shared/configs/tenant-report/configs/sample.report.ts deleted file mode 100644 index 6718cff..0000000 --- a/src/modules/reports/shared/configs/tenant-report/configs/sample.report.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { DATA_FORMAT, DATA_TYPE, REPORT_GROUP } from '../../../constant'; -import { ReportConfigEntity } from '../../../entities/report-config.entity'; - -export default { - group_name: REPORT_GROUP.tenant_report, - unique_name: `${REPORT_GROUP.tenant_report}__sample`, - label: 'Sample Tenant Report', - table_schema: 'season_types main', - main_table_alias: 'main', - defaultOrderBy: [], - lowLevelOrderBy: [], - filter_period_config: { - hidden: true, - }, - column_configs: [ - { - column: 'main__created_at', - query: 'main.created_at', - label: 'Created Date', - type: DATA_TYPE.DIMENSION, - format: DATA_FORMAT.DATE_EPOCH, - }, - { - column: 'main__updated_at', - query: 'main.updated_at', - label: 'Updated Date', - type: DATA_TYPE.DIMENSION, - format: DATA_FORMAT.DATE_EPOCH, - }, - { - column: 'main__name', - query: 'main.name', - label: 'Name', - type: DATA_TYPE.DIMENSION, - format: DATA_FORMAT.TEXT, - }, - ], - filter_configs: [], -}; diff --git a/src/modules/reports/shared/configs/tenant-report/index.ts b/src/modules/reports/shared/configs/tenant-report/index.ts index ceee528..66e925a 100644 --- a/src/modules/reports/shared/configs/tenant-report/index.ts +++ b/src/modules/reports/shared/configs/tenant-report/index.ts @@ -1,6 +1,6 @@ import { ReportConfigEntity } from '../../entities/report-config.entity'; -import SampleReport from './configs/sample.report'; +import IncomeReportPerItemMaster from './configs/income-per-item-master'; export const TenantReportConfig: ReportConfigEntity[] = [ - // SampleReport + IncomeReportPerItemMaster, ]; diff --git a/src/modules/reports/shared/configs/transaction-report/configs/cash-withdrawals.ts b/src/modules/reports/shared/configs/transaction-report/configs/cash-withdrawals.ts index f29b020..141dc72 100644 --- a/src/modules/reports/shared/configs/transaction-report/configs/cash-withdrawals.ts +++ b/src/modules/reports/shared/configs/transaction-report/configs/cash-withdrawals.ts @@ -94,8 +94,8 @@ export default { { filed_label: 'No. PoS', filter_column: 'main__pos_number', - field_type: FILTER_FIELD_TYPE.input_tag, - filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS, + field_type: FILTER_FIELD_TYPE.input_number, + filter_type: FILTER_TYPE.NUMBER_EQUAL, }, ], }; diff --git a/src/modules/reports/shared/configs/transaction-report/configs/cashier-log.ts b/src/modules/reports/shared/configs/transaction-report/configs/cashier-log.ts index c0db8da..923dcf0 100644 --- a/src/modules/reports/shared/configs/transaction-report/configs/cashier-log.ts +++ b/src/modules/reports/shared/configs/transaction-report/configs/cashier-log.ts @@ -85,5 +85,11 @@ export default { field_type: FILTER_FIELD_TYPE.input_tag, filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS, }, + { + filed_label: 'No. PoS', + filter_column: 'main__pos_number', + field_type: FILTER_FIELD_TYPE.input_number, + filter_type: FILTER_TYPE.NUMBER_EQUAL, + }, ], }; diff --git a/src/modules/reports/shared/configs/transaction-report/configs/giving-discounts.ts b/src/modules/reports/shared/configs/transaction-report/configs/giving-discounts.ts index 99e1a3e..026fc6d 100644 --- a/src/modules/reports/shared/configs/transaction-report/configs/giving-discounts.ts +++ b/src/modules/reports/shared/configs/transaction-report/configs/giving-discounts.ts @@ -54,10 +54,24 @@ export default { type: DATA_TYPE.DIMENSION, format: DATA_FORMAT.TEXT, }, + // { + // column: 'main__invoice_code', + // query: 'main.invoice_code', + // label: 'Kode Transaksi', + // type: DATA_TYPE.DIMENSION, + // format: DATA_FORMAT.TEXT, + // }, { column: 'main__invoice_code', - query: 'main.invoice_code', - label: 'Kode Transaksi', + query: `CASE WHEN main.type != 'counter' THEN main.invoice_code ELSE null END`, + label: 'Kode Booking', + type: DATA_TYPE.DIMENSION, + format: DATA_FORMAT.TEXT, + }, + { + column: 'main__payment_code', + query: `CASE WHEN main.type = 'counter' THEN main.invoice_code ELSE main.payment_code END`, + label: 'Kode Pembayaran', type: DATA_TYPE.DIMENSION, format: DATA_FORMAT.TEXT, }, @@ -173,8 +187,8 @@ export default { { filed_label: 'No. Pos', filter_column: 'main__creator_counter_no', - field_type: FILTER_FIELD_TYPE.input_tag, - filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS, + field_type: FILTER_FIELD_TYPE.input_number, + filter_type: FILTER_TYPE.NUMBER_EQUAL, }, { filed_label: 'Nama Pelanggan', diff --git a/src/modules/reports/shared/configs/transaction-report/configs/income-per-item-master.ts b/src/modules/reports/shared/configs/transaction-report/configs/income-per-item-master.ts index 69de3a5..c0a8d36 100644 --- a/src/modules/reports/shared/configs/transaction-report/configs/income-per-item-master.ts +++ b/src/modules/reports/shared/configs/transaction-report/configs/income-per-item-master.ts @@ -38,7 +38,7 @@ export default { { column: 'main__settlement_date', query: 'main.settlement_date', - label: 'Tanggal Pendapatan', + label: 'Tgl. Pendapatan', type: DATA_TYPE.DIMENSION, format: DATA_FORMAT.DATE_TIMESTAMP, date_format: 'DD/MM/YYYY', @@ -59,14 +59,14 @@ export default { }, { column: 'main__invoice_code', - query: 'main.invoice_code', + query: `CASE WHEN main.type != 'counter' THEN main.invoice_code ELSE null END`, label: 'Kode Booking', type: DATA_TYPE.DIMENSION, format: DATA_FORMAT.TEXT, }, { column: 'main__payment_code', - query: 'main.payment_code', + query: `CASE WHEN main.type = 'counter' THEN main.invoice_code ELSE main.payment_code END`, label: 'Kode Pembayaran', type: DATA_TYPE.DIMENSION, format: DATA_FORMAT.TEXT, @@ -117,7 +117,7 @@ export default { column: 'tr_item__qty', query: 'tr_item.qty', label: 'Qty', - type: DATA_TYPE.DIMENSION, + type: DATA_TYPE.MEASURE, format: DATA_FORMAT.NUMBER, }, { @@ -127,8 +127,20 @@ export default { type: DATA_TYPE.MEASURE, format: DATA_FORMAT.CURRENCY, }, - // TODO => tambahkan total dpp per item - // TODO => tambahkan total tax + { + column: 'tr_item__payment_total_dpp', + query: 'tr_item.payment_total_dpp', + label: 'DPP', + type: DATA_TYPE.MEASURE, + format: DATA_FORMAT.CURRENCY, + }, + { + column: 'tr_item__payment_total_tax', + query: 'tr_item.payment_total_tax', + label: 'Total Pajak', + type: DATA_TYPE.MEASURE, + format: DATA_FORMAT.CURRENCY, + }, { column: 'tr_item__total_price', query: 'tr_item.total_price', @@ -139,7 +151,7 @@ export default { { column: 'refund__refund_date', query: 'refund.refund_date', - label: 'Tanggal Pengembalian', + label: 'Tgl. Pengembalian', type: DATA_TYPE.DIMENSION, format: DATA_FORMAT.DATE_TIMESTAMP, date_format: 'DD/MM/YYYY', @@ -162,7 +174,7 @@ export default { column: 'refund_item__qty_refund', query: 'refund_item.qty_refund', label: 'Qty Pengembalian', - type: DATA_TYPE.DIMENSION, + type: DATA_TYPE.MEASURE, format: DATA_FORMAT.NUMBER, }, { @@ -191,7 +203,7 @@ export default { column: 'tenant_income', query: 'tr_item.total_price - tr_item.item_tenant_share_margin', label: 'Pendapatan Tenant', - type: DATA_TYPE.DIMENSION, + type: DATA_TYPE.MEASURE, format: DATA_FORMAT.CURRENCY, }, @@ -239,7 +251,7 @@ export default { ignore_filter_keys: ['tr_item__breakdown_bundling'], filter_configs: [ { - filed_label: 'Tanggal Pendapatan', + filed_label: 'Tgl. Pendapatan', filter_column: 'main__settlement_date', field_type: FILTER_FIELD_TYPE.date_range_picker, filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP, @@ -303,11 +315,11 @@ export default { { filed_label: 'No. PoS', filter_column: 'main__creator_counter_no', - field_type: FILTER_FIELD_TYPE.input_tag, - filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS, + field_type: FILTER_FIELD_TYPE.input_number, + filter_type: FILTER_TYPE.NUMBER_EQUAL, }, { - filed_label: 'Tanggal Pengembalian', + filed_label: 'Tgl. Pengembalian', filter_column: 'refund__refund_date', field_type: FILTER_FIELD_TYPE.date_range_picker, filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP, diff --git a/src/modules/reports/shared/configs/transaction-report/configs/income-per-item.ts b/src/modules/reports/shared/configs/transaction-report/configs/income-per-item.ts index ef2e131..0889a41 100644 --- a/src/modules/reports/shared/configs/transaction-report/configs/income-per-item.ts +++ b/src/modules/reports/shared/configs/transaction-report/configs/income-per-item.ts @@ -37,7 +37,7 @@ export default { { column: 'main__settlement_date', query: 'main.settlement_date', - label: 'Tanggal Pendapatan', + label: 'Tgl. Pendapatan', type: DATA_TYPE.DIMENSION, format: DATA_FORMAT.DATE_TIMESTAMP, date_format: 'DD/MM/YYYY', @@ -58,14 +58,14 @@ export default { }, { column: 'main__invoice_code', - query: 'main.invoice_code', + query: `CASE WHEN main.type != 'counter' THEN main.invoice_code ELSE null END`, label: 'Kode Booking', type: DATA_TYPE.DIMENSION, format: DATA_FORMAT.TEXT, }, { column: 'main__payment_code', - query: 'main.payment_code', + query: `CASE WHEN main.type = 'counter' THEN main.invoice_code ELSE main.payment_code END`, label: 'Kode Pembayaran', type: DATA_TYPE.DIMENSION, format: DATA_FORMAT.TEXT, @@ -102,7 +102,7 @@ export default { column: 'tr_item__qty', query: 'tr_item.qty', label: 'Qty', - type: DATA_TYPE.DIMENSION, + type: DATA_TYPE.MEASURE, format: DATA_FORMAT.NUMBER, }, { @@ -112,8 +112,20 @@ export default { type: DATA_TYPE.MEASURE, format: DATA_FORMAT.CURRENCY, }, - // TODO => tambahkan total dpp per item - // TODO => tambahkan total tax + { + column: 'tr_item__payment_total_dpp', + query: 'tr_item.payment_total_dpp', + label: 'DPP', + type: DATA_TYPE.MEASURE, + format: DATA_FORMAT.CURRENCY, + }, + { + column: 'tr_item__payment_total_tax', + query: 'tr_item.payment_total_tax', + label: 'Total Pajak', + type: DATA_TYPE.MEASURE, + format: DATA_FORMAT.CURRENCY, + }, { column: 'tr_item__total_price', query: 'tr_item.total_price', @@ -124,7 +136,7 @@ export default { { column: 'refund__refund_date', query: 'refund.refund_date', - label: 'Tanggal Pengembalian', + label: 'Tgl. Pengembalian', type: DATA_TYPE.DIMENSION, format: DATA_FORMAT.DATE_TIMESTAMP, date_format: 'DD/MM/YYYY', @@ -147,7 +159,7 @@ export default { column: 'refund_item__qty_refund', query: 'refund_item.qty_refund', label: 'Qty Pengembalian', - type: DATA_TYPE.DIMENSION, + type: DATA_TYPE.MEASURE, format: DATA_FORMAT.NUMBER, }, { @@ -176,7 +188,7 @@ export default { column: 'tenant_income', query: 'tr_item.total_price - tr_item.item_tenant_share_margin', label: 'Pendapatan Tenant', - type: DATA_TYPE.DIMENSION, + type: DATA_TYPE.MEASURE, format: DATA_FORMAT.CURRENCY, }, @@ -211,7 +223,7 @@ export default { ], filter_configs: [ { - filed_label: 'Tanggal Pendapatan', + filed_label: 'Tgl. Pendapatan', filter_column: 'main__settlement_date', field_type: FILTER_FIELD_TYPE.date_range_picker, filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP, @@ -262,11 +274,11 @@ export default { { filed_label: 'No. PoS', filter_column: 'main__creator_counter_no', - field_type: FILTER_FIELD_TYPE.input_tag, - filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS, + field_type: FILTER_FIELD_TYPE.input_number, + filter_type: FILTER_TYPE.NUMBER_EQUAL, }, { - filed_label: 'Tanggal Pengembalian', + filed_label: 'Tgl. Pengembalian', filter_column: 'refund__refund_date', field_type: FILTER_FIELD_TYPE.date_range_picker, filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP, diff --git a/src/modules/reports/shared/configs/transaction-report/configs/income.ts b/src/modules/reports/shared/configs/transaction-report/configs/income.ts index 45f4d5d..5fc0a77 100644 --- a/src/modules/reports/shared/configs/transaction-report/configs/income.ts +++ b/src/modules/reports/shared/configs/transaction-report/configs/income.ts @@ -40,7 +40,7 @@ export default { { column: 'main__settlement_date', query: 'main.settlement_date', - label: 'Tanggal Pendapatan', + label: 'Tgl. Pendapatan', type: DATA_TYPE.DIMENSION, format: DATA_FORMAT.DATE_TIMESTAMP, date_format: 'DD/MM/YYYY', @@ -61,14 +61,14 @@ export default { }, { column: 'main__invoice_code', - query: 'main.invoice_code', + query: `CASE WHEN main.type != 'counter' THEN main.invoice_code ELSE null END`, label: 'Kode Booking', type: DATA_TYPE.DIMENSION, format: DATA_FORMAT.TEXT, }, { column: 'main__payment_code', - query: 'main.payment_code', + query: `CASE WHEN main.type = 'counter' THEN main.invoice_code ELSE main.payment_code END`, label: 'Kode Pembayaran', type: DATA_TYPE.DIMENSION, format: DATA_FORMAT.TEXT, @@ -101,13 +101,6 @@ export default { type: DATA_TYPE.MEASURE, format: DATA_FORMAT.CURRENCY, }, - { - column: 'main__reconciliation_mdr', - query: 'main.reconciliation_mdr', - label: 'MDR', - type: DATA_TYPE.MEASURE, - format: DATA_FORMAT.CURRENCY, - }, { column: 'main__payment_total_dpp', query: 'main.payment_total_dpp', @@ -133,21 +126,21 @@ export default { column: 'main__discount_value', query: 'main.discount_value', label: 'Diskon (IDR)', - type: DATA_TYPE.DIMENSION, + type: DATA_TYPE.MEASURE, format: DATA_FORMAT.CURRENCY, }, { column: 'main__payment_total', query: 'main.payment_total', label: 'Total Penjualan', - type: DATA_TYPE.DIMENSION, + type: DATA_TYPE.MEASURE, format: DATA_FORMAT.CURRENCY, }, { column: 'refund__refund_date', query: 'refund.refund_date', - label: 'Tanggal Pengembalian', - type: DATA_TYPE.DIMENSION, + label: 'Tgl. Pengembalian', + type: DATA_TYPE.MEASURE, format: DATA_FORMAT.DATE_TIMESTAMP, date_format: 'DD/MM/YYYY', }, @@ -169,14 +162,14 @@ export default { column: 'refund__refund_total', query: '(refund.refund_total * -1)', label: 'Total Pengembalian', - type: DATA_TYPE.DIMENSION, + type: DATA_TYPE.MEASURE, format: DATA_FORMAT.CURRENCY, }, { column: 'transaction_balance', query: `CASE WHEN refund.id is null THEN main.payment_total ELSE main.payment_total - refund.refund_total END`, label: 'Balance', - type: DATA_TYPE.DIMENSION, + type: DATA_TYPE.MEASURE, format: DATA_FORMAT.CURRENCY, }, { @@ -252,7 +245,7 @@ export default { ], filter_configs: [ { - filed_label: 'Tanggal Pendapatan', + filed_label: 'Tgl. Pendapatan', filter_column: 'main__settlement_date', field_type: FILTER_FIELD_TYPE.date_range_picker, filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP, @@ -291,11 +284,11 @@ export default { { filed_label: 'No. PoS', filter_column: 'main__creator_counter_no', - field_type: FILTER_FIELD_TYPE.input_tag, - filter_type: FILTER_TYPE.TEXT_MULTIPLE_CONTAINS, + field_type: FILTER_FIELD_TYPE.input_number, + filter_type: FILTER_TYPE.NUMBER_EQUAL, }, { - filed_label: 'Tanggal Pengembalian', + filed_label: 'Tgl. Pengembalian', filter_column: 'refund__refund_date', field_type: FILTER_FIELD_TYPE.date_range_picker, filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP, diff --git a/src/modules/reports/shared/configs/transaction-report/configs/reconciliation.ts b/src/modules/reports/shared/configs/transaction-report/configs/reconciliation.ts index ed553c0..8396bfb 100644 --- a/src/modules/reports/shared/configs/transaction-report/configs/reconciliation.ts +++ b/src/modules/reports/shared/configs/transaction-report/configs/reconciliation.ts @@ -37,9 +37,17 @@ export default { format: DATA_FORMAT.TEXT, }, { - column: 'main__settlement_date', - query: 'main.settlement_date', - label: 'Tgl. Pendapatan', + column: 'main__payment_date', + query: 'main.payment_date', + label: 'Tgl. Transaksi', + type: DATA_TYPE.DIMENSION, + format: DATA_FORMAT.DATE_TIMESTAMP, + date_format: 'DD/MM/YYYY', + }, + { + column: 'main__payment_date_bank', + query: 'main.payment_date_bank', + label: 'Tgl. Transaksi Bank', type: DATA_TYPE.DIMENSION, format: DATA_FORMAT.DATE_TIMESTAMP, date_format: 'DD/MM/YYYY', @@ -94,6 +102,13 @@ export default { type: DATA_TYPE.MEASURE, format: DATA_FORMAT.CURRENCY, }, + { + column: 'main__payment_total_net_profit', + query: 'main.payment_total_net_profit', + label: 'Net Pendapatan', + type: DATA_TYPE.MEASURE, + format: DATA_FORMAT.CURRENCY, + }, { column: 'cashier', query: `CASE WHEN main.type = 'counter' THEN main.creator_name END`, @@ -129,8 +144,14 @@ export default { select_custom_options: [...Object.values(TransactionType)], }, { - filed_label: 'Tgl. Pendapatan', - filter_column: 'main__settlement_date', + filed_label: 'Tgl. Transaksi', + filter_column: 'main__payment_date', + field_type: FILTER_FIELD_TYPE.date_range_picker, + filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP, + }, + { + filed_label: 'Tgl. Transaksi Bank', + filter_column: 'main__payment_date_bank', field_type: FILTER_FIELD_TYPE.date_range_picker, filter_type: FILTER_TYPE.DATE_IN_RANGE_TIMESTAMP, }, diff --git a/src/modules/transaction/reconciliation/domain/usecases/managers/detail-reconciliation.manager.ts b/src/modules/transaction/reconciliation/domain/usecases/managers/detail-reconciliation.manager.ts index 0d8b25a..00a1270 100644 --- a/src/modules/transaction/reconciliation/domain/usecases/managers/detail-reconciliation.manager.ts +++ b/src/modules/transaction/reconciliation/domain/usecases/managers/detail-reconciliation.manager.ts @@ -43,6 +43,7 @@ export class DetailReconciliationManager extends BaseDetailManager { // jika delete if (data._deleted ?? false) { - await this.dataService.deleteById( - queryRunner, - TransactionModel, - data._id, - ); + // FIXME => This comment for ignore delete from POS data + // await this.dataService.deleteById( + // queryRunner, + // TransactionModel, + // data._id, + // ); } // jika update // create diff --git a/src/modules/transaction/transaction/domain/usecases/managers/detail-transaction.manager.ts b/src/modules/transaction/transaction/domain/usecases/managers/detail-transaction.manager.ts index d577c4d..b788110 100644 --- a/src/modules/transaction/transaction/domain/usecases/managers/detail-transaction.manager.ts +++ b/src/modules/transaction/transaction/domain/usecases/managers/detail-transaction.manager.ts @@ -42,6 +42,7 @@ export class DetailTransactionManager extends BaseDetailManager `${this.tableName}.status`, `${this.tableName}.invoice_code`, `${this.tableName}.creator_counter_no`, + `${this.tableName}.creator_counter_name`, `${this.tableName}.booking_date`, `${this.tableName}.no_of_group`, `${this.tableName}.type`, diff --git a/src/modules/user-related/user/constants.ts b/src/modules/user-related/user/constants.ts index 251f468..ea5b4a4 100644 --- a/src/modules/user-related/user/constants.ts +++ b/src/modules/user-related/user/constants.ts @@ -2,4 +2,5 @@ export enum UserRole { SUPERADMIN = 'superadmin', STAFF = 'staff', TENANT = 'tenant', + QUEUE_ADMIN = 'queue_admin', }